:root{--bg:#ece7dd;--bg-tint:#f3efe7;--surface:#ffffff;--surface-2:#faf7f1;--surface-3:#f2ede4;--text:#211f1b;--text-secondary:#6c655b;--text-muted-solid:#a49b8d;--text-inverse:#fbf9f4;--border:#e7e1d5;--border-strong:#d9d1c2;--primary:#e5484d;--primary-hover:#d43a3f;--primary-press:#bf3236;--primary-soft:rgba(229,72,77,0.12);--primary-ring:rgba(229,72,77,0.35);--imposter:#f2601a;--imposter-soft:rgba(242,96,26,0.13);--crew:#2f6df0;--crew-soft:rgba(47,109,240,0.12);--success:#159a66;--success-soft:rgba(21,154,102,0.14);--warning:#d6960a;--danger:#e5484d;--danger-soft:rgba(229,72,77,0.12);--gold:#e8b120;--radius-sm:10px;--radius:16px;--radius-lg:22px;--radius-xl:30px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(45,35,22,0.06),0 1px 3px rgba(45,35,22,0.05);--shadow:0 6px 20px rgba(50,38,22,0.09);--shadow-lg:0 18px 48px rgba(50,38,22,0.16);--shadow-primary:0 8px 22px rgba(229,72,77,0.32);--content-max:640px;--font-sans:"Nunito",ui-rounded,"SF Pro Rounded",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#17140f;--bg-tint:#1d1a14;--surface:#23201a;--surface-2:#2a261f;--surface-3:#322d25;--text:#f6f1e8;--text-secondary:#b7ad9d;--text-muted-solid:#8a8071;--text-inverse:#17140f;--border:#3a3428;--border-strong:#4a4335;--primary-soft:rgba(229,72,77,0.2);--imposter-soft:rgba(242,96,26,0.2);--crew-soft:rgba(47,109,240,0.22);--success-soft:rgba(21,154,102,0.22);--danger-soft:rgba(229,72,77,0.2);--shadow-sm:0 1px 2px rgba(0,0,0,0.4);--shadow:0 6px 20px rgba(0,0,0,0.4);--shadow-lg:0 18px 48px rgba(0,0,0,0.55)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{padding:0;margin:0}body{background-color:var(--bg);background-image:radial-gradient(circle at 12% 18%,rgba(229,72,77,.05),transparent 42%),radial-gradient(circle at 88% 12%,rgba(47,109,240,.045),transparent 40%),radial-gradient(circle at 78% 88%,rgba(242,96,26,.05),transparent 45%);color:var(--text);font-family:var(--font-sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100dvh}h1,h2,h3,h4{margin:0;font-weight:800;letter-spacing:-.02em;line-height:1.1}a{text-decoration:none}a,button{color:inherit}button{font-family:inherit;font-size:inherit;background:none;border:0;padding:0;text-align:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}:focus-visible{outline:3px solid var(--primary-ring);outline-offset:2px}.screen{min-height:100dvh;display:flex;flex-direction:column;position:relative;z-index:1}.container{width:100%;max-width:var(--content-max);margin:0 auto;padding:0 20px}.container-narrow{max-width:480px}.screen-pad{padding-top:20px;padding-bottom:40px}.stack{gap:16px}.stack,.stack-sm{display:flex;flex-direction:column}.stack-sm{gap:10px}.row,.row-between{display:flex;align-items:center;gap:12px}.row-between{justify-content:space-between}.grow{flex:1 1;min-width:0}.center{display:flex;align-items:center;justify-content:center}.wrap{flex-wrap:wrap}.topbar{display:flex;justify-content:space-between;gap:12px;padding:14px 20px;max-width:var(--content-max);margin:0 auto;width:100%}.iconbtn,.topbar{align-items:center}.iconbtn{width:42px;height:42px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);display:inline-flex;justify-content:center;font-size:18px;box-shadow:var(--shadow-sm);transition:transform .12s ease,background .15s ease,color .15s ease}.iconbtn:hover{color:var(--text);transform:translateY(-1px)}.iconbtn:active{transform:translateY(0) scale(.96)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:20px}.card-flush{padding:0;overflow:hidden}.card-tint{background:var(--surface-2)}.card-title{font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted-solid);margin-bottom:14px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 20px;border-top:1px solid var(--border)}.setting-row:first-child{border-top:none}.setting-row-col{flex-direction:column;align-items:stretch;gap:12px}.setting-label{font-weight:700;font-size:15.5px}.setting-desc{font-size:13px;color:var(--text-secondary);margin-top:2px;line-height:1.4}.setting-value{color:var(--text-secondary);font-weight:700;font-size:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1px solid transparent;border-radius:var(--radius);padding:14px 20px;font-size:16px;font-weight:800;letter-spacing:-.01em;background:var(--surface-3);color:var(--text);transition:transform .12s ease,box-shadow .15s ease,background .15s ease,opacity .15s ease;width:100%;min-height:52px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn:hover{transform:translateY(-1.5px)}.btn:active{transform:translateY(0) scale(.985)}.btn:disabled{opacity:.5;pointer-events:none;transform:none}.btn-lg{padding:17px 22px;font-size:17.5px;min-height:58px;border-radius:var(--radius-lg)}.btn-sm{padding:9px 14px;font-size:14px;min-height:40px;border-radius:var(--radius)}.btn-auto,.btn-sm{width:auto}.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-primary)}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:active{background:var(--primary-press)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:var(--surface-2)}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 8px 22px rgba(229,72,77,.3)}.btn-danger:hover{background:var(--primary-hover)}.btn-ghost{background:transparent;color:var(--text-secondary);box-shadow:none}.btn-ghost:hover{background:var(--surface-3);color:var(--text)}.btn-outline{background:transparent;border-color:var(--border-strong);color:var(--text);box-shadow:none}.btn-outline:hover,.input{background:var(--surface-2)}.input{width:100%;border:1.5px solid var(--border-strong);border-radius:var(--radius);padding:15px 16px;font-size:16px;font-weight:600;color:var(--text);transition:border-color .15s ease,background .15s ease}.input::placeholder{color:var(--text-muted-solid);font-weight:500}.input:focus{outline:none;border-color:var(--primary);background:var(--surface)}.field-label{font-size:13px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted-solid);margin-bottom:9px;display:block}.code-boxes{gap:10px}.code-box,.code-boxes{display:flex;justify-content:center}.code-box{flex:1 1;max-width:62px;aspect-ratio:1/1.15;border:2px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-2);align-items:center;font-size:28px;font-weight:800;text-transform:uppercase;color:var(--text);transition:border-color .15s ease,transform .15s ease}.code-box.filled{border-color:var(--primary);background:var(--surface)}.code-box.active{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 6px 16px var(--primary-soft)}.code-box.error{border-color:var(--danger)}.toggle{width:52px;height:31px;border-radius:var(--radius-pill);background:var(--border-strong);border:none;padding:3px;display:inline-flex;align-items:center;transition:background .18s ease;flex-shrink:0}.toggle.on{background:var(--success)}.toggle .knob{width:25px;height:25px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .18s ease}.toggle.on .knob{transform:translateX(21px)}.segmented{display:flex;gap:6px;background:var(--surface-3);padding:5px;border-radius:var(--radius);flex-wrap:wrap}.segmented.stretch .seg{flex:1 1}.seg{border:none;background:transparent;color:var(--text-secondary);font-weight:700;font-size:14px;padding:10px 14px;border-radius:11px;transition:background .15s ease,color .15s ease,box-shadow .15s ease;white-space:nowrap}.seg:hover{color:var(--text)}.seg.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm)}.seg.locked{color:var(--text-muted-solid);opacity:.8}.stepper{gap:4px;background:var(--surface-3);border-radius:var(--radius-pill);padding:4px}.stepper,.stepper button{display:inline-flex;align-items:center}.stepper button{width:34px;height:34px;border-radius:50%;border:none;background:var(--surface);color:var(--text);font-size:20px;font-weight:800;justify-content:center;box-shadow:var(--shadow-sm)}.stepper button:disabled{opacity:.4;pointer-events:none}.stepper .val{min-width:34px;text-align:center;font-weight:800;font-size:18px}.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);font-size:13.5px;font-weight:700;color:var(--text-secondary);box-shadow:var(--shadow-sm);white-space:nowrap}.chip.selectable{transition:transform .12s ease,background .15s ease,border-color .15s ease,color .15s ease}.chip.selectable:hover{transform:translateY(-1px)}.chip.active{background:var(--primary);color:#fff;border-color:transparent}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-pill);font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase}.badge-primary{background:var(--primary-soft);color:var(--primary)}.badge-crew{background:var(--crew-soft);color:var(--crew)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-muted{background:var(--surface-3);color:var(--text-secondary)}.badge-gold{background:rgba(232,177,32,.16);color:#b8860b}.player-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);transition:background .15s ease,border-color .15s ease,transform .12s ease}.player-row.clickable{cursor:pointer}.player-row.clickable:hover{border-color:var(--border-strong);transform:translateY(-1px)}.player-row.selected{border-color:var(--primary);background:var(--primary-soft)}.player-row.dim{opacity:.55}.loc-card{padding:12px 14px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border)}.loc-card-head{display:flex;align-items:center;gap:9px;font-size:14.5px;font-weight:700}.loc-card-emoji{font-size:20px;line-height:1}.role-chips{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.role-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);font-size:12.5px;line-height:1.35;color:var(--text-secondary)}.role-chip-pos{opacity:.72}.avatar{width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:17px;color:#fff;flex-shrink:0}.avatar-lg{width:56px;height:56px;font-size:24px}.pname{font-weight:700;font-size:15.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress{height:10px;background:var(--surface-3);overflow:hidden}.progress,.progress>span{border-radius:var(--radius-pill)}.progress>span{display:block;height:100%;background:var(--primary);transition:width .4s cubic-bezier(.4,0,.2,1)}.progress.success>span{background:var(--success)}.reveal-card{border-radius:var(--radius-xl);padding:40px 26px;text-align:center;border:2px solid var(--border);background:var(--surface);box-shadow:var(--shadow);-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:transform .15s ease,box-shadow .15s ease;position:relative;overflow:hidden}.reveal-card.crew{border-color:rgba(47,109,240,.4);background:linear-gradient(180deg,var(--crew-soft),var(--surface) 70%)}.reveal-card.imposter{border-color:rgba(242,96,26,.5);background:linear-gradient(180deg,var(--imposter-soft),var(--surface) 70%)}.reveal-card.hidden-state{background:var(--surface-2);border-style:dashed;cursor:-webkit-grab;cursor:grab}.reveal-emoji{font-size:78px;line-height:1;margin-bottom:12px}.reveal-name{font-size:34px;font-weight:900;letter-spacing:-.02em}.reveal-sub{color:var(--text-secondary);margin-top:8px;font-weight:600}.timer{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:900;font-size:52px;letter-spacing:-.02em;text-align:center;color:var(--text)}.timer.warn{color:var(--warning)}.timer.crit{color:var(--danger);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.hero{text-align:center;padding:26px 0 8px}.wordmark{display:inline-flex;align-items:center;gap:12px;font-size:40px;font-weight:900;letter-spacing:-.03em}.wordmark .dot{color:var(--primary)}.wordmark .logo{width:52px;height:52px;border-radius:14px;background:linear-gradient(160deg,#2c2723,#171310);display:inline-flex;align-items:center;justify-content:center;font-size:30px;box-shadow:var(--shadow)}.tagline{color:var(--text-secondary);font-size:17px;font-weight:600;max-width:32ch;margin:14px auto 0;line-height:1.45}.decor{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}.decor span{position:absolute;font-size:44px;opacity:.5;filter:drop-shadow(0 6px 10px rgba(60,45,25,.14));animation:float 9s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0) rotate(var(--r,0deg))}50%{transform:translateY(-14px) rotate(calc(var(--r, 0deg) + 4deg))}}@media (prefers-reduced-motion:reduce){.decor span,.timer.crit{animation:none}}.modal-backdrop{position:fixed;inset:0;background:rgba(25,18,10,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:fade .18s ease}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:460px;max-height:88dvh;overflow:auto;animation:pop .2s cubic-bezier(.34,1.56,.64,1)}.modal-sheet{padding:24px}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:scale(.94) translateY(8px)}}.divider{height:1px;background:var(--border);margin:4px 0}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--border-strong);border-top-color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted-solid)}.text-center{text-align:center}.text-primary{color:var(--primary)}.text-imposter{color:var(--imposter)}.text-crew{color:var(--crew)}.text-success{color:var(--success)}.mono-code{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:.3em;font-weight:900;font-size:40px;padding-left:.3em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fade-in{animation:fadein .4s ease both}@keyframes fadein{0%{opacity:0;transform:translateY(8px)}}.footer-bar{position:-webkit-sticky;position:sticky;bottom:0;background:linear-gradient(180deg,transparent,var(--bg) 24%);padding:16px 20px calc(16px + env(safe-area-inset-bottom, 0px));margin-top:auto}.confetti-piece{position:fixed;top:-12px;width:10px;height:14px;z-index:90;animation:confetti-fall linear forwards;pointer-events:none}@keyframes confetti-fall{to{transform:translateY(105vh) rotate(2turn)}}