@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=DM+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
:root{color-scheme:dark;--bg:#06101e;--panel:#0b1625;--panel2:#0b1a2b;--border:#1c2e40;--text:#dbe7f3;--muted:#6d849b;--cyan:#4cc8e9;--blue:#408aff;--amber:#f2ad64;--green:#46dabd;--red:#fc6775;font-family:'DM Sans',system-ui,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}a{color:#74ccef;text-decoration:none}a:hover{text-decoration:underline} .mono{font-family:'IBM Plex Mono',Consolas,monospace}#app{height:100vh;display:flex;flex-direction:column;min-height:540px}.topbar{height:69px;min-height:69px;background:#0b1828;border-bottom:1px solid #1d364e;display:flex;align-items:center;justify-content:space-between;padding:0 20px;gap:20px;z-index:5}.brand{display:flex;align-items:center;gap:11px;min-width:315px}.brand-icon{display:flex}.brand strong{font:800 26px/1 'Barlow Condensed',sans-serif;letter-spacing:.105em;color:#f2f8ff}.brand strong span{color:#4cc8e9}.brand small{display:block;margin-top:5px;font:500 8.5px/1.2 'IBM Plex Mono',monospace;letter-spacing:.09em;color:#88a7bf}.top-mid{display:flex;align-items:center;gap:10px;font:600 10px/1 'IBM Plex Mono',monospace;letter-spacing:.08em;color:#9ab5c7;white-space:nowrap}.live-dot,.little-dot{width:7px;height:7px;flex:none;display:inline-block;border-radius:50%;background:#8a9fb0;box-shadow:0 0 10px #8a9fb055}.live-dot.ok,.little-dot{background:var(--green);box-shadow:0 0 11px #46dabd88}.live-dot.error{background:var(--amber);box-shadow:0 0 10px #f2ad6477}.vline{width:1px;height:20px;background:#2d465c;margin:0 12px}.top-actions{display:flex;align-items:center;gap:3px}.seg{padding:9px 14px;background:transparent;border:1px solid #24394b;color:#92a8bc;font:600 10px 'IBM Plex Mono',monospace;letter-spacing:.07em}.seg:first-child{border-radius:5px 0 0 5px}.seg:nth-child(2){border-radius:0 5px 5px 0}.seg.active{color:#77d9fb;background:#112c42;border-color:#3b7895}.icon-button{border:1px solid #284154;color:#b9d1e3;border-radius:5px;background:#142538;height:31px;min-width:32px;font-size:18px;margin-left:8px}.workarea{display:grid;grid-template-columns:280px minmax(400px,1fr) 319px;flex:1;min-height:0}.leftsidebar,.rightsidebar{background:linear-gradient(145deg,#0e1a29,#091522);display:flex;flex-direction:column;min-height:0;z-index:3}.leftsidebar{border-right:1px solid var(--border)}.rightsidebar{border-left:1px solid var(--border)}.panel-heading{height:43px;min-height:43px;padding:0 17px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;color:#c0d6ea;font:700 10px 'IBM Plex Mono',monospace;letter-spacing:.07em}.small-id{color:#617a91;font-size:9px}.side-content,.inspector-scroll{padding:19px 16px 20px;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:#294359 transparent}.section-label{font:700 10px 'IBM Plex Mono',monospace;letter-spacing:.08em;color:#a1b9ce;display:flex;align-items:center;justify-content:space-between;margin:4px 0 13px}.section-label .smaller{font-weight:400;color:#506b82}.number-tag{font:600 10px 'IBM Plex Mono',monospace;background:#1b3446;color:#8ccce1;border-radius:3px;padding:2px 6px}.inputbox{display:flex;align-items:center;gap:8px;border:1px solid #284154;border-radius:5px;background:#0b1928;padding:8px 10px;margin-bottom:12px;color:#8eabc1}.inputbox span:first-child{font-size:22px;line-height:14px}.inputbox input{width:100%;min-width:0;background:transparent;border:0;outline:0;color:#e5f2f8;font-size:11px}.inputbox input::placeholder{color:#637f96}.keyhint{font:10px 'IBM Plex Mono',monospace;border:1px solid #395166;padding:1px 4px;border-radius:3px}.storm-list{display:flex;flex-direction:column;gap:6px}.storm-item{width:100%;border:1px solid #1c3245;background:#0c1c2d;color:inherit;text-align:left;border-radius:5px;padding:11px 11px 10px;position:relative;transition:.17s}.storm-item:hover{border-color:#3e6881;background:#10273a}.storm-item.selected{border-color:#44b7d8;background:linear-gradient(90deg,#153749,#0f2534)}.storm-item.selected:before{position:absolute;content:'';left:-1px;top:8px;bottom:8px;width:3px;background:#4bcbe8;border-radius:4px}.storm-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.storm-main{display:flex;align-items:center;gap:8px}.storm-symbol{font-size:20px;color:#65d0e8;line-height:1}.storm-name{font:700 14px 'Barlow Condensed',sans-serif;letter-spacing:.08em}.storm-type{font:600 9px 'IBM Plex Mono',monospace;color:#7fabc0}.storm-details{font:9px 'IBM Plex Mono',monospace;color:#65849a;margin:6px 0 0 29px}.storm-category{font:700 9px 'IBM Plex Mono',monospace;border:1px solid #405d73;border-radius:3px;padding:3px 5px;color:#b5cad8}.storm-category.hot{color:#ffbf85;border-color:#936c4a}.empty-list{color:#8098ac;font-size:11px;line-height:1.6;padding:10px 3px}.border-break{height:1px;background:#1c3143;margin:23px 0 20px}.layer-list{display:flex;flex-direction:column;gap:1px}.layer-row{display:flex;align-items:center;gap:10px;padding:9px 2px;cursor:pointer;color:#b4c8d9;font-size:11px}.layer-symbol{width:19px;font-size:19px;text-align:center;color:#94afbf}.layer-symbol.cyan{color:var(--cyan)}.layer-symbol.blue{color:var(--blue)}.layer-symbol.amber{color:var(--amber)}.layer-symbol.purple{color:#c5a6fc}.layer-symbol.teal{color:var(--green)}.layer-row>span:nth-child(2){flex:1}.layer-row small{display:block;margin-top:2px;font-size:9px;color:#69859b}.layer-row input{appearance:none;width:27px;height:15px;background:#2c3d4c;border-radius:10px;position:relative;transition:.2s;cursor:pointer}.layer-row input:before{content:'';position:absolute;top:2.5px;left:2.5px;width:10px;height:10px;background:#889eac;border-radius:50%;transition:.2s}.layer-row input:checked{background:#215773}.layer-row input:checked:before{background:#57d2ed;transform:translateX(12px)}.large-action{width:100%;display:flex;align-items:center;gap:8px;padding:9px;border:1px solid #254255;color:#bdd4e6;text-align:left;border-radius:4px;background:#102435;margin:7px 0}.large-action:hover{background:#173148;border-color:#387d97}.large-action strong,.upload-action strong{font-size:10px;display:block}.large-action small,.upload-action small{display:block;font-size:9px;color:#6f95ab;margin-top:4px}.large-action span:nth-child(2){flex:1}.action-icon{font-size:18px;color:#6bcbdc}.upload-action{display:block;border:1px dashed #315365;padding:12px;border-radius:5px;cursor:pointer;color:#83d3ec}.upload-action:hover{background:#102b3c}.sidebar-footer{height:35px;min-height:35px;border-top:1px solid var(--border);padding:0 15px;display:flex;align-items:center;gap:8px;font:8px 'IBM Plex Mono',monospace;color:#637e94;letter-spacing:.06em}.sidebar-footer .mono{margin-left:auto}.sidebar-footer .little-dot{width:5px;height:5px}.map-main{display:flex;flex-direction:column;min-height:0;position:relative;overflow:hidden;background:#071322}.map-toolbar{height:43px;min-height:43px;border-bottom:1px solid #203346;background:#0a1828;display:flex;align-items:center;justify-content:space-between;padding:0 17px;z-index:2}.map-location{font:600 10px 'IBM Plex Mono',monospace;letter-spacing:.06em;color:#80bad5}.map-modes{display:flex;align-items:center;gap:5px}.mini{font:600 9px 'IBM Plex Mono',monospace;border:1px solid #294156;border-radius:4px;color:#8ba9bc;background:#0e2234;padding:7px 9px}.mini.active,.mini:hover{color:#99e7f9;border-color:#3381a0;background:#183d55}.map-area{flex:1;min-height:0;position:relative;overflow:hidden;cursor:grab}.map-area:active{cursor:grabbing}#earthCanvas{width:100%;height:100%;display:block;position:absolute;inset:0;outline:none}.scanlines{position:absolute;inset:0;pointer-events:none;opacity:.09;background:repeating-linear-gradient(to bottom,transparent 0,transparent 3px,#4b7398 4px);mix-blend-mode:soft-light}.map-overlay{position:absolute;pointer-events:none}.topleft{top:24px;left:27px}.eyebrow{font:600 9px 'IBM Plex Mono',monospace;letter-spacing:.15em;color:#74c8e3}.topleft h2{font:700 28px/1.0 'Barlow Condensed',sans-serif;letter-spacing:.1em;color:#f1f8ff;margin:10px 0 8px;text-shadow:0 2px 12px #000}.topleft #mapSubtitle{max-width:300px;font-size:10px;color:#9dbdd2;line-height:1.6;text-shadow:0 2px 8px #000}.bottomleft{bottom:18px;left:23px}.coord-bug{font:10px 'IBM Plex Mono',monospace;display:flex;align-items:center;gap:8px;color:#a8c5d8;margin-bottom:10px}.map-help{font:8px 'IBM Plex Mono',monospace;letter-spacing:.07em;color:#6789a1}.map-compass{position:absolute;right:19px;top:25px;width:46px;height:66px;text-align:center;color:#8ebad0;font:12px 'IBM Plex Mono',monospace;display:flex;flex-direction:column;justify-content:space-around;align-items:center}.map-compass span{font-size:26px;color:#74c9e8}.map-compass small{font-size:9px}.map-zoom{position:absolute;right:25px;bottom:35px;display:flex;flex-direction:column;gap:5px}.map-zoom button{border:1px solid #2a526b;background:#092239bb;color:#c9eafa;border-radius:4px;width:32px;height:32px;font-size:22px}.map-zoom button:hover{background:#1a4e70}.map-info{position:absolute;right:28px;top:106px;background:#0b233adf;border:1px solid #3e7389;border-radius:5px;padding:12px;color:#c5e3ee;font-size:11px;line-height:1.5;max-width:225px;box-shadow:0 6px 20px #0008}.timeline{height:155px;min-height:155px;border-top:1px solid #27445a;background:#0b1b2c;padding:15px 25px 12px}.timeline-top{display:flex;gap:18px;align-items:center}.time-heading{font:700 10px 'IBM Plex Mono',monospace;letter-spacing:.08em;color:#9dc2d7;display:flex;align-items:center;gap:8px}.highlight{font-size:12px;color:#9ce5f5}.timeline-count{font:10px 'IBM Plex Mono',monospace;color:#718fa4;margin-left:auto}.timeline-controls{display:flex;align-items:center;gap:12px;margin-top:13px}.transport,.play{border:1px solid #294c62;background:#142e44;color:#c4eaf5;border-radius:4px;height:28px;min-width:33px}.transport:hover,.play:hover{background:#245571}.play{background:#277e9b;border-color:#3196b5;color:#fff;font-size:12px;width:39px}.timeline-controls input{flex:1;accent-color:#5bd9e9;min-width:15px;height:4px;cursor:pointer}.timeline-controls select{background:#102637;color:#bddcea;border:1px solid #2c485d;border-radius:4px;padding:5px;font:9px 'IBM Plex Mono',monospace}.timeline-bottom{display:flex;justify-content:space-between;margin:12px 0 0;color:#627f95;font:9px 'IBM Plex Mono',monospace}.inspector-scroll{padding-top:19px}.inspector-blank{text-align:center;padding:70px 13px 90px}.radar-ring{display:block;font-size:68px;color:#28536d;margin-bottom:15px}.inspector-blank h3{font:700 22px 'Barlow Condensed',sans-serif;letter-spacing:.04em;color:#b2cad9}.inspector-blank p{font-size:11px;line-height:1.8;color:#6c879d}.inspector-title{font:800 28px 'Barlow Condensed',sans-serif;letter-spacing:.07em;margin:4px 0 3px}.inspector-eyebrow{font:700 9px 'IBM Plex Mono',monospace;color:#70cbe9;letter-spacing:.12em}.inspector-sub{font:10px 'IBM Plex Mono',monospace;color:#7fa1b6;margin-bottom:17px}.inspector-status{display:inline-block;border:1px solid #3e6b7e;padding:4px 7px;border-radius:3px;font:700 9px 'IBM Plex Mono',monospace;color:#92e4ec;margin-bottom:15px}.status-archive{color:#c5b0f1;border-color:#725f90}.status-unavailable{color:#edba76;border-color:#927041}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:8px 0 18px}.stat-card{background:#0d2537;border:1px solid #253d51;border-radius:5px;padding:11px}.stat-label{font:9px 'IBM Plex Mono',monospace;color:#7490a5;margin-bottom:8px}.stat-value{font:700 23px 'Barlow Condensed',sans-serif;color:#e1f5ff;letter-spacing:.025em}.stat-value.hot{color:#ffc181}.stat-value small{font:11px 'IBM Plex Mono',monospace;color:#799db4;margin-left:2px}.detail-heading{font:700 10px 'IBM Plex Mono',monospace;color:#b2cddd;letter-spacing:.07em;margin:18px 0 10px}.detail-line{display:flex;gap:10px;justify-content:space-between;border-bottom:1px solid #203547;padding:8px 0;font:10px 'IBM Plex Mono',monospace}.detail-line span:first-child{color:#7292a8}.detail-line span:last-child{text-align:right;color:#bad5e5}.source-link{display:inline-block;margin:12px 0 0;padding:8px 11px;border:1px solid #28566a;border-radius:4px;background:#102f42;color:#79d3ed;font:10px 'IBM Plex Mono',monospace}.source-link:hover{background:#1a425c;text-decoration:none}.mini-chart{width:100%;height:100px;border:1px solid #1c3a4d;background:#0a2031;border-radius:4px;display:block;margin:9px 0}.inspector-note{color:#7697ad;font:10px/1.65 'IBM Plex Mono',monospace;margin:9px 0}.telemetry{display:flex;flex-direction:column;gap:9px}.tele-row{font:10px 'IBM Plex Mono',monospace;display:flex;align-items:center;justify-content:space-between;color:#93adbf}.chip{border-radius:3px;padding:4px 6px;font:700 9px 'IBM Plex Mono',monospace;border:1px solid #23675a;color:#7de8c9;background:#123c35}.chip.muted{background:#182633;color:#849fb2;border-color:#334b5d}.chip.warn{background:#35291f;color:#ffbf80;border-color:#795735}.operational-note{display:flex;gap:10px;background:#182536;border:1px solid #374453;border-radius:4px;padding:12px;margin-bottom:10px}.note-symbol{font-size:15px;flex:none;border:1px solid #b58a4f;color:#e2ad70;width:20px;height:20px;border-radius:50%;text-align:center}.operational-note strong{font:700 9px 'IBM Plex Mono',monospace;color:#ebbc84}.operational-note p{font-size:10px;line-height:1.7;color:#8ca3b5;margin:8px 0 0}.toast{pointer-events:none;position:fixed;z-index:20;bottom:175px;left:50%;transform:translateX(-50%) translateY(20px);max-width:450px;background:#112b3d;border:1px solid #4590a8;padding:11px 16px;border-radius:5px;color:#b9edfa;font-size:12px;opacity:0;transition:opacity .25s,transform .25s;box-shadow:0 8px 40px #000a}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.modal-backdrop{position:fixed;inset:0;z-index:30;background:#020911d9;display:flex;align-items:center;justify-content:center}.modal-backdrop.hidden{display:none}.modal{background:#0c1c2d;border:1px solid #3b6881;box-shadow:0 20px 80px #000c;width:min(590px,90vw);max-height:75vh;overflow-y:auto;padding:20px;border-radius:7px}.modal-head{display:flex;align-items:center;justify-content:space-between;font:700 14px 'IBM Plex Mono',monospace;letter-spacing:.06em;color:#d9edfa;margin-bottom:18px}.modal-pre{background:#081726;border:1px solid #263f53;padding:13px;white-space:pre-wrap;word-break:break-word;font:10px/1.6 'IBM Plex Mono',monospace;color:#9bb7ca;border-radius:5px}.doc-link{display:block;margin-top:14px;font:10px 'IBM Plex Mono',monospace}.detail-btn{margin-top:12px;background:#153c51;border:1px solid #37768f;color:#a1edff;border-radius:4px;padding:9px 11px;font:10px 'IBM Plex Mono',monospace}.detail-btn:hover{background:#1e5069}@media(max-width:1180px){.workarea{grid-template-columns:250px minmax(320px,1fr) 280px}.brand{min-width:260px}.brand strong{font-size:23px}.brand small{font-size:7px}.top-mid{font-size:9px}.panel-heading{padding:0 12px}.side-content,.inspector-scroll{padding-left:11px;padding-right:11px}}@media(max-width:950px){body{overflow:auto}#app{min-height:950px}.workarea{grid-template-columns:230px minmax(320px,1fr)}.rightsidebar{grid-column:1/3;min-height:270px;max-height:420px;border-left:0;border-top:1px solid var(--border)}.inspector-scroll{display:flex;gap:18px}.inspector-scroll #inspector{min-width:300px;width:55%}.map-area{min-height:400px}.map-main{min-height:600px}.top-mid .vline,.top-mid #utcClock{display:none}}@media(max-width:640px){.topbar{padding:0 10px;gap:5px}.brand{min-width:0}.brand small{display:none}.brand strong{font-size:21px}.brand-icon{display:none}.top-mid{display:none}.top-actions .seg{padding:8px}.workarea{display:flex;flex-direction:column}.leftsidebar{max-height:370px;min-height:260px}.rightsidebar{max-height:none}.map-area{min-height:430px}.map-toolbar{padding:0 7px}.map-location{font-size:8px}.mini{font-size:8px;padding:5px}.timeline{padding:14px;height:155px}.topleft{top:18px;left:16px}.topleft h2{font-size:23px}.bottomleft{left:11px}.map-help{font-size:7px}}

/* v0.5 official NWS radar controls */
.radar-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:7px 0 10px}.radar-controls label{font:9px 'IBM Plex Mono',monospace;color:#819db2;display:block}.radar-controls select{width:100%;min-width:0;margin-top:5px;border-radius:4px;background:#0c2334;color:#d5edf8;border:1px solid #315268;padding:8px 4px;font-size:10px}.radar-meta{font:9px/1.6 'IBM Plex Mono',monospace;color:#8ba9bd;min-height:38px;overflow-wrap:anywhere}.radar-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:8px}.radar-actions input{accent-color:#5ed3f3;width:65px}.radar-actions label{font:9px 'IBM Plex Mono',monospace;color:#83a4bb}.radar-guide{background:linear-gradient(90deg,#102a3f,#0e2132);border:1px solid #2a465a;border-radius:4px;padding:9px;margin:8px 0 10px;color:#93afc5;font:9px/1.6 'IBM Plex Mono',monospace}.radar-scale{width:100%;height:7px;margin:6px 0 2px;background:linear-gradient(90deg,#086dde,#40cfe0,#47d665,#fff345,#ff9a34,#ff484e,#f6c8eb);border-radius:3px}.radar-scale-note{display:flex;justify-content:space-between;color:#769ab0;font:8px 'IBM Plex Mono',monospace}.radar-error{color:#ffc58b}.radar-status{font:700 9px 'IBM Plex Mono',monospace;color:#66dcbf}.radar-status.problem{color:#ffc58b}

/* v0.6: entire live-observation sections disappear during historical replay. */
.archive-mode .mode-live-only, .mode-live-only[hidden]{display:none !important}
.aircraft-list{display:flex;flex-direction:column;gap:6px;margin:9px 0}
.aircraft-item{width:100%;text-align:left;border:1px solid #27506a;border-radius:5px;background:#102639;padding:10px;color:#d2ebf8;display:flex;align-items:center;justify-content:space-between;gap:9px}
.aircraft-item:hover{border-color:#68c3d9;background:#183b50}
.aircraft-item strong{display:block;font:700 12px 'Barlow Condensed',sans-serif;letter-spacing:.07em}
.aircraft-item small{display:block;font:9px/1.6 'IBM Plex Mono',monospace;color:#9cbed2;margin-top:2px}
.aircraft-item em{font:700 9px 'IBM Plex Mono',monospace;color:#72d4cf;font-style:normal}
.aircraft-item em.delay{color:#f4bd7e}
.aircraft-empty,.aircraft-caption{font:9px/1.6 'IBM Plex Mono',monospace;color:#7f9fb6;margin:7px 0}
.aircraft-refresh{width:100%;margin:8px 0}
.teal-search{display:flex;gap:6px}
.teal-search input{flex:1;min-width:0;width:100%;border:1px solid #32516b;background:#0a2032;border-radius:4px;color:#d4eefa;font-size:11px;padding:8px}
.teal-search button{flex:none}

/* v0.7 viewport-limited OSM cartography and projected NOAA satellite */
.map-attribution{position:absolute;right:75px;bottom:12px;z-index:2;background:#071b2beb;padding:5px 8px;border:1px solid #31536b;border-radius:4px;color:#c1d6e5;font:10px/1.4 Consolas,monospace;pointer-events:auto}
.map-attribution a{color:#9cdef7;text-decoration:underline}
.map-detail-status{position:absolute;left:22px;bottom:53px;z-index:2;pointer-events:none;background:#041928cc;padding:5px 7px;font:9px/1.3 Consolas,monospace;color:#bed6e8;border:1px solid #204763;border-radius:3px}
.map-top-controls{display:inline-flex;align-items:center;gap:5px;margin-right:8px}
.map-top-controls .mini{white-space:nowrap}
.satmap-controls{margin:12px 0;border:1px solid #2a4b60;border-radius:5px;padding:10px;background:#0b2435}
.satmap-header{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#c8e7f3;font:700 10px Consolas,monospace;margin-bottom:9px}
.satmap-header input{accent-color:#46c8e7;width:15px;height:15px}
.satmap-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.satmap-grid label{font:9px Consolas,monospace;color:#83a8bd;display:block}
.satmap-grid select{display:block;margin-top:5px;width:100%;font:10px Consolas,monospace;border:1px solid #32556d;color:#d7eefd;background:#102a3e;padding:7px 4px}
.satmap-opacity{display:flex;align-items:center;gap:7px;margin-top:9px;color:#89b5c9;font:9px Consolas,monospace}
.satmap-opacity input{flex:1;min-width:0}
.satmap-state{font:9px/1.5 Consolas,monospace;color:#a0c0d1;margin-top:8px}
.satmap-state.unavailable{color:#f3bb7d}
@media(max-width:1100px){.map-top-controls{margin:0}.map-detail-status{bottom:55px}}

/* v0.8 source-verified hurricane objective aid guidance */
.models-section{min-width:0}.model-head{display:flex;justify-content:space-between;align-items:center;gap:7px;font:9px 'IBM Plex Mono',monospace;color:#8facbd;margin-bottom:8px}.model-head select{min-width:0;width:59%;max-width:100%;padding:6px 3px;background:#0b2435;border:1px solid #35526b;color:#d8e9f4;border-radius:4px;font:10px 'IBM Plex Mono',monospace}.model-meta{font:9px/1.55 'IBM Plex Mono',monospace;color:#a7bfd2;min-height:30px}.model-toolbar{display:flex;gap:9px;align-items:center;justify-content:space-between;margin:7px 0 9px;font:8px/1.4 'IBM Plex Mono',monospace;color:#6e91a9}.model-toolbar .mini{flex:0 0 auto}.model-list{display:flex;flex-direction:column;gap:3px;max-height:315px;overflow-y:auto;scrollbar-width:thin}.model-row{display:flex;align-items:center;gap:6px;background:#0e2334;border:1px solid #284358;border-radius:4px;padding:7px 5px;cursor:pointer;min-width:0}.model-row input{accent-color:#73d3f1;flex:0 0 13px}.model-row i{width:7px;height:22px;border-radius:4px;flex-shrink:0}.model-row span{display:flex;flex-direction:column;min-width:0;gap:3px;flex:1}.model-row strong{font:650 11px 'DM Sans',sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model-row small{font:8px 'IBM Plex Mono',monospace;color:#87afc3}.model-row em{font:8px 'IBM Plex Mono',monospace;color:#77e4c3;font-style:normal;border:1px solid #256d69;border-radius:3px;padding:2px 3px}.model-row.model-missing{opacity:.60;cursor:not-allowed;background:#091c2d}.model-row.model-missing em{color:#a9b8c4;border-color:#37546a}.model-footnote{font:9px/1.6 'IBM Plex Mono',monospace;color:#819fb2;margin:8px 0}.model-chart{width:100%;height:164px;background:#0b2334;border:1px solid #31516a;border-radius:4px;display:block}.model-chart-section{min-width:0}

.model-links{display:flex;flex-wrap:wrap;gap:10px;font:8px 'IBM Plex Mono',monospace;margin:10px 0}.model-links a{color:#78cbe8}.model-toolbar span{flex:1;text-align:right}.model-toolbar .mini{padding:7px 4px}

/* STORMWATCH v0.9 · operational workspace system + bounded image sizing */
:root{--bg:#060f19;--panel:#0a1522;--border:#243849;--cyan:#66cde7}
.workarea{grid-template-columns:324px minmax(390px,1fr) 310px}
.leftsidebar{overflow:hidden;background:#0b1826}
.rightsidebar{background:#0a1725}
.panel-heading{background:#101f2f;letter-spacing:.12em}
.workspace-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:10px 10px 9px;background:#0b1928;border-bottom:1px solid #263d4e;flex:none}
.workspace-tab{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:4px;min-width:0;min-height:51px;padding:6px 2px;border:1px solid transparent;border-radius:7px;background:transparent;color:#7f9bb0;font:700 17px/1 'Barlow Condensed',system-ui,sans-serif;transition:background .15s,border-color .15s,color .15s}
.workspace-tab span{font:600 8.5px/1.1 'IBM Plex Mono',Consolas,monospace;letter-spacing:.02em}
.workspace-tab:hover{background:#132f42;color:#daf7ff}
.workspace-tab.active,.workspace-tab[aria-selected="true"]{background:#173b51;border-color:#2c718e;color:#9ce5fb;box-shadow:inset 0 2px 0 #51cce9}
.workspace-tab[hidden],.archive-mode .workspace-tab.mode-live-only{display:none!important}
.side-content{padding:15px 16px 20px;overscroll-behavior:contain}
.workspace-pane[hidden]{display:none!important}
.workspace-pane{min-width:0;animation:workspace-enter .14s ease-out}
@keyframes workspace-enter{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
.workspace-title{font:700 12px/1.25 'IBM Plex Mono',Consolas,monospace;color:#e3f3fc;letter-spacing:.1em;padding:3px 0 11px;border-bottom:1px solid #254253;margin-bottom:12px}
.module-intro{font-size:11px;line-height:1.55;color:#8eafc2;margin:1px 0 15px}
.module-actions{display:flex;gap:7px;margin-top:15px;flex-wrap:wrap}
.module-actions .mini{flex:1;white-space:nowrap}
.workspace-pane>.section-label{margin-top:14px}
.workspace-pane .border-break:first-child{display:none}
.workspace-pane .models-section>.border-break:first-child{display:none}
.workspace-pane .section-spacer{height:20px;border-top:1px solid #244051;margin-top:20px}
/* Critical: NOAA CONUS image is 1250×750. A natural-size img MUST NOT expand the sidebar. */
.satellite-frame{width:100%;max-width:100%;height:auto;aspect-ratio:5/3;max-height:200px;overflow:hidden;border:1px solid #2c5063;border-radius:7px;background:linear-gradient(140deg,#07121d,#10283b);display:flex;align-items:center;justify-content:center;margin:10px 0;position:relative;contain:layout paint}
.satellite-frame #satelliteImage{display:block;width:100%!important;max-width:100%!important;height:100%!important;max-height:200px!important;object-fit:contain;object-position:center;min-width:0!important;min-height:0!important;flex:0 1 auto}
.satellite-frame #satelliteImage[hidden],.satellite-frame .satellite-empty[hidden]{display:none!important}
.satellite-empty{color:#9ab0c0;padding:15px;text-align:center;font-size:11px;line-height:1.5;max-width:100%}
.satellite-controls{display:grid;gap:6px;min-width:0;margin:5px 0}
.satellite-controls label,.satmap-controls label,.radar-controls label{color:#8aabc0;font:600 9px 'IBM Plex Mono',monospace;letter-spacing:.04em}
.satellite-controls select,.satmap-controls select,.radar-controls select{width:100%;max-width:100%;min-width:0;background:#12293b;border:1px solid #38546a;border-radius:5px;padding:8px 5px;color:#e5f4ff;font:11px 'DM Sans',system-ui,sans-serif}
.satellite-meta,.satellite-disclaimer,.radar-meta{font-size:10px;line-height:1.6;color:#91a9ba;overflow-wrap:anywhere;margin:7px 0}
.satellite-actions,.radar-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:9px 0}
.satellite-actions .mini{flex:1;white-space:nowrap}
.satellite-frame img{border:0}
.satellite-large{display:block;max-width:100%!important;width:auto!important;max-height:62vh!important;height:auto!important;object-fit:contain;margin:0 auto}
.satellite-large-caption{font-size:11px;line-height:1.5;color:#b7cfe1}
.modal{width:min(880px,94vw);max-height:88vh;overflow-x:hidden}
.modal img{max-width:100%}
/* Keep weather panes concise: exactly one image preview and one selectable radar module. */
.feed-disclosure{border:1px solid #254358;background:#0b2233;border-radius:7px;margin:9px 0 13px;min-width:0;overflow:hidden}
.feed-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;padding:12px 12px;list-style:none;color:#d2ebf7;font:700 11px 'IBM Plex Mono',Consolas,monospace;letter-spacing:.03em}
.feed-disclosure>summary::-webkit-details-marker{display:none}
.feed-disclosure[open]>summary{border-bottom:1px solid #26475b;background:#143247;color:#9de7fd}
.feed-disclosure .feed-icon{color:#66cde7;font-size:16px;margin-right:8px}
.disclosure-chevron{font-size:16px;color:#82adbf;transition:transform .15s}
.feed-disclosure[open] .disclosure-chevron{transform:rotate(180deg)}
.feed-body{min-width:0;padding:12px;background:#0a1c2b}
.feed-body>.section-label:first-child{margin-top:0;margin-bottom:9px}
.feed-body>.border-break:first-child{display:none}
.feed-body .radar-controls{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.feed-body .satmap-controls{margin-top:16px}
.feed-body #liveAircraftPanel>.border-break:first-child{display:none}
.feed-body #liveAircraftPanel .section-label{margin-top:10px}
/* Selected-storm information remains visible on the right, graphs move to Models workspace. */
.rightsidebar .inspector-scroll{padding-top:16px}
.model-chart-section{min-width:0;margin-top:18px;border-top:1px solid #24465d;padding-top:13px}
.model-chart-section>.border-break:first-child{display:none}
.model-chart{width:100%;max-width:100%;height:168px}
.map-toolbar{gap:12px;padding:0 15px}
.map-modes{flex-wrap:nowrap;justify-content:flex-end;gap:4px}
.map-modes .mini{white-space:nowrap}
#focusSelected{border-color:#34617c;color:#bce9f9}
.topbar{background:#0d1c2c}
.inspector-scroll .operational-note{margin-bottom:14px}
@media (max-width:1300px){.workarea{grid-template-columns:300px minmax(370px,1fr) 280px}.top-mid{gap:5px}.map-modes .mini{font-size:8px;padding:7px 6px}}
@media (max-width:1100px){.workarea{grid-template-columns:285px minmax(360px,1fr)}.rightsidebar{grid-column:1/3;min-height:230px;max-height:380px;border-left:0;border-top:1px solid var(--border)}.inspector-scroll{display:block}.map-area{min-height:410px}.map-main{min-height:620px}.top-mid .check-time{display:none}}
@media (max-width:690px){body{overflow:auto}#app{height:auto;min-height:100vh}.workarea{display:flex;flex-direction:column}.leftsidebar{max-height:none;min-height:unset}.side-content{min-height:180px;max-height:420px}.rightsidebar{min-height:250px;max-height:none}.map-main{min-height:570px}.map-area{min-height:410px}.map-toolbar{height:auto;min-height:52px;flex-wrap:wrap;padding:8px}.map-location{display:none}.map-modes{flex-wrap:wrap}.brand strong{font-size:23px}.workspace-nav{gap:3px}.workspace-tab{min-height:50px}}
@media (prefers-reduced-motion:reduce){.workspace-pane{animation:none}}


/* v0.9.1 Release intelligence dialog; styles also embedded in HTML for offline consistency. */
.release-opener{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:32px;padding:6px 10px;color:#a5eaf7;border:1px solid #2a6c84;border-radius:5px;background:#113147;font:700 10px 'IBM Plex Mono',Consolas,monospace;letter-spacing:.04em;white-space:nowrap}
.release-opener span{font-size:9px;color:#75aabe;padding-left:6px;border-left:1px solid #2a5265}.release-opener:hover{background:#19445d;border-color:#52c5df}
.release-backdrop{position:fixed;inset:0;z-index:100;background:rgba(2,8,18,.85);display:flex;align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(7px)}
.release-backdrop[hidden]{display:none!important}
.release-dialog{width:min(670px,100%);max-height:min(780px,92dvh);display:flex;flex-direction:column;overflow:hidden;background:linear-gradient(158deg,#11273b 0%,#091827 52%,#0c1b2b 100%);border:1px solid #42738b;border-radius:12px;box-shadow:0 30px 95px rgba(0,0,0,.72),0 0 0 1px #1f3e52;outline:none}
.release-header{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;padding:0 21px;border-bottom:1px solid #254257;background:#0d2132}
.release-kicker{display:flex;align-items:center;gap:9px;font:700 10px 'IBM Plex Mono',Consolas,monospace;letter-spacing:.11em;color:#99bfce}.release-status-dot{width:7px;height:7px;border-radius:50%;background:#59d3c1;box-shadow:0 0 12px #59d3c188}
.release-close{width:31px;height:31px;border:1px solid #2a4d62;border-radius:6px;background:#153145;color:#c3dce8;font-size:14px}.release-close:hover{background:#244a60}
.release-scroll{flex:1;min-height:0;overflow:auto;padding:0 26px 23px;scrollbar-width:thin;scrollbar-color:#31556d transparent}
.release-hero{padding:29px 0 24px}.release-release-tag{display:inline-flex;padding:5px 8px;border:1px solid #31697b;border-radius:4px;background:#12384a;color:#79d9df;font:700 10px 'IBM Plex Mono',Consolas,monospace;letter-spacing:.08em}
.release-hero h2{margin:13px 0 5px;font:800 clamp(28px,4vw,40px)/1 'Barlow Condensed',Impact,sans-serif;letter-spacing:.065em;color:#e8f7ff}.release-hero h2 span{color:#66d5f0}.release-hero p{margin:11px 0 0;font:12px/1.6 'DM Sans',system-ui,sans-serif;color:#a1bdce}
.release-divider-title{display:flex;justify-content:space-between;gap:14px;padding:0 0 10px;border-bottom:1px solid #29485b;font:700 10px 'IBM Plex Mono',Consolas,monospace;color:#b3d4e5;letter-spacing:.08em}.release-divider-title span{font:500 9px 'IBM Plex Mono',Consolas,monospace;color:#608ba4}
.release-latest-items{display:grid;gap:9px;margin:15px 0 25px}.release-change{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;background:#112b3c;border:1px solid #284b5e;border-radius:7px}.release-change-icon{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:6px;background:#1a4759;border:1px solid #346e80;font-size:14px;color:#8de4ee}.release-change strong{display:block;color:#e1f3fc;font-size:12px}.release-change p{margin:5px 0 0;color:#94b2c5;font-size:11px;line-height:1.6}
.release-history-heading{margin-top:2px}.release-history-list{margin:12px 0 22px;display:grid;gap:7px}
.release-history-list details{background:#0c2334;border:1px solid #284659;border-radius:6px}.release-history-list summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:12px 13px;color:#cbe4f2;gap:8px}.release-history-list summary::-webkit-details-marker{display:none}.release-history-list summary strong{font:700 12px 'IBM Plex Mono',Consolas,monospace}.release-history-list summary em{font-style:normal;color:#719db5;font-size:10px}.release-history-list summary::after{content:'＋';color:#78b5cd;font-size:15px}.release-history-list details[open] summary::after{content:'−'}.release-history-list details[open] summary{border-bottom:1px solid #284659}.release-history-list ul{margin:10px 0 14px;padding:0 24px 0 31px;color:#9fbccd;font-size:11px;line-height:1.75}.release-history-list li{margin-bottom:5px}
.release-disclaimer{font-size:10px;line-height:1.65;color:#6f90a4;padding:2px 0 0}
.release-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 22px;background:#0d2031;border-top:1px solid #29485b}.release-footer-meta{font:8px/1.5 'IBM Plex Mono',Consolas,monospace;letter-spacing:.035em;color:#64879f;max-width:210px}.release-enter{padding:11px 15px;border:1px solid #59c3db;border-radius:5px;background:#1e7893;color:#f4fdff;font:700 10px 'IBM Plex Mono',Consolas,monospace;letter-spacing:.06em;white-space:nowrap}.release-enter span{padding-left:6px}.release-enter:hover{background:#2995ad}
@media(max-width:680px){.release-backdrop{padding:10px}.release-dialog{max-height:95dvh}.release-scroll{padding:0 16px 15px}.release-header{padding:0 15px}.release-footer{padding:12px 15px}.release-opener{padding:6px 7px;gap:4px;font-size:9px}.release-opener span{font-size:8px}.release-footer-meta{display:none}.release-enter{width:100%}}
@media(prefers-reduced-motion:reduce){.release-backdrop{backdrop-filter:none}}
