@font-face{font-family:Rubik Dirt;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-dirt-latin-400-normal-DR0aN1S6.woff2)format("woff2"),url(/assets/rubik-dirt-latin-400-normal-CfDhD0M4.woff)format("woff")}@font-face{font-family:Rubik Dirt;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-dirt-latin-ext-400-normal-DWGQEn_A.woff2)format("woff2"),url(/assets/rubik-dirt-latin-ext-400-normal-Bl44gCxU.woff)format("woff")}@font-face{font-family:Special Elite;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/special-elite-latin-ext-400-normal-ChcxYnmu.woff2)format("woff2"),url(/assets/special-elite-latin-ext-400-normal-CaJZjSVf.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Special Elite;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/special-elite-latin-400-normal-YjDd9tmf.woff2)format("woff2"),url(/assets/special-elite-latin-400-normal-BtSRmyJ6.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-vietnamese-wght-normal-XAtsl5Q_.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-latin-ext-wght-normal-C4zznr8T.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-latin-wght-normal-E0tuGl4L.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Courier Prime;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/courier-prime-latin-400-normal-BbyBr73r.woff2)format("woff2"),url(/assets/courier-prime-latin-400-normal-BAlbUm6l.woff)format("woff")}@font-face{font-family:Courier Prime;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/courier-prime-latin-700-normal-D1YCjmaD.woff2)format("woff2"),url(/assets/courier-prime-latin-700-normal-CVvp4Sof.woff)format("woff")}@font-face{font-family:Courier Prime;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/courier-prime-latin-ext-400-normal-B-EsvyE4.woff2)format("woff2"),url(/assets/courier-prime-latin-ext-400-normal-CKOCNFvK.woff)format("woff")}@font-face{font-family:Courier Prime;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/courier-prime-latin-ext-700-normal-ByMJlNdM.woff2)format("woff2"),url(/assets/courier-prime-latin-ext-700-normal-BIFoAzHx.woff)format("woff")}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/zilla-slab-latin-400-normal-Dw3p-plB.woff2)format("woff2"),url(/assets/zilla-slab-latin-400-normal-Dlq-Ffxl.woff)format("woff")}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/zilla-slab-latin-700-normal-CEKI1vVu.woff2)format("woff2"),url(/assets/zilla-slab-latin-700-normal-C8aaVMsA.woff)format("woff")}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/zilla-slab-latin-ext-400-normal-L6eiXaX2.woff2)format("woff2"),url(/assets/zilla-slab-latin-ext-400-normal-DYKaTm8Q.woff)format("woff")}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/zilla-slab-latin-ext-700-normal-C1-U_e_0.woff2)format("woff2"),url(/assets/zilla-slab-latin-ext-700-normal-DQD_oLH8.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff)format("woff")}:root{--paper:#ece2cc;--paper-raised:#f4ecda;--paper-sunken:#e0d4b8;--ink:#23252e;--ink-soft:#565866;--ink-faint:#23252e29;--red:#b23528;--red-deep:#8a2318;--red-paper:#e6c7bc;--blue:#315781;--blue-deep:#223e5e;--blue-paper:#c2cedd;--neutral-paper:#cfc2a2;--assassin:#16171d;--gold:#9c7c2c;--green:#55684a;--font-display:"Special Elite", "Courier New", monospace;--font-title:"Rubik Dirt", "Special Elite", "Courier New", monospace;--font-body:"Archivo Variable", "Trebuchet MS", sans-serif;--edge:var(--ink);--edge-w:2px;--shadow-stamp:3px 3px 0 var(--ink);--shadow-stamp-hover:4px 4px 0 var(--ink);--shadow-stamp-press:1px 1px 0 var(--ink);--shadow-card-hover:0 4px 0 var(--ink);--grain:.05;--radius:4px;--board-max:100%}:root[data-theme=dark]{--paper:#0e1014;--paper-raised:#171a21;--paper-sunken:#10131a;--ink:#e9e4d6;--ink-soft:#a0a29b;--ink-faint:#e9e4d60d;--red:#c44536;--red-deep:#e0745f;--red-paper:#2c1613;--blue:#3d6ea5;--blue-deep:#7fa8d4;--blue-paper:#131e2c;--neutral-paper:#211f18;--assassin:#050507;--gold:#c9a45c;--green:#4a8142;--edge:#e9e4d624;--edge-w:1px;--shadow-stamp:0 6px 18px #00000059;--shadow-stamp-hover:0 10px 26px #00000073;--shadow-stamp-press:0 2px 6px #0006;--shadow-card-hover:0 10px 24px #00000080;--grain:0;--radius:10px}:root[data-font=machine]{--font-display:"Courier Prime", "Courier New", monospace;--font-body:"Courier Prime", "Courier New", monospace}:root[data-font=dossier]{--font-display:"Zilla Slab", Georgia, serif;--font-body:"Zilla Slab", Georgia, serif}:root[data-font=moderne]{--font-display:"Archivo Variable", "Trebuchet MS", sans-serif;--font-body:"Archivo Variable", "Trebuchet MS", sans-serif}:root[data-font=lisible]{--font-display:"Atkinson Hyperlegible", "Trebuchet MS", sans-serif;--font-body:"Atkinson Hyperlegible", "Trebuchet MS", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100dvh;margin:0}body{background-color:var(--paper);background-image:radial-gradient(ellipse at 50% 0%, #f4ecdae6, #e0d4b800 60%), repeating-linear-gradient(0deg, var(--ink-faint) 0 1px, transparent 1px 56px), repeating-linear-gradient(90deg, var(--ink-faint) 0 1px, transparent 1px 56px);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;background-attachment:fixed;font-size:16px;line-height:1.45;transition:background-color .2s,color .2s}:root[data-theme=dark] body{background-image:radial-gradient(at 50% -20%,#546ea029,#0000 55%)}body:after{content:"";pointer-events:none;z-index:60;opacity:var(--grain);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:.02em;margin:0;font-weight:400}p{margin:0}button{font:inherit;color:inherit}.shell{max-width:1060px;margin:0 auto;padding:16px clamp(10px,3vw,28px) 64px;position:relative}.shell-wide{max-width:1400px}.corner-actions{z-index:5;gap:8px;display:flex;position:absolute;top:14px;right:clamp(10px,3vw,28px)}@media (width<=650px){.corner-actions{justify-content:flex-end;position:static}}.topbar{border-bottom:var(--edge-w) solid var(--edge);justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;padding:10px 0 14px;display:flex}.brand{font-family:var(--font-title);text-transform:uppercase;color:var(--ink);align-items:baseline;gap:8px;font-size:1.2rem;text-decoration:none;display:flex}.brand .brand-mark{color:var(--red)}.brand small{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.28em;color:var(--ink-soft);font-size:.65rem}.panel{background:var(--paper-raised);border:var(--edge-w) solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow-stamp);padding:clamp(16px,3vw,26px);position:relative}.panel+.panel{margin-top:22px}.panel-label{background:var(--ink);color:var(--paper-raised);font-family:var(--font-display);letter-spacing:.14em;text-transform:uppercase;padding:2px 10px 0;font-size:.78rem;position:absolute;top:-13px;left:14px}.panel-close{border-radius:var(--radius);width:30px;height:30px;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .12s,background-color .12s;display:inline-flex;position:absolute;top:8px;right:8px}.panel-close:hover,.panel-close:focus-visible{color:var(--gold);background:var(--paper-sunken)}.scroll-themed{scrollbar-width:auto;scrollbar-color:var(--gold) var(--paper-sunken);overflow-y:scroll}.scroll-themed::-webkit-scrollbar{width:14px}.scroll-themed::-webkit-scrollbar-track{background:var(--paper-sunken);border-radius:var(--radius)}.scroll-themed::-webkit-scrollbar-thumb{background:var(--gold);border:var(--edge-w) solid var(--paper-sunken);border-radius:var(--radius)}.scroll-themed::-webkit-scrollbar-thumb:hover{background:var(--ink-soft)}.btn{background:var(--paper-raised);border:var(--edge-w) solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow-stamp);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.95rem;transition:transform .12s,box-shadow .12s,background-color .12s;display:inline-flex}.btn:hover:not(:disabled){box-shadow:var(--shadow-stamp-hover);transform:translate(-1px,-1px)}.btn:active:not(:disabled){box-shadow:var(--shadow-stamp-press);transform:translate(2px,2px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-red{background:var(--red);border-color:var(--red-deep);color:var(--paper-raised);box-shadow:3px 3px 0 var(--red-deep)}.btn-red:hover:not(:disabled){box-shadow:4px 4px 0 var(--red-deep)}.btn-blue{background:var(--blue);border-color:var(--blue-deep);color:var(--paper-raised);box-shadow:3px 3px 0 var(--blue-deep)}.btn-blue:hover:not(:disabled){box-shadow:4px 4px 0 var(--blue-deep)}:root[data-theme=dark] .btn-red,:root[data-theme=dark] .btn-blue{color:var(--ink);box-shadow:var(--shadow-stamp);border-color:#0000}:root[data-theme=dark] .btn-red:hover:not(:disabled),:root[data-theme=dark] .btn-blue:hover:not(:disabled){box-shadow:var(--shadow-stamp-hover)}:root[data-theme=dark] .turn-tag,:root[data-theme=dark] .clue-log .clue-team,:root[data-theme=dark] .team-panel header,:root[data-theme=dark] .legend-blue,:root[data-theme=dark] .legend-red,:root[data-theme=dark] .legend-teams,:root[data-theme=dark] .legend-civil{color:var(--ink)}.btn-ghost{box-shadow:none;background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){box-shadow:none;border-color:var(--edge);transform:none}.btn-small{padding:5px 10px;font-size:.78rem}.field-row{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field-row label{text-transform:uppercase;letter-spacing:.18em;color:var(--ink-soft);font-size:.72rem}.field{background:var(--paper);border:var(--edge-w) solid var(--edge);border-radius:var(--radius);width:100%;font:inherit;color:var(--ink);padding:10px 12px}.field:focus-visible{outline:3px solid var(--gold);outline-offset:1px}.field-code{font-family:var(--font-display);letter-spacing:.35em;text-transform:uppercase;font-size:1.25rem;line-height:1.45rem}.form-error{background:var(--red-paper);border:2px solid var(--red-deep);border-radius:var(--radius);color:var(--red-deep);margin-bottom:14px;padding:8px 12px;font-size:.88rem}.hint{color:var(--ink-soft);font-size:.82rem}.code-chip{border:var(--edge-w) dashed var(--edge);border-radius:var(--radius);font-family:var(--font-display);letter-spacing:.3em;background:var(--paper-raised);cursor:pointer;align-items:center;gap:8px;padding:4px 10px;font-size:1.1rem;display:inline-flex}.code-chip:hover{background:var(--paper-sunken)}.team-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.team-panel{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper-raised);overflow:hidden}.team-panel header{color:var(--paper-raised);font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:8px 12px;font-size:.95rem;display:flex}.team-panel.team-red header{background:var(--red)}.team-panel.team-blue header{background:var(--blue)}.team-panel ul{flex-direction:column;gap:6px;min-height:74px;margin:0;padding:8px 12px 12px;list-style:none;display:flex}.roster-row{align-items:center;gap:8px;font-size:.95rem;display:flex}.roster-row .you-mark{color:var(--gold);font-weight:700}.roster-row .spymaster-mark{text-transform:uppercase;letter-spacing:.12em;border:1px solid;border-radius:3px;align-items:center;gap:4px;padding:1px 5px;font-size:.68rem;display:inline-flex}.team-red .spymaster-mark{color:var(--red-deep)}.team-blue .spymaster-mark{color:var(--blue-deep)}.spectators{color:var(--ink-soft);margin-top:14px;font-size:.9rem}.legend-badge{border-radius:var(--radius);text-align:center;flex-direction:column;align-items:center;padding:7px 14px;line-height:1.25;display:flex}.legend-badge strong{text-transform:uppercase;letter-spacing:.07em;align-items:baseline;gap:8px;font-size:.85rem;font-weight:700;display:inline-flex}.legend-badge small{opacity:.85;font-size:.72rem}.legend-count{font-family:var(--font-display);background:#ffffff40;border-radius:999px;padding:0 7px;font-weight:400}.legend-blue{background:var(--blue);color:var(--paper-raised)}.legend-red{background:var(--red);color:var(--paper-raised)}.legend-teams{background:linear-gradient(105deg, var(--blue) 0 49.5%, var(--red) 50.5% 100%);color:var(--paper-raised)}.legend-assassin{background:var(--ink);color:var(--paper-raised)}.legend-civil{background:var(--green);color:var(--paper-raised)}.legend-badge.active{outline:2px solid var(--gold);outline-offset:2px}.hero-legend{grid-template-columns:1fr auto 1fr;align-items:center;gap:clamp(10px,2vw,24px);display:grid}.hero-legend-side{flex-wrap:wrap;gap:10px;display:flex}.hero-legend-side.left{justify-content:flex-start}.hero-legend-side.right{justify-content:flex-end}.legend-row{width:100%;max-width:var(--board-max);flex-wrap:wrap;justify-content:space-between;gap:8px;margin:0 auto;display:flex}.legend-group{flex-wrap:wrap;gap:8px;display:flex}.legend-row .legend-badge{justify-content:center;min-width:150px;padding:12px 14px}.status-strip{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper-raised);box-shadow:var(--shadow-stamp);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;display:flex}.turn-tag{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.1em;color:var(--paper-raised);border-radius:3px;align-items:center;padding:7px 10px 4px;line-height:1;display:inline-flex}.turn-tag.red{background:var(--red)}.turn-tag.blue{background:var(--blue)}.clue-current{font-family:var(--font-display);letter-spacing:.06em;font-size:1.15rem}.board{width:100%;max-width:var(--board-max);grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(5px,1.2vw,12px);margin:0 auto;display:grid}.card-slot{min-width:0;display:grid;position:relative}.card.armed{outline:3px solid var(--gold);outline-offset:-3px}:root[data-theme=dark] .card.armed{border-color:var(--gold);outline:none}.card-arm{z-index:2;align-items:center;gap:6px;animation:.15s both rise-in;display:flex;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}.card-arm .btn{background:var(--paper-raised)}.card{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper-raised);cursor:pointer;text-align:center;animation:.3s both rise-in;animation-delay:var(--wave-delay,0s);flex-direction:column;padding:0;transition:transform .12s,box-shadow .12s;display:flex;position:relative;overflow:hidden}.card:not(.locked):hover{box-shadow:var(--shadow-card-hover);z-index:1;transform:translateY(-2px)}.card.locked{cursor:default}.card-photo{aspect-ratio:1;background:var(--paper-sunken);position:relative}.card-photo>img,.card-photo>svg{object-fit:cover;filter:saturate(.75)contrast(1.02);width:100%;height:100%;display:block;position:absolute;inset:0}.card-name{text-transform:uppercase;letter-spacing:.05em;border-top:var(--edge-w) solid var(--edge);background:var(--paper-raised);white-space:nowrap;text-overflow:ellipsis;padding:3px 2px 4px;font-size:clamp(.5rem,1.7vw,.82rem);font-weight:640;overflow:hidden}.card.key-red{border-color:var(--red);box-shadow:0 0 12px 2px color-mix(in srgb, var(--red) 60%, transparent);border-width:4px}.card.key-blue{border-color:var(--blue);box-shadow:0 0 12px 2px color-mix(in srgb, var(--blue) 60%, transparent);border-width:4px}.card.key-assassin{border-color:var(--assassin);box-shadow:0 0 12px 2px color-mix(in srgb, var(--assassin) 70%, transparent);border-width:4px}.card.key-neutral{border-color:var(--gold);border-width:3px}.card.revealed{cursor:default}.card.revealed .card-photo>img,.card.revealed .card-photo>svg{filter:saturate(.15)contrast(.9)brightness(.92)}.card.revealed-red{background:var(--red-paper)}.card.revealed-red .card-name{background:var(--red-paper);color:var(--red-deep)}.card.revealed-blue{background:var(--blue-paper)}.card.revealed-blue .card-name{background:var(--blue-paper);color:var(--blue-deep)}.card.revealed-neutral{background:var(--neutral-paper)}.card.revealed-neutral .card-name{background:var(--neutral-paper);color:var(--ink-soft)}.card.revealed-assassin{background:var(--assassin);border-color:var(--assassin)}.card.revealed-assassin .card-name{background:var(--assassin);color:var(--paper);border-top-color:var(--paper)}.card-stamp{pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.card-stamp span{font-family:var(--font-display);letter-spacing:.14em;text-transform:uppercase;background:#f4ecdad1;border:2px solid;border-radius:3px;padding:2px 8px;font-size:clamp(.55rem,2.2vw,1rem);animation:.22s cubic-bezier(.2,1.6,.4,1) both stamp-in;transform:rotate(-14deg)}.card.revealed-red .card-stamp span{color:var(--red-deep)}.card.revealed-blue .card-stamp span{color:var(--blue-deep)}.card.revealed-neutral .card-stamp span{color:var(--ink-soft)}.card.revealed-assassin .card-stamp span{color:var(--paper);background:#16171d8c}@keyframes stamp-in{0%{opacity:0;transform:scale(1.35)rotate(-3deg);box-shadow:0 0 #0000}60%{opacity:1;transform:scale(.97)rotate(1.2deg);box-shadow:0 16px 34px #0006}to{opacity:1;box-shadow:var(--shadow-stamp);transform:scale(1)rotate(.6deg)}}:root[data-theme=dark] .card{border-color:#c9a45c80}:root[data-theme=dark] .card:not(.revealed) .card-photo>img,:root[data-theme=dark] .card:not(.revealed) .card-photo>svg{filter:none}:root[data-theme=dark] .card-name{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--ink);letter-spacing:.08em;background:#0a0c108c;border:none;padding:9px 8px;position:absolute;bottom:0;left:0;right:0}:root[data-theme=dark] .card.revealed .card-photo:after{content:"";position:absolute;inset:0}:root[data-theme=dark] .card.revealed-red .card-photo:after{background:#c4453652}:root[data-theme=dark] .card.revealed-red .card-name{background:var(--red-paper);color:var(--red-deep)}:root[data-theme=dark] .card.revealed-blue .card-photo:after{background:#3d6ea552}:root[data-theme=dark] .card.revealed-blue .card-name{background:var(--blue-paper);color:var(--blue-deep)}:root[data-theme=dark] .card.revealed-neutral .card-photo:after{background:#a0967640}:root[data-theme=dark] .card.revealed-neutral .card-name{background:var(--neutral-paper);color:var(--ink-soft)}:root[data-theme=dark] .card.revealed-assassin .card-photo:after{background:#0000008c}:root[data-theme=dark] .card.revealed-assassin .card-name{background:var(--assassin);color:var(--ink);border-color:#e9e4d659}:root[data-theme=dark] .card.revealed-assassin .card-stamp span{color:var(--ink)}:root[data-theme=dark] .card.key-red{border-color:var(--red);border-width:3px}:root[data-theme=dark] .card.key-blue{border-color:var(--blue);border-width:3px}:root[data-theme=dark] .card.key-neutral{border-color:var(--gold);border-width:1px}:root[data-theme=dark] .card.key-assassin{border-width:3px;border-color:#fff;box-shadow:0 0 12px 2px #ffffff59}:root[data-theme=dark] .card.key-red .card-name{color:var(--red)}:root[data-theme=dark] .card.key-blue .card-name{color:var(--blue)}.card-skull{color:#fff;pointer-events:none;z-index:1;background:#050507d9;border:1px solid #ecdcb0a6;border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;display:flex;position:absolute;top:6px;right:6px}.card-skull svg{width:18px;height:18px}.clue-log{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.clue-log li{align-items:baseline;gap:10px;font-size:.95rem;display:flex}.clue-log .clue-word{font-family:var(--font-display);letter-spacing:.06em}.clue-log .clue-team{text-transform:uppercase;letter-spacing:.14em;color:var(--paper-raised);border-radius:3px;padding:1px 6px;font-size:.66rem}.clue-log .clue-team.red{background:var(--red)}.clue-log .clue-team.blue{background:var(--blue)}.verdict{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow-stamp);text-align:center;background:var(--paper-raised);margin-bottom:16px;padding:18px 14px}.verdict h2{letter-spacing:.08em;font-size:1.5rem}.verdict.red h2{color:var(--red-deep)}.verdict.blue h2{color:var(--blue-deep)}.verdict p{color:var(--ink-soft);margin-top:4px}.char-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px;display:grid}.char-tile{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper-raised);flex-direction:column;display:flex;overflow:hidden}.char-tile .card-photo{border-bottom:var(--edge-w) solid var(--edge)}.char-tile-name{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;padding:5px 6px 2px;font-size:.8rem;font-weight:640;overflow:hidden}.char-tile-actions{gap:4px;padding:4px 6px 7px;display:flex}.series-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}@media (width<=900px){.series-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.series-grid{grid-template-columns:1fr}}.series-card{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper);cursor:pointer;text-align:left;animation:.32s both rise-in;animation-delay:var(--wave-delay,0s);flex-direction:column;gap:2px;padding:0 0 8px;transition:transform .12s,box-shadow .12s,background-color .12s;display:flex;position:relative;overflow:hidden}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}}.series-slot{display:grid;position:relative;container-type:inline-size}.series-card:hover:not(:disabled),.series-slot:hover .series-card:not(:disabled){box-shadow:var(--shadow-stamp);transform:translate(-1px,-1px)}.series-card:disabled{opacity:.55;cursor:not-allowed}.series-card.selected{background:var(--paper-raised);outline:3px solid var(--gold);outline-offset:-3px}:root[data-theme=dark] .series-strip{border-bottom-color:#0000}:root[data-theme=dark] .series-card.selected{border-color:var(--gold);outline:none}.series-strip{border-bottom:var(--edge-w) solid var(--edge);background:var(--paper-sunken);aspect-ratio:4;grid-template-columns:repeat(4,1fr);min-height:40px;display:grid}.series-strip img{aspect-ratio:1;object-fit:cover;filter:saturate(.7)contrast(1.02);width:100%;display:block}.series-card:not(.selected) .series-strip img{filter:saturate(.3)contrast(.95)}.series-title{font-family:var(--font-display);letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;padding:7px 10px 0;font-size:.92rem;overflow:hidden}.series-count{color:var(--ink-soft);align-items:center;gap:5px;padding:0 10px;font-size:.74rem;display:inline-flex}.series-view{top:calc((100cqw - 2 * var(--edge-w)) / 4 + 2 * var(--edge-w));right:var(--edge-w);bottom:var(--edge-w);border:none;border-left:1px solid var(--ink-faint);border-bottom-right-radius:calc(var(--radius) - var(--edge-w));width:84px;color:var(--ink-soft);cursor:pointer;opacity:0;background:0 0;justify-content:center;align-items:center;margin:0;padding:0;transition:opacity .12s,background-color .12s,border-color .12s,color .12s;display:inline-flex;position:absolute}.series-slot:hover .series-view,.series-view:focus-visible{opacity:1}.series-view:hover,.series-view:focus-visible{color:var(--gold);border-left-color:var(--gold)}:root[data-theme=dark] .series-view:hover,:root[data-theme=dark] .series-view:focus-visible{color:var(--ink);border-left-color:var(--ink-faint);background:#ffffff12}.series-slot .series-title{padding-right:94px}.series-check{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);border:2px solid var(--gold);background:#f4ecdae0;border-radius:3px;align-items:center;gap:3px;padding:1px 6px;font-size:.66rem;animation:.22s cubic-bezier(.2,1.6,.4,1) both stamp-in;display:inline-flex;position:absolute;top:6px;right:6px;transform:rotate(-6deg)}.series-total{color:var(--red-deep);margin-top:10px;font-size:.82rem}.series-total.ok{color:var(--ink-soft)}.hero{text-align:center;padding:clamp(22px,6vw,56px) 0 clamp(18px,4vw,40px)}.hero h1{font-family:var(--font-title);text-transform:uppercase;letter-spacing:.03em;border-bottom:4px solid;padding-bottom:8px;font-size:clamp(2.1rem,7vw,3.6rem);line-height:1.05;display:inline-block}.hero h1 .accent{color:var(--red)}.hero .tagline{text-transform:uppercase;letter-spacing:.32em;color:var(--ink-soft);margin-top:10px;font-size:.8rem}.join-fields{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.join-fields .field-row{flex:200px;margin-bottom:0}.join-fields .field-row.code{flex:0 220px}@media (width<=650px){.join-fields .btn{flex:1 0 100%}}.create-nickname{max-width:380px}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spread{justify-content:space-between}.stack{flex-direction:column;gap:14px;display:flex}.muted{color:var(--ink-soft)}.center{text-align:center}.spin{animation:1.1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.overlay{z-index:40;-webkit-backdrop-filter:blur(6px);background:#23252e59;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}:root[data-theme=dark] .overlay{background:#0505078c}.login-panel,.confirm-panel{width:min(92vw,420px);margin:0}.confirm-message{margin:6px 0 18px}.cast-board{max-width:760px}.lightbox-download{cursor:pointer;grid-column:3;justify-self:end;padding:5px 7px;text-decoration:none}.options-panel{width:min(94vw,560px);max-height:min(86vh,760px);overflow-y:auto}.font-choices{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.font-choice{text-align:left;border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper);cursor:pointer;flex-direction:column;gap:4px;padding:10px 12px;transition:transform .12s,box-shadow .12s,background-color .12s;display:flex}.font-choice:hover{box-shadow:var(--shadow-stamp);transform:translate(-1px,-1px)}.font-choice.selected{background:var(--paper-raised);outline:3px solid var(--gold);outline-offset:-3px}:root[data-theme=dark] .font-choice.selected{border-color:var(--gold);outline:none}.font-choice-head{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);justify-content:space-between;align-items:center;gap:8px;font-size:.86rem;display:flex}.font-choice.selected .font-choice-head{color:var(--gold)}.font-choice-sample{font-size:1.05rem;line-height:1.25}.font-choice[data-preset=bureau] .font-choice-sample{font-family:Special Elite,Courier New,monospace}.font-choice[data-preset=machine] .font-choice-sample{font-family:Courier Prime,Courier New,monospace}.font-choice[data-preset=dossier] .font-choice-sample{font-family:Zilla Slab,Georgia,serif}.font-choice[data-preset=moderne] .font-choice-sample{font-family:Archivo Variable,Trebuchet MS,sans-serif}.font-choice[data-preset=lisible] .font-choice-sample{font-family:Atkinson Hyperlegible,Trebuchet MS,sans-serif}.view-panel{flex-direction:column;width:min(94vw,900px);max-height:min(86vh,820px);margin:0;display:flex}.view-panel .char-grid{grid-auto-rows:max-content;min-height:0;padding-right:10px}.view-panel .char-name{cursor:default}.view-toolbar{flex-wrap:wrap;align-items:center}.char-pick{border:var(--edge-w) solid var(--edge);background:var(--paper-raised);width:24px;height:24px;color:var(--gold);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:6px;right:6px}.char-pick.picked{border-color:var(--gold)}.char-toggle{cursor:pointer;background:0 0;border:none;margin:0;padding:0;display:block}.lightbox-overlay{z-index:50;cursor:zoom-out;animation:.15s ease-out both backdrop-in}.lightbox-overlay.closing{animation:.12s ease-in both backdrop-out}@keyframes backdrop-in{0%{opacity:0}}@keyframes backdrop-out{to{opacity:0}}.lightbox{background:var(--paper-raised);border:var(--edge-w) solid var(--edge);border-radius:var(--radius);margin:0;padding:10px 10px 4px;animation:.22s ease-out both stamp-in}.lightbox img{max-width:min(512px,86vw);max-height:min(512px,72vh);display:block}.lightbox-row{align-items:stretch;display:flex}.lightbox-info{border-left:1px solid var(--ink-faint);flex-direction:column;gap:10px;width:220px;min-height:0;margin-left:12px;padding:6px 4px 6px 14px;display:flex}.lightbox-info h3{font-family:var(--font-display);letter-spacing:.05em;text-align:center;margin:0;font-size:1.05rem;font-weight:400}.lightbox-info-rule{border-bottom:1px solid var(--ink-faint)}.lightbox-tags{flex-wrap:wrap;flex:1;align-content:flex-start;gap:6px;display:flex;overflow-y:auto}@media (width<=640px){.lightbox-row{flex-direction:column}.lightbox-info{border-left:none;border-top:1px solid var(--ink-faint);width:auto;margin:10px 0 0;padding:10px 4px 0}}.lightbox figcaption{text-align:center;font-family:var(--font-display);letter-spacing:.05em;padding:7px 6px 3px;font-size:.95rem}.lightbox figcaption.with-action{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.lightbox figcaption.with-action .lightbox-name{text-overflow:ellipsis;white-space:nowrap;grid-column:2;min-width:0;overflow:hidden}.lightbox.closing{animation:.12s ease-in both stamp-out}@keyframes stamp-out{0%{opacity:1;transform:scale(1)rotate(.6deg)}to{opacity:0;transform:scale(.96)rotate(.6deg)}}.mfa-code{font-family:var(--font-display);letter-spacing:.35em;text-align:center}.user-menu{position:relative}.user-menu-list{z-index:30;background:var(--paper-raised);border:var(--edge-w) solid var(--edge);border-radius:var(--radius);min-width:220px;box-shadow:var(--shadow-stamp);gap:4px;padding:8px;display:grid;position:absolute;top:calc(100% + 6px);right:0}.user-menu-email{color:var(--ink-soft);overflow-wrap:anywhere;border-bottom:1px solid var(--ink-faint);padding:4px 6px;font-size:.82rem}.user-menu-item{justify-content:flex-start}.sync-indicator{position:relative}.sync-pill{border:1px solid var(--edge);color:var(--ink-soft);font-family:var(--font-body);white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:.8rem;display:inline-flex}.sync-pill:hover{border-color:var(--gold);color:var(--ink)}.sync-pill-offline{border-style:dashed}.sync-pill-pending,.sync-pill-syncing{border-color:var(--blue);color:var(--blue-deep)}.sync-pill-syncing svg{animation:1s linear infinite sync-spin}@keyframes sync-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.sync-pill-syncing svg{animation:none}}.sync-pill-synced{color:var(--green)}.sync-pill-badge{background:var(--red);min-width:1.2rem;height:1.2rem;color:var(--paper-raised);border-radius:999px;justify-content:center;align-items:center;padding:0 .3rem;font-size:.7rem;display:inline-flex}.sync-popover{z-index:30;background:var(--paper-raised);border:var(--edge-w) solid var(--edge);border-radius:var(--radius);width:min(22rem,100vw - 32px);box-shadow:var(--shadow-stamp);color:var(--ink);flex-direction:column;gap:8px;padding:10px 12px;font-size:.85rem;display:flex;position:absolute;top:calc(100% + 6px);right:0}.sync-popover p{margin:0}.sync-popover-actions{gap:8px;display:flex}.sync-popover .btn{padding:5px 10px;font-size:.78rem}.sync-notices{flex-direction:column;gap:4px;max-height:14rem;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.sync-notice{border-top:1px solid var(--ink-faint);flex-direction:column;padding-top:4px;font-size:.82rem;display:flex}.sync-notice-time{color:var(--ink-soft);font-size:.75rem}.sync-notice-rejected,.sync-notice-failing,.sync-notice-quota{color:var(--red)}.admin-tabs{gap:8px;margin:14px 0 18px;display:flex}.admin-series-card{cursor:default}.admin-series-open{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:2px;margin:0;padding:0;display:flex}.admin-series-card .series-strip img{filter:saturate(.7)contrast(1.02)}.admin-card-actions{opacity:0;gap:4px;transition:opacity .12s;display:flex;position:absolute;top:4px;right:4px}.admin-series-card:hover .admin-card-actions,.admin-card-actions:focus-within{opacity:1}.admin-card-actions .btn{background:var(--paper-raised)}.admin-series-name{font-size:1.3rem}.admin-prompt{resize:vertical;min-height:90px;font-family:var(--font-body)}.is-editing{cursor:default;align-items:center;gap:6px;display:flex}.is-editing svg{color:var(--gold);flex-shrink:0}.admin-series-name.is-editing{flex:1;min-width:0}.inline-edit{width:100%;min-width:0;color:inherit;font:inherit;letter-spacing:inherit;text-align:inherit;border:none;border-bottom:2px solid var(--gold);background:0 0;border-radius:0;outline:none;flex:1;margin:0;padding:0}.dropzone{text-align:center;outline:2px dashed var(--ink-faint);outline-offset:-10px;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:260px;transition:outline-color .12s,background-color .12s;display:flex}:root[data-theme=dark] .dropzone:not(.drag){outline-color:#e9e4d638}.dropzone.drag{outline-color:var(--gold);background:var(--paper-raised)}.upload-progress{flex-direction:column;align-self:stretch;align-items:flex-start;gap:8px;margin-top:14px;display:flex}.upload-progress-label{font-family:var(--font-display);letter-spacing:.04em;font-size:.88rem}.upload-progress-count{color:var(--ink-soft);font-size:.8rem}.progress{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper-sunken);width:100%;height:12px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--gold), var(--green));height:100%;transition:width .2s}.upload-files{flex-direction:column;gap:3px;width:100%;max-height:180px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.upload-file{color:var(--ink-soft);align-items:center;gap:8px;font-size:.82rem;display:flex}.upload-file.done{color:var(--green)}.upload-file.failed{color:var(--red)}.upload-dot{width:13px;height:13px;display:inline-block;position:relative}.upload-dot:after{content:"";background:var(--ink-faint);border-radius:50%;position:absolute;inset:4px}.upload-file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.upload-file-error{color:var(--red);margin-left:auto;font-size:.76rem}.char-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;margin-top:12px;display:grid}.char-card{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper);flex-direction:column;display:flex;position:relative;overflow:hidden}.char-card img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.char-card.selected{outline:3px solid var(--gold);outline-offset:-3px}.char-name{font-size:.82rem;font-family:var(--font-display);letter-spacing:.03em;text-align:center;cursor:text;text-overflow:ellipsis;white-space:nowrap;padding:6px 8px;overflow:hidden}.char-delete{background:var(--paper-raised);opacity:0;transition:opacity .12s;position:absolute;top:4px;right:4px}.char-card:hover .char-delete,.char-delete:focus-visible{opacity:1}.char-star{background:var(--paper-raised);opacity:0;transition:opacity .12s;position:absolute;top:4px;left:4px}.char-card:hover .char-star,.char-star:focus-visible,.char-star.active{opacity:1}.char-star.active{color:var(--gold)}.char-star.active svg{fill:currentColor}.char-select-mark{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:var(--paper-raised);width:22px;height:22px;color:var(--gold);justify-content:center;align-items:center;display:inline-flex;position:absolute;top:6px;left:6px}.admin-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.admin-list-row{border-bottom:1px solid var(--ink-faint);align-items:center;gap:12px;padding:8px 0;display:flex}.admin-list-row:last-child{border-bottom:none}.admin-list-email{overflow-wrap:anywhere;flex:1}.admin-status{color:var(--ink-soft);font-size:.78rem}.admin-status.ok{color:var(--green)}.mfa-setup{flex-wrap:wrap;align-items:flex-start;gap:16px;margin-top:10px;display:flex}.mfa-setup img{border:var(--edge-w) solid var(--edge);border-radius:var(--radius);background:#fff}.mfa-setup-fields{flex-direction:column;flex:1;gap:10px;min-width:220px;display:flex}.mfa-secret{overflow-wrap:anywhere;background:var(--paper-sunken);border:1px solid var(--ink-faint);border-radius:var(--radius);padding:6px 8px;font-size:.8rem}@media (width<=900px){.hero-legend{flex-direction:column;display:flex}.hero-legend h1{order:-1}.hero-legend-side.left,.hero-legend-side.right{justify-content:center}}@media (width<=720px){body{font-size:15px}.team-grid{grid-template-columns:1fr}.status-strip{padding:8px 10px}.btn{padding:9px 14px}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
