/* ============================================================================
   PQCAT scanner (server test) — austere restyle on the system. Keeps the
   existing markup, IDs, JS, and gauge geometry; only re-skins the classes.
   Pairs with system.css + pqcat.css (risk colors + slate accent).
   ============================================================================ */

/* ---- nav (scanner uses <nav class="nav"> with direct children) ---- */
nav.nav{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;height:64px;padding-inline:var(--pad);background:rgba(250,248,243,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}
[data-theme="dark"] nav.nav{background:rgba(14,16,19,.9)}
.nav-brand{display:flex;align-items:center;gap:.55rem;font-family:var(--mono);font-weight:500;letter-spacing:.22em;font-size:.82rem;text-transform:uppercase;color:var(--ink)}
.nav-brand .mark{height:26px;width:26px;display:block;background:currentColor;-webkit-mask:url(images/soqucoin-mark.svg) no-repeat center;-webkit-mask-size:contain;mask:url(images/soqucoin-mark.svg) no-repeat center;mask-size:contain}
.nav-links{display:flex;gap:2rem;align-items:baseline}
.nav-links a{font-size:.9rem;color:var(--muted);transition:color .2s}
.nav-links a:hover{color:var(--ink)}
.nav-links a.nav-cta{color:var(--ink);border-bottom:2px solid var(--accent);padding-bottom:2px}
.nav-hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;background:none;border:0;cursor:pointer;padding:10px}
.nav-hamburger span{display:block;height:2px;width:100%;background:var(--ink);transition:transform .25s,opacity .25s}
@media(max-width:760px){
  .nav-hamburger{display:flex}
  .nav-links{position:absolute;left:0;right:0;top:64px;flex-direction:column;gap:0;align-items:stretch;background:var(--paper);border-bottom:1px solid var(--rule);padding:.5rem var(--pad) 1.25rem;opacity:0;transform:translateY(-10px);pointer-events:none;transition:opacity .2s,transform .2s}
  .nav-links.open{opacity:1;transform:none;pointer-events:auto}
  .nav-links a{display:block;font-size:1rem;padding:.95rem 0;border-bottom:1px solid var(--rule);color:var(--ink)}
}

/* Legacy alias fix: the scan JS colors results with var(--green/--amber/--red),
   which were dropped in the austere restyle — result colors silently never
   applied. Alias them to the live risk ramp. */
:root{--green:var(--risk-green);--amber:var(--risk-amber);--red:var(--risk-red)}

/* ---- page shell ---- */
.scanner-page{padding:clamp(2rem,5vw,4rem) 0 clamp(3rem,6vw,5rem)}
.scanner-container{max-width:880px;margin:0 auto;padding-inline:var(--pad)}
.scanner-header h1{font-size:clamp(1.6rem,3.2vw,2.4rem);margin-bottom:.75rem} /* nameplate face from instrument.css */
.scanner-header p{color:var(--muted);font-size:1.02rem;line-height:1.6;max-width:62ch}

/* ---- scan form ---- */
.scan-form{display:flex;gap:.6rem;margin:2rem 0 .75rem;flex-wrap:wrap}
.scan-input{flex:1;min-width:240px;font-family:var(--mono);font-size:1rem;padding:.85rem 1rem;background:var(--paper-2);border:1px solid var(--rule);color:var(--ink)}
.scan-input:focus{outline:2px solid var(--accent);outline-offset:1px}
.scan-btn{font-family:var(--mono);font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;padding:.85rem 1.6rem;background:var(--accent);color:var(--paper);border:1px solid var(--accent);cursor:pointer;transition:background .2s}
.scan-btn:hover{background:var(--accent-ink)}
.scan-hint{font-family:var(--mono);font-size:.7rem;letter-spacing:.04em;color:var(--muted)}

/* ---- progress (panel from instrument.css supplies chrome) ---- */
.scan-progress{display:none;margin-top:2rem}
.scan-progress.active{display:block}
.progress-spinner{width:28px;height:28px;border:2px solid var(--rule);border-top-color:var(--accent);border-radius:50%;animation:pqcatSpin 1s linear infinite;margin-bottom:1rem}
@keyframes pqcatSpin{to{transform:rotate(360deg)}}
.progress-status{font-family:var(--mono);font-size:.85rem;color:var(--ink)}
.progress-target{font-family:var(--mono);font-size:.75rem;color:var(--muted);margin-top:.25rem}
.progress-phases{display:flex;gap:.5rem;margin-top:1.25rem;flex-wrap:wrap}
.phase-dot{width:9px;height:9px;border-radius:50%;background:var(--rule);transition:background .3s}
.phase-dot.active{background:var(--accent)}
.phase-dot.done{background:var(--muted)}

/* ---- error ---- */
.scan-error{display:none;margin-top:2rem;border:1px solid var(--rule);border-left:2px solid var(--risk-red);background:var(--paper-2);padding:1rem 1.25rem;font-family:var(--mono);font-size:.85rem;color:var(--risk-red)}
.scan-error.active{display:block}

/* ---- results ---- */
.scan-results{display:none;margin-top:2rem}
.scan-results.active{display:block}

/* ---- score card + gauge (panel chrome from instrument.css) ---- */
.score-card{margin-bottom:1.5rem}
.score-body{display:flex;gap:2rem;align-items:center;flex-wrap:wrap}
.score-gauge{position:relative;width:140px;height:140px;flex-shrink:0}
.score-gauge-bg{stroke:var(--rule);fill:none}
.score-gauge-fill{stroke:var(--accent);fill:none;transition:stroke-dashoffset 1.2s ease}
/* the score is a number the machine reports — instrument readout, not serif */
.score-number{font-family:var(--inst-mono,var(--mono));font-size:2.1rem;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--ink)}
.score-label{font-family:var(--inst-mono,var(--mono));font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
/* center the readout inside the gauge ring */
.score-value{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.15rem}
.score-details{flex:1;min-width:220px}
.score-target{font-family:var(--inst-mono,var(--mono));font-size:1.02rem;font-weight:600;color:var(--ink);word-break:break-all}

/* ---- zone bars (risk distribution) ---- */
.zone-bars{display:flex;flex-direction:column;gap:.6rem;margin-top:1.25rem}
.zone-bar{display:grid;grid-template-columns:auto 1fr auto;gap:.35rem .75rem;align-items:center}
/* the fill track is the 4th child of a 3-col grid: span the full row */
.zone-bar>.zone-bar-fill{grid-column:1/-1}
.zone-name{font-family:var(--mono);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:.4rem}
.zone-dot,.zone-indicator{width:9px;height:9px;display:inline-block;flex-shrink:0}
.zone-bar-fill,.zone-bar-inner{height:7px;background:var(--paper-2);border:1px solid var(--rule);overflow:hidden}
.zone-bar-inner{border:0;transition:width 1s ease}
.zone-count{font-family:var(--mono);font-size:.8rem;font-weight:600;color:var(--ink);min-width:2ch;text-align:right}
.zone-tag{font-family:var(--mono);font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;padding:.12rem .4rem;border:1px solid var(--rule)}

/* risk color mapping (scanner uses .red / .yellow / .green) */
.red,.zone-red .zone-bar-inner,.zone-dot.red,.zone-indicator.red{color:var(--risk-red)}
.zone-dot.red,.zone-indicator.red,.zone-red .zone-bar-inner,.zone-bar-inner.red{background:var(--risk-red)}
.yellow,.zone-dot.yellow,.zone-indicator.yellow{color:var(--risk-amber)}
.zone-dot.yellow,.zone-indicator.yellow,.zone-bar-inner.yellow{background:var(--risk-amber)}
.green,.zone-dot.green,.zone-indicator.green{color:var(--risk-green)}
.zone-dot.green,.zone-indicator.green,.zone-bar-inner.green{background:var(--risk-green)}
.zone-tag.red{color:var(--risk-red);border-color:var(--risk-red)}
.zone-tag.yellow{color:var(--risk-amber);border-color:var(--risk-amber)}
.zone-tag.green{color:var(--risk-green);border-color:var(--risk-green)}

/* ---- quantum exposure ---- */
.quantum-exposure{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--rule)}
.qe-row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
.qe-value{font-size:1.25rem}
.qe-track{margin-top:.5rem;height:7px;background:var(--paper-2);border:1px solid var(--rule);overflow:hidden}
#qe-bar{height:100%;background:var(--accent);width:0;transition:width 1s cubic-bezier(.4,0,.2,1)}

/* ---- assets table (dtable from instrument.css supplies the chrome; the
   table sits flush inside its panel) ---- */
.assets-table .algo{font-weight:600}
.assets-table .td-location{color:var(--muted);word-break:break-all}
.results-section{margin-bottom:1.5rem}
.scan-again{margin-top:1.5rem}
.scan-again button{font-family:var(--inst-mono,var(--mono));font-size:.68rem;letter-spacing:.08em;
  text-transform:uppercase;padding:.5rem 1rem;background:none;border:1px solid var(--rule);
  color:var(--ink);cursor:pointer;transition:border-color .15s,color .15s}
.scan-again button:hover{border-color:var(--accent);color:var(--accent)}

/* ---- disclaimer ---- */
.scanner-disclaimer{margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid var(--rule);font-family:var(--mono);font-size:.66rem;line-height:1.6;color:var(--muted)}
