:root{--bg:#0a0d13;--panel:#10151f;--panel2:#141b27;--line:#1f2838;--text:#e7ecf3;--dim:#8b97ab;--cyan:#5ad1e6;--pass:#3ddc97;--viol:#ff5c6c;--und:#ffb454;--mono:"JetBrains Mono",Menlo,Consolas,monospace;--sans:"Space Grotesk","Helvetica Neue",Arial,sans-serif}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.4}
.mono{font-family:var(--mono)}.dim{color:var(--dim)}.fine{color:var(--dim);font-size:12px;margin:6px 0 0}
.top{display:flex;justify-content:space-between;align-items:center;padding:14px 22px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#0f141d,#0a0d13)}
.brand{display:flex;gap:10px;align-items:baseline}.logo{font-weight:700;font-size:22px;letter-spacing:.12em;color:var(--cyan)}.logo-sub{font-weight:500;font-size:18px}.sep{color:var(--dim)}.pack{color:var(--text)}.ds{color:var(--dim)}
.pill{display:flex;gap:8px;align-items:center;padding:6px 12px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:12px;letter-spacing:.08em}
.pill .dot{width:9px;height:9px;border-radius:50%;background:var(--pass);box-shadow:0 0 12px var(--pass)}.pill.down .dot{background:var(--viol);box-shadow:0 0 12px var(--viol)}
.grid{display:grid;grid-template-columns:310px 1fr 370px;gap:14px;padding:14px 22px}
@media(max-width:1180px){.grid{grid-template-columns:1fr}}
.col{display:flex;flex-direction:column;gap:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.chip{font-family:var(--mono);font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--dim)}
.chip.ok{color:var(--pass);border-color:rgba(61,220,151,.4)}.chip.bad{color:var(--viol);border-color:rgba(255,92,108,.4)}.chip.warn{color:var(--und);border-color:rgba(255,180,84,.4)}.chip.muted{color:var(--dim)}
.norm-id{font-family:var(--mono);font-size:26px;font-weight:600;color:var(--cyan)}.norm-title{font-size:12px;color:var(--dim);margin:2px 0 8px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;margin:0;font-size:13px}.kv dt{color:var(--dim)}.kv dd{margin:0;font-family:var(--mono)}
.hash-l{font-size:11px;color:var(--dim);margin-top:10px}.hash{font-size:11.5px;word-break:break-all;color:var(--text);background:var(--panel2);padding:8px;border-radius:8px;margin-top:4px;border:1px solid var(--line)}
.btn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:8px 12px;border-radius:8px;font-family:var(--sans);font-size:13px;margin-top:10px}
.btn:hover{border-color:var(--cyan)}.btn.danger{border-color:rgba(255,92,108,.5);color:var(--viol)}.btn.danger:hover{background:rgba(255,92,108,.12)}
.btn.ghost{background:transparent}.btn.primary{background:var(--cyan);color:#06121a;border-color:var(--cyan);font-weight:700}.btn.icon{width:40px;height:36px;padding:0;margin:0;font-size:16px}
.btns{display:flex;gap:8px}
.windows{list-style:none;margin:0;padding:0;font-size:12.5px}.windows li{padding:6px 0;border-top:1px dashed var(--line)}.windows li:first-child{border-top:none}
.windows .w{font-family:var(--mono);color:var(--text)}.windows .src{color:var(--dim);display:block;font-size:11.5px}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chips button{cursor:pointer;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:5px 10px;font-size:12px}
.chips button.on{border-color:var(--und);color:var(--und);background:rgba(255,180,84,.1)}
.row3{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:8px}label{display:flex;flex-direction:column;font-size:11px;color:var(--dim);gap:3px}
input[type=text],input[type=number],select{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:7px 8px;font-family:var(--mono);font-size:13px;width:100%}
label.full{margin-top:8px}label.check{flex-direction:row;align-items:center;gap:8px;margin-top:8px;font-size:12.5px;color:var(--text)}label.check input{width:auto}
.track-card canvas{width:100%;display:block;border-radius:8px;background:#0b1018;border:1px solid var(--line);cursor:crosshair}
.legend{font-size:11px;color:var(--dim);display:flex;gap:10px;align-items:center}.sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}.sw.pass{background:var(--pass)}.sw.viol{background:var(--viol)}.sw.und{background:var(--und)}
.axis{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--dim);padding:4px 2px 0}
.transport{display:flex;align-items:center;gap:10px;margin-top:10px}.transport input[type=range]{flex:1;accent-color:var(--cyan)}
.speed{display:flex;gap:4px;align-items:center;font-size:11px;color:var(--dim)}.speed .sp{cursor:pointer;background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:6px;padding:4px 7px;font-family:var(--mono);font-size:11px}.speed .sp.on{color:var(--cyan);border-color:var(--cyan)}
.readout{font-size:13px;white-space:nowrap}
.gauges{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media(max-width:1400px){.gauges{grid-template-columns:repeat(3,1fr)}}
.g{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;transition:border-color .15s,box-shadow .15s}
.g .l{font-size:11px;color:var(--dim);display:flex;justify-content:space-between}.g .v{font-family:var(--mono);font-size:20px;font-weight:600;margin:2px 0 6px}.g .v small{font-size:11px;color:var(--dim);font-weight:400;margin-left:4px}
.g .bar{height:6px;background:#0b1018;border-radius:3px;position:relative;overflow:hidden}.g .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--cyan);border-radius:3px;transition:width .12s}
.g .bar b{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--viol)}
.g.out{border-color:var(--viol);box-shadow:0 0 0 1px rgba(255,92,108,.35),0 0 18px rgba(255,92,108,.25)}.g.out .bar i{background:var(--viol)}
.g.withheld{border-color:var(--und);opacity:.85}.g.withheld .v{color:var(--und)}.g.withheld .bar i{background:var(--und)}
.g.win .l::after{content:"вікно";font-size:10px;color:var(--cyan);letter-spacing:.1em}
.counters .cnt{display:grid;grid-template-columns:1fr 1fr 1fr 2fr;gap:8px}.c{background:var(--panel2);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column}.c b{font-family:var(--mono);font-size:20px}.c span{font-size:11px;color:var(--dim)}
.c.pass b{color:var(--pass)}.c.viol b{color:var(--viol)}.c.und b{color:var(--und)}.c.rate b{color:var(--text)}
.verdict{min-height:330px}.fold{font-family:var(--mono);font-size:56px;font-weight:600;letter-spacing:.06em;text-align:center;padding:18px 0 10px;transition:color .15s,text-shadow .15s}
.fold.PASS{color:var(--pass);text-shadow:0 0 28px rgba(61,220,151,.45)}.fold.BLOCKED{color:var(--viol);text-shadow:0 0 28px rgba(255,92,108,.45)}.fold.HELD{color:var(--und)}
.inv{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.inv-h{display:flex;justify-content:space-between;align-items:center;font-size:12px}
.inv-detail{margin-top:8px;font-size:13px;color:var(--text);word-break:break-word}
.judged{margin-top:10px;display:flex;flex-direction:column;gap:6px}.jd{border:1px solid rgba(90,209,230,.35);border-radius:8px;padding:8px 10px;font-size:12px;background:rgba(90,209,230,.06)}.jd .mono{color:var(--cyan)}
.evidence{margin-top:10px}.evidence summary{cursor:pointer;color:var(--dim);font-size:12px}.evidence pre{font-size:11px;white-space:pre-wrap;word-break:break-word;background:#0b1018;padding:10px;border-radius:8px;border:1px solid var(--line);max-height:260px;overflow:auto}
.why-l{margin:0;padding-left:18px;font-size:12.5px;color:var(--dim)}.why-l li{margin:4px 0}.why-l b{color:var(--text)}
.foot{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:10px 22px 22px;font-size:11.5px;color:var(--dim);border-top:1px solid var(--line)}
.overlay{position:fixed;inset:0;background:rgba(6,8,12,.86);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:50}
.overlay[hidden]{display:none}.ov-card{width:min(720px,92vw);background:#150d10;border:1px solid rgba(255,92,108,.6);box-shadow:0 0 60px rgba(255,92,108,.25);border-radius:14px;padding:22px 24px}
.ov-h{font-family:var(--mono);font-size:30px;font-weight:600;color:var(--viol);letter-spacing:.08em}.ov-card pre{font-size:12px;white-space:pre-wrap;word-break:break-word;background:#0b0709;border:1px solid rgba(255,92,108,.3);padding:10px;border-radius:8px}
.ov-d{display:flex;gap:12px;font-size:12px;align-items:center;margin:4px 0}.ov-d span:first-child{width:90px;color:var(--dim)}.ov-d .ok{color:var(--pass)}.ov-d .bad{color:var(--viol)}
.down .card:not(.norm){opacity:.35;filter:grayscale(.6);pointer-events:none}.down .norm{border-color:var(--viol)}

.bottom2{display:grid;grid-template-columns:1.1fr 1fr;gap:14px}@media(max-width:1400px){.bottom2{grid-template-columns:1fr}}
.counters .cnt{grid-template-columns:1fr 1fr 1fr}.c.rate{grid-column:1/-1}
.verdict .card-h{flex-wrap:wrap}

.top-r{display:flex;gap:10px;align-items:center}
.help-btn{margin:0;width:34px;height:34px;padding:0;border-radius:50%;font-family:var(--mono);font-weight:600;font-size:16px;color:var(--cyan);border-color:rgba(90,209,230,.5)}
.help-btn:hover{background:rgba(90,209,230,.12)}
.help{position:fixed;inset:0;z-index:60;background:rgba(6,8,12,.6);backdrop-filter:blur(3px)}
.help[hidden]{display:none}
.help-inner{position:absolute;top:0;right:0;bottom:0;width:min(860px,96vw);background:var(--panel);border-left:1px solid var(--line);overflow:auto;padding:18px 26px 40px;box-shadow:-20px 0 60px rgba(0,0,0,.5);animation:slide .2s ease-out}
@keyframes slide{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
.help-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.help-top h2{margin:2px 0 8px;font-size:19px;font-weight:600}
.help-toc{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 14px}.help-toc a{font-size:12px;color:var(--cyan);text-decoration:none;border:1px solid rgba(90,209,230,.3);border-radius:999px;padding:3px 9px}.help-toc a:hover{background:rgba(90,209,230,.1)}
.help section{margin:14px 0 18px;padding-top:8px;border-top:1px solid var(--line)}.help h3{margin:0 0 6px;font-size:15px;color:var(--text)}
.help p,.help li{font-size:13.5px;line-height:1.5;color:#c9d2e0}.help ul{padding-left:18px;margin:4px 0}.help li{margin:4px 0}.help b{color:var(--text)}
.help table{width:100%;border-collapse:collapse;font-size:12.5px;margin:6px 0}.help th,.help td{border:1px solid var(--line);padding:6px 8px;vertical-align:top;text-align:left}.help th{background:var(--panel2);color:var(--dim);font-weight:500}

.center-top{display:grid;grid-template-columns:230px 1fr;gap:14px}@media(max-width:1180px){.center-top{grid-template-columns:1fr}}
.well-card canvas{width:100%;height:640px;display:block;border-radius:8px;cursor:ns-resize}
.legend.v{flex-direction:column;align-items:flex-start;gap:4px;margin-top:8px}.legend.v span{display:flex;align-items:center}
.sw.rock{background:#1a2030;border:1px solid #2a3446}
.center-right{display:flex;flex-direction:column;gap:10px}
.transport-card{padding:10px 14px}.transport{margin-top:0}
.gauges{grid-template-columns:repeat(3,1fr)}@media(max-width:1400px){.gauges{grid-template-columns:repeat(2,1fr)}}

.tag{color:var(--cyan);font-size:12.5px;border:1px solid rgba(90,209,230,.35);border-radius:999px;padding:2px 9px}
.flow{margin:4px 0 10px;padding:10px 10px 8px;border:1px dashed var(--line);border-radius:10px;background:#0c1118}
.flow-h{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:8px}.flow-h b{color:var(--cyan)}
.flow-row{display:flex;align-items:stretch;gap:4px}
.fn{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:6px 7px;background:var(--panel2);display:flex;flex-direction:column;gap:2px;transition:opacity .2s,border-color .2s,box-shadow .2s}
.fn-k{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--text)}.fn-v{font-size:10px;color:var(--dim);line-height:1.25}
.fn.gate{border-color:var(--cyan);box-shadow:0 0 0 1px rgba(90,209,230,.25)}
.fa{align-self:center;color:var(--dim);font-size:16px;width:14px;text-align:center;transition:color .2s}
.flow.PASS .fn.down{border-color:rgba(61,220,151,.55);box-shadow:0 0 12px rgba(61,220,151,.15)}
.flow.PASS .fa#fa-out,.flow.PASS .fa#fa-human{color:var(--pass);animation:pulse 1s ease-in-out infinite}
.flow.BLOCKED .fn.down{opacity:.3;filter:grayscale(.7)}
.flow.BLOCKED .fa#fa-out{color:var(--viol)}.flow.BLOCKED .fa#fa-out::before{content:"⊘ "}
.flow.BLOCKED .fa#fa-human{opacity:.3}
.flow.BLOCKED .fn.gate{border-color:var(--viol);box-shadow:0 0 0 1px rgba(255,92,108,.35)}
.flow-note{margin-top:7px;font-size:11.5px;color:var(--dim)}.flow.PASS .flow-note{color:#9fe8c6}.flow.BLOCKED .flow-note{color:#ffb3ba}
@keyframes pulse{0%,100%{transform:translateX(0)}50%{transform:translateX(3px)}}

.scope-l{font-size:10.5px;color:var(--dim);margin-top:8px;line-height:1.5;word-break:break-word}.scope-l b{color:var(--text);font-weight:500}.scope-l .deny{color:var(--viol)}
.fold-why{text-align:center;font-size:12.5px;color:var(--dim);margin:-4px 0 10px}.fold-why b{color:var(--text)}
.invs{display:flex;flex-direction:column;gap:6px}
.inv{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;transition:border-color .15s}
.inv.VIOLATION{border-color:rgba(255,92,108,.6);box-shadow:0 0 12px rgba(255,92,108,.15)}.inv.UNDETERMINED{border-color:rgba(255,180,84,.6)}.inv.PASS{border-color:rgba(61,220,151,.35)}
.inv-h{display:flex;justify-content:space-between;align-items:center;font-size:12px;gap:8px}.inv-h .lbl{color:var(--dim);font-size:11px;margin-left:6px}
.inv-detail{margin-top:5px;font-size:12.5px;color:var(--text);word-break:break-word}

.center-right{min-height:0}
.tape-card{flex:1;display:flex;flex-direction:column;min-height:200px;padding:10px 14px 8px}
.tape-card .card-h{margin-bottom:6px}.tape-counts{font-size:11px;color:var(--dim)}.tape-counts .viol{color:var(--viol);font-weight:600}.tape-counts .und{color:var(--und);font-weight:600}
.tape{flex:1;min-height:120px;max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#0b1018;font-family:var(--mono);font-size:11.5px}
.tape-empty{padding:14px;color:var(--dim);font-family:var(--sans);font-size:12px}
.te{border-bottom:1px solid #151c29;cursor:pointer}.te:last-child{border-bottom:none}
.te-row{display:grid;grid-template-columns:14px 72px 170px 1fr 96px;gap:8px;align-items:center;padding:5px 8px}
.te-row:hover{background:#111826}.te.cur .te-row{background:#121a2a;box-shadow:inset 2px 0 0 var(--cyan)}
.te-x{color:var(--dim);font-size:10px}.te.open .te-x{transform:rotate(90deg)}.te-x{display:inline-block;transition:transform .15s}
.te-d{color:var(--text);text-align:right}.te-i{color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.te-w{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.te-s{text-align:right;font-weight:600;font-size:10.5px;letter-spacing:.04em}.te.v1 .te-s{color:var(--viol)}.te.v2 .te-s{color:var(--und)}.te.v1 .te-d{color:#ffb3ba}.te.v2 .te-d{color:#ffd9a3}
.te.new .te-row{animation:flash .6s ease-out}@keyframes flash{from{background:rgba(255,92,108,.25)}to{background:transparent}}
.te.v2.new .te-row{animation:flashu .6s ease-out}@keyframes flashu{from{background:rgba(255,180,84,.25)}to{background:transparent}}
.te-ev{display:none;padding:4px 8px 8px 30px;font-size:10.5px;color:#c9d2e0;white-space:pre-wrap;word-break:break-word;background:#0d131c;border-top:1px dashed var(--line)}.te.open .te-ev{display:block}
.te-ev .dim{display:block;margin-bottom:4px}
.te-more{padding:6px 8px;color:var(--dim);font-family:var(--sans);font-size:11px;text-align:center}
.te.refused{border-bottom:1px solid rgba(255,92,108,.4);background:rgba(255,92,108,.08);cursor:default}.te.refused .te-s,.te.refused .te-d{color:var(--viol)}.te.refused .te-w{color:#ffb3ba}
.tape-hint{display:flex;gap:10px;align-items:center;justify-content:space-between;border:1px dashed rgba(255,180,84,.5);border-radius:8px;padding:7px 10px;margin-bottom:6px;font-size:11.5px;color:#d9c39a;background:rgba(255,180,84,.06)}
.tape-hint[hidden]{display:none}.tape-hint b{color:var(--und)}.tape-hint .btn{margin:0;white-space:nowrap;border-color:rgba(255,180,84,.6);color:var(--und);font-size:12px;padding:6px 10px}
.tape-foot{margin-top:6px;font-size:11px}

.chips button.on{border-color:var(--und);color:var(--und);background:rgba(255,180,84,.1)}
.chips button.was{border-color:rgba(61,220,151,.45);color:var(--text)}
.chips button small{display:block;font-family:var(--mono);font-size:10px;color:inherit;opacity:.85}
.btn.tiny{margin:0;padding:2px 8px;font-size:11px}
.c.agent{grid-column:1/-1;flex-direction:row;align-items:baseline;gap:10px;border:1px dashed var(--line)}
.c.agent b{font-size:16px}.c.agent.out{border-color:rgba(255,180,84,.6)}.c.agent.out b{color:var(--und)}.c.agent.in b{color:var(--pass)}
.flow.BLOCKED .fn#fn-human{opacity:1;filter:none;border-color:var(--und);box-shadow:0 0 12px rgba(255,180,84,.2)}
.flow.BLOCKED .fa#fa-human{opacity:1;color:var(--und)}

.hold{flex-direction:row;align-items:center;gap:6px;font-size:11px;color:var(--dim);white-space:nowrap;cursor:pointer}.hold input{width:auto;accent-color:var(--und)}
.overlay.l4{background:rgba(6,8,12,.8)}
.l4-card{background:#15120b;border-color:rgba(255,180,84,.6);box-shadow:0 0 60px rgba(255,180,84,.2)}
.l4-card .ov-h{color:var(--und)}.ov-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.l4-where{color:var(--text);font-size:13px}
.l4-sec{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-top:8px;background:#0b0a08}
.l4-sec.und{border-color:rgba(255,180,84,.55)}.l4-sec.viol{border-color:rgba(255,92,108,.45)}.l4-sec.pass{border-color:rgba(61,220,151,.25)}
.l4-h{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.l4-sec.und .l4-h{color:var(--und)}.l4-sec.viol .l4-h{color:var(--viol)}
.l4-item{font-size:12.5px;padding:3px 0;border-top:1px dashed var(--line)}.l4-item:first-child{border-top:none}.l4-item .mono{color:var(--text)}.l4-item .d{color:#c9d2e0;display:block;font-size:12px}
.l4-none{font-size:12px;color:var(--dim)}
.l4-btns{margin-top:10px}.l4-btns .btn{border-color:rgba(255,180,84,.6)}
.te.human{cursor:default;background:rgba(90,209,230,.06)}.te.human .te-s,.te.human .te-i{color:var(--cyan)}.te.human .te-w{color:#bfe9f2}
