:root{--bg: #202428;--surface: #2a2f35;--surface-2: #31373e;--border: #3a4048;--primary: #008bff;--secondary: #ff007f;--tertiary: #5b23ff;--highlight: #e3ff30;--link: #5ab0ff;--text: #e8eaed;--text-dim: #9aa0a6;--mono: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius: 8px}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.45;overflow-x:hidden}.mono{font-family:var(--mono)}.dim{color:var(--text-dim);font-weight:400}.hidden{display:none!important}h1,h2,h3,h4{margin:0;font-weight:600}button,select,input{font-family:inherit;color:inherit}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}a{color:var(--link);text-decoration-color:color-mix(in srgb,var(--link) 45%,transparent);text-underline-offset:2px}a:hover{color:#8cc8ff;text-decoration-color:currentColor}a:visited{color:var(--link)}a.btn,a.btn:visited{color:var(--text)}#app{display:flex;flex-direction:column;min-height:100vh;max-width:1440px;margin:0 auto;padding:0 16px 12px}#header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:12px 4px 10px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:20}#header .brand{justify-self:start}#header .header-controls{justify-self:end}#header #compression-badge{justify-self:center;text-align:center;color:var(--highlight);border-color:color-mix(in srgb,var(--highlight) 45%,var(--border));background:color-mix(in srgb,var(--highlight) 8%,var(--surface))}.brand{display:flex;align-items:center;gap:13px}.logo{width:38px;height:38px;border-radius:10px;flex:none;background:radial-gradient(circle at 30% 30%,var(--primary),transparent 60%),radial-gradient(circle at 70% 70%,var(--secondary),transparent 55%),var(--tertiary)}.brand h1{font-size:26px;letter-spacing:-.02em;font-weight:650}.h1-sub{font-weight:400;color:var(--text-dim)}.header-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px;text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:background .12s,border-color .12s}.btn:hover{background:var(--surface-2);border-color:var(--primary)}.btn.ghost{background:transparent}.btn.small{padding:4px 9px;font-size:12px}.badge{font-family:var(--mono);font-size:12px;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:4px 11px;color:var(--text)}#dataset-switcher{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:5px 8px}.loader{position:fixed;inset:0;background:#14171ae6;display:flex;align-items:center;justify-content:center;z-index:100;backdrop-filter:blur(2px)}.loader-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px 28px;width:min(360px,86vw)}.loader-title{font-size:15px;margin-bottom:12px}.progress{height:6px;background:var(--surface-2);border-radius:4px;overflow:hidden}.progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--primary),var(--tertiary));transition:width .1s}.progress-label{margin-top:8px;font-size:11px;color:var(--text-dim)}#main{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:12px;align-items:stretch}.right-col{display:flex;flex-direction:column;gap:16px;min-width:0}.right-col .basis-card{flex:1;display:flex;flex-direction:column}.pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;min-width:0}.pane-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}.pane-head h2{font-size:17px}.coords{font-weight:400}.layer-tabs{display:flex;gap:4px;flex-wrap:wrap;flex:1 0 100%}.layer-tabs .tab[data-layer=mae]{margin-left:auto}.tab{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer}.tab:hover{color:var(--text)}.tab.active{background:var(--primary);border-color:var(--primary);color:#fff}.map-wrap{position:relative;width:100%;aspect-ratio:1/1;background:#14171a;border-radius:6px;overflow:hidden}.map-wrap canvas{position:absolute;inset:0;width:100%;height:100%}#map-overlay{pointer-events:none}#map-canvas{cursor:crosshair;image-rendering:pixelated}.crop-note{font-size:12px;font-weight:400}.crop-note a,.crop-note a:visited{color:inherit;text-decoration:underline;text-decoration-color:color-mix(in srgb,currentColor 50%,transparent);text-underline-offset:2px}.crop-note a:hover{color:var(--text);text-decoration-color:currentColor}.lime{color:var(--highlight)}.map-legend{display:flex;align-items:center;gap:8px;min-height:16px;margin-top:10px;font-size:10px;color:var(--text);font-family:var(--mono)}.map-legend .bar{height:8px;flex:1;border-radius:4px}.zoom-reset{position:absolute;top:8px;right:8px;background:#14171acc;border:1px solid var(--border);color:var(--text);border-radius:6px;padding:4px 9px;font-size:11px;font-family:var(--mono);cursor:pointer}.zoom-reset:hover{border-color:var(--primary)}.kbd-hint{font-size:11px}.kbd-hint b{background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:0 5px;font-family:var(--mono);color:var(--text)}.map-tools{display:flex;align-items:center;gap:14px;margin-top:10px;flex-wrap:wrap}.toolgroup{display:flex;gap:4px}.tool-btn{background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);padding:5px 11px;border-radius:6px;font-size:12px;cursor:pointer}.tool-btn.active{background:var(--tertiary);border-color:var(--tertiary);color:#fff}.chk{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);cursor:pointer}.chk input{accent-color:var(--primary)}.path-panel{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.path-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.path-hint b.a{color:var(--primary)}.path-hint b.b{color:var(--secondary)}.path-steps{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);margin-left:auto}.scrub{flex:1;accent-color:var(--highlight);min-width:120px}input[type=range]{accent-color:var(--primary)}.chart-title{font-size:11px;color:var(--text-dim);margin-bottom:4px}#path-chart,.path-chart{width:100%;height:120px}.chart-axis-label{fill:var(--text-dim);font-size:9px;font-family:var(--mono)}.detector-toggles{display:flex;align-items:center;gap:10px;flex-wrap:wrap}#cmap-select{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:4px 7px;font-size:12px}.triplet{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.triplet figure{margin:0;min-width:0}.triplet figcaption{font-size:12px;color:var(--text);font-weight:500;margin-bottom:5px;display:flex;align-items:center;gap:6px;height:20px;white-space:nowrap;overflow:hidden}.pat{width:100%;aspect-ratio:1/1;background:#14171a;border-radius:6px;image-rendering:pixelated;display:block}.tag{font-size:9px;padding:1px 5px;border-radius:4px;background:var(--surface-2);color:var(--text-dim);border:1px solid var(--border);white-space:nowrap;flex:none}.tag.warn{color:var(--highlight);border-color:#55581e}.metrics{display:grid;grid-template-columns:2.2fr 1.6fr 1fr;gap:10px;margin-top:12px}.metric{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:9px 10px;min-width:0}.metric-label{font-size:11px;color:var(--text-dim);display:flex;align-items:center;gap:6px}.metric-value{font-size:18px;margin-top:3px}.metric-value.live{color:var(--highlight)}.metric-value-sm{font-size:15px;margin-top:3px}.metric-num{margin-right:.3em}.metric-unit{font-size:12px;color:var(--text-dim)}.metric .state{color:var(--primary)}.metric .state.offgrid{color:var(--highlight)}.help-btn{background:var(--surface);border:1px solid var(--border);color:var(--text-dim);width:16px;height:16px;border-radius:50%;font-size:10px;cursor:pointer;padding:0;line-height:1}.infobar{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:12px;padding:9px 12px;background:#14171a;border-radius:6px;font-size:11px;color:var(--text-dim)}.infobar b{color:var(--text);font-weight:500}.infobar .state{color:var(--primary)}.infobar .state.offgrid{color:var(--highlight)}.infobar .featured{margin-left:auto}.node-entry{display:inline-flex;gap:4px;margin-left:6px}.node-entry input{background:var(--surface-2);border:1px solid var(--primary);border-radius:5px;padding:2px 6px;font-size:11px;font-family:var(--mono);width:9ch}.infobar .featured select{background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:2px 5px;font-size:11px;margin-left:4px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;min-width:0}.card h3{font-size:16px;margin-bottom:10px}.bar-viz{height:10px;background:var(--surface-2);border-radius:5px;overflow:hidden;margin:6px 0;display:flex}.bar-viz .seg-model{background:linear-gradient(90deg,var(--primary),var(--tertiary))}.basis-head{display:flex;align-items:baseline;justify-content:space-between;gap:2px 12px;flex-wrap:wrap;margin-bottom:10px}.basis-head h3,#basis-range{min-width:0}.basis-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,132px);gap:7px;align-content:center;overflow-x:auto;overflow-y:hidden;padding-bottom:4px;scrollbar-width:thin}#app[data-tool=path] .basis-grid{grid-template-rows:repeat(3,132px)}.basis-grid .bcell{position:relative;width:100%;height:100%;min-width:0}.basis-grid canvas{width:100%;height:100%;background:#14171a;border-radius:5px;image-rendering:pixelated;cursor:pointer;border:1px solid transparent;display:block}.basis-grid canvas:hover{border-color:var(--primary)}.basis-grid .bidx{position:absolute;top:2px;left:4px;font-size:9px;color:var(--text);font-family:var(--mono);text-shadow:0 1px 3px #000}.basis-grid .bgain{position:absolute;top:2px;right:4px;font-size:9px;color:var(--highlight);font-family:var(--mono);text-shadow:0 1px 3px #000}.basis-modal-card{width:min(420px,92vw)}.basis-modal-canvas{width:100%;max-width:340px;margin:0 auto 12px}.basis-modal-note{font-size:12px;margin-top:10px}#basis-modal-legend{margin-top:0}#footer{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:16px;padding:14px 4px 4px;border-top:1px solid var(--border);font-size:12px;color:var(--text-dim)}#footer .sep{color:var(--border)}.footer-link{background:none;border:none;padding:0;font-size:inherit;cursor:pointer;color:var(--link);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--link) 45%,transparent);text-underline-offset:2px}.footer-link:hover{color:#8cc8ff;text-decoration-color:currentColor}.modal{position:fixed;inset:0;background:#101214b8;display:flex;align-items:center;justify-content:center;z-index:60;padding:20px}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:26px 30px;width:min(640px,92vw);max-height:86vh;overflow-y:auto;position:relative}.modal-card h2{font-size:18px;margin-bottom:14px}.modal-card h4{margin:16px 0 6px;font-size:13px;color:var(--primary)}.modal-card p{margin:8px 0;color:var(--text)}.modal-card ul{margin:8px 0;padding-left:20px}.modal-card li{margin:4px 0}.modal-card code,.formula{font-family:var(--mono);background:var(--surface-2);padding:2px 6px;border-radius:4px;font-size:12px}.modal-card .num{color:var(--highlight);font-weight:600}.credits p{font-size:12px;line-height:1.65;color:var(--text-dim)}.cmp-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:12px}.cmp-table td{padding:3px 8px;border-bottom:1px solid var(--border);color:var(--text-dim)}.cmp-table td:last-child{text-align:right;color:var(--text)}.modal-close,.popover-close{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--text-dim);font-size:22px;cursor:pointer;line-height:1}.popover{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px 14px;width:min(380px,88vw);z-index:70;box-shadow:0 12px 40px #00000080}.popover h4{font-size:13px;margin-bottom:8px;color:var(--primary)}.popover p{font-size:12px;margin:6px 0}.popover ul{font-size:12px;margin:6px 0;padding-left:18px}.popover .formula{display:block;padding:8px 10px;margin:8px 0;font-size:12px}#cite-popover{width:min(470px,92vw)}.bibtex{background:#14171a;border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin:8px 0 10px;font-size:11px;line-height:1.5;color:var(--text);overflow-x:auto;white-space:pre;tab-size:2}#cite-copy.ok{border-color:var(--primary);color:var(--primary)}#app.embed #header,#app.embed #footer{display:none}#app.embed{padding:8px}#app.embed #main{margin-top:4px}#app.kiosk{font-size:16px}#app.kiosk .tool-btn,#app.kiosk .tab{padding:8px 16px;font-size:14px}.embed-focus{position:fixed;bottom:12px;left:50%;transform:translate(-50%);background:var(--primary);color:#fff;padding:6px 14px;border-radius:20px;font-size:12px;z-index:80}#app.embed.armed{outline:2px solid var(--primary);outline-offset:-2px}@media (max-width: 900px){#main{grid-template-columns:1fr}.map-wrap{max-width:100%}}@media (max-width: 700px){#header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;row-gap:10px}#header .header-controls{order:1}#header #compression-badge{order:2;flex:1 0 100%}}@media (max-width: 620px){.triplet figcaption .tag{display:none}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
