:root{color-scheme:dark;--fg:#efefef;--muted:#939393;--bg:#050505;--line:#242424}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#050505;color:var(--fg);font-family:Inter,'Segoe UI',Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid white;outline-offset:3px}#app{height:100%;display:flex;flex-direction:column;position:relative}.header{height:67px;flex-shrink:0;z-index:4;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #1d1d1d;background:#080808;padding:0 clamp(16px,3.2vw,55px)}.brand{text-decoration:none;color:white;display:flex;align-items:center;gap:18px}.brand b{letter-spacing:.08em;font-size:24px;font-weight:800}.brand-period{color:#999}.brand span:not(.brand-period){font-size:9px;letter-spacing:.2em;font-weight:700;color:#777;border-left:1px solid #333;padding-left:17px}.header-right{display:flex;align-items:center;gap:30px}.live-indicator{display:flex;align-items:center;gap:9px;font-size:10px;letter-spacing:.15em;font-weight:800;color:#bbb}.live-indicator i{display:block;background:#fff;width:6px;height:6px;border-radius:50%;box-shadow:0 0 12px #fff}.live-indicator.error i{background:#777;box-shadow:none}.icon-action{background:transparent;border:1px solid #444;border-radius:2px;color:white;height:36px;padding:0 14px;font-size:14px;letter-spacing:.11em}.text-action{font-size:10px}#viewport{position:relative;flex:1;overflow:hidden;min-height:0;background:radial-gradient(ellipse at 50% 47%,#101010 0%,#030303 60%,#000 100%)}#earth,#orbital{position:absolute;inset:0;width:100%;height:100%;display:block}#orbital{touch-action:none;cursor:grab}#orbital:active{cursor:grabbing}.upper-info{position:absolute;top:38px;left:clamp(18px,3.2vw,56px);pointer-events:none;text-shadow:0 2px 9px #000}.eyebrow{font-size:10px;letter-spacing:.23em;font-weight:700;color:#969696}.view-title{margin-top:13px;font-size:clamp(22px,2vw,32px);letter-spacing:.04em;font-weight:700}.view-title span{font-size:11px;font-weight:500;vertical-align:middle;letter-spacing:.12em;border:1px solid #777;padding:5px 7px;margin-left:7px}.view-explain{font-size:12px;color:#9b9b9b;max-width:260px;line-height:1.6;margin-top:9px}.view-controls{position:absolute;top:35px;right:clamp(18px,3vw,50px);display:flex;flex-direction:column;gap:8px}.view-controls button{color:white;border:1px solid #363636;background:#101010cc;width:36px;height:36px;border-radius:2px;font-size:21px}.view-controls button:hover,.icon-action:hover{background:#2b2b2b}.bottom-info{position:absolute;left:clamp(18px,3.2vw,55px);right:clamp(18px,3.2vw,55px);bottom:23px;pointer-events:none;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:10px;color:#a1a1a1;letter-spacing:.1em}.bottom-left,.bottom-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.stat-number{font-size:19px;font-weight:600;letter-spacing:.025em;color:#fff}.stat-label{font-weight:600}.bottom-rule{height:16px;width:1px;background:#5a5a5a}.load-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:min(420px,90%);padding:15px 20px;border:1px solid #444;border-radius:3px;background:#0a0a0aee;color:#e0e0e0;font-size:13px;line-height:1.6;text-align:center}.load-panel[hidden]{display:none}.sat-card{position:absolute;right:clamp(19px,3.2vw,56px);bottom:85px;width:min(315px,calc(100% - 40px));border:1px solid #5d5d5d;background:#0b0b0bef;padding:22px;box-shadow:0 16px 55px #0009}.sat-card[hidden]{display:none}.mini-label{font-size:10px;color:#999;letter-spacing:.18em}.sat-card h2{font-size:18px;margin:9px 25px 5px 0;overflow-wrap:anywhere;line-height:1.35}.card-id{font-size:11px;color:#999}.card-close{position:absolute;right:12px;top:10px;background:none;border:0;color:#eee;font-size:24px}.card-metrics{display:grid;grid-template-columns:1fr 1fr;gap:16px 8px;padding:18px 0;border-top:1px solid #262626;border-bottom:1px solid #262626;margin:18px 0}.card-metrics>div>span{font-size:9px;letter-spacing:.13em;color:#888;display:block;margin-bottom:7px}.card-metrics b{font-weight:600;font-size:13px}.sat-card small{color:#999;font-size:10px;line-height:1.7}.tools{position:absolute;right:0;top:67px;bottom:0;z-index:8;width:min(400px,100vw);background:#101010;box-shadow:-24px 0 80px #000c;border-left:1px solid #333;display:flex;flex-direction:column}.tools[hidden]{display:none}.tools-head{padding:25px 28px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #333}.tools h2{margin:8px 0 0;font-size:20px;letter-spacing:.09em}.tools-head button{background:transparent;border:1px solid #555;color:#fff;font-size:20px;width:34px;height:34px}.tools-body{padding:26px 28px 35px;overflow:auto;flex:1}.tools-body>label:not(.check):not(.menu-button){display:block;font-size:10px;letter-spacing:.14em;color:#aaa;margin:0 0 10px;font-weight:700}.search-row{display:flex;gap:8px;margin-bottom:26px}.search-row input{flex:1;min-width:0}.search-row input,.tools select{width:100%;border:1px solid #444;background:#080808;color:white;border-radius:2px;padding:12px;font-size:13px}.search-row button,.menu-button{background:#151515;color:#eee;border:1px solid #555;border-radius:2px;font-size:11px;font-weight:600;letter-spacing:.04em;padding:12px;text-decoration:none;text-align:center}.tools select{margin-bottom:5px}.rule{border-top:1px solid #333;margin:25px 0}.check{display:flex;align-items:center;gap:13px;cursor:pointer;font-size:13px;color:#ddd;padding:10px 0}.check input{width:16px;height:16px;accent-color:white}.metadata,.tool-note{font-size:11px;line-height:1.8;color:#999;margin:15px 0;overflow-wrap:anywhere}.menu-button{display:block;width:100%;margin:10px 0;cursor:pointer}.menu-button:hover{background:#262626}.load-panel button{margin-top:10px;border:1px solid white;background:#131313;color:white;padding:8px 12px}@media(max-width:700px){.brand{gap:9px}.brand b{font-size:19px}.brand span:not(.brand-period){display:none}.header{height:56px}.tools{top:56px}.header-right{gap:14px}.live-indicator{font-size:9px}.text-action{display:none}.upper-info{top:22px}.view-title{font-size:21px}.view-controls{top:22px}.bottom-info{bottom:15px;font-size:9px}.bottom-right{display:none}.sat-card{right:14px;bottom:72px}.view-explain{max-width:215px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

#zoomFactor{font-size:10px;letter-spacing:.03em;color:#bbb;text-align:center;margin-top:3px;font-weight:600;user-select:none;}

.card-owner,.orbit-note,.model-note{font-size:10px;color:#bababa;margin-top:10px;line-height:1.5;overflow-wrap:anywhere}
.orbit-note{border-top:1px solid #393939;padding-top:11px;color:#eee;letter-spacing:.01em}
.model-note{color:#909090;margin-top:6px}
.hint-zoom{font-size:9px;color:#777;letter-spacing:.08em;margin-top:15px;max-width:275px;line-height:1.6}
@media(max-width:700px){.hint-zoom{font-size:8px;max-width:190px}.card-metrics{gap:10px}.sat-card{padding:15px}}

/* Selected satellite: one continuous 24-hour red dashed orbit; no duplicate solid line. */
.orbit-key{display:inline-block;vertical-align:middle;width:34px;border-top:2px dashed #ff3d47;margin-right:10px;}

/* Keeps the focus action near the selected satellite without cluttering the globe. */
.focus-object{display:block;width:100%;border:1px solid #555;background:#171717;color:#f4f4f4;min-height:35px;margin-top:12px;font-size:10px;letter-spacing:.09em;font-weight:700;}
.focus-object:hover{background:#303030}

.ride-panel{position:absolute;left:clamp(16px,3vw,55px);bottom:88px;z-index:3;display:flex;gap:10px;align-items:center;flex-wrap:wrap;max-width:min(640px,90vw);background:#080808e8;border:1px solid #777;padding:12px;color:#eee;font-size:10px;letter-spacing:.06em}.ride-panel[hidden]{display:none}.ride-panel select,.ride-panel button{background:#171717;border:1px solid #777;color:#fff;padding:9px;cursor:pointer}.ride-panel small{flex-basis:100%;font-size:9px;color:#aaa}.detail-status{position:absolute;left:clamp(16px,3vw,55px);bottom:53px;font-size:9px;letter-spacing:.12em;color:#9a9a9a;pointer-events:none}@media(max-width:700px){.ride-panel{bottom:125px;right:15px}.detail-status{bottom:61px}}

/* 0.3.7: compact satellite-specific orbital reference frame switch. */
.orbit-mode-label{display:block;margin-top:14px;margin-bottom:7px;font-size:9px;letter-spacing:.12em;color:#999;font-weight:700}
.orbit-mode{display:block;width:100%;background:#111;color:#f0f0f0;border:1px solid #505050;border-radius:2px;padding:9px 7px;font-size:10px;cursor:pointer}
.orbit-description{font-size:10px;line-height:1.45;color:#a6a6a6;margin-top:8px}
@media(max-height:780px){.sat-card{max-height:calc(100% - 135px);overflow-y:auto}.sat-card .card-metrics{margin:12px 0;padding:12px 0}}

/* GLINMON 0.3.8 · optional ground-projection measurements and pair links */
.ground-section{margin-top:14px;border-top:1px solid #343434;border-bottom:1px solid #343434;padding:4px 0 12px}
.ground-switch{gap:7px!important;font-size:10px!important;letter-spacing:.075em;font-weight:700}
.ground-switch input{accent-color:white;flex-shrink:0}
.ground-values{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 2px}
.ground-values>div>span{display:block;font-size:9px;letter-spacing:.07em;color:#999;margin-bottom:6px}
.ground-values b{font:600 12px Consolas,monospace;color:#f5f5f5;white-space:nowrap}
.ground-time{font:10px Consolas,monospace;color:#909090;margin-top:7px}
.proximity-panel{position:absolute;bottom:87px;left:clamp(18px,3.2vw,55px);width:min(360px,calc(100% - 36px));padding:13px 15px;border:1px solid #555;background:#070707ed;z-index:2;font-size:11px}
.proximity-panel[hidden]{display:none}
.proximity-panel .mini-label{display:block;margin-bottom:10px;color:#e5e5e5}
.proximity-panel small{display:block;color:#919191;font-size:10px;line-height:1.5;margin-top:9px}
.pair-row{display:flex;justify-content:space-between;align-items:center;gap:13px;border-top:1px solid #262626;padding:8px 0}
.pair-row span{overflow-wrap:anywhere}.pair-row b{white-space:nowrap;color:#ff7474;font:600 11px Consolas,monospace}
@media(max-width:700px){.proximity-panel{bottom:84px;max-width:calc(100% - 30px)}.ground-values b{font-size:11px}.sat-card{max-height:calc(100% - 122px);overflow-y:auto}}

/* Keep selected-object controls below the fixed header on every screen height. */
.sat-card{max-height:calc(100% - 170px);overflow-y:auto;z-index:2}

/* 0.4.5: tiny frame-toggle glyph. Never overlay the selected satellite name. */
.orbit-inline-toggle{
 position:absolute;z-index:5;display:grid;place-items:center;
 box-sizing:border-box;width:28px;height:28px;min-width:28px;min-height:28px;padding:0;
 border:1px solid rgba(230,230,230,.78);border-radius:50%;background:rgba(10,10,10,.90);
 color:#fff;font:600 17px/1 Arial,sans-serif;cursor:pointer;
 box-shadow:0 1px 6px #0009;touch-action:manipulation;
}
.orbit-inline-toggle[hidden]{display:none}
.orbit-inline-toggle:hover,.orbit-inline-toggle:focus-visible{background:#333;border-color:#fff;outline:2px solid #fff;outline-offset:2px}
.orbit-mode-toast{
 position:absolute;z-index:6;pointer-events:none;max-width:240px;white-space:nowrap;
 padding:5px 8px;border:1px solid #777;border-radius:2px;background:rgba(0,0,0,.93);
 color:#fff;font:700 10px/1.3 Consolas,monospace;letter-spacing:.035em;
 box-shadow:0 1px 8px #000a;
 animation:orbitHintFade 3s ease-out both;
}
.orbit-mode-toast[hidden]{display:none}
@keyframes orbitHintFade{0%,96%{opacity:1}100%{opacity:0}}
@media(max-width:700px){.orbit-inline-toggle{width:34px;height:34px;min-width:34px;min-height:34px;font-size:19px}}
@media(prefers-reduced-motion:reduce){.orbit-mode-toast{animation:none}}

/* 0.4.0: one actual sidebar for satellite details, ride controls and settings. */
.tools{width:min(420px,100vw)}
.tools-body{overflow-y:auto;min-height:0;padding-bottom:24px}
.tools .sat-card,.tools .ride-panel,.tools .proximity-panel{position:relative!important;inset:auto!important;right:auto!important;bottom:auto!important;left:auto!important;top:auto!important;display:block;width:100%;max-width:none;max-height:none;overflow:visible;box-shadow:none;border:0;border-bottom:1px solid #444;padding:18px 4px;margin:0;background:none}
.tools .sat-card[hidden],.tools .ride-panel[hidden],.tools .proximity-panel[hidden]{display:none!important}
.tools .ride-panel{gap:8px;font-size:11px}
.tools .ride-panel select{min-width:100%;margin-top:8px}
.sidebar-selected:has(.sat-card:not([hidden])){margin-bottom:14px}
.settings-fold{margin:3px 0 12px;border-top:1px solid #444}
.settings-fold>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;padding:18px 0;font-size:11px;font-weight:700;letter-spacing:.12em}
.settings-fold>summary::after{content:'+';font-size:20px}
.settings-fold[open]>summary::after{content:'−'}
.ride-speed-row{display:flex;gap:8px;align-items:stretch;margin-top:12px}
.ride-speed-row .focus-object{margin:0;flex:1;min-width:0}
.ride-speed-row>button:not(.focus-object){min-width:44px;border:1px solid #666;background:#191919;color:#fff;font-size:22px}
.ride-speed-row>button:hover{background:#333}
.ride-speed-readout{display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.07em;margin:8px 0 2px;color:#aaa}
.ride-speed-readout b{font:700 14px Consolas,monospace;color:#eee}
.tools .sat-card .card-metrics{grid-template-columns:1fr 1fr}
.tools .sat-card .card-close{top:8px;right:0}
.tools .sat-card .orbit-mode-label{margin-top:14px}
@media(max-width:700px){.tools{width:min(420px,100vw)}.tools .sat-card{max-height:none;overflow:visible;padding:17px 0}.tools-body{padding-left:18px;padding-right:18px}}

/* 0.4.1: ODbL attribution is visible whenever street details are shown. */
.osm-attribution{position:absolute;right:16px;bottom:65px;z-index:3;color:#eee;font:10px/1.4 Arial,sans-serif;text-shadow:0 1px 3px #000;background:rgba(0,0,0,.70);padding:4px 7px;border:1px solid #666}
.osm-attribution[hidden]{display:none}
@media(max-width:700px){.osm-attribution{bottom:100px;right:8px;font-size:9px}}

/* 0.4.2: celestial targets live on the same earth/orbit canvas, never a new floating panel. */
.sky-hover{position:absolute;z-index:7;pointer-events:none;max-width:min(300px,78vw);padding:8px 11px;font:11px/1.5 Consolas,monospace;background:rgba(0,0,0,.92);color:#fff;border:1px solid #777;box-shadow:0 3px 12px #0007}
.sky-hover[hidden]{display:none}
.celestial-card{position:relative;padding:15px 5px 20px;border-bottom:1px solid #5a5a5a;margin-bottom:14px}
.celestial-card[hidden]{display:none}
.celestial-card>h2{font:700 17px/1.3 Arial,sans-serif;margin:8px 0}
.sky-metrics{margin:14px 0 8px}
.sky-metrics b{font:700 13px Consolas,monospace;overflow-wrap:anywhere}
#starsToggle:disabled{opacity:.45}

/* 0.4.6: consolidated live-geography layers, no duplicate legacy application. */
.layer-group{padding:13px 12px;margin:14px 0;background:#0d0d0d;border:1px solid #343434}
.layer-group .eyebrow{margin:4px 0 8px}
.layer-group .check{padding:8px 0;min-height:30px}
.layer-group .menu-button{margin:12px 0 6px}
.map-source-note{font-size:10px;color:#8f8f8f;line-height:1.6;display:block}
@media(max-width:700px){.layer-group{padding:12px 8px}}

/* 0.4.6: altitude on nadir ray, WGS84 datum explicitly stated. */
.ground-height{grid-template-columns:1fr;margin:12px 0 5px}
.ground-altitude-help{display:block;color:#959595;font-size:10px;line-height:1.45;margin-top:3px}

/* 0.4.7: Accent only the words ORANGE DASHED, not the rest of the checkbox label. */
.past-orbit-orange{color:#ffa63a;font-weight:700}

/* 0.4.9: GPU-free, live altitude histogram; no external API traffic. */
.altitude-panel{position:absolute;left:clamp(16px,2.1vw,42px);top:172px;bottom:78px;z-index:3;width:181px;min-height:230px;
 background:rgba(3,3,3,.77);border:1px solid rgba(255,255,255,.23);border-radius:3px;padding:12px 11px;
 display:flex;flex-direction:column;gap:6px;box-shadow:0 8px 22px #0007;color:#eee;}
.altitude-kicker{font-size:9px;letter-spacing:.16em;font-weight:700;color:#eee;white-space:nowrap}
.altitude-selected{font:700 11px Consolas,monospace;min-height:28px;line-height:1.3;color:#fff}
.altitude-axis-title{font:9px Consolas,monospace;letter-spacing:.03em;color:#999}
.altitude-graph{position:relative;flex:1;min-height:100px;touch-action:none;user-select:none}
.altitude-graph canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.altitude-selected-band{position:absolute;left:37px;right:13px;border-left:1px solid #fff7;border-right:1px solid #fff5;background:rgba(230,230,230,.06);pointer-events:none}
.altitude-handle{position:absolute;left:35px;width:calc(100% - 44px);height:27px;transform:translateY(-50%);
 background:transparent;border:0;border-top:2px solid #fff;color:#fff;font:700 9px/1 Consolas,monospace;
 text-align:right;cursor:ns-resize;touch-action:none;user-select:none;z-index:2;padding:2px 0 0 0;text-shadow:0 1px 4px #000}
.altitude-handle span{display:inline-block;background:#090909;border:1px solid #777;border-radius:2px;padding:3px 4px;transform:translateY(-2px)}
.altitude-handle:hover span,.altitude-handle:focus-visible span{background:#444}
.altitude-bin-detail{font:9px/1.25 Consolas,monospace;color:#ddd;min-height:23px;letter-spacing:.02em}
.altitude-reset{border:1px solid #888;color:#fff;background:#151515;padding:6px 4px;font:700 9px Consolas,monospace}
.altitude-reset:hover{background:#444}.altitude-reset:disabled{opacity:.4;cursor:default}
.altitude-panel small{font-size:9px;line-height:1.4;color:#9e9e9e}
@media(max-width:700px){
 .altitude-panel{left:8px;top:162px;bottom:auto;height:380px;min-height:0;width:138px;padding:7px;gap:3px}
 .altitude-kicker{font-size:8px}.altitude-selected{font-size:9px;min-height:26px}
 .altitude-axis-title,.altitude-bin-detail{font-size:8px}
 .altitude-panel small{display:none}.altitude-handle span{font-size:8px}
}
@media(max-height:540px){.altitude-panel{top:105px;bottom:48px}.altitude-panel small{display:none}}

/* 0.5.0: restrained mission classification and two-tier satellite labels. */
.satellite-legend{display:flex;flex-wrap:wrap;gap:8px 13px;padding:11px 2px 5px;font-size:10px;line-height:1.6}
.legend-item{font-weight:600;letter-spacing:.025em}
.muted-starlink{color:#ededed}.muted-weather{color:#a1c9db}.muted-navigation{color:#d2bb8c}.muted-science{color:#b8b0d3}.muted-station{color:#d7d4c7}.muted-communications{color:#b5d1c1}
.classification-note{display:block;color:#888;font-size:9px;line-height:1.6;margin-top:5px}
#osmPbfPath{background:#101010;border:1px solid #454545;color:white;width:100%;margin:7px 0 9px;padding:10px;min-height:39px;font-size:12px}

/* GLINMON 0.5.1 — responsive mission status integrated into the header. */
.header{gap:16px;padding-left:clamp(12px,1.3vw,26px);padding-right:clamp(12px,1.3vw,26px)}
.header .brand{flex-shrink:0;gap:11px;min-width:0}
.header .brand b{font-size:20px}
.header .brand span:not(.brand-period){font-size:8px;padding-left:10px;letter-spacing:.11em}
.header-summary{min-width:0;flex:1;display:flex;align-items:center;justify-content:center;gap:clamp(7px,1.1vw,20px);white-space:nowrap;color:#aaa;font-size:10px}
.header-summary>span{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.header-product{font-size:12px;letter-spacing:.09em;font-weight:750;color:#fff;display:none}
.header-product b{font:700 8px/1 Arial,sans-serif;border:1px solid #555;padding:3px;margin-left:4px}
.header-count strong{font:700 17px/1 Consolas,monospace;color:#fff}
.header-count small{font-size:9px;letter-spacing:.09em}
.header-mode{font:10px Consolas,monospace;color:#b9b9b9}
.header-source{max-width:215px!important;color:#858585}
.header-map{font:9px Consolas,monospace;color:#8c8c8c;max-width:210px!important}
.header-right{flex-shrink:0;gap:12px}
.bottom-info{left:auto;right:16px;bottom:8px;opacity:.56;font:9px Consolas,monospace}
.bottom-info .bottom-right{display:flex}
.altitude-panel{--altitude-panel-width:348px;left:10px;top:12px;bottom:12px;width:var(--altitude-panel-width);min-width:274px;max-width:min(480px,86vw);padding:11px 10px 8px;gap:5px;z-index:3;background:rgba(5,5,6,.84)}
.altitude-panel .altitude-graph{min-height:80px}
.altitude-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 6px;padding:4px 0 3px;border-top:1px solid #262626;border-bottom:1px solid #262626}
.altitude-legend span{display:flex;align-items:center;gap:5px;color:#bcbcbc;font-size:8px;font-weight:600;letter-spacing:.03em;white-space:nowrap}
.altitude-legend span::before{content:'';display:block;flex:0 0 7px;width:7px;height:7px;background:var(--lc);border-radius:2px}
.altitude-panel .altitude-selected{font-size:11px;min-height:15px}
.altitude-panel .altitude-axis-title{font-size:8px;white-space:nowrap}
.altitude-graph .altitude-handle{left:35px;width:calc(100% - 44px)}
.altitude-width-grip{position:absolute;top:24%;right:-9px;width:17px;height:46%;display:grid;place-items:center;cursor:ew-resize;touch-action:none;color:#e7e7e7;border:1px solid #525252;border-radius:9px;background:#121212;font-size:16px;z-index:5;user-select:none}
.altitude-width-grip:hover,.altitude-width-grip:focus-visible{background:#444;border-color:#fff}
.altitude-breakdown{min-height:19px;font:9px/1.4 Consolas,monospace;color:#a9b0ba;overflow-wrap:anywhere}
.altitude-panel small{font-size:9px;line-height:1.35}
@media(max-width:1470px){.header-map{display:none}.header-source{display:none}}
@media(max-width:1100px){.header .brand span:not(.brand-period){display:none}.header-mode{display:none}}
@media(max-width:700px){.header{height:55px}.header .brand b{font-size:16px}.header-count strong{font-size:13px}.header-count small{display:none}.header-product{display:none}.header-right .live-indicator{display:none}.icon-action{height:33px;padding:0 9px}.altitude-panel{top:10px;bottom:9px;height:auto;min-height:0;width:min(var(--altitude-panel-width),62vw);left:5px;padding:8px 8px 5px;gap:3px}.altitude-legend span{font-size:7px}.altitude-panel small{display:none}.altitude-breakdown{font-size:8px}.altitude-width-grip{right:-8px}.bottom-info{font-size:8px;right:7px;bottom:3px}}
@media(max-height:540px){.altitude-panel{top:8px;bottom:7px;height:auto}.altitude-panel .altitude-legend{display:none}.altitude-panel small{display:none}}

/* GLINMON 0.5.3 — compact resize control and interactive mission legend. */
.altitude-panel-head{display:flex;justify-content:space-between;align-items:center;gap:6px;min-width:0}
.altitude-type-all{border:1px solid #4c4c4c;color:#a7a7a7;background:#0d0d0d;
 padding:3px 5px;font:700 8px/1.1 Consolas,monospace;white-space:nowrap;cursor:pointer}
.altitude-type-all.active{border-color:#d9d9d9;color:#f0f0f0}
.altitude-type-all:hover,.altitude-type-all:focus-visible{background:#343434;color:#fff}
.altitude-legend button{font:600 8px/1.35 Arial,sans-serif;display:flex;align-items:center;gap:5px;
 text-align:left;border:1px solid transparent;background:transparent;color:#bbb;padding:3px 2px;
 letter-spacing:.03em;white-space:nowrap;cursor:pointer;min-width:0}
.altitude-legend button::before{content:'';display:block;flex:0 0 7px;width:7px;height:7px;
 border-radius:2px;background:var(--lc)}
.altitude-legend button.active{color:#fff;border-color:#454545;background:#ffffff0b}
.altitude-legend button[aria-pressed="false"]{color:#777;opacity:.46}
.altitude-legend button:hover,.altitude-legend button:focus-visible{background:#343434;opacity:1;outline-color:#ddd}
/* Resize grip: formerly a tall capsule covering 46% of the chart edge. */
.altitude-width-grip{top:50%;transform:translateY(-50%);right:-6px;width:12px;height:38px;
 min-height:0;border-radius:5px;font-size:13px;border-color:#707070;background:#161616;}
.altitude-width-grip::before{content:'';position:absolute;inset:-7px -7px;}
.altitude-graph .altitude-handle{height:25px;border-top-width:1px}
.altitude-handle span{font-size:8px;padding:2px 3px}
@media(max-width:700px){.altitude-width-grip{right:-6px;height:34px}}
/* Tooltip updates must never resize the graph during a pointer gesture. */
.altitude-panel .altitude-bin-detail{height:24px;min-height:0;flex:0 0 24px;overflow:hidden}
.altitude-panel .altitude-breakdown{height:28px;min-height:0;flex:0 0 28px;overflow:hidden}

/* 0.5.4: GPU satellite sprites behind 2D labels, never intercept clicks. */
#orbitGpu{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}

/* 0.5.5: the two white vertical edges of the selected range used to obscure
   numeric labels on long histogram bars. Retain translucent fill only. */
.altitude-selected-band{border-left:0!important;border-right:0!important;background:rgba(236,236,236,.045)}
/* 0.5.5: no tiny unstable status fragments / ellipses in the top header. */
.header-summary{gap:clamp(8px,1.25vw,18px);justify-content:center;overflow:hidden}
.header-summary .header-source,.header-summary .header-map{display:none!important}
.header-summary>span{overflow:visible;text-overflow:clip;white-space:nowrap;flex-shrink:0}
.header-summary .header-count{display:flex;gap:5px;align-items:baseline}
.header-summary .header-mode{color:#999;font-size:10px}
.header .live-indicator span{display:none}
.header .live-indicator{gap:0}
.header{min-width:0}
@media(max-width:800px){.header-summary .header-mode{display:none}.header-summary .header-count strong{font-size:13px}}
@media(max-width:440px){.header-summary .header-count small{display:none}.header{gap:8px}.header-summary{justify-content:flex-end}}
.heatmap-controls{margin:0 0 6px}.heatmap-compact{display:flex;align-items:center;gap:12px;margin-top:8px;min-width:0}
.heatmap-compact label{font-size:9px;color:#a5a5a5;white-space:nowrap;letter-spacing:.1em;font-weight:700}
.heatmap-compact select{flex:1;min-width:0;margin:0;padding:7px!important}
.heatmap-cancel{width:100%;border:1px solid #575757;background:#131313;color:#ddd;font-size:10px;padding:9px;margin-top:4px}
.heatmap-progress{height:3px;overflow:hidden;background:#272727;margin-top:8px}
.heatmap-progress>div{width:0;height:100%;background:#e7e7e7;transition:width .2s linear}
.heatmap-badge{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:3;
 background:rgba(8,8,9,.87);border:1px solid #444;white-space:nowrap;padding:6px 10px;
 color:#eee;font:700 10px Consolas,monospace;pointer-events:none}
.heatmap-badge[hidden]{display:none}

/* GLINMON 0.5.7 — one visible mission selector; counts on the colour-coded selections. */
.mission-picker-head{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-top:19px;
 font:700 10px/1.3 Arial,sans-serif;letter-spacing:.13em;color:#aaa}
.mission-all{background:#141414;border:1px solid #575757;color:#ddd;font-size:9px;padding:6px 9px;white-space:nowrap}
.mission-all.active{border-color:#bcbcbc;color:#fff}
.mission-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px}
.mission-picker button{display:flex;align-items:center;gap:5px;min-width:0;min-height:34px;padding:7px 6px;
 border:1px solid #555;background:rgba(15,15,15,.7);color:#e0e0e0;text-align:left;cursor:pointer}
.mission-picker button .mission-symbol{flex:0 0 14px;color:var(--mission-color);font-weight:800;font-size:13px;text-align:center}
.mission-picker button .mission-label{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:700 9px/1.2 Arial,sans-serif;letter-spacing:.025em}
.mission-picker button .mission-count{margin-left:auto;flex-shrink:0;font:700 9px/1 Consolas,monospace;color:var(--mission-color);font-variant-numeric:tabular-nums}
.mission-picker button.active{background:color-mix(in srgb,var(--mission-color) 9%,#0e0e0e);border-color:color-mix(in srgb,var(--mission-color) 48%,#424242)}
.mission-picker button[aria-pressed="false"]{opacity:.43;border-color:#333}
.mission-picker button:hover,.mission-picker button:focus-visible{opacity:1;border-color:var(--mission-color)}
.mission-picker-help{font-size:10px;color:#969696;line-height:1.5;margin:9px 0 15px}
.catalog-source-advanced{border-top:1px solid #333;border-bottom:1px solid #333;margin:14px 0 0;padding:9px 0}
.catalog-source-advanced summary{cursor:pointer;color:#aaa;font:bold 10px/1.4 Arial,sans-serif;letter-spacing:.11em}
.catalog-source-advanced>label{display:block;color:#999;font-size:10px;margin:10px 0 7px}
.catalog-source-advanced select{width:100%}
.orbit-track-legend{margin:13px 0 10px;padding:9px 0;border-top:1px solid #383838;border-bottom:1px solid #383838}
.orbit-track-row{display:flex;align-items:center;gap:9px;min-height:37px;font:600 10px/1.4 Arial,sans-serif;color:#ddd}
.orbit-track-row+.orbit-track-row{border-top:1px solid #202020}
.orbit-track-row .orbit-row-spacer,.orbit-track-row input{flex:0 0 16px;width:16px;height:16px;margin:0}
.orbit-track-row input{accent-color:#f4f4f4}
.orbit-track-row .orbit-key{flex:0 0 32px;width:32px;border-top:2px dashed #ff4550;margin:0}
.orbit-track-row .orbit-key-past{border-color:#ffa63a}
.orbit-track-label{min-width:0}.orbit-track-label small{display:block;font-size:9px;color:#8f8f8f;font-weight:400}
.future-orbit-red{color:#ff626c}.past-orbit-orange{color:#ffa63a}
@media(max-width:700px){.mission-picker{grid-template-columns:1fr 1fr}.mission-picker button .mission-label{font-size:8px}}

/* 0.5.8 – small, calm always-visible legal attribution for the source imagery. */
.imagery-attribution{position:absolute;right:15px;bottom:32px;z-index:5;
 max-width:420px;padding:4px 8px;background:rgba(0,0,0,.65);
 color:rgba(221,216,206,.67);font-size:9px;letter-spacing:.04em;
 line-height:1.4;pointer-events:none;text-align:right}
@media(max-width:780px){.imagery-attribution{font-size:8px;max-width:50vw;right:6px}}

/* GLINMON 0.5.9 — compact orbital FILTERS tab; native drag handles remain accessible. */
.alt-filter-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;flex:0 0 auto;margin-bottom:5px}
.alt-filter-tabs button{min-width:0;border:1px solid #373737;background:#0b0b0c;color:#999;
 font:700 10px/1.2 Consolas,monospace;letter-spacing:.06em;padding:9px 5px;cursor:pointer}
.alt-filter-tabs button[aria-selected="true"]{background:#242424;color:#fff;border-color:#888}
.alt-filter-tabs button:hover{color:#fff;border-color:#888}
.alt-filter-tabs span{color:#e2c69d;font-size:9px}
.altitude-panel>#altitudeTabContent{display:flex;flex:1;flex-direction:column;gap:5px;min-height:0;overflow:hidden}
#altitudeTabContent[hidden],#orbitalFilterView[hidden]{display:none!important}
.altitude-panel #altitudeTabContent .altitude-graph{flex:1;min-height:75px}
#orbitalFilterView{display:flex;flex-direction:column;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;
 scrollbar-color:#555 #111;scrollbar-width:thin;padding-right:4px}
.orbital-filter-heading{display:flex;justify-content:space-between;align-items:center;margin:1px 0 8px;gap:6px}
.orbital-filter-heading strong{font:700 10px/1.4 Consolas,monospace;letter-spacing:.08em;color:#ddd}
.orbital-filter-heading button{background:#191919;border:1px solid #565656;color:#ddd;font:700 9px Consolas,monospace;padding:6px;cursor:pointer}
.filter-status{font:10px/1.45 Consolas,monospace;color:#b7c6d2;margin-bottom:7px}
.orbital-filter-rows{display:flex;flex-direction:column;gap:10px}
.orbital-filter-card{background:#111114;border:1px solid #333;padding:9px 8px;min-width:0}
.orbital-filter-card.active{border-color:#b9a17b;background:#1a1715}
.filter-card-head{display:flex;justify-content:space-between;align-items:center;gap:5px;font:700 10px Consolas,monospace;color:#eee;letter-spacing:.055em}
.filter-clear{cursor:pointer;flex:0 0 23px;width:23px;height:22px;border:1px solid #505050;background:#1b1b1b;color:#dcdcdc;font-size:16px}
.filter-clear:hover{background:#333}
.filter-extremes{font:9px/1.5 Consolas,monospace;color:#888;font-variant-numeric:tabular-nums}
.filter-minmax{margin:4px 0 3px}
.filter-histogram{width:100%;height:33px;display:block;background:#0a0a0a;border-bottom:1px solid #555}
.filter-slider-track{position:relative;height:19px;margin:0 0 7px}
.filter-slider-track input[type=range]{-webkit-appearance:none;appearance:none;position:absolute;left:0;top:0;
 width:100%;height:19px;margin:0;background:transparent;pointer-events:none;cursor:ew-resize}
.filter-slider-track input[type=range]::-webkit-slider-runnable-track{height:2px;background:transparent}
.filter-slider-track input[type=range]::-moz-range-track{height:2px;background:transparent}
.filter-slider-track input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;
 pointer-events:auto;width:12px;height:18px;margin-top:-8px;background:#e3dfd7;border:1px solid #444;border-radius:3px}
.filter-slider-track input[type=range]::-moz-range-thumb{pointer-events:auto;width:11px;height:17px;
 background:#e3dfd7;border:1px solid #444;border-radius:3px}
.filter-bound-fields{display:flex;align-items:end;gap:4px;min-width:0}
.filter-bound-fields label{display:flex;flex-direction:column;flex:1;min-width:0;font:8px/1.5 Consolas,monospace;color:#888}
.filter-bound-fields label input{width:100%;min-width:0;padding:5px 3px;border:1px solid #555;background:#0a0a0a;
 color:white;border-radius:0;font:10px Consolas,monospace;font-variant-numeric:tabular-nums}
.filter-bound-fields>span{flex:0 0 auto;color:#aaa;font:9px Consolas,monospace;max-width:36px;padding-bottom:6px}
.filter-total{margin-top:5px;color:#bababa}
.filter-help{font:9px/1.5 Arial,sans-serif;color:#8d8d8d;margin-top:4px}
.orbital-filter-note{font:10px/1.6 Arial,sans-serif;color:#a09d96;padding-bottom:15px}

/* Public encyclopedia context is not orbital telemetry. Every illustration
   cites its actual Wikipedia / Commons source and relationship to the object. */
.sat-knowledge{margin:17px 0;padding:12px 0;border-top:1px solid #363636;border-bottom:1px solid #363636}
.knowledge-head{font:700 10px/1.4 Consolas,monospace;color:#dadada;letter-spacing:.11em;margin-bottom:8px}
.knowledge-status{font:10px/1.5 Arial,sans-serif;color:#aaa;margin-bottom:9px}
.knowledge-article{margin:10px 0 14px;border-left:2px solid #777;padding-left:10px}
.knowledge-article-title{font-size:13px;color:white;font-weight:700}
.knowledge-relation{font:9px/1.45 Consolas,monospace;color:#dfbb87;letter-spacing:.02em;margin:4px 0 7px}
.knowledge-article img{display:block;max-width:100%;width:auto;max-height:210px;object-fit:contain;margin:7px 0}
.knowledge-article p,.knowledge-missing{font:11px/1.7 Arial,sans-serif;color:#c3c3c3;margin:8px 0}
.knowledge-links{display:flex;flex-wrap:wrap;gap:5px 12px}
.knowledge-links a,.knowledge-gallery a{font:10px/1.5 Arial,sans-serif;color:#b3d4ec;text-decoration:underline}
.knowledge-gallery-label{font:700 9px Consolas,monospace;letter-spacing:.08em;margin:10px 0;color:#aaa}
.knowledge-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.knowledge-gallery figure{margin:0;min-width:0;background:#171717;border:1px solid #353535;padding:5px}
.knowledge-gallery img{width:100%;max-height:130px;object-fit:contain;display:block}
.knowledge-gallery figcaption,.knowledge-gallery span{display:block;font:9px/1.4 Arial,sans-serif;color:#c1c1c1;margin-top:5px;overflow-wrap:anywhere}
.knowledge-disclaimer{font:10px/1.5 Arial,sans-serif;color:#ae9b83}

/* GLINMON 0.7.11 · selected country and real-time subsatellite list */
.country-panel{position:absolute;z-index:18;right:18px;top:52px;width:min(330px,calc(100% - 36px));background:rgba(7,13,16,.94);border:1px solid rgba(217,235,209,.35);color:#f0f4ee;box-shadow:0 10px 36px rgba(0,0,0,.35);padding:13px;font-family:Arial,sans-serif;backdrop-filter:blur(10px);pointer-events:auto}
.country-panel[hidden]{display:none!important}.country-panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.country-panel h2{font-size:18px;line-height:1.25;margin:6px 0 4px}.country-panel .mini-label{font-size:9px;letter-spacing:1.1px;color:#b8c9b2}.country-panel-head button{min-width:32px;min-height:32px;font-size:20px;border:1px solid #5e6a5b;background:#151b18;color:white;cursor:pointer}.country-count{font-size:13px;letter-spacing:.8px;color:#d9efc8;margin-top:10px;font-weight:bold}.country-utc{font-size:10px;color:#b9c5bd;margin-top:4px}.country-explainer{line-height:1.45;font-size:11px;color:#bbc4bc;margin:10px 0}.country-results{max-height:min(42vh,360px);overflow-y:auto;display:flex;flex-direction:column;gap:2px}.country-satellite{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 6px;border:1px solid transparent;background:rgba(255,255,255,.04);color:#f5f5f5;font-size:11px;text-align:left;cursor:pointer}.country-satellite:hover,.country-satellite:focus-visible{background:rgba(225,238,218,.16);border-color:#9cb68d}.country-satellite span{overflow-wrap:anywhere}.country-satellite small{font-size:10px;white-space:nowrap;color:#c2d4b7}.country-empty{font-size:11px;color:#e1e7dd}@media(max-width:700px){.country-panel{top:53px;right:8px;width:min(270px,calc(100% - 16px));padding:9px}.country-results{max-height:28vh}}

/* GLINMON 0.7.12 · live country ranking in header */
.header-mode[hidden]{display:none!important}
.country-rank-header{position:relative;display:flex;align-items:center;min-width:0;z-index:45;overflow:visible!important;flex-shrink:1}
.country-rank-header>button{display:flex;align-items:center;gap:8px;color:#eff6f0;background:transparent;border:1px solid rgba(205,227,209,.27);padding:6px 10px;min-height:32px;max-width:min(360px,38vw);cursor:pointer;white-space:nowrap}
.country-rank-header>button:hover,.country-rank-header>button[aria-expanded="true"]{border-color:rgba(225,243,230,.72);background:#1b2420}
.country-rank-kicker{color:#aebbb1;font:700 8px/1.2 Arial,sans-serif;letter-spacing:.09em}
#countryRankToggle.conj-warn .country-rank-kicker::before{content:'⚠ ';color:#ff4d5e;font-size:13px;vertical-align:-1px}
.country-rank-value{font:700 12px/1.2 Arial,sans-serif;overflow:hidden;text-overflow:ellipsis}
.country-rank-chevron{color:#bacbbc;font-size:12px}
.country-rank-menu{position:absolute;top:calc(100% + 9px);left:50%;transform:translateX(-50%);width:min(390px,calc(100vw - 20px));max-height:min(73vh,650px);background:rgba(9,14,13,.98);border:1px solid #53635a;box-shadow:0 14px 50px #000c;display:flex;flex-direction:column;padding:13px;white-space:normal;color:#eaf3ee;z-index:50}
.country-rank-menu[hidden]{display:none!important}
.country-rank-menu-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font:700 11px Arial,sans-serif;letter-spacing:.08em;margin-bottom:12px}
.country-rank-menu-head button{border:1px solid #47534c;background:#18221d;color:white;font-size:20px;width:30px;height:30px}
.country-rank-search-label{font-size:10px;color:#adbbaf;margin-bottom:6px;letter-spacing:.04em}
.country-rank-menu input{font-size:14px;line-height:1.3;color:white;background:#111a17;border:1px solid #637267;padding:9px;width:100%;border-radius:2px}
.country-rank-meta{font:10px Arial,sans-serif;color:#c3d0c5;margin:10px 0}
.country-rank-list{overflow:auto;overscroll-behavior:contain;flex:1;min-height:80px;max-height:390px}
.country-rank-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:35px;border:0;border-bottom:1px solid #26312b;background:transparent;color:#e5eee7;text-align:left;padding:7px 8px;font:12px Arial,sans-serif;cursor:pointer}
.country-rank-item:hover,.country-rank-item:focus-visible{background:#26392c}.country-rank-item b{font:700 12px Consolas,monospace;color:#e4f2d8}.country-rank-item[aria-selected="true"]{background:#263d2e}
.country-rank-foot{font:10px/1.4 Arial,sans-serif;color:#9ba99c;margin-top:10px}
/* Lovable: conjunction warnings section inside the country-rank menu */
.conj-section{border:1px solid #6e3535;border-left:3px solid #ff5050;background:#1d1113;border-radius:3px;padding:8px;margin-bottom:10px}
.conj-section[hidden]{display:none!important}
.conj-head{font:700 10px Arial,sans-serif;letter-spacing:.09em;color:#ff9090;margin-bottom:6px}
.conj-list{display:flex;flex-direction:column;max-height:190px;overflow-y:auto}
.conj-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 4px;border-bottom:1px solid #3a2426}
.conj-item:last-child{border-bottom:0}
.conj-info{display:flex;flex-direction:column;min-width:0;gap:1px}
.conj-info b{font:700 11px Arial,sans-serif;color:#ffd4d4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conj-info span{font:10px Consolas,monospace;color:#e09090}
.conj-sim{flex:none;font:700 10px Arial,sans-serif;letter-spacing:.06em;padding:4px 9px;border:1px solid #ff5050;border-radius:3px;background:#3a1518;color:#ffb9b9;cursor:pointer}
.conj-sim:hover,.conj-sim:focus-visible{background:#5c1d21;color:#fff}
.conj-foot{font:9px/1.35 Arial,sans-serif;color:#b98d8d;margin-top:6px}
/* Lovable: conjunction simulation banner (ride clock paused at TCA) */
.conj-banner{position:fixed;top:64px;left:50%;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;align-items:center;gap:4px;padding:9px 16px;border:1px solid #ff5050;border-radius:6px;background:rgba(29,17,19,.94);box-shadow:0 8px 30px #000a;color:#ffd4d4;font:11px Arial,sans-serif;letter-spacing:.04em;text-align:center;max-width:min(520px,calc(100vw - 24px))}
.conj-banner[hidden]{display:none!important}
.conj-banner-dist{font:700 13px Consolas,monospace;color:#ff7070}
.conj-resume{font:700 11px Arial,sans-serif;letter-spacing:.06em;padding:5px 14px;border:1px solid #ff5050;border-radius:4px;background:#3a1518;color:#fff;cursor:pointer}
.conj-resume:hover,.conj-resume:focus-visible{background:#5c1d21}
body.glin-clean .conj-banner{display:none!important}
.conj-close{position:absolute;top:4px;right:5px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid #ff505088;border-radius:4px;background:transparent;color:#ffd4d4;font:12px Arial,sans-serif;cursor:pointer}
.conj-close:hover{background:#ff505033}
.conj-banner{padding-right:32px}
@media(max-width:900px){.country-rank-kicker{display:none}.country-rank-value{font-size:11px}.country-rank-header>button{max-width:46vw}}
@media(max-width:600px){.country-rank-header>button{padding:5px;min-height:30px;max-width:43vw}.country-rank-menu{left:auto;right:-55px;transform:none;width:min(360px,calc(100vw - 12px))}}
/* The dropdown must escape the old header-summary clipping box. */
.header-summary{overflow:visible!important}
.header{overflow:visible!important}

/* 0.7.13: compact nearest-neighbour readout in the existing ride HUD. */
.ride-nearest{display:flex;align-items:center;gap:9px;flex-wrap:wrap;flex-basis:100%;padding:8px 10px;border:1px solid rgba(255,100,100,.28);background:rgba(26,7,9,.6)}
.ride-nearest span{color:#bd989a;font-size:9px}.ride-nearest strong{font-size:11px;color:#f6e8e8;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ride-nearest b{color:#ff777e;font-size:12px;margin-left:auto}

/* GPU-reprojected geographic labels and boundaries during camera movement */
#geoWarpGpu{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;visibility:hidden;}

/* 0.7.19: independent tracked-object dock, never buried in Settings scroll. */
.tracked-dock{position:absolute;right:420px;top:67px;bottom:0;z-index:9;width:min(410px,calc(100vw - 430px));background:rgba(10,13,16,.97);border-left:1px solid #424b52;box-shadow:-14px 0 45px #0008;display:flex;flex-direction:column}
.tracked-dock[hidden]{display:none!important}
.tracked-dock-head{display:flex;justify-content:space-between;align-items:center;flex:none;padding:19px 20px 12px;border-bottom:1px solid #3a4046}
.tracked-dock-head h2{font-size:15px;letter-spacing:.13em;margin:6px 0 0}
.tracked-dock-head button{border:1px solid #50555b;background:#131820;color:#eee;min-width:35px;min-height:35px}
.tracked-dock-body{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:8px 18px 30px;flex:1}
.tracked-dock .sat-card,.tracked-dock .celestial-card,.tracked-dock .ride-panel,.tracked-dock .proximity-panel{display:block;position:relative!important;inset:auto!important;width:100%;max-width:none;max-height:none;overflow:visible;box-shadow:none;border:0;border-bottom:1px solid #384048;background:none;padding:16px 2px;margin:0}
.tracked-dock .sat-card[hidden],.tracked-dock .celestial-card[hidden],.tracked-dock .ride-panel[hidden],.tracked-dock .proximity-panel[hidden]{display:none!important}
.tracked-dock .sat-card .card-close{top:7px;right:0}
.tools[hidden]~.tracked-dock{right:0}
#app:has(.tools[hidden]) .tracked-dock{right:0}
#app:has(.tools:not([hidden])) .tracked-dock{right:min(420px,100vw)}
#groundSky{position:absolute;inset:0;width:100%;height:100%;z-index:2;display:block;cursor:grab;touch-action:none}
#groundSky[hidden]{display:none!important}
.ground-entry{position:absolute;left:50%;transform:translateX(-50%);bottom:28px;z-index:5;text-align:center;pointer-events:none}
.ground-entry button{pointer-events:auto;background:#0d171bea;border:1px solid #71878b;color:#f0f3f3;padding:11px 17px;font-size:11px;letter-spacing:.1em;font-weight:700}
.ground-entry span{display:block;margin-top:7px;color:white;background:#111b;padding:8px;font-size:12px}
.ground-entry span[hidden]{display:none}
.ground-controls{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:7;background:#09131be8;border:1px solid #78909a;padding:12px 17px;color:#edf4f7;text-align:center;width:min(620px,92%);max-height:40%;overflow:auto}
.ground-controls[hidden]{display:none!important}
.ground-title{font-size:12px;font-weight:800;letter-spacing:.08em;display:flex;justify-content:space-between;gap:15px;align-items:center}
.ground-title button,.ground-control-row button{background:#172632;border:1px solid #566874;color:white;min-width:38px;min-height:36px;padding:7px;font-size:12px}
.observer-location{font-size:11px;margin:9px 0;color:#bbcad0}
.ground-control-row{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap;margin-bottom:8px}
.ground-controls small{font-size:10px;color:#b5c7d1;line-height:1.5}
#app:has(.ground-controls:not([hidden])) #enterGround{display:none}
#app:has(.ground-controls:not([hidden])) .view-controls{display:none}
@media(max-width:1000px){.tracked-dock{width:min(390px,68vw)!important;right:0!important}.tools:not([hidden])~*{}#app:has(.tools:not([hidden])) .tracked-dock{right:0!important;top:56px;bottom:45%;z-index:12}.tracked-dock-body{padding:4px 12px}.ground-controls{bottom:5px}}
@media(max-width:700px){.tracked-dock{top:56px}.tracked-dock-head{padding:10px}.tracked-dock-head h2{font-size:12px}.tracked-dock{width:min(360px,84vw)!important}.ground-entry{bottom:16px}.ground-controls{max-height:52%}}

/* 0.7.20: reserved side-by-side columns: the selected object NEVER overlays the map or settings. */
@media (min-width:1100px){
  #app:has(#trackedDock:not([hidden])) #viewport{margin-right:clamp(310px,23vw,410px)}
  #app:has(#trackedDock:not([hidden])):has(#tools:not([hidden])) #viewport{margin-right:calc(clamp(310px,23vw,410px) + min(420px,23vw))}
  #app #trackedDock:not([hidden]){right:0!important;width:clamp(310px,23vw,410px)!important;z-index:12;box-shadow:none}
  #app:has(#tools:not([hidden])) #trackedDock:not([hidden]){right:min(420px,23vw)!important}
  #app:has(#trackedDock:not([hidden])) #tools:not([hidden]){width:min(420px,23vw);z-index:13}
  #app:has(#trackedDock:not([hidden])) #viewport .country-panel{right:12px}
}
@media (max-width:1099px){
  #app:has(#trackedDock:not([hidden])) #viewport{margin-right:0}
  #app #trackedDock:not([hidden]){z-index:14;top:56px;bottom:0;right:0!important;width:min(390px,82vw)!important}
  #app:has(#tools:not([hidden])) #trackedDock:not([hidden]){right:min(390px,42vw)!important;width:min(390px,42vw)!important}
  #app:has(#tools:not([hidden])) #tools:not([hidden]){width:min(390px,42vw)}
}

/* 0.7.21 — Ground observer extra controls */
.ground-control-row{flex-wrap:wrap;justify-content:center;gap:5px}
.eye-height-label{font:10px Consolas,monospace;letter-spacing:.08em;color:#bdcbd2;margin-left:9px}
#groundEyeHeight{background:#0b1b25;color:#eff9ff;border:1px solid #59737f;padding:6px 5px;font:11px Consolas,monospace;min-height:30px}

/* 0.7.22 — native NASA imagery in ground observer mode; overlays are non-interactive. */
#groundSurface{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;display:block}
#groundSurface[hidden]{display:none!important}
#groundSky{z-index:2}

/* 0.7.22 — unobtrusive ground observer trails. */
.ground-trail-option{font:10px Consolas,monospace;color:#b8d4dd;letter-spacing:.08em;display:inline-flex;align-items:center;gap:7px;margin:0 0 8px}
.ground-trail-option input{accent-color:#b8d4dd}

/* 0.7.23: compact ground observer controller and screen-only observer mode. */
.clean-screen-orb{appearance:none;border:1px solid rgba(207,225,233,.3);border-radius:50%;background:radial-gradient(circle at 32% 28%,#ebf4fc 0 8%,#748e9d 25%,#162630 62%,#080c13 100%);box-shadow:0 0 11px #beddef48;color:transparent;width:23px;height:23px;flex:0 0 23px;padding:0;cursor:pointer}
.clean-screen-orb:hover{box-shadow:0 0 16px #c7e5fdaa;border-color:#b8d3e0}
.ground-controls{width:min(540px,88%);padding:7px 10px;max-height:35%;bottom:10px;background:#07111ac9;border-color:#5a748078}
.ground-title{font-size:10px;align-items:center}
.ground-actions{display:flex;gap:5px}.ground-title button{font-size:10px;min-height:27px;padding:3px 8px}
.ground-controls.compact{width:min(450px,86%);padding:6px 10px}
.ground-controls.compact .observer-location,.ground-controls.compact .ground-trail-option,.ground-controls.compact .ground-control-row,.ground-controls.compact small{display:none!important}
body.glin-clean .header{height:0!important;overflow:visible;border:0;padding:0;flex:0 0 0;z-index:40}
body.glin-clean .header>.brand,body.glin-clean .header>.header-summary,body.glin-clean .header .live-indicator,body.glin-clean .header #openTools{display:none!important}
body.glin-clean #cleanScreenToggle{position:fixed;right:16px;top:14px;z-index:100;width:27px;height:27px}
body.glin-clean .tools,body.glin-clean .tracked-dock,body.glin-clean .altitude-panel,body.glin-clean .bottom-info,body.glin-clean .upper-info,body.glin-clean .view-controls,body.glin-clean .ground-entry,body.glin-clean .ground-controls,body.glin-clean .country-panel,body.glin-clean .country-rank-menu,body.glin-clean .load-panel{display:none!important}
body.glin-clean #viewport{margin-right:0!important}
/* Lovable: clean screen also hides header leftovers (news, country ranking, language) and news drawer. */
body.glin-clean #newsToggle,body.glin-clean #newsPanel,body.glin-clean #countryRankHeader,body.glin-clean #glinmonLanguage,body.glin-clean .header-summary,body.glin-clean .tracked-dock,body.glin-clean .country-panel{display:none!important;pointer-events:none!important}

/* 0.7.27 · Continuous free-flight camera and shared UTC ephemeris */
.ground-entry{display:flex;gap:7px;align-items:center;justify-content:center;flex-wrap:wrap}
.ground-entry button{white-space:nowrap}
.flight-controls{margin:8px 0;padding:8px;border:1px solid #425967;background:#06151dcf;text-align:left}
.flight-controls[hidden]{display:none!important}
.flight-status{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font:10px Consolas,monospace;color:#b7d0df}
.flight-status button{padding:5px 10px;background:#27495c;border:1px solid #91cbd8;color:#fff;min-height:32px;cursor:pointer}
.flight-speed{display:flex;gap:10px;align-items:center;margin-top:8px;font:10px Consolas,monospace;color:#dbe7ee}
.flight-speed input{flex:1;min-width:60px;accent-color:#a3cbd8}
.flight-speed output{min-width:95px;text-align:right}
.flight-controls small{display:block;margin-top:6px}
.ground-controls.compact .flight-controls{display:block!important}
.ground-controls.compact .flight-controls small{display:none!important}
@media(max-width:600px){.ground-entry button{font-size:9px;padding:8px}.flight-status span{display:none}}

/* 0.7.28: tiny floating clean-screen globe removed; F8 toggles, Esc returns. */
body.glin-clean .header{height:0!important}

/* 0.7.33 · One intentional globe control for clean screen; suppress legacy status LED. */
.header .live-indicator{display:none!important}
.clean-screen-orb{position:relative;display:inline-grid;place-items:center;width:26px;height:26px;min-width:26px;min-height:26px;flex:0 0 26px;padding:0;border:1px solid #b3ccd5;border-radius:50%;
 background:radial-gradient(circle at 30% 23%,#f6fbff 0 5%,#8abed0 15%,#316276 35%,#102b3e 62%,#040d17 87%);
 box-shadow:0 0 0 2px #0008,0 0 10px #9cdeff5c;cursor:pointer;transition:box-shadow .18s,transform .18s}
.clean-screen-orb::after{content:"";position:absolute;inset:4px 5px;border:1px solid #c1e3ea80;border-left-color:transparent;border-right-color:transparent;border-radius:50%;transform:rotate(-25deg);pointer-events:none}
.clean-screen-orb:hover{transform:scale(1.08);box-shadow:0 0 14px #b6ebffb0}
.clean-screen-orb[aria-pressed="true"]{box-shadow:0 0 0 2px #000,0 0 15px #d6f5ff}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.glin-clean #cleanScreenToggle{display:inline-grid!important;position:fixed!important;right:18px!important;top:14px!important;z-index:101!important;width:26px;height:26px}
.tracking-group-head{margin:3px 0 14px;color:#d0e0e9}
@media(max-width:700px){.header-right{gap:10px}.clean-screen-orb{width:26px;height:26px;min-width:26px;min-height:26px}}

/* 0.7.48 — The selected-country card lives in #app, never in the globe viewport.
   On desktop it sits BESIDE the Control Center and selected-object dock,
   instead of being drawn on top of either sidebar. No map/render change. */
#app > .country-panel{top:calc(67px + 12px);right:12px;z-index:7;max-height:calc(100% - 95px);overflow-y:auto}
@media(min-width:1100px){
 #app:has(#tools:not([hidden])) > .country-panel{right:calc(min(420px, 100vw) + 12px)}
 #app:has(#trackedDock:not([hidden])) > .country-panel{right:calc(clamp(310px,23vw,410px) + 12px)}
 #app:has(#tools:not([hidden])):has(#trackedDock:not([hidden])) > .country-panel{right:calc(min(420px,23vw) + clamp(310px,23vw,410px) + 12px)}
}
@media(max-width:1099px){
 #app > .country-panel{top:calc(56px + 8px);right:8px;width:min(330px,calc(100% - 16px))}
 /* Small displays cannot show three columns without overlap. The country
    card stays selected and returns when the settings or detail dock closes. */
 #app:has(#tools:not([hidden])) > .country-panel,
 #app:has(#trackedDock:not([hidden])) > .country-panel{display:none}
}

/* 0.7.49: roomier selected-object panel without changing global settings. */
.tracked-dock-body{padding:12px 22px 34px;line-height:1.55}
.tracked-dock .sat-card,.tracked-dock .ride-panel{padding-top:22px;padding-bottom:22px}
.tracked-dock .sat-card .ground-section,.tracked-dock .sat-card .orbit-track-legend{margin-block:16px}
.tracked-dock .sat-card .card-metrics{margin-block:17px}
.tracked-dock .sat-card label,.tracked-dock .ride-panel label{line-height:1.5}
.tracked-dock .ride-panel select,.tracked-dock .ride-panel button{min-height:38px}
#rideBottom[hidden],.flight-speed[hidden]{display:none!important}
#rideBottom{background:#102e2c;border:1px solid #80cabc;color:#e1fff9;font-weight:700;letter-spacing:.1em}
@media(max-width:700px){.tracked-dock-body{padding:12px 16px 25px}}

/* 0.7.50 · One-truth RIDE UI: compact HUD and one fast-forward action. */
.ride-speed-row{display:flex;align-items:center;gap:9px;margin:15px 0 13px}
.ride-speed-row .focus-object{flex:1;min-width:0;margin:0}
.ride-ff{display:inline-flex;justify-content:center;align-items:center;flex:none;min-width:46px;min-height:38px;padding:5px 10px;background:#132830;border:1px solid #63828c;color:#def2f8;font:20px/1 sans-serif;cursor:pointer}
.ride-ff:hover,.ride-ff:focus-visible{background:#25424d;border-color:#abd8e5}
.ride-speed-value{font:700 12px Consolas,monospace;color:#dcebf0;white-space:nowrap;min-width:39px;text-align:right}
.ride-hud-speed{display:flex;align-items:center;gap:9px;margin:0}
.ride-hud-speed[hidden]{display:none!important}
.ride-hud-speed span{color:#e4eff5;font:700 12px Consolas,monospace}
.ground-controls.ride-active .ground-title{display:flex;gap:12px;align-items:center;justify-content:space-between}
.ground-controls.ride-active .flight-controls{display:flex!important;align-items:center;justify-content:space-between;gap:14px;padding:7px 10px;margin-top:6px}
.ground-controls.ride-active .flight-status{flex:1;min-width:0}
.ground-controls.ride-active .flight-status span{font-size:10px;line-height:1.5}
.ground-controls.ride-active .flight-controls small{display:none!important}
.ground-controls.ride-active .observer-location,.ground-controls.ride-active .ground-control-row{display:none!important}
.tracked-dock .ride-panel{padding-top:17px;padding-bottom:21px}
.ride-panel-heading{display:block;font-size:10px;letter-spacing:.12em;font-weight:700;margin-bottom:14px}
.tracked-dock .ride-panel label{display:block;margin-bottom:7px}
.tracked-dock .ride-panel select{margin:0 0 13px;min-width:0;width:100%}
.tracked-dock .ride-panel #exitRide{width:100%;margin-bottom:14px}
.tracked-dock .ride-nearest{margin-top:10px}
@media(max-width:650px){.ground-controls.ride-active .flight-controls{flex-wrap:wrap}.ride-hud-speed{margin-left:auto}}

/* 0.7.51 — same camera, one nearest-satellite result, one shared RIDE mode. */
.ride-nearest{display:block!important;min-width:0;overflow:hidden;padding:12px 11px!important}
.ride-nearest-heading{display:block;font-size:10px!important;letter-spacing:.07em;line-height:1.5;margin-bottom:9px;color:#cdaeb0!important}
.ride-nearest-main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px}
.ride-nearest-main strong{display:block;max-width:none!important;min-width:0;white-space:normal!important;overflow-wrap:anywhere;line-height:1.55;font-size:11px!important}
.ride-nearest-main b{white-space:nowrap;margin:0!important;font-size:12px!important;align-self:center}
.flight-nearest-badge{position:absolute;z-index:9;left:clamp(205px,13vw,265px);bottom:21px;width:min(310px,calc(100% - 245px));padding:10px 12px;border:1px solid rgba(245,103,110,.48);background:rgba(15,9,13,.91);color:#f5e6e8;pointer-events:none;box-shadow:0 6px 24px #0007}
.flight-nearest-badge[hidden]{display:none!important}
.flight-nearest-heading{display:block;font:700 10px/1.5 Consolas,monospace;letter-spacing:.07em;color:#e4b8bd}
.flight-nearest-heading i{font-style:normal;opacity:.65;font-weight:400}
.flight-nearest-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin:7px 0 5px}
.flight-nearest-main strong{font:700 12px/1.45 Consolas,monospace;overflow-wrap:anywhere;min-width:0}
.flight-nearest-main b{font:700 13px Consolas,monospace;color:#ff7c82;white-space:nowrap}
.flight-nearest-badge small{font:9px/1.4 Consolas,monospace;color:#9d979b}
.ride-camera-options{display:flex;flex-direction:column;gap:6px;flex:0 1 245px;min-width:180px;margin-top:6px}
.ride-camera-options[hidden],.ground-controls.compact .ride-camera-options{display:none!important}
.ride-camera-options label{font:700 10px Consolas,monospace;letter-spacing:.07em;color:#bacdd7}
.ride-camera-options select{font:11px Consolas,monospace;width:100%;min-width:0;background:#10212b;color:#f1f6f9;border:1px solid #66848e;padding:8px 6px}
.ground-controls.ride-active:not(.compact) .flight-controls{flex-wrap:wrap;justify-content:flex-start}
body.glin-clean .flight-nearest-badge{display:none!important}
@media(max-width:1100px){.flight-nearest-badge{left:12px;bottom:94px;width:min(295px,calc(100% - 24px))}}
@media(max-width:600px){.flight-nearest-badge{bottom:105px;width:min(250px,calc(100% - 24px))}.flight-nearest-badge small{display:none}}

/* 0.7.53: position the ONE nearest-satellite label beside its projected point. */
.flight-nearest-badge{left:12px;top:12px;bottom:auto;width:240px;max-width:calc(100% - 24px);box-sizing:border-box;padding:8px 10px;transition:none}
.flight-nearest-heading em{font-style:normal;color:#ffb8bc;display:inline;font-size:9px;margin-left:4px}
.flight-nearest-badge[data-visibility="outside"],.flight-nearest-badge[data-visibility="occluded"]{border-style:dashed;opacity:.84}
.flight-nearest-badge .flight-nearest-main{margin:4px 0 3px;gap:5px}
.flight-nearest-badge small{font-size:9px}
@media(max-width:1100px){.flight-nearest-badge{left:12px;top:12px;bottom:auto;width:240px}}
@media(max-width:600px){.flight-nearest-badge{top:12px;bottom:auto;width:min(240px,calc(100% - 24px))}}

/* 0.7.54: nearest readout belongs above the camera controls; line end is GPU anchored. */
.flight-nearest-badge{z-index:12;pointer-events:none;transition:none;min-height:76px;}
.flight-nearest-badge[data-visibility="visible"]{border-color:rgba(255,79,91,.72);}
.flight-nearest-badge .flight-nearest-main strong{font-size:11px;}

/* Optional orbital-object class tint; inactive until the user checks a class. */
.object-class-details{margin:18px 0;border:1px solid #383838;padding:11px 12px;background:#0c0c0c}
.object-class-details>summary{cursor:pointer;font-size:10px;letter-spacing:.12em;font-weight:700;color:#ddd;line-height:1.5}
.object-class-list{margin-top:10px;display:grid;gap:3px}
.object-class-option{display:flex;align-items:center;min-height:37px;gap:9px;font-size:11px;color:#ccc;cursor:pointer}
.object-class-option input{width:15px;height:15px;accent-color:var(--class-color);flex:0 0 15px}
.object-class-swatch{width:9px;height:9px;border-radius:50%;background:var(--class-color);opacity:.9;flex:0 0 9px}
.object-class-name{flex:1;min-width:0;overflow-wrap:anywhere}
.object-class-option strong{font:11px Consolas,monospace;color:#999;font-variant-numeric:tabular-nums}

/* 0.7.57: align each filter reset with its enclosing card without affecting chart. */
.orbital-filter-card{position:relative}
.orbital-filter-card .filter-card-head{min-height:30px;align-items:center;padding-right:0}
.orbital-filter-card .filter-clear{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex:0 0 27px;width:27px;height:27px;margin:0;border:1px solid #646464;border-radius:2px;padding:0;line-height:1;vertical-align:middle}
.orbital-filter-card .filter-card-head>span{flex:1;min-width:0}
.satcat-facts{border-top:1px solid #424242;border-bottom:1px solid #333;padding:9px 0;margin:10px 0;font:10px/1.6 Consolas,monospace;color:#ccc}
.satcat-facts[hidden]{display:none!important}
.satcat-facts>div{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:3px 0}
.satcat-facts>div span{color:#9a9a9a;min-width:0}
.satcat-facts>div strong{text-align:right;overflow-wrap:anywhere;min-width:0}
#satcatSnapshotStatus{border-top:1px solid #333;padding-top:8px;overflow-wrap:anywhere}

/* 0.7.58: optional class-colored histograms; Earth default untouched. */
.class-chart-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 3px 9px;color:#aaa;font:9px Consolas,monospace;letter-spacing:.06em}
.class-chart-toolbar select{background:#101112;color:#e1e1e1;border:1px solid #515151;padding:5px;max-width:65%;font:10px Consolas,monospace}

/* GLINMON 0.7.61: shared object class choices in a third LEFT panel tab.
   Presentation-only: no duplicated object renderer, no extra data fetch. */
.alt-filter-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-bottom:9px}
.alt-filter-tabs button{font-size:11px;line-height:1.4;padding:10px 3px;letter-spacing:.025em}
#classesTabContent[hidden]{display:none!important}
.classes-tab-content{display:flex;flex-direction:column;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-color:#555 #111;padding:5px 4px 15px 1px;gap:11px}
.classes-tab-heading{font:700 13px/1.5 Consolas,monospace;letter-spacing:.06em;color:#f1f1f1}
.classes-tab-explain{font:12px/1.65 Arial,sans-serif;color:#b4b4b4;margin:0}
.classes-tab-content .object-class-option{min-height:43px;font-size:12px;gap:7px}
.classes-tab-content .object-class-option strong{font-size:11px;min-width:43px;text-align:right}
.classes-tab-content .object-class-list{gap:3px;margin:4px 0 8px}
.classes-reset{display:flex;align-items:center;justify-content:center;line-height:1.2;padding:11px 8px;background:#151515;border:1px solid #555;color:#ddd;font:700 11px Consolas,monospace;cursor:pointer;width:100%;text-align:center}
.classes-reset:hover{background:#292929}
.classes-tab-summary{color:#a9b6b8;font:11px/1.6 Consolas,monospace;overflow-wrap:anywhere}
/* Larger labels on orbital property filters without changing the graphs. */
.orbital-filter-heading strong{font-size:12px}
.filter-status{font-size:11px}
.filter-card-head{font-size:12px}
.filter-extremes,.filter-total{font-size:10px}
.filter-bound-fields label{font-size:10px}
.filter-bound-fields label input{font-size:12px}
.filter-bound-fields>span{font-size:11px}
.filter-help{font-size:11px;line-height:1.55}
.orbital-filter-note{font-size:11px}
.class-chart-toolbar{font-size:11px}
.class-chart-toolbar select{font-size:11px}
@media(max-width:700px){.alt-filter-tabs button{font-size:9px;padding:8px 2px}.classes-tab-content .object-class-option{font-size:10px}}

/* 0.7.62: layout-only class filter controls and word-wrap, preserve colors/theme. */
.alt-filter-tabs button{white-space:normal;overflow-wrap:anywhere;word-break:normal;hyphens:auto;min-height:38px;display:flex;align-items:center;justify-content:center;text-align:center}
.alt-filter-tabs button span{white-space:normal;overflow-wrap:anywhere}
.classes-actions{display:flex;flex-wrap:wrap;gap:7px;width:100%}
.classes-actions .classes-reset{flex:1 1 135px;min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.4;text-align:center}
.classes-actions .classes-reset[hidden]{display:none!important}
.classes-filter-button[aria-pressed="true"]{border-color:#8e9b9d;background:#252b2d}
.classes-definitions{border-top:1px solid #333;padding-top:10px;display:grid;gap:9px}
.classes-definitions div{display:grid;gap:3px;min-width:0}
.classes-definitions b{font:700 11px/1.4 Consolas,monospace;color:#ddd;overflow-wrap:anywhere}
.classes-definitions span{font:12px/1.5 Arial,sans-serif;color:#b4b4b4;overflow-wrap:anywhere}
@media(max-width:500px){.alt-filter-tabs{gap:3px}.alt-filter-tabs button{padding:8px 2px;line-height:1.3;font-size:10px;letter-spacing:0}}


/* 0.7.64 – shared responsive text-button treatment.
   Existing visual styles, colors, paddings and normal-size geometry untouched.
   Glyph-only controls (close, zoom, reset and ride speed) remain fixed. */
:where(#app) button:not(.card-close):not(.filter-clear):not(.clean-screen-orb):not(.ride-speed-step):not([aria-label~="Close"]),
:where(#app) .menu-button,
:where(#app) label.menu-button {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: auto;
  line-height: 1.35;
  min-width: 0;
  max-width: 100%;
  height: auto;
  min-height: var(--button-original-min-height, 0px);
}
/* This rule has stronger specificity than the historical nowrap rules in
   menu, filter and fly control selectors. Do not stretch square icon buttons. */
#app .alt-filter-tabs button,
#app .classes-actions button,
#app .mission-picker button .mission-label,
#app .mission-all,
#app .menu-button,
#app .ground-entry button,
#app .ground-control-row button:not(.flight-speed-button),
#app .ride-panel button:not(.ride-speed-step),
#app .tracked-dock button:not(.card-close):not(.ride-speed-step),
#app .tools-body button:not(.filter-clear),
#app .flight-status button,
#app .search-row button {
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:normal;
  hyphens:auto;
}
/* Button groups: allow text to occupy two lines instead of crossing borders. */
#app .mission-picker button .mission-label {overflow:visible;text-overflow:clip;min-width:0}
#app .mission-picker button, #app .alt-filter-tabs button {height:auto;min-height:34px}
#app .classes-actions button, #app .search-row button {flex-shrink:1}
/* The icon controls retain their original dimensions and single glyph. */
#app .view-controls button,
#app .tools-head button,
#app .country-panel-head button,
#app .country-rank-menu-head button,
#app .card-close,
#app .filter-clear,
#app .orbital-filter-heading button,
#app .ride-speed-row>button:not(.focus-object),
#app .ride-speed-step,
#app .clean-screen-orb {
  white-space:nowrap;overflow-wrap:normal;word-break:normal;hyphens:none;
  flex-shrink:0;
}
/* Long header actions and dropdown controls must not force horizontal overflow. */
#app .header-right, #app .search-row, #app .ground-actions,
#app .ride-panel, #app .flight-controls {min-width:0}
#app button:focus-visible {outline-offset:2px}

/* 0.7.65: language selector and raster flags; existing interface untouched. */
.glinmon-language{background:#090d12;color:#d7dce3;border:1px solid #303943;font:600 10px/1.4 Consolas,monospace;padding:3px 5px;min-width:44px;max-width:56px;cursor:pointer}
.satellite-country-flag{display:inline-block;vertical-align:middle;width:19px;height:14px;object-fit:contain;margin-right:5px;image-rendering:auto}

/* 0.7.69: mobile globe-first layout. Move the ORIGINAL side panel into the
   existing hamburger menu; no duplicate controls or changed desktop style. */
@media (max-width:700px) {
  #tools { width:100vw; max-width:100vw; }
  #tools > .tools-body { overscroll-behavior:contain; }
  #tools #altitudePanel.mobile-in-menu {
    position:relative!important; inset:auto!important; top:auto!important; bottom:auto!important;
    left:auto!important; right:auto!important; width:100%!important; max-width:100%!important;
    min-width:0!important; height: min(680px, 78dvh)!important; min-height:360px!important;
    padding:12px 10px 10px; margin:0 0 22px; gap:6px;
    box-shadow:none; overflow:hidden; flex:none; --altitude-panel-width:100%;
  }
  #tools #altitudePanel.mobile-in-menu #altitudeTabContent { min-height:0; }
  #tools #altitudePanel.mobile-in-menu .altitude-graph {min-height:140px;}
  #tools #altitudePanel.mobile-in-menu #orbitalFilterView { overflow-y:auto; min-height:0; }
  #tools #altitudePanel.mobile-in-menu .alt-filter-tabs button {
    white-space:normal; overflow-wrap:anywhere; min-width:0; line-height:1.35;
    height:auto; min-height:37px;
  }
  #tools #altitudePanel.mobile-in-menu .altitude-width-grip { display:none!important; }
  #tools #altitudePanel.mobile-in-menu .altitude-legend span {font-size:9px;}
  #tools #altitudePanel.mobile-in-menu small {display:block;}
  #tools #altitudePanel.mobile-in-menu .altitude-axis-title {white-space:normal;}
}

/* 0.7.70: keep the full mobile drawer readable, no changes on desktop. */
@media(max-width:700px){
 #tools.tools{position:fixed!important;top:0!important;bottom:0!important;right:0!important;left:0!important;width:100vw!important;max-width:100vw!important;height:100dvh!important;max-height:100dvh!important;overflow:hidden!important;z-index:110!important;}
 #tools .tools-body{height:calc(100dvh - 90px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;min-width:0;padding-inline:clamp(12px,4vw,24px)}
 #tools #altitudePanel.mobile-in-menu{width:100%!important;max-width:100%!important;min-width:0!important;}
 #tools .alt-filter-tabs{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;}
 #tools .alt-filter-tabs button{white-space:normal!important;overflow-wrap:anywhere;min-width:0!important;}
 .news-panel{width:100vw!important;max-width:100vw!important;top:52px!important;right:0!important;height:calc(100dvh - 52px)!important}
 .news-header-button{max-width:44px;font-size:0;min-width:32px}
 .news-header-button::before{content:'🛰';font-size:15px}
}
/* Owner-country controls in the ORIGINAL CLASSES panel; monochrome styling. */
.owner-country-filter{border-top:1px solid #373737;border-bottom:1px solid #373737;margin:14px 0;padding:11px 0 13px;min-width:0}
.owner-country-title{font:700 11px Consolas,monospace;letter-spacing:.07em;margin-bottom:7px}
.owner-country-tools{display:flex;gap:6px;margin:8px 0}
.owner-country-tools input{min-width:0;flex:1;background:#080808;color:#ddd;border:1px solid #484848;padding:8px;font-size:12px}
.owner-country-tools button{flex:0 1 130px;border:1px solid #484848;background:#181818;color:#eee;font-size:10px;padding:6px;white-space:normal}
.owner-country-options{max-height:205px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:2px;content-visibility:auto;contain-intrinsic-size:auto 180px}
.owner-country-option{display:flex;align-items:center;gap:6px;min-width:0;padding:5px;background:rgba(0,0,0,.18);font-size:11px;cursor:pointer}
.owner-country-option input{flex-shrink:0}.owner-country-option img{width:18px;height:13px;object-fit:contain;flex-shrink:0}
.owner-country-option span{min-width:0;overflow-wrap:anywhere;flex:1}.owner-country-option strong{font:10px Consolas,monospace;color:#aaa}
.owner-country-filter>small{font:10px/1.5 Consolas,monospace;color:#aaa}
/* RSS drawer: separate UI layer, no second globe/camera/rendering context. */
.news-header-button{border:1px solid #464646;background:#101010;color:#eee;line-height:1.2;white-space:normal;font:700 10px Consolas,monospace;padding:7px 9px;max-width:135px;cursor:pointer}
.news-header-button[aria-expanded=true]{border-color:#b2b2b2}
.news-panel{position:fixed;right:0;top:67px;width:min(440px,100vw);height:calc(100dvh - 67px);background:rgba(10,10,10,.97);border-left:1px solid #454545;z-index:105;display:flex;flex-direction:column;padding:14px;box-shadow:-6px 0 24px #0009;min-width:0}
.news-panel[hidden]{display:none!important}.news-panel-head{display:flex;align-items:start;justify-content:space-between;gap:10px;border-bottom:1px solid #333;padding-bottom:12px}
.news-panel-head strong{font:700 13px/1.5 Consolas,monospace}.news-panel-head button{background:#181818;color:#eee;border:1px solid #555;font-size:20px;min-width:34px;min-height:34px}
.news-help{font:12px/1.5 Arial,sans-serif;color:#aaa}.news-status{font:11px Consolas,monospace;color:#aaa;padding:8px 0}
.news-items{overflow-y:auto;flex:1;min-height:0;display:grid;align-content:start;gap:8px;overscroll-behavior:contain}
.news-story{border:1px solid #333;background:#121212;padding:11px;display:grid;gap:7px}
.news-story button{border:0;background:none;color:white;text-align:left;line-height:1.45;font-size:13px;font-weight:700;padding:0;overflow-wrap:anywhere}
.news-story button:hover{text-decoration:underline}.news-meta{color:#aaa;font:10px Consolas,monospace;display:flex;gap:10px;flex-wrap:wrap}
.news-story a{color:#d1d1d1;font:10px Consolas,monospace;border:1px solid #555;padding:6px 8px;display:inline-block;text-decoration:none;max-width:max-content}
.news-context{color:#c8d5d1;font:11px Consolas,monospace}

/* 0.7.71 — ONE panel: nearest-satellite HUD integrated into camera controls.
   Keep the existing visual language, but remove the separate floating badge. */
#app .ground-controls{
  display:flex;
  flex-direction:column;
  gap:3px;
  width:min(510px,calc(100% - 20px));
  padding:5px 8px;
  max-height:min(36vh,240px);
  overflow-x:hidden;
  box-sizing:border-box;
}
#app .ground-controls[hidden]{display:none!important}
#app .ground-controls .ground-title{min-height:25px;margin:0;line-height:1.2}
#app .ground-controls .ground-title button{min-height:23px;padding:2px 6px}
#app .ground-controls .flight-nearest-badge{
  position:relative!important;
  inset:auto!important;
  top:auto!important;left:auto!important;bottom:auto!important;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  width:100%!important;max-width:100%;min-height:0!important;
  margin:0;padding:4px 7px;
  border:1px solid rgba(245,103,110,.42);
  background:rgba(15,9,13,.62);
  box-shadow:none;
  box-sizing:border-box;
  text-align:left;
  gap:2px 8px;
}
#app .ground-controls .flight-nearest-badge[hidden]{display:none!important}
#app .ground-controls .flight-nearest-heading{
  grid-column:1/-1;font-size:9px;line-height:1.15;
}
#app .ground-controls .flight-nearest-main{
  grid-column:1/-1;display:flex;justify-content:space-between;
  align-items:baseline;gap:8px;min-width:0;margin:0;
}
#app .ground-controls .flight-nearest-main strong{
  font-size:10px;line-height:1.2;white-space:nowrap!important;
  overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;
}
#app .ground-controls .flight-nearest-main b{font-size:11px;line-height:1.2;flex-shrink:0}
#app .ground-controls .flight-nearest-badge small{display:none!important}
#app .ground-controls .flight-controls,
#app .ground-controls.ride-active .flight-controls{
  margin:0;padding:4px 6px;gap:7px;min-width:0;
}
#app .ground-controls .flight-status span{font-size:9px;line-height:1.25}
#app .ground-controls .flight-speed{margin-top:3px;gap:6px}
#app .ground-controls .flight-speed output{min-width:72px}
#app .ground-controls .observer-location{margin:0;padding:0}
#app .ground-controls .ground-control-row{margin:0}
#app .ground-controls.compact .flight-nearest-badge{display:grid!important}
@media(max-width:600px){
  #app .ground-controls{width:min(510px,calc(100% - 12px));padding:5px 6px;max-height:45vh}
  #app .ground-controls .flight-nearest-main strong{font-size:9px}
}
/* Hidden attribute always wins over compact layout. */
#app .ground-controls .flight-nearest-badge[hidden]{display:none!important}

/* GLINMON 0.7.72: explanatory orbital-filter descriptions; unchanged layout. */
.orbital-filter-card .filter-help{white-space:normal;overflow-wrap:break-word;line-height:1.55;}

/* 0.7.73 RSS thumbnails and safe, bounded synopsis; original drawer layout preserved. */
.news-thumb{width:100%;max-height:156px;object-fit:cover;border:1px solid #292929;border-radius:2px}
.news-summary{margin:0;color:#c0c6c9;font:12px/1.5 system-ui,sans-serif;overflow-wrap:anywhere}
.news-context[hidden]{display:none!important}

/* 0.7.74: make RSS map focus a proper accessible, clickable control.
   Overrides inherited .news-story button heading styling. */
.news-story .news-focus-button{
  display:block;width:100%;max-width:100%;min-width:0;
  box-sizing:border-box;padding:7px 8px;
  text-align:left;border:1px solid #52645e;border-radius:0;
  background:#101a17;color:#cce7d9;
  font:600 11px/1.5 Consolas,monospace;
  white-space:normal;overflow-wrap:anywhere;cursor:pointer;
}
.news-story .news-focus-button[hidden]{display:none!important}
.news-story .news-focus-button:hover,.news-story .news-focus-button:focus-visible{
  background:#20332c;border-color:#8eb6a5;text-decoration:none;outline-offset:2px;
}
/* The nearest readout and flight controls share the same compact dock.
   Avoid long Finnish names or the status text colliding with the speed row. */
#app .ground-controls{min-width:0;overflow-x:hidden}
#app .ground-controls .flight-nearest-badge{min-width:0;max-width:100%}
#app .ground-controls .flight-nearest-heading{min-width:0;overflow-wrap:anywhere;white-space:normal}
#app .ground-controls .flight-nearest-heading em{overflow-wrap:anywhere;white-space:normal}
#app .ground-controls .flight-nearest-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}
#app .ground-controls .flight-nearest-main strong{min-width:0;white-space:normal!important;overflow-wrap:anywhere;word-break:normal}
#app .ground-controls .flight-nearest-main b{white-space:nowrap}
#app .ground-controls .flight-status{min-width:0;overflow-wrap:anywhere}
#app .ground-controls .flight-status span{white-space:normal;overflow-wrap:anywhere}
#app .ground-controls .flight-speed{min-width:0;flex-wrap:wrap}
#app .ground-controls .flight-speed input{min-width:0;flex:1 1 100px}
@media(max-width:700px){
  #app .ground-controls .ground-title{flex-wrap:wrap;gap:5px}
  #app .ground-controls .flight-nearest-main{grid-template-columns:minmax(0,1fr) auto}
  .news-story{min-width:0}
}

/* 0.7.75 — one compact track-target selector in the existing camera dock. */
#app .ground-controls .flight-track-picker{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px;align-items:center;font:600 10px/1.25 Consolas,monospace;color:#c5c5c5;margin:0;min-width:0}
#app .ground-controls .flight-track-picker select{width:100%;min-width:0;max-width:100%;font:10px Consolas,monospace;background:#0f1417;color:#eee;border:1px solid #455059;padding:3px 5px;height:auto;min-height:24px}
#app .ground-controls .flight-track-picker span{white-space:normal;overflow-wrap:anywhere}

/* 0.7.77 – Camera OPTIONS layout stability.
   Both expanded and compact views use one intrinsic-height vertical stack.
   Never allow the nearest readout, flight hints or speed slider to overlay. */
#app #groundControls{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch;
  justify-content:flex-start;
  gap:5px;
  max-height:min(70dvh,650px);
  overflow-x:hidden;
  overflow-y:auto;
  height:auto;
  min-height:0;
  box-sizing:border-box;
}
#app #groundControls[hidden]{display:none!important}
#app #groundControls.compact{
  max-height:min(38dvh,260px);
}
#app #groundControls > *{
  flex:0 0 auto!important;
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
  position:relative;
  clear:both;
}
#app #groundControls .ground-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:4px 8px;
}
#app #groundControls .flight-track-picker{
  display:grid;
  grid-template-columns:minmax(0,auto) minmax(0,1fr);
  min-width:0;
}
#app #groundControls .flight-nearest-badge{
  position:relative!important;
  inset:auto!important;
  transform:none!important;
  float:none!important;
  height:auto!important;
  min-height:0!important;
  overflow:visible;
  flex:0 0 auto!important;
  margin:0!important;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  row-gap:3px;
}
#app #groundControls .flight-nearest-badge[hidden]{display:none!important}
#app #groundControls .flight-nearest-heading,
#app #groundControls .flight-nearest-main{
  position:static!important;
  min-width:0;
  margin:0;
  line-height:1.4;
}
#app #groundControls .flight-nearest-heading{
  white-space:normal!important;
  overflow-wrap:anywhere;
}
#app #groundControls .flight-nearest-main{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:4px 8px;
  align-items:center;
}
#app #groundControls .flight-nearest-main strong{
  display:block;
  min-width:0;
  white-space:normal!important;
  overflow-wrap:anywhere;
  line-height:1.4;
}
#app #groundControls .flight-nearest-main b{
  align-self:center;
  white-space:nowrap;
}
#app #groundControls .flight-controls,
#app #groundControls.ride-active .flight-controls{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  justify-content:flex-start!important;
  flex-wrap:nowrap!important;
  gap:5px!important;
  margin:0!important;
  padding:5px 7px!important;
  height:auto!important;
  min-height:0!important;
  flex:0 0 auto!important;
  position:relative!important;
  overflow:visible;
}
#app #groundControls .flight-controls[hidden]:not(.force-visible){display:none!important}
#app #groundControls.compact .flight-controls{display:flex!important}
#app #groundControls .flight-controls > *{
  width:100%;
  min-width:0;
  max-width:100%;
  flex:0 0 auto!important;
  position:relative;
  box-sizing:border-box;
  margin:0!important;
}
#app #groundControls .flight-status{display:block!important;line-height:1.4}
#app #groundControls .flight-status span{display:block;line-height:1.4;white-space:normal;overflow-wrap:anywhere}
#app #groundControls .flight-speed{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:5px 8px!important;
  align-items:center;
}
#app #groundControls .flight-speed input{width:100%;min-width:0;max-width:100%}
#app #groundControls .flight-speed output{min-width:66px;text-align:right;white-space:nowrap}
#app #groundControls .observer-location{
  white-space:normal;
  overflow-wrap:anywhere;
  line-height:1.4;
}
@media(max-width:520px){
  #app #groundControls{max-height:75dvh}
  #app #groundControls.compact{max-height:43dvh}
  #app #groundControls .flight-speed{grid-template-columns:auto minmax(0,1fr);}
  #app #groundControls .flight-speed output{grid-column:2;text-align:right}
}

/* 0.7.78: borderless header hamburger. All other button styles unchanged. */
#app #openTools { border-color:transparent; box-shadow:none; background:transparent; }
#app #openTools:hover, #app #openTools:focus-visible { background:rgba(255,255,255,.07); }

/* 0.7.86: optional heatmap controls are collapsed, keeping the existing
   computation accessible but out of the default Control Center layout. */
.ground-track-advanced{margin:8px 0 10px;border-top:1px solid #333;padding-top:9px}
.ground-track-advanced>summary{font-size:10px;letter-spacing:.08em;line-height:1.5;white-space:normal;overflow-wrap:anywhere;cursor:pointer;color:#c8c8c8;padding:8px 2px}
.ground-track-advanced>.heatmap-controls{padding-top:9px}

/* 0.7.87: retain a clear HUD. Hide only the floating heatmap status under camera buttons. */
.heatmap-badge{display:none!important}

/* Lovable: hide flight speed slider while riding (no effect in ride mode). */
#app #groundControls .flight-speed[hidden],#app #groundControls.ride-active .flight-speed{display:none!important}
/* LOVABLE: mobile news inside Control Center */
@media(max-width:700px){
 #tools .news-header-button.news-in-menu{display:flex!important;justify-content:space-between;width:100%;max-width:none!important;font:700 11px Consolas,monospace!important;padding:11px 12px;margin:0 0 10px}
 #tools .news-header-button.news-in-menu::before{content:none!important}
 #tools .news-header-button.news-in-menu::after{content:'▾'}
 #tools .news-header-button.news-in-menu[aria-expanded=true]::after{content:'▴'}
 #tools .news-panel.news-in-menu{position:relative!important;top:auto!important;right:auto!important;width:100%!important;max-width:100%!important;height:min(520px,65dvh)!important;margin:0 0 14px;box-shadow:none;border:1px solid #333;z-index:auto}
}
/* LOVABLE: collapsible desktop/tablet sidebar */
.altitude-panel.rail-collapsed{width:0!important;min-width:0!important;padding:0!important;border:0!important;background:transparent!important;left:0!important;overflow:visible!important}
.altitude-panel.rail-collapsed>*:not(.altitude-width-grip){display:none!important}
.altitude-panel.rail-collapsed .altitude-width-grip{right:-14px!important}

/* LOVABLE: mobile header on two rows — brand + actions, then count + country menu. */
@media(max-width:700px){
 #app>.header{height:auto!important;min-height:92px;flex-wrap:wrap;align-content:center;row-gap:4px;padding-top:6px;padding-bottom:6px}
 #app>.header .header-summary{order:3;flex:1 0 100%;justify-content:space-between!important;gap:10px}
 #app>.header .country-rank-header>button{max-width:70vw}
 #app>.tools{top:92px}
 /* LOVABLE: country menu spans the full screen width on mobile. */
 #app>.header .country-rank-header{position:static}
 #app>.header .country-rank-menu{position:fixed;left:0!important;right:0!important;top:92px;width:100vw!important;max-width:100vw;transform:none!important;max-height:calc(100vh - 100px)}
}
/* LOVABLE: FLY / STAND ON EARTH stay above the NASA attribution text. */
#app .ground-entry{z-index:9}
/* Lovable: hide RIDE/FLY/STAND while camera controls (flight, ride, ground) are open. */
#app:has(.ground-controls:not([hidden])) .ground-entry{display:none!important}
.alt-filter-tabs button{white-space:nowrap!important;overflow-wrap:normal!important}

/* Lovable: conjunction ride picker + transient notice */
.conj-ride-pick{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.conj-ride{font:700 10px Arial,sans-serif;letter-spacing:.05em;padding:4px 10px;border:1px solid #6e3535;border-radius:4px;background:#1d1113;color:#e0a0a0;cursor:pointer;max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conj-ride[aria-pressed=true]{border-color:#ff5050;background:#3a1518;color:#fff}
.glin-toast{position:fixed;bottom:74px;left:50%;transform:translateX(-50%);z-index:70;padding:8px 16px;border:1px solid #777;border-radius:4px;background:rgba(12,12,12,.94);color:#fff;font:700 11px Arial,sans-serif;letter-spacing:.05em;pointer-events:none}
.glin-toast[hidden]{display:none!important}
/* Lovable: country card sits beside an open news drawer (desktop/tablet). */
@media(min-width:701px){#app:has(> #newsPanel:not([hidden])) > .country-panel{display:block;right:calc(min(440px,100vw) + 12px);z-index:104}}
/* LOVABLE: help + FAQ popup */
.help-button{appearance:none;width:26px;height:26px;flex:0 0 26px;border:1px solid #464646;border-radius:50%;background:#101010;color:#eee;font:700 13px Consolas,monospace;cursor:pointer;padding:0}
.help-button:hover{border-color:#b2b2b2}
.help-overlay{position:fixed;inset:0;z-index:1000;background:#000a;display:grid;place-items:center;padding:16px}
.help-overlay[hidden]{display:none}
.help-dialog{width:min(640px,100%);max-height:min(82vh,760px);display:flex;flex-direction:column;background:#0b0b0b;border:1px solid #464646;color:#ddd;font:12px/1.5 Consolas,monospace;box-shadow:0 10px 40px #000}
.help-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid #2a2a2a;letter-spacing:.08em}
.help-x{background:none;border:1px solid #464646;color:#eee;width:26px;height:26px;cursor:pointer}
.help-tabs{display:flex;gap:6px;padding:8px 12px 0}
.help-tabs button{background:#101010;border:1px solid #333;color:#aaa;padding:6px 10px;font:700 11px Consolas,monospace;cursor:pointer}
.help-tabs button[aria-selected=true]{color:#fff;border-color:#b2b2b2}
.help-body{overflow:auto;padding:8px 12px 14px}
.help-body h3{margin:12px 0 4px;font-size:11px;color:#fff;letter-spacing:.08em}
.help-body ul{margin:0;padding-left:18px}
.help-body details{border-bottom:1px solid #222;padding:8px 0}
.help-body summary{cursor:pointer;color:#fff}
.help-body p{margin:6px 0 0;color:#bbb}
/* Lovable: performance mode selector */
.perf-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0}
.perf-modes button{min-height:34px;border:1px solid #4a4f4c;background:#151918;color:#d8dcd9;font:inherit;font-size:11px;letter-spacing:1px;cursor:pointer}
.perf-modes button.active{border-color:#e8ece9;color:#fff;background:#262b29}
