@font-face{font-family:Noto Sans;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/noto-sans-latin.woff2)format("woff2")}@font-face{font-family:Noto Sans fallback;src:local(Arial),local(ArialMT);font-weight:400 600;size-adjust:106%;ascent-override:101%;descent-override:28%;line-gap-override:0%}@font-face{font-family:Noto Sans fallback;src:local(Arial Bold),local(Arial-BoldMT);font-weight:700 800;size-adjust:106%;ascent-override:101%;descent-override:28%;line-gap-override:0%}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--surface:#f7f7f7;--surface-raised:#fff;--line:#e2e2e2;--ink:#333;--ink-soft:#575757;--blue:#006fc1;--blue-deep:#0060a7;--blue-bright:#00a4e5;--blue-hover:#f3fbfd;--blue-panel:#e9f6f9;--yellow:#ffcd00;--yellow-light:#fbe700;--teal:#009883;--teal-tint:#ceefec;--live:#5cab4c;--live-ink:#357029;--live-tint:#ebffe7;--warn:#f68e33;--warn-line:#c4620f;--warn-ink:#9a4a0c;--warn-tint:#fff6ee;--error:#cc0c2f;--error-tint:#ffeef1;--gradient-yellow:linear-gradient(90deg, var(--yellow-light), var(--yellow));--gradient-blue:linear-gradient(90deg, var(--blue-bright), var(--blue));--shadow-card:0 4px 23px #0000001a;--shadow-lift:0 8px 18px #0000002e;--font-body:"Noto Sans", "Noto Sans fallback", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.9375rem;--text-lg:1.125rem;--text-xl:1.4375rem;--text-2xl:1.875rem;--text-3xl:2.375rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--radius:.75rem;--radius-button:.625rem;--panel-width:27.5rem;--gutter:clamp(1rem, 4vw, 1.75rem)}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;line-height:1.5}::selection{background:var(--yellow);color:var(--ink)}a{color:var(--blue);text-underline-offset:.15em}a:hover{color:var(--blue-deep);text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--blue-deep);outline-offset:2px;box-shadow:0 0 0 7px var(--surface-raised);border-radius:4px}button{font:inherit;color:inherit}h1,h2,h3,p,dl,dd,ul,figure{margin:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.muted{color:var(--ink-soft);font-size:var(--text-sm)}.button-secondary{justify-content:center;align-items:center;gap:var(--space-2);min-block-size:3rem;padding:0 var(--space-4);border:1px solid var(--blue);border-radius:var(--radius-button);background:var(--surface-raised);color:var(--blue);font-size:var(--text-md);cursor:pointer;font-weight:700;display:inline-flex}.button-secondary:hover{background:var(--blue-hover);color:var(--blue-deep)}.app{grid-template-rows:minmax(18rem,56svh) auto;min-block-size:100dvh;display:grid}.map-pane{background:var(--blue-panel);min-inline-size:0;position:relative}.map-pane>.flight-map{position:absolute;inset:0}.flight-map--loading{background:linear-gradient(160deg, var(--surface), var(--blue-panel))}.panel{--panel-pad-top:var(--space-5);min-inline-size:0;padding:var(--panel-pad-top) var(--gutter) var(--space-6);gap:var(--space-6);flex-direction:column;display:flex}@media (width>=56rem){.app{grid-template-columns:minmax(0, 1fr) var(--panel-width);grid-template-rows:100dvh;block-size:100dvh;overflow:hidden}.panel{--panel-pad-top:var(--space-6);border-inline-start:1px solid var(--line);overflow-y:auto;box-shadow:-12px 0 32px #00000014}}.map-pane__back{box-shadow:var(--shadow-card);position:absolute;inset-block-start:var(--space-3);inset-inline-start:var(--space-3)}.map-pane__back:hover{box-shadow:var(--shadow-lift)}.masthead{gap:var(--space-1);margin-block-start:calc(-1 * var(--panel-pad-top));margin-inline:calc(-1 * var(--gutter));padding:var(--space-6) var(--gutter) var(--space-5);background:var(--gradient-yellow);border-block-end:4px solid var(--blue-deep);color:var(--ink);display:grid}.masthead__eyebrow{font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink);font-weight:700}.masthead__title{font-size:var(--text-3xl);letter-spacing:-.01em;color:var(--blue-deep);font-weight:800;line-height:1.1}.masthead__tags{gap:var(--space-2);flex-wrap:wrap;margin-block-start:var(--space-2);display:flex}.masthead__unofficial,.masthead__demo{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);border-radius:999px;line-height:1.4}.masthead__unofficial{background:var(--surface-raised);color:var(--ink);font-weight:700}.masthead__demo{border:1px dashed var(--ink);color:var(--ink)}.notice{padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-raised);border-inline-start:4px solid var(--blue);box-shadow:var(--shadow-card);font-size:var(--text-sm)}.notice--stale{background:var(--warn-tint);border-inline-start-color:var(--warn-line)}.notice--error{background:var(--error-tint);border-inline-start-color:var(--error)}.flight-panel{gap:var(--space-4);display:grid}.status-tag{justify-self:start;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;font-weight:800;display:inline-flex}.status-tag:before{content:"";background:currentColor;border-radius:50%;block-size:.5rem;inline-size:.5rem}.status-tag--live{background:var(--live-tint);color:var(--live-ink)}.status-tag--live:before{background:var(--live);box-shadow:0 0 0 1.5px var(--live-ink)}@media (prefers-reduced-motion:no-preference){.status-tag--live:before{animation:2s ease-in-out infinite pulse}.flight-row,.button-secondary{transition:border-color .12s,background-color .12s,box-shadow .12s}}.status-tag--estimate{background:var(--warn-tint);color:var(--warn-ink);outline:1px dashed var(--warn-line);outline-offset:-1px}.status-tag--estimate:before{background:var(--warn);box-shadow:0 0 0 1.5px var(--warn-line)}.status-tag--calm{background:var(--blue-panel);color:var(--blue-deep)}.status-tag--calm:before{background:0 0;border:2px solid}@keyframes pulse{50%{opacity:.3}}.flight-panel__headline{font-size:var(--text-xl);text-wrap:balance;font-weight:800;line-height:1.25}.flight-panel__lede{color:var(--ink-soft)}.flight-panel__flight{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--surface-raised);border-block-start:8px solid var(--yellow);box-shadow:var(--shadow-card);display:grid}.flight-panel__number{align-items:baseline;gap:var(--space-1) var(--space-3);font-weight:700;font-size:var(--text-lg);letter-spacing:.01em;flex-wrap:wrap;display:flex}.flight-panel__callsign{font-size:var(--text-sm);color:var(--ink-soft);letter-spacing:0;font-weight:400}.route__ends{align-items:start;gap:var(--space-3);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.route__end:last-child{text-align:end}.route__end{min-inline-size:0;display:grid}.route__code{font-size:var(--text-2xl);color:var(--blue-deep);font-variant-numeric:tabular-nums;font-weight:800;line-height:1.1}.route__code--unknown{color:var(--ink-soft)}.route__place{font-size:var(--text-sm);color:var(--ink-soft);overflow-wrap:anywhere}.route__arrow{font-size:var(--text-lg);color:var(--blue);padding-block-start:var(--space-2)}.arrow{vertical-align:-.125em;fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;block-size:1em;inline-size:1em;margin-inline:.3em;display:inline-block}.route__arrow .arrow{margin-inline:0}.route__note{font-size:var(--text-xs);color:var(--ink-soft);margin-block-start:var(--space-2)}.route--unknown{font-size:var(--text-lg);color:var(--ink-soft)}.progress{gap:var(--space-2);display:grid}.progress__track{block-size:.5rem;margin-block:var(--space-1);background:var(--blue-panel);box-shadow:inset 0 0 0 1px var(--line);border-radius:999px}.progress__fill{border-radius:inherit;background:var(--gradient-blue);block-size:100%;position:relative}.progress__fill:after{content:"";border:3px solid var(--blue-deep);background:var(--yellow);border-radius:50%;block-size:1.125rem;inline-size:1.125rem;position:absolute;inset-block-start:50%;inset-inline-end:0;translate:50% -50%}.progress__text{justify-content:space-between;gap:var(--space-1) var(--space-4);font-size:var(--text-sm);font-variant-numeric:tabular-nums;flex-wrap:wrap;font-weight:700;display:flex}.progress__note{font-size:var(--text-xs);color:var(--ink-soft)}.estimate-note{padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px dashed var(--warn-line);border-inline-start:4px solid var(--warn-line);background:var(--warn-tint);font-size:var(--text-sm)}.panel-subhead{border-block-end:3px solid var(--yellow);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--blue-deep);justify-self:start;padding-block-end:var(--space-1);font-weight:800}.stats{gap:var(--space-4) var(--space-5);grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));display:grid}.stat__label{font-size:var(--text-xs);color:var(--ink-soft)}.stat__value{font-size:var(--text-lg);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.3;display:grid}.stat__secondary{font-size:var(--text-sm);color:var(--ink-soft);font-weight:400}.last-seen{border-block-start:1px solid var(--line);font-size:var(--text-sm);color:var(--ink-soft);font-variant-numeric:tabular-nums;padding-block-start:var(--space-3)}.last-seen strong{color:var(--ink)}.back-button{justify-self:start}.section-heading{gap:var(--space-2);font-size:var(--text-xl);font-weight:800;line-height:1.25;display:grid}.section-heading:after{content:"";background:var(--gradient-yellow);border-radius:2px;block-size:4px;inline-size:2.5rem}.past-flights{gap:var(--space-3);display:grid}.past-flights__hint{font-size:var(--text-xs);color:var(--ink-soft)}.flight-days{gap:var(--space-5);display:grid}.flight-day{gap:var(--space-2);display:grid}.flight-day__label{z-index:1;padding-block:var(--space-1);background:var(--surface);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-weight:800;position:sticky;inset-block-start:0}.flight-day__list{gap:var(--space-2);padding:0;list-style:none;display:grid}.flight-row{align-items:center;gap:var(--space-1) var(--space-3);inline-size:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-raised);text-align:start;cursor:pointer;grid-template-columns:4.5rem minmax(0,1fr) auto;grid-template-areas:"number route duration""number times duration";display:grid}.flight-row:hover{border-color:var(--blue);background-color:var(--blue-hover)}.flight-row[aria-pressed=true]{border-color:var(--teal);background:linear-gradient(90deg, var(--teal) 0 .3125rem, var(--teal-tint) .3125rem)}.flight-row__number{font-weight:700;font-size:var(--text-sm);grid-area:number}.flight-row__route{grid-area:route;min-inline-size:0;display:grid}.flight-row__codes{color:var(--blue-deep);font-weight:700}.flight-row__cities{font-size:var(--text-xs);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.flight-row__times{font-size:var(--text-sm);font-variant-numeric:tabular-nums;grid-area:times}.flight-row__duration{font-size:var(--text-sm);color:var(--ink-soft);text-align:end;font-variant-numeric:tabular-nums;grid-area:duration}.flight-row__times,.flight-row__duration{white-space:nowrap}@media (width<=30rem){.flight-row{grid-template-columns:4.25rem minmax(0,1fr);grid-template-areas:"number route""number times""number duration"}.flight-row__duration{text-align:start}}.aircraft-card{gap:var(--space-4);display:grid}.aircraft-card__photo{gap:var(--space-2);display:grid}.aircraft-card__photo img{border-radius:var(--radius);background:var(--blue-panel);block-size:auto;inline-size:100%;box-shadow:var(--shadow-card);display:block}.aircraft-card__photo figcaption{font-size:var(--text-xs);color:var(--ink-soft);margin-block-start:var(--space-1)}.aircraft-card__facts{gap:var(--space-3) var(--space-5);padding:var(--space-4);border-radius:var(--radius);background:var(--surface-raised);box-shadow:var(--shadow-card);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.aircraft-card__facts dt{font-size:var(--text-xs);color:var(--ink-soft)}.aircraft-card__facts dd{font-weight:700}.aircraft-card__note{padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--blue-panel);font-size:var(--text-md);color:var(--ink);line-height:1.6}.site-footer{gap:var(--space-3);border-block-start:1px solid var(--line);background:var(--gradient-yellow) top left / 4rem 4px no-repeat;font-size:var(--text-xs);color:var(--ink-soft);padding-block-start:var(--space-5);display:grid}.site-footer__credits{gap:var(--space-1) var(--space-4);flex-wrap:wrap;padding:0;list-style:none;display:flex}.site-footer__disclaimer{color:var(--ink);font-weight:700}.aircraft{--aircraft-body:var(--yellow);--aircraft-accent:var(--blue);--aircraft-outline:var(--blue-deep);--aircraft-fill-opacity:1;place-items:center;block-size:2.5rem;inline-size:2.5rem;display:grid;position:relative}.aircraft__icon{block-size:100%;inline-size:100%;stroke:var(--aircraft-outline);stroke-width:2.25px;stroke-linejoin:round;paint-order:stroke;filter:drop-shadow(0 0 1px var(--surface-raised)) drop-shadow(0 2px 3px #0000004d);position:relative}.aircraft__body{fill:var(--aircraft-body);fill-opacity:var(--aircraft-fill-opacity)}.aircraft__accent{fill:var(--aircraft-accent);fill-opacity:var(--aircraft-fill-opacity)}.aircraft__ring{border-radius:50%;position:absolute;inset:-.5rem}.aircraft[data-kind=live] .aircraft__ring{border:2px solid var(--blue);background:#ffffffbf}.aircraft[data-kind=estimated]{--aircraft-body:var(--warn);--aircraft-accent:var(--warn);--aircraft-outline:var(--warn-line);--aircraft-fill-opacity:.4}.aircraft[data-kind=estimated] .aircraft__icon,.aircraft[data-kind=last_known] .aircraft__icon{filter:none}.aircraft[data-kind=estimated] .aircraft__ring{border:2px dashed var(--warn-line);background:#f68e331f}.aircraft[data-kind=last_known]{--aircraft-body:var(--ink-soft);--aircraft-accent:var(--ink-soft);--aircraft-outline:var(--ink-soft);--aircraft-fill-opacity:.4}.aircraft[data-kind=last_known] .aircraft__ring{border:2px dotted var(--ink-soft)}.aircraft[data-kind=resting]{block-size:2rem;inline-size:2rem}
