/* MOZZIES / FIRST BLOOD (standalone page, same tokens as style.css). Pixel content moves in steps(), UI chrome eases. */
:root{--bg:#07070a;--ink:#ede7d7;--muted:#9b947f;--line:#353026;--gold:#f0b90b;--blood:#e0473a;--blood-d:#5a1c17;--green:#84c795;--bad:#ea715d;--px:'Silkscreen',monospace;--mono:'IBM Plex Mono',monospace;--gutter:clamp(20px,4.5vw,88px)}
*{box-sizing:border-box}
html,body{overflow-x:clip}
html{scroll-padding-top:80px}
body{margin:0;background:var(--bg);color:var(--ink);font:400 15px/1.65 var(--mono)}
::selection{background:var(--gold);color:var(--bg)}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
h1,h2,p,dl,dd,ol,figure{margin:0}
h1,h2,.wordmark{font-family:var(--px);font-weight:400;line-height:.94;letter-spacing:-.055em}
h2{font-size:clamp(2.2rem,4.6vw,4.6rem)}
h2 em{font-style:normal;color:var(--blood)}
b{font-weight:600}
code{font:13px var(--mono);color:var(--gold)}
.label{display:block;color:var(--muted);font:10px var(--px);letter-spacing:.04em}
.note{color:var(--muted);font-size:12px}
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
img{display:block;max-width:100%;height:auto}

/* bar */
.bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:24px;height:74px;padding:0 var(--gutter);border-bottom:1px solid var(--line);background:var(--bg)}
.wordmark{font-size:24px;letter-spacing:-.06em}.wordmark span{color:var(--gold)}
.back{color:var(--gold);font:11px var(--px);border-bottom:1px solid var(--gold);padding-bottom:4px;transition:color .25s ease,border-color .25s ease}
.back:hover{color:var(--ink);border-color:var(--ink)}

/* hero */
.hero{position:relative;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(24px,4vw,64px);align-items:center;padding:clamp(40px,6vw,96px) var(--gutter) clamp(32px,4vw,64px);overflow:hidden}
.hero-grid{position:absolute;inset:0;pointer-events:none;opacity:.16;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:linear-gradient(90deg,#000 0,#000 45%,transparent 100%);mask-image:linear-gradient(90deg,#000 0,#000 45%,transparent 100%)}
.hero-copy{position:relative;z-index:1}
.over{display:flex;align-items:center;gap:12px;color:var(--gold);font:12px var(--px);margin-bottom:22px}
.dot{width:9px;height:9px;background:var(--muted)}.dot.on{background:var(--green);box-shadow:0 0 0 4px #84c79520;animation:blink 1.2s steps(2) infinite}.dot.wait{background:var(--gold)}.dot.off{background:var(--bad)}
@keyframes blink{50%{opacity:.25}}
h1{font-size:clamp(4rem,10.5vw,10rem)}
h1 .ln{display:block;overflow:hidden;padding-bottom:.04em}
h1 i{font-style:normal;color:var(--blood)}
.lede{max-width:34ch;margin-top:24px;color:var(--muted);font-size:clamp(15px,1.3vw,18px)}
.lede b{color:var(--ink)}
.cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 20px;border:1px solid var(--gold);background:transparent;color:var(--gold);font:12px var(--px);letter-spacing:.02em;cursor:pointer;transition:background .25s ease,color .25s ease,border-color .25s ease,translate .25s ease}
.btn:hover{translate:0 -2px}
.btn.solid{background:var(--gold);color:var(--bg)}
.btn.solid:hover{background:var(--ink);border-color:var(--ink)}
.btn:not(.solid):hover{background:#f0b90b18}
.btn.done,.copy.done{background:var(--green);border-color:var(--green);color:var(--bg)}
.specimen{position:relative;justify-self:end;width:min(100%,560px)}
.specimen:before{content:'';position:absolute;inset:6% 4% 18% 8%;background:radial-gradient(closest-side,#e0473a40,transparent);animation:pulse 4s steps(4) infinite;pointer-events:none}
@keyframes pulse{50%{opacity:.45}}
.specimen img{position:relative;width:100%;image-rendering:pixelated;border:1px solid #2a1517}
.specimen figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:10px;color:var(--muted);font:10px var(--px)}

/* signal strip */
.signal{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.35fr);background:#120c0c;border-top:1px solid var(--blood-d);border-bottom:1px solid var(--blood-d);padding:0 var(--gutter)}
.signal .cell{min-width:0;padding:22px 28px;border-left:1px solid #2b1a19}
.signal .cell:first-child{border-left:0;padding-left:0}
.signal .cell:last-child{padding-right:0}
.num{display:flex;align-items:baseline;gap:10px;margin-top:6px}
.num strong{font:400 clamp(2.4rem,4vw,3.6rem)/1 var(--px);letter-spacing:-.07em;color:var(--gold)}
.num span{color:var(--muted);font:12px var(--px)}
.bar-track{height:8px;border:1px solid #6b2a22;margin-top:12px;background:#07070a;max-width:360px}
.bar-track i{display:block;width:0;height:100%;background:repeating-linear-gradient(90deg,var(--blood) 0 8px,#7a2019 8px 10px);transition:width .6s steps(18)}
.clock{display:block;margin:8px 0 6px;font:400 clamp(1.5rem,2.6vw,2.4rem)/1 var(--px);letter-spacing:-.04em;color:var(--ink);white-space:nowrap}
.clock.open{color:var(--green)}.clock.full{color:var(--muted)}
.signal small{display:block;color:var(--muted);font-size:12px}
.waves{list-style:none;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:10px}
.waves li{border:1px solid #2b1a19;padding:8px 8px 7px;min-width:0;background:#0b0809}
.waves li b{display:block;font:10px var(--px);color:var(--muted)}
.waves li span{display:block;font-size:11px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.waves li small{display:block;font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.waves li.next{border-color:var(--gold)}.waves li.next b{color:var(--gold)}
.waves li.now{border-color:var(--green)}.waves li.now b{color:var(--green)}
.waves li em.pz{display:block;margin-top:4px;font:9px/1.3 var(--px);font-style:normal;color:var(--gold)}
.waves li em.sealed{color:#857c68}.waves li em.sealed:before{content:'■ ';color:var(--blood)}
.waves li.done{border-color:#1e1414;background:transparent}.waves li.done b,.waves li.done span,.waves li.done small{color:#857c68}

/* sections */
.demo,.send,.rules,.board{padding:clamp(56px,6.5vw,104px) var(--gutter);border-bottom:1px solid var(--line)}
.kicker{color:var(--blood);font:11px var(--px);margin-bottom:16px}

/* demo */
.demo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:center;background:radial-gradient(50% 60% at 78% 50%,#1d0b0b 0,transparent 70%)}
.demo .sub{max-width:46ch;margin-top:20px;color:var(--muted)}
.log{list-style:none;padding:0;margin-top:26px;max-width:520px;border-top:1px solid var(--line)}
.log li{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line);color:#857c68;font-size:12px;transition:color .3s ease}
.log li b{font:10px var(--px)}
.log li .ms{font:11px var(--px);text-align:right}
.log li.on{color:var(--ink)}.log li.on b{color:var(--gold)}
.log li.on .ms:after{content:'▌';animation:blink .6s steps(2) infinite;color:var(--gold)}
.log li.ok{color:var(--muted)}.log li.ok b{color:var(--blood)}.log li.ok .ms{color:var(--green)}
.demo-stage{width:min(100%,520px);justify-self:end}
.screen{position:relative;border:1px solid #3a1d1a;background:#0b0809;padding:10px}
.screen canvas{display:block;width:100%;aspect-ratio:1;image-rendering:pixelated}
.hud{position:absolute;left:10px;right:10px;top:10px;display:flex;justify-content:space-between;gap:8px;padding:8px 10px;background:linear-gradient(#07070ae6,#07070a00);font:10px var(--px);color:var(--ink);pointer-events:none}
.hud span:last-child{color:var(--gold);text-align:right}
.bite{position:absolute;right:20px;bottom:20px;display:flex;gap:8px;align-items:center;padding:6px 9px;border:1px solid var(--blood);background:#07070ad9;font:10px var(--px);color:var(--blood);opacity:0;transition:opacity .2s steps(2)}
.bite b{font:11px var(--mono);color:var(--ink);font-weight:500;min-width:7.5ch}
.bite.on{opacity:1}.bite.ok{border-color:var(--green);color:var(--green)}
.timeline{margin-top:16px}
.tl-track{position:relative;display:flex;height:14px;border:1px solid #3a1d1a;background:#0b0809;overflow:hidden}
.tl-track .seg{height:100%;background:var(--blood);border-right:2px solid #0b0809;animation:grow .3s steps(4) both}
.tl-track .seg:nth-child(even){background:#a0332b}
@keyframes grow{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.tl-limit{position:absolute;top:0;bottom:0;width:1px;background:#3a1d1a}
.tl-scale{display:flex;justify-content:space-between;margin-top:6px;color:var(--muted);font:9px var(--px)}
.tl-out{margin-top:10px;font:11px var(--px);color:var(--green);min-height:1.5em}

/* send */
.steps{list-style:none;padding:0;margin-top:36px;display:grid;gap:0;max-width:980px}
.steps li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;padding:20px 0;border-top:1px solid var(--line)}
.steps li>b{color:var(--gold);font:12px var(--px);padding-top:3px}
.steps p{color:var(--muted)}.steps p b{color:var(--ink)}
.copyline{display:flex;align-items:stretch;margin-top:12px;border:1px solid var(--gold);background:#0d0b07}
.copyline code{flex:1;min-width:0;padding:12px 14px;font-size:13px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.copy:not(.btn),.check button{flex:none;border:0;border-left:1px solid var(--gold);background:var(--gold);color:var(--bg);font:11px var(--px);padding:0 16px;cursor:pointer;transition:background .25s ease,color .25s ease}
.copy:not(.btn):hover,.check button:hover{background:var(--ink)}

/* rules */
.rules dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(24px,4vw,64px);margin-top:32px;max-width:1100px}
.rules dl div{padding:18px 0;border-top:1px solid var(--line)}
.rules dt{color:var(--gold);font:11px var(--px);margin-bottom:6px}
.rules dd{color:var(--muted);font-size:14px}
.nights{margin-top:24px;color:var(--muted);font:10px var(--px);letter-spacing:.04em}

/* board */
.board-head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap}
.check{width:min(100%,430px)}
.check-row{display:flex;margin-top:8px;border:1px solid var(--line)}
.check input{flex:1;min-width:0;background:#0e0e12;color:var(--ink);border:0;padding:11px 12px;font-size:13px}
.check input:focus{outline:1px solid var(--gold)}
.check button{border-left:1px solid var(--line)}
.check .note{margin-top:8px;min-height:1.4em}
.check .note.yes{color:var(--green)}
.slots{list-style:none;padding:0;margin-top:30px;display:grid;grid-template-columns:repeat(50,minmax(0,1fr));gap:3px}
.slots button{display:block;width:100%;aspect-ratio:1;border:1px solid #33201e;background:#0d0a0b;padding:0;cursor:pointer;transition:border-color .2s ease,background .2s ease}
.slots button:hover,.slots button:focus-visible{border-color:var(--gold);outline:none}
.slots button:focus-visible{box-shadow:0 0 0 2px var(--gold)}
.slots .taken button{background:var(--blood);border-color:var(--blood)}
.slots .taken button:hover,.slots .taken button:focus-visible{background:var(--ink);border-color:var(--ink)}
.slots .next button{border-color:var(--green);background:#84c79533;animation:nextblink 1s steps(2) infinite}
@keyframes nextblink{50%{border-color:#2b1a19}}
.slots .fresh button{animation:flash 1s steps(4)}
@keyframes flash{0%,50%{background:var(--ink);border-color:var(--ink)}}
.slot-foot{display:flex;justify-content:space-between;align-items:baseline;gap:8px 24px;flex-wrap:wrap;margin-top:14px}
.legend{display:flex;gap:16px;color:var(--muted);font:10px var(--px)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:10px;height:10px;border:1px solid #33201e;background:#0d0a0b}
.legend .k-taken{background:var(--blood);border-color:var(--blood)}.legend .k-next{border-color:var(--green);background:#84c79533}
.slot-out{order:-1;min-height:1.6em;color:var(--muted);font:11px var(--px)}
.slot-out b{color:var(--ink);font-weight:400}
.list{margin-top:26px;border-top:1px solid var(--line)}
.list summary{padding:14px 0;color:var(--gold);font:11px var(--px);cursor:pointer;list-style:none}
.list summary::-webkit-details-marker{display:none}
.list summary:before{content:'+ '}.list[open] summary:before{content:'− '}
.table{border-top:1px solid var(--blood)}
.tr{display:grid;grid-template-columns:70px minmax(0,1fr) 90px 60px;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}
.th{color:var(--muted);font:10px var(--px)}
.tr b{color:var(--gold);font:12px var(--px)}
.tr .ms{color:var(--ink);text-align:right}.th span:nth-child(3){text-align:right}
.tr .wv{color:var(--muted)}
#rows{max-height:480px;overflow-y:auto}
.empty{color:var(--muted);padding:22px 0}

.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px 28px;padding:26px var(--gutter);background:#12100d;color:var(--muted);font:10px var(--px)}
.foot b{color:var(--gold);font-weight:400}.foot a{color:var(--gold)}

/* entrance + scroll reveal (only with JS) */
.js .hero-copy .over,.js .hero-copy .lede,.js .hero-copy .cta,.js .specimen{animation:rise .6s steps(6) both}
.js .hero-copy .lede{animation-delay:.25s}.js .hero-copy .cta{animation-delay:.35s}.js .specimen{animation:appear .9s steps(9) .15s both}
.js h1 .ln{animation:rise .55s steps(6) both}.js h1 .ln+.ln{animation-delay:.12s}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes appear{from{opacity:0;filter:brightness(2.2)}to{opacity:1;filter:none}}
.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .5s steps(5),transform .5s steps(5)}
.js .reveal.in{opacity:1;transform:none}

@media (max-width:1200px){
  .signal{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .signal .waves-cell{grid-column:1/-1;border-left:0;border-top:1px solid #2b1a19;padding-left:0}
}
@media (max-width:900px){
  .hero{grid-template-columns:1fr}
  .specimen{justify-self:start;width:min(100%,460px)}
  .demo{grid-template-columns:1fr}
  .demo-stage{justify-self:start}
  .rules dl{grid-template-columns:1fr}
  .slots{grid-template-columns:repeat(25,minmax(0,1fr))}
}
@media (max-width:560px){
  .bar{height:62px}.wordmark{font-size:20px}
  .signal{grid-template-columns:1fr}
  .signal .cell{border-left:0;padding:18px 0;border-top:1px solid #2b1a19}
  .signal .cell:first-child{border-top:0}
  .waves{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cta .btn{flex:1 1 100%}
  .steps li{grid-template-columns:36px minmax(0,1fr)}
  .copyline{flex-direction:column}.copy:not(.btn){border-left:0;border-top:1px solid var(--gold);padding:10px}
  .tr{grid-template-columns:52px minmax(0,1fr) 70px;gap:10px}.tr .wv,.th span:nth-child(4){display:none}
}
@media (max-width:480px){.slots{grid-template-columns:repeat(20,minmax(0,1fr));gap:2px}}
@media (prefers-reduced-motion:reduce){*,*:before{transition:none!important;animation:none!important}.js .reveal{opacity:1;transform:none}}
