:root{
  --bg:#0B0D12; --panel:#141821; --panel2:#1B2130; --border:#232A38;
  --text:#E7E9EE; --muted:#8A90A2; --mint:#6EE7B7; --blue:#38BDF8; --amber:#FBBF24; --danger:#f87171;
  --display:"Century Schoolbook","Bookman Old Style",Georgia,serif;
  --body:Calibri,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);line-height:1.55}
.wrap{max-width:64rem;margin:0 auto;padding:1.2rem}
h1,h2{font-family:var(--display);font-weight:600;line-height:1.15}
h1{font-size:clamp(1.8rem,4.5vw,2.6rem)} h2{font-size:1.4rem;margin:0 0 .3rem}
.mono{font-family:var(--mono)} .muted{color:var(--muted)}
.grad{background:linear-gradient(90deg,var(--mint),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent;font-family:var(--display)}
a{color:var(--blue)}
button{font:inherit;cursor:pointer}
button:disabled{opacity:.5;cursor:not-allowed}
.btn{font-weight:600;color:#0B0D12;border:0;border-radius:8px;padding:.6rem 1.1rem;background:linear-gradient(90deg,var(--mint),var(--blue))}
.chip{border:1px solid var(--border);background:var(--panel2);border-radius:999px;padding:.32rem .8rem;font-size:.82rem;color:var(--muted)}
.chip[aria-pressed=true]{color:#0B0D12;background:var(--mint);border-color:var(--mint);font-weight:600}
:focus-visible{outline:2px solid var(--mint);outline-offset:2px}

/* login */
#gate{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:1.2rem;z-index:10}
.gate-card{width:min(24rem,100%);background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:1.6rem}
.gate-card h1{font-size:1.6rem;margin:.6rem 0 .2rem}
.gate-card input{width:100%;margin-top:1rem;padding:.7rem .8rem;background:var(--panel2);border:1px solid var(--border);border-radius:8px;color:var(--text);font:inherit}
.gate-card .btn{width:100%;margin-top:.9rem}
.gate-err{color:var(--danger);font-size:.85rem;margin-top:.6rem;min-height:1.2rem}

/* header */
header.top{display:flex;align-items:center;gap:.7rem;padding-block:1rem;border-bottom:1px solid var(--border);margin-bottom:1.4rem}
header.top .name{font-family:var(--display);font-weight:600;font-size:1.4rem}
header.top .out{margin-left:auto;font-size:.8rem;color:var(--muted);background:none;border:0}

section.block{border-top:1px solid var(--border);padding-block:2rem}
section.block:first-of-type{border-top:0}
.eyebrow{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mint);margin-bottom:.5rem}
.lead{color:var(--muted);max-width:60ch}
.row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:1rem 0}
.status{font-family:var(--mono);font-size:.78rem;color:var(--muted)}

.scores{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));margin-top:1rem}
.score{border:1px solid var(--border);border-radius:10px;padding:1rem;background:var(--panel2)}
.score .k{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.score .v{font-family:var(--mono);font-size:1.9rem;margin-top:.3rem;line-height:1}
.score.safe .v{color:var(--mint)} .score.gain .v{color:var(--blue)}
.score .s{font-size:.78rem;color:var(--muted);margin-top:.35rem}

.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:1.2rem}
.chart{margin-top:1rem;border:1px solid var(--border);border-radius:10px;background:var(--panel2);padding:.8rem}
.chart svg{display:block;width:100%;height:auto}

.log{margin-top:1rem;max-height:14rem;overflow:auto;border:1px solid var(--border);border-radius:8px;background:#0B0D12}
.log table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.72rem}
.log td{padding:.35rem .7rem;border-bottom:1px solid var(--border);white-space:nowrap}
.log .r{color:var(--blue)} .log .ct{color:var(--muted);opacity:.7} .log .sz{color:var(--muted);text-align:right}

.fbars{display:grid;gap:.7rem;margin-top:1rem}
.fbar{display:grid;grid-template-columns:minmax(9rem,1fr) 2fr auto;gap:.8rem;align-items:center;font-size:.85rem}
.track{position:relative;height:1.4rem;border:1px solid var(--border);border-radius:4px;background:var(--panel2)}
.track .fed{position:absolute;inset:0 auto 0 0;background:var(--mint);opacity:.5;border-radius:3px}
.track .solo{position:absolute;inset:0 auto 0 0;background:var(--muted);opacity:.55;border-radius:3px}
.fbar .g{font-family:var(--mono);font-size:.78rem;color:var(--mint);white-space:nowrap}

.fiche{margin-top:1rem;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.fiche-head{display:flex;justify-content:space-between;gap:.6rem;align-items:center;padding:.9rem 1.1rem;background:var(--panel2);border-bottom:1px solid var(--border)}
.fiche-head .mid{font-family:var(--mono);font-weight:600}
.outcome{font-family:var(--mono);font-size:.66rem;text-transform:uppercase;border:1px solid var(--amber);color:var(--amber);border-radius:999px;padding:.15rem .5rem}
.verdicts{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));padding:1.1rem}
.verdict{border:1px solid var(--border);border-radius:8px;padding:1rem;background:var(--panel2)}
.verdict .k{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.verdict .p{font-family:var(--mono);font-size:2rem;margin-top:.3rem;line-height:1}
.verdict .l{font-size:.8rem;margin-top:.3rem}
.verdict.safe{}.verdict.safe .p,.verdict.safe .l{color:var(--mint)}
.verdict.danger{border-color:var(--amber)} .verdict.danger .p,.verdict.danger .l{color:var(--amber)}
.verdict.pending .p{color:var(--muted);opacity:.5}
.sensors{padding:0 1.1rem 1.1rem}
.sgrp{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:1rem 0 .4rem}
.sgrp.net{color:var(--blue)}
.sensor{display:grid;grid-template-columns:minmax(9rem,1.3fr) 2fr auto;gap:.8rem;align-items:center;padding:.4rem 0;border-bottom:1px solid var(--border)}
.sensor .bar{position:relative;height:.5rem;border-radius:3px;background:var(--panel2)}
.sensor .mid0{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--border)}
.sensor .fill{position:absolute;top:0;bottom:0;border-radius:2px}
.sensor .lv{font-family:var(--mono);font-size:.62rem;text-transform:uppercase;text-align:right;white-space:nowrap}
.explain{margin-top:1rem;border:1px solid var(--blue);border-radius:12px;padding:1.1rem;background:color-mix(in srgb,var(--blue) 8%,transparent)}
.explain h3{color:var(--blue);margin:0 0 .4rem}
.proofw{font-family:var(--mono);font-size:.74rem;color:var(--muted);margin-top:.7rem;display:flex;flex-wrap:wrap;gap:.3rem 1.2rem}
.proofw b{color:var(--text)}
.tstats{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));margin-top:.5rem}
.tstat{border:1px solid var(--border);border-radius:8px;padding:.7rem .8rem;background:var(--panel2)}
.tstat .v{font-family:var(--mono);font-size:1.4rem}.tstat.hot .v{color:var(--amber)}
.tstat .k{font-size:.74rem;color:var(--muted);margin-top:.2rem}
.slider{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;margin:.9rem 0}
.slider input[type=range]{flex:1;min-width:12rem;accent-color:var(--mint)}
.slider .thr{font-family:var(--mono);color:var(--mint)}
.tlist{margin-top:1rem;border:1px solid var(--border);border-radius:8px;overflow:auto}
.tlist table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.74rem}
.tlist th{text-align:left;color:var(--muted);font-weight:400;font-size:.64rem;text-transform:uppercase;letter-spacing:.06em;padding:.5rem .7rem;border-bottom:1px solid var(--border)}
.tlist td{padding:.4rem .7rem;border-bottom:1px solid var(--border);white-space:nowrap}
.miss{color:var(--amber)} .tag{font-size:.62rem;border:1px solid var(--amber);color:var(--amber);border-radius:999px;padding:.08rem .4rem}
footer{border-top:1px solid var(--border);margin-top:2rem;padding:1.4rem 0;color:var(--muted);font-size:.82rem}
