:root{--bg:#f5f3ec;--paper:#fffdf7;--ink:#30453b;--muted:#66746a;--line:#e4e5da;--hover:#f1f1e7;--pressed:#e9ecdf;--accent:#477e70;--bar:#b7cdbf;--bar-hover:#97b8a6;--live:#3f8f5a;--warn:#b7791f;--additions:#3d7a56;--deletions:#b0604a;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ease:cubic-bezier(.2, 0, 0, 1);--shadow:0 0 0 1px #30453b14, 0 1px 2px #30453b0a, 0 12px 32px -16px #30453b29;--float-shadow:0 0 0 1px #30453b14, 0 4px 12px -2px #30453b2e;color:var(--ink);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.4}@media (prefers-color-scheme:dark){:root{--bg:#1c2420;--paper:#252f29;--ink:#e4e9d9;--muted:#a0ad99;--line:#37423a;--hover:#2e3a32;--pressed:#34423a;--accent:#8fc2ae;--bar:#46604f;--bar-hover:#5c7d69;--live:#7cc58f;--warn:#e0a84e;--additions:#9cc99e;--deletions:#e8aa91;--shadow:0 0 0 1px #ffffff12, 0 12px 32px -16px #00000080;--float-shadow:0 0 0 1px #ffffff14, 0 4px 12px -2px #0006}}*{box-sizing:border-box}body,h1,h2,p{margin:0}button,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}button,a,select{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.topbar,main{max-width:1440px;margin:0 auto;padding-inline:24px}.topbar{justify-content:space-between;align-items:center;gap:16px;padding-block:18px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand h1{letter-spacing:-.2px;white-space:nowrap;font-size:16px;font-weight:600}.brand-icon{background:var(--ink);width:32px;height:32px;color:var(--bg);border-radius:9px;flex-shrink:0;place-items:center;display:grid}.brand-login{color:var(--muted);text-overflow:ellipsis;font-size:13px;overflow:hidden}.header-right{align-items:center;gap:12px;display:flex}.view-switch{background:var(--pressed);border-radius:9px;padding:3px;display:flex}.view-switch a{color:var(--muted);transition:color .15s var(--ease);border-radius:6px;padding:4px 10px;font-size:13px}.view-switch a:hover{color:var(--ink)}.view-switch a[aria-current=page]{background:var(--paper);color:var(--ink);box-shadow:var(--float-shadow)}.feed-status{white-space:nowrap;align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.feed-age{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:400}.feed-dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.is-live .feed-dot{background:var(--live);box-shadow:0 0 0 0 var(--live);animation:pulse 2s var(--ease) infinite}.is-stale .feed-dot,.is-offline .feed-dot{background:var(--warn)}@keyframes pulse{70%,to{box-shadow:0 0 0 6px #0000}}main{gap:16px;padding-bottom:32px;display:grid}.panel{background:var(--paper);box-shadow:var(--shadow);border-radius:16px;overflow:hidden}h2{letter-spacing:-.1px;font-size:15px;font-weight:600}.caption{color:var(--muted);font-size:13px}.empty{color:var(--muted);padding:8px 10px;font-size:13px}.dashboard{grid-template-columns:minmax(0,1fr) 300px;display:grid}.airspace{background:#b9d8d8;min-width:0;position:relative}.airport{width:100%;min-height:360px;max-height:720px;display:block}.scene-controls{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--float-shadow);color:#30453b;background:#fffdf7db;border-radius:12px;gap:2px;padding:4px;display:flex;position:absolute;bottom:12px;right:12px}.scene-controls button{font-variant-numeric:tabular-nums;min-width:32px;height:32px;transition-property:background-color,scale;transition-duration:.15s;transition-timing-function:var(--ease);border-radius:8px;place-items:center;padding:0 6px;font-size:13px;display:grid}.scene-controls button:hover{background:#30453b14}.scene-controls button:active{scale:.96}.plane{cursor:pointer;outline:none}.selection-ring{opacity:0}.plane.selected .selection-ring,.plane:focus-visible .selection-ring{opacity:.8}.plane:focus-visible .selection-ring{stroke-width:3px}.flight-board{contain:size;border-left:1px solid var(--line);flex-direction:column;min-width:0;min-height:0;padding:16px 12px 12px;display:flex}.board-title{justify-content:space-between;align-items:baseline;padding:0 6px 12px;display:flex}.count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.repo-filter{color:var(--muted);align-items:center;margin:0 0 8px;display:flex;position:relative}.repo-filter select{appearance:none;background:var(--hover);width:100%;color:var(--ink);cursor:pointer;text-overflow:ellipsis;border:0;border-radius:8px;padding:7px 30px 7px 10px;font-size:13px}.repo-filter option{background:var(--paper)}.repo-filter svg{pointer-events:none;position:absolute;right:10px}.flight-list{scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex:1;min-height:120px;overflow:auto}.flight-row{text-align:left;width:100%;transition:background-color .15s var(--ease);border-radius:10px;align-items:center;gap:10px;padding:8px;display:flex}.flight-row:hover{background:var(--hover)}.flight-row[aria-pressed=true]{background:var(--pressed)}.airline-mark{border-radius:8px;flex-shrink:0;place-items:center;width:28px;height:28px;font-family:Georgia,serif;font-size:16px;font-style:italic;display:grid}.flight-info{flex:1;min-width:0;display:grid}.flight-tail{font-family:var(--mono);font-size:12px;font-weight:500}.flight-airline{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.flight-phase{color:var(--muted);flex-shrink:0;font-size:12px}.selected-card{border-top:1px solid var(--line);gap:6px;margin-top:8px;padding:12px 8px 4px;display:grid}.selected-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.selected-title{text-wrap:pretty;font-size:14px;font-weight:500;line-height:1.4}a.selected-title:hover{text-underline-offset:3px;text-decoration:underline}.selected-title svg{vertical-align:-2px;color:var(--muted);margin-left:2px;display:inline}.diff{font-family:var(--mono);gap:8px;font-size:12px;display:flex}.additions{color:var(--additions)}.deletions{color:var(--deletions)}.landings{grid-template-columns:200px minmax(0,1fr);column-gap:32px;padding:20px 24px;display:grid}.landings-summary{flex-direction:column;gap:4px;display:flex}.landings-value{align-items:baseline;gap:8px;margin-top:auto;display:flex}.landings-value strong{letter-spacing:-1.5px;font-variant-numeric:tabular-nums;font-size:44px;font-weight:500;line-height:1}.landings-value span{color:var(--muted);font-size:14px}.bars{grid-template-columns:repeat(14,minmax(0,1fr));gap:4px;display:grid}.bar-column{transition:background-color .15s var(--ease);border-radius:8px;flex-direction:column;align-items:center;gap:6px;padding:4px 2px;display:flex}.bar-column:hover{background:var(--hover)}.bar-column[aria-pressed=true]{background:var(--pressed)}.bar-track{border-bottom:1px solid var(--line);align-items:flex-end;width:min(100%,28px);height:96px;display:flex}.bar{background:var(--bar);width:100%;transition-property:height,background-color;transition-duration:.5s,.15s;transition-timing-function:var(--ease);border-radius:4px 4px 0 0}.bar-column:hover .bar{background:var(--bar-hover)}.bar.is-today,.bar-column[aria-pressed=true] .bar{background:var(--accent)}.bar-count,.bar-day{font-variant-numeric:tabular-nums;color:var(--muted);min-height:1lh;font-size:12px}.bar-count{color:var(--ink)}.bar-column[aria-pressed=true] .bar-day{color:var(--ink);font-weight:600}.arrivals{border-top:1px solid var(--line);grid-column:1/-1;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:6px;max-height:128px;margin:16px 0 0;padding:16px 0 0;list-style:none;display:grid;overflow:auto}.arrivals .empty{padding:4px 0}.arrival{background:var(--hover);transition:background-color .15s var(--ease);border-radius:8px;align-items:baseline;gap:6px;padding:6px 10px;font-size:13px;display:flex}a.arrival:hover{background:var(--pressed)}.arrival-tail{font-family:var(--mono);color:var(--muted);flex-shrink:0;font-size:12px}.arrival-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media (width<=1050px){.dashboard{grid-template-columns:minmax(0,1fr) 260px}.landings{grid-template-columns:1fr;row-gap:16px}.landings-summary{grid-template-columns:1fr auto;align-items:baseline;display:grid}.landings-value{grid-area:2/1/auto/-1;margin-top:4px}.landings-summary .caption{grid-area:1/2}}@media (width<=760px){.topbar,main{padding-inline:12px}.brand-login,.feed-age{display:none}.dashboard{grid-template-columns:1fr}.airport{aspect-ratio:1080/700;min-height:0}.scene-controls{bottom:8px;right:8px}.scene-controls button{min-width:36px;height:36px}.flight-board{contain:none;border-left:0;border-top:1px solid var(--line)}.flight-list{flex:none;max-height:280px}.landings{padding:16px}.bars{gap:0}.bar-count,.bar-day{font-size:11px}.bar-track{height:72px}}@media (prefers-reduced-motion:reduce){.is-live .feed-dot{animation:none}.bar{transition-duration:0s,.15s}}
