:root{--bg: #000000;--bg-soft: #050705;--fg: #39FF14;--fg-dim: #1c8a07;--fg-ghost: #0d3a04;--amber: #f5a623;--red: #ff3030;--gray: #5a5a5a;--gray-soft: #2a2a2a;--font: "JetBrains Mono", "Fira Code", "IBM Plex Mono", "Cascadia Mono", ui-monospace, Menlo, Consolas, monospace;--line: 1.5rem;color-scheme:dark}*{box-sizing:border-box}html,body,#root{background:var(--bg);color:var(--fg);font-family:var(--font);font-size:14px;line-height:var(--line);margin:0;padding:0;height:100%;font-feature-settings:"liga" 0,"calt" 0;-webkit-font-smoothing:none;text-rendering:geometricPrecision}body{background-image:repeating-linear-gradient(to bottom,rgba(57,255,20,.025) 0px,rgba(57,255,20,.025) 1px,transparent 1px,transparent 3px);box-shadow:inset 0 0 180px #000000d9}::selection{background:var(--fg);color:var(--bg)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--fg-ghost)}::-webkit-scrollbar-thumb:hover{background:var(--fg-dim)}a{color:var(--fg);text-decoration:underline;text-underline-offset:2px}.dim{color:var(--fg-dim)}.ghost{color:var(--fg-ghost)}.amber{color:var(--amber)}.red{color:var(--red)}.gray{color:var(--gray)}.invert{background:var(--fg);color:var(--bg);padding:0 .4ch}.glyph{color:var(--fg-dim);user-select:none}.shell{display:grid;grid-template-rows:auto 1fr auto;height:100vh;padding:1ch 2ch 0}.head{display:grid;grid-template-columns:auto 1fr auto;gap:2ch;align-items:end;padding-bottom:1ch;border-bottom:1px solid var(--fg-ghost)}.banner{white-space:pre;color:var(--fg);line-height:1.05;margin:0;font-size:11px}.head .meta{text-align:right;font-size:12px;color:var(--fg-dim);line-height:1.3}.head .meta b{color:var(--fg);font-weight:400}.main{display:grid;grid-template-columns:38ch 1fr;gap:0;min-height:0}.pane{border-right:1px solid var(--fg-ghost);padding:1ch 2ch 1ch 0;overflow:auto;min-height:0}.pane:last-child{border-right:none;padding-left:2ch;padding-right:0}.pane-title{color:var(--fg-dim);letter-spacing:.5ch;text-transform:uppercase;font-size:11px;margin:0 0 1ch}.pane-title:before{content:"── ";color:var(--fg-ghost)}.pane-title:after{content:" ──────────────────────────────────";color:var(--fg-ghost)}.prompt{display:grid;grid-template-columns:auto 1fr auto;gap:1ch;align-items:center;padding:1ch 0;border-top:1px solid var(--fg-ghost)}.prompt .sigil{color:var(--amber);user-select:none}.prompt .sigil b{color:var(--fg);font-weight:400}.prompt input{background:transparent;border:0;outline:0;color:var(--fg);font:inherit;caret-color:var(--fg);padding:0}.prompt input::placeholder{color:var(--fg-ghost)}.btn{background:transparent;color:var(--fg);border:1px solid var(--fg-dim);padding:0 1.5ch;font:inherit;cursor:pointer;text-transform:lowercase;letter-spacing:.2ch}.btn:hover{background:var(--fg);color:var(--bg)}.btn:disabled{color:var(--fg-ghost);border-color:var(--fg-ghost);cursor:not-allowed}.btn.danger{border-color:var(--red);color:var(--red)}.btn.danger:hover{background:var(--red);color:var(--bg)}.bare-select{background:transparent;color:var(--fg);border:1px solid var(--fg-ghost);font:inherit;padding:0 1ch}.bare-select option{background:var(--bg);color:var(--fg)}.api-selector{position:relative}.api-dropdown{position:absolute;bottom:calc(100% + .5ch);left:0;background:var(--bg);border:1px solid var(--fg-dim);padding:.8ch 0;min-width:22ch;z-index:50;font-size:13px}.api-opt{display:flex;align-items:center;gap:1ch;padding:.2ch 1.2ch;cursor:pointer;user-select:none}.api-opt:hover{background:#39ff1414}.api-opt-full{color:var(--amber);padding-bottom:.4ch}.api-check{color:var(--fg-dim);font-size:12px}.api-sep{border-top:1px dashed var(--fg-ghost);margin:.3ch 1ch}.api-tier-group{margin-bottom:.3ch}.api-tier-label{color:var(--fg-ghost);font-size:10px;text-transform:uppercase;letter-spacing:.3ch;padding:.3ch 1.2ch 0}.scan-list{list-style:none;margin:0;padding:0}.scan-row{display:grid;grid-template-columns:8ch 1fr 6ch;gap:1ch;cursor:pointer;border-left:2px solid transparent;padding:.2ch 0 .2ch 1ch}.scan-row:hover{background:#39ff140a}.scan-row.active{border-left-color:var(--fg);background:#39ff140f}.scan-row .ts{color:var(--fg-dim);font-size:12px}.scan-row .target{color:var(--fg);overflow:hidden;text-overflow:ellipsis}.scan-row .status{text-align:right;font-size:12px}.cascade{display:grid;gap:1ch;margin:1ch 0}.tier{display:grid;grid-template-columns:14ch 1fr;gap:2ch;align-items:start;padding-bottom:1ch;border-bottom:1px dashed var(--fg-ghost)}.tier-label{color:var(--fg-dim);text-transform:uppercase;letter-spacing:.3ch;font-size:12px}.tier-apis{display:grid;grid-template-columns:repeat(4,1fr);gap:.5ch 2ch;font-size:13px}.api{display:grid;grid-template-columns:2ch 1fr auto;gap:.5ch;align-items:baseline}.api .mark{color:var(--fg-ghost)}.api.ok .mark{color:var(--fg)}.api.error .mark{color:var(--red)}.api.skip .mark{color:var(--gray)}.api.run .mark{color:var(--amber)}.api .name{color:var(--fg)}.api.skip .name,.api.idle .name{color:var(--fg-dim)}.api.error .name{color:var(--red)}.api .ms{color:var(--fg-ghost);font-size:11px}.api-payload{grid-column:1 / -1;margin:6px 0 10px 2ch;padding:10px 14px;background:#00ff0008;border-left:2px solid var(--fg-dim);color:var(--fg);font-size:11px;line-height:1.5;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.tabs{display:flex;gap:1ch;align-self:center}.tabs .tab{background:transparent;border:none;color:var(--fg-dim);font-family:var(--font);font-size:13px;cursor:pointer;padding:.3ch 1ch;letter-spacing:.2ch;text-transform:uppercase}.tabs .tab:hover{color:var(--fg)}.tabs .tab.on{color:var(--amber)}.cameras-main{display:block;padding:2ch 3ch;overflow:auto}.cam-form{border:1px dashed var(--fg-dim);padding:1.5ch 2ch;margin-bottom:2ch}.cam-selects{display:flex;flex-wrap:wrap;gap:1ch;margin-bottom:1ch;align-items:center}.cam-select{background:var(--bg);color:var(--fg);border:1px solid var(--fg-dim);font-family:var(--font);font-size:12px;padding:.4ch 1ch;outline:none;cursor:pointer;min-width:18ch;max-width:26ch;appearance:menulist;-webkit-appearance:menulist}.cam-select:hover{border-color:var(--fg)}.cam-select:focus{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg-dim) inset}.cam-select option{background:var(--bg);color:var(--fg);font-family:var(--font);padding:.3ch 1ch}.cam-select option:checked{background:var(--fg-ghost);color:var(--amber)}.cam-input{background:var(--bg);color:var(--fg);border:1px solid var(--fg-dim);font-family:var(--font);font-size:12px;padding:.4ch 1ch;outline:none;min-width:20ch;max-width:26ch}.cam-input::placeholder{color:var(--fg-ghost)}.cam-input:hover{border-color:var(--fg)}.cam-input:focus{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg-dim) inset}.cam-query{font-size:11px;padding-top:.5ch;border-top:1px dotted var(--fg-ghost);margin-top:.5ch;word-break:break-word}.cam-stats{display:flex;gap:1ch;padding:.8ch 1ch;margin-bottom:.5ch;background:#39ff140a;border-left:2px solid var(--fg);font-size:12px}.cam-pagination{display:flex;align-items:center;gap:2ch;padding:.8ch 1ch;margin-bottom:1.5ch;border-bottom:1px dotted var(--fg-ghost);font-size:12px}.cam-table{border-top:1px dashed var(--fg-dim)}.cam-th,.cam-tr{display:grid;grid-template-columns:18ch 12ch 22ch 1fr 10ch 14ch;gap:1ch;padding:.5ch;border-bottom:1px dotted var(--fg-ghost);font-size:12px;align-items:center}.cam-th{color:var(--fg-dim);text-transform:uppercase;letter-spacing:.2ch;font-size:11px;border-bottom:1px solid var(--fg-dim)}.cam-tr a{color:var(--fg)}.cam-tr a:hover{color:var(--amber)}.btn-sm{background:transparent;border:1px solid var(--fg-dim);color:var(--fg);font-family:var(--font);font-size:11px;padding:.2ch .8ch;cursor:pointer}.btn-sm:hover:not(:disabled){border-color:var(--fg);color:var(--amber)}.btn-sm:disabled{color:var(--fg-ghost);border-color:var(--fg-ghost);cursor:not-allowed}.aisec-th,.aisec-tr{display:grid;grid-template-columns:18ch 14ch 10ch 1fr 16ch 10ch 10ch;gap:1ch;padding:.5ch;border-bottom:1px dotted var(--fg-ghost);font-size:12px;align-items:center}.aisec-th{color:var(--fg-dim);text-transform:uppercase;letter-spacing:.2ch;font-size:11px;border-bottom:1px solid var(--fg-dim)}.aisec-ip{cursor:pointer;border-bottom:1px dotted var(--fg-dim)}.aisec-ip:hover{color:var(--amber)}.aisec-disclaimer{margin-top:3ch;padding:1ch 0;border-top:1px dotted var(--fg-ghost);color:var(--gray);font-size:11px;letter-spacing:.1ch}.report{font-size:13px;white-space:pre-wrap;word-break:break-word}.report h3{font-size:13px;margin:1.5ch 0 .5ch;text-transform:uppercase;letter-spacing:.3ch;color:var(--fg-dim);font-weight:400}.report h3:before{content:"▸ ";color:var(--fg)}.report ul{margin:0 0 1ch;padding-left:2.5ch;list-style:none}.report li:before{content:"• ";color:var(--fg-dim);margin-left:-1.5ch}.score{display:inline-block;border:1px solid var(--fg);padding:0 1ch;margin-left:1ch}.score.high{border-color:var(--red);color:var(--red)}.score.med{border-color:var(--amber);color:var(--amber)}.score.low{border-color:var(--fg);color:var(--fg)}.statusbar{display:grid;grid-template-columns:auto 1fr auto auto auto;gap:2ch;align-items:center;border-top:1px solid var(--fg-ghost);padding:.5ch 0;font-size:12px;color:var(--fg-dim)}.statusbar .seg{color:var(--fg-dim)}.statusbar .seg b{color:var(--fg);font-weight:400}.statusbar .mode{color:var(--bg);background:var(--fg);padding:0 1ch}.caret:after{content:"█";color:var(--fg);animation:blink 1.1s steps(1) infinite;margin-left:.2ch}@keyframes blink{50%{opacity:0}}.kv{display:grid;grid-template-columns:18ch 1fr;gap:.5ch 1ch;font-size:13px}.kv dt{color:var(--fg-dim)}.kv dd{margin:0;color:var(--fg);word-break:break-all}.hr-box{color:var(--fg-ghost);user-select:none;margin:1ch 0;font-size:11px;line-height:1}.empty{color:var(--fg-ghost);padding:4ch 0;text-align:left}.empty:before{content:"  ∅  ";color:var(--fg-dim)}.boot{position:fixed;inset:0;background:var(--bg);display:flex;align-items:flex-start;justify-content:flex-start;padding:4ch;z-index:100;white-space:pre-wrap;font-size:13px}.boot.gone{display:none}.boot .line{display:block}.boot .ok{color:var(--fg)}.boot .err{color:var(--red)}@media (max-width: 768px){html,body,#root{font-size:13px}.shell{padding:.5ch 1ch 0}.head{grid-template-columns:1fr;gap:.5ch;align-items:start}.banner{font-size:6px;overflow:visible;text-align:center}.tabs{justify-content:center;flex-wrap:wrap;gap:.5ch}.tabs .tab{font-size:11px;padding:.3ch .5ch}.head .meta{text-align:center;font-size:10px}.main{grid-template-columns:1fr;grid-template-rows:auto 1fr}.pane{border-right:none;border-bottom:1px solid var(--fg-ghost);padding:1ch 0}.pane:last-child{padding-left:0}.pane-title:after{content:" ────────────"}.scan-row{grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:0;font-size:12px}.scan-row .ts{grid-column:1 / -1;font-size:10px}.scan-row .target{grid-column:1}.scan-row .status{grid-column:2;grid-row:2}.kv{grid-template-columns:12ch 1fr;font-size:12px}.tier{grid-template-columns:1fr;gap:.5ch}.tier-apis{grid-template-columns:repeat(2,1fr);gap:.3ch 1ch;font-size:12px}.hr-box{font-size:9px;overflow:hidden}.prompt{grid-template-columns:1fr;gap:.5ch;padding:.8ch 0}.prompt .sigil{font-size:11px}.prompt input{font-size:12px;width:100%}.prompt>span{flex-wrap:wrap;justify-content:flex-end}.bare-select{font-size:11px}.api-dropdown{bottom:calc(100% + .5ch);top:auto;right:0;left:auto;max-height:50vh;overflow-y:auto}.cameras-main{display:block;padding:1ch}.cameras-main>.pane{border-right:none;border-bottom:none;padding:0}.cam-form{padding:1ch}.cam-selects{flex-direction:column;gap:.5ch}.cam-select,.cam-input{min-width:0;max-width:none;width:100%;font-size:12px}.cam-stats{flex-wrap:wrap;gap:.5ch;font-size:11px}.cam-pagination{flex-wrap:wrap;gap:1ch;font-size:11px}.cam-th{display:none}.cam-tr{display:grid;grid-template-columns:1fr 1fr;gap:.2ch 1ch;padding:1ch .5ch;border-bottom:1px dashed var(--fg-ghost);font-size:12px;min-width:0}.cam-tr>span[data-label]:before{content:attr(data-label) " ";color:var(--fg-dim);font-size:10px;text-transform:uppercase;letter-spacing:.1ch}.cam-tr>span:first-child{grid-column:1 / -1}.aisec-th{display:none}.aisec-tr{display:grid;grid-template-columns:1fr 1fr;gap:.2ch 1ch;padding:1ch .5ch;border-bottom:1px dashed var(--fg-ghost);font-size:12px}.aisec-tr>span[data-label]:before{content:attr(data-label) " ";color:var(--fg-dim);font-size:10px;text-transform:uppercase;letter-spacing:.1ch}.aisec-tr>span:first-child{grid-column:1 / -1}.statusbar{grid-template-columns:1fr;gap:.3ch;font-size:11px;text-align:center}.boot{padding:2ch;font-size:11px}}
