/* ============================================================
   STONKROBOTICS MINT — TERMINAL STYLE
   Design tokens extracted 1:1 from stonkbrokers.cash
   Font: full monospace (Bloomberg terminal)
   Radius: 0px (sharp terminal corners)
   Accent: #cfff04 · Green #00ff00 · Red #ff3333 · Orange #ff6600
   ============================================================ */
:root{
  /* ── exact stonkbrokers palette ── */
  --bg:#0c0c0c; --black:#111111;
  --panel:#141414; --panel2:#1c1c1c; --panel3:#232323;
  --border:#2e2e2e; --line:#2a2a2a; --line2:#3a3a3a;
  --ink:#ededed; --sub:#9e9e9e; --dim:#707070;
  --gray:#474546;
  --acc:#cfff04;            /* primary lime-yellow */
  --acc-fg:#111111;         /* text on accent */
  --green:#00ff00; --up:#00ff00;
  --danger:#ff3333; --red:#ff3333;
  --orange:#ff6600;         /* bloomberg orange */
  --cyan:#7c8b96;
  /* terminal = zero radius everywhere */
  --r:0px; --rlg:0px;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
  --sans:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Monaco,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
html,body{background:var(--bg);color:var(--ink);font-family:var(--mono);-webkit-font-smoothing:antialiased}
body{overflow-x:hidden;font-size:14px;letter-spacing:.01em}
a{color:inherit;text-decoration:none}
::selection{background:var(--acc);color:#000}

/* ── BACKGROUND FX ── */
.bg-fx{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(760px 440px at 84% 2%, rgba(207,255,4,.05), transparent 62%),
    radial-gradient(680px 520px at 6% 10%, rgba(255,102,0,.04), transparent 62%),
    linear-gradient(transparent 0 39px,rgba(255,255,255,.018) 39px 40px) 0 0/40px 40px,
    linear-gradient(90deg,transparent 0 39px,rgba(255,255,255,.018) 39px 40px) 0 0/40px 40px;
}
.scanlines{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.4;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.16) 2px 3px)}

/* ── TICKER ── */
.ticker{position:relative;z-index:5;border-bottom:1px solid var(--line);
  background:var(--black);overflow:hidden;height:32px;display:flex;align-items:center}
.ticker-track{display:inline-flex;gap:34px;white-space:nowrap;padding-left:100%;
  animation:ticker 34s linear infinite;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--sub);text-transform:uppercase}
.ticker-track span b{color:var(--ink);margin-left:6px}
.ticker-track span b.up{color:var(--up)}
@keyframes ticker{to{transform:translateX(-100%)}}

/* ── NAV ── */
nav{position:sticky;top:0;z-index:20;backdrop-filter:blur(12px);
  background:rgba(17,17,17,.86);border-bottom:1px solid var(--line)}
.navinner{max-width:1180px;margin:0 auto;padding:12px 22px;display:flex;align-items:center;gap:18px}
.brand{font-family:var(--mono);font-weight:700;font-size:14px;letter-spacing:.06em;display:flex;align-items:center;gap:9px;text-transform:uppercase}
.brand small{color:var(--sub);font-weight:500;text-transform:none}
.brand .dot{width:8px;height:8px;border-radius:0;background:var(--acc);box-shadow:0 0 12px var(--acc);animation:pulse 1.8s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.navlinks{margin-left:auto;display:flex;gap:15px;font-size:13px;color:var(--sub);font-weight:500;text-transform:uppercase;letter-spacing:.05em}
.navlinks a:hover{color:var(--acc)}

/* ── BUTTONS ── */
.btn{border:1px solid var(--line2);background:var(--panel2);color:var(--ink);
  padding:11px 18px;border-radius:0;font-weight:700;font-size:13px;cursor:pointer;
  font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;transition:.14s;display:inline-flex;align-items:center;gap:8px}
.btn:hover{transform:translateY(-1px)}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none;pointer-events:none}
.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}
.btn.primary{background:var(--acc);color:var(--acc-fg);border-color:var(--acc);box-shadow:0 0 0 rgba(207,255,4,.5)}
.btn.primary:hover{box-shadow:0 6px 26px rgba(207,255,4,.30)}
.btn.cyan{background:transparent;border-color:var(--gray);color:var(--sub)}
.btn.cyan:hover{background:rgba(255,255,255,.03);border-color:var(--ink);color:var(--ink)}
/* The free lane is the whole point of the event, so it must not read as a dim
   secondary link beside the paid button. Accent text and border at REST, not
   only on hover — but hollow, so the solid paid button stays distinguishable. */
.btn.free{background:rgba(207,255,4,.07);border-color:var(--acc);color:var(--acc)}
.btn.free:hover{background:rgba(207,255,4,.14);box-shadow:0 6px 26px rgba(207,255,4,.22)}

/* ── LAYOUT ── */
.wrap{max-width:1180px;margin:0 auto;padding:0 22px;position:relative;z-index:5}
section{padding:74px 0 8px}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--acc);text-transform:uppercase;margin-bottom:10px}
h2{font-size:32px;letter-spacing:-.01em;margin-bottom:8px;text-transform:uppercase;font-weight:800}
.sec-sub{color:var(--sub);max-width:560px;font-size:14px;line-height:1.65;margin-bottom:30px}

/* ── HERO ── */
.hero{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center;
  padding:60px 0 24px}
.tag{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:12px;
  letter-spacing:.08em;color:var(--sub);border:1px solid var(--line2);padding:7px 13px;border-radius:0;
  background:var(--panel2);margin-bottom:20px;text-transform:uppercase}
.tag .live{width:8px;height:8px;border-radius:0;background:var(--up);box-shadow:0 0 10px var(--up);animation:pulse 1.4s infinite}
h1{font-size:52px;line-height:1.02;letter-spacing:-.02em;font-weight:800;text-transform:uppercase}
h1 .g{color:var(--acc);text-shadow:0 0 40px rgba(207,255,4,.30)}
.lead{color:var(--sub);font-size:15px;line-height:1.7;margin:20px 0 26px;max-width:520px}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap}
.meta{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:34px;max-width:520px}
.meta>div{display:flex;flex-direction:column;gap:4px;border-left:2px solid var(--acc);padding-left:11px}
.meta .k{font-family:var(--mono);font-size:11px;letter-spacing:.09em;color:var(--dim);text-transform:uppercase}
.meta .v{font-family:var(--mono);font-weight:700;font-size:16px}
.meta .v.up{color:var(--up)}

/* ── ROBOT MINT CARD ── */
.card{background:var(--panel);
  border:1px solid var(--line2);border-radius:0;padding:16px;
  box-shadow:0 40px 90px -40px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.02);position:relative}
.card-head{display:flex;justify-content:space-between;align-items:center;padding:4px 6px 12px;border-bottom:1px solid var(--line);margin-bottom:12px}
.mono{font-family:var(--mono)} .dim{color:var(--dim)}
.badge{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  padding:5px 10px;border-radius:0;border:1px solid var(--line2)}
.live-badge{color:var(--up);border-color:rgba(0,255,0,.4);background:rgba(0,255,0,.07)}
.soon-badge{color:var(--sub);border-color:var(--gray);background:rgba(255,255,255,.02)}

.box{position:relative;border-radius:0;overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0%,#1c1c1c,#0e0e0e 70%);
  border:1px solid var(--line2);aspect-ratio:4/5;display:flex;align-items:center;justify-content:center}
/* ── 3D ROBOT VIEWPORT ── */
.robot3d{position:absolute;inset:0;z-index:2;cursor:grab}
.robot3d:active{cursor:grabbing}
.robot3d canvas{display:block;width:100%!important;height:100%!important}
.seal{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:3;
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--acc);text-transform:uppercase;
  border:1px solid rgba(207,255,4,.35);background:rgba(0,0,0,.55);padding:6px 12px;border-radius:0}
.drag-hint{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);z-index:3;pointer-events:none;
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase;
  background:rgba(0,0,0,.5);padding:5px 11px;border:1px solid var(--line);border-radius:0;
  animation:hintfade 3s ease-in-out infinite}
@keyframes hintfade{0%,100%{opacity:.4}50%{opacity:.85}}
.r3d-loader{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 90% at 50% 40%,rgba(28,28,28,.6),rgba(12,12,12,.9));
  transition:opacity .4s;pointer-events:none}
.r3d-loader span{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--acc);
  text-transform:uppercase;animation:hintfade 1.4s ease-in-out infinite}

.progress{margin:16px 6px 0}
.progress .row{display:flex;justify-content:space-between;font-family:var(--mono);font-size:13px;margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em}
.progress .row b{color:var(--acc)}
.bar{height:8px;border-radius:0;background:#0a0a0a;border:1px solid var(--line2);overflow:hidden}
.bar i{display:block;height:100%;width:0;border-radius:0;
  background:var(--acc);box-shadow:0 0 14px rgba(207,255,4,.55);transition:width .8s}

.qty{display:flex;align-items:center;gap:12px;margin:16px 6px 0}
.qty button{width:42px;height:42px;border-radius:0;border:1px solid var(--line2);
  background:var(--panel2);color:var(--ink);font-size:20px;cursor:pointer;font-weight:700;transition:.14s}
.qty button:hover{border-color:var(--acc);color:var(--acc)}
.qty button:disabled{opacity:.35;cursor:not-allowed;border-color:var(--line);color:var(--dim)}
.qty button:disabled:hover{border-color:var(--line);color:var(--dim)}
.qty .n{font-family:var(--mono);font-size:22px;font-weight:700;min-width:40px;text-align:center}
.qty .max{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.09em;text-transform:uppercase}

.mint-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 6px 0}
.mint-btns .btn{justify-content:center}
.info{margin:12px 6px 0;font-family:var(--mono);font-size:13px;min-height:18px}
.info.ok{color:var(--up)} .info.err{color:var(--danger)}
.hint{margin:8px 6px 4px;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.05em;text-align:center;text-transform:uppercase}

/* ── DESKS ── */
.desks{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.desk{background:var(--panel);border:1px solid var(--line2);
  border-radius:0;padding:20px;transition:.16s;position:relative;overflow:hidden}
.desk:hover{transform:translateY(-3px);border-color:var(--gray)}
.desk.live{border-color:rgba(0,255,0,.35)}
.desk.live::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 0% 0%,rgba(0,255,0,.06),transparent 55%);pointer-events:none}
.desk.soon{opacity:.86}
.desk-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.desk-ico{font-size:24px}
.desk h3{font-size:16px;margin-bottom:6px;text-transform:uppercase;letter-spacing:.02em}
.desk p{color:var(--sub);font-size:13px;line-height:1.55}

/* ── STEPS ── */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.step{background:var(--panel);border:1px solid var(--line2);border-radius:0;padding:24px}
.step .no{font-family:var(--mono);font-size:13px;color:var(--acc);letter-spacing:.12em;margin-bottom:14px}
.step h3{font-size:17px;margin-bottom:8px;text-transform:uppercase;letter-spacing:.02em}
.step p{color:var(--sub);font-size:13.5px;line-height:1.6}

/* ── CLOCK ── */
.clock{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;max-width:560px}
.clock .u{background:var(--panel);border:1px solid var(--line2);border-radius:0;
  padding:22px 10px;text-align:center}
.clock .u b{font-family:var(--mono);font-size:40px;font-weight:800;display:block;color:var(--acc);
  text-shadow:0 0 26px rgba(207,255,4,.28)}
.clock .u span{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.13em;text-transform:uppercase}

/* ── SPECS ── */
.specs{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.spec{background:var(--panel);border:1px solid var(--line2);border-radius:0;padding:18px}
.spec .k{display:block;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.07em;text-transform:uppercase;margin-bottom:8px}
.spec .v{font-family:var(--mono);font-size:20px;font-weight:700}
.spec .v.up{color:var(--up)}

/* ── RARITY ── */
.rarity{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.rtier{background:var(--panel);border:1px solid var(--line2);border-radius:0;padding:18px;position:relative;overflow:hidden}
.rtier::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--tier,var(--sub))}
.rtier-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.rname{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tier,var(--ink))}
.rpct{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--tier,var(--ink))}
.rbar{height:6px;background:var(--panel3);border:1px solid var(--line);margin-bottom:12px;overflow:hidden}
.rbar i{display:block;height:100%;background:var(--tier,var(--sub))}
.rmeta{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;letter-spacing:.05em}
.rcount{color:var(--sub)} .rodds{color:var(--dim)}

/* ── FLEET FINANCE ── */
.fin{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.fincard{background:var(--panel);border:1px solid var(--line2);border-radius:0;padding:20px;position:relative;overflow:hidden;transition:.16s;display:flex;flex-direction:column}
.fincard:hover{transform:translateY(-3px);border-color:var(--gray)}
.fincard.live{border-color:rgba(0,255,0,.35)}
.fincard.live::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 0% 0%,rgba(0,255,0,.06),transparent 55%);pointer-events:none}
.fincard.soon{opacity:.9}
.fin-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.fin-ico{font-size:24px}
.fincard h3{font-size:16px;margin-bottom:6px;text-transform:uppercase;letter-spacing:.02em}
.fincard p{color:var(--sub);font-size:13px;line-height:1.55;flex:1}
.fin-stats{display:flex;gap:0;margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.fin-stats>div{flex:1;display:flex;flex-direction:column;gap:5px;padding-right:8px}
.fin-stats>div+div{border-left:1px solid var(--line);padding-left:12px}
.fk{font-family:var(--mono);font-size:9.5px;color:var(--dim);letter-spacing:.06em;text-transform:uppercase;line-height:1.2}
.fv{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--ink)}
.fv.up{color:var(--up)} .fv.danger{color:var(--danger)} .fv.acc{color:var(--acc)}
/* Exit pool / dividend interactive form */
.exit-form{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:10px}
.exit-form input{width:100%;box-sizing:border-box;background:var(--panel2);border:1px solid var(--line2);color:var(--ink);font-family:var(--mono);font-size:13px;padding:11px 12px;border-radius:0;outline:none;transition:.16s}
.exit-form input:focus{border-color:var(--acc)}
.exit-form input::placeholder{color:var(--dim)}
.exit-preview{font-family:var(--mono);font-size:12px;color:var(--sub);letter-spacing:.04em}
.exit-preview b{color:var(--ink);font-weight:700}
.exit-form .btn{justify-content:center}
.r-standard{--tier:#9e9e9e}
.r-rare{--tier:#7c8b96}
.r-elite{--tier:#cfff04}
.r-legendary{--tier:#ff6600}
.rarity-note{margin-top:16px;font-size:11px;letter-spacing:.06em}

/* ── FAQ ── */
.faq{display:flex;flex-direction:column;gap:10px;max-width:760px}
details{background:var(--panel);border:1px solid var(--line2);border-radius:0;padding:16px 18px}
summary{cursor:pointer;font-weight:700;font-size:14px;list-style:none;display:flex;justify-content:space-between;text-transform:uppercase;letter-spacing:.02em}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-family:var(--mono);color:var(--acc);font-size:20px}
details[open] summary::after{content:"−"}
details p{color:var(--sub);font-size:13.5px;line-height:1.6;margin-top:12px}

/* ── FOOTER ── */
footer{border-top:1px solid var(--line2);margin-top:80px;padding:34px 0;position:relative;z-index:5}
.footrow{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}
.footrow .brand{font-size:13px}
.addr{font-family:var(--mono);font-size:12px;color:var(--sub)}
.addr span{color:var(--acc)}
.disclaimer{color:var(--dim);font-size:11.5px;line-height:1.6;margin-top:16px;max-width:820px}

/* ── TOAST ── */
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);
  background:var(--panel3);border:1px solid var(--acc);color:var(--ink);padding:12px 18px;border-radius:0;
  font-family:var(--mono);font-size:13px;opacity:0;pointer-events:none;transition:.28s;z-index:40;
  box-shadow:0 20px 50px rgba(0,0,0,.6)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.btn.ghost{background:transparent;border-color:var(--line2);color:var(--sub)}


/* ── RESPONSIVE ── */
@media(max-width:900px){
  .hero{grid-template-columns:1fr;padding:36px 0 12px}
  h1{font-size:40px}
  .desks,.steps,.specs,.rarity,.fin{grid-template-columns:1fr 1fr}
  .navlinks{display:none}
}
@media(max-width:900px){
  /* on single-column layout the card is full-width; give the humanoid
     a taller portrait viewport so the whole body (legs included) fits */
  .box{aspect-ratio:3/4}
}
@media(max-width:560px){
  h1{font-size:30px} h2{font-size:24px}
  .desks,.steps,.specs,.clock,.meta,.rarity,.fin{grid-template-columns:1fr 1fr}
  .mint-btns{grid-template-columns:1fr}
  .box{aspect-ratio:5/7}
}

/* ============================================================
   UX ENHANCEMENTS — 2026-08-15 (non-breaking, additive)
   ============================================================ */

/* ── anchor offset: keep target below sticky nav + ticker ── */
section[id],[id]{scroll-margin-top:96px}

/* ── SCROLL PROGRESS BAR ── */
.scroll-progress{position:fixed;top:0;left:0;height:2px;width:0;z-index:60;
  background:linear-gradient(90deg,var(--acc),var(--orange));
  box-shadow:0 0 10px rgba(207,255,4,.6);transition:width .08s linear;pointer-events:none}

/* ── NAV ACTIVE LINK ── */
.navlinks a{position:relative;transition:color .14s}
.navlinks a.active{color:var(--acc)}
.navlinks a.active::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;
  background:var(--acc);box-shadow:0 0 8px rgba(207,255,4,.6)}

/* ── HAMBURGER (hidden on desktop) ── */
.navburger{display:none;width:42px;height:42px;flex-direction:column;justify-content:center;
  align-items:center;gap:5px;background:var(--panel2);border:1px solid var(--line2);
  cursor:pointer;padding:0;margin-left:6px}
.navburger span{display:block;width:20px;height:2px;background:var(--ink);transition:.22s}
.navburger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.navburger[aria-expanded="true"] span:nth-child(2){opacity:0}
.navburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ── MOBILE DRAWER ── */
.navdrawer{position:fixed;top:0;right:0;bottom:0;width:min(80vw,320px);z-index:70;
  background:var(--black);border-left:1px solid var(--line2);
  transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;padding:0 0 20px;overflow-y:auto;
  box-shadow:-30px 0 80px rgba(0,0,0,.7)}
.navdrawer.open{transform:translateX(0)}
.navdrawer-head{display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;border-bottom:1px solid var(--line);margin-bottom:8px}
.navdrawer-head .brand{font-size:13px}
.navdrawer-close{background:none;border:none;color:var(--sub);font-size:30px;line-height:1;
  cursor:pointer;padding:0 4px;transition:.14s}
.navdrawer-close:hover{color:var(--acc)}
.navdrawer a{padding:14px 22px;font-size:14px;color:var(--sub);text-transform:uppercase;
  letter-spacing:.05em;border-bottom:1px solid rgba(255,255,255,.03);transition:.14s}
.navdrawer a:hover,.navdrawer a:active{color:var(--acc);background:rgba(207,255,4,.05)}
.navdrawer-scrim{position:fixed;inset:0;z-index:65;background:rgba(0,0,0,.6);
  backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .28s}
.navdrawer-scrim.open{opacity:1;pointer-events:auto}
body.nav-locked{overflow:hidden}

/* ── BACK TO TOP ── */
.backtotop{position:fixed;right:20px;bottom:22px;z-index:45;width:46px;height:46px;
  display:flex;align-items:center;justify-content:center;background:var(--panel3);
  border:1px solid var(--line2);color:var(--acc);font-size:20px;cursor:pointer;
  opacity:0;transform:translateY(14px) scale(.9);pointer-events:none;transition:.24s;
  box-shadow:0 10px 30px rgba(0,0,0,.5)}
.backtotop.show{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
.backtotop:hover{border-color:var(--acc);box-shadow:0 0 20px rgba(207,255,4,.3);transform:translateY(-2px)}

/* ── SCROLL-REVEAL (sections/cards fade+rise on enter) ── */
.reveal{opacity:0;transform:translateY(22px);
  transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}

/* ── FOCUS-VISIBLE (keyboard a11y) ── */
a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible,textarea:focus-visible,.btn:focus-visible{
  outline:2px solid var(--acc);outline-offset:2px}

/* ── MOBILE: show burger, refine spacing ── */
@media(max-width:900px){
  .navburger{display:flex}
  #connectTop{display:none}
  .navinner{gap:10px;padding:11px 16px}
  .brand b{display:none}
}
@media(max-width:560px){
  .backtotop{right:14px;bottom:16px;width:42px;height:42px}
  .brand small{display:none}
  section{padding:52px 0 8px}
}

/* ── ACCESSIBILITY: honour reduced-motion ── */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  .ticker-track{animation:none;padding-left:0}
  .reveal{opacity:1!important;transform:none!important}
}

/* ── ARENA LIVE FEED ─────────────────────────────────────── */
h2 .g{color:var(--acc);text-shadow:0 0 34px rgba(207,255,4,.28)}
.arena-readout{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 22px}
.ar-stat{border:1px solid var(--border);background:var(--panel);padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.ar-stat .k{font-size:11px;letter-spacing:.12em;color:var(--dim);text-transform:uppercase}
.ar-stat .v{font-size:19px;font-weight:700;font-family:var(--mono);display:flex;align-items:center;gap:7px}
.ar-stat .v.up{color:var(--up)}
.ar-stat .live{width:8px;height:8px;background:var(--up);box-shadow:0 0 10px var(--up);animation:pulse 1.4s infinite;display:inline-block}
.arena-dot{width:6px;height:6px;background:var(--up);box-shadow:0 0 8px var(--up);animation:pulse 1s infinite;display:inline-block;border-radius:50%}
@keyframes sheen{to{transform:translateX(100%)}}

/* ── MINING ARENA · one robot per lane ─────────────────────── */
.mine-arena{display:flex;flex-direction:column;gap:9px}
.lane{border:1px solid var(--border);background:linear-gradient(180deg,var(--panel2),var(--panel));padding:11px 14px 12px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden;transition:order .5s,border-color .35s,box-shadow .35s,transform .35s}
.lane::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(207,255,4,.045),transparent);transform:translateX(-100%);animation:sheen 4s linear infinite;pointer-events:none}
.lane.mined{border-color:var(--acc);box-shadow:0 0 30px rgba(207,255,4,.4);transform:scale(1.008)}
.lane.mined .lane-fill{background:linear-gradient(90deg,var(--acc),#fff)}
.lane-head{display:flex;align-items:center;gap:9px}
.lane-place{font-size:11px;font-weight:800;font-family:var(--mono);color:var(--dim);min-width:26px}
.lane-id{font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--ink)}
.lane-rank{font-size:9px;font-weight:700;letter-spacing:.1em;padding:2px 7px;border:1px solid var(--border);color:var(--sub);text-transform:uppercase}
.lane-rank.r0{color:var(--dim)}
.lane-rank.r1{color:var(--cyan);border-color:rgba(124,139,150,.5)}
.lane-rank.r2{color:#7cc4ff;border-color:rgba(124,196,255,.5)}
.lane-rank.r3{color:var(--orange);border-color:rgba(255,102,0,.5)}
.lane-rank.r4{color:var(--acc);border-color:var(--acc);box-shadow:0 0 12px rgba(207,255,4,.3)}
.lane-crown{margin-left:auto;font-size:15px;filter:drop-shadow(0 0 8px rgba(207,255,4,.6));animation:pulse 1.6s infinite}
/* the mining track / tunnel */
.lane-track{position:relative;height:34px;background:repeating-linear-gradient(90deg,var(--panel3),var(--panel3) 22px,rgba(255,255,255,.02) 22px,rgba(255,255,255,.02) 24px);border:1px solid var(--line);overflow:hidden}
.lane-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,rgba(207,255,4,.28),rgba(207,255,4,.12));border-right:2px solid var(--acc);box-shadow:0 0 14px rgba(207,255,4,.4);transition:width .85s linear}
.lane-robot{position:absolute;top:50%;transform:translate(-50%,-50%);transition:left .85s linear;z-index:2;display:flex;align-items:center}
.bot{position:relative;display:inline-flex;align-items:center;font-size:20px;line-height:1;filter:drop-shadow(0 2px 3px rgba(0,0,0,.5))}
.bot-body{display:inline-block;animation:botbob .5s ease-in-out infinite}
.bot-pick{position:absolute;right:-9px;top:1px;width:12px;height:12px;background:conic-gradient(from 45deg,var(--acc),#9aa);clip-path:polygon(0 45%,80% 0,100% 20%,35% 60%,100% 100%,80% 100%);transform-origin:left center;animation:botpick .5s ease-in-out infinite}
.bot-spark{position:absolute;right:-13px;top:50%;width:5px;height:5px;background:var(--acc);border-radius:50%;box-shadow:0 0 10px var(--acc);opacity:0;animation:botspark .5s ease-in-out infinite}
@keyframes botbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes botpick{0%,100%{transform:rotate(-32deg)}50%{transform:rotate(14deg)}}
@keyframes botspark{0%,55%{opacity:0;transform:translateY(-50%) scale(.4)}70%{opacity:1;transform:translateY(-50%) scale(1.2)}100%{opacity:0;transform:translateY(-50%) scale(.4)}}
.lane-stats{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--dim);font-family:var(--mono);gap:10px}
.lane-verb{font-weight:700;letter-spacing:.06em;color:var(--up);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lane-nums{white-space:nowrap;color:var(--sub)}
.lane-nums .up{color:var(--up)}
.arena-foot{margin:16px 0 0;font-size:12px;color:var(--dim);letter-spacing:.04em}

/* ── MINE HIT · particle burst (fired by mine-fx.js) ───────── */
.fx-burst{position:absolute;top:50%;transform:translate(-50%,-50%);width:0;height:0;z-index:5;pointer-events:none}
.fx-burst i{position:absolute;left:0;top:0;width:4px;height:4px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc);opacity:0;animation:fxspark .62s ease-out forwards}
.fx-burst i:nth-child(3n){background:#fff;box-shadow:0 0 8px #fff}
.fx-burst i:nth-child(3n+1){background:var(--orange);box-shadow:0 0 8px var(--orange)}
@keyframes fxspark{0%{opacity:1;transform:translate(0,0) scale(1.3)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.2)}}
/* The same burst anchored anywhere on the page (window win), not just inside a
   mining lane. Position comes from getBoundingClientRect, so it must be fixed. */
.fx-burst.fx-fixed{position:fixed;z-index:60}
.lane.mined .lane-track{animation:laneshake .28s ease}
.lane.mined .bot-body{animation:botbob .5s ease-in-out infinite,botpop .3s ease}
@keyframes laneshake{0%,100%{transform:translateX(0)}25%{transform:translateX(-1.5px)}75%{transform:translateX(1.5px)}}
@keyframes botpop{0%{transform:scale(1)}45%{transform:scale(1.4)}100%{transform:scale(1)}}
.lane.mined::after{content:"BLOCK MINED";position:absolute;top:9px;right:12px;font-size:9px;font-weight:800;letter-spacing:.14em;font-family:var(--mono);color:var(--acc);text-shadow:0 0 12px rgba(207,255,4,.7);animation:minedtag .72s ease forwards;z-index:6}
@keyframes minedtag{0%{opacity:0;transform:translateY(4px)}20%{opacity:1;transform:translateY(0)}80%{opacity:1}100%{opacity:0;transform:translateY(-4px)}}

/* ── SOUND TOGGLE (fixed, bottom-right, above back-to-top) ── */
.sound-toggle{position:fixed;right:20px;bottom:78px;z-index:46;width:46px;height:46px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--panel);color:var(--sub);cursor:pointer;border-radius:0;transition:all .25s;font-size:17px}
.sound-toggle .st-ico{line-height:1}
.sound-toggle .st-off{position:absolute;left:9px;right:9px;top:50%;height:2px;background:currentColor;transform:rotate(-32deg);opacity:.9;transition:opacity .2s}
.sound-toggle:hover{border-color:var(--acc);color:var(--acc);box-shadow:0 0 20px rgba(207,255,4,.3)}
.sound-toggle.active{border-color:var(--acc);color:var(--acc);box-shadow:0 0 22px rgba(207,255,4,.45)}
.sound-toggle.active .st-off{opacity:0}
.sound-toggle.active::after{content:"";position:absolute;inset:-1px;border:1px solid var(--acc);animation:ringpulse 1.3s infinite;pointer-events:none}
@keyframes ringpulse{0%{opacity:.7;transform:scale(1)}100%{opacity:0;transform:scale(1.4)}}
@media(max-width:560px){.sound-toggle{right:14px;bottom:66px;width:42px;height:42px}}

/* ── MINING PLAYBOOK · read-the-skill guide ────────────────── */
.playbook{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:6px 0 20px}
.pb-card{display:flex;flex-direction:column;gap:10px;border:1px solid var(--border);background:linear-gradient(180deg,var(--panel2),var(--panel));padding:20px 18px;text-decoration:none;position:relative;overflow:hidden;transition:border-color .3s,transform .3s,box-shadow .3s}
.pb-card::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 0% 0%,rgba(207,255,4,.06),transparent 55%);opacity:0;transition:opacity .3s;pointer-events:none}
.pb-card:hover{border-color:var(--acc);transform:translateY(-3px);box-shadow:0 0 30px rgba(207,255,4,.2)}
.pb-card:hover::before{opacity:1}
.pb-no{font-family:var(--mono);font-size:13px;font-weight:800;letter-spacing:.1em;color:var(--acc);opacity:.8}
.pb-card h3{margin:0;font-size:16px;color:var(--ink);letter-spacing:.01em}
.pb-card p{margin:0;font-size:13px;line-height:1.55;color:var(--sub)}
.pb-cta{margin-top:auto;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.05em;color:var(--acc);transition:letter-spacing .25s}
.pb-card:hover .pb-cta{letter-spacing:.12em}
.playbook-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 4px}
.pbs-item{border:1px solid var(--border);background:var(--panel);padding:12px 14px;display:flex;flex-direction:column;gap:5px}
.pbs-k{font-size:10px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase}
.pbs-v{font-size:15px;font-weight:700;font-family:var(--mono);color:var(--ink)}
.pbs-v.up{color:var(--up)}
@media(max-width:900px){.playbook{grid-template-columns:1fr}.playbook-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.playbook-strip{grid-template-columns:1fr 1fr}}

/* ── PRICE LADDER ────────────────────────────────────────── */
.ladder{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}
.ladder-step{border:1px solid var(--border);background:var(--panel);padding:16px 14px;display:flex;flex-direction:column;gap:8px;position:relative;transition:border-color .3s,background .3s,transform .3s}
.ladder-step .ls-range{font-size:11px;letter-spacing:.08em;color:var(--dim);text-transform:uppercase}
.ladder-step .ls-price{font-size:20px;font-weight:700;font-family:var(--mono);color:var(--ink)}
.ladder-step .ls-price.up{color:var(--up)}
.ladder-step .ls-tag{font-size:10px;letter-spacing:.14em;color:var(--sub);text-transform:uppercase}
.ladder-step.is-done{opacity:.45}
.ladder-step.is-done .ls-price{color:var(--dim)}
.ladder-step.is-active{border-color:var(--acc);background:linear-gradient(180deg,rgba(207,255,4,.08),var(--panel));transform:translateY(-3px);box-shadow:0 0 28px rgba(207,255,4,.22)}
.ladder-step.is-active .ls-price{color:var(--acc);text-shadow:0 0 20px rgba(207,255,4,.4)}
.ladder-step.is-active .ls-tag{color:var(--acc)}
.ladder-step.is-active::after{content:"◄ YOU ARE HERE";position:absolute;top:8px;right:10px;font-size:9px;letter-spacing:.1em;color:var(--acc);font-weight:700}
.ladder-hint{font-size:13px;color:var(--sub);letter-spacing:.03em}
.ladder-hint b{color:var(--ink)}
.ladder-hint b.up{color:var(--up)}

@media(max-width:900px){
  .arena-readout{grid-template-columns:repeat(2,1fr)}
  .ladder{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:560px){
  .arena-readout{grid-template-columns:1fr 1fr}
  .ladder{grid-template-columns:1fr}
  .lane-rank{display:none}
  .lane-track{height:30px}
}

/* ── ONE-CLICK COPY BOXES (mining playbook) ── */
.copybox{border:1px solid var(--line);background:var(--panel);margin:14px 0}
.copybox-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--panel2)}
.cb-label{font-size:12px;letter-spacing:.04em;color:var(--sub);display:flex;align-items:center;gap:8px}
.cb-label .live{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);display:inline-block;animation:cbpulse 1.6s infinite}
@keyframes cbpulse{0%,100%{opacity:1}50%{opacity:.35}}
.cb-copy{cursor:pointer;border:1px solid var(--acc);background:transparent;color:var(--acc);font-family:var(--mono);font-size:12px;padding:6px 12px;letter-spacing:.03em;transition:.15s;white-space:nowrap}
.cb-copy:hover{background:var(--acc);color:var(--acc-fg)}
.cb-copy.copied{background:var(--green);border-color:var(--green);color:#000}
.copybox-code{margin:0;padding:14px;font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--ink);white-space:pre-wrap;word-break:break-word;overflow-x:auto}
.copybox-cta{display:flex;gap:12px;flex-wrap:wrap;margin:16px 0 4px}
@media(max-width:640px){.copybox-head{flex-direction:column;align-items:flex-start}.cb-copy{width:100%}}

/* ── SOLVE-TO-MINT ARENA TERMINAL (#solve) ── */
#solveCard{max-width:860px}
.sv-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0}
.sv-result,#svMintRow,.sv-winrow{display:none}
.sv-result.on{display:block}
#svMintRow.on{display:flex}
.sv-winrow.on{display:block}
/* Shown in place of the hand-solve terminal when CONFIG.manualSolve is false. */
.sv-agentonly{display:none}
.sv-agentonly.on{display:block}
.sv-agentonly p{margin:14px 0;font-size:14px;line-height:1.75;color:var(--sub)}

/* ── LIVE WINDOW BAR ──
   Rendered from /api/race with no wallet, in manual AND agent-only mode: the
   countdown is what makes the race legible to someone still deciding. Hidden
   until /api/race confirms a live race (svPaintRace) — on a host with no race
   there is no window, no score to beat and no clock, and a strip of em-dashes
   reads as a broken page rather than as "not running here". */
.sv-win{display:none;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line2)}
.sv-win.on{display:grid}
.sv-wcell{background:#0a0a0a;padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.sv-wk{font-size:10px;letter-spacing:.13em;color:var(--dim);text-transform:uppercase;line-height:1.3}
.sv-wv{font-size:21px;font-weight:700;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.sv-clock{font-size:30px;font-weight:800;color:var(--acc);letter-spacing:-.02em;line-height:1;
  font-variant-numeric:tabular-nums;text-shadow:0 0 24px rgba(207,255,4,.35)}
/* Under two minutes there is not enough time to round-trip a chatbot, so the
   clock stops looking like an invitation and starts looking like a deadline. */
.sv-win.closing .sv-clock{color:#ffb020;text-shadow:0 0 24px rgba(255,176,32,.40);
  animation:svblink 1.1s steps(2,end) infinite}
@keyframes svblink{50%{opacity:.45}}
.sv-wsub{font-size:10.5px;color:var(--dim);letter-spacing:.03em;line-height:1.35;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sv-rule{display:none;margin:0;padding:9px 13px;border:1px solid var(--line2);border-top:0;
  background:var(--panel2);font-size:10.5px;letter-spacing:.09em;color:var(--sub);text-transform:uppercase}
.sv-rule.on{display:block}

/* The one failure mode: the task rotates every window, so a plan written for the
   previous one cannot be entered. Loud, and never clears the answer box. */
.sv-stale{display:none;margin:16px 0 0;padding:12px 14px;border:1px solid #ffb020;
  background:rgba(255,176,32,.08);color:#ffb020;font-size:13px;line-height:1.65}
.sv-stale.on{display:block}
.sv-stale b{color:#ffd478}

/* ── THE THREE STEPS ── */
.sv-steps{display:none}
.sv-steps.on{display:block}
.sv-step{margin:0;padding:18px 0;border-bottom:1px solid var(--line)}
.sv-sh{display:flex;align-items:baseline;gap:10px}
.sv-sh h3{margin:0;font-size:16px;color:var(--ink);letter-spacing:.01em}
.sv-no{font-family:var(--mono);font-size:12px;font-weight:800;letter-spacing:.12em;color:var(--acc)}
.sv-sp{margin:8px 0 13px;font-size:13px;line-height:1.65;color:var(--sub)}
.sv-big{width:100%;padding:15px 18px;font-size:14px;letter-spacing:.06em}
.sv-mtitle{margin:14px 0 0;font-size:11.5px;letter-spacing:.13em;color:var(--acc);text-transform:uppercase}
/* The scene, drawn from the same coordinates the grader uses. The SVG carries its
   own aspect ratio, so height:auto keeps a 15-target field readable on a phone
   without a media query. */
.sv-map{margin:11px 0 0;border:1px solid var(--line2);background:#080808;line-height:0}
.sv-map svg{display:block;width:100%;height:auto}
.sv-map:empty{display:none}
/* The same scene in one sentence. Read this and you know the job; the map shows
   where, the JSON below is what the AI actually needs. */
.sv-glance{margin:11px 0 0;font-size:13px;line-height:1.7;color:var(--ink)}
.sv-glance:empty{display:none}
.sv-glance b{color:var(--acc);font-weight:700}
/* Collapsed by default — a phone should not open onto a wall of JSON. */
.sv-peek{margin:12px 0 0;padding:0;background:var(--panel2);border-color:var(--line)}
.sv-peek summary{padding:11px 13px;font-size:11px;font-weight:700;letter-spacing:.09em;color:var(--sub)}
.sv-peek[open] summary{border-bottom:1px solid var(--line)}
.sv-brief{margin:0;padding:13px;border:0;background:#0a0a0a;
  font-family:var(--mono);font-size:12px;line-height:1.65;color:var(--ink);
  white-space:pre-wrap;word-break:break-word;max-height:300px;overflow:auto}
#svAnswer{width:100%;box-sizing:border-box;padding:12px;border:1px solid var(--line2);
  border-radius:0;background:#0a0a0a;color:var(--ink);font-family:var(--mono);
  font-size:13px;line-height:1.6;resize:vertical}
#svAnswer:focus{outline:none;border-color:var(--acc)}
#svAnswer::placeholder{color:var(--dim)}
/* Address + wallet button. Paste-first: a phone visitor with no injected wallet
   must still be able to enter, and only needs the wallet itself to claim. */
.sv-addr{display:flex;gap:10px;flex-wrap:wrap}
#svAddr,#svShareIn{flex:1 1 260px;min-width:0;box-sizing:border-box;padding:13px 12px;
  border:1px solid var(--line2);border-radius:0;background:#0a0a0a;color:var(--ink);
  font-family:var(--mono);font-size:13px;letter-spacing:.02em}
#svAddr:focus,#svShareIn:focus{outline:none;border-color:var(--acc)}
#svAddr::placeholder,#svShareIn::placeholder{color:var(--dim)}
#svAddr.bad{border-color:var(--danger)}
#svAddr.ok{border-color:var(--acc)}
/* Sticky submit: the answer box is tall, and hunting for Submit after a long
   paste is the worst moment in this flow. */
.sv-bar{display:none;position:sticky;bottom:0;z-index:6;
  margin:0 -16px;padding:13px 16px;gap:12px;align-items:center;flex-wrap:wrap;
  background:rgba(20,20,20,.96);border-top:1px solid var(--line2)}
.sv-bar.on{display:flex}
.sv-bar .btn{flex:1 1 220px}
.sv-result{margin:14px 0;padding:14px;border:1px solid var(--line2);background:var(--panel2)}
.sv-result.pass{border-color:var(--acc)}
.sv-score{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.sv-score b{font-size:34px;line-height:1;color:var(--acc);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.sv-score .sv-of{font-size:12px;color:var(--dim);letter-spacing:.1em}
.sv-score .sv-tier{margin-left:auto;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  border:1px solid var(--line2);padding:5px 10px;color:var(--sub)}
.sv-fb{font-size:13px;line-height:1.65;color:var(--sub);white-space:pre-wrap}
/* Per-term breakdown. Prose feedback alone left an operator with a clean,
   complete run and a 72 no way to see WHICH term cost them; these are the four
   weighted terms of the score, so the next attempt has somewhere to aim. */
.sv-terms{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
/* The modifier is `fill`, NOT `bar`: line 140 already owns `.bar` as an 8px-tall
   progress track, and a chip that picks up height:8px + overflow:hidden crams 23px
   of text into a 10px box, which is what "the labels overlap" looked like.
   flex:0 0 auto and nowrap then keep the overflow:hidden below from zeroing each
   chip's automatic minimum size; the row wraps instead of the chips shrinking. */
.sv-terms .t{display:flex;align-items:baseline;gap:6px;padding:4px 9px;border:1px solid var(--line);
  background:#0a0a0a;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);
  flex:0 0 auto;white-space:nowrap}
.sv-terms .t b{flex:0 0 auto;font-size:12.5px;letter-spacing:0;color:var(--sub);
  font-variant-numeric:tabular-nums}
.sv-terms .t.lo{border-color:#5a2a2a}
.sv-terms .t.lo b{color:#ff6b6b}
.sv-terms .t.hi b{color:var(--acc)}
/* A term chip that carries its own fill: the number says what the term kept out
   of its weight, the fill says the same thing at a glance. `isolation` makes the
   chip its own stacking context so the z-index:-1 fill lands above the chip's
   background and *under* the text, instead of washing over it. */
.sv-terms .t.fill{position:relative;overflow:hidden;isolation:isolate}
.sv-terms .t.fill::before{content:"";position:absolute;z-index:-1;left:0;top:0;bottom:0;
  width:var(--f,0%);background:rgba(207,255,4,.14)}
.sv-terms .t.fill.lo::before{background:rgba(255,107,107,.14)}
/* Live standing after an entry: the whole point of an end-of-window race is that
   this line, not the submit button, is what tells you where you are. */
.sv-stand{margin:12px 0 0;padding:11px 13px;border:1px solid var(--line);background:#0a0a0a;
  font-size:12.5px;line-height:1.6;color:var(--sub)}
.sv-stand b{color:var(--ink)}
.sv-stand.lead{border-color:var(--acc)}
.sv-stand.lead b{color:var(--acc)}
/* Somewhere to aim. A score is a fact and a standing is a fact; neither one tells
   an operator what to change, and the answer always has the same shape — the term
   holding the most points is the term to fix. Shown whether they are ahead or
   behind, because a lead with 7 points left on the table is a lead someone takes. */
.sv-next{margin:9px 0 0;padding:10px 12px;border:1px solid var(--line);
  border-left:2px solid var(--acc);background:rgba(207,255,4,.05);
  font-size:12.5px;line-height:1.65;color:var(--sub)}
.sv-next b{color:var(--acc);font-variant-numeric:tabular-nums}
/* Retired once the window closed. The score stays, dimmed, because it is a fact
   about the plan; the standing and the nudge are removed because they were facts
   about a window that no longer exists. Dropping the whole card instead — which is
   what this used to do — left the playback caption below quoting a number that was
   nowhere on the page. */
.sv-result.closed{border-color:var(--line);opacity:.74}
.sv-result.closed .sv-score b{color:var(--sub)}
.sv-closed{margin:12px 0 0;padding:11px 13px;border:1px solid var(--line);
  border-left:2px solid var(--line2);background:#0a0a0a;
  font-size:12.5px;line-height:1.6;color:var(--dim)}
/* Browser-side dry run (sim.js). Same visual family as .sv-stand — it is the
   same kind of object, a factual read-out about a run — but it must never be
   mistaken for the graded result, so it never borrows .sv-score's big number. */
.sv-dry{display:none;margin:11px 0 0;padding:11px 13px;border:1px solid var(--line);
  background:#0a0a0a;font-size:12.5px;line-height:1.6;color:var(--sub)}
.sv-dry.on{display:block}
.sv-dry.bad{border-color:#5a2a2a}
.sv-dry.ok{border-color:var(--acc)}
.sv-dry b{color:var(--ink)}
.sv-dry .sv-vlist{margin:8px 0 0;padding:0;list-style:none}
.sv-dry .sv-vlist li{padding:3px 0 3px 13px;position:relative;font-size:12px}
.sv-dry .sv-vlist li::before{content:"›";position:absolute;left:0;color:var(--dim)}
.sv-dry .sv-vlist li.hard{color:#ff6b6b}
.sv-dry .sv-vlist li.soft{color:#ffb020}
.sv-dry .sv-caveat{display:block;margin-top:9px;font-size:11.5px;color:var(--dim)}
.sv-winrow{margin:14px 0 0}.sv-winrow .btn{box-shadow:0 0 34px rgba(207,255,4,.30)}
/* Fired once when a window is won. It rings the row that COMPLETES the win — the
   X post — because an unposted win never reaches the whitelist, and that is
   where winners are actually lost, not at the claim button. */
.sv-winrow.pop{animation:winpop 1.05s ease-out 2}
@keyframes winpop{0%,100%{box-shadow:none}45%{box-shadow:0 0 0 1px var(--acc),0 0 34px rgba(207,255,4,.22)}}
#svClaimNote{display:block;margin-top:9px;font-size:11.5px}

@media(max-width:640px){
  .sv-row .btn{width:100%}
  .sv-win{grid-template-columns:1fr 1fr}
  /* The window index is the least useful of the three on a narrow screen, so it
     takes the full second row rather than squeezing the clock. */
  .sv-wcell:first-child{grid-column:1 / -1}
  .sv-clock{font-size:38px}
  .sv-bar .btn{flex:1 1 100%}
  /* 16px is the threshold below which iOS Safari zooms the viewport on focus,
     which on this page means the sticky bar leaves the screen mid-paste. */
  #svAnswer,#svAddr{font-size:16px}
  .sv-score b{font-size:40px}
}
