@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800;900&family=DM+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
:root{--gold:#f4cb43;--orange:#ff732b;--ink:#101318;--panel:#171b20;--line:#ffffff16;--muted:#7f8993;--mono:'IBM Plex Mono',monospace;--sans:'DM Sans',sans-serif;--display:'Barlow Condensed',Impact,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:#f0f1e9;font-family:var(--sans);-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:disabled{cursor:wait}a{color:inherit;text-decoration:none}button{border:0}h1,h2,p{margin:0}::selection{background:var(--gold);color:var(--ink)}.masthead{height:74px;display:flex;align-items:center;padding:0 25px;justify-content:space-between;border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;align-items:center;gap:11px}.brand>span{font:800 23px/.9 var(--display);letter-spacing:.3px}.brand small{display:block;font:7px var(--mono);letter-spacing:1.1px;color:#9ba2a9;margin-top:7px}.header-status{font:9px var(--mono);letter-spacing:1px;color:#b5b9be;display:flex;gap:8px;align-items:center}.header-status i,.status-light,.radio-station i,.map-top i{width:5px;height:5px;background:var(--gold);border-radius:50%;display:inline-block;box-shadow:0 0 8px #f4cb4335}.nav-actions{display:flex;align-items:center;gap:25px}.nav-actions button{background:transparent;font:9px var(--mono);letter-spacing:.4px;padding:10px 0}.nav-actions button span{margin-left:6px}.nav-actions button:hover{color:var(--gold)}#sound{color:#929aa3}#sound[aria-pressed=true]{color:var(--gold)}.control-room{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-template-rows:minmax(max(655px,calc(100svh - 215px)),auto) minmax(98px,auto);margin:14px 16px 0;border:1px solid #ffffff20;border-radius:8px;overflow:hidden;box-shadow:0 10px 35px #0004}.radar{position:relative;overflow:hidden;background:#1c232c;isolation:isolate;border-right:1px solid #ffffff22}.map-stage{position:absolute;inset:0}.map-stage svg{width:100%;height:100%;display:block}.map-grid{position:absolute;inset:0;background-image:linear-gradient(#69778b0b 1px,transparent 1px),linear-gradient(90deg,#69778b0b 1px,transparent 1px);background-size:60px 60px;z-index:1;pointer-events:none}.radar:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#111821bc,transparent 47%,#11182130 75%,#111821c9);z-index:1}.map-top,.map-headline,.selected-flight,.map-tools,.compass,.map-bottom,.ground-alert{position:absolute;z-index:3}.map-top{top:20px;left:26px;right:26px;display:flex;align-items:center;justify-content:space-between;font:9px var(--mono);letter-spacing:1px;gap:15px}.map-top>span:first-child{display:flex;gap:8px;align-items:center}.sim-label{color:#8f9aa8;font-size:8px}.map-headline{top:61px;left:27px;pointer-events:none}.eyebrow{font:8px var(--mono);letter-spacing:1.5px;color:#bec6cd}h1{font:800 clamp(44px,4.2vw,68px)/.91 var(--display);letter-spacing:-.5px;margin:12px 0}h1 em{font-style:normal;color:var(--gold)}.map-headline p{font-size:12px;color:#9eaab6;margin-top:13px}.runway rect{fill:#41484f;stroke:#77817f;stroke-width:1}.runway-lines{fill:none;stroke:#a6b0aa;stroke-width:1.5}.taxi{fill:none;stroke:#b6a65d;stroke-width:2;opacity:.62}.map-words{font:12px var(--mono);fill:#9ba49e;text-anchor:middle}.terrain-label{font:10px var(--mono);fill:#64717c;letter-spacing:3px;opacity:.6}.plane-target{cursor:pointer;outline:none}.plane-target use{fill:var(--gold);filter:drop-shadow(0 0 5px #f4cb4322)}.plane-target.arrival use{fill:#d2dbe2}.plane-target text{font:10px var(--mono);fill:#e6ebed;letter-spacing:.5px}.plane-target rect{fill:#19202bd9;stroke:#ffffff10;stroke-width:.5}.plane-target.selected use,.plane-target:hover use{fill:#fff4bd;filter:drop-shadow(0 0 9px #f9ce4a)}.plane-target.selected rect,.plane-target:focus rect{stroke:var(--gold);stroke-width:1.4}.plane-target circle{fill:none;stroke:var(--gold);stroke-width:1;opacity:.5}.plane-target .hit{fill:transparent;stroke:none}.plane-route{fill:none;stroke:#eec454;stroke-dasharray:5 9;opacity:.26;stroke-width:1.4}.selected-flight{left:27px;bottom:57px;width:226px;background:#111820ed;border:1px solid #74849c42;border-radius:5px;padding:15px 16px;box-shadow:0 10px 30px #0003;backdrop-filter:blur(8px)}.flight-kicker{font:7px var(--mono);color:#8997a6;letter-spacing:1.2px;display:flex;align-items:center;justify-content:space-between}.flight-kicker button{background:none;color:#8793a0;font-size:20px;line-height:10px;padding:1px 0 3px 12px}.selected-flight>strong{display:flex;justify-content:space-between;align-items:center;font:700 27px var(--display);margin-top:10px;letter-spacing:1px}.selected-flight>strong span{font:20px Arial;color:var(--gold)}.flight-route{display:flex;align-items:center;justify-content:space-between;margin-top:13px;font:9px var(--mono);color:#c8d0d7}.flight-route>span{color:#5d6873;letter-spacing:3px}.selected-flight>p{font:9px/1.6 var(--mono);color:#8491a0;margin:12px 0}.flight-state{display:flex;gap:7px;align-items:center;font:8px var(--mono);color:var(--gold);padding-top:11px;border-top:1px solid #ffffff13}.flight-state i{width:4px;height:4px;background:var(--gold);border-radius:50%}.map-tools{right:18px;bottom:60px;display:flex;flex-direction:column;border:1px solid #68708070;border-radius:5px;overflow:hidden}.map-tools button{background:#141c25ed;font:21px var(--mono);width:35px;height:34px;border-bottom:1px solid #ffffff15}.map-tools button:last-child{border:0}.map-tools button:hover{background:#344050;color:var(--gold)}.compass{right:28px;top:63px;display:flex;align-items:center;flex-direction:column;gap:5px;font:9px var(--mono);color:#8895a2}.compass i{font:25px Arial;color:#ccd4d9;transform:rotate(-19deg)}.map-bottom{bottom:18px;left:26px;right:26px;display:flex;justify-content:space-between;font:7px var(--mono);letter-spacing:.5px;color:#8594a4}.legend{display:flex;gap:7px;align-items:center}.legend i{height:5px;width:5px;background:var(--gold);display:block}.legend .white{background:#d4dee9;margin-left:10px}.ground-alert{right:76px;bottom:60px;background:#f4cb43;color:#171b20;display:flex;gap:12px;align-items:center;padding:13px 16px;border-radius:3px;max-width:280px;box-shadow:0 5px 20px #0004;transition:opacity .3s,transform .3s}.ground-alert>span{font:27px Arial}.ground-alert strong{font:700 16px var(--display);letter-spacing:.4px}.ground-alert small{display:block;font:8px var(--mono);margin-top:4px}.ground-alert.hidden{opacity:0;transform:translateY(10px);pointer-events:none}.tower{background:#171c21;display:flex;flex-direction:column;padding:13px;gap:0}.camera{height:185px;position:relative;overflow:hidden;border:1px solid #ffffff25;border-radius:4px;background:#233035}.camera img{position:absolute;width:190%;height:140%;max-width:none;object-fit:cover;left:-90%;top:-6%;transition:filter .4s}.camera:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 3px,#00000018 4px),linear-gradient(0deg,#000b,transparent 50%,#0004);pointer-events:none}.camera-top,.camera-bottom{position:absolute;left:12px;right:12px;z-index:1;display:flex;justify-content:space-between}.camera-top{top:11px;font:7px var(--mono);letter-spacing:1px}.camera-top>span:first-child{display:flex;align-items:center;gap:5px}.camera-top i{width:4px;height:4px;background:#e44b43;border-radius:50%}.camera-top>span+span{color:#ff7971}.camera-bottom{bottom:12px;align-items:flex-end}.camera-bottom>span{font:700 18px var(--display);letter-spacing:.6px}.camera-bottom small{display:block;font:7px var(--mono);color:#afb9c1;margin-top:4px}.camera-bottom .camera-signal{color:#b8c99a;font-size:12px}.snack-fx{position:absolute;top:45%;right:25px;background:var(--gold);color:#111;padding:5px 9px;z-index:4;font:600 11px var(--mono);opacity:0;transform:translateY(10px);transition:all .3s}.snack-fx.show{opacity:1;transform:translateY(-15px)}.captain-quote{padding:13px 2px 15px;border-bottom:1px solid var(--line)}.captain-quote>span{font:7px var(--mono);color:#778591;letter-spacing:1.2px}.captain-quote>p{font:italic 17px/1.25 Georgia,serif;margin-top:7px;min-height:22px}.switch-panel{padding:16px 0 14px;border-bottom:1px solid var(--line)}.panel-label{font:7px var(--mono);letter-spacing:.6px;color:#969da5;display:flex;justify-content:space-between;gap:5px}.panel-label>span+span{color:var(--orange)}.mode-switch{display:flex;align-items:center;width:100%;gap:9px;background:linear-gradient(#fa823a,#ef6325);color:#27190e;padding:15px 10px;margin-top:9px;border:1px solid #ffb07390;border-radius:5px;box-shadow:0 4px 0 #9e390f,0 8px 20px #0003;transition:transform .1s,box-shadow .1s}.mode-switch:active{transform:translateY(3px);box-shadow:0 1px 0 #9e390f}.switch-icon{font:26px Arial}.switch-copy{text-align:left;flex:1}.switch-copy b{font:700 13px var(--display);letter-spacing:.3px;display:block}.switch-copy small{font:6.5px/1.5 var(--mono);display:block;margin-top:3px}.switch-track{width:38px;height:23px;border-radius:20px;background:#8c330b70;padding:3px;flex-shrink:0}.switch-track>span{display:block;width:17px;height:17px;background:#fff0d9;border-radius:50%;transform:translateX(15px);transition:transform .3s}.mode-switch[aria-pressed=false]{background:linear-gradient(#758b72,#50684d);border-color:#97ae93;box-shadow:0 4px 0 #2f452c;color:#edf3e9}.mode-switch[aria-pressed=false] .switch-track>span{transform:translateX(0)}.mode-caption{font:7px var(--mono);letter-spacing:.35px;color:#89949e;margin-top:14px;display:flex;align-items:center;gap:5px;justify-content:center}.mode-caption>span{color:#d6dce1}.mode-caption i{display:block;width:2px;height:2px;background:#727b85;margin:0 7px}.desk-tools{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:14px 0}.desk-tools button{position:relative;border:1px solid #ffffff20;background:#20272e;text-align:left;font:500 8px var(--mono);padding:12px 9px;transition:background .2s}.desk-tools button:hover{background:#303940;border-color:#c0a254}.desk-tools button>span{font:17px Arial;display:block;color:var(--gold);margin-bottom:7px}.desk-tools small{display:block;font:6px var(--mono);color:#85929d;margin-top:6px}.printer{position:relative;height:0;overflow:hidden;transition:height .3s}.printer.open{height:137px;margin-bottom:12px}.printer-slot{background:#070a0d;height:7px;border-top:2px solid #303b44;border-radius:3px;position:relative;z-index:1}.flight-strip{background:#e8e5d2;color:#202722;padding:13px 14px 12px;margin:0 9px;transform:translateY(-120%);transition:transform .7s cubic-bezier(.2,.5,.3,1);box-shadow:0 4px 10px #0004}.printer.open .flight-strip{transform:translateY(0)}.flight-strip>span{font:6px var(--mono);letter-spacing:.5px}.flight-strip strong{font:800 25px var(--display);display:block;margin-top:7px;color:#b54029}.flight-strip p{font:9px var(--mono);margin:3px 0 7px}.flight-strip small{font:6px var(--mono);color:#6c7264}.restart{width:100%;display:flex;align-items:center;justify-content:space-between;gap:9px;background:#10151b;border:1px solid #ffffff1f;padding:12px;font:8px var(--mono);letter-spacing:.5px;position:relative;overflow:hidden;margin-top:auto;min-height:38px}.restart>span{z-index:1}.restart>span:first-child{font:18px Arial;color:#a1aeb9}.restart>i{position:absolute;left:0;top:0;bottom:0;background:#f4cb4325;width:0%;transition:width .4s}.radio{grid-column:1/-1;display:flex;align-items:center;background:var(--gold);color:#1c231c;gap:19px;padding:18px 23px;border-top:1px solid #6a531d}.radio-play{width:40px;height:40px;border-radius:50%;background:#20261e;color:var(--gold);flex-shrink:0;font:17px Arial;display:grid;place-items:center}.radio-play[aria-pressed=true]{background:#454728}.radio-station{min-width:160px}.radio-station b{font:700 18px var(--display);letter-spacing:.4px}.radio-station b span{font-weight:600;opacity:.65}.radio-station small{display:flex;align-items:center;font:6.5px var(--mono);letter-spacing:.2px;margin-top:7px;gap:5px}.radio-station i{background:#334a26}.wave{display:flex;align-items:center;gap:3px;height:40px;width:110px;flex-shrink:0;opacity:.55}.wave i{height:12px;width:2px;background:#26311c;animation:wave 1.6s ease-in-out infinite alternate;animation-play-state:paused}.wave.playing i{animation-play-state:running}@keyframes wave{to{height:32px;opacity:.4}}.radio-transcript{border-left:1px solid #27361d3d;padding-left:23px;flex:1}.radio-transcript>span{font:7px var(--mono);letter-spacing:.5px;opacity:.6}.radio-transcript p{font:600 15px/1.3 var(--sans);margin-top:6px;max-width:600px}.radio-next{background:transparent;font:24px Arial}.radio-tag{font:6.5px/1.7 var(--mono);letter-spacing:.5px;opacity:.65;border-left:1px solid #27361d3d;padding-left:17px}.statusbar{display:flex;justify-content:space-between;align-items:center;padding:17px 24px;gap:12px;font:7px var(--mono);color:#8a959f}.statusbar>div{display:flex;align-items:center;gap:8px}.statusbar b{font-weight:400}.statusbar .utc{margin-left:15px;color:#697580}.statusbar nav{display:flex;align-items:center;gap:25px}.statusbar button{background:transparent;color:#b4bcc3;font:7px var(--mono);padding:5px 0}.statusbar button:hover{color:var(--gold)}.statusbar button span{font-size:6px;color:var(--gold);margin-left:3px}.toast{position:fixed;bottom:65px;left:50%;transform:translate(-50%,15px);opacity:0;z-index:10;pointer-events:none;background:#ede8d7;color:#20251e;font:11px/1.6 var(--mono);padding:16px 22px;border-left:4px solid var(--orange);box-shadow:0 10px 40px #0008;transition:all .2s;max-width:90vw;width:max-content}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{background:#181f26;color:#e9ede6;border:1px solid #73818a65;border-radius:7px;width:min(540px,calc(100% - 32px));padding:34px;box-shadow:0 25px 100px #000a}dialog::backdrop{background:#05090bc9;backdrop-filter:blur(7px)}.dialog-close{position:absolute;right:15px;top:12px;background:none;color:#aab5bc;font-size:25px}.modal-kicker{font:8px var(--mono);color:var(--gold);letter-spacing:2px;margin:7px 0 20px}dialog h2{font:800 45px/.95 var(--display);margin:15px 0 20px}dialog p{font:14px/1.8 var(--sans);color:#b5c0c6;margin-bottom:16px}dialog .modal-small{font:9px/1.7 var(--mono);color:#788892}dialog a,.modal-button{display:inline-block;background:var(--gold);color:#1b231b;font:600 10px var(--mono);padding:14px 17px;margin:8px 0}dialog .log-entry{border-top:1px solid #ffffff1c;padding:15px 0;display:grid;grid-template-columns:50px 1fr;gap:12px}dialog .log-entry time{font:8px var(--mono);color:var(--gold);margin-top:4px}dialog .log-entry p{font-size:12px;margin:0}.diagnostic-row{display:flex;justify-content:space-between;gap:12px;font:10px var(--mono);padding:15px 0;border-top:1px solid #ffffff1c}.diagnostic-row b{color:var(--gold)}.report-card{background:#eae6d5;color:#232821;padding:25px;border-top:5px solid var(--orange);margin-top:15px}.report-card h3{font:800 35px/.95 var(--display);margin:0 0 15px}.report-card p{font:10px/1.8 var(--mono);color:#4b5346}.report-card .stamp{color:#ad3c28;border:2px solid;padding:8px 12px;display:inline-block;transform:rotate(-5deg);font:800 21px var(--display);margin:10px 0}.report-card small{font:8px var(--mono);display:block;margin-top:15px}.hint-pulse{animation:hint 2s ease-in-out 2}@keyframes hint{50%{box-shadow:0 0 0 6px #ff732b23}}
@media(min-width:1600px){.control-room{grid-template-columns:minmax(0,1fr) 380px}.camera{height:220px}.tower{padding:16px}.captain-quote{padding:18px 2px}.desk-tools button{padding:17px 12px;font-size:9px}.switch-panel{padding:22px 0}.mode-switch{padding:20px 12px}.map-headline{top:70px;left:38px}h1{font-size:78px}.map-headline p{font-size:14px}.selected-flight{width:245px}.radio-transcript p{font-size:18px}}
@media(max-width:1150px){.control-room{grid-template-columns:minmax(0,1fr) 300px}.tower{padding:10px}.camera{height:165px}.header-status{display:none}.ground-alert{bottom:280px;right:20px;max-width:220px;padding:10px}.ground-alert small{font-size:7px}.ground-alert strong{font-size:14px}.ground-alert>span{font-size:23px}.map-top{left:20px;right:20px;font-size:8px}.sim-label{font-size:6px}.map-headline{left:20px}h1{font-size:51px}.map-headline p{max-width:250px;font-size:11px;line-height:1.5}.radio{gap:15px;padding:15px 18px}.wave{width:65px;overflow:hidden}.radio-station{min-width:140px}.radio-transcript p{font-size:13px}.radio-tag{display:none}.switch-copy b{font-size:12px}.switch-copy small{font-size:6px}.switch-icon{font-size:22px}.switch-track{width:34px;height:21px}.switch-track>span{height:15px;width:15px;transform:translateX(13px)}.selected-flight{left:20px;width:210px}.statusbar nav{gap:15px}.statusbar .utc{display:none}}
@media(max-width:760px){.masthead{height:65px;padding:0 15px;gap:10px}.brand>span{font-size:21px}.brand small{font-size:5.5px;letter-spacing:.7px}.brand img{width:29px;height:29px}.nav-actions{gap:12px}.nav-actions button{font-size:7px}button[data-modal=origin]{font-size:0}.nav-actions button[data-modal=origin]>span{font-size:17px}.control-room{display:flex;flex-direction:column;margin:8px 8px 0;border-radius:5px}.radar{height:690px;border-right:0;border-bottom:1px solid #ffffff26;flex-shrink:0}.map-top{top:17px;left:17px;right:17px;font-size:7px;letter-spacing:.4px}.sim-label{font-size:5.5px;max-width:100px;text-align:right;line-height:1.6}.map-headline{left:18px;top:53px}.eyebrow{font-size:7px;letter-spacing:.9px}h1{font-size:49px;margin:12px 0;line-height:.92}.map-headline p{font-size:11px;max-width:280px}.map-stage{inset:110px -120px 0 -155px}.compass{top:201px;right:24px}.selected-flight{bottom:51px;left:17px;width:185px;padding:12px}.selected-flight>strong{font-size:24px}.selected-flight>p{font-size:8px;margin:9px 0}.flight-route{font-size:8px}.flight-kicker{font-size:6px}.flight-state{font-size:7px}.ground-alert{bottom:268px;right:17px;max-width:226px}.ground-alert small{font-size:7px}.map-bottom{left:17px;right:17px;font-size:5.5px;bottom:17px;gap:10px}.legend{gap:5px}.legend .white{margin-left:5px}#map-scale{max-width:85px;line-height:1.6;text-align:right}.map-tools{right:17px;bottom:64px}.map-tools button{height:32px;width:32px}.tower{padding:15px;display:grid;grid-template-columns:1fr 1fr;gap:0 13px}.camera{height:190px;grid-column:1/-1}.camera img{width:150%;height:180%;left:-50%;top:-23%}.camera-top{font-size:8px}.camera-bottom>span{font-size:22px}.camera-bottom small{font-size:8px}.captain-quote{grid-column:1/-1;padding:15px 0}.captain-quote>p{font-size:20px}.switch-panel{grid-column:1/-1;padding:18px 0}.panel-label{font-size:8px}.mode-switch{padding:18px 13px;gap:12px}.switch-icon{font-size:29px}.switch-copy b{font-size:17px}.switch-copy small{font-size:7px}.switch-track{width:43px;height:25px}.switch-track>span{width:19px;height:19px;transform:translateX(18px)}.mode-caption{font-size:8px;margin-top:17px}.desk-tools{grid-column:1/-1;gap:10px;padding:17px 0}.desk-tools button{font-size:9px;padding:15px 12px}.desk-tools small{font-size:7px}.desk-tools button>span{font-size:21px}.printer{grid-column:1/-1}.restart{grid-column:1/-1;font-size:9px;padding:16px;min-height:46px}.radio{order:0;display:grid;grid-template-columns:35px 1fr 25px;gap:12px;padding:18px 15px}.radio-play{height:34px;width:34px;font-size:14px}.radio-station b{font-size:20px}.radio-station small{font-size:7px}.wave{display:none}.radio-transcript{grid-row:2;grid-column:1/-1;border-left:0;border-top:1px solid #27361d3d;padding:13px 0 0;min-height:65px}.radio-transcript p{font-size:14px}.radio-next{grid-column:3;grid-row:1}.statusbar{padding:17px 15px;flex-direction:column;align-items:stretch;gap:16px;font-size:6px}.statusbar nav{gap:12px;justify-content:space-between}.statusbar button{font-size:6px}.statusbar>div{justify-content:center}.toast{bottom:25px;padding:14px 17px;font-size:10px;width:90vw}dialog{padding:27px 22px}dialog h2{font-size:39px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.plane-target .selection-ring{visibility:hidden}.plane-target.selected .selection-ring{visibility:visible}.plane-target .hit{fill:transparent;stroke:none;opacity:1}.switch-icon svg,.ground-alert>span svg{height:28px;width:26px;fill:currentColor;display:block}.desk-tools button>span svg{height:20px;width:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.radio-play{font-family:var(--mono)}
@media(max-width:760px){.radio{order:1}.tower{order:2}}

/* Keep the control desk readable when quotes wrap or the printer opens. */
.tower{min-width:0}
.tower>*{flex-shrink:0;min-width:0}
.desk-tools{grid-template-columns:repeat(2,minmax(0,1fr))}
.switch-copy{min-width:0}
.printer.open{height:auto;min-height:137px;padding-bottom:12px}
.flight-strip{overflow-wrap:anywhere}
.restart{min-height:48px}
@media(min-width:761px){.camera{flex-basis:auto}.radar{min-height:655px}}

/* Show the captain from cap to feet; reserve clear space for camera labels. */
.camera{height:auto;aspect-ratio:1/1}
.camera #captain-image{width:100%!important;height:calc(100% - 68px)!important;left:0!important;top:24px!important;object-fit:cover!important;object-position:right top}
.camera:after{background:repeating-linear-gradient(0deg,transparent,transparent 3px,#0000000a 4px)}
.camera-top{top:9px}
.camera-bottom{bottom:10px}
.camera #captain-image[src$="lounge.webp"]{object-position:left top}
