:root{--black:#000;--ink:#050507;--bone:#e9e6dc;--grey:#7a7a74;--dim:#3a3a38;--blood:#c8101a;--teal:#5fbfa6;--teal-dark:#14302d;--phosphor:#9cffb0;--pixel:'STM Pixel','Silkscreen',monospace;--term:'STM Term','VT323',monospace;--host:'STM Host','Special Elite',serif;--gap:12px}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--black);color:var(--bone);font-family:var(--term);font-size:22px;line-height:1.15;min-height:100%;-webkit-font-smoothing:none}
body.crt{display:flex;justify-content:center;align-items:flex-start;min-height:100vh;overflow-x:clip}
#app{width:100%;max-width:1100px;padding:0;margin:0 auto}
a{color:var(--bone)}a:hover{color:var(--teal)}
button{font:inherit;color:inherit}
.hidden{display:none !important}
.frame{position:relative;margin:0 auto;width:100%;max-width:460px;min-height:100vh;border-left:3px solid var(--bone);border-right:3px solid var(--bone);display:flex;flex-direction:column;background:var(--black)}
.frame:before,.frame:after{content:'';position:absolute;left:-3px;right:-3px;height:3px;background:var(--bone)}.frame:before{top:0}.frame:after{bottom:0}
.browser-bar{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid var(--dim);font-size:15px;color:var(--grey);font-family:var(--term)}
.browser-bar .dots i{display:inline-block;width:9px;height:9px;border:1px solid var(--grey);margin-right:3px}
.browser-bar .url{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.stage{flex:1;position:relative;padding:14px 14px 20px}
.scanlines{pointer-events:none;position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.28) 2px 3px);mix-blend-mode:multiply;z-index:5}
.frame.still .scanlines{display:none}
.pixel,.title,.wordmark,.btn,.seat-name,.digits,h1,h2,h3{font-family:var(--pixel);letter-spacing:0;text-transform:uppercase}
.title{font-size:34px;line-height:1.05;margin:24px 0 10px;text-align:center}.wordmark{font-size:30px;line-height:1;text-align:center;margin:16px 0}.wordmark.small{font-size:20px}
.tagline{text-align:center;color:var(--grey);font-size:18px;margin:0 0 30px}
.plain{font-size:18px;line-height:1.3}.muted{color:var(--grey)}.red{color:var(--blood)}.green{color:var(--phosphor)}
.btn{display:inline-block;background:var(--bone);color:var(--black);border:0;padding:10px 16px;font-size:15px;cursor:pointer;min-height:44px;text-decoration:none}
.btn:hover,.btn:focus-visible{background:var(--teal);outline:2px solid var(--bone);outline-offset:2px}
.btn[disabled]{opacity:.35;cursor:not-allowed}
.btn.small{min-height:36px;padding:6px 12px;font-size:13px}.btn.tiny{min-height:28px;padding:2px 8px;font-size:11px;background:transparent;color:var(--grey);border:1px solid var(--dim)}
.btn.big{font-size:22px;padding:14px 26px}
.btn.stamp{background:#1d3a24;color:var(--phosphor);border:3px solid var(--phosphor);box-shadow:0 0 18px rgba(156,255,176,.35),inset 0 0 12px rgba(156,255,176,.2);text-shadow:0 0 6px var(--phosphor)}
.btn.stamp:hover,.btn.stamp:focus-visible{background:#2b5a35}
.btn.stamp.red{background:#3a0d10;color:#ff7b82;border-color:var(--blood);box-shadow:0 0 18px rgba(200,16,26,.4);text-shadow:0 0 6px var(--blood)}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:16px 0}
.field{font:inherit;font-size:22px;background:#111;color:var(--bone);border:0;border-bottom:2px solid var(--bone);padding:8px 10px;width:100%;min-height:44px}
.field:focus{outline:2px solid var(--teal);outline-offset:1px}
.field.code{text-transform:uppercase;letter-spacing:.3em;font-family:var(--pixel);font-size:18px}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{background:#111;border:1px solid var(--dim);color:var(--bone);padding:8px 12px;font:inherit;font-size:18px;cursor:pointer;min-height:40px}.chip.on,.chip:hover{border-color:var(--bone);background:#222}
.home-actions{display:flex;flex-direction:column;gap:16px;align-items:center;margin-bottom:24px}.join{display:flex;gap:8px;width:100%;max-width:300px}
/* email */
.mail{background:#141416;border:1px solid var(--dim);font-family:-apple-system,system-ui,sans-serif;font-size:14px;color:#ddd}
.mail-head{display:flex;gap:10px;padding:12px;border-bottom:1px solid #2a2a2c;align-items:flex-start}.mail-head .avatar{width:34px;height:34px;border-radius:50%;background:#333;display:grid;place-items:center;font-weight:700}.mail-head .subject{font-weight:600;letter-spacing:.06em}.mail-head .to{color:#999;font-size:12px}.mail-head .time{margin-left:auto;color:#999;font-size:12px}
.mail-body{padding:28px 18px;text-align:center;background:#1a1a1c}.mail-body .wordmark{font-size:38px;color:#e9e6dc}.mail-body .small{font-family:var(--term);color:#999;font-size:16px;letter-spacing:.08em}.games-begin{font-family:var(--pixel);font-size:16px;margin:18px 0}
.link.onion{background:none;border:0;color:#6fa0ff;text-decoration:underline;font-family:var(--term);font-size:14px;word-break:break-all;cursor:pointer;padding:8px;min-height:44px}
/* nda */
.nda-title{font-size:56px;text-align:right;margin:0 0 10px;letter-spacing:.1em;color:#fff;text-shadow:0 0 2px #fff}
.legal{font-family:var(--term);font-size:17px;line-height:1.25}
.clause{margin:0 0 12px}.clause.intro{color:#fff}
.rules{display:flex;gap:8px;margin:14px 0;border-left:3px solid var(--blood);padding-left:10px}.rules-label{writing-mode:vertical-rl;transform:rotate(180deg);color:var(--blood);font-family:var(--pixel);font-size:12px}.rules ul{margin:0;padding:0;list-style:none}.rules li{color:#fff}
.dob{margin:16px 0;padding:10px;border:1px dashed var(--grey)}.dob label{display:block;font-family:var(--pixel);font-size:12px;color:var(--grey);margin-bottom:6px}.dob input{font:inherit;font-size:20px;background:#111;color:var(--bone);border:0;border-bottom:2px solid var(--bone);padding:6px 8px;min-height:44px;width:100%;color-scheme:dark}
.article{font-size:13px;margin:16px 0 6px;color:var(--bone)}
.deg-1{color:#ff8a8f}.deg-2{color:var(--blood);letter-spacing:.02em}.deg-3{color:var(--blood);opacity:.85;letter-spacing:-.02em;text-shadow:0 0 1px var(--blood)}.deg-4{color:var(--blood);opacity:.7;transform:scaleY(.9);text-shadow:0 0 3px var(--blood);font-size:14px}.deg-5{color:var(--blood);opacity:.6;transform:scaleY(.75);text-shadow:0 0 5px var(--blood);font-size:12px;letter-spacing:-.06em}.deg-6{color:var(--blood);opacity:.5;transform:scaleY(.55);filter:blur(.6px);font-size:11px;letter-spacing:-.1em;background:linear-gradient(90deg,rgba(200,16,26,.35),transparent 70%)}
.signature{margin-top:22px;text-align:center}
.sig-block{display:inline-block;font-family:var(--term);font-size:20px;background:var(--bone);color:var(--black);padding:6px 20px;letter-spacing:.05em;clip-path:polygon(8% 0,92% 0,100% 30%,100% 100%,0 100%,0 30%)}
.sig-meta{font-family:var(--term);font-size:16px;margin:10px 0;color:var(--bone);background:var(--bone);color:var(--black);display:inline-block;padding:4px 16px}
.warn{color:var(--blood);font-family:var(--term);font-size:20px;margin:14px 0}
/* victim */
.error-line{font-family:var(--term);color:var(--bone);letter-spacing:.2em;font-size:14px;text-align:center;margin:10px 0}
.captcha{display:flex;align-items:center;justify-content:space-between;background:#1b1b1d;border:1px solid #3c3c3e;padding:12px;font-family:-apple-system,system-ui,sans-serif;font-size:15px;color:#eee;margin:24px auto;max-width:340px}.captcha label{display:flex;gap:10px;align-items:center;cursor:pointer}.captcha input{width:24px;height:24px}.captcha-logo{font-size:11px;color:#999;text-align:right;line-height:1.1}.captcha-logo small{display:block;font-size:9px}
.verify{background:#141416;border:1px solid #3c3c3e;max-width:340px;margin:0 auto;padding:10px;font-family:-apple-system,system-ui,sans-serif;font-size:13px;color:#ccc}.verify-head{font-weight:600;margin-bottom:8px}.verify-cam{position:relative;height:180px;background:#050505;border:1px solid #333;overflow:hidden}.verify-slide{display:block;margin-top:8px}.verify-slide input{width:100%;accent-color:#5fbfa6}.verify-result{font-family:var(--pixel);color:var(--phosphor);text-align:center;min-height:20px;margin-top:6px}
.running{font-family:var(--term);color:var(--grey);font-size:14px;line-height:1;margin:16px 0}
/* intake */
.intake .q{display:block;margin:0 0 18px}.intake .q>span{display:block;font-family:var(--pixel);font-size:13px;margin-bottom:6px;text-shadow:1px 0 var(--blood),-1px 0 var(--teal)}.btn.submit{width:100%;font-size:22px;background:var(--bone);color:#000;border:4px double #000;outline:3px solid var(--bone);margin-top:8px}
/* portrait */
.cam-window{border:2px solid var(--bone);background:#0b0b0d;margin:10px 0}.cam-bar{display:flex;justify-content:space-between;font-family:var(--term);font-size:14px;padding:3px 8px;border-bottom:1px solid var(--dim);color:var(--grey)}.cam-bar .live{color:var(--teal)}.cam-body{position:relative;min-height:200px;display:grid;place-items:center;overflow:hidden}.cam-body video{width:100%;max-height:320px;object-fit:cover;filter:grayscale(1) contrast(1.4);opacity:.25;position:absolute;inset:0}.cam-body canvas[data-fx="dither"]{width:160px;height:200px;image-rendering:pixelated;position:relative;z-index:1}
.cam-stamp{position:absolute;top:6px;left:8px;font-family:var(--term);font-size:12px;color:var(--grey);z-index:2}.cam-mask{width:100%;display:grid;place-items:center}
.mask-canvas{width:200px;height:225px;image-rendering:auto;filter:contrast(1.1);object-fit:cover;background:#000}
.portrait{display:inline-block;width:64px;height:80px;image-rendering:pixelated;object-fit:cover;background:#000}.portrait.big{width:160px;height:200px}.silhouette{display:inline-grid;place-items:center;background:radial-gradient(circle at 50% 35%,#333 0 18px,#000 19px);color:var(--bone);font-family:var(--pixel);font-size:18px;border:1px solid var(--dim)}
/* waiting */
.status-line{display:flex;justify-content:space-between;font-family:var(--term);font-size:16px;margin:6px 0}
.seats{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin:8px 0;padding:0 6px}
.seat{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;border:1px solid var(--dim);padding:4px 2px;min-height:96px;background:#060608}.seat .portrait{width:48px;height:60px}.seat-name{font-size:8px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat.me{border-color:var(--phosphor)}.seat.dead{opacity:.35}.seat.dead .portrait{filter:invert(1)}.seat-x{position:absolute;inset:auto 0 2px;font-family:var(--pixel);font-size:7px;color:var(--blood);text-align:center}.seat.dark{border-style:dashed}.seat.empty{justify-content:center;color:var(--dim)}.seat.ghost .seat-name{color:var(--teal)}
.countdown{text-align:center;margin:18px 0 8px}.countdown span{display:block;font-family:var(--pixel);color:#f2a33a;font-size:14px;letter-spacing:.2em;text-shadow:2px 0 var(--blood),-2px 0 #3a7bd5}.digits{font-size:64px;line-height:1;color:#fff;text-shadow:0 0 8px #fff}
.vote h2{font-size:14px;text-align:center;margin:10px 0}.vote-options{display:flex;flex-direction:column;gap:8px}.vote-opt{background:var(--bone);color:#000;display:flex;justify-content:space-between;gap:10px;text-align:left;font-size:13px;border:3px double #000}.vote-opt .count{color:var(--grey);font-family:var(--term);font-size:16px;order:2}
.invite-box{border:1px dashed var(--grey);padding:10px;margin:10px 0}.invite-box label{display:block;font-family:var(--pixel);font-size:11px;color:var(--grey)}.invite-box .plain{word-break:break-all;font-size:15px}
/* host pane + chat */
.host-pane{border-top:2px solid var(--bone);background:#000;padding:8px 10px 12px;display:flex;flex-direction:column;gap:8px}
.host-mask{display:grid;place-items:center;background:#000;border:1px solid var(--dim)}
.chat{display:flex;flex-direction:column;gap:6px}.chat-log{max-height:180px;overflow-y:auto;font-family:var(--term);font-size:17px;line-height:1.2;padding:4px;border:1px solid var(--dim)}.msg{margin:0 0 4px}.msg .who{color:var(--grey)}.msg.host .who{color:var(--blood);font-family:var(--term)}.msg.host .typed{font-family:var(--host);font-size:15px;color:#fff}
.chat-form{display:flex;gap:6px}.chat-form .field{font-size:17px;min-height:40px}
/* in-room layout on wide screens: game left, host right, like the film */
@media (min-width:900px){.frame.in-room{max-width:1060px;display:grid;grid-template-columns:1fr 360px;grid-template-rows:auto auto 1fr}.frame.in-room .browser-bar{grid-column:1/3}.frame.in-room .seats{grid-column:1/3;grid-template-columns:repeat(6,1fr)}.frame.in-room .seats .portrait{width:72px;height:90px}.frame.in-room .seat-name{font-size:10px}.frame.in-room .stage{grid-column:1}.frame.in-room .host-pane{grid-column:2;border-top:0;border-left:2px solid var(--bone)}.frame.in-room .chat-log{max-height:40vh}.mask-canvas{width:300px;height:338px}}
/* glitch */
.glitch{position:relative}.glitch:before,.glitch:after{content:attr(data-text);position:absolute;left:0;right:0;top:0;opacity:.7;pointer-events:none}.glitch:before{color:var(--blood);transform:translate(-2px,-1px);clip-path:inset(10% 0 60% 0)}.glitch:after{color:var(--teal);transform:translate(2px,1px);clip-path:inset(55% 0 15% 0)}
body.tear .frame{animation:tear .42s steps(6) 1}@keyframes tear{0%{transform:translate(0)}20%{transform:translate(-6px,2px) skewX(2deg)}40%{transform:translate(5px,-3px)}60%{transform:translate(-3px,1px) skewX(-3deg)}80%{transform:translate(2px,-1px)}100%{transform:translate(0)}}
body.tear .frame:after{background:var(--blood)}
.host-line{font-family:var(--host);font-size:22px;color:#fff;text-align:center;margin:60px 0 20px}
.connecting{text-align:center;padding-top:60px}
.aboutpage,.sharepage{max-width:640px;margin:0 auto;padding:30px 16px;font-size:19px;line-height:1.35}.aboutpage h1{font-size:18px;margin:26px 0 10px}.aboutpage ul{padding-left:20px}.aboutpage table{border-collapse:collapse;width:100%}.aboutpage td,.aboutpage th{border:1px solid var(--dim);padding:4px 8px;text-align:left;font-size:16px}
.sharepage{text-align:center}.sharecard{width:100%;max-width:360px;border:2px solid var(--bone)}
@media (prefers-reduced-motion:reduce){.glitch:before,.glitch:after{display:none}body.tear .frame{animation:none}}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
/* rounds */
.centered{text-align:center}
.round-head{display:flex;justify-content:space-between;font-family:var(--pixel);font-size:11px;color:var(--grey);margin-bottom:8px}
.round-card{position:absolute;inset:0;z-index:6;display:grid;place-items:center;background:#0e2a28 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E");animation:cardin .5s steps(4) 1}
.round-card .rc-inner{text-align:center}.rc-round{display:block;font-family:var(--pixel);font-size:16px;color:#dfe8e5;margin-bottom:18px}.rc-title{display:block;font-family:var(--pixel);font-size:40px;line-height:1.05;color:#6a1a22;text-shadow:0 0 1px #6a1a22;max-width:300px}
.round-card.grin{background:#000}.round-card.grin .rc-title{color:#8fd0ff;text-shadow:3px 0 var(--blood),-3px 0 #3a7bd5}.round-card.grin:before{content:'';position:absolute;inset:10% 15%;background:radial-gradient(ellipse at 50% 40%,rgba(200,16,26,.55),transparent 60%)}
@keyframes cardin{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}
.tbar{height:8px;background:#1a1a1a;border:1px solid var(--dim)}.tbar i{display:block;height:100%;width:100%;background:var(--bone)}.tbar i.low{background:var(--blood)}
.btn.tile{font-size:16px;padding:14px 18px;min-width:120px;background:#e9e6dc;color:#000;border:3px double #000;outline:2px solid #e9e6dc}.btn.tile.red{color:var(--blood)}.btn.tile.on{background:var(--blood);color:#fff;outline-color:var(--blood)}.btn.tile.blocked{opacity:.4}
/* round 1 */
.table{position:relative;aspect-ratio:1;max-width:360px;margin:0 auto;border:2px solid var(--bone);overflow:hidden;background:#163a36}.table canvas{position:absolute;inset:0;width:100%;height:100%}
.hand{position:absolute;width:0;height:0;--rot:0deg}.hand-glyph{position:absolute;left:-22px;top:-30px;width:44px;height:60px;transform:rotate(var(--rot));background:radial-gradient(ellipse at 50% 65%,rgba(210,232,226,.95) 0 38%,transparent 40%),linear-gradient(90deg,transparent 0 4px,rgba(210,232,226,.95) 4px 10px,transparent 10px 13px,rgba(210,232,226,.95) 13px 19px,transparent 19px 22px,rgba(210,232,226,.95) 22px 28px,transparent 28px 31px,rgba(210,232,226,.95) 31px 37px,transparent 37px) top/100% 55% no-repeat;filter:drop-shadow(0 0 2px rgba(0,0,0,.6));transition:filter .3s}
.hand.answered .hand-glyph{filter:drop-shadow(0 0 6px rgba(255,255,255,.6))}
.hand.burned .hand-glyph{background-color:transparent}.hand.burned:after{content:'';position:absolute;left:-14px;top:-14px;width:28px;height:28px;border-radius:50%;background:radial-gradient(circle,#000 0 55%,rgba(120,10,10,.9) 56% 70%,transparent 72%)}
.hand-name{position:absolute;left:-40px;top:32px;width:80px;text-align:center;font-family:var(--pixel);font-size:9px;color:#efe;text-shadow:0 0 2px #000}
.knife{position:absolute;inset:0;pointer-events:none}
.statement{position:absolute;left:10%;right:10%;top:38%;background:rgba(0,0,0,.82);border:2px solid var(--bone);padding:10px;font-family:var(--term);font-size:20px;text-align:center;color:#fff}
.result-box{position:absolute;left:12%;right:12%;top:30%;background:#000;border:3px double var(--bone);padding:10px;display:flex;justify-content:space-between;gap:12px;font-family:var(--term);font-size:20px}.result-box b{display:block;margin-bottom:4px}.result-box span{display:block}
.never-have .btn{flex:1}
/* round 2 */
.tv-wall{display:flex;gap:10px;align-items:flex-end;justify-content:center;margin:6px 0}.tv{width:150px;height:110px;border:6px solid #2a2a2a;border-radius:8px;background:#0a0a0a;display:grid;place-items:center;font-family:var(--pixel);font-size:16px;color:#c4553f;text-shadow:0 0 4px #c4553f;position:relative;overflow:hidden}.tv.small{width:110px;height:80px}.tv.static:before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.08) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 2px,transparent 2px 5px);animation:stat .3s steps(3) infinite}.tv span{position:relative;z-index:1;text-align:center;line-height:1.1}@keyframes stat{to{transform:translateY(-3px)}}
.dilemma{font-family:var(--term);font-size:21px;text-align:center;margin:8px 0;color:#fff}
.choice{display:flex;flex-direction:column;gap:10px;align-items:stretch}.choice.done{opacity:.5}.give{border:1px dashed var(--grey);padding:8px}.give>.pixel{display:block;font-size:11px;margin-bottom:6px}.pick{display:flex;flex-wrap:wrap;gap:6px}.or{text-align:center;font-family:var(--pixel);color:var(--grey);font-size:12px}
.ledger{margin:12px 0;border:1px solid var(--dim);padding:6px 10px;font-family:var(--term);font-size:19px}.ledger-row{display:flex;justify-content:space-between}.ledger-row.decided span:after{content:' .';color:var(--teal)}.ledger-row.house{color:var(--grey);border-top:1px solid var(--dim);margin-top:4px;padding-top:4px}
.gifts{list-style:none;padding:0;margin:8px 0;font-family:var(--term);font-size:16px;color:var(--grey)}
/* round 3 */
.circle-wrap{position:relative;aspect-ratio:1;max-width:360px;margin:0 auto;border:2px solid var(--bone);overflow:hidden;background:#000}.circle-wrap canvas{position:absolute;inset:0;width:100%;height:100%}
.initial{position:absolute;transform:translate(-50%,-50%);font-family:var(--pixel);font-size:18px;color:var(--bone);background:#000;padding:2px 4px}.initial.landed{color:var(--phosphor);text-shadow:0 0 8px var(--phosphor)}.initial.used{opacity:.5}
.whos-first{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--term);font-size:22px;color:#fff;background:rgba(0,0,0,.7);padding:4px 8px}
.bubble{position:absolute;left:8%;top:12%;max-width:70%;background:#4fb37e;color:#031;padding:10px 12px;font-family:var(--term);font-size:19px;line-height:1.15;border-radius:2px 14px 14px 14px}
/* round 4 */
.tag-ring{position:relative;aspect-ratio:1;max-width:360px;margin:0 auto;border:2px solid var(--bone);background:#000}.tag-ring canvas{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:200px;height:90px}
.ring-seat{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:2px;width:70px}.ring-seat .portrait{width:48px;height:60px}.ring-seat.it .portrait{outline:3px solid var(--blood);box-shadow:0 0 16px var(--blood)}.it-mark{font-family:var(--pixel);color:#fff;background:var(--blood);padding:1px 6px;font-size:10px}
/* rounds 5-6 */
.map-wrap{position:relative;aspect-ratio:360/260;max-width:360px;margin:0 auto;border:2px solid var(--bone);background:#000}.map-wrap canvas{position:absolute;inset:0;width:100%;height:100%}
.room{position:absolute;background:transparent;border:0;color:transparent;font:inherit;cursor:default;padding:0}.room span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--pixel);font-size:7px;color:var(--teal);white-space:nowrap;text-shadow:0 0 2px #000}.room.can{cursor:pointer;border:1px dashed rgba(156,255,176,.6)}.room.can:hover,.room.can:focus-visible{background:rgba(156,255,176,.15)}.room.mine{box-shadow:inset 0 0 0 2px #4aa3ff}.room.picked{background:rgba(200,16,26,.3);box-shadow:inset 0 0 0 2px var(--blood)}
.floor-tag{position:absolute;right:6px;bottom:4px;font-family:var(--pixel);font-size:22px;color:rgba(156,255,176,.5)}
.roster{position:absolute;right:6px;top:4px;font-family:var(--term);font-size:11px;line-height:1.1;color:var(--grey)}.roster div{display:flex;gap:4px}.roster b{font-weight:400}
/* elimination */
.elimination{text-align:center}.elim-card{display:inline-block;border:2px solid var(--bone);padding:12px;background:#000;margin:8px auto}.elim-card .portrait.big{width:200px;height:250px;filter:contrast(1.2)}
.elim-line{font-family:var(--pixel);font-size:14px;line-height:1.5;margin:10px 0 0;text-align:left;color:#fff}.elim-line .who{color:var(--blood)}
.pool{margin:14px auto 0;max-width:360px;border:3px double var(--bone);padding:8px 10px;background:#000;text-align:left;font-family:var(--term);font-size:22px}.pool-head{display:flex;justify-content:space-between;font-family:var(--pixel);font-size:10px;margin-bottom:6px}.transferring{color:var(--bone);animation:blink 1s steps(2) infinite}.pool-label{color:var(--grey)}.pool-row{display:flex;justify-content:space-between}.pool-row.dying b{color:#ff6b73}.pool-row.gone{opacity:.4}@keyframes blink{50%{opacity:.3}}
/* between */
.between{text-align:center;padding-top:40px;background:repeating-linear-gradient(0deg,#000 0 3px,#050505 3px 4px)}.hourglass{display:inline-grid;place-items:center;font-family:var(--pixel);font-size:8px;color:#f2a33a;margin-bottom:14px}.hourglass i{display:block;width:34px;height:44px;background:linear-gradient(#f2a33a,#e0473a 55%,#fff 56%);clip-path:polygon(0 0,100% 0,55% 50%,100% 100%,0 100%,45% 50%);margin:4px 0}.between-title{font-family:var(--pixel);font-size:30px;line-height:1.1;color:#f2a33a;text-shadow:2px 0 #e0473a,-2px 0 #ffd36a}.host-caption{position:absolute;left:10px;bottom:6px;font-family:-apple-system,system-ui,sans-serif;font-size:13px;color:#fff}
/* end */
.survivor-card{text-align:center;border:2px solid var(--bone);padding:14px;margin:8px 0}.survivor-card .digits{display:block;font-size:34px;margin-top:8px}
.scoreboard{font-family:var(--term);font-size:18px;border:1px solid var(--dim);margin:10px 0}.score-row{display:grid;grid-template-columns:1fr 1.3fr auto;gap:8px;padding:4px 8px;border-bottom:1px solid var(--dim)}.score-row.alive{color:var(--phosphor)}.score-row span:nth-child(2){color:var(--grey)}
.share-row{display:flex;gap:8px;justify-content:center;margin:12px 0}
/* status bar */
.statusbar{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;padding:4px 10px;border-bottom:1px solid var(--dim);font-family:var(--pixel);font-size:10px;color:var(--grey);background:#000}.statusbar b{color:var(--bone);font-weight:400}.sb-clock{text-align:center;font-family:var(--term);font-size:20px;color:#fff;letter-spacing:.08em;text-shadow:0 0 6px rgba(255,255,255,.5)}.sb-pot b{color:var(--phosphor)}
@media (min-width:900px){.frame.in-room .statusbar{grid-column:1/3}}
/* opening titles */
.titles{position:absolute;inset:0;z-index:7;display:grid;place-items:center;background:#000 repeating-linear-gradient(0deg,#000 0 3px,#050505 3px 4px)}.title-line{font-family:var(--term);font-size:30px;letter-spacing:.25em;color:#e9e6dc;text-align:center;padding:0 20px;text-shadow:0 0 8px rgba(233,230,220,.5);animation:titlein .6s steps(5) 1}@keyframes titlein{from{opacity:0;letter-spacing:.6em}to{opacity:1;letter-spacing:.25em}}
/* scare */
.scare{position:fixed;inset:0;z-index:99;background:#000;display:grid;place-items:center;overflow:hidden;animation:scarein .7s steps(7) 1}.scare canvas{width:min(100vw,120vh);height:auto;filter:contrast(1.4) brightness(1.3)}.scare:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.12) 0 1px,transparent 1px 3px);mix-blend-mode:screen;animation:stat .08s steps(2) infinite}@keyframes scarein{0%{transform:scale(1.3) translate(0)}30%{transform:scale(1.05) translate(-8px,4px)}60%{transform:scale(1.15) translate(6px,-5px)}100%{transform:scale(1)}}
/* hold buttons */
.hold-btn{width:100%;min-height:84px;font-size:22px;touch-action:none;user-select:none;-webkit-user-select:none;background:#111;color:var(--bone);border:3px solid var(--bone)}.hold-btn.on{background:var(--bone);color:#000}.hold-btn.scream.on{background:var(--blood);color:#fff;border-color:var(--blood);animation:shake .12s linear infinite}@keyframes shake{25%{transform:translate(2px,-1px)}75%{transform:translate(-2px,1px)}}
/* two truths */
.ttl-form label{display:block;font-family:var(--pixel);font-size:10px;color:var(--grey);margin:8px 0}.lie-pick{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:10px 0}.lie-pick label{font-family:var(--term);font-size:18px;color:var(--bone);display:inline-flex;gap:6px;align-items:center;min-height:44px}
.statements{display:flex;flex-direction:column;gap:8px;margin:10px 0}.statement-btn{text-align:left;font-family:var(--term);font-size:20px;text-transform:none;background:#111;color:var(--bone);border:2px solid var(--dim);padding:12px}.statement-btn.on{border-color:var(--teal)}.statement-btn.lie{background:#3a0d10;border-color:var(--blood);color:#fff}.statement-btn.truth{opacity:.6}
/* chairs */
.music-bar{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--dim);padding:8px 10px;margin:8px 0}.music-bar .pixel{font-size:11px}.eq{display:flex;gap:3px;align-items:flex-end;height:22px}.eq i{width:5px;background:var(--phosphor);height:40%;animation:eq .35s ease-in-out infinite alternate}.eq i:nth-child(2n){animation-delay:.1s}.eq i:nth-child(3n){animation-delay:.2s}.stopped .eq i{animation:none;height:3px;background:var(--blood)}@keyframes eq{to{height:100%}}
.chair-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px;margin:14px 0}.chair{min-height:110px;background:#0a0a0a;border:2px solid var(--bone);color:var(--bone);font:inherit;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;padding:8px;cursor:pointer}.chair i{display:block;width:44px;height:52px;border:4px solid var(--bone);border-top-width:18px;border-bottom:0;background:linear-gradient(transparent 60%,var(--bone) 60% 68%,transparent 68%)}.chair span{font-family:var(--pixel);font-size:9px;min-height:12px}.chair.taken{opacity:.55;border-style:dashed}.chair.mine{border-color:var(--phosphor);box-shadow:0 0 14px rgba(156,255,176,.4)}.chair[disabled]{cursor:not-allowed}.playing .chair{filter:grayscale(1) brightness(.6)}
/* red light */
.light-box{display:grid;place-items:center;height:70px;margin:6px 0;border:2px solid var(--bone)}.light-word{font-family:var(--pixel);font-size:26px}.light-green .light-box{background:#0d3b1e;color:var(--phosphor);box-shadow:inset 0 0 40px rgba(156,255,176,.4)}.light-red .light-box{background:#3a0608;color:#ff6b73;box-shadow:inset 0 0 40px rgba(200,16,26,.6);animation:blink .4s steps(2) infinite}
.lanes{position:relative;margin:10px 0;padding-right:14px}.lane{display:grid;grid-template-columns:70px 1fr;gap:8px;align-items:center;margin:6px 0}.lane-name{font-family:var(--pixel);font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track{position:relative;height:18px;background:repeating-linear-gradient(90deg,#111 0 10px,#0a0a0a 10px 20px);border:1px solid var(--dim)}.runner{position:absolute;top:2px;width:12px;height:12px;background:var(--bone);transition:left .25s linear}.lane.moving .runner{background:var(--phosphor);box-shadow:0 0 8px var(--phosphor)}.lane.safe .runner{background:var(--teal)}.finish-line{position:absolute;right:14px;top:0;bottom:0;width:3px;background:repeating-linear-gradient(0deg,#fff 0 4px,#000 4px 8px)}
/* simon */
.command{text-align:center;font-family:var(--pixel);font-size:22px;min-height:60px;display:grid;place-items:center;border:2px solid var(--dim);margin:6px 0}.command.says{border-color:var(--phosphor);color:var(--phosphor)}.command.nosays{border-color:var(--grey);color:var(--bone)}
.pads{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.pad{min-height:110px;border:3px solid #222;cursor:pointer;opacity:.85}.pad.red{background:#7a0a12}.pad.green{background:#0f5a2a}.pad.blue{background:#0f2d6a}.pad.white{background:#cfcfc6}.pad.on{outline:4px solid var(--bone);opacity:1}.pad[disabled]{opacity:.35;cursor:not-allowed}
/* truth or dare */
.knife-btn{width:100%;min-height:140px;background:#0a1a18 radial-gradient(circle,rgba(120,190,170,.35),transparent 70%);color:#fff;border:3px solid var(--teal);font-family:var(--pixel);font-size:26px;touch-action:manipulation}
/* thumb war */
.thumb-board{display:flex;justify-content:space-around;margin:10px 0}.thumb-row{text-align:center;font-family:var(--pixel);font-size:11px}.digits.small{display:block;font-size:40px}.thumb-btn{width:100%;min-height:220px;font-size:48px;background:var(--blood);color:#fff;border:6px double #fff;touch-action:manipulation;user-select:none}.thumb-btn:active{background:#8a0a12}
/* staring */
.eye-box{position:relative;display:grid;place-items:center;height:200px;border:2px solid var(--bone);margin:6px 0;background:#000}.eye{width:160px;height:80px;border:4px solid var(--phosphor);border-radius:50% / 50%;display:grid;place-items:center;box-shadow:0 0 20px rgba(156,255,176,.5);transition:height .2s}.eye i{width:46px;height:46px;border-radius:50%;background:var(--phosphor);box-shadow:inset 0 0 0 10px #000,0 0 18px var(--phosphor)}.eye.open{height:120px;border-color:#fff}.phase-blink .eye-box{background:#fff;animation:blink .15s steps(2) infinite}.phase-blink .eye-word{color:#000}.eye-word{position:absolute;bottom:8px;font-family:var(--pixel);font-size:16px;color:var(--bone)}.eye-btn{min-height:120px}.holders{display:flex;justify-content:space-around;font-family:var(--term);font-size:18px;color:var(--grey);margin:8px 0}.holders .on{color:var(--phosphor)}

.chat-tools{display:flex;gap:6px;justify-content:flex-end}.btn.tiny.danger{color:#ff6b73;border-color:var(--blood)}.reported{font-family:var(--term);font-size:14px;color:var(--grey)}.roomlink{color:var(--phosphor)}.msg.announce{border:1px dashed var(--phosphor);padding:4px}

/* play-test fixes */
html,body{overflow-x:clip}.frame{overflow:hidden;overflow:clip}
.pixel.centered,h1.pixel{font-size:clamp(14px,4.6vw,20px);overflow-wrap:anywhere}.wordmark{font-size:clamp(20px,7vw,30px)}
.round-card{position:fixed;inset:0;z-index:60}.rc-title{color:#e0262f;text-shadow:0 0 2px #000,0 0 10px rgba(224,38,47,.6);font-size:clamp(26px,9vw,40px)}
.titles{position:fixed;inset:0;z-index:61}
.round-one{font-family:var(--term);font-size:15px;color:var(--teal);text-align:center;margin:-4px 0 8px;letter-spacing:.08em}
.lie-pick{flex-direction:column;align-items:stretch;gap:4px}.lie-pick label{min-height:44px;border:1px solid var(--dim);padding:0 10px}.lie-pick input{width:22px;height:22px}
.chip.on{background:var(--bone);color:#000;border-color:var(--bone);font-weight:700}
.roster{position:static;display:flex;flex-wrap:wrap;gap:4px 14px;justify-content:center;font-size:14px;margin:6px 0;color:var(--grey)}.roster b{font-weight:400}
.elim-card{display:block;max-width:360px;margin:8px auto;text-align:left}.elim-line{white-space:normal;overflow-wrap:anywhere}.elim-card .portrait.big{display:block;margin:0 auto}
.card-preview{display:block;width:min(70%,220px);margin:8px auto;border:2px solid var(--bone)}
.btn.dim{opacity:.55}.dob input.needed{outline:3px solid var(--blood)}
.mask-canvas{transition:transform .25s ease-out,filter .25s}.mask-canvas.lunge{transform:scale(1.35) rotate(-3deg);filter:contrast(1.5) brightness(1.3) hue-rotate(-60deg)}
.whiteout{position:fixed;inset:0;background:#fff;z-index:98;animation:whiteout .6s steps(5) forwards;pointer-events:none}@keyframes whiteout{0%{opacity:1}100%{opacity:0}}
body.shake{animation:bodyshake .6s linear 1}@keyframes bodyshake{0%{transform:translate(0)}15%{transform:translate(-10px,4px)}30%{transform:translate(9px,-6px)}45%{transform:translate(-6px,3px)}60%{transform:translate(5px,-2px)}80%{transform:translate(-2px,1px)}100%{transform:translate(0)}}
.predict{border:1px dashed var(--teal);padding:8px;margin:10px 0}.predict .pixel{display:block;font-size:11px;margin-bottom:6px;color:var(--teal)}.predict .btn.on{background:var(--teal);color:#000}
@media (prefers-reduced-motion:reduce){.mask-canvas.lunge{transform:none;filter:none}body.shake{animation:none}}

.error-line{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:70;background:#000;border:1px solid var(--bone);padding:6px 12px;max-width:90vw;font-size:15px;letter-spacing:.04em}
.chair-n{font-family:var(--pixel);font-size:12px;color:var(--grey)}.pads.watch{display:grid;place-items:center;min-height:80px}
@media (min-width:900px){.frame:not(.in-room){max-width:560px}}

/* audit fixes */
.seats{grid-template-columns:repeat(6,minmax(0,1fr))}.seats .portrait{width:100%;max-width:48px;height:auto;aspect-ratio:4/5}
.error-line{top:48px}
.statusbar{align-items:center}.sb-me{white-space:nowrap}@media (max-width:360px){.statusbar{font-size:8px;gap:6px}.sb-clock{font-size:16px}}
.status-line{gap:8px;flex-wrap:wrap}
@media (max-width:899px){.btn.tiny,.btn.small,.chip{min-height:44px}.btn.tiny{padding:8px 10px}.plain a,.aboutpage a{display:inline-block;padding:12px 0}.captcha label{min-height:44px}.verify-slide input{height:44px}.chat-form .btn.small{min-height:44px}}
@media (min-width:900px){.frame.in-room{grid-template-rows:auto auto auto 1fr}.frame.in-room.is-waiting{grid-template-rows:auto 1fr}.frame.in-room.is-waiting .stage{grid-column:1;grid-row:2}.frame.in-room.is-waiting .host-pane{grid-column:2;grid-row:2}.frame.in-room.is-waiting .waiting .cam-window{display:none}}
@media (max-width:899px){.host-mask.desktop-only{display:none}}
.vote-opt.on{background:var(--teal);color:#000;border-color:var(--teal)}.vote-opt.on .count{color:#033}
.invite-box form{display:flex;flex-direction:column;align-items:center;gap:8px}.invite-box label{width:100%}

.release{text-align:center;margin:0 0 22px}.release .pixel{display:block;font-size:12px;color:var(--blood);letter-spacing:.2em}.release-digits{font-size:clamp(26px,8vw,44px);color:#fff}.release.small{margin:14px 0 6px}.release.small .release-digits{font-size:24px}
/* ---------- characters ---------- */
.chr{display:block;width:100%;height:100%}
.chr .lid,.presenter-svg .lid{transform:scaleY(0);transform-box:fill-box;transform-origin:50% 0;animation:blink 5.4s infinite}
@keyframes blink{0%,92%,100%{transform:scaleY(0)}95%{transform:scaleY(1)}}
.chr .fig{animation:breathe 4.2s ease-in-out infinite;transform-origin:50% 100%}
@keyframes breathe{50%{transform:translateY(.6px) scaleY(.995)}}
.chr .sweat{animation:sweat 2.6s linear infinite}.chr .sweat.s2{animation-delay:1.3s}
@keyframes sweat{0%{transform:translateY(0);opacity:0}15%{opacity:1}100%{transform:translateY(16px);opacity:0}}
.chr .tear{stroke-dasharray:3 22;animation:tear 1.9s linear infinite}.chr .tear.t2{animation-delay:.9s}
@keyframes tear{from{stroke-dashoffset:25}to{stroke-dashoffset:0}}
.chr .gl{animation:slice 2.7s steps(1) infinite}.chr .gl.g2{animation-duration:1.3s}
@keyframes slice{0%,70%,100%{transform:translateX(0);opacity:.0}72%{transform:translateX(-6px);opacity:.6}76%{transform:translateX(5px);opacity:.4}80%{opacity:0}}
.chr .glow{animation:glow 1.6s ease-in-out infinite}
@keyframes glow{50%{opacity:.55}}
.chr .static{animation:static .18s steps(2) infinite}
@keyframes static{50%{transform:translateX(-2px)}}
.avatar{position:relative;display:inline-block;overflow:hidden;background:#0b0d10;border:2px solid var(--accent,#e9e6dc);flex:none}
.avatar.av-xs{width:40px;height:50px;border-width:1px}.avatar.av-s{width:56px;height:70px}.avatar.av-m{width:96px;height:120px}.avatar.av-l{width:160px;height:200px}.avatar.av-xl{width:220px;height:275px}
.avatar.st-3 .chr{filter:drop-shadow(1.5px 0 0 rgba(255,40,40,.55)) drop-shadow(-1.5px 0 0 rgba(60,220,255,.35))}
.avatar.st-4 .chr{filter:drop-shadow(2px 0 0 rgba(255,40,40,.65)) drop-shadow(-2px 0 0 rgba(60,220,255,.4)) contrast(1.1)}
.avatar.st-4{animation:jitter .9s steps(3) infinite}
.avatar.st-5 .chr{filter:drop-shadow(3px 0 0 rgba(255,30,30,.8)) drop-shadow(-3px 0 0 rgba(60,220,255,.5)) contrast(1.25) saturate(1.3)}
.avatar.st-5{animation:jitter .35s steps(2) infinite,flicker 2.2s steps(1) infinite;border-color:#ff3b3b}
.avatar.st-dead .chr{filter:grayscale(1) contrast(1.15) brightness(.75)}
.avatar.st-dead{border-color:#3a3a38}
@keyframes jitter{33%{transform:translate(.6px,-.4px)}66%{transform:translate(-.6px,.3px)}}
@keyframes flicker{0%,88%,100%{opacity:1}90%{opacity:.4}94%{opacity:.9}96%{opacity:.25}}
.presenter-svg{display:block;width:100%;height:auto}
.presenter-svg .float{animation:float 5s ease-in-out infinite}
@keyframes float{50%{transform:translateY(-3px)}}
.presenter-svg .hair-front{animation:sway 6s ease-in-out infinite;transform-origin:60px 24px}
@keyframes sway{50%{transform:rotate(.8deg)}}
.presenter-svg .glow{animation:glow 1.8s ease-in-out infinite}
.presenter-svg .gl{animation:slice 3.1s steps(1) infinite}
@media (prefers-reduced-motion:reduce){.chr *,.presenter-svg *,.avatar{animation:none !important}}

/* ---------- labelled timers ---------- */
.tbar-wrap{margin:10px 0}.tbar-head{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--pixel);font-size:10px;color:var(--grey);margin-bottom:4px}.tbar-head .tsec{font-family:var(--term);font-size:26px;color:#fff;line-height:1}
/* ---------- shared tags ---------- */
.tag{display:inline-block;font-family:var(--pixel);font-size:9px;padding:3px 6px;border:1px solid var(--bone);color:var(--bone);margin-right:6px;vertical-align:middle}.tag.red{border-color:var(--blood);background:#3a0a0e;color:#ff8a90}.tag.green{border-color:var(--teal);background:#0c2a24;color:var(--phosphor)}.tag.gold{border-color:#d8b46a;background:#2a210c;color:#f2d38a}
.kicker{font-family:var(--pixel);font-size:11px;color:var(--grey);margin:0 0 4px;letter-spacing:.12em}
.game-title{font-family:var(--pixel);font-size:clamp(22px,7vw,34px);line-height:1.05;margin:0 0 14px;color:#fff;text-shadow:2px 0 var(--blood),-2px 0 #2a6f9e}
/* ---------- presenter ---------- */
.presenter{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:12px}.presenter-art{width:min(46vw,190px);filter:drop-shadow(0 0 18px rgba(95,191,166,.18))}.presenter.small .presenter-art{width:min(32vw,130px)}
.say{position:relative;background:#0e1513;border:1px solid var(--teal);padding:10px 12px;font-family:var(--host);font-size:17px;color:#fff;max-width:420px;margin:0}.say .who{display:block;font-family:var(--term);color:var(--blood);font-size:15px}
.say:before{content:'';position:absolute;top:-7px;left:50%;width:12px;height:12px;background:#0e1513;border-left:1px solid var(--teal);border-top:1px solid var(--teal);transform:translateX(-50%) rotate(45deg)}
/* ---------- briefing ---------- */
.brief-card{border:2px solid var(--bone);padding:16px;background:#060708}
.steps{list-style:none;counter-reset:step;padding:0;margin:0 0 14px}.steps li{counter-increment:step;position:relative;padding:8px 0 8px 46px;font-family:var(--term);font-size:21px;line-height:1.2;color:#fff;border-bottom:1px solid #1f1f1f}.steps li:before{content:counter(step);position:absolute;left:0;top:6px;width:32px;height:32px;display:grid;place-items:center;font-family:var(--pixel);font-size:15px;background:var(--bone);color:#000}
.stakes{display:grid;gap:8px;margin:10px 0}.stakes p{margin:0;padding:10px 12px;font-family:var(--term);font-size:19px;line-height:1.2}.stakes b{display:block;font-family:var(--pixel);font-size:10px;margin-bottom:4px}.stakes .die{background:#2a0709;border-left:4px solid var(--blood);color:#ffd6d8}.stakes .die b{color:#ff7b82}.stakes .live{background:#0a221d;border-left:4px solid var(--teal);color:#d8fff4}.stakes .live b{color:var(--phosphor)}
.controls{font-family:var(--term);font-size:17px;color:var(--grey);margin:6px 0}
.ready-count{font-family:var(--term);font-size:16px;color:var(--grey);text-align:center;margin:6px 0 0}.ready-note{font-family:var(--pixel);font-size:12px;color:var(--phosphor);text-align:center;margin:12px 0 0}
.brief .btn.stamp.big,.results .btn.stamp.big{display:block;width:100%;margin-top:12px}
@media (min-width:900px){.brief{display:grid;grid-template-columns:220px 1fr;gap:20px;align-items:start}.brief .presenter-art{width:200px}}
/* ---------- results ---------- */
.results .presenter{flex-direction:row;align-items:flex-end;justify-content:center}.results .say:before{display:none}
.res{display:flex;gap:12px;align-items:center;border:1px solid var(--dim);padding:12px;margin:8px 0;background:#070708}.res p{margin:4px 0;font-family:var(--term);font-size:19px;line-height:1.2;color:#fff}.res p.muted{color:var(--grey);font-size:16px}.res-name{display:block;font-family:var(--pixel);font-size:16px;margin-top:4px;color:#fff}.res.dead{border-color:var(--blood);background:#140405}.res.win{border-color:#d8b46a;background:#120f06}.res.safe{display:block}
.notes{list-style:none;padding:0;margin:6px 0;font-family:var(--term);font-size:17px;color:var(--grey)}
.alive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin:8px 0 14px}.alive-card{display:flex;flex-direction:column;align-items:center;gap:4px;border:1px solid var(--dim);padding:8px 4px;font-family:var(--term);font-size:16px;color:#fff;text-align:center}.alive-card b{font-weight:400;color:var(--phosphor)}.alive-card.me{border-color:var(--phosphor)}
.next{border:1px dashed var(--bone);padding:10px;text-align:center}.next b{display:block;font-family:var(--pixel);font-size:14px;color:#fff;margin-top:4px}
/* ---------- builder ---------- */
.builder{display:grid;gap:14px;justify-items:center;margin:10px 0}.builder-preview{display:flex;flex-direction:column;align-items:center;gap:6px}.builder-rows{width:100%;max-width:380px}
.brow{display:grid;grid-template-columns:96px 44px 1fr 44px;align-items:center;gap:6px;margin:6px 0}.blabel{font-family:var(--pixel);font-size:10px;color:var(--grey)}.bval{font-family:var(--term);font-size:19px;text-align:center;color:#fff;font-weight:400}
.btn.arrow{min-width:44px;min-height:44px;padding:0;font-size:24px;background:#111;color:var(--bone);border:1px solid var(--dim)}.btn.arrow:hover,.btn.arrow:focus-visible{background:#222;border-color:var(--bone)}
@media (min-width:700px){.builder{grid-template-columns:auto 1fr;align-items:center}}
/* ---------- two truths ---------- */
.ttl-form label{display:flex;align-items:center;gap:8px;margin:8px 0}.ttl-form .field{flex:1}.instruct{font-family:var(--term);font-size:20px;color:#fff;text-align:center;margin:6px 0}.instruct b{color:#ff8a90;font-weight:400}.verdict p{font-family:var(--term);font-size:19px;margin:4px 0}.verdict b{font-family:var(--pixel);font-size:10px;margin-right:8px;font-weight:400}.locked{border:1px solid var(--teal);padding:12px;text-align:center}
.statement-btn .tag{margin-right:8px}
/* ---------- end recap ---------- */
.recap{list-style:none;padding:0;margin:8px 0 14px}.recap li{display:grid;gap:2px;border-bottom:1px solid #1f1f1f;padding:8px 0;font-family:var(--term);font-size:17px;color:#fff}.recap li .avatar{vertical-align:middle;margin-right:6px}.recap-round{font-family:var(--pixel);font-size:9px;color:var(--grey)}.recap b{font-family:var(--pixel);font-size:12px;font-weight:400}.recap .muted{color:var(--grey);font-size:16px}
.presenter-mini{width:110px;margin:0 auto 6px}.survivor-card{display:flex;flex-direction:column;align-items:center}
/* seats now carry avatars */
.seat{min-height:auto;padding:4px 2px}.seat .avatar{margin:0 auto}.seat-name{margin-top:2px}.ring-seat .avatar{margin:0 auto}

/* countdown: three, two, one */
.countdown-screen{text-align:center;padding-top:8px}
.cd-round{font-family:var(--pixel);font-size:11px;color:var(--grey);margin:0 0 4px;letter-spacing:.08em}
.cd-title{font-family:var(--pixel);font-size:22px;margin:0 0 6px;color:var(--bone)}
.cd-digit{height:170px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.cd-digit span{font-family:var(--pixel);font-size:150px;line-height:1;color:var(--blood);text-shadow:0 0 22px rgba(200,16,26,.55);animation:cdslam .95s cubic-bezier(.2,1.6,.4,1) both}
.cd-digit span[data-n="1"]{color:#fff;text-shadow:0 0 30px rgba(255,40,50,.9)}
@keyframes cdslam{0%{transform:scale(2.6);opacity:0;filter:blur(6px)}22%{transform:scale(.92);opacity:1;filter:none}34%{transform:scale(1.04)}100%{transform:scale(1);opacity:.85}}
.cd-die{font-family:var(--term);font-size:20px;margin:6px auto 12px;max-width:360px;color:var(--bone)}.cd-die span{display:block;font-family:var(--pixel);font-size:10px;color:var(--blood);margin-bottom:2px}
.cd-faces{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.cd-face{display:flex;flex-direction:column;align-items:center;font-family:var(--pixel);font-size:9px;color:var(--grey);animation:cdface 1.6s ease-in-out infinite}.cd-face:nth-child(2n){animation-delay:.2s}.cd-face:nth-child(3n){animation-delay:.45s}.cd-face.is-me b{color:var(--bone)}
@keyframes cdface{50%{transform:translateY(-2px)}}

/* elimination, in four beats */
.elimination{position:relative;min-height:440px}
.elimination>div{display:none}
.elimination.beat-0 .elim-dark,.elimination.beat-1 .elim-scan,.elimination.beat-2 .elim-reveal,.elimination.beat-3 .elim-reveal{display:block}
.elim-dark{position:absolute;inset:-14px;background:#000;display:flex;align-items:center;justify-content:center}
.elimination.beat-0 .elim-dark{display:flex}
.elim-open{font-family:var(--pixel);font-size:20px;line-height:1.6;color:var(--blood);text-align:center;animation:leaving 1.2s steps(6) both}
@keyframes leaving{0%{opacity:0;letter-spacing:.6em}30%{opacity:1}60%{opacity:.4}70%{opacity:1}100%{opacity:1;letter-spacing:.08em}}
.elim-scan{padding-top:40px}
.scan-row{position:relative;display:grid;grid-template-columns:repeat(var(--n),1fr);gap:0;margin:0 auto;max-width:440px}
.scan-seat{display:flex;flex-direction:column;align-items:center;font-family:var(--pixel);font-size:8px;color:var(--grey);padding:4px 0}
.scan-seat .avatar.av-m{width:100%;max-width:64px;height:auto;aspect-ratio:4/5}
.scan-seat.target{animation:targetlock .4s 1.6s steps(2) 3 both}
@keyframes targetlock{50%{filter:brightness(1.8) saturate(0) contrast(1.4)}}
.scanner{position:absolute;top:0;bottom:0;width:calc(100% / var(--n));left:0;border:2px solid var(--blood);box-shadow:0 0 18px rgba(200,16,26,.7),inset 0 0 18px rgba(200,16,26,.35);background:linear-gradient(transparent 46%,rgba(200,16,26,.45) 50%,transparent 54%);animation:scansweep 1.9s cubic-bezier(.5,0,.3,1) forwards}
@keyframes scansweep{0%{left:0}28%{left:calc(100% - 100% / var(--n))}52%{left:0}76%{left:calc(100% - 100% / var(--n))}100%{left:calc(var(--i) * 100% / var(--n))}}
.scan-label{font-family:var(--pixel);font-size:11px;color:var(--blood);text-align:center;animation:blink .3s steps(2) infinite}
.elim-face{position:relative;display:flex;justify-content:center}
.elim-stamp{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%) rotate(-12deg);font-family:var(--pixel);font-size:26px;color:var(--blood);border:4px solid var(--blood);padding:4px 10px;background:rgba(0,0,0,.35);letter-spacing:.06em;pointer-events:none}
.beat-2 .elim-stamp{animation:stampslam .45s cubic-bezier(.3,1.7,.5,1) .15s both}
@keyframes stampslam{0%{transform:translate(-50%,-50%) rotate(-30deg) scale(3.4);opacity:0}60%{transform:translate(-50%,-50%) rotate(-10deg) scale(.9);opacity:1}100%{transform:translate(-50%,-50%) rotate(-12deg) scale(1);opacity:1}}
.beat-2 .elim-face .avatar{animation:crack .5s steps(4) both}
@keyframes crack{0%{filter:none;transform:none}25%{filter:invert(1);transform:translate(-6px,2px)}50%{filter:saturate(0) contrast(2);transform:translate(5px,-3px)}100%{filter:none;transform:none}}
.elim-name{font-family:var(--pixel);font-size:18px;text-align:center;margin:10px 0 2px;color:#fff}.elim-name .you{color:var(--blood)}
.elim-cause{font-family:var(--term);font-size:19px;text-align:center;color:var(--grey);margin:0 0 6px}
.beat-2 .pool{opacity:.25}
.beat-3 .elim-card{max-width:360px}.beat-3 .elim-face .avatar.av-xl{width:120px;height:150px;transition:none}
.pool-val{display:inline-flex;align-items:baseline;gap:8px;position:relative}
.gain{font-family:var(--pixel);font-size:11px;color:var(--phosphor);opacity:0}
.beat-3 .gain{animation:gainfly 1.6s var(--d,0ms) cubic-bezier(.2,.9,.3,1) both}
@keyframes gainfly{0%{opacity:0;transform:translate(-120px,-40px) scale(.6)}35%{opacity:1;transform:translate(0,0) scale(1.25)}100%{opacity:1;transform:none}}
.pool-row.is-me span:first-child{color:#fff}
.elimination.mine.beat-2 .elim-face .avatar{box-shadow:0 0 0 3px var(--blood)}
@media (prefers-reduced-motion:reduce){.cd-digit span,.cd-face,.elim-open,.scanner,.scan-seat.target,.elim-stamp,.gain,.elim-face .avatar{animation:none !important}.gain{opacity:1}.scanner{left:calc(var(--i) * 100% / var(--n))}}

/* most likely to */
.mlt-q{font-family:var(--host);font-size:24px;line-height:1.2;text-align:center;margin:6px 0 10px;color:#fff}
.mlt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin:10px 0}
.btn.mlt-face{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;background:#000;border:2px solid var(--dim);cursor:pointer;position:relative;font-family:var(--pixel);font-size:10px}
.btn.mlt-face:hover:not([disabled]),.btn.mlt-face:focus-visible{border-color:var(--bone);background:#111}
.btn.mlt-face.on{border-color:var(--blood);box-shadow:0 0 0 2px var(--blood),0 0 18px rgba(200,16,26,.5)}
.btn.mlt-face[disabled]:not(.on){opacity:.6}
.mlt-face .avatar.av-m{width:80px;height:100px}
.mlt-tick{position:absolute;top:4px;right:4px;font-style:normal;font-size:8px;color:var(--grey)}
.mlt-said{font-family:var(--host);font-size:20px;text-align:center;margin:6px 0}
.mlt-spot{display:flex;flex-direction:column;align-items:center;position:relative;padding:10px 0;background:radial-gradient(circle at 50% 40%,rgba(255,255,255,.14),transparent 60%);animation:spot .7s 1.1s steps(3) both}
@keyframes spot{0%{opacity:0;transform:scale(1.2)}100%{opacity:1;transform:none}}
.mlt-picked{font-family:var(--pixel);font-size:18px;margin:8px 0 0;color:#fff}
.mlt-tally{list-style:none;padding:0;margin:10px 0 0}
.mlt-row{display:grid;grid-template-columns:40px 1fr 2fr 24px;align-items:center;gap:8px;font-family:var(--pixel);font-size:10px;margin:4px 0}
.mlt-bar{height:10px;border:1px solid var(--dim)}.mlt-bar i{display:block;height:100%;width:var(--w);background:var(--bone);animation:tallyfill .6s var(--d) steps(6) both}
.mlt-row.picked .mlt-bar i{background:var(--blood)}.mlt-row.picked .mlt-name{color:#fff}
@keyframes tallyfill{0%{width:0}}
@media (prefers-reduced-motion:reduce){.mlt-spot,.mlt-bar i{animation:none}}

/* red light: the doll turns */
.rlgl .light-box{position:relative;height:150px;grid-template-columns:110px 1fr;grid-template-rows:1fr auto;place-items:center start;padding:0 12px;overflow:hidden}
.doll{grid-row:1 / span 2;width:100px;height:142px;align-self:end}.doll svg{width:100%;height:100%;display:block}
.light-red .doll{animation:dollturn .18s steps(2) both}.light-green .doll{animation:dollaway .5s ease-out both}
@keyframes dollturn{0%{transform:translate(-6px,6px) rotate(-6deg);filter:brightness(3) contrast(2)}60%{transform:translate(2px,-1px) rotate(1deg);filter:none}100%{transform:none}}
@keyframes dollaway{0%{opacity:.2;transform:translateY(3px)}100%{opacity:1;transform:none}}
.light-red .doll .glow{filter:drop-shadow(0 0 3px #ff2030)}.light-red .doll svg ellipse.glow{fill:#ff3340}
.doll-note{font-family:var(--pixel);font-size:9px;opacity:.75;align-self:start}
.light-red .light-box{animation:none}.light-red .light-word{animation:blink .4s steps(2) infinite}
.rlgl .track{height:34px;overflow:visible}
.rlgl .runner{top:-2px;width:28px;height:36px;background:none !important;box-shadow:none !important;transform:translateX(-50%)}
.rlgl .runner .avatar.av-xs{width:28px;height:36px}
.rlgl .lane.moving .runner .avatar{animation:run .25s steps(2) infinite;outline:2px solid var(--phosphor)}
.rlgl .lane.safe .runner .avatar{outline:2px solid var(--teal)}
.rlgl .lane.is-me .lane-name{color:#fff}
@keyframes run{50%{transform:translateY(-3px) rotate(4deg)}}

/* musical chairs: they walk while it plays */
.chair-stage{position:relative}
.orbit{position:relative;height:64px;margin:6px 0 0;overflow:hidden;border-bottom:1px dashed var(--dim)}
.walker{position:absolute;top:8px;left:0;animation:walk calc(4s + var(--n) * .4s) linear infinite;animation-delay:calc(var(--k) * -1s * (4 + var(--n) * .4) / var(--n))}
.walker .avatar.av-xs{width:36px;height:46px}
.orbit.on .walker .avatar{animation:bob .4s steps(2) infinite}
.orbit.frozen .walker{animation-play-state:paused}.orbit.frozen .walker .avatar{filter:saturate(0) brightness(1.3);outline:2px solid var(--blood)}
@keyframes walk{0%{left:-40px}100%{left:100%}}
@keyframes bob{50%{transform:translateY(-4px)}}
.chair .sitter .avatar.av-xs{width:40px;height:50px}
.chair.taken .sitter{animation:sitdown .3s cubic-bezier(.3,1.6,.5,1) both}
@keyframes sitdown{0%{transform:translateY(-30px) scale(1.2);opacity:0}100%{transform:none;opacity:1}}

/* tag: the last ten seconds, and the hand-off */
.tag-game .it-mark{animation:itpop .35s cubic-bezier(.3,1.8,.5,1) both}
@keyframes itpop{0%{transform:scale(2.2);opacity:0}100%{transform:none;opacity:1}}
.ring-seat.it .avatar{outline:3px solid var(--blood);box-shadow:0 0 16px var(--blood)}
.tag-game.late .tag-ring{animation:latepulse .5s steps(2) infinite}
@keyframes latepulse{50%{box-shadow:inset 0 0 60px rgba(200,16,26,.55);border-color:var(--blood)}}
.tag-game.you-it .tag-ring{border-color:var(--blood)}
@media (prefers-reduced-motion:reduce){.doll,.walker,.orbit .avatar,.rlgl .runner .avatar,.sitter,.it-mark,.tag-game.late .tag-ring{animation:none !important}}

/* results: staged once, in order of what matters */
.staged .presenter,.staged .kicker,.staged .game-title,.staged .res,.staged .notes,.staged .alive-card,.staged .next{animation:resin .45s cubic-bezier(.2,.9,.3,1) both;animation-delay:calc(var(--d,0ms) + var(--t,0ms))}
.staged .presenter{--d:0ms}.staged .kicker{--d:200ms}.staged .game-title{--d:320ms}.staged .res.dead,.staged .res.safe{--d:700ms;animation-name:resslam}.staged .res.win{--d:1900ms;animation-name:reswin}.staged .notes{--d:2500ms}
.staged .alive-card{--d:2800ms}.staged .alive-card:nth-child(2){--d:2900ms}.staged .alive-card:nth-child(3){--d:3000ms}.staged .alive-card:nth-child(4){--d:3100ms}.staged .alive-card:nth-child(5){--d:3200ms}.staged .next{--d:3500ms}
@keyframes resin{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:none}}
@keyframes resslam{0%{opacity:0;transform:scale(1.15)}40%{opacity:1;transform:scale(.98)}100%{transform:none}}
@keyframes reswin{0%{opacity:0;filter:brightness(3)}50%{opacity:1;filter:brightness(1.6)}100%{filter:none}}
.res.win{position:relative;background:radial-gradient(circle at 18% 50%,rgba(216,180,106,.22),transparent 55%),#120f06}
.crowned{position:relative;display:inline-block}.crown{position:absolute;left:50%;top:-14px;width:34px;height:20px;transform:translateX(-50%) rotate(-8deg);z-index:2;animation:crowndrop .5s cubic-bezier(.3,1.7,.5,1) both;animation-delay:calc(2300ms + var(--t,0ms))}
@keyframes crowndrop{0%{opacity:0;transform:translate(-50%,-40px) rotate(-30deg)}100%{opacity:1;transform:translateX(-50%) rotate(-8deg)}}
.alive-card.top{border-color:#d8b46a}
@media (prefers-reduced-motion:reduce){.staged *,.crown{animation:none !important}}
.btn.mlt-face b{color:var(--bone)}.btn.mlt-face.on b{color:#fff}.mlt-tick{color:var(--grey)}
@media (min-width:700px){.rlgl .light-box{height:210px;grid-template-columns:160px 1fr}.doll{width:150px;height:205px}.rlgl .light-word{font-size:34px}}

/* manhunt in the dark */
.hunt.dark .map-wrap{background:#000}.hunt.dark .map-wrap canvas{filter:brightness(.45) contrast(1.3)}
.hunt.dark .map-wrap .room.mine,.hunt.dark .map-wrap .room.can{filter:none}
.hunt.flicker .map-wrap canvas{animation:lightsflicker .9s steps(6) both}
@keyframes lightsflicker{0%{filter:brightness(2.2)}20%{filter:brightness(.3)}40%{filter:brightness(1.8)}60%{filter:brightness(.4)}80%{filter:brightness(1.2)}100%{filter:brightness(.28) contrast(1.4)}}
.lights{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--pixel);font-size:14px;color:#fff;background:rgba(0,0,0,.7);padding:4px 10px;pointer-events:none;animation:blink .15s steps(2) 6}
.hunt-heard b{color:#fff}.hunt-heard [data-ago]{color:var(--grey)}
@media (prefers-reduced-motion:reduce){.hunt.flicker .map-wrap canvas,.lights{animation:none}}
.hunt.dark .map-wrap canvas{filter:brightness(.28) contrast(1.4)}
.hunt.dark .map-wrap .room:not(.mine):not(.can){opacity:.18}
.hunt.dark .map-wrap .room.can{opacity:.8}
.hunt.near .map-wrap{box-shadow:inset 0 0 0 3px var(--blood),0 0 30px rgba(200,16,26,.6);animation:nearpulse .45s steps(2) 5}
@keyframes nearpulse{50%{box-shadow:inset 0 0 0 3px transparent,0 0 0 rgba(200,16,26,0)}}
.lights.footsteps{color:#ff6b73;border:1px solid var(--blood)}
@media (prefers-reduced-motion:reduce){.hunt.near .map-wrap{animation:none}}
.hunt.dark.flicker .map-wrap .room:not(.mine):not(.can){animation:roomflash .9s steps(6) both}@keyframes roomflash{0%,40%{opacity:1}20%,60%{opacity:.3}80%{opacity:.8}100%{opacity:.18}}
.ttl-form label .tag{flex:0 0 52px;text-align:center;box-sizing:border-box}

/* APPLY TO PLAY: the application beat */
.applying{display:flex;align-items:center;justify-content:center;min-height:60vh}
.app-window{position:relative;width:100%;max-width:400px;border:2px solid var(--bone);background:#050507;padding:0 0 16px}
.app-bar{display:flex;justify-content:space-between;font-family:var(--pixel);font-size:10px;background:var(--bone);color:#000;padding:4px 8px}
.app-lines{list-style:none;margin:14px 14px 10px;padding:0;min-height:96px;font-family:var(--term);font-size:21px;line-height:1.3}
.app-lines li{color:var(--grey)}.app-lines li:before{content:'> ';color:var(--teal)}
.app-lines li.current{color:#fff}.app-lines li.current:after{content:'_';animation:blink .6s steps(2) infinite}
.app-progress{margin:0 14px;height:10px;border:1px solid var(--dim)}.app-progress i{display:block;height:100%;background:var(--phosphor);transition:width .6s steps(8)}
.apply-stamp{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%) rotate(-9deg);font-family:var(--pixel);font-size:34px;color:var(--blood);border:5px solid var(--blood);padding:6px 16px;background:rgba(0,0,0,.55);letter-spacing:.08em;animation:applyslam .4s cubic-bezier(.3,1.7,.5,1) both;pointer-events:none}
@keyframes applyslam{0%{transform:translate(-50%,-50%) rotate(-28deg) scale(3);opacity:0}60%{transform:translate(-50%,-50%) rotate(-7deg) scale(.92);opacity:1}100%{transform:translate(-50%,-50%) rotate(-9deg) scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.apply-stamp,.app-lines li.current:after{animation:none}.app-progress i{transition:none}}

/* home: SIX TILL MIDNIGHT leads, the tagline under it in red and white */
.title-hero{margin:30px 0 8px;text-align:center;font-family:var(--pixel);font-weight:700;font-size:clamp(46px,14.5vw,66px);line-height:.98;color:#fff;letter-spacing:.01em;text-shadow:0 0 22px rgba(200,16,26,.55),0 0 2px #fff}
.title-hero span{display:block}
.tagline-hero{margin:14px 0 30px;text-align:center;font-family:var(--pixel);font-size:clamp(19px,5.6vw,26px);line-height:1.25;letter-spacing:.03em;animation:taglineflicker 6s steps(1) infinite}
.tagline-hero span{display:block}
.tl-red{color:#ff4d5e;text-shadow:0 0 14px rgba(255,40,60,.7)}
.tl-white{color:#fff;text-shadow:0 0 16px rgba(200,16,26,.6),0 0 2px #fff}
@keyframes taglineflicker{0%,91%,95%,100%{opacity:1}92%{opacity:.35}94%{opacity:.8}}
.home .btn.stamp.big{font-size:22px;letter-spacing:.2em}
@media (prefers-reduced-motion:reduce){.tagline-hero{animation:none}}

/* the pre-release lock */
.password{display:flex;align-items:center;justify-content:center;min-height:60vh}
.access{padding:14px}.access .q{display:block;margin:12px 0}.access .q span{display:block;font-family:var(--pixel);font-size:10px;color:var(--grey);margin-bottom:6px}.access .field{width:100%}
.access .btn.stamp.big{display:block;width:100%;margin-top:10px}

/* after the application */
.applied{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:18px}
.contact{max-width:400px;text-align:center;animation:resin .6s .2s both}
.contact-big{font-family:var(--pixel);font-size:clamp(20px,5.5vw,28px);line-height:1.25;color:#fff;margin:0 0 12px;text-shadow:0 0 12px rgba(200,16,26,.6)}
.contact b{color:#fff;font-weight:400;overflow-wrap:anywhere}
.nda .signature .field{width:100%}
@media (prefers-reduced-motion:reduce){.contact{animation:none}}
.home-keeps{text-align:center;font-size:13px;margin:18px 0 0}.home-keeps a{color:var(--grey)}.home-keeps a:hover{color:var(--bone)}
.home-keeps a{display:inline-block;padding:10px 4px}

/* the captcha face: a distorted webcam frame with one square missing */
.warp-defs{position:absolute;width:0;height:0}
.verify-cam .cam-face{position:absolute;top:0;left:0;width:100%;height:180px;filter:url(#stm-warp) contrast(1.5) saturate(.35) brightness(.9)}
.verify-cam .cam-face svg{width:74%;height:auto;display:block;margin:-15% auto 0}
.verify-cam .cam-face .chr *{animation:none !important}
.verify-cam:before{content:'';position:absolute;inset:0;z-index:3;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.35) 0 1px,transparent 1px 3px);mix-blend-mode:multiply}
.verify-cam .hole{position:absolute;top:62px;height:56px;z-index:2;background:rgba(0,0,0,.82);box-shadow:inset 0 0 12px #000,0 0 0 1px rgba(255,255,255,.25)}
.verify-cam .piece{position:absolute;top:62px;height:56px;z-index:4;overflow:hidden;outline:2px solid #fff;box-shadow:0 0 14px rgba(255,255,255,.4),0 6px 14px rgba(0,0,0,.7);transform:translateY(-6px)}
.verify-cam .piece .cam-face{top:-62px}
.verify-cam.whole .piece{outline:none;box-shadow:none;transform:none}
.verify-cam.whole .cam-face{filter:url(#stm-warp) contrast(1.8) saturate(1.2) hue-rotate(-20deg)}
.verify-cam .rec{position:absolute;left:8px;top:6px;z-index:5;font-family:var(--term);font-size:14px;color:#ff3340}.verify-cam .rec:before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:#ff3340;margin-right:5px;animation:blink 1s steps(2) infinite}
.verify-cam .cam-time{position:absolute;right:8px;bottom:6px;z-index:5;font-family:var(--term);font-size:14px;color:#ddd}
.verify-result{color:#ff6b73}.verify-cam.whole + .verify-result,.verify .verify-result:only-child{color:var(--phosphor)}

/* eliminations, staged five ways */
.lights-row .lamp{display:flex;flex-direction:column;align-items:center;font-family:var(--pixel);font-size:8px;color:var(--grey);padding:4px 0}
.lights-row .lamp .avatar.av-m{width:100%;max-width:64px;height:auto;aspect-ratio:4/5}
.beat-1 .lamp:not(.last){animation:lightoff .12s steps(1) forwards;animation-delay:calc(var(--k) * 320ms + 200ms)}
@keyframes lightoff{to{filter:brightness(.06) grayscale(1);opacity:.3}}
.beat-1 .lamp.last{animation:lastlight 1.9s steps(10) both}
@keyframes lastlight{0%,60%{filter:none}70%{filter:brightness(1.8) drop-shadow(0 0 14px #ff2030)}80%{filter:brightness(.4)}90%,100%{filter:brightness(1.6) drop-shadow(0 0 18px #ff2030)}}
.wheel{position:relative;width:min(320px,88%);aspect-ratio:1;margin:10px auto 0;border-radius:50%;border:1px dashed var(--dim)}
.wheel-seat{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;font-family:var(--pixel);font-size:8px;color:var(--grey)}
.pointer{position:absolute;left:50%;top:50%;width:4px;height:30%;background:linear-gradient(var(--blood),#ff6b73);box-shadow:0 0 12px var(--blood);transform-origin:50% 100%;transform:translate(-50%,-100%)}
.beat-1 .pointer{animation:wheelspin 1.9s cubic-bezier(.12,.65,.18,1) forwards}
@keyframes wheelspin{from{transform:translate(-50%,-100%) rotate(0deg)}to{transform:translate(-50%,-100%) rotate(var(--a))}}
.beat-1 .wheel-seat.target{animation:targetlock .3s 1.7s steps(2) 2 both}
.call-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;max-width:420px;margin:10px auto 0}
.tile{position:relative;overflow:hidden;background:#0b0b0d;border:1px solid #333;padding:6px 4px;display:flex;flex-direction:column;align-items:center;gap:3px;font-family:var(--pixel);font-size:8px;color:var(--grey)}
.tile .avatar.av-m{width:100%;max-width:64px;height:auto;aspect-ratio:4/5}
.tile em{font-style:normal;color:var(--phosphor)}.tile.losing em{color:#ff6b73}
.tile:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.35) 0 1px,transparent 1px 3px)}
.beat-1 .tile.losing{animation:losing 1.9s steps(14) forwards}.beat-1 .tile.losing:after{animation:staticin 1.9s steps(14) forwards}
@keyframes losing{0%{filter:none;transform:none}30%{filter:hue-rotate(90deg);transform:translate(2px,0)}50%{filter:blur(1px) saturate(3);transform:translate(-3px,1px)}70%{filter:contrast(3) grayscale(1);transform:translate(4px,-1px)}100%{filter:brightness(.2) grayscale(1);transform:none}}
@keyframes staticin{0%{opacity:0}40%{opacity:.4}100%{opacity:1}}
.spell{display:flex;justify-content:center;gap:6px;margin:40px 0 24px;flex-wrap:wrap}
.letter{font-family:var(--pixel);font-size:clamp(26px,8vw,44px);color:#fff;min-width:1em;padding:0 2px;border-bottom:3px solid var(--blood);text-align:center;color:transparent;text-shadow:none}
.beat-1 .letter{animation:letterin .1s steps(1) forwards;animation-delay:calc(var(--k) * (1500ms / var(--n)) + 150ms)}
@keyframes letterin{to{color:#fff;text-shadow:0 0 14px rgba(255,40,60,.8)}}
.spell-faces .scan-seat .avatar.av-s{width:100%;max-width:44px;height:auto;aspect-ratio:4/5}
@media (prefers-reduced-motion:reduce){.lamp,.pointer,.wheel-seat,.tile,.tile:after,.letter{animation:none !important}.letter{color:#fff}}

/* the dead watch from the edges */
.dead-watch{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.ghost-face{position:absolute;opacity:.09;filter:grayscale(1) blur(.4px);animation:ghostdrift 14s ease-in-out infinite;animation-delay:calc(var(--i) * -3.1s)}
.ghost-face:nth-child(odd){left:-14px}.ghost-face:nth-child(even){right:-14px}
.ghost-face:nth-child(1){top:18%}.ghost-face:nth-child(2){top:42%}.ghost-face:nth-child(3){top:66%}.ghost-face:nth-child(4){top:30%}.ghost-face:nth-child(5){top:78%}
@keyframes ghostdrift{0%,100%{transform:translateY(0);opacity:.05}50%{transform:translateY(-14px);opacity:.14}}
.stage > .screen{position:relative;z-index:1}
@media (prefers-reduced-motion:reduce){.ghost-face{animation:none;opacity:.08}}

/* a face for a frame, and typing that never sends */
.subliminal{position:fixed;inset:0;z-index:97;pointer-events:none;display:flex;align-items:center;justify-content:center;background:#000;mix-blend-mode:screen}
.subliminal svg{height:92vh;width:auto;filter:contrast(1.6) brightness(1.3)}
.host-typing{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);z-index:60;font-family:var(--term);font-size:16px;color:#ff6b73;background:rgba(0,0,0,.85);border:1px solid var(--blood);padding:4px 10px;pointer-events:none;animation:blink 1.2s steps(2) infinite}
@media (prefers-reduced-motion:reduce){.host-typing{animation:none}}
.called{font-family:var(--pixel);text-align:center;margin:6px 0;font-size:14px}.called.right{color:var(--phosphor);text-shadow:0 0 10px rgba(156,255,176,.6);animation:resslam .5s .3s both}.called.wrong{color:var(--grey);font-size:11px}
.admin-form{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:12px 0;font-family:var(--pixel);font-size:10px}.admin-form label{display:flex;flex-direction:column;gap:4px}.admin-form input{font:inherit;font-family:var(--term);font-size:18px;background:#000;color:var(--bone);border:1px solid var(--grey);padding:4px 6px}.admin-form button,.aboutpage td form button{font-family:var(--pixel);font-size:10px;background:#1d3a24;color:var(--phosphor);border:1px solid var(--phosphor);padding:6px 10px;cursor:pointer}.aboutpage td.code{font-family:var(--pixel);color:#fff;letter-spacing:.05em}

/* the rules screen, phone first: one screen, no scrolling to know what to do */
.brief-host{display:flex;gap:10px;align-items:center;margin:4px 0 10px}
.presenter-art.small{width:62px;flex:0 0 62px}.presenter-art.small svg{width:100%;height:auto;display:block}
.brief-host .say{margin:0;font-size:16px;line-height:1.3;border:1px solid var(--dim);padding:8px 10px;background:#08080a}
.brief .brief-card{padding:12px}
.brief .game-title{margin:2px 0 10px}
.brief-key{display:grid;gap:8px}
.brief-key p{margin:0;padding:10px 12px;font-family:var(--term);font-size:20px;line-height:1.25;color:#fff;background:#060607}
.brief-key b{display:block;font-family:var(--pixel);font-size:10px;letter-spacing:.06em;margin-bottom:4px}
.brief-key .do{border:2px solid var(--phosphor)}.brief-key .do b{color:var(--phosphor)}
.brief-key .die{border:2px solid var(--blood)}.brief-key .die b{color:#ff6b73}
.full-rules{margin-top:10px;border-top:1px dashed var(--dim)}
.full-rules summary{cursor:pointer;list-style:none;font-family:var(--pixel);font-size:10px;color:var(--grey);padding:10px 0;min-height:44px;display:flex;align-items:center}
.full-rules summary::-webkit-details-marker{display:none}.full-rules summary:before{content:'+ ';color:var(--bone)}.full-rules[open] summary:before{content:'- '}
.full-rules summary:hover,.full-rules summary:focus-visible{color:var(--bone)}
.full-rules .steps{margin:0 0 8px}.full-rules .live b{display:block;font-family:var(--pixel);font-size:10px;color:var(--phosphor);margin-bottom:4px}
.brief-actions{position:sticky;bottom:0;z-index:5;padding:16px 0 10px;background:linear-gradient(rgba(0,0,0,0),#000 28%)}
.brief-actions .btn.stamp.big{display:block;width:100%;margin-top:8px}

/* during the game: the move on top for the living; for the out, a plain panel after the game */
.your-move{position:sticky;top:0;z-index:6;margin:0 0 10px;padding:8px 12px;background:#07140b;border:2px solid var(--phosphor);font-family:var(--term);font-size:19px;line-height:1.2;color:#fff}
.your-move b{display:block;font-family:var(--pixel);font-size:9px;letter-spacing:.08em;color:var(--phosphor);margin-bottom:2px}
.out-bar{margin:14px 0 0;padding:10px 12px;border:1px solid var(--blood);background:#0d0405}
.out-title{margin:0;font-family:var(--pixel);font-size:13px;color:#ff6b73}
.out-sub{margin:4px 0;font-family:var(--term);font-size:17px;color:var(--grey)}.out-sub b{color:#fff;font-weight:400}
.out-bar .pick{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.out-bar .chip{font-family:var(--pixel);font-size:10px;min-height:40px;padding:6px 10px}
@media (max-width:480px){.brief-key p{font-size:17px;padding:8px 10px}.brief-host .say{font-size:14px;padding:6px 8px}.brief .game-title{font-size:22px}.brief-actions{padding-top:10px}}

/* never have i ever: heat, the accusing, the verdict */
.heat{font-family:var(--pixel);font-size:10px;letter-spacing:.1em;padding:1px 6px;border:1px solid currentColor}.heat-1{color:#e6c07a}.heat-2{color:#ff8a4d}.heat-3{color:#ff2a36;text-shadow:0 0 8px rgba(255,42,54,.7);animation:blink 1.4s steps(2) infinite}
.nhie.phase-accuse .statement,.nhie.phase-verdict .statement{opacity:.75}
.nhie-split p{margin:8px 0;font-family:var(--term);font-size:18px;color:var(--bone);text-align:center}
.liar-q{font-family:var(--pixel);font-size:18px;color:#fff;text-align:center;margin:10px 0 6px;text-shadow:0 0 12px rgba(200,16,26,.7)}
.liar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin:10px 0}
.btn.liar-pick{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;background:#0a0405;border:2px solid var(--dim);color:var(--bone);font-family:var(--pixel);font-size:10px;cursor:pointer}
.btn.liar-pick i{font-style:normal;font-size:8px;color:var(--grey)}
.btn.liar-pick:hover:not([disabled]),.btn.liar-pick:focus-visible{border-color:#ff6b73;background:#1a0608}
.btn.liar-pick.on{border-color:var(--blood);box-shadow:0 0 0 2px var(--blood),0 0 16px rgba(200,16,26,.5)}
.btn.liar-pick[disabled]:not(.on){opacity:.55}
.verdict-stamp{margin:14px auto;max-width:320px;text-align:center;padding:14px;border:4px solid var(--blood);transform:rotate(-3deg);animation:stampslam .45s cubic-bezier(.3,1.7,.5,1) both}
.verdict-stamp span{display:block;font-family:var(--pixel);font-size:30px;color:var(--blood);letter-spacing:.12em}
.verdict-stamp b{display:block;font-family:var(--pixel);font-size:18px;color:#fff;margin:4px 0}
.verdict-stamp em{display:block;font-style:normal;font-family:var(--term);font-size:17px;color:var(--grey)}
.verdict-stamp.clean{border-color:var(--grey)}.verdict-stamp.clean span{color:var(--bone)}
@media (prefers-reduced-motion:reduce){.verdict-stamp,.heat-3{animation:none}}
.statement-line{margin:6px 0 4px;padding:10px 12px;border:1px solid var(--dim);background:#060607;font-family:var(--host);font-size:19px;line-height:1.3;color:#fff;text-align:center}
@media (max-width:480px){.nhie .table{max-width:300px;margin-left:auto;margin-right:auto}}

/* the Host's private deal */
.deal-card{margin:10px 0;padding:12px;border:2px dashed var(--blood);background:#0d0304;animation:resslam .5s both}
.deal-head{margin:0 0 6px;font-family:var(--pixel);font-size:10px;color:#ff6b73;letter-spacing:.08em}
.deal-text{margin:0 0 10px;font-family:var(--host);font-size:18px;line-height:1.35;color:#fff}.deal-text b{color:#ff6b73;font-weight:400}
.deal-card .row{display:flex;gap:8px}.deal-card .btn.tile{flex:1}
.deal-foot{margin:8px 0 0;font-family:var(--term);font-size:15px;color:var(--grey)}
.deal-bar{position:sticky;top:58px;z-index:5;margin:0 0 10px;padding:6px 12px;background:#140405;border:1px dashed var(--blood);font-family:var(--term);font-size:16px;color:#fff}
.deal-bar b{display:block;font-family:var(--pixel);font-size:9px;color:#ff6b73}
.deal-result{margin:8px 0;padding:8px 12px;font-family:var(--term);font-size:17px;color:#fff;border:1px dashed}.deal-result b{display:block;font-family:var(--pixel);font-size:10px}
.deal-result.paid{border-color:var(--phosphor)}.deal-result.paid b{color:var(--phosphor)}.deal-result.failed{border-color:var(--blood)}.deal-result.failed b{color:#ff6b73}
@media (prefers-reduced-motion:reduce){.deal-card{animation:none}}
.msg.host.private{border-left:2px solid var(--blood);padding-left:6px;background:rgba(200,16,26,.08)}
