:root{--bg:#0b0f14;--panel:#0f151c;--bar:#111821;--line:#1f2a36;--text:#e6edf3;--muted:#8b949e;--accent:#7fb2ff;--ok:#3fb950;--warn:#f5c518;--bad:#f85149;--cyan:#39c5cf;--mono:ui-monospace, "Cascadia Mono", "SF Mono", Consolas, "Liberation Mono", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--mono);-webkit-font-smoothing:antialiased;font-size:clamp(12px,.85vw,18px)}.app{grid-template-rows:auto auto 1fr auto auto;height:100vh;display:grid;overflow:hidden}.topbar{background:var(--bar);border-bottom:1px solid var(--line);justify-content:space-between;align-items:stretch;height:2.6em;padding:0 .8em;display:flex}.topbar .title{letter-spacing:.06em;white-space:nowrap;align-items:center;font-weight:700;display:flex}.topbar .title .code{color:var(--warn);margin-right:.5em}.tabs{gap:2px;display:flex}.tabs a{color:var(--muted);letter-spacing:.04em;border-bottom:2px solid #0000;align-items:center;padding:0 1.1em;text-decoration:none;display:flex}.tabs a:hover{color:var(--text)}.tabs a.on{color:#fff;border-bottom-color:var(--warn);background:#1a2330}.topbar .right{white-space:nowrap;align-items:center;gap:1em;display:flex}.clock{color:var(--warn);font-variant-numeric:tabular-nums;font-weight:700}.conn{letter-spacing:.08em;border:1px solid;border-radius:3px;align-self:center;padding:.15em .5em;font-size:.75em;line-height:1.5}.conn.conn-live{color:var(--ok)}.conn.conn-reconnecting{color:var(--bad);animation:1s steps(2,end) infinite blink}.conn.conn-connecting{color:var(--muted)}@keyframes blink{50%{opacity:.35}}.strip{background:var(--panel);border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;gap:.4em 1.4em;padding:.35em .8em;display:flex}.strip b{color:var(--muted);margin-right:.4em;font-weight:400}.strip span.v{color:var(--text);font-weight:700}.strip .notam{color:var(--warn)}.body{min-height:0;position:relative;overflow:hidden}.live{grid-template-rows:minmax(0,1fr);grid-template-columns:3fr 2fr;display:grid;position:absolute;inset:0}.side{border-left:1px solid var(--line);grid-template-rows:1fr 1fr;min-height:0;display:grid}.panel{border-bottom:1px solid var(--line);flex-direction:column;min-height:0;padding:.5em .7em;display:flex;overflow:hidden}.panel-head{justify-content:space-between;align-items:baseline;margin-bottom:.35em;display:flex}.panel h4{color:var(--accent);letter-spacing:.12em;margin:0;font-size:.85em}.age{color:var(--muted);font-size:.75em}.stale-badge{color:#fff;background:var(--bad);border-radius:2px;margin-left:.5em;padding:.05em .4em;font-size:.7em;font-weight:700}table.rows{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}table.rows td{white-space:nowrap;text-overflow:ellipsis;padding:.18em .35em;overflow:hidden}table.rows tr:nth-child(2n) td{background:#ffffff06}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}.muted{color:var(--muted)}.dir{color:var(--muted);font-size:.8em}.chip{vertical-align:1px;letter-spacing:.05em;border-radius:2px;margin-left:.4em;padding:0 .35em;font-size:.68em}.chip.inferred{color:var(--cyan);border:1px dashed var(--cyan)}.chip.fvm{color:#000;background:var(--cyan)}.placeholder{height:100%;color:var(--muted);letter-spacing:.1em;justify-content:center;align-items:center;font-size:1.3em;display:flex}.map-wrap{min-height:0;position:relative}.map-wrap>.map{position:absolute;inset:0}.map-badge{z-index:2;border:1px solid var(--line);background:#0b0f14cc;min-width:14em;padding:.3em .6em;position:absolute;top:.6em;left:.6em}.map-badge .panel-head{gap:1em;margin:0}.maplibregl-popup-content{color:var(--text);font-family:var(--mono);border:1px solid var(--line);background:var(--bar)!important}.maplibregl-popup-tip{border-top-color:var(--bar)!important;border-bottom-color:var(--bar)!important}.maplibregl-ctrl-attrib{color:var(--muted);background:#0b0f14b3!important}.maplibregl-ctrl-attrib a{color:var(--muted)}.ticker{color:#fff;letter-spacing:.03em;background:#b00020;align-items:center;height:2.3em;font-weight:700;display:flex;overflow:hidden}.ticker .tag{background:var(--warn);color:#000;z-index:1;letter-spacing:.08em;flex-shrink:0;align-items:center;height:100%;padding:0 1em;display:flex}.ticker .track{white-space:nowrap;flex:1;overflow:hidden}.ticker .crawl{animation:crawl var(--crawl-seconds,40s) linear infinite;padding-left:100%;display:inline-block}@keyframes crawl{0%{transform:translate(0)}to{transform:translate(-100%)}}@media (prefers-reduced-motion:reduce){.ticker .crawl{animation-duration:calc(var(--crawl-seconds,40s) * 2)}}.footer{color:var(--muted);background:var(--bg);border-top:1px solid var(--line);padding:.2em .8em;font-size:.62em;line-height:1.35}.login{justify-content:center;align-items:center;min-height:100vh;display:flex}.login form{background:var(--bar);border:1px solid var(--line);gap:.9em;width:min(92vw,360px);padding:1.6em;display:grid}.login h1{letter-spacing:.1em;margin:0 0 .3em;font-size:1.2em}.login h1 .code{color:var(--warn)}.login label{color:var(--muted);gap:.3em;font-size:.85em;display:grid}.login input{font:inherit;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:3px;padding:.55em .6em}.login input:focus{outline:2px solid var(--accent);outline-offset:-1px}.login button{font:inherit;background:var(--warn);color:#000;cursor:pointer;letter-spacing:.08em;border:0;border-radius:3px;padding:.6em;font-weight:700}.login button:disabled{opacity:.6;cursor:wait}.login .err{color:var(--bad);min-height:1.2em;font-size:.85em}.card-stack{z-index:20;gap:.5em;width:min(30em,34vw);display:grid;position:fixed;bottom:4.2em;right:calc(40% + 1em)}.card{background:var(--bar);border-left:4px solid var(--warn);animation:.25s ease-out card-in;display:flex;position:relative;box-shadow:0 6px 18px #0009}.card .card-body{color:inherit;flex:1;min-width:0;padding:.5em .7em;text-decoration:none}.card-kind{letter-spacing:.1em;color:var(--warn);font-size:.72em}.card-line{white-space:nowrap;text-overflow:ellipsis;margin-top:.15em;font-size:1.08em;font-weight:700;overflow:hidden}.card-context{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:.1em;font-size:.8em;overflow:hidden}.card-x{color:var(--muted);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0 .55em;font-size:1.3em}.card-x:hover{color:#fff}.card.tone-runway{border-left-color:var(--ok)}.card.tone-runway .card-kind{color:var(--ok)}.card.tone-wx{border-left-color:var(--bad)}.card.tone-wx .card-kind{color:var(--bad)}.card.tone-info{border-left-color:var(--accent)}.card.tone-info .card-kind{color:var(--accent)}.card.summary{border-left-style:double;border-left-width:6px}.card-clear{border:1px solid var(--line);color:var(--muted);font:inherit;cursor:pointer;background:#0b0f14d9;justify-self:end;padding:.15em .6em;font-size:.75em}.card-clear:hover{color:#fff}@keyframes card-in{0%{opacity:0;transform:translate(1.5em)}to{opacity:1;transform:none}}.app:not(.tab-live) .card-stack{right:1em}.changes{flex-direction:column;padding:.6em .9em;display:flex;position:absolute;inset:0}.changes-bar{flex-wrap:wrap;align-items:center;gap:.6em 1em;margin-bottom:.6em;display:flex}.changes-bar input{font:inherit;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:3px;flex:22em;padding:.45em .6em}.changes-bar input:focus{outline:2px solid var(--accent);outline-offset:-1px}.chips{flex-wrap:wrap;gap:.3em;display:flex}.chip-btn{font:inherit;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;padding:.3em .7em;font-size:.85em}.chip-btn:hover{color:var(--text)}.chip-btn.on{background:var(--warn);border-color:var(--warn);color:#000}.changes-list{flex:1;min-height:0;overflow:auto}.changes-table td{white-space:normal;vertical-align:top}.changes-table td.t{color:var(--warn);white-space:nowrap;width:5.5em}.changes-table td.kind{letter-spacing:.08em;white-space:nowrap;width:11em;padding-top:.35em;font-size:.75em}.changes-table td.kind.tone-gate{color:var(--warn)}.changes-table td.kind.tone-runway{color:var(--ok)}.changes-table td.kind.tone-wx{color:var(--bad)}.changes-table td.kind.tone-info{color:var(--accent)}.changes-table tr.day td{color:var(--muted);letter-spacing:.12em;padding-top:.9em;font-size:.75em;background:0 0!important}.changes-table .old{color:var(--muted);text-decoration:line-through}.changes-table .new{color:var(--ok);font-weight:700}.changes-note{margin-bottom:.4em;font-size:.85em}.load-more{margin:.8em auto;display:block}.weather{grid-template-rows:minmax(0,1fr);grid-template-columns:3fr 2fr;display:grid;position:absolute;inset:0}.wx-main{min-height:0;padding:.6em .9em;overflow:auto}.wx-side{border-left:1px solid var(--line);min-height:0;padding:.6em .9em;overflow:auto}.wx-side h4,.wx-card h4{color:var(--accent);letter-spacing:.12em;margin:0 0 .4em;font-size:.85em}.wx-side td{white-space:normal;vertical-align:top}.wx-side td.t{color:var(--warn);width:3.5em}.wx-side .tone-wx{color:var(--bad);font-size:.75em}.wx-side .tone-info{color:var(--accent);font-size:.75em}.wx-banner{letter-spacing:.04em;margin-bottom:.5em;padding:.5em .8em;font-weight:700}.wx-banner.tone-red{color:#fff;background:#8b0016}.wx-banner.tone-amber{color:#000;background:#b88a00}.wx-banner.tone-info{color:var(--text);border-left:4px solid var(--accent);background:#1a2330}.wx-banner.sigmet{font-size:.85em;font-weight:400}.wx-card{background:var(--panel);border:1px solid var(--line);margin-bottom:.7em;padding:.6em .8em}.wx-raw{color:var(--text);word-break:break-word;margin-bottom:.4em;font-weight:700}.wx-taf{color:var(--muted);margin-top:.4em;font-weight:400}.wx-rows td:first-child{width:11em}.wx-pre{white-space:pre-wrap;font-family:var(--mono);color:var(--text);margin:0;font-size:.85em}.wx-others{grid-template-columns:1fr 1fr;gap:.7em;display:grid}.wx-main .panel-head .age .panel-head{margin:0;display:inline-flex}.wx-main .panel-head .age .panel-head h4{display:none}.changes-table td:nth-child(3){width:18em;font-weight:700}.tabpage{flex-direction:column;padding:.6em .9em;display:flex;position:absolute;inset:0}.two-col{flex:1;grid-template-columns:1fr 1fr;gap:0 1.2em;min-height:0;display:grid}.board{flex-direction:column;min-height:0;display:flex}.board-scroll{flex:1;min-height:0;overflow:auto}.board-table thead th{background:var(--bg);text-align:left;color:var(--muted);letter-spacing:.1em;border-bottom:1px solid var(--line);text-transform:uppercase;padding:.3em .5em;font-size:.75em;font-weight:400;position:sticky;top:0}.board-table td.t{color:var(--warn);font-variant-numeric:tabular-nums}.board-table td.hl{color:var(--warn);font-weight:700}.board-table tr.cancelled td{color:var(--muted)}.board-table tr.cancelled td:nth-child(4){color:var(--bad)}.empty{text-align:center;padding:1.5em}.notams .panel-head h4{color:var(--accent);letter-spacing:.12em;margin:0;font-size:.85em}.notam{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--line);margin-bottom:.55em;padding:.5em .8em}.notam.state-active{border-left-color:var(--warn)}.notam.state-upcoming{border-left-color:var(--accent)}.notam.state-expired{opacity:.55}.notam header{flex-wrap:wrap;align-items:baseline;gap:.3em .9em;display:flex}.notam header b{color:var(--warn)}.notam .when{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.85em}.notam .sched{color:var(--cyan)}.notam p{white-space:pre-wrap;margin:.4em 0 0;line-height:1.4}.chip.state{margin-left:0}.chip.state.active{color:#000;background:var(--warn)}.chip.state.upcoming{color:var(--accent);border:1px solid var(--accent)}.chip.state.expired{color:var(--muted);border:1px solid var(--muted)}.atfm a{color:var(--accent)}.atfm h4.sub{margin-top:1em}.atfm-point{border-left:3px solid var(--line);margin-bottom:.35em;padding:.35em 0 .35em .6em}.atfm-point.level-measure{border-left-color:var(--warn)}.atfm-point b{color:var(--warn);margin-right:.6em}.atfm-point .status{font-weight:700}.atfm-point .remark{color:var(--muted);font-size:.9em}.atfm-clear{flex-wrap:wrap;gap:.3em;display:flex}.chip-ok{color:var(--ok);border:1px solid #1f4d2a;border-radius:2px;padding:0 .4em;font-size:.85em}.atfm td.wrap{white-space:normal}.atfm tr.hk td{color:var(--warn)}.atfm-stats{margin-bottom:.5em}.demand td:first-child{width:4.5em}.demand td:last-child{width:9em;font-size:.85em}.bars{align-items:flex-end;gap:2px;height:1.6em;display:flex}.bar{background:#ffffff08;flex-direction:column-reverse;flex:1;height:100%;display:flex}.bar span{width:100%;display:block}.bar .dep,.sw.dep{background:var(--warn)}.bar .arr,.sw.arr{background:var(--ok)}.legend{margin:.3em 0 .6em;font-size:.8em}.sw{vertical-align:-1px;width:.8em;height:.8em;margin:0 .3em 0 .8em;display:inline-block}.adp-day{margin-bottom:.5em}.adp{padding-left:.6em}details.wx-card summary{cursor:pointer;list-style:none}details.wx-card summary::-webkit-details-marker{display:none}details.wx-card summary h4{display:inline}details.wx-card summary:after{content:" ▸";color:var(--muted)}details.wx-card[open] summary:after{content:" ▾"}details.wx-card[open] summary{margin-bottom:.4em}.atis a{color:var(--accent)}.atis-cols{grid-template-columns:1fr 1fr;gap:.8em;display:grid}.atis-head{align-items:center;gap:.9em;margin-bottom:.5em;display:flex}.atis-letter{color:#000;background:var(--warn);border-radius:4px;justify-content:center;align-items:center;width:1.4em;height:1.4em;font-size:3.2em;font-weight:700;display:flex}.atis-rwy{color:var(--ok);font-size:1.3em;font-weight:700}.atis-text{border-top:1px solid var(--line);color:var(--text);margin-top:.6em;padding-top:.5em;line-height:1.45}.live-search{gap:.3em;margin-bottom:.35em;display:flex}.live-search input{font:inherit;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:3px;flex:1;padding:.3em .5em;font-size:.9em}.live-search input:focus{outline:2px solid var(--accent);outline-offset:-1px}.panel-scroll{flex:1;min-height:0;overflow:auto}.airline-logo{object-fit:contain;vertical-align:-.3em;background:#fff;border-radius:2px;width:1.8em;height:1.35em;margin-right:.45em;display:inline-block}.airline-logo.none{color:var(--muted);text-align:center;vertical-align:.1em;background:#1a2330;width:3em;height:2.25em;font-size:.6em;line-height:2.25em}.board-table td,table.rows td{vertical-align:middle}.map-toggles{z-index:2;gap:.3em;display:flex;position:absolute;top:5.4em;left:.6em}.map-toggles .chip-btn{background:#0b0f14d9}.map-toggles .chip-btn.on{color:#000;background:#d2a8ff;border-color:#d2a8ff}td.where{color:var(--warn);font-weight:700}td.where .where-k{color:var(--muted);letter-spacing:.06em;margin-right:.35em;font-size:.7em;font-weight:400}.view-switch{order:-1}.view-switch .chip-btn.on{background:var(--accent);border-color:var(--accent)}.board-note{border-left:3px solid var(--line);margin-bottom:.5em;padding:.35em .7em;font-size:.9em}.board-note.bad{color:var(--bad);border-left-color:var(--bad)}.board-note.muted{color:var(--muted)}.health{align-self:center;position:relative}.health-badge{font:inherit;letter-spacing:.08em;cursor:pointer;background:0 0;border:1px solid;border-radius:3px;padding:.15em .55em;font-size:.75em;line-height:1.5}.health .dot{vertical-align:.05em;background:currentColor;border-radius:50%;width:.6em;height:.6em;margin-right:.45em;display:inline-block}.h-ok{color:var(--ok)}.h-warn{color:var(--warn)}.h-bad{color:var(--bad)}.health-badge.h-bad{animation:1.2s steps(2,end) infinite blink}.health-panel{z-index:20;background:var(--panel);border:1px solid var(--line);white-space:normal;width:min(62em,90vw);max-height:75vh;padding:.5em .7em;font-size:.9em;position:absolute;top:calc(100% + .4em);right:0;overflow:auto;box-shadow:0 6px 24px #00000080}.health-panel th{text-align:left;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;padding:.2em .35em;font-size:.75em;font-weight:400}.health-panel td{color:var(--text);white-space:normal}.health-panel td.lvl{width:45%}.health-panel tr.h-ok td.lvl{color:var(--ok)}.health-panel tr.h-warn td.lvl{color:var(--warn)}.health-panel tr.h-bad td.lvl{color:var(--bad)}.chip-check{color:var(--muted);cursor:pointer;align-items:center;gap:.35em;font-size:.85em;display:inline-flex}.chip-check input{accent-color:var(--warn)}.logout{font:inherit;letter-spacing:.06em;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;align-self:center;padding:.15em .55em;font-size:.75em;line-height:1.5}.logout:hover{color:var(--text);border-color:var(--muted)}
