:root{--bg: #07090d;--panel: #0f131a;--panel-2: #151b24;--line: #232b37;--text: #e8edf3;--muted: #8b95a3;--accent: #ffd45e;--earth: #6fb7ff;--good: #3fbf8f;--bad: #ff7a59;--warn: #ffb347;--focus: #ffd45e;--radius: 8px;--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:14px/1.4 var(--font)}body{overflow:hidden}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.muted{color:var(--muted);font-weight:400}.hint{color:var(--muted);font-size:12px;margin:6px 0}.c-sun{color:var(--accent)}.c-earth{color:var(--earth)}.app{display:grid;height:100dvh;--left-w: 300px;--right-w: 360px;--rail-w: 40px;grid-template-columns:var(--left-w) minmax(0,1fr) var(--right-w);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"top top top" "left center right" "bottom bottom bottom"}.topbar{grid-area:top;display:flex;align-items:center;gap:16px;padding:8px 14px;border-bottom:1px solid var(--line);background:#0b0e13}.left{grid-area:left;overflow-y:auto;border-right:1px solid var(--line);background:var(--panel)}.center{grid-area:center;position:relative;min-height:0;background:#000}.right{grid-area:right;overflow-y:auto;border-left:1px solid var(--line);background:var(--panel);padding:10px;display:flex;flex-direction:column;gap:10px}.app.l-collapsed{--left-w: var(--rail-w)}.app.r-collapsed{--right-w: var(--rail-w)}.left,.right{position:relative}.panel-bar{position:absolute;z-index:2;display:flex}.left .panel-bar{top:6px;left:6px}.left .panel-bar+.panel .panel-title{padding-left:26px}.right .panel-bar{top:14px;right:14px}.right:not(.collapsed) .panel-bar+*{padding-right:40px}.panel-toggle{display:grid;place-items:center;width:28px;height:28px;padding:0;background:none;border:1px solid transparent;border-radius:6px;color:var(--muted);cursor:pointer}.panel-toggle:hover{color:var(--text);background:var(--panel-2);border-color:var(--line)}.left.collapsed,.right.collapsed{overflow:hidden;padding:0}.collapsed .panel-bar{position:static;justify-content:center;padding:6px 0}.app.r-collapsed{--right-w: 64px}.right.collapsed{overflow-x:hidden;overflow-y:auto;scrollbar-width:none;gap:0}.rail{display:flex;flex-direction:column;align-items:center;gap:10px;padding:4px 0 10px}.rail-verdict{width:36px;height:5px;border-radius:3px;background:var(--muted)}.rail-verdict.good{background:var(--good)}.rail-verdict.fair{background:var(--warn)}.rail-verdict.poor{background:var(--bad)}.rail-item{display:flex;flex-direction:column;align-items:center;gap:1px;cursor:default;text-align:center}.rail-glyph{font-size:13px;color:var(--muted);line-height:1}.rail-value{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:-.03em;white-space:nowrap}.rail-item.sun .rail-glyph{color:var(--accent)}.rail-item.earth .rail-glyph{color:var(--earth)}.rail-item.warn .rail-glyph{color:var(--bad)}.rail-item.good .rail-value{color:var(--good)}.rail-item.fair .rail-value{color:var(--warn)}.rail-item.poor .rail-value{color:var(--bad)}.rail-sep{width:28px;border-top:1px solid var(--line)}.bottom{grid-area:bottom;border-top:1px solid var(--line);background:var(--panel);padding:6px 12px 4px}.brand{display:flex;align-items:center;gap:10px;min-width:0}.logo{font-size:26px;color:var(--accent)}.brand h1{font-size:16px;margin:0;letter-spacing:.2px}.tagline{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modes{display:flex;gap:4px;margin-left:auto}.modes button,.seg button{background:transparent;border:1px solid var(--line);padding:6px 14px;border-radius:999px;cursor:pointer}.modes button.on,.seg button.on,.btn.on{background:var(--accent);color:#111;border-color:var(--accent);font-weight:600}.right-tools{display:flex;gap:8px;align-items:center}.seg{display:flex;gap:2px}.btn{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:6px 10px;cursor:pointer}.btn:hover:not(:disabled){border-color:#3a4656}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);color:#111;border-color:var(--accent);font-weight:600}.btn.small{padding:3px 8px;font-size:12px}.btn.wide{width:100%}.icon{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1}input[type=search],input:not([type]),input[type=text],input[type=datetime-local],select{background:#0b0f15;border:1px solid var(--line);border-radius:6px;padding:5px 8px}input[type=range]{accent-color:var(--accent)}.panel{padding:12px;border-bottom:1px solid var(--line)}.panel-title{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#c9d1db;margin-bottom:8px;font-weight:600}.notice{padding:10px;border:1px solid var(--line);border-radius:var(--radius);color:var(--muted);background:var(--panel-2)}.notice.warn{border-color:#6b4a1f;color:#ffd8a8;background:#20180c}.notice.small{font-size:12px;padding:6px 8px;margin:6px 0}.search{width:100%;margin-bottom:8px}.site-list{max-height:38vh;overflow-y:auto;margin:0 -4px}.site-group-title{font-size:11px;color:var(--muted);margin:8px 4px 2px;text-transform:uppercase;letter-spacing:.06em}.site-item{display:block;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:6px;padding:5px 6px;cursor:pointer}.site-item:hover{background:var(--panel-2)}.site-item.active{border-color:var(--accent);background:#1d1a10}.site-item.out{opacity:.6}.site-name{display:block;font-size:13px}.site-meta{display:flex;gap:6px;flex-wrap:wrap;font-size:11px;color:var(--muted);font-family:var(--mono)}.badge{font-family:var(--font);font-size:10px;padding:0 5px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.badge.good{color:var(--good);border-color:#1e5b46}.coord-form{margin-top:10px}.coord-form label{font-size:12px;color:var(--muted)}.coord-form .row{display:flex;gap:6px;margin-top:4px}.coord-form input{flex:1;min-width:0}.field-error{color:var(--warn);font-size:12px;margin-top:4px}.slider-row{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:8px;font-size:12px;margin-top:10px;color:#c9d1db}.slider-row output{font-family:var(--mono);min-width:44px;text-align:right}.slider-row .scale-labels{grid-column:2;position:relative;height:12px;margin-top:-6px;font-size:10px;color:var(--muted, #8b95a3);font-family:var(--mono)}.slider-row .scale-labels span{position:absolute;left:calc(8px + var(--p) * (100% - 16px));transform:translate(-50%);font-weight:400;color:inherit;white-space:nowrap}.slider-row .scale-labels span:first-child{transform:translate(-30%)}.slider-row .scale-labels span:last-child{transform:translate(-40%)}.slider-row.slip span{font-weight:600;color:var(--accent)}.cards{display:flex;flex-direction:column;gap:8px;margin-top:8px}.card{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:var(--radius);padding:8px;background:var(--panel-2)}.card header{display:flex;justify-content:space-between;align-items:center}.card-title{background:none;border:none;text-align:left;cursor:pointer;font-weight:600;padding:0;display:flex;align-items:center;gap:6px}.chip{width:10px;height:10px;border-radius:50%;background:var(--c);display:inline-block}.card-dates{font-size:11px;color:var(--muted);font-family:var(--mono);margin:2px 0 6px}table.cmp{width:100%;border-collapse:collapse;font-size:12px}table.cmp th{text-align:left;font-weight:400;color:var(--muted)}table.cmp td{font-family:var(--mono);text-align:right;padding:1px 0 1px 6px}table.cmp thead th{text-align:right;font-size:10px}.delta.good{color:var(--good)}.delta.bad{color:var(--bad)}.delta.same{color:var(--muted)}.verdict{font-size:12px;margin-top:6px;color:#dfe6ee}.antenna{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:8px;font-size:12px}.ant-now{margin:4px 0 6px;color:#c9d1db}.ant-canvas{width:100%;height:104px;display:block;border-radius:4px;margin-top:4px}.ant-q{width:100%;border-collapse:collapse;margin-top:6px}.ant-q td{padding:2px 0;color:#c9d1db}.ant-q td:last-child{text-align:right;font-family:var(--mono)}.c-warn{color:var(--warn)}.ant-ctl{max-width:280px;background:#0b0e13d9;border:1px solid var(--line);border-radius:6px;padding:6px 8px;margin-top:6px}.ant-ctl .btn{margin-top:4px}.c-ant{color:#ffd45e}.skyplot{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:8px}.sky-canvas{width:100%;height:190px;display:block;border-radius:4px}.sky-note{font-size:11px;margin-top:2px}.sky-readout{font-size:12px;min-height:18px;margin-top:4px;color:#c9d1db}.closeups{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}.closeup{width:100%;height:92px;border-radius:4px;border:1px solid var(--line)}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tile{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:7px 8px;min-width:0}.tile.big .tile-value{font-size:20px}.tile.wide{grid-column:1 / -1}.tile.sun{border-top:3px solid var(--accent)}.tile.earth{border-top:3px solid var(--earth)}.tile.warn{border-top:3px solid var(--bad)}.tile.good{border-top:3px solid var(--good)}.tile-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.tile-value{font-size:16px;font-weight:600;font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile-sub{font-size:11px;color:var(--muted)}.windows{margin:4px 0 0;padding-left:16px;font-size:11px;font-family:var(--mono)}.edu{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px;font-size:13px}.edu summary{cursor:pointer;font-weight:600}.edu ul{padding-left:18px;margin:8px 0 0}.edu li{margin-bottom:6px;color:#cfd6df}.timeline{display:flex;flex-direction:column;gap:6px}.tl-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.tl-field{display:flex;flex-direction:column;font-size:10px;color:var(--muted)}.tl-quick{display:flex;gap:4px}.tl-span{font-size:12px;font-family:var(--mono)}.tl-track{position:relative;height:64px;background:#0b0f15;border:1px solid var(--line);border-radius:6px;cursor:crosshair;touch-action:none;user-select:none}.tl-canvas{position:absolute;inset:0;width:100%;height:100%}.tl-range{position:absolute;top:12px;height:34px;background:#ffd45e14;border:1px solid rgba(255,212,94,.5);border-radius:4px;cursor:grab}.tl-handle{position:absolute;top:-4px;width:10px;height:40px;background:var(--accent);border-radius:3px;cursor:ew-resize}.tl-handle.start{left:-6px}.tl-handle.end{right:-6px}.tl-playhead{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:#fff;cursor:ew-resize}.tl-playhead:after{content:"";position:absolute;top:-2px;left:-5px;border:6px solid transparent;border-top-color:#fff}.tl-playhead-label{position:absolute;bottom:2px;left:6px;font-size:10px;font-family:var(--mono);white-space:nowrap;background:#0009;padding:0 3px;border-radius:3px}.calendar{margin-top:4px;font-size:12px}.calendar summary{cursor:pointer;color:#c9d1db}.cal-bar{display:flex;gap:10px;align-items:center;margin:6px 0}.cal-canvas{width:100%;display:block;cursor:pointer}.cal-tip{font-size:11px;color:var(--muted);font-family:var(--mono)}.statusline{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted);margin-top:4px}.provenance{text-align:right}.loading{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted)}.progress{position:absolute;left:50%;bottom:14px;transform:translate(-50%);background:#000000bf;border:1px solid var(--line);padding:4px 10px;border-radius:999px;font-size:12px}@media(max-width:1100px){body{overflow:auto}.app{height:auto;grid-template-columns:1fr;grid-template-rows:auto 60vh auto auto auto;grid-template-areas:"top" "center" "right" "bottom" "left"}.left,.right{border:none;overflow:visible}.tagline{display:none}.topbar{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.mapwrap{position:absolute;inset:0}.map{position:absolute;inset:0;background:#000}.map-err{position:absolute;top:40%;left:50%;transform:translate(-50%);max-width:480px;z-index:5}.map-ui{position:absolute;z-index:4;display:flex;flex-direction:column;gap:6px;pointer-events:none}.map-ui>*{pointer-events:auto}.map-ui.top-left{top:10px;left:10px;max-width:290px}.map-ui.top-right{top:10px;right:10px;align-items:flex-end}.map-ui.bottom-left{bottom:10px;left:10px;max-width:calc(100% - 220px)}.layer-switch{background:#0a0d12e0;border:1px solid var(--line);border-radius:var(--radius);padding:4px;display:flex;flex-direction:column}.layer-switch label{display:flex;gap:6px;align-items:center;padding:3px 6px;border-radius:5px;cursor:pointer;font-size:13px}.layer-switch label.on{background:#2a2410;color:var(--accent)}.layer-switch input{accent-color:var(--accent);margin:0}.legend{background:#0a0d12e0;border:1px solid var(--line);border-radius:var(--radius);padding:5px 8px;font-size:11px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.legend .bar{display:inline-block;width:120px;height:10px;border-radius:3px}.legend .sw{display:inline-block;width:12px;height:10px;border-radius:2px;margin-right:3px;vertical-align:middle}.lg-item{white-space:nowrap}.suit-ctl{background:#0a0d12eb;border:1px solid var(--line);border-radius:var(--radius);padding:8px;display:flex;flex-direction:column;gap:6px;font-size:12px}.suit-ctl label{display:flex;flex-direction:column;gap:2px}.cands{margin:0;padding-left:18px;font-size:12px}.cands li{margin:3px 0}.linkish{background:none;border:none;padding:0;color:#dfe6ee;text-decoration:underline dotted;cursor:pointer;text-align:left}.stab{margin-left:6px;font-size:11px;font-family:var(--mono)}.stab.good{color:var(--good)}.stab.bad{color:var(--bad)}.pegman{font-size:14px}.pegman.armed{background:var(--accent);color:#111}.seg.small button{padding:3px 10px;font-size:12px}.chk{background:#0a0d12e0;border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:12px;display:flex;gap:6px;align-items:center}.readout{background:#0a0d12d9;border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:12px;font-family:var(--mono)}.ol-scale-line{background:#0a0d12d9!important;right:10px;left:auto!important;bottom:10px!important}.ol-zoom{top:auto!important;left:auto!important;right:10px;bottom:44px}.ol-control button{background:#0a0d12e6!important;color:var(--text)!important}.pano{position:absolute;inset:0;overflow:hidden;background:#000}.pano canvas{display:block;width:100%;height:100%;outline:none}.pano-hud{position:absolute;top:10px;left:10px;display:flex;flex-direction:column;gap:6px;pointer-events:none}.pano-hud .hud-box{background:#0a0d12cc;border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px;font-size:12px;font-family:var(--mono);pointer-events:auto}.hud-big{font-size:18px;font-weight:700}.pano-tools{position:absolute;top:10px;right:10px;display:flex;gap:6px;align-items:center}.pano-help{position:absolute;bottom:10px;left:50%;transform:translate(-50%);font-size:12px;color:var(--muted);background:#0009;padding:3px 10px;border-radius:999px}.compass{position:absolute;top:8px;left:50%;transform:translate(-50%);font-family:var(--mono);font-size:12px;background:#0000008c;padding:2px 10px;border-radius:999px}.fade-in{animation:fadein .6s ease}@keyframes fadein{0%{opacity:0}to{opacity:1}}.warmup{position:fixed;inset:0;z-index:100;background:#000}.warmup canvas{width:100%;height:100%;display:block}.warmup-text{position:absolute;left:8%;bottom:14%;max-width:560px;color:#fff;text-shadow:0 2px 12px #000}.warmup-text h2{font-size:clamp(22px,3vw,38px);margin:0 0 8px;font-weight:600}.warmup-text p{font-size:clamp(14px,1.4vw,18px);color:#cfd6df;margin:0}.warmup-skip{position:absolute;right:24px;bottom:24px}.warmup.out{animation:fadeout .8s ease forwards}@keyframes fadeout{to{opacity:0;visibility:hidden}}.row-btns{display:flex;gap:6px;flex-wrap:wrap}.hint.warn{color:var(--warn)}.verdict-box{border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px;background:var(--panel-2);border-left:5px solid var(--muted)}.verdict-box.good{border-left-color:var(--good)}.verdict-box.fair{border-left-color:var(--warn)}.verdict-box.poor{border-left-color:var(--bad)}.verdict-head{font-weight:700;font-size:15px}.verdict-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.vchip{font-size:12px;padding:1px 8px;border-radius:999px;border:1px solid var(--line);font-family:var(--mono)}.vchip.good{color:var(--good);border-color:#1e5b46}.vchip.fair{color:var(--warn);border-color:#6b4a1f}.vchip.poor{color:var(--bad);border-color:#6b2a1f}@media(max-width:700px){.map-ui.top-left{max-width:58%}.layer-switch label{font-size:11px;padding:1px 4px}.legend{font-size:10px}.map-ui.top-right .seg,.map-ui.top-right .chk{display:none}.map-ui.bottom-left{max-width:70%}.tl-controls .tl-field:nth-of-type(2),.tl-controls .tl-field:nth-of-type(3),.tl-quick{display:none}}
