:root{color-scheme:dark;--bg:#050e1a;--panel:#0d1b2d;--panel2:#112238;--line:#234562;--line2:#1a3450;--fg:#eaf3ff;--dim:#91a8c1;--cyan:#48d7e8;--gold:#e5bd6a;--green:#4bdfa8;--red:#fa7f8a;--warn:#f2c978}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Segoe UI,Inter,Arial,sans-serif;background:var(--bg);color:var(--fg)}body{background-image:radial-gradient(ellipse at top left,#12274180,transparent 58%),linear-gradient(90deg,#ffffff03 1px,transparent 1px);background-size:auto,56px 56px}button{font:inherit}.app-shell{max-width:2160px;margin:0 auto;padding:12px 18px 0}
.masthead{height:92px;border:1px solid var(--line);border-top:2px solid #427da0;background:linear-gradient(115deg,#10273e,#0a1829 75%);border-radius:12px;display:flex;align-items:center;justify-content:space-between;padding:11px 20px;gap:20px}
.identity{display:flex;align-items:center;gap:15px;min-width:0}.brand-logo{width:66px;height:66px;border-radius:50%;border:1px solid #6b8dac66;background:#0b192a;display:grid;place-items:center;flex-shrink:0;overflow:hidden;position:relative}.brand-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#0b1825;z-index:1}.brand-logo img[hidden]{display:none}.logo-fallback{font-size:15px;font-weight:850;color:var(--gold);letter-spacing:-.07em}.logo-fallback span{font-size:19px}
.overline,.eyebrow{font-size:10px;color:var(--cyan);letter-spacing:.16em;font-weight:750}.slash{color:#64819f;margin:0 6px}.masthead h1{font-size:25px;margin:3px 0 1px;line-height:1.15;letter-spacing:.015em}.masthead h1 em{font-style:normal;color:var(--gold)}.subline{font-size:11px;color:var(--dim);letter-spacing:.045em}.subline span{color:#50718f;padding:0 6px}.masthead-right{display:flex;align-items:center;gap:20px;flex-shrink:0}.link-health{display:flex;align-items:center;gap:9px;color:#b8ccdf;font-size:12px}.link-health small{font-size:11px;color:var(--gold);padding-left:8px;font-variant-numeric:tabular-nums}.light,.service-light,.blink-dot,.note-light{width:7px;height:7px;border-radius:100%;display:inline-block;background:#70859e;flex-shrink:0}.light.up,.service-light.up{background:var(--green);box-shadow:0 0 12px #4bdfa87f}.light.down,.service-light.down{background:var(--red)}.service-light.warn,.light.warn{background:var(--warn)}.bot-logo{width:65px;height:65px;border:1px solid #6685a35b;border-radius:9px;display:grid;place-items:center;position:relative;background:#10263e;overflow:hidden}.bot-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#10263e;z-index:1}.bot-logo img[hidden]{display:none}.bot-fallback{text-align:center;font-size:11px;font-weight:900;line-height:1.1;letter-spacing:.07em;color:var(--gold)}
.services{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0}.service{display:flex;align-items:center;gap:9px;min-height:46px;padding:7px 14px;border:1px solid var(--line2);background:linear-gradient(110deg,#10243a,#0b1a2b);border-radius:7px;min-width:0}.service-label{font-weight:750;color:#9db9d4;font-size:10px;letter-spacing:.085em;white-space:nowrap}.service strong{margin-left:auto;font-size:12px;color:#d9ecff;white-space:nowrap;font-weight:650}.service strong.off{color:#e79aa5}.service strong.unknown{color:#9db3c6}
.operations-layout{display:grid;grid-template-columns:minmax(0,3.1fr) minmax(270px,1fr);gap:12px;align-items:stretch;min-height:calc(100vh - 201px)}.map-panel,.intel-panel{border:1px solid var(--line);background:linear-gradient(120deg,#102239,#0a1729);border-radius:11px;overflow:hidden;min-width:0}.map-panel{display:flex;flex-direction:column;min-height:610px}.panel-top{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:16px 17px 13px;border-bottom:1px solid var(--line2);min-height:74px}.panel-top h2{margin:5px 0 0;font-size:17px;letter-spacing:.01em}.map-top{padding:12px 17px;min-height:68px}.map-top h2{font-size:19px}.tiny-muted{font-weight:400;color:#7f99b3;font-size:12px}.map-heading-right{display:flex;align-items:center;gap:13px}.map-data-label{font-size:11px;color:var(--gold);font-weight:650}.view-live{font-size:10px;letter-spacing:.09em;font-weight:750;color:#bbd0e5;white-space:nowrap}.blink-dot{background:var(--green);margin-right:6px}
.map-viewport{position:relative;isolation:isolate;flex:1;min-height:510px;overflow:hidden;background:#101f2e;touch-action:none;cursor:grab}.map-viewport:active{cursor:grabbing}.map-tiles{position:absolute;inset:0;z-index:-2;overflow:hidden}.tile{position:absolute;width:256px;height:256px;user-select:none;pointer-events:none;filter:grayscale(.23) brightness(.64) contrast(1.19) saturate(.67)}.map-tiles:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(150deg,#01122233,#092b4666);z-index:1}.map-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(#61c8ec0b 1px,transparent 1px),linear-gradient(90deg,#61c8ec0b 1px,transparent 1px);background-size:76px 76px;z-index:0}.map-planes{position:absolute;inset:0;z-index:2;pointer-events:none}.plane-pin{position:absolute;transform:translate(-50%,-50%);border:1px solid #addff5;background:#164467ee;color:#fff;padding:5px 7px;border-radius:8px;font-size:12px;white-space:nowrap;box-shadow:0 4px 16px #0009;pointer-events:auto}.plane-pin.red{background:#732b37ee;border-color:#fc8e9c}.plane-pin.blue{background:#164467ee}.plane-pin small{display:block;color:#b7d4e6;font-size:9px}.plane-pin:before{content:"✈";color:var(--gold);margin-right:5px;font-size:15px}
.map-overlay-head{position:absolute;left:15px;top:15px;z-index:2;display:flex;flex-direction:column;gap:4px;max-width:70%;border:1px solid #68b6d36e;background:#071a2bdc;padding:12px 16px;border-radius:9px;box-shadow:0 4px 28px #0007;pointer-events:none}.map-overlay-head strong{font-size:18px;letter-spacing:.06em}.map-overlay-head span:last-child{font-size:11px;color:#a9c1d5;font-variant-numeric:tabular-nums}.overlay-kicker{font-size:9px;letter-spacing:.18em;color:var(--cyan);font-weight:850}.map-overlay-bottom{position:absolute;left:15px;bottom:30px;z-index:2;display:flex;flex-direction:column;gap:3px;padding:9px 12px;border:1px solid #45718f88;background:#071a2be9;border-radius:8px;font-size:11px;color:#cddded;pointer-events:none}.map-signal{color:var(--gold);font-weight:750}.map-timing{color:var(--dim)}.map-controls{position:absolute;right:15px;top:15px;z-index:3;display:flex;flex-direction:column;gap:5px}.map-controls button{width:38px;height:38px;border:1px solid #537f9e;background:#092135ea;color:#eef5ff;border-radius:7px;font-size:22px;cursor:pointer}.map-controls button:hover{background:#17476a}.osm-credit{position:absolute;right:6px;bottom:4px;z-index:3;font-size:10px;color:#f2f7fa;background:#12202aaf;padding:3px 5px;border-radius:3px}.osm-credit a{color:#b7e5ff}.map-footer{background:#091827;color:#97b0c7;display:flex;justify-content:space-between;gap:12px;font-size:10px;padding:10px 16px;letter-spacing:.01em}.map-footer>span:last-child{white-space:nowrap}.cyan{color:var(--cyan)}
.intel-column{display:flex;flex-direction:column;gap:12px;min-width:0}.intel-panel{flex:0 0 auto}.intel-panel .panel-top{min-height:68px;padding:11px 14px}.intel-panel .panel-top h2{font-size:15px}.feed-tag{border:1px solid #3c5e7a;border-radius:14px;padding:5px 8px;color:#e6c57e;font-size:10px;white-space:nowrap}.feed-tag.up{color:var(--green);border-color:#376a65}.mission-data{padding:3px 15px 12px;display:grid;grid-template-columns:1fr 1fr;column-gap:16px}.datum{display:flex;flex-direction:column;gap:6px;border-bottom:1px solid #29415b;padding:13px 0 10px;min-width:0}.datum span{font-weight:800;letter-spacing:.11em;font-size:9px;color:#8cb0ce}.datum strong{font-weight:640;font-size:14px;overflow-wrap:anywhere}.datum.mission-field{grid-column:span 2}.datum.mission-field strong{font-size:16px}.datum:nth-last-child(-n+2){border-bottom:0}.datum .large-count{font-size:25px;color:var(--gold);line-height:1}
.pilots-panel{flex:1;min-height:250px;display:flex;flex-direction:column}.roster{min-height:140px;overflow-y:auto;flex:1;padding:4px 0}.empty-roster{margin:14px;color:#93abc4;font-size:12px;line-height:1.6}.roster-row{border-bottom:1px solid #1d3b57;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.roster-row strong{font-size:12px}.roster-row span{font-size:10px;color:#92acc7}.roster-row.red{border-left:3px solid var(--red)}.roster-row.blue{border-left:3px solid #3caef9}.roster-footer{border-top:1px solid var(--line2);padding:10px 14px;color:#829db6;font-size:10px;line-height:1.5}.count-pill{border-radius:16px;background:#243e56;border:1px solid #3e607d;color:var(--gold);font-weight:800;padding:3px 10px;font-size:11px}.tiny-note{border:1px solid #294b67;border-radius:8px;background:#0b1e31;display:flex;align-items:start;gap:9px;color:#a8bdce;font-size:11px;padding:11px 13px;line-height:1.45}.tiny-note .note-light{background:var(--cyan);margin-top:4px}
.site-footer{padding:10px 2px;color:#708ba4;font-size:10px;letter-spacing:.08em;display:flex;justify-content:space-between;gap:10px}.site-footer b{color:#90b8d2}.site-footer .sep{padding:0 7px;color:#405d74}
@media(max-width:1080px){.operations-layout{grid-template-columns:minmax(0,2fr) minmax(260px,1fr)}.service{padding:7px 8px;gap:7px}.service-label{font-size:9px}.service strong{font-size:11px}.map-footer>span:last-child{display:none}}
@media(max-width:800px){.app-shell{padding:8px}.masthead{height:auto;min-height:84px;padding:10px}.brand-logo{width:55px;height:55px}.masthead h1{font-size:19px}.overline{font-size:8px}.subline{font-size:10px}.link-health small{display:none}.bot-logo{width:48px;height:48px}.services{grid-template-columns:repeat(2,minmax(0,1fr))}.operations-layout{grid-template-columns:1fr}.map-panel{min-height:580px}.map-viewport{min-height:460px}.intel-column{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pilots-panel{min-height:270px}.tiny-note{grid-column:1/-1}.site-footer{flex-wrap:wrap}}
@media(max-width:560px){.masthead-right{gap:7px}.link-health{font-size:10px}.link-health #connection-state{max-width:93px}.overline{font-size:8px}.masthead h1{font-size:17px}.subline{font-size:9px}.brand-logo{width:45px;height:45px}.bot-logo{width:42px;height:42px}.services{gap:5px}.service{padding:7px 8px}.service-label{font-size:8px}.service strong{font-size:10px}.operations-layout{gap:8px}.map-panel{min-height:550px}.map-top .view-live{display:none}.map-viewport{min-height:440px}.intel-column{display:flex}.map-overlay-head strong{font-size:15px}.map-footer{font-size:9px}.site-footer{font-size:9px}}

/* v0.2.1: visible map-tile error, but no interruption to telemetry */
.tile-warning{position:absolute;z-index:14;bottom:58px;left:16px;max-width:min(430px,calc(100% - 32px));padding:10px 13px;background:rgba(92,34,31,.95);color:#fff;border:1px solid #d6796f;border-radius:7px;font-size:12px;pointer-events:none}
.tile-warning[hidden]{display:none!important}

/* v0.2.2: MapLibre + OpenFreeMap. Retain F99th mission overlays and controls. */
.geo-map{position:absolute;inset:0;z-index:0;background:#102537}
.geo-map .maplibregl-canvas{outline:none}
.map-grid{z-index:1}
.map-planes{display:none}
.map-overlay-head,.map-overlay-bottom{z-index:5}
.map-controls{z-index:8}
.osm-credit{z-index:9}
.geo-map .plane-pin{pointer-events:auto;cursor:pointer}

/* v0.2.3: dependency-free raster map. Browser fetches only visible map tiles. */
.geo-map{overflow:hidden;z-index:0;background:#112538}
.raster-tile-layer{position:absolute;inset:0;pointer-events:none;will-change:transform}
.map-raster-tile{position:absolute;width:256px;height:256px;max-width:none;user-select:none;pointer-events:none;filter:grayscale(.23) brightness(.71) contrast(1.16) saturate(.75)}
.map-viewport{touch-action:none}
.map-planes{display:block;pointer-events:none;z-index:4;will-change:transform}
.map-planes .plane-pin{transform:translate(-50%,-100%);background:#123958e8;padding:6px 9px;border-radius:7px;max-width:140px;box-shadow:0 3px 14px #000b}
.map-planes .plane-pin.red{background:#6d2738ee}
.osm-credit{background:#0b1926e7;max-width:calc(100% - 12px);line-height:1.4}

.plane-pin:before{content:none}.heading-arrow{display:inline-block;margin-right:6px;color:var(--gold);font-size:20px;line-height:1}.flight-details{display:block;color:#b7d4e6;font-size:10px;margin-top:5px}

.layer-toolbar{display:flex;flex-wrap:wrap;gap:7px;align-items:center;padding:12px;background:#101e2e;color:#bed1e2;font-size:12px}.layer-toolbar button{background:#172b40;color:#c1d2df;border:1px solid #486078;border-radius:5px;padding:6px 10px;cursor:pointer}.layer-toolbar button[aria-pressed=true]{background:#254c68;border-color:#69d4fa;color:white}.layer-toolbar small{flex-basis:100%}.dark-basemap .map-raster-tile{filter:invert(1) hue-rotate(180deg) brightness(.75) saturate(.6)}

.services{grid-template-columns:repeat(2,minmax(0,1fr))}.pilot-location{cursor:pointer;text-decoration:underline;text-underline-offset:3px}.pilot-location:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}

.service{flex-wrap:wrap}.service small{flex-basis:100%;text-align:right;color:#b7d4e6}dialog{background:#112438;color:#e8f2ff;border:1px solid #7a9bb6;border-radius:12px;padding:24px;max-width:360px}dialog::backdrop{background:#000a}dialog input{display:block;margin:12px 0;padding:8px}dialog button{padding:8px 15px;margin-right:8px;cursor:pointer}#red-error{color:#ffb1b1}
