:root { color-scheme: dark; --bg: #071019; --surface: #101c28; --surface-raised: #172737; --border: #375066; --text: #f2f7fb; --muted: #b6c8d6; --accent: #55d7b5; --accent-strong: #7ce9cc; --accent-ink: #04231c; --warning: #ffd479; --danger: #ff9f9f; --focus: #ffd479; --radius: 0.75rem; --space-1: 0.5rem; --space-2: 0.75rem; --space-3: 1rem; --space-4: 1.5rem; --space-5: 2rem; --space-6: 3rem; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 100%; line-height: 1.55; } * { box-sizing: border-box; } html { min-width: 20rem; background: var(--bg); } body { min-height: 100vh; margin: 0; color: var(--text); background: radial-gradient(circle at 10% -10%, rgb(36 103 104 / 35%), transparent 32rem), linear-gradient(180deg, #09141f 0%, var(--bg) 50%); } button, select { font: inherit; } button, select, a { -webkit-tap-highlight-color: transparent; } :focus-visible { outline: 0.2rem solid var(--focus); outline-offset: 0.2rem; } .skip-link { position: fixed; z-index: 10; top: var(--space-2); left: var(--space-2); padding: var(--space-2) var(--space-3); color: #071019; background: var(--focus); border-radius: 0.4rem; font-weight: 800; transform: translateY(-200%); } .skip-link:focus { transform: translateY(0); } .site-header, main, footer { width: min(80rem, calc(100% - 2rem)); margin-inline: auto; } .site-header { display: flex; align-items: end; justify-content: space-between; gap: var(--space-5); padding-block: var(--space-6) var(--space-5); } h1, h2, h3, p { margin-top: 0; } h1 { max-width: 18ch; margin-bottom: var(--space-2); font-size: clamp(2rem, 6vw, 4.25rem); line-height: 1.02; letter-spacing: -0.045em; } h2 { margin-bottom: var(--space-1); font-size: clamp(1.35rem, 3vw, 2rem); line-height: 1.2; } h3 { margin-bottom: var(--space-1); font-size: 1.1rem; } .eyebrow { margin-bottom: var(--space-1); color: var(--accent-strong); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; } .lede { max-width: 65ch; margin-bottom: 0; color: var(--muted); font-size: 1.05rem; } .connection-state { display: inline-flex; min-height: 2.75rem; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border: 1px solid var(--border); border-radius: 999px; background: rgb(16 28 40 / 88%); color: var(--muted); font-weight: 700; white-space: nowrap; } .status-dot { width: 0.7rem; height: 0.7rem; border: 2px solid currentColor; border-radius: 50%; background: currentColor; } body[data-stream-state="connected"] .connection-state { color: var(--accent-strong); } body[data-stream-state="reconnecting"] .connection-state, body[data-stream-state="polling"] .connection-state, body[data-stream-state="reset"] .connection-state { color: var(--warning); } body[data-stream-state="error"] .connection-state { color: var(--danger); } main { display: grid; gap: var(--space-4); } .filter-panel, .summary-panel, .results-panel { border: 1px solid var(--border); border-radius: var(--radius); background: rgb(16 28 40 / 94%); box-shadow: 0 1rem 3rem rgb(0 0 0 / 18%); } .filter-panel, .results-panel { padding: clamp(1rem, 4vw, 2rem); } .section-heading { display: flex; align-items: start; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); } .boundary-note, #results-summary { max-width: 34rem; margin-bottom: 0; color: var(--muted); } .filter-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-3); } label { display: grid; gap: 0.35rem; color: var(--muted); font-size: 0.9rem; font-weight: 750; } select { width: 100%; min-height: 2.75rem; padding: 0.6rem 2.4rem 0.6rem 0.75rem; border: 1px solid #587189; border-radius: 0.45rem; color: var(--text); background: #0b1722; } select:disabled { color: #9fb0bd; border-style: dashed; opacity: 1; } .button-row { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-4); } .button { min-height: 2.75rem; padding: 0.65rem 1rem; border: 1px solid #6a8298; border-radius: 0.45rem; color: var(--text); background: var(--surface-raised); cursor: pointer; font-weight: 800; } .button:hover { border-color: var(--accent-strong); background: #21384a; } .button:active { transform: translateY(1px); } .button.primary { color: var(--accent-ink); border-color: var(--accent); background: var(--accent); } .button.primary:hover { background: var(--accent-strong); } .form-error { margin: var(--space-3) 0 0; color: var(--danger); font-weight: 750; } .summary-panel { padding: 0; overflow: hidden; } .summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; } .summary-grid > div { min-width: 0; padding: var(--space-3) var(--space-4); border-right: 1px solid var(--border); } .summary-grid > div:last-child { border-right: 0; } .summary-grid dt { color: var(--muted); font-size: 0.78rem; font-weight: 700; } .summary-grid dd { margin: 0.25rem 0 0; overflow-wrap: anywhere; font-size: 1.05rem; font-weight: 800; } .results-heading { align-items: end; } .session-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr)); gap: var(--space-3); } .session-card { min-width: 0; padding: var(--space-3); border: 1px solid #496177; border-radius: 0.6rem; background: #0b1722; } .card-heading { display: flex; align-items: start; justify-content: space-between; gap: var(--space-2); } .card-heading h3 { overflow-wrap: anywhere; } .region-badge { flex: 0 0 auto; padding: 0.15rem 0.5rem; border: 1px solid #597187; border-radius: 999px; color: var(--muted); font-size: 0.75rem; font-weight: 750; } .session-detail { display: grid; grid-template-columns: minmax(5rem, auto) 1fr; gap: 0.25rem var(--space-2); margin: var(--space-3) 0 0; font-size: 0.9rem; } .session-detail dt { color: var(--muted); } .session-detail dd { min-width: 0; margin: 0; overflow-wrap: anywhere; } .capacity-row { margin-top: var(--space-3); } .capacity-copy { display: flex; justify-content: space-between; gap: var(--space-2); margin-bottom: 0.35rem; color: var(--muted); font-size: 0.85rem; } meter { width: 100%; height: 0.65rem; accent-color: var(--accent); } .metadata-list { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: var(--space-3) 0 0; padding: 0; list-style: none; } .metadata-list li { max-width: 100%; padding: 0.2rem 0.45rem; overflow-wrap: anywhere; border-radius: 0.3rem; color: #d6e4ed; background: #1b2b39; font-size: 0.78rem; } .updated-age { margin: var(--space-3) 0 0; color: var(--muted); font-size: 0.78rem; } .empty-state { padding: var(--space-6) var(--space-3); text-align: center; border: 1px dashed #587189; border-radius: 0.6rem; color: var(--muted); } .empty-state h3 { color: var(--text); } footer { padding-block: var(--space-5); color: var(--muted); font-size: 0.85rem; text-align: center; } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } [hidden] { display: none !important; } @media (max-width: 56rem) { .site-header, .section-heading { align-items: start; flex-direction: column; } .filter-grid, .summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .summary-grid > div:nth-child(2) { border-right: 0; } .summary-grid > div:nth-child(-n + 2) { border-bottom: 1px solid var(--border); } } @media (max-width: 36rem) { .site-header, main, footer { width: min(100% - 1rem, 80rem); } .site-header { padding-block: var(--space-5) var(--space-4); } .filter-grid, .summary-grid { grid-template-columns: 1fr; } .summary-grid > div { border-right: 0; border-bottom: 1px solid var(--border); } .summary-grid > div:last-child { border-bottom: 0; } .button { width: 100%; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; } }