/* QorTime verifier. Motion is transform and opacity only. Gold appears only under [data-tone="gold"], .seal and .score.gold,
   which the script sets only when the verifier returned VERIFIED. */
:root{
  --bg:#04050a;--ink:#e6edf3;--mute:#8b98ad;--line:#1d2636;--card:#0a0f19;--card2:#0d1422;
  --pass:#2ef2ff;--partial:#ffb020;--fail:#ff5d5d;--absent:#5b6678;--unchecked:#7c8799;--info:#9fb3d9;
  --gold:#e4c56d;--gold2:#f8efc8;
  --ease:cubic-bezier(.2,.8,.2,1);--spring:cubic-bezier(.34,1.4,.5,1);
  --step:70ms;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 "Inter Tight",system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;
  background:radial-gradient(900px 420px at 85% -10%,rgba(46,242,255,.09),transparent 60%),radial-gradient(700px 380px at -10% 20%,rgba(120,140,255,.06),transparent 60%)}
a{color:#7df9ff}
code,kbd,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.wrap{max-width:1040px;margin:0 auto;padding:0 18px 64px}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;max-width:1040px;margin:0 auto;padding:18px}
.brand{font:900 22px/1 "Big Shoulders Display",Impact,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);text-decoration:none}
.top nav{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:14px}
.top nav a{color:var(--mute);text-decoration:none;padding:10px 0}
.top nav a:hover{color:var(--ink)}
.hero h1{margin:8px 0 6px;font:900 clamp(38px,7vw,64px)/.95 "Big Shoulders Display",Impact,sans-serif;letter-spacing:.04em;text-transform:uppercase}
.hero p{margin:0 0 18px;color:var(--mute);max-width:720px}
.sec{margin:34px 0 12px;font:800 13px/1 ui-monospace,monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--mute)}

/* ---------- input card ---------- */
.card{border:1px solid var(--line);background:linear-gradient(180deg,var(--card2),var(--card));border-radius:18px;padding:16px}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
textarea,input[type=text]{width:100%;background:#070b13;color:var(--ink);border:1px solid #243046;border-radius:12px;padding:10px 12px;font:13px/1.45 ui-monospace,monospace}
textarea{height:180px;resize:vertical;margin:12px 0 10px}
textarea:focus,input:focus{outline:2px solid rgba(46,242,255,.5);outline-offset:1px}
label.lbl,.lbl{display:block;font-size:13px;color:var(--mute);margin:10px 0 6px}
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border-radius:12px;border:1px solid #2a3850;
  background:#111a2a;color:var(--ink);font:600 15px/1 "Inter Tight",system-ui,sans-serif;cursor:pointer;text-decoration:none;
  transition:transform .14s var(--ease),opacity .2s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.btn:active{transform:scale(.96)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn.primary{background:linear-gradient(180deg,#38f4ff,#14b9cc);color:#031015;border-color:transparent;font-weight:700}
.btn.ghost{background:transparent;border-color:rgba(46,242,255,.4)}
@media (hover:hover) and (pointer:fine){.btn:not(:disabled):hover{transform:translateY(-1px)}.btn:not(:disabled):active{transform:scale(.96)}}
.btn[aria-busy=true]::after{content:"";position:absolute;left:12px;right:12px;bottom:5px;height:2px;border-radius:2px;background:currentColor;opacity:.5;
  transform-origin:left;animation:busy 1s var(--ease) infinite}
@keyframes busy{0%{transform:scaleX(0)}60%{transform:scaleX(1);opacity:.5}100%{transform:scaleX(1);opacity:0}}
.file{position:relative;overflow:hidden}
.file input{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
.file:focus-within{outline:2px solid rgba(46,242,255,.5);outline-offset:1px}
.pin-warn{color:var(--partial);font-size:14px;margin:6px 0 0}
.attached{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.attached:empty{display:none}
.attached span{font:12px ui-monospace,monospace;padding:4px 8px;border-radius:999px;border:1px solid #2a3850;color:var(--info);
  animation:pop .32s var(--spring) both}
@keyframes pop{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}
.go-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px}
.go-row small{color:var(--mute)}

/* ---------- verdict ---------- */
.verdict{position:relative;overflow:hidden;margin-top:18px;border-radius:20px;border:1px solid var(--line);background:var(--card);padding:20px;
  --tint:rgba(124,135,153,.12);isolation:isolate;contain:paint}
.verdict::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(520px 220px at 0% 0%,var(--tint),transparent 70%);opacity:0;transition:opacity .5s var(--ease) var(--after,0ms)}
.verdict.revealed::before{opacity:1}
.verdict[data-tone=gold]{--tint:rgba(228,197,109,.24);border-color:rgba(228,197,109,.55)}
.verdict[data-tone=warn]{--tint:rgba(255,176,32,.16)}
.verdict[data-tone=bad],.verdict[data-tone=err]{--tint:rgba(255,93,93,.17)}
.v-main{display:flex;gap:18px;align-items:center}
.kicker{margin:0;font:700 12px/1 ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--mute)}
#word{margin:6px 0 4px;font:900 clamp(40px,8vw,72px)/.9 "Big Shoulders Display",Impact,sans-serif;letter-spacing:.06em;color:var(--ink);will-change:auto}
#line{margin:0;color:#c3cddc;max-width:640px}
.verdict[data-tone=gold] #word{color:var(--gold2);text-shadow:0 0 28px rgba(228,197,109,.35)}
.verdict[data-tone=warn] #word{color:var(--partial)}
.verdict[data-tone=bad] #word,.verdict[data-tone=err] #word{color:var(--fail)}
.verdict[data-tone=idle] #word,.verdict[data-tone=checking] #word{color:#b7c2d4}
/* the result text waits until the step cascade has finished */
.verdict:not(.revealed):is([data-tone=gold],[data-tone=warn],[data-tone=bad],[data-tone=err]) :is(#word,#line,.tags){opacity:0;transform:translateY(10px)}
.verdict.revealed :is(#word,#line,.tags){transition:opacity .35s var(--ease) var(--after,0ms),transform .55s var(--spring) var(--after,0ms)}
.verdict.revealed #line{transition-delay:calc(var(--after,0ms) + 60ms)}
.verdict.revealed .tags{transition-delay:calc(var(--after,0ms) + 120ms)}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.tags:empty{display:none}
/* neutral progress while checking: grey scan, never gold, never a mark */
.verdict[data-tone=checking]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,transparent,#9fb3d9,transparent);
  transform:translateX(-100%);animation:scan 1.1s linear infinite}
@keyframes scan{to{transform:translateX(100%)}}
.seal-slot:empty{display:none}
.seal{position:relative;display:block;width:76px;height:76px;flex:none;border-radius:50%;overflow:hidden;
  opacity:0;transform:scale(.5) rotate(-35deg)}
.verdict.revealed .seal{opacity:1;transform:none;transition:opacity .3s var(--ease) var(--after,0ms),transform .7s var(--spring) var(--after,0ms)}
.seal-svg{width:100%;height:100%;display:block}
.seal .ring{fill:none;stroke:var(--gold);stroke-width:3}
.seal .disc{fill:var(--gold)}
.seal .tick{fill:none;stroke:#1a1408;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;opacity:0;transform:scale(.6);transform-origin:32px 32px}
.verdict.revealed .seal .tick{opacity:1;transform:none;transition:opacity .25s var(--ease) calc(var(--after,0ms) + 320ms),transform .5s var(--spring) calc(var(--after,0ms) + 320ms)}
.seal .sheen{position:absolute;inset:-20%;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.55) 50%,transparent 60%);transform:translateX(-120%)}
.verdict.revealed .seal .sheen{transform:translateX(120%);transition:transform 1s var(--ease) calc(var(--after,0ms) + 520ms)}

/* ---------- chips ---------- */
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font:600 12px/1.3 "Inter Tight",system-ui,sans-serif;
  border:1px solid currentColor;color:var(--info);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.chip i{width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.chip.s-pass{color:var(--pass)}.chip.s-partial{color:var(--partial)}.chip.s-fail{color:var(--fail)}
.chip.s-absent{color:var(--absent);border-style:dashed}.chip.s-absent i{background:transparent;border:1px solid currentColor}
.chip.s-unchecked{color:var(--unchecked)}.chip.s-info{color:var(--info)}

/* ---------- steps ---------- */
.steps{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:18px;background:var(--card);overflow:hidden}
.step{display:grid;grid-template-columns:28px minmax(0,1fr);gap:2px 10px;padding:10px 14px;border-top:1px solid var(--line);align-items:start}
.step:first-child{border-top:0}
.step .mk{position:relative;width:22px;height:22px;margin-top:1px}
.step .mk i{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-size:16px;line-height:1}
.step .q{border-radius:50%;border:1.5px solid #3a4558;inset:5px!important}
.step .m{opacity:0;transform:scale(.3)}
.step .st{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:baseline}
.step .st b{font-weight:600}
.step .sv{font:600 12px/1.3 ui-monospace,monospace;letter-spacing:.04em;color:var(--mute)}
.step .why{grid-column:2;font-size:14px;color:#aab6c8}
.step .why:empty{display:none}
.step[data-state=queued]{opacity:.5}
.step[data-state=queued] .q{animation:wait 1.2s ease-in-out infinite;animation-delay:calc(var(--i) * 90ms)}
@keyframes wait{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}
.step:not([data-state=queued]) .q{opacity:0}
.steps:not(.revealed) .step:not([data-state=queued]){opacity:0;transform:translateX(-8px)}
.steps.revealed .step{opacity:1;transform:none;transition:opacity .28s var(--ease),transform .4s var(--ease);transition-delay:calc(var(--i) * var(--step))}
.steps.revealed .step .m{opacity:1;transform:none;transition:opacity .2s var(--ease),transform .45s var(--spring);transition-delay:calc(var(--i) * var(--step) + 60ms)}
.step[data-state=pass] .m,.step[data-state=pass] .sv{color:var(--pass)}
.step[data-state=partial] .m,.step[data-state=partial] .sv{color:var(--partial)}
.step[data-state=fail] .m,.step[data-state=fail] .sv{color:var(--fail)}
.step[data-state=fail]{background:linear-gradient(90deg,rgba(255,93,93,.08),transparent 60%)}
.step[data-state=absent] .m,.step[data-state=absent] .sv,.step[data-state=absent] b{color:var(--absent)}
.step[data-state=unchecked] .m,.step[data-state=unchecked] .sv{color:var(--unchecked)}

/* ---------- codes / facts ---------- */
.codes{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px}
.codes li{font-size:14px;color:#c3cddc}
.codes code{display:inline-block;margin-left:6px;font-size:11px;color:var(--mute);word-break:break-all}
.facts{display:grid;grid-template-columns:minmax(110px,max-content) minmax(0,1fr);gap:4px 14px;margin:10px 0 0;font-size:14px}
.facts dt{color:var(--mute)}
.facts dd{margin:0;overflow-wrap:anywhere}
.np{color:var(--absent);font-style:italic}

/* ---------- panels ---------- */
.panels{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-auto-flow:row dense;gap:12px}
.panel{position:relative;border:1px solid var(--line);border-radius:18px;background:var(--card);padding:14px 16px 16px;contain:layout paint}
.panel::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:3px;background:var(--absent);transform-origin:top}
.panel.s-pass::before{background:var(--pass)}.panel.s-partial::before{background:var(--partial)}.panel.s-fail::before{background:var(--fail)}
.panel.s-info::before{background:var(--info)}.panel.s-unchecked::before{background:var(--unchecked)}
.panel.s-absent{border-style:dashed;background:transparent}
.panel.s-fail{border-color:rgba(255,93,93,.35)}
.panel header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 10px}
.panel h3{margin:0;font:800 20px/1.1 "Big Shoulders Display",Impact,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.panel.s-absent h3{color:#9aa6b8}
.pnote{margin:10px 0 0;font-size:13px;color:var(--mute)}
.pnote.bad{color:var(--fail)}
#p-result,#p-chain,#p-challenges,#p-review,#p-unknown,#p-sidecars,#p-input,#p-log{grid-column:1/-1}
#p-result{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr);gap:0 36px;align-items:start}
#p-result header,#p-result .pnote{grid-column:1/-1}
#p-result .facts{margin-top:14px}
.reveal{opacity:0;transform:translateY(16px)}
.reveal.in{opacity:1;transform:none;transition:opacity .45s var(--ease),transform .6s var(--ease);transition-delay:calc(var(--i,0) * 60ms)}
.reveal::before{transform:scaleY(0)}
.reveal.in::before{transform:none;transition:transform .5s var(--ease) calc(var(--i,0) * 60ms + 120ms)}

/* score */
.score{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-top:10px}
.score span{display:grid}
.score small{font:600 11px/1 ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.score b{font:900 56px/.95 "Big Shoulders Display",Impact,sans-serif;color:#cfd8e6}
.score i{font-style:normal;font-size:36px;color:var(--absent);padding-bottom:6px}
.score em{flex-basis:100%;font-style:normal;font-size:13px;color:var(--mute)}
.score.gold b{color:var(--gold2);text-shadow:0 0 22px rgba(228,197,109,.35)}
.reveal .score b{display:inline-block;transform:translateY(40%);opacity:0}
.reveal.in .score b{transform:none;opacity:1;transition:transform .6s var(--spring) .25s,opacity .3s var(--ease) .25s}

/* meters: scaleX only */
.meter{position:relative;height:8px;border-radius:8px;background:#131c2b;overflow:hidden;margin:6px 0 2px}
.meter i{position:absolute;inset:0;border-radius:8px;background:var(--pass);transform-origin:left;transform:scaleX(0)}
.meter.warn i{background:var(--partial)}.meter.bad i{background:var(--fail)}.meter.dim i{background:#4a5568}
.meter b{position:absolute;top:0;bottom:0;left:calc(var(--x) * 100%);width:2px;background:#e6edf3;opacity:.8}
.in .meter i{transform:scaleX(var(--f));transition:transform .9s var(--ease) .2s}
.gauge{margin-top:12px}
.g-h{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;justify-content:space-between;font-size:14px}
.g-h span{color:var(--mute);font-size:13px}
.pair{display:grid;gap:4px}
.device-line{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;margin-top:10px}
.device-line .lbl{margin:0}
.device-line b{font-size:18px}

/* hash chain: links draw in one after another, cracked links break apart */
.chainrow{margin-top:12px}
.ch-h{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;font-size:14px}
.ch-h b{text-transform:uppercase;letter-spacing:.1em;font-size:12px}
.ch-h span{color:var(--mute)}
.ch-h code{font-size:11px;color:var(--mute);margin-left:auto}
.links{display:flex;gap:3px;margin-top:8px;height:18px;align-items:center}
.lk{flex:1 1 0;min-width:2px;height:10px;border-radius:3px;background:var(--pass);opacity:0;transform:scaleX(.2)}
.panel.s-unchecked .lk{background:var(--unchecked)}
.lk.crack{background:var(--fail);height:16px}
.lk.tailgap{flex:3 1 0;background:transparent;border:1.5px dashed var(--fail);height:10px}
.in .lk{opacity:1;transform:none;transition:opacity .2s var(--ease),transform .35s var(--ease);transition-delay:calc(var(--k,40) * 14ms + 150ms)}
.in .lk.crack{animation:crack .5s var(--ease) both;animation-delay:calc(var(--k) * 14ms + 450ms)}
@keyframes crack{0%{transform:none}35%{transform:translateY(-3px) rotate(-14deg)}100%{transform:translateY(2px) rotate(12deg)}}

/* challenges */
.cgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.cell{border:1px solid var(--line);border-radius:14px;padding:10px;background:#080d16;opacity:0;transform:translateY(8px)}
.in .cell{opacity:1;transform:none;transition:opacity .3s var(--ease),transform .45s var(--ease);transition-delay:calc(var(--k) * 60ms + 120ms)}
.cell.s-fail{border-color:rgba(255,93,93,.45)}.cell.s-partial{border-color:rgba(255,176,32,.4)}.cell.s-absent{border-style:dashed;background:transparent}
.cell-h{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.cell-h>span:not(.chip){color:var(--mute);font-size:12px;text-transform:uppercase;letter-spacing:.1em}
.cell-h .chip{margin-left:auto}
.cell small{display:block;color:var(--mute);font-size:12px;margin-top:4px}
.pat{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.pat kbd{font-size:11px;padding:3px 6px;border-radius:6px;border:1px solid #2a3850;background:#0f1726;color:#cfd8e6;opacity:0;transform:scale(.7)}
.in .pat kbd{opacity:1;transform:none;transition:opacity .2s,transform .35s var(--spring);transition-delay:calc(var(--k) * 60ms + 260ms)}

/* corroboration: two sides, a bridge that meets only when both recordings agree */
.pairviz{display:grid;grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);align-items:center;gap:6px;margin-top:12px}
.pairviz .side{border:1px solid var(--line);border-radius:12px;padding:8px 10px;display:grid;gap:2px;background:#080d16}
.pairviz .side small{color:var(--mute);font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.pairviz .side span{color:var(--mute);font-size:12px}
.pairviz .side.ghost{border-style:dashed;background:transparent;color:var(--absent)}
.bridge{position:relative;height:4px}
.bridge i{position:absolute;top:0;height:4px;width:50%;border-radius:4px;background:var(--absent);transform:scaleX(0)}
.bridge i:first-child{left:0;transform-origin:left}.bridge i:last-child{right:0;transform-origin:right}
.pairviz.corroborated .bridge i{background:var(--pass)}
.pairviz.disagreed .bridge i{background:var(--fail)}
.in .pairviz.corroborated .bridge i{transform:none;transition:transform .6s var(--ease) .3s}
.in .pairviz.disagreed .bridge i{transform:scaleX(.6);transition:transform .5s var(--ease) .3s}
.in .pairviz.disagreed .bridge{animation:jolt .4s var(--ease) .85s both}
@keyframes jolt{0%,100%{transform:none}30%{transform:translateX(-3px)}60%{transform:translateX(3px)}}
.in .pairviz.single_sided .bridge i:first-child{transform:scaleX(.5);transition:transform .5s var(--ease) .3s}

/* review checks */
.checks{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.checks li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:2px 8px;align-items:center;opacity:0;transform:translateX(-6px)}
.in .checks li{opacity:1;transform:none;transition:opacity .25s var(--ease),transform .35s var(--ease);transition-delay:calc(var(--k) * 70ms + 150ms)}
.checks .mk{text-align:center}
.checks .s-pass .mk{color:var(--pass)}.checks .s-partial .mk{color:var(--partial)}.checks .s-fail .mk{color:var(--fail)}
.checks small{grid-column:2/-1;color:var(--mute);font-size:12px}
details.np-list,details.raw{margin-top:10px}
details summary{cursor:pointer;color:#c3cddc;font-size:14px;min-height:28px}
details pre,.raw-out pre{background:#070b13;border:1px solid var(--line);padding:10px;border-radius:12px;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:420px;overflow:auto}

/* handles, sidecars, log */
.handles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-top:10px}
.handles .side{border:1px solid var(--line);border-radius:12px;padding:8px 10px;display:grid;gap:2px}
.handles small,.handles span{color:var(--mute);font-size:12px}
.file-card,.panel .file{border:1px solid var(--line);border-radius:12px;padding:10px;margin-top:10px;background:#080d16}
.panel .file.s-fail{border-color:rgba(255,93,93,.45)}
.panel .file code{font-size:11px;color:var(--mute)}
.fields{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.fields span{font-size:11px;color:var(--mute);border:1px solid var(--line);border-radius:6px;padding:2px 6px}
.logstate{margin-top:8px}
.logstate code{font-size:11px;color:var(--mute);word-break:break-all}
.pending{color:var(--info);animation:breathe 1.2s ease-in-out infinite}
@keyframes breathe{50%{opacity:.45}}
#p-log .btn{margin-top:10px}

/* Verified Match (test mode) */
.vm{margin-top:34px;padding:18px;border-radius:18px;border:1px solid var(--line);background:linear-gradient(165deg,#0c1626,#071018)}
.vm h2{margin:0 0 6px;font:900 28px/1 "Big Shoulders Display",Impact,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.vm small,.vm p{color:var(--mute)}
.vm-test{margin-left:.4rem;font:700 11px ui-monospace,monospace;letter-spacing:.16em;color:#8ee7f2;border:1px solid rgba(142,231,242,.5);border-radius:999px;padding:.15rem .45rem;vertical-align:middle}
.vm-badge{display:inline-flex;align-items:center;gap:.7rem;margin:.7rem 0;padding:.7rem 1rem;border-radius:999px;font:700 16px/1.2 "Inter Tight",system-ui,sans-serif;letter-spacing:.04em;color:#d5deea;background:#121a28;border:1px solid rgba(130,170,210,.45);animation:pop .35s var(--spring) both}
.vm-badge.gold{font:900 18px/1 "Big Shoulders Display",Impact,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#1a1408;background:linear-gradient(105deg,#f8efc8,#e4c56d 55%,#7fe7f2);border-color:transparent;box-shadow:0 0 0 1px rgba(228,197,109,.7),0 12px 36px rgba(228,197,109,.28)}
.vm-badge small{color:#3a3018;font:700 11px ui-monospace,monospace;letter-spacing:.18em}
#vm-err{color:var(--partial);min-height:1.2em}
#vm-return{color:#c3cddc}
#vm-state{color:#c3cddc}

.legend{display:grid;gap:8px;margin-top:10px}
.legend p{margin:0;color:#b9c1d6;font-size:15px}
.legend b{font-family:ui-monospace,monospace;letter-spacing:.06em}
.raw-out{margin-top:24px}
.foot{margin-top:28px;color:var(--mute);font-size:13px}

@media (max-width:720px){
  .wrap{padding:0 14px 56px}
  .cgrid{grid-template-columns:minmax(0,1fr)}
  .panels{grid-template-columns:minmax(0,1fr)}
  .v-main{align-items:flex-start}
  .seal{width:58px;height:58px}
  .score b{font-size:48px}
  #p-result{grid-template-columns:minmax(0,1fr)}
}
/* phones: 16px fields stop iOS Safari zooming on focus; 44px touch targets */
@media (max-width:640px){
  textarea,input[type=text]{font-size:16px}
  .btn{min-height:44px}
  .facts{grid-template-columns:minmax(0,1fr);gap:0}
  .facts dd{margin-bottom:6px}
  .pairviz{grid-template-columns:minmax(0,1fr) 36px minmax(0,1fr)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal,.cell,.checks li,.lk,.pat kbd,.reveal .score b,.step .m,.seal,.seal .tick{opacity:1!important;transform:none!important}
  .seal .sheen{display:none}
  .verdict[data-tone=checking]::after{display:none}
}
