
:root{color-scheme:dark;--bg:#07130f;--panel:#10221a;--line:#29483a;--green:#b0f4c2;--muted:#91a99b;--amber:#f2cb85;--red:#ff998c}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:#e7f0e9;font:13px system-ui,sans-serif}button,select{font:inherit;color:inherit;touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:5px;background:#183025}button:active{background:#31513c}button:focus-visible,select:focus-visible{outline:2px solid var(--amber);outline-offset:1px}button:disabled{opacity:.45;cursor:default}button[hidden],[hidden]{display:none!important}h1,h2,p{margin:0}small,.muted{color:var(--muted)}.eyebrow{font:10px ui-monospace,monospace;letter-spacing:1.5px;color:var(--green)}
#app{height:100dvh;max-width:1500px;margin:auto;display:grid;grid-template-rows:58px minmax(0,1fr)28px clamp(218px,32dvh,250px);grid-template-columns:minmax(0,1fr);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overflow:hidden}
header{min-width:0;border-bottom:1px solid var(--line);padding:4px 9px;display:grid;grid-template-rows:28px 21px;gap:1px}#topline{display:flex;align-items:center;justify-content:space-between;gap:7px;min-width:0}.brand{font-weight:800;font-size:13px;letter-spacing:2px;white-space:nowrap}.brand b{color:var(--green)}.top-actions{display:flex;gap:4px;flex-shrink:0}.top-actions button{height:27px;min-width:27px;padding:3px 6px;font:9px ui-monospace,monospace}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;align-items:center}.stat{min-width:0;display:flex;gap:4px;align-items:baseline;white-space:nowrap}.stat label{color:var(--muted);font:8px ui-monospace,monospace}.stat strong{font:12px ui-monospace,monospace;color:var(--green)}
.workspace{position:relative;min-height:0;min-width:0;display:grid;grid-template-rows:19px minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow:hidden}#map-caption{display:flex;justify-content:space-between;gap:8px;padding:3px 9px 1px;color:var(--muted);font:9px ui-monospace,monospace;white-space:nowrap;overflow:hidden}#map-caption span{overflow:hidden;text-overflow:ellipsis}#status{color:var(--green);text-align:right}#scope{position:relative;min-height:0;min-width:0;grid-row:2;overflow:hidden;background:#06160e}canvas{display:block;width:100%;height:100%;touch-action:none}#strips{display:none;position:absolute;right:0;top:19px;bottom:0;width:140px;z-index:5;overflow:auto;padding:9px;background:#0d2019f5;border-left:1px solid var(--line)}.show-strips #strips{display:block}#radar-tools{display:none;position:absolute;right:8px;top:22px;z-index:6;padding:7px;gap:5px;background:#152d23;border:1px solid #64816b;border-radius:5px;box-shadow:0 6px 24px #0008}.view-open #radar-tools{display:flex}#radar-tools button{padding:8px;min-height:36px;font:10px ui-monospace,monospace}#radar-tools .active{border-color:var(--amber);color:var(--amber)}.section-title{font:10px ui-monospace,monospace;color:var(--muted);letter-spacing:1px;display:flex;justify-content:space-between;margin-bottom:8px}.flight{display:block;width:100%;text-align:left;padding:9px 6px;margin-bottom:6px;border-left:3px solid #5e8b6a}.flight.selected{border-color:var(--green);background:#264531}.flight.emergency{border-left-color:var(--amber)}.flight .row{display:flex;justify-content:space-between;gap:4px;flex-wrap:wrap}.flight b{font:12px ui-monospace,monospace;color:var(--green)}.flight .tag{font-size:8px;color:var(--amber)}.flight small{display:block;margin-top:5px;font:9px ui-monospace,monospace;line-height:1.4}
#operation-bar{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:1px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--line);min-width:0;overflow:hidden}#operation-bar>button{border:0;border-radius:0;text-align:left;padding:3px 8px;font:9px ui-monospace,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#0c2118;color:var(--green)}#runway-status.busy{color:var(--amber)}#runway-status.closed{color:var(--red);background:#2d1914}#operation-bar #audio-state{text-align:right;color:var(--muted)}#operation-bar #outcome{position:absolute;inset:0;width:100%;background:#193a25;color:var(--green);border-left:3px solid var(--green);text-align:left;z-index:2}#operation-bar #outcome.bad{background:#38201a;color:var(--red);border-color:var(--red)}#operation-bar #outcome.caution{background:#302719;color:var(--amber);border-color:var(--amber)}#banner{display:none!important}
#dock{min-height:0;display:grid;grid-template-rows:29px minmax(0,1fr);gap:5px;padding:5px 8px 7px;background:var(--panel);overflow:hidden}#dock-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}#dock-tabs button{font:10px ui-monospace,monospace;min-height:29px;padding:4px;white-space:nowrap}#dock-tabs button.active{color:var(--green);border-color:#83af8c;background:#254632}#dock-tabs button.pending{color:var(--amber);border-color:#a3844d}
#radio-panel,#control-panel,#runway-panel{min-width:0;min-height:0;overflow:hidden}#radio-panel{display:grid;grid-template-rows:23px 13px minmax(30px,1fr)12px 2px 60px;gap:3px}#control-panel,#runway-panel{display:none}.controls-open #radio-panel,.runway-open #radio-panel{display:none}.controls-open #control-panel{display:grid}.runway-open #control-panel{display:none}.runway-open #runway-panel{display:grid}
#callbar{display:flex;align-items:center;gap:5px;min-width:0}.recipient{font:700 11px ui-monospace,monospace;color:var(--green);line-height:1.3;min-width:0}.recipient#radio-recipient{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#standby-call,#queue{font:9px ui-monospace,monospace;min-height:23px;padding:3px 5px;flex-shrink:0;color:var(--amber)}#callsign{font:9px ui-monospace,monospace;color:var(--amber);line-height:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#message{font-size:13px;line-height:1.35;overflow:auto;min-height:0;overscroll-behavior:contain}#context{font:9px ui-monospace,monospace;line-height:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#timer{height:2px;background:#2c4635}#timer i{display:block;height:100%;background:var(--amber)}.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;min-height:0}.choices.three{grid-template-columns:repeat(3,minmax(0,1fr))}.choices button{padding:4px 6px;text-align:left;min-width:0;min-height:52px;background:#1a3827;border-color:#537d5d}.choices button strong{display:block;font-size:11px;line-height:1.15;color:var(--green)}.choices button small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:22px;font-size:9px;line-height:1.2;color:#a9bcac;margin-top:3px}.choices button.caution-action{border-color:#8a6c43;background:#2d2518}.choices button.caution-action strong{color:var(--amber)}
#control-panel{grid-template-rows:26px 12px 42px 36px 14px 24px;gap:3px}#quick-heading{display:flex;align-items:center;gap:6px;min-width:0}#quick-heading label{font:9px ui-monospace,monospace;color:var(--muted)}#quick-flight{width:106px;flex-shrink:0;border:1px solid #6b9c75;border-radius:4px;background:#21462e;color:var(--green);padding:4px;font:12px ui-monospace,monospace}#quick-alt{flex:1;font:9px ui-monospace,monospace;text-align:right;white-space:nowrap;overflow:hidden}#safety-interrupt{min-height:26px;font:9px ui-monospace,monospace;padding:4px 6px;flex-shrink:0;color:var(--amber);border-color:#826841}#safety-interrupt.armed{background:#692b20;border-color:var(--red);color:white}#order-status{font:9px ui-monospace,monospace;line-height:14px;color:var(--amber);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#quick-buttons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}#quick-buttons button{min-height:42px;font:11px ui-monospace,monospace;padding:4px 1px;background:#254632}.commands{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.commands button{min-width:0;min-height:36px;font:9px ui-monospace,monospace;padding:3px 1px}.commands button[data-cmd=divert]{color:var(--amber);border-color:#846944}#quick-buttons button.queued,.commands button.queued{border-color:var(--amber);color:var(--amber);background:#332b18}#flight-task{font-size:10px;line-height:15px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}#incoming-control,#incoming-runway{width:100%;font:10px ui-monospace,monospace;min-height:23px;padding:3px 6px;color:var(--amber);border-color:#8f7346;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#command-target,#selected-title,#selected-info,#flight-choices,#last-log{display:none}
#runway-panel{grid-template-rows:20px minmax(0,1fr)42px 28px 24px;gap:5px}#runway-detail{font:12px ui-monospace,monospace;color:var(--amber);line-height:1.4;overflow:auto}#inspect-runway{min-height:42px;font-weight:700;border-color:#7fa184;color:var(--green)}#runway-instruction{font-size:10px;line-height:1.3;color:var(--muted);overflow:auto}
.overlay{position:fixed;inset:0;z-index:20;background:#030b08ed;display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto}.modal{width:100%;max-width:620px;max-height:100%;overflow:auto;border:1px solid #486c54;border-radius:7px;background:linear-gradient(145deg,#172d21,#0a1812);padding:25px;box-shadow:0 25px 90px #0009}.modal h1{font-size:clamp(34px,7vw,62px);line-height:1;letter-spacing:-2px;margin:14px 0}.modal h1 span{color:var(--green)}.modal h2{font-size:26px;margin:12px 0}.modal p{color:#afc0b3;font-size:13px;line-height:1.55;margin:12px 0}.modal .lead{font-size:17px;color:#e0eee3}.modal button.primary{width:100%;padding:14px;background:var(--green);color:#0d2616;border:0;font-weight:800;margin-top:10px}.modal .secondary{width:100%;padding:10px;margin-top:7px}.brief-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:15px 0}.brief-grid div{padding:10px;border:1px solid var(--line);font-size:11px;line-height:1.5}.brief-grid b{display:block;color:var(--amber);font:10px ui-monospace,monospace;margin-bottom:4px}.report{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:15px 0}.report div{background:#091a11;padding:12px 7px;text-align:center}.report strong{display:block;font-size:25px;color:var(--green)}.report small{font-size:10px}#log-list{font:11px ui-monospace,monospace;line-height:1.6;max-height:190px;overflow:auto;color:var(--muted)}.log-bad{color:var(--red)}.log-good{color:var(--green)}#notice-copy{white-space:pre-line}#toast{position:fixed;bottom:10px;left:50%;transform:translateX(-50%);max-width:94%;padding:8px 12px;z-index:30;background:#27301d;border:1px solid #92834b;border-radius:5px;color:var(--amber);font-size:11px;pointer-events:none;opacity:0}#toast.show{opacity:1}.warn{color:var(--red)!important}
@media(max-height:600px) and (max-width:899px){#app{grid-template-rows:50px minmax(0,1fr)26px 205px}header{grid-template-rows:24px 17px;padding:3px 7px}.top-actions button{height:24px}.stat strong{font-size:11px}#dock{padding:4px 7px;grid-template-rows:26px minmax(0,1fr);gap:4px}#dock-tabs button{min-height:26px}#radio-panel{grid-template-rows:21px 12px minmax(24px,1fr)11px 2px 54px;gap:2px}.choices button{min-height:50px}.choices button strong{font-size:10px}.choices button small{font-size:8.5px;line-height:1.1;max-height:19px}#control-panel{grid-template-rows:24px 12px 40px 36px 14px minmax(0,1fr);gap:3px}#quick-buttons button{min-height:40px}.commands button{min-height:36px}}
@media(min-width:900px){#app{grid-template-columns:minmax(0,1fr)390px;grid-template-rows:58px minmax(0,1fr)32px}header{grid-column:1/-1}.workspace{grid-column:1;grid-row:2}#operation-bar{grid-column:1;grid-row:3}#dock{grid-column:2;grid-row:2/4;border-left:1px solid var(--line);grid-template-rows:34px minmax(0,1fr);padding:10px;gap:10px}#radio-panel{grid-template-rows:28px 20px minmax(70px,1fr)30px 3px 100px;gap:7px}#message{font-size:16px;line-height:1.6}#context{white-space:normal;line-height:1.4;font-size:11px}.choices button strong{font-size:12px}.choices button small{font-size:10px}#control-panel{grid-template-rows:34px 22px 54px 50px minmax(55px,1fr)36px;gap:10px}#flight-task{white-space:normal;font-size:14px;line-height:1.6}#quick-buttons button{font-size:12px}.commands button{font-size:10px}#runway-panel{grid-template-rows:28px minmax(0,1fr)50px 75px 36px;gap:10px}}

.scenario-label{display:block;font:10px ui-monospace,monospace;color:var(--amber);letter-spacing:1px;margin:18px 0 7px}#scenario-select{width:100%;padding:12px;background:#10291c;border:1px solid #537d5d;border-radius:5px;color:var(--green);font:14px ui-monospace,monospace}#pressure{position:absolute;left:9px;top:24px;z-index:4;pointer-events:none;font:10px ui-monospace,monospace;color:var(--amber);background:#07130fd9;padding:5px 7px;border:1px solid #29483a;border-radius:4px}

#shift-seed{width:100%;padding:9px;color:var(--green);background:#10291c;border:1px solid #537d5d;border-radius:5px;font:13px ui-monospace,monospace}

#scope{display:grid;grid-template-rows:minmax(0,1fr) auto}
#scope canvas{min-height:0}
#pressure{color:#d2e8db;letter-spacing:.07em;border-left:2px solid #83af8c}
#weather-strip{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 9px;border-top:1px solid #29483a;background:#0b1c16;color:#c6dfce;font:10px ui-monospace,monospace}
#weather-status{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.weather-legend{display:flex;gap:8px;flex:none;color:#b5c8bd}
.weather-legend span::before{display:inline-block;width:7px;height:7px;margin-right:4px;content:'';background:var(--echo)}
.weather-legend .moderate{--echo:#20875b}.weather-legend .heavy{--echo:#c2a237}.weather-legend .extreme{--echo:#d84139}
#reply-clock{color:#ffda99;border:1px solid #765634;border-radius:3px;background:#342919;padding:2px 5px;font:700 12px ui-monospace,monospace;font-variant-numeric:tabular-nums}
#reply-clock.critical,#weather-status.critical{color:#ff9380}
#reply-clock.critical{border-color:#bf6553;background:#3b211c}
.reply-critical #timer i{background:#ff9380}
@keyframes alertPulse{0%,100%{box-shadow:inset 0 0 0 1px #ff5e4d66,inset 0 0 22px #ff3b2824}50%{box-shadow:inset 0 0 0 2px #ff5e4dee,inset 0 0 38px #ff3b2855}}
.conflict-alert #scope{animation:alertPulse .65s infinite}
.bad-flash #scope{box-shadow:inset 0 0 0 2px #ff6e59,inset 0 0 42px #ff402b4d}
.bad-flash #dock{border-top:1px solid #ff6e59}
#operation-bar #audio-state.ack{color:var(--green);background:#123121}
#operation-bar #audio-state.tx{color:var(--amber);background:#292214}
#order-status.ack{color:var(--green)}
