/* ── SELF-HOSTED FONTS ───────────────────────────────────────────────── */ @font-face { font-family: 'Manrope'; font-style: normal; font-weight: 200 800; font-display: swap; src: url('../fonts/manrope-variable.woff2') format('woff2'); } @font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 700; font-display: swap; src: url('../fonts/fraunces-700-normal.woff2') format('woff2'); } @font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 900; font-display: swap; src: url('../fonts/fraunces-900-normal.woff2') format('woff2'); } @font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 300; font-display: swap; src: url('../fonts/fraunces-300-italic.woff2') format('woff2'); } @font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 700; font-display: swap; src: url('../fonts/fraunces-700-italic.woff2') format('woff2'); } @font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/jetbrains-mono-400.woff2') format('woff2'); } @font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 600; font-display: swap; src: url('../fonts/jetbrains-mono-600.woff2') format('woff2'); } /* ════════════════════════════════════════════════════════════════════════ base.css — Fonts, reset, page shell, and top navigation. ════════════════════════════════════════════════════════════════════════ COLOUR PALETTE (the "warm parchment & brass" theme) ────────────────────────────────────────────────────────────────────── #f5edd6 parchment page background #fffcf2 soft cream cards, search box, table #fdf8ee warm cream toolbars, legend, about block #f0e4c4 pale honey table heading row #fef3dc warm hover buttons on hover #fef8ea row hover table row on hover #fff8e4 "now" row the currently-active hour #1e1208 espresso headings + emphasis #4a3420 warm dark body text in the table #6b4f2a muted bronze subtle emphasis #7a5c2a tagline brown italic intro line #9a7d5a soft brown column toggle text #b09870 warm grey muted labels #c0a880 pale dust night-row text, footer #c8922a BRASS brand accent (links, dial, focus) #a06e18 deep brass hover state for some links #c9b08a warm border panel borders #d4c0a0 soft border toolbar/legend borders #ede4cc line table row dividers FONTS ────────────────────────────────────────────────────────────────────── Fraunces serif display titles, day labels, hour cell Manrope body sans-serif paragraphs, small labels JetBrains Mono numeric monospace table data ════════════════════════════════════════════════════════════════════════ */ /* ── 1. FONTS + RESET ───────────────────────────────────────────────── */ /* Font loading is handled in index.html via a non-blocking to avoid render-blocking. The @import has been intentionally removed. */ *, *:before, *:after { box-sizing: border-box; margin: 0; padding: 0; } /* ── 2. PAGE BACKGROUND & SHELL ─────────────────────────────────────── */ body { background: #f5edd6; /* parchment */ } .utci-app { font-family: Manrope, sans-serif; color: #1e1208; background: #f5edd6; min-height: 100vh; /* The side padding, as a variable: the header and the event note both full-bleed by cancelling it, and would otherwise each need the number restating at every breakpoint that changes it. */ --app-pad: 36px; /* No top padding: .utci-topnav is a real header at the very top of the flow now, and supplies its own. Was 52px, reserved for the nav when it was absolutely positioned over this space. */ padding: 0 var(--app-pad) 32px; position: relative; /* overflow-x: clip (not hidden) — `clip` clips horizontal overflow WITHOUT making this a scroll container, so `position: sticky` on descendants (table ) can still stick relative to the viewport. `hidden` would create a containing block that breaks sticky. */ overflow-x: clip; } /* The centred container that holds everything. */ .utci-shell { position: relative; z-index: 1; margin: 0 auto; } /* ── 3. SITE HEADER (wordmark left, nav links right) ───────────────── */ /* Rendered as