feat: add about, contact with map, legal pages and 404

- About page with identity cards and equipment lists (about.json)
- Contact page: station info, obfuscated e-mail, lazy Leaflet/OSM map
  with antenna tower marker and dark-mode tiles
- Privacy, license and disclaimer pages from a legal collection
- QRT-themed 404 page
- LICENSE (MIT) and LICENSE-CONTENT (CC BY-SA 4.0 legal code)
- Shared PageHeader and CodeCopy components

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 01:59:45 +03:00
parent c1c57c4f85
commit df9c40847d
20 changed files with 1106 additions and 51 deletions
+50
View File
@@ -200,6 +200,10 @@
.code-block {
position: relative;
}
/* Room for the copy button so it never covers the first line. */
.code-block > pre {
padding-top: 2.5rem;
}
.code-copy {
position: absolute;
top: 0.5rem;
@@ -217,3 +221,49 @@
background: var(--accent-fill);
color: var(--on-accent-fill);
}
/* ---------- Contact map (Leaflet) ---------- */
.tower-marker {
background: none;
border: 0;
}
/* Rotate an inner element: `rotate` on the marker itself would also rotate Leaflet's translate3d. */
.tower-pin {
display: flex;
width: 100%;
height: 100%;
align-items: center;
justify-content: center;
background: var(--accent-fill);
color: var(--on-accent-fill);
border: 2px solid var(--fg);
border-radius: 50% 50% 50% 0;
rotate: -45deg;
}
.tower-pin svg {
rotate: 45deg;
}
.leaflet-container .leaflet-control-attribution {
background: var(--surface);
color: var(--fg);
}
.leaflet-container .leaflet-control-attribution a {
color: var(--accent-strong);
}
.leaflet-container {
font: inherit;
background: var(--bg-alt);
}
.leaflet-popup-content {
font-family: var(--font-display);
font-weight: 700;
}
/* Dark tiles without a second tile provider. */
[data-theme='dark'] .leaflet-tile-pane {
filter: invert(1) hue-rotate(180deg) brightness(0.85) contrast(0.9);
}
.leaflet-container .leaflet-popup-content-wrapper,
.leaflet-container .leaflet-popup-tip {
background: var(--surface);
color: var(--fg);
}