:root{color-scheme:dark;--bg: #0a1420;--panel: #101d2c;--panel-border: #1f3245;--text: #e6edf3;--text-dim: #8ea3b8;--accent: #3fb1ce}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;height:100%}.app-shell{display:flex;flex-direction:column;height:100vh}.app-header{padding:.9rem 1.25rem;border-bottom:1px solid var(--panel-border);background:var(--panel)}.app-header h1{margin:0 0 .25rem;font-size:1.15rem}.subtle{color:var(--text-dim);font-size:.85rem;margin:0}.app-body{flex:1;display:flex;min-height:0}.map-column{flex:1;display:flex;flex-direction:column;min-width:0}.map-shell{position:relative;flex:1;min-height:0}.map-canvas{width:100%;height:100%}.map-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0a1420b3;z-index:5;font-size:.95rem}.map-overlay-error{color:#ff8080}.controls-row{display:flex;gap:1px;background:var(--panel-border);border-top:1px solid var(--panel-border)}.control-panel{flex:1;background:var(--panel);padding:.75rem 1rem}.control-panel-header{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:.35rem;color:var(--text-dim)}.control-panel-header strong{color:var(--text)}.control-panel input[type=range]{width:100%;accent-color:var(--accent)}.range-slider{position:relative;height:20px}.range-slider .range-track{position:absolute;top:8px;left:0;right:0;height:4px;background:#24384a;border-radius:2px;pointer-events:none}.range-slider .range-fill{position:absolute;top:8px;height:4px;background:var(--accent);border-radius:2px;pointer-events:none}.range-slider input[type=range]{position:absolute;top:0;left:0;width:100%;margin:0;height:20px;background:transparent;pointer-events:none;-webkit-appearance:none;appearance:none}.range-slider input[type=range]::-webkit-slider-runnable-track{background:transparent}.range-slider input[type=range]::-moz-range-track{background:transparent}.range-slider input[type=range]::-webkit-slider-thumb{pointer-events:auto;-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:3px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);cursor:pointer}.range-slider input[type=range]::-moz-range-thumb{pointer-events:auto;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);cursor:pointer}.quick-bands{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.quick-bands button,.back-link{background:#16283a;color:var(--text-dim);border:1px solid var(--panel-border);border-radius:4px;padding:.2rem .5rem;font-size:.75rem;cursor:pointer}.quick-bands button.active{color:var(--bg);background:var(--accent);border-color:var(--accent)}.timeline-bounds{display:flex;justify-content:space-between;font-size:.7rem;color:var(--text-dim);margin-top:.25rem}.side-column{width:360px;border-left:1px solid var(--panel-border);background:var(--panel);overflow-y:auto}.inspector-panel{padding:1rem}.inspector-panel h2{margin:.5rem 0 .15rem;font-size:1.05rem}.inspector-panel h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);margin:1.1rem 0 .4rem}.hint{color:var(--text-dim);font-size:.85rem;line-height:1.4}.back-link{margin-bottom:.5rem}.legend ul{list-style:none;padding:0;margin:0}.legend li{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.25rem 0}.legend-swatch{width:10px;height:10px;border-radius:50%;flex-shrink:0}.spec-list{display:grid;grid-template-columns:auto 1fr;gap:.25rem .75rem;font-size:.82rem;margin:0}.spec-list dt{color:var(--text-dim)}.spec-list dd{margin:0}.citation{font-size:.75rem;color:var(--accent);margin:.5rem 0 .15rem}.note{font-size:.78rem;color:var(--text-dim);margin:.15rem 0 0;line-height:1.4}.cert-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}.cert-list button{width:100%;text-align:left;background:#16283a;border:1px solid var(--panel-border);border-radius:6px;padding:.4rem .55rem;color:var(--text);cursor:pointer}.cert-list li.selected button{border-color:var(--accent)}.cert-row-top{display:flex;align-items:center;gap:.4rem;font-size:.82rem}.cert-power{margin-left:auto;color:var(--text-dim)}.cert-row-bottom{font-size:.72rem;color:var(--text-dim);margin-top:.15rem}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.status-active{background:#6fcf6f}.status-dot.status-inactive{background:#5a6b7a}.status-dot.status-revoked{background:#e05c5c}.revoked-tag{color:#e08080}.cert-detail{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--panel-border)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis}.maplibregl-ctrl-attrib{display:none}a{color:var(--accent)}a:hover{text-decoration:none}.hs-body{flex:1;display:flex;min-height:0}.hs-stage{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-between;padding:3rem 2rem}.hs-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.hs-towers{display:flex;justify-content:center;gap:1.25rem;flex-wrap:wrap;position:relative;z-index:1}.hs-tower{display:flex;flex-direction:column;align-items:center;gap:.15rem;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;padding:.75rem 1rem;color:var(--text-dim);cursor:default;opacity:.55;transition:opacity .25s,border-color .25s,transform .25s}.hs-tower-icon{font-size:1.8rem;line-height:1}.hs-tower-label{font-size:.85rem;color:var(--text);font-weight:600}.hs-tower-spec{font-size:.68rem;color:var(--text-dim)}.hs-tower.selectable{opacity:1;cursor:pointer;border-color:var(--accent);animation:hs-ring 1.4s ease-in-out infinite}.hs-tower.selected{opacity:1;border-color:#6fcf6f;transform:translateY(-4px)}.hs-tower.dimmed{opacity:.25}.hs-ue{display:flex;flex-direction:column;align-items:center;gap:.15rem;align-self:center;position:relative;z-index:1}.hs-ue-icon{font-size:2.4rem;line-height:1}.hs-ue-label{font-size:.8rem;color:var(--text-dim);font-weight:600}.hs-scan-wifi{position:absolute;bottom:100%;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.15rem;margin-bottom:.25rem;pointer-events:none}.hs-scan-wifi-icon{width:40px;height:30px;overflow:visible}.hs-scan-dot{fill:var(--accent)}.hs-scan-arc{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;opacity:.25;animation:hs-wifi-ripple 1s ease-in-out infinite}.hs-scan-arc-1{animation-delay:0s}.hs-scan-arc-2{animation-delay:.15s}.hs-scan-arc-3{animation-delay:.3s}@keyframes hs-wifi-ripple{0%,60%,to{opacity:.25}30%{opacity:1}}.hs-scan-label{font-size:.7rem;font-weight:600;color:var(--accent);white-space:nowrap;background:var(--panel);padding:.1rem .4rem;border-radius:4px;border:1px solid var(--panel-border)}.hs-json-highlight{display:inline-block;background:#3fb1ce2e;outline:1px solid var(--accent);border-radius:3px}.hs-regulator{position:absolute;top:50%;left:2rem;transform:translateY(-50%);z-index:1;display:flex;flex-direction:column;align-items:center;gap:.15rem;opacity:.4;transition:opacity .25s}.hs-regulator.touched{opacity:1}.hs-regulator-icon{font-size:1.8rem;line-height:1}.hs-regulator-label{font-size:.8rem;color:var(--text-dim);font-weight:600}.hs-pulse{animation:hs-ring 1s ease-in-out infinite}@keyframes hs-ring{0%,to{box-shadow:0 0 #3fb1ce73}50%{box-shadow:0 0 0 10px #3fb1ce00}}@keyframes hs-ring-regulator{0%,to{box-shadow:0 0 #f2a54173}50%{box-shadow:0 0 0 10px #f2a54100}}.hs-regulator.hs-pulse{animation-name:hs-ring-regulator}.hs-hint{text-align:center;color:var(--accent);font-size:.85rem;margin-top:.5rem}.hs-side{width:420px;border-left:1px solid var(--panel-border);background:var(--panel);overflow-y:auto;padding:1rem;display:flex;flex-direction:column}.hs-simulate-btn{align-self:center;margin:auto;background:var(--accent);color:var(--bg);border:none;border-radius:6px;padding:.75rem 1.75rem;font-size:1rem;font-weight:600;cursor:pointer}.hs-stepper-graph{position:relative;max-height:40%;overflow-y:auto;margin:0 0 .75rem}.hs-stepper-overlay{position:absolute;top:0;left:0;width:100%;pointer-events:none;z-index:0}.hs-stepper-overlay path{fill:none;stroke:#f2a541;stroke-width:2}.hs-stepper-overlay path.merge-long{stroke-dasharray:5 4}.hs-stepper{position:relative;z-index:1;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.2rem}.hs-graph-row{position:relative;display:flex;align-items:baseline;gap:.5rem;min-height:28px;padding:.25rem .4rem;border-radius:4px;font-size:.75rem;color:var(--text-dim);cursor:pointer}.hs-graph-row.lane-main{padding-left:34px}.hs-graph-row.lane-branch{padding-left:58px}.hs-graph-dot{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;transform:translateY(-50%);z-index:1}.hs-graph-row.lane-main .hs-graph-dot{left:9px;background:var(--accent)}.hs-graph-row.lane-branch .hs-graph-dot{left:33px;background:#f2a541}.hs-graph-line{position:absolute;width:2px}.hs-graph-row.lane-main .hs-graph-line{left:13px;background:var(--panel-border)}.hs-graph-row.lane-branch .hs-graph-line{left:37px;background:var(--panel-border)}.hs-graph-line-up{top:0;height:50%}.hs-graph-line-down{top:50%;height:50%}.hs-graph-row.done{color:var(--text)}.hs-graph-row.current{background:#16283a;color:var(--accent);font-weight:600}.hs-graph-row.locked{opacity:.4;cursor:not-allowed}.hs-step-number{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;flex-shrink:0}.hs-nav-row{display:flex;gap:.5rem;margin:.5rem 0 .75rem}.hs-nav-row button{background:#16283a;color:var(--text);border:1px solid var(--panel-border);border-radius:6px;padding:.4rem .9rem;font-size:1rem;cursor:pointer}.hs-nav-row button:disabled{opacity:.4;cursor:not-allowed}.hs-next-btn{flex:1;color:var(--bg)!important;background:var(--accent)!important;font-weight:600}.hs-simulate-saturation-btn{color:var(--bg)!important;background:#f2a541!important;font-weight:600}.hs-reset-btn{margin-left:auto}.hs-payload-panel{border-top:1px solid var(--panel-border);padding-top:.75rem;flex:1;min-height:0;display:flex;flex-direction:column}.hs-payload-panel h3{margin:0 0 .25rem;font-size:.95rem}.hs-direction-label{color:var(--accent);font-size:.8rem;font-weight:600;margin:0 0 .4rem}.hs-json{background:#0d1824;border:1px solid var(--panel-border);border-radius:6px;padding:.65rem .75rem;overflow:auto;flex:1;min-height:0;white-space:pre}.glossary-term{position:relative;border-bottom:1px dotted var(--text-dim);cursor:help}.glossary-tooltip{display:none;position:fixed;z-index:20;width:210px;background:#0d1824;border:1px solid var(--panel-border);border-radius:6px;padding:.5rem .65rem;font-size:.72rem;line-height:1.4;color:var(--text);white-space:normal;text-align:left}.glossary-term:hover .glossary-tooltip,.glossary-term:focus-within .glossary-tooltip{display:block}.glossary-tooltip strong{display:block;color:var(--accent);margin-bottom:.25rem}.glossary-tooltip p{margin:0 0 .35rem}.glossary-tooltip a{font-size:.7rem}
