@font-face{font-family:Taccan Turkish Typewriter;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0131}@font-face{font-family:Taccan Turkish Typewriter;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");size-adjust:123%;unicode-range:U+0130}:root{--desk: #181210;--desk-dark: #0e0a08;--paper: #3a3228;--paper-light: #44392e;--paper-dark: #302820;--paper-warm: #3e3428;--ink: #e8dcc0;--ink-light: #d4c8a8;--ink-faded: #bca888;--ink-ghost: #9a8c74;--red: #b83838;--red-light: rgba(184, 56, 56, .16);--red-medium: rgba(184, 56, 56, .28);--red-stamp: #c84040;--red-glow: rgba(184, 56, 56, .28);--blue: #3868a0;--blue-light: rgba(56, 104, 160, .18);--blue-medium: rgba(56, 104, 160, .3);--blue-stamp: #4878b0;--blue-glow: rgba(56, 104, 160, .28);--neutral-color: #8a7e6a;--neutral-light: rgba(138, 126, 106, .14);--assassin-color: #1a1a1a;--assassin-light: rgba(20, 20, 20, .12);--assassin-bg: #201010;--accent: #c07040;--accent-light: rgba(192, 112, 64, .22);--accent-dim: rgba(192, 112, 64, .12);--focus-ring: #e8a850;--success: #50a040;--warning: #c09030;--danger: #c04040;--border: #6a5e4c;--border-dark: #584c3a;--border-light: #7a6e5a;--font-display: "Playfair Display SC", "Georgia", serif;--font-typewriter: "Taccan Turkish Typewriter", "Special Elite", "Courier New", monospace;--font-body: "Crimson Pro", "Georgia", serif;--radius-sm: 1px;--radius-md: 2px;--radius-lg: 3px;--radius-xl: 4px;--shadow-paper: 2px 3px 12px rgba(0,0,0,.22), 0 1px 3px rgba(0,0,0,.14);--shadow-card: 1px 1px 4px rgba(0,0,0,.18), 2px 2px 1px -1px rgba(0,0,0,.12);--shadow-elevated: 3px 4px 20px rgba(0,0,0,.28);--shadow-glow-red: 0 0 12px rgba(184,56,56,.25);--shadow-glow-blue: 0 0 12px rgba(56,104,160,.25);--bar-h: 52px;--sheet-radius: 8px;--sheet-shadow: 0 -4px 24px rgba(26,18,10,.35);--spring-ease: cubic-bezier(.34, 1.56, .64, 1);--spring-duration: .35s;--transition: .18s ease;--foxing: rgba(60, 46, 28, .15);--page-edge-dark: rgba(20, 16, 10, .5);--page-edge-burn: rgba(10, 8, 4, .6);--paper-grain-opacity: .08;--crease-color: rgba(40, 32, 20, .22);--body-stripe: rgba(10,8,6,.04);--body-vignette-a: rgba(30,22,14,.5);--body-vignette-b: rgba(20,16,10,.6);--body-grad-a: #1a140e;--body-grad-b: #14100c;--body-grad-c: #181410;--topbar-start: #8a7a5e;--topbar-mid: #7a6a4e;--topbar-end: #6e5e42;--topbar-border: #5a4a32;--statusbar-start: #6e5e42;--statusbar-mid: #5a4a32;--bottombar-start: #2e2620;--bottombar-mid: #262018;--bottombar-border: #3a3228;--btn-primary-bg: #8a7c60;--btn-primary-text: #14100c;--btn-primary-hover: #9a8c70;--btn-accent-hover: #d08048;--card-bg: #40362c;--card-text: #e8dcc0;--card-border: #5a4e40;--card-stripe: rgba(90,72,48,.05);--keycard-red-bg: rgba(184, 56, 56, .2);--keycard-red-border: rgba(184, 56, 56, .55);--keycard-red-shadow: rgba(184, 56, 56, .12);--keycard-red-text: #e08080;--keycard-blue-bg: rgba(56, 104, 160, .22);--keycard-blue-border: rgba(56, 104, 160, .55);--keycard-blue-shadow: rgba(56, 104, 160, .12);--keycard-blue-text: #80b0e0;--keycard-assassin-bg: rgba(30, 10, 10, .5);--keycard-assassin-border: rgba(160, 40, 40, .5);--keycard-assassin-shadow: rgba(30, 0, 0, .3);--keycard-assassin-text: #e06060;--revealed-red-start: #b05050;--revealed-red-end: #8a3838;--revealed-blue-start: #5888b8;--revealed-blue-end: #406890;--revealed-neutral-start: #b8b098;--revealed-neutral-end: #a09888;--revealed-assassin-start: #301818;--revealed-assassin-end: #140808;--revealed-assassin-border: #803030;--revealed-text: #fff;--revealed-neutral-text: #3a3020;--score-red-start: #c04040;--score-red-end: #e05050;--score-blue-start: #3868b0;--score-blue-end: #4888d0;--banner-text: rgba(232,220,192,.9);--banner-red: #f0a8a8;--banner-red-border: #d07070;--banner-blue: #a8c8f0;--banner-blue-border: #70a0d0;--banner-finished: #a8e098;--banner-finished-border: #70b858;--timer-label: rgba(232,220,192,.6);--timer-warn-border: #d8b848;--timer-warn-text: #e8c858;--timer-crit-border: #d06060;--timer-crit-text: #f08888;--tab-border: rgba(255,240,200,.25);--tab-bg: rgba(0,0,0,.22);--tab-text: rgba(232,220,192,.9);--tab-hover-bg: rgba(255,240,200,.18);--tab-hover-border: rgba(255,240,200,.4);--tab-hover-text: #f5ecd8;--tab-active-bg: rgba(255,240,200,.25);--tab-active-border: rgba(255,240,200,.45);--tab-active-shadow: rgba(255,240,200,.14);--tab-leave-border: rgba(192,64,64,.4);--tab-leave-text: rgba(240,160,160,.9);--tab-leave-hover-bg: rgba(192,64,64,.25);--tab-leave-hover-border: rgba(192,64,64,.55);--tab-leave-hover-text: #f0a8a8;--conn-text: rgba(232,220,192,.55);--conn-online-text: rgba(232,220,192,.75);--conn-online-dot: #60c048;--conn-online-glow: rgba(96,192,72,.5);--mode-tag-text: rgba(232,220,192,.85);--room-code-bg: rgba(0,0,0,.2);--room-code-border: rgba(255,240,200,.18);--overlay-bg: rgba(20,14,8,.82);--overlay-inset: rgba(255,240,200,.08);--backdrop-bg: rgba(20,14,8,.68);--marker-text: #e8dcc0;--marker-tentative-text: #bca888;--spy-select: rgba(192, 112, 64, .78);--spy-select-inner: rgba(192, 112, 64, .72);--spy-select-outer: rgba(192, 112, 64, .18);--spy-select-border: rgba(192, 112, 64, .6);--spy-select-highlight: rgba(232, 220, 192, .3);--fold-color: rgba(120,100,70,.22);--fold-color-strong: rgba(120,100,70,.38);--fold-color-v: rgba(120,100,70,.18);--fold-color-v-strong: rgba(120,100,70,.32);--fold-shadow: rgba(60,44,24,.1);--anim-accent: rgba(192,112,64,.15);--anim-highlight: rgba(192,112,64,.2);--danger-hover: rgba(192,64,64,.1);--success-tint: rgba(80,160,64,.18);--danger-tint: rgba(192,64,64,.18);--success-glow: rgba(96,192,72,.4);--voice-active-border: rgba(96,192,72,.4);--hover-tint: rgba(120,100,70,.1);--inset-glow: rgba(60,44,24,.15);--inset-glow-sm: rgba(60,44,24,.08);--stamp-neutral-x: rgba(180,160,120,.5);--stamp-white: rgba(255,255,255,.6);--stamp-assassin: rgba(255,100,100,.7)}html[data-theme=light]{--desk: #e8e0d4;--desk-dark: #d8d0c4;--paper: #f4efe6;--paper-light: #faf7f0;--paper-dark: #e8e2d6;--paper-warm: #f0e8da;--ink: #1e1810;--ink-light: #3a3020;--ink-faded: #5e5040;--ink-ghost: #8a7e6a;--red: #a83030;--red-light: rgba(168, 48, 48, .1);--red-medium: rgba(168, 48, 48, .18);--red-stamp: #b83838;--red-glow: rgba(168, 48, 48, .18);--blue: #1e4878;--blue-light: rgba(30, 72, 120, .1);--blue-medium: rgba(30, 72, 120, .18);--blue-stamp: #285888;--blue-glow: rgba(30, 72, 120, .18);--neutral-color: #7a7060;--neutral-light: rgba(122, 112, 96, .12);--assassin-color: #1a1a1a;--assassin-light: rgba(26, 26, 26, .08);--assassin-bg: #3a2020;--accent: #b86838;--accent-light: rgba(184, 104, 56, .15);--accent-dim: rgba(184, 104, 56, .08);--focus-ring: #6a3810;--success: #2a7a20;--warning: #a07818;--danger: #a83030;--border: #c8bca8;--border-dark: #b0a490;--border-light: #d8ceb8;--shadow-paper: 1px 2px 8px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);--shadow-card: 1px 2px 4px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);--shadow-elevated: 2px 3px 14px rgba(0,0,0,.14);--shadow-glow-red: 0 0 10px rgba(168,48,48,.18);--shadow-glow-blue: 0 0 10px rgba(30,72,120,.18);--sheet-shadow: 0 -4px 20px rgba(0,0,0,.1);--foxing: rgba(180, 160, 120, .1);--page-edge-dark: rgba(200, 190, 170, .25);--page-edge-burn: rgba(180, 170, 150, .18);--paper-grain-opacity: .03;--crease-color: rgba(160, 140, 110, .15);--body-stripe: rgba(180,170,150,.04);--body-vignette-a: rgba(200,190,170,.25);--body-vignette-b: rgba(190,180,160,.3);--body-grad-a: #efe8dc;--body-grad-b: #e8e0d4;--body-grad-c: #f0e8dc;--topbar-start: #c8b898;--topbar-mid: #b8a880;--topbar-end: #a89870;--topbar-border: #b0a080;--statusbar-start: #b8a880;--statusbar-mid: #a89870;--bottombar-start: #f0e8da;--bottombar-mid: #e8e0d0;--bottombar-border: #d0c4b0;--btn-primary-bg: #a89878;--btn-primary-text: #1e1810;--btn-primary-hover: #b8a888;--btn-accent-hover: #d07840;--card-bg: #f5f0e8;--card-text: #1a1408;--card-border: #b8a888;--card-stripe: rgba(140,120,90,.08);--keycard-red-bg: rgba(168, 48, 48, .1);--keycard-red-border: rgba(168, 48, 48, .35);--keycard-red-shadow: rgba(168, 48, 48, .06);--keycard-red-text: #a83030;--keycard-blue-bg: rgba(30, 72, 120, .1);--keycard-blue-border: rgba(30, 72, 120, .35);--keycard-blue-shadow: rgba(30, 72, 120, .06);--keycard-blue-text: #1e4878;--keycard-assassin-bg: rgba(26, 26, 26, .06);--keycard-assassin-border: rgba(26, 26, 26, .25);--keycard-assassin-shadow: rgba(26, 26, 26, .04);--keycard-assassin-text: #8a2020;--revealed-red-start: #c86060;--revealed-red-end: #a84040;--revealed-blue-start: #5080b8;--revealed-blue-end: #3868a0;--revealed-neutral-start: #c8c0a8;--revealed-neutral-end: #b8b098;--revealed-assassin-start: #4a2828;--revealed-assassin-end: #2a1010;--revealed-assassin-border: #8a3030;--revealed-text: #fff;--revealed-neutral-text: #3a3020;--score-red-start: #c04040;--score-red-end: #d85050;--score-blue-start: #3060a8;--score-blue-end: #4078c0;--banner-text: #3a3020;--banner-red: #a83030;--banner-red-border: #c06060;--banner-blue: #1e4878;--banner-blue-border: #5080b8;--banner-finished: #2a7a20;--banner-finished-border: #60a850;--timer-label: #8a7e6a;--timer-warn-border: #c8a840;--timer-warn-text: #907018;--timer-crit-border: #c06060;--timer-crit-text: #a83030;--tab-border: rgba(100,80,50,.25);--tab-bg: rgba(255,255,255,.45);--tab-text: #3a3020;--tab-hover-bg: rgba(255,255,255,.65);--tab-hover-border: rgba(100,80,50,.4);--tab-hover-text: #1e1810;--tab-active-bg: rgba(255,255,255,.7);--tab-active-border: rgba(100,80,50,.5);--tab-active-shadow: rgba(0,0,0,.06);--tab-leave-border: rgba(168,48,48,.3);--tab-leave-text: #a83030;--tab-leave-hover-bg: rgba(168,48,48,.08);--tab-leave-hover-border: rgba(168,48,48,.4);--tab-leave-hover-text: #c04040;--conn-text: #8a7e6a;--conn-online-text: #5e5040;--conn-online-dot: #2a8a18;--conn-online-glow: rgba(42,138,24,.4);--mode-tag-text: #5e5040;--room-code-bg: rgba(0,0,0,.05);--room-code-border: rgba(100,80,50,.2);--overlay-bg: rgba(180,170,150,.75);--overlay-inset: rgba(0,0,0,.04);--backdrop-bg: rgba(180,170,150,.65);--marker-text: #fff;--marker-tentative-text: #5e5040;--spy-select: rgba(184, 104, 56, .65);--spy-select-inner: rgba(184, 104, 56, .55);--spy-select-outer: rgba(184, 104, 56, .14);--spy-select-border: rgba(184, 104, 56, .5);--spy-select-highlight: rgba(60, 50, 30, .15);--fold-color: rgba(160,140,110,.2);--fold-color-strong: rgba(160,140,110,.35);--fold-color-v: rgba(160,140,110,.15);--fold-color-v-strong: rgba(160,140,110,.3);--fold-shadow: rgba(120,100,70,.08);--anim-accent: rgba(184,104,56,.12);--anim-highlight: rgba(184,104,56,.15);--danger-hover: rgba(168,48,48,.08);--success-tint: rgba(42,122,32,.12);--danger-tint: rgba(168,48,48,.12);--success-glow: rgba(42,138,24,.35);--voice-active-border: rgba(42,138,24,.4);--hover-tint: rgba(160,140,110,.1);--inset-glow: rgba(0,0,0,.05);--inset-glow-sm: rgba(0,0,0,.03);--stamp-neutral-x: rgba(60,50,30,.4);--stamp-white: rgba(255,255,255,.75);--stamp-assassin: rgba(200,40,40,.7)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-body);font-size:16px;line-height:1.55;color:var(--ink);background:var(--desk);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100dvh;overflow-x:hidden;background:repeating-linear-gradient(2deg,transparent 0px,transparent 2px,var(--body-stripe) 2px,var(--body-stripe) 3px),radial-gradient(ellipse at 30% 20%,var(--body-vignette-a) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,var(--body-vignette-b) 0%,transparent 50%),linear-gradient(160deg,var(--body-grad-a),var(--body-grad-b),var(--body-grad-c))}button{cursor:pointer;font:inherit}input,textarea{font:inherit}ul{list-style:none}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}button:focus-visible,.card:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.hidden{display:none!important}.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}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 16px;border:1px solid var(--border-dark);border-radius:var(--radius-md);background:var(--paper-dark);color:var(--ink);font-family:var(--font-typewriter);font-size:.88rem;white-space:nowrap;transition:all var(--transition);-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:.04em}.btn:hover{background:var(--paper-warm);border-color:var(--ink-faded)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-loading{pointer-events:none;animation:btn-loading-pulse 1s ease-in-out infinite}@keyframes btn-loading-pulse{0%,to{opacity:.6}50%{opacity:.35}}.btn-primary{background:var(--btn-primary-bg);border-color:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover{background:var(--btn-primary-hover);border-color:var(--btn-primary-hover)}.btn-secondary{background:transparent;border-color:var(--ink-faded);color:var(--ink)}.btn-secondary:hover{background:var(--accent-dim)}.btn-accent{background:var(--accent);border-color:var(--accent);color:var(--paper-light)}.btn-accent:hover{background:var(--btn-accent-hover);border-color:var(--btn-accent-hover)}.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-faded)}.btn-ghost:hover{color:var(--ink);background:var(--paper-warm);border-color:var(--border-light)}.btn-danger{color:var(--danger);border-color:transparent;background:transparent}.btn-danger:hover{background:var(--danger-hover)}.btn-lg{padding:11px 24px;font-size:.95rem}.btn-sm{padding:5px 11px;font-size:.82rem}.btn.active{background:var(--accent);border-color:var(--accent);color:var(--paper-light)}.btn-team{background:transparent;font-size:.85rem;padding:5px 12px;width:100%;min-height:32px}.btn-team.red{border-color:var(--red);color:var(--red)}.btn-team.red:hover{background:var(--red-light)}.btn-team.red.active{background:var(--red);color:var(--paper-light)}.btn-team.blue{border-color:var(--blue);color:var(--blue)}.btn-team.blue:hover{background:var(--blue-light)}.btn-team.blue.active{background:var(--blue);color:var(--paper-light)}.btn-role{background:transparent;border-color:var(--border);font-size:.78rem;padding:4px 10px;color:var(--ink-faded)}.btn-role.red{border-color:var(--red);color:var(--red)}.btn-role.red:hover{background:var(--red-light)}.btn-role.red.active{background:var(--red);color:var(--paper-light)}.btn-role.blue{border-color:var(--blue);color:var(--blue)}.btn-role.blue:hover{background:var(--blue-light)}.btn-role.blue.active{background:var(--blue);color:var(--paper-light)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ink-faded);transition:all var(--transition)}.icon-btn:hover{background:var(--paper-warm);color:var(--ink);border-color:var(--border-light)}.icon-btn-danger:hover{color:var(--danger);background:var(--danger-hover)}input[type=text],input[type=number],input[type=url],textarea{width:100%;padding:8px 2px;background:transparent;border:none;border-bottom:1px solid var(--border-dark);border-radius:0;color:var(--ink);font-family:var(--font-typewriter);font-size:.95rem;transition:border-color var(--transition);outline:none}input:focus,textarea:focus{border-bottom-color:var(--ink)}input::placeholder,textarea::placeholder{color:var(--ink-ghost);font-style:italic;font-family:var(--font-body)}input[type=number]{width:56px;text-align:center;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.number-stepper{display:inline-flex;align-items:stretch;border:1px solid var(--border-dark);background:transparent}.number-stepper input[type=number]{border:none;width:36px;padding:4px 0;font-size:.95rem}.number-stepper input[type=number]:focus{border:none}.stepper-btn{display:flex;align-items:center;justify-content:center;width:28px;border:none;background:var(--paper-dark);color:var(--ink-faded);font-size:1rem;font-family:var(--font-typewriter);cursor:pointer;transition:all var(--transition);-webkit-user-select:none;user-select:none;padding:0;line-height:1}.stepper-btn:hover{background:var(--paper-warm);color:var(--ink)}.stepper-btn:active{transform:scale(.92)}.stepper-btn-down{border-right:1px solid var(--border)}.stepper-btn-up{border-left:1px solid var(--border)}.input-sm{padding:5px 2px;font-size:.78rem}.code-field{text-transform:uppercase;font-weight:400;letter-spacing:.2em;font-size:1.1rem;text-align:center}.join-screen{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:24px;animation:join-fade-in .7s ease-out}@keyframes join-fade-in{0%{opacity:0;transform:translateY(8px) rotate(-.3deg)}to{opacity:1;transform:translateY(0) rotate(0)}}.join-card{position:relative;width:100%;max-width:420px;background:radial-gradient(circle at 15% 25%,var(--foxing) 0%,transparent 8%),radial-gradient(circle at 82% 18%,var(--foxing) 0%,transparent 6%),radial-gradient(circle at 70% 75%,var(--foxing) 0%,transparent 10%),radial-gradient(circle at 25% 85%,var(--foxing) 0%,transparent 7%),linear-gradient(175deg,var(--paper-light) 0%,var(--paper) 40%,var(--paper-dark) 100%);border:1px solid var(--border-dark);padding:44px 36px 30px;box-shadow:var(--shadow-elevated),inset 0 0 30px var(--inset-glow);overflow:hidden}.fold-line{position:absolute;pointer-events:none;z-index:1}.fold-line-h{top:50%;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,var(--fold-color) 20%,var(--fold-color-strong) 50%,var(--fold-color) 80%,transparent 100%);box-shadow:0 1px 2px var(--fold-shadow)}.fold-line-v{left:50%;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent 0%,var(--fold-color-v) 30%,var(--fold-color-v-strong) 50%,var(--fold-color-v) 70%,transparent 100%);box-shadow:1px 0 2px var(--fold-shadow)}.dossier-stamp{position:absolute;top:22px;right:-12px;font-family:var(--font-display);font-size:.8rem;font-weight:900;letter-spacing:.18em;color:var(--red);border:2.5px solid var(--red);padding:3px 14px;transform:rotate(12deg);opacity:.45;pointer-events:none;z-index:2}.document-number{font-family:var(--font-typewriter);font-size:.75rem;color:var(--ink-ghost);letter-spacing:.1em;margin-bottom:8px}.join-header{text-align:center;margin-bottom:28px;position:relative;z-index:2}.logo-title{font-family:var(--font-display);font-size:2.2rem;font-weight:900;letter-spacing:.15em;color:var(--ink);line-height:1;margin-bottom:8px}.logo-rule{width:60%;height:2px;margin:0 auto 14px;background:linear-gradient(90deg,transparent,var(--border-dark) 20%,var(--ink-faded) 50%,var(--border-dark) 80%,transparent)}.join-subtitle{font-family:var(--font-body);color:var(--ink-light);font-size:.95rem;font-style:italic;min-height:2.8em}.join-form{display:flex;flex-direction:column;gap:20px;position:relative;z-index:2}.field-group{display:flex;flex-direction:column;gap:4px}.field-label{font-family:var(--font-typewriter);font-size:.78rem;color:var(--ink-faded);text-transform:uppercase;letter-spacing:.1em}.join-row{display:flex;gap:10px;align-items:flex-end}.join-row input{flex:1}.join-actions{margin-top:6px}.join-actions .btn{width:100%}.join-note{font-family:var(--font-body);font-size:.85rem;color:var(--ink-ghost);text-align:center;line-height:1.4;font-style:italic;min-height:2.4em}.join-footer{margin-top:22px;padding-top:14px;border-top:1px solid var(--border-light);display:flex;justify-content:center;position:relative;z-index:2}.language-switch{display:flex;gap:4px}.lang-btn{padding:5px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--ink-ghost);font-family:var(--font-typewriter);font-size:.82rem;transition:all var(--transition)}.lang-btn:hover{color:var(--ink);border-color:var(--border-dark)}.lang-btn.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.room-screen{display:flex;flex-direction:column;height:100dvh;overflow:hidden;background:linear-gradient(175deg,var(--paper-light) 0%,var(--paper) 50%,var(--paper-dark) 100%);color:var(--ink)}.top-bar{padding:4px 12px;background:linear-gradient(90deg,var(--topbar-start) 0%,var(--topbar-mid) 50%,var(--topbar-end) 100%);border-bottom:2px solid var(--topbar-border);flex-shrink:0;z-index:10}.bottom-bar-status{display:flex;align-items:center;justify-content:center;gap:8px;padding:6px 10px;flex-shrink:0;background:linear-gradient(90deg,var(--statusbar-start) 0%,var(--statusbar-mid) 50%,var(--statusbar-start) 100%)}.bottom-bar{background:linear-gradient(90deg,var(--bottombar-start) 0%,var(--bottombar-mid) 50%,var(--bottombar-start) 100%);border-top:2px solid var(--bottombar-border);flex-shrink:0;z-index:10;padding:6px 10px}.score-bar{display:flex;width:100%;height:6px;border-radius:3px;overflow:hidden;background:var(--tab-bg);border:1px solid var(--border-dark)}.score-bar-red{background:linear-gradient(90deg,var(--score-red-start),var(--score-red-end));width:0%;transition:width .4s ease;border-radius:3px 0 0 3px}.score-bar-gap{flex:1}.score-bar-blue{background:linear-gradient(270deg,var(--score-blue-start),var(--score-blue-end));width:0%;transition:width .4s ease;border-radius:0 3px 3px 0}.turn-banner{font-family:var(--font-typewriter);font-size:.82rem;padding:2px 10px;transition:all .3s ease;color:var(--banner-text);line-height:1.3}.turn-banner.red{color:var(--banner-red);border-bottom:2px solid var(--banner-red-border)}.turn-banner.blue{color:var(--banner-blue);border-bottom:2px solid var(--banner-blue-border)}.turn-banner.finished{color:var(--banner-finished);border-bottom:2px solid var(--banner-finished-border)}.phase-timer{display:flex;align-items:center;gap:5px;padding:2px 8px;border:1px solid var(--room-code-border);background:var(--tab-bg);flex-shrink:0}.timer-label{font-family:var(--font-typewriter);font-size:.68rem;color:var(--timer-label);text-transform:uppercase}.timer-value{font-family:var(--font-typewriter);font-size:.88rem;color:var(--paper-light)}.phase-timer.warning-10{border-color:var(--timer-warn-border)}.phase-timer.warning-10 .timer-value{color:var(--timer-warn-text)}.phase-timer.warning-5{border-color:var(--timer-crit-border);animation:timer-pulse-critical .5s ease-in-out infinite}.phase-timer.warning-5 .timer-value{color:var(--timer-crit-text)}@keyframes timer-pulse-critical{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.05)}}.bar-tabs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.bar-tabs-center{display:flex;gap:4px;justify-content:center}.bar-tabs-right{display:flex;justify-content:flex-end;gap:6px}.bar-tab{position:relative;display:flex;align-items:center;justify-content:center;gap:5px;padding:8px 16px;border:1px solid var(--tab-border);border-radius:4px;background:var(--tab-bg);color:var(--tab-text);font-family:var(--font-typewriter);font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;transition:all var(--transition);cursor:pointer;white-space:nowrap}.bar-tab:hover{background:var(--tab-hover-bg);border-color:var(--tab-hover-border);color:var(--tab-hover-text)}.bar-tab.active{background:var(--tab-active-bg);border-color:var(--tab-active-border);color:var(--tab-hover-text);box-shadow:0 0 8px var(--tab-active-shadow)}.bar-tab-icon{font-size:.95rem;line-height:1}.bar-tab-label{font-size:inherit;letter-spacing:inherit}.chat-badge{position:absolute;top:2px;right:2px;min-width:14px;height:14px;padding:0 3px;border-radius:7px;background:var(--danger);color:#fff;font-family:var(--font-body);font-size:.55rem;font-weight:700;line-height:14px;text-align:center;pointer-events:none}.bar-tab-leave{border-color:var(--tab-leave-border);color:var(--tab-leave-text)}.bar-tab-leave:hover{background:var(--tab-leave-hover-bg);border-color:var(--tab-leave-hover-border);color:var(--tab-leave-hover-text)}.voice-dropdown{display:flex;position:relative}.bar-tab-voice.in-voice{border-color:var(--voice-active-border);color:var(--conn-online-dot)}.voice-dropdown-menu{display:none;position:absolute;bottom:100%;right:0;min-width:160px;padding:8px 8px 12px;background:var(--paper-dark);border:1px solid var(--border);box-shadow:var(--shadow-elevated);flex-direction:column;gap:4px;z-index:20}.voice-dropdown.voice-active:hover .voice-dropdown-menu,.voice-dropdown.open .voice-dropdown-menu{display:flex}.voice-dropdown-menu .voice-peer-list{margin-top:4px}.bar-util{display:flex;align-items:center;gap:6px;flex-shrink:0}.room-code-val{font-family:var(--font-typewriter);font-size:.72rem;letter-spacing:.15em;color:var(--tab-text);background:var(--room-code-bg);padding:3px 8px;border:1px solid var(--room-code-border);line-height:1.3;cursor:pointer;transition:background var(--transition)}.room-code-val:hover{background:var(--tab-bg)}.mode-tag{font-family:var(--font-typewriter);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border:1px solid var(--room-code-border);background:var(--room-code-bg);color:var(--mode-tag-text);line-height:1.3}.mode-tag.blitz{border-color:var(--warning);color:var(--warning)}.conn-status{display:flex;align-items:center;gap:4px;flex-shrink:0}.conn-dot{width:6px;height:6px;border-radius:50%;background:var(--danger);flex-shrink:0}.conn-text{font-family:var(--font-typewriter);font-size:.58rem;text-transform:uppercase;letter-spacing:.04em;color:var(--conn-text)}.conn-status.online .conn-dot{background:var(--conn-online-dot);box-shadow:0 0 4px var(--conn-online-glow)}.conn-status.online .conn-text{color:var(--conn-online-text)}.team-panel{background:linear-gradient(175deg,var(--paper-light) 0%,var(--paper) 100%);border:1px solid var(--border);padding:10px;display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden;box-shadow:inset 0 0 12px var(--inset-glow-sm)}.team-panel.team-red:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--red)}.team-panel.team-blue:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--blue)}.team-head{display:flex;align-items:center;gap:7px}.team-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.team-dot.red{background:var(--red)}.team-dot.blue{background:var(--blue)}.team-head h3{font-family:var(--font-display);font-size:.88rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;flex:1}.team-red .team-head h3{color:var(--red)}.team-blue .team-head h3{color:var(--blue)}.team-score{font-family:var(--font-typewriter);font-size:.9rem;color:var(--ink-faded)}.player-list{display:flex;flex-direction:column;gap:3px;min-height:20px;max-height:120px;overflow-y:auto;order:2}.team-player-item{display:flex;align-items:center;gap:7px;padding:4px 6px;border-radius:var(--radius-sm);transition:background var(--transition)}.team-player-item:hover{background:var(--hover-tint)}.player-avatar{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.55rem;font-family:var(--font-typewriter);color:var(--paper-light);flex-shrink:0;text-transform:uppercase}.team-player-info{flex:1;min-width:0}.team-player-name{font-family:var(--font-body);font-size:.88rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-meta{display:flex;flex-wrap:wrap;gap:3px;margin-top:1px}.tag{font-family:var(--font-typewriter);font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;padding:0 4px;border:1px solid var(--border-light);background:var(--paper);color:var(--ink-ghost)}.tag.host{color:var(--accent);border-color:var(--accent);background:var(--accent-light)}.tag.offline{color:var(--danger);border-color:var(--danger-tint);background:var(--danger-hover)}.tag.thinking{color:var(--accent);animation:thinking-pulse 1.2s ease-in-out infinite}@keyframes thinking-pulse{0%,to{opacity:1}50%{opacity:.3}}.team-empty{font-family:var(--font-body);font-size:.82rem;color:var(--ink-ghost);padding:6px;text-align:center;font-style:italic}.team-actions{display:flex;flex-direction:column;gap:5px;order:1}.role-row{display:flex;gap:3px}.role-row .btn{flex:1}.sidebar-actions{display:flex;flex-direction:column;gap:6px;margin-top:auto;padding-top:10px}.game-stage{display:flex;flex-direction:column;align-items:stretch;justify-content:center;padding:10px 16px;flex:1;min-height:0;gap:10px;background:radial-gradient(ellipse at 50% 50%,transparent 55%,var(--page-edge-dark) 100%),linear-gradient(175deg,var(--paper-light) 0%,var(--paper-warm) 50%,var(--paper-dark) 100%);position:relative}.stage-layout{display:flex;gap:12px;max-width:1120px;margin:0 auto;width:100%;flex:1;min-height:0}.controls-strip{width:340px;flex-shrink:0;position:relative;z-index:1;display:flex;flex-direction:column;gap:6px;min-height:0;overflow:hidden}.inline-feed{flex:1;min-height:0;display:flex;flex-direction:column;border:1px solid var(--border-dark);border-radius:var(--radius-lg);background:var(--paper-dark);overflow:hidden}.inline-feed-entries{flex:1;overflow-y:auto;padding:8px 10px;display:flex;flex-direction:column;gap:3px;font-size:.78rem}.inline-feed-form{display:flex;gap:4px;padding:6px 8px;border-top:1px solid var(--border-dark)}.inline-feed-form input{flex:1;background:var(--paper);border:1px solid var(--border-dark);border-radius:var(--radius-md);padding:4px 8px;font-family:var(--font-typewriter);font-size:.78rem;color:var(--ink)}.ctrl-placeholder{border:1px dashed var(--border-light);padding:16px;text-align:center;font-family:var(--font-typewriter);font-size:.8rem;color:var(--ink-ghost);opacity:.6;min-height:60px;display:flex;align-items:center;justify-content:center}.ctrl-panel{background:linear-gradient(175deg,var(--paper-light) 0%,var(--paper) 100%);border:1px solid var(--border);padding:12px 16px;animation:ctrl-slide-in .25s ease-out;position:relative}.ctrl-panel{transition:opacity .2s ease}.ctrl-panel.locked{opacity:.4;pointer-events:none}.ctrl-panel:before{content:"";position:absolute;top:-1px;left:8px;right:8px;height:3px;background:repeating-linear-gradient(90deg,var(--paper-dark) 0 2px,transparent 2px 4px,var(--border) 4px 5px,transparent 5px 8px);opacity:.7}@keyframes ctrl-slide-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ctrl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ctrl-head h3{font-family:var(--font-display);font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faded)}.ctrl-status{font-family:var(--font-body);font-size:.85rem;color:var(--ink-ghost);margin-bottom:6px;font-style:italic;min-height:1.3em;line-height:1.4}.hint-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}.hint-form input[type=text]{flex:1 1 100%}.hint-form input[type=number]{width:52px}.hint-display-bar{font-family:var(--font-typewriter);font-size:clamp(.92rem,1rem + .35vw,1.15rem);text-align:center;color:var(--ink);padding:6px 0;line-height:1.3;letter-spacing:.04em;text-transform:uppercase;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.guess-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.selected-label{flex:1 1 100%;font-family:var(--font-body);font-size:.9rem;color:var(--ink-faded);font-style:italic}.result-text{font-family:var(--font-body);font-size:.95rem;color:var(--ink-light);margin-bottom:8px}.result-actions{display:flex;flex-wrap:wrap;gap:6px}.mvp-section{margin-top:8px}.board-area{flex:1;min-width:0;display:flex;justify-content:center;position:relative;z-index:1}.board-wrap{max-width:740px;width:100%;min-height:0;position:relative}.board{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;width:100%;perspective:900px}.card{position:relative;aspect-ratio:1.45;border:1px solid var(--card-border);background:repeating-linear-gradient(0deg,transparent 0px,transparent 2px,var(--card-stripe) 2px,var(--card-stripe) 3px),var(--card-bg);color:var(--card-text);cursor:default;overflow:hidden;transition:border-color .2s,box-shadow .2s,transform .2s;outline:none;transform-style:preserve-3d;box-shadow:var(--shadow-card)}.card-inner{width:100%;height:100%;transition:none;transform-style:flat;position:relative}.card-front{position:absolute;inset:0;backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px}.card-word{font-family:var(--font-typewriter);font-size:clamp(.6rem,1.5vw,.92rem);text-transform:uppercase;letter-spacing:.03em;text-align:center;word-break:break-word;line-height:1.2;color:var(--card-text)}.card-stamp-slot{position:absolute;top:3px;right:3px;width:22px;height:22px;opacity:.7}.card-stamp-slot svg{width:100%;height:100%}.card-markers{position:absolute;bottom:2px;left:2px;right:2px;display:flex;flex-wrap:wrap;gap:1px;justify-content:center;max-height:32px;overflow:hidden}.card-marker{font-family:var(--font-typewriter);font-size:.52rem;padding:0 3px;line-height:1.4;color:var(--marker-text)}.card-marker.red{background:var(--red)}.card-marker.blue{background:var(--blue)}.card-marker.neutral{background:var(--neutral-color)}.card-marker.tentative{opacity:.6;border:1px dashed currentColor;background:transparent;color:var(--marker-tentative-text)}.card.clickable{cursor:pointer;border-color:var(--card-border)}.card.clickable:hover{border-color:var(--accent);box-shadow:var(--shadow-elevated),0 0 6px var(--accent-dim);transform:translateY(-1px)}.card.clickable:active{transform:translateY(0) scale(.98)}.card.keycard.red{background:var(--keycard-red-bg);border:1.5px solid var(--keycard-red-border);box-shadow:inset 0 0 8px var(--keycard-red-shadow)}.card.keycard.red .card-word{color:var(--keycard-red-text)}.card.keycard.blue{background:var(--keycard-blue-bg);border:1.5px solid var(--keycard-blue-border);box-shadow:inset 0 0 8px var(--keycard-blue-shadow)}.card.keycard.blue .card-word{color:var(--keycard-blue-text)}.card.keycard.neutral{background:var(--card-bg);border:1.5px solid var(--border)}.card.keycard.assassin{background:var(--keycard-assassin-bg);border:2px solid var(--keycard-assassin-border);box-shadow:inset 0 0 8px var(--keycard-assassin-shadow)}.card.keycard.assassin .card-word{color:var(--keycard-assassin-text);font-weight:700}.card.revealed .card-inner{transform:none}.card.revealed.red{background:linear-gradient(145deg,var(--revealed-red-start),var(--revealed-red-end));border:2px solid var(--red);box-shadow:var(--shadow-glow-red)}.card.revealed.blue{background:linear-gradient(145deg,var(--revealed-blue-start),var(--revealed-blue-end));border:2px solid var(--blue);box-shadow:var(--shadow-glow-blue)}.card.revealed.neutral{background:linear-gradient(145deg,var(--revealed-neutral-start),var(--revealed-neutral-end));border:2px solid var(--neutral-color)}.card.revealed.assassin{background:linear-gradient(145deg,var(--revealed-assassin-start),var(--revealed-assassin-end));border:2px solid var(--revealed-assassin-border);box-shadow:var(--shadow-glow-red)}.card.revealed .card-word{color:var(--revealed-text);text-shadow:0 1px 2px rgba(0,0,0,.3);font-size:clamp(.55rem,1.4vw,.85rem)}.card.revealed.neutral .card-word{color:var(--revealed-neutral-text);text-shadow:none}.card.finished-reveal{border-style:dashed;opacity:.55}.card.finished-reveal.red{background:var(--red-light);border-color:var(--red)}.card.finished-reveal.blue{background:var(--blue-light);border-color:var(--blue)}.card.finished-reveal.neutral{background:var(--neutral-light);border-color:var(--neutral-color)}.card.finished-reveal.assassin{background:var(--assassin-light);border-color:var(--assassin-color)}.card.selected-for-guess:after{content:"";position:absolute;top:3px;right:3px;width:10px;height:10px;border-radius:50%;background:var(--warning);z-index:2}.card.spymaster-selected{outline:2px solid var(--spy-select);outline-offset:-2px;box-shadow:inset 0 0 0 1px var(--spy-select-inner),0 0 0 2px var(--spy-select-outer),2px 2px 8px #0000001f}.card.spymaster-selected:before{content:"";position:absolute;inset:3px;border:2px solid var(--spy-select-border);box-shadow:inset 0 0 0 1px var(--spy-select-highlight);pointer-events:none;z-index:2}.card.spymaster-selected.clickable:hover,.card.spymaster-selected.clickable:focus-visible{border-color:var(--spy-select);outline:2px solid var(--spy-select);outline-offset:-2px;box-shadow:inset 0 0 0 1px var(--spy-select-inner),0 0 0 2px var(--spy-select-outer),2px 2px 8px #0000001f;transform:translateY(-1px)}.card.placeholder .card-word{opacity:0}.card-stamp{display:inline-block}.stamp-red-bird svg path{fill:var(--stamp-white)}.stamp-blue-bird svg path{fill:var(--stamp-white)}.stamp-assassin-bird svg path{fill:var(--stamp-assassin)}.stamp-neutral-x:before{content:"×";font-size:1.1rem;font-weight:900;color:var(--stamp-neutral-x)}.colorblind-mode .card.revealed.red:after,.colorblind-mode .card.keycard.red:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(0,0,0,.1) 4px,rgba(0,0,0,.1) 6px);pointer-events:none}.colorblind-mode .card.revealed.blue:after,.colorblind-mode .card.keycard.blue:after{content:"";position:absolute;inset:0;background:radial-gradient(circle 2px,rgba(0,0,0,.12) 1px,transparent 1px);background-size:8px 8px;pointer-events:none}.colorblind-mode .card.revealed.neutral:after,.colorblind-mode .card.keycard.neutral:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,transparent 48%,rgba(0,0,0,.08) 48%,rgba(0,0,0,.08) 52%,transparent 52%),linear-gradient(90deg,transparent 48%,rgba(0,0,0,.08) 48%,rgba(0,0,0,.08) 52%,transparent 52%);background-size:10px 10px;pointer-events:none}.feed-entries{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:4px;min-height:0;padding-bottom:4px}.feed-item{font-family:var(--font-body);font-size:.82rem;line-height:1.4;word-break:break-word;padding:3px 0}.feed-chat{display:flex;gap:6px}.feed-name{font-weight:600;color:var(--ink-faded);flex-shrink:0}.feed-name.red{color:var(--red)}.feed-name.blue{color:var(--blue)}.feed-text{color:var(--ink)}.feed-hint{font-family:var(--font-typewriter);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 8px;border-left:3px solid var(--border)}.feed-hint.red{border-left-color:var(--red);color:var(--red)}.feed-hint.blue{border-left-color:var(--blue);color:var(--blue)}.feed-guess{font-family:var(--font-typewriter);font-size:.75rem;color:var(--ink-faded);padding-left:12px;border-left:2px solid var(--border-light)}.feed-guess.red{border-left-color:var(--red-stamp)}.feed-guess.blue{border-left-color:var(--blue-stamp)}.feed-turnend,.feed-gameend{font-family:var(--font-typewriter);font-size:.72rem;color:var(--ink-ghost);text-transform:uppercase;letter-spacing:.06em;padding:6px 0;border-top:1px dashed var(--border-light);margin-top:2px}.feed-gameend{color:var(--accent);font-weight:700}.chat-form{display:flex;gap:4px;margin-top:6px;flex-shrink:0}.chat-form input{flex:1;min-width:0;font-size:.82rem;padding:6px 8px;background:var(--paper);border:1px solid var(--border);color:var(--ink);font-family:var(--font-body)}.chat-form button{flex-shrink:0}.settings-block{padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--border-light)}.settings-block:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.settings-label{display:block;font-family:var(--font-typewriter);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-ghost);margin-bottom:6px}.room-meta{display:flex;align-items:center;gap:8px;justify-content:center}.qr-wrap svg{border-radius:var(--radius-sm);width:120px;height:120px}.seal-wrap svg{opacity:.5;width:64px;height:64px}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:3px}.mode-btn{padding:6px 8px;border:1px solid var(--border);border-radius:0;background:transparent;color:var(--ink-faded);font-family:var(--font-typewriter);font-size:.78rem;transition:all var(--transition)}.mode-btn:hover{border-color:var(--border-dark);color:var(--ink)}.mode-btn.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.mode-btn:disabled{opacity:.5;cursor:not-allowed}.blitz-config{display:flex;gap:10px;margin-top:6px}.blitz-field{display:flex;align-items:center;gap:4px;font-family:var(--font-typewriter);font-size:.78rem;color:var(--ink-faded)}.blitz-field input{width:52px;text-align:center}.mode-note{font-family:var(--font-body);font-size:.78rem;color:var(--ink-ghost);margin-top:5px;line-height:1.4;font-style:italic;min-height:2em}.toggle-row{display:flex;gap:3px}.toggle-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:6px 8px;border:1px solid var(--border);border-radius:0;background:transparent;color:var(--ink-ghost);font-family:var(--font-typewriter);font-size:.78rem;transition:all var(--transition)}.toggle-btn:hover{color:var(--ink);border-color:var(--border-dark)}.toggle-btn.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.pack-row{display:flex;gap:4px;align-items:flex-end}.pack-row input{flex:1}.toast{position:fixed;top:calc(48px + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%) translateY(0);padding:10px 24px;background:var(--paper);border:1px solid var(--border-dark);color:var(--ink);font-family:var(--font-typewriter);font-size:.9rem;box-shadow:var(--shadow-elevated),inset 0 0 8px var(--inset-glow-sm);z-index:100;animation:toast-in .25s ease-out;max-width:90vw;text-align:center}.toast.toast-success{border-left:3px solid var(--success)}.toast.toast-error{border-left:3px solid var(--danger)}.toast.toast-info{border-left:3px solid var(--blue)}.toast.hidden{display:none!important}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:var(--overlay-bg);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:overlay-in .2s ease-out}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.overlay-panel{position:relative;width:90%;max-width:620px;max-height:80vh;overflow-y:auto;background:radial-gradient(circle at 20% 30%,var(--foxing) 0%,transparent 8%),radial-gradient(circle at 75% 20%,var(--foxing) 0%,transparent 6%),radial-gradient(circle at 80% 70%,var(--foxing) 0%,transparent 7%),linear-gradient(175deg,var(--paper-light) 0%,var(--paper) 50%,var(--paper-dark) 100%);border:1px solid var(--border);padding:32px;padding-bottom:calc(32px + env(safe-area-inset-bottom,0px));box-shadow:var(--shadow-elevated),inset 0 0 20px var(--overlay-inset)}.overlay-close{position:absolute;top:10px;right:10px;width:28px;height:28px;border:1px solid var(--border);background:var(--paper);color:var(--ink-faded);font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:all var(--transition)}.overlay-close:hover{background:var(--paper-warm);color:var(--ink)}.overlay-content{color:var(--ink-light);font-family:var(--font-body);font-size:.95rem;line-height:1.6}.overlay-content h2{font-family:var(--font-display);font-size:1.1rem;font-weight:900;color:var(--ink);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid var(--border-dark)}.overlay-content hr{border:none;border-top:1px solid var(--border);margin:14px 0}.debrief-entry{padding:6px 0}.debrief-entry.hint.red{border-left:3px solid var(--red);padding-left:10px}.debrief-entry.hint.blue{border-left:3px solid var(--blue);padding-left:10px}.debrief-entry.guess.assassin{border-left:3px solid var(--danger);padding-left:10px}.debrief-entry.guess.red{border-left:2px solid var(--red);padding-left:10px;margin-left:14px}.debrief-entry.guess.blue{border-left:2px solid var(--blue);padding-left:10px;margin-left:14px}.debrief-entry.guess.neutral{border-left:2px solid var(--neutral-color);padding-left:10px;margin-left:14px}.debrief-turn{font-family:var(--font-typewriter);font-size:.72rem;color:var(--ink-ghost);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px}.debrief-divider{color:var(--ink-ghost);text-align:center;font-size:.88rem;font-style:italic;font-family:var(--font-body)}.debrief-conclusion{font-family:var(--font-body);font-size:1rem;color:var(--ink)}.debrief-classification{font-family:var(--font-typewriter);font-size:.72rem;color:var(--danger);letter-spacing:.12em;text-transform:uppercase}@media(max-width:720px){.mode-tag{display:none}}@media(max-width:720px)and (min-width:601px){.top-bar{padding:3px 10px}.bottom-bar{padding:5px 8px}.card-word{font-size:clamp(.6rem,2vw,.9rem)}.game-stage{gap:6px}.board{gap:5px}}.bar-tab[data-panel=feed]{display:none}@media(max-width:600px){.top-bar{padding:3px 8px}.bottom-bar{padding:4px 6px}.bar-tab-label{display:none}.bar-tab[data-panel=feed]{display:flex}.bar-tab{width:44px;padding:6px 0;min-height:40px}.bar-tabs-center{gap:3px}.score-bar{height:5px}.turn-banner{font-size:.78rem;padding:2px 8px}.bar-util{gap:4px}.room-code-val{padding:2px 5px;font-size:.7rem}.mode-tag,.conn-text{display:none}.bottom-bar-status{padding:2px 0}.controls-strip{display:flex;width:100%;flex-shrink:0;overflow:visible}.inline-feed{display:none}.game-stage{padding:4px 6px;gap:4px;justify-content:start;overflow-y:auto}.stage-layout{flex-direction:column;flex:none}.board-area{flex:none}.board-wrap{max-width:100%}.board{gap:4px}.card{aspect-ratio:1.3}.card-word{font-size:clamp(.65rem,3.2vw,.95rem)}#hint-section,#guess-section,#result-section{display:none;position:relative;flex-shrink:0;z-index:15;border-radius:6px;box-shadow:var(--shadow-elevated);padding:10px 12px;background:var(--paper)}#hint-section:not(.hidden),#guess-section:not(.hidden),#result-section:not(.hidden){display:block}#hint-section .ctrl-head,#guess-section .ctrl-head{display:none}.hint-form{flex-wrap:wrap;gap:5px}.hint-form input[type=text]{flex:1 1 100%}.hint-display-bar{font-size:.92rem;letter-spacing:.02em;padding-right:4px;padding-left:4px}.guess-row{flex-wrap:wrap;gap:5px}.selected-label{width:100%}.result-actions{flex-direction:column;gap:5px}.result-actions .btn{width:100%}#sheet-teams .sheet-body{grid-template-columns:1fr}.team-panel{padding:6px}.join-screen{padding:16px}.join-card{padding:28px 20px 20px}.logo-title{font-size:1.8rem}.sheet-panel{min-width:0;width:100%;max-width:100%}.voice-dropdown-menu{bottom:100%}}@media(max-width:400px){.join-screen{padding:10px}.join-card{padding:22px 14px 18px}.logo-title{font-size:1.5rem}.card-word{font-size:clamp(.6rem,3.5vw,.9rem)}}.scene-lobby .board .card{opacity:.35;filter:grayscale(.7) sepia(.3)}.theatrical-mode .top-bar,.theatrical-mode .bottom-bar,.theatrical-mode .sheet-container{display:none!important}.theatrical-mode .turn-banner{font-size:1.3rem}.theatrical-mode .board{max-width:800px}.voice-btn{background:transparent;border:1px solid var(--border);color:var(--ink-faded);padding:5px 8px;font-family:var(--font-typewriter);font-size:.85rem;transition:all var(--transition)}.voice-btn:hover{border-color:var(--border-dark);color:var(--ink)}.voice-btn.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.board.phase-pulse{animation:board-phase-pulse .4s ease-out}@keyframes board-phase-pulse{0%{filter:brightness(1.08)}to{filter:brightness(1)}}.card.card-deal{opacity:0;animation:card-deal-in .3s ease-out forwards}@keyframes card-deal-in{0%{opacity:0;transform:translateY(8px) rotate(-1deg)}to{opacity:1;transform:translateY(0) rotate(0)}}.result-ctrl.result-flourish{animation:result-stamp-in .5s ease-out}@keyframes result-stamp-in{0%{opacity:0;transform:scale(1.02) rotate(-.3deg);box-shadow:0 0 0 0 transparent}40%{opacity:1;transform:scale(.99) rotate(.1deg);box-shadow:0 0 20px 4px var(--anim-accent)}to{transform:scale(1) rotate(0);box-shadow:none}}.turn-banner.banner-swap{opacity:0;transition:opacity .15s ease-out}.log-group.log-new{animation:log-slide-in .25s ease-out}@keyframes log-slide-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.team-player-item.player-new{animation:player-highlight .6s ease-out}@keyframes player-highlight{0%{background:var(--anim-highlight)}to{background:transparent}}.join-screen.fade-out{opacity:0;visibility:hidden;transition:opacity .35s ease,visibility 0s linear .35s}.room-screen.fade-in{opacity:0;animation:room-fade-in .4s ease-out .1s forwards}@keyframes room-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.confirm-panel{max-width:380px;text-align:center}.confirm-message{font-family:var(--font-body);font-size:1rem;margin-bottom:1.25rem;color:var(--ink)}.confirm-actions{display:flex;gap:.75rem;justify-content:center}html.theme-transitioning{transition:background-color .4s ease-in-out,color .4s ease-in-out!important}html.theme-transitioning body,html.theme-transitioning .room-screen,html.theme-transitioning .join-card,html.theme-transitioning .top-bar,html.theme-transitioning .bottom-bar,html.theme-transitioning .bottom-bar-status,html.theme-transitioning .game-stage,html.theme-transitioning .card,html.theme-transitioning .card-word,html.theme-transitioning .sheet-panel,html.theme-transitioning .overlay-panel,html.theme-transitioning .team-panel,html.theme-transitioning .ctrl-panel,html.theme-transitioning .btn,html.theme-transitioning .bar-tab,html.theme-transitioning .turn-banner,html.theme-transitioning .toast,html.theme-transitioning .toggle-btn,html.theme-transitioning .lang-btn,html.theme-transitioning .voice-peer{transition:background .4s ease-in-out,background-color .4s ease-in-out,color .4s ease-in-out,border-color .4s ease-in-out,box-shadow .4s ease-in-out!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--paper-dark)}::-webkit-scrollbar-thumb{background:var(--border-dark);border-radius:0}::-webkit-scrollbar-thumb:hover{background:var(--border)}.voice-chat-btn.in-voice{background:var(--success);border-color:var(--success);color:var(--paper-light)}.voice-mute-btn.muted{color:var(--danger);border-color:var(--danger)}.voice-noise-btn.noise-active{color:var(--success);border-color:var(--success)}.team-player-item.speaking{box-shadow:0 0 0 2px var(--success),0 0 8px var(--success-glow)}.team-player-item.speaking .player-avatar{box-shadow:0 0 0 2px var(--success)}.tag.voice{background:var(--success-tint);color:var(--success);border-color:var(--success)}.tag.voice-muted{background:var(--danger-tint);color:var(--danger);border-color:var(--danger)}#voice-audio-container{display:none}.sheet-container{position:fixed;inset:0;z-index:30;pointer-events:none}.sheet-backdrop{position:absolute;inset:0;background:var(--backdrop-bg);opacity:0;pointer-events:none;transition:opacity .28s ease}.sheet-backdrop.visible{opacity:1;pointer-events:auto}.sheet-panel{position:absolute;bottom:0;left:50%;width:fit-content;min-width:320px;max-width:90vw;max-height:85vh;transform:translate(-50%,100%);pointer-events:none;display:flex;flex-direction:column;background:linear-gradient(175deg,var(--paper-light) 0%,var(--paper) 100%);border-top:2px solid var(--border-dark);border-radius:var(--sheet-radius) var(--sheet-radius) 0 0;box-shadow:var(--sheet-shadow);overflow:hidden;will-change:transform}.sheet-panel.sheet-open{transform:translate(-50%);pointer-events:auto;transition:transform var(--spring-duration) var(--spring-ease)}.sheet-panel.sheet-closing{transform:translate(-50%,100%);pointer-events:none;transition:transform .25s ease-in}.sheet-handle{width:100%;padding:12px 0 8px;flex-shrink:0;cursor:grab;touch-action:none}.sheet-handle:after{content:"";display:block;width:36px;height:4px;background:var(--border-dark);border-radius:2px;margin:0 auto}.sheet-handle:active{cursor:grabbing}.sheet-body{flex:1;overflow-y:auto;padding:8px 16px calc(16px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:10px}#sheet-teams .sheet-body{display:grid;grid-template-columns:1fr 1fr;gap:10px}#sheet-teams .sidebar-actions{grid-column:1 / -1;display:flex;flex-direction:row;flex-wrap:wrap;gap:6px;padding-top:8px;border-top:1px solid var(--border-light)}#sheet-feed .sheet-body{max-height:60vh}.voice-controls{display:flex;align-items:center;gap:8px}.voice-toggles{display:flex;gap:4px}.voice-peer-list{display:flex;flex-direction:column;gap:6px}.voice-peer{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--paper-dark);border:1px solid var(--border)}.voice-peer.speaking{box-shadow:0 0 0 2px var(--success),0 0 6px var(--success-glow)}.voice-peer-name{font-family:var(--font-typewriter);font-size:.82rem;color:var(--ink);flex:1}.voice-peer-muted{font-family:var(--font-typewriter);font-size:.68rem;color:var(--danger);text-transform:uppercase;letter-spacing:.06em}.voice-volume-slider{width:80px;accent-color:var(--accent)}#sheet-settings .sheet-body{gap:12px}.sheet-title{font-family:var(--font-display);font-size:.82rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faded);padding-bottom:6px;border-bottom:1px solid var(--border);margin:0}#sheet-teams .sheet-title{grid-column:1 / -1}.feed-empty{display:flex;align-items:center;justify-content:center;flex:1;font-family:var(--font-body);font-size:.88rem;font-style:italic;color:var(--ink-ghost);padding:24px 12px;text-align:center}.room-screen{height:auto;min-height:100dvh;overflow:visible}.room-screen .bottom-bar{order:-3;position:sticky;top:0;z-index:20}.room-screen .top-bar{order:-2}.room-screen .bottom-bar-status{order:-1;padding:8px 12px}.room-screen .game-stage{flex:1;justify-content:flex-start;overflow:visible;padding:20px}.room-screen .stage-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-rows:auto 1fr;align-items:start;gap:16px 24px;max-width:1160px;flex:none}.room-screen .board-area{grid-column:1;grid-row:1;flex-direction:column;gap:12px}.room-screen .board-wrap{max-width:none}.room-screen .controls-strip{grid-column:1;grid-row:2;width:auto;overflow:visible}.room-sidebar{grid-column:2;grid-row:1 / 3;min-width:0;display:flex;flex-direction:column;gap:16px}.persistent-panel{min-width:0;background:var(--paper-light);border:1px solid var(--border-dark);border-radius:10px;box-shadow:var(--shadow-elevated);overflow:hidden}.persistent-panel .sheet-body{padding:16px;overflow:visible}.persistent-panel .sheet-title{margin-bottom:4px;color:var(--ink)}#sheet-teams.persistent-panel .sheet-body{grid-template-columns:minmax(0,1fr)}#sheet-teams.persistent-panel .team-panel{min-width:0}#sheet-feed.persistent-panel .sheet-body{max-height:none}#sheet-feed .feed-entries{height:220px;min-height:0;flex:none;overflow-y:auto;overflow-wrap:anywhere}#sheet-feed .chat-form{display:flex;gap:8px;margin-top:12px}#sheet-feed .chat-form input{min-width:0;flex:1}.readiness-note{flex-basis:100%;font-size:.9rem;color:var(--ink-light)}.room-screen.is-lobby .stage-layout{display:block;max-width:1100px}.is-lobby .room-sidebar{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}.is-lobby #sheet-teams.persistent-panel .sheet-body{grid-template-columns:repeat(2,minmax(0,1fr))}.is-lobby #start-game-btn{flex:1 1 100%}.team-summary{display:flex;justify-content:space-between;gap:12px;font-weight:700;font-size:1rem}.summary-red{color:var(--red)}.summary-blue{color:var(--blue)}#hint-display{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#hint-display .hint-display-bar{margin:0;font-size:.95rem;overflow-wrap:anywhere}.room-screen .bar-tabs{display:flex;flex-wrap:wrap;gap:8px 16px}.room-screen .bar-tabs-center{display:flex;flex-wrap:wrap;flex:1;justify-content:flex-end;gap:8px}.room-screen .bar-tab{width:auto;min-height:44px;padding:8px 12px;font-size:.85rem}.room-screen .bar-tab-label{display:inline}.room-screen .bar-util{flex-wrap:wrap;gap:8px;min-width:0;max-width:100%;flex-shrink:1}.room-screen .room-code-val{cursor:pointer;min-height:44px;color:var(--ink)}.room-screen .voice-dropdown{flex-wrap:wrap;align-items:center;gap:8px}.room-screen #voice-mute-btn{min-height:44px;border:1px solid var(--border-dark)}.room-screen .voice-dropdown-menu{top:100%;bottom:auto;max-width:calc(100vw - 24px);max-height:65dvh;overflow-y:auto}.room-screen .voice-dropdown.voice-active:hover .voice-dropdown-menu{display:none}.room-screen .voice-dropdown.open .voice-dropdown-menu{display:flex}.room-screen .team-empty,.room-screen .player-meta .tag,.room-screen .ctrl-status{color:var(--ink-light)}.room-screen .btn-role{min-height:44px;white-space:normal}.panel-close{float:right}.sheet-panel:not(.sheet-open){visibility:hidden}.sheet-panel.sheet-open{visibility:visible}@media(max-width:900px){.room-screen .stage-layout{grid-template-columns:minmax(0,1fr);gap:16px}.room-screen .room-sidebar{grid-column:1;grid-row:3}.room-screen .game-stage{padding:12px}.is-lobby .room-sidebar{display:flex}.room-screen .bar-tabs-center{justify-content:flex-start}.room-screen .bottom-bar{position:sticky}.room-screen .bar-tabs-right{margin-left:auto}.room-screen .conn-text{display:inline}.room-screen .bar-tab{padding:8px}.room-screen .board .card{aspect-ratio:1.3}#sheet-teams.persistent-panel .sheet-body{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:400px){.persistent-panel .sheet-body{padding:12px}.room-screen .team-panel{padding:8px}.room-screen .role-row{flex-direction:column}.room-screen .bar-tabs{gap:6px}.room-screen .bar-tab{font-size:.78rem}}.room-screen .persistent-panel input,.room-screen .ctrl-panel input{min-height:44px}@media(min-width:901px){.room-screen:not(.is-lobby){height:100dvh;min-height:0;overflow:hidden}.room-screen:not(.is-lobby) .game-stage{min-height:0;padding:12px 20px}.room-screen:not(.is-lobby) .stage-layout{flex:1;min-height:0;grid-template-rows:minmax(0,1fr) auto;gap:10px 20px}.room-screen:not(.is-lobby) .board-area{height:100%;min-height:0;gap:6px}.room-screen:not(.is-lobby) .board-wrap{flex:1;min-height:0}.room-screen:not(.is-lobby) .board{height:100%;grid-template-rows:repeat(5,minmax(0,1fr))}.room-screen:not(.is-lobby) .board .card{aspect-ratio:auto;min-height:0}.room-screen:not(.is-lobby) .room-sidebar{height:100%;min-height:0;gap:10px}.room-screen:not(.is-lobby) #sheet-teams{flex:1;min-height:0;overflow-y:auto}.room-screen:not(.is-lobby) #sheet-feed{height:clamp(200px,36dvh,340px);flex:none}.room-screen:not(.is-lobby) #sheet-feed .sheet-body{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:8px;padding:12px}.room-screen:not(.is-lobby) #sheet-feed .feed-entries{height:100%}.room-screen:not(.is-lobby) #sheet-feed .chat-form{margin-top:0}.room-screen:not(.is-lobby) .persistent-panel .sheet-body{padding:12px}.room-screen:not(.is-lobby) .team-panel{padding:8px}}@media(max-width:900px){.room-screen:not(.is-lobby) .board{height:clamp(180px,calc(100dvh - 360px),400px);grid-template-rows:repeat(5,minmax(0,1fr))}.room-screen:not(.is-lobby) .board .card{aspect-ratio:auto;min-height:0}.room-screen:not(.is-lobby) .board-area{gap:6px}.room-screen:not(.is-lobby) .game-stage{padding:8px}.room-screen:not(.is-lobby) .stage-layout{gap:10px}}.room-screen{--text-red: #ffaaaa;--text-blue: #9bcaff;font-family:var(--font-body)}html[data-theme=light] .room-screen{--text-red: #a51d29;--text-blue: #1254a0}.room-screen .bottom-bar{padding:3px 10px}.room-screen .bar-tabs,.room-screen .bar-tabs-center,.room-screen .voice-dropdown{gap:6px}.room-screen .bar-tab,.room-screen #voice-mute-btn{min-height:34px;padding:5px 9px;font-size:14px;letter-spacing:0;text-transform:none}.room-screen .room-code-val{min-height:34px;padding:4px 9px;font:700 18px var(--font-typewriter);letter-spacing:.08em}.room-screen .bar-util .btn,.room-screen .mode-tag,.room-screen .conn-text{font-size:13px;letter-spacing:0;text-transform:none}.room-screen .bottom-bar-status{padding:3px 8px}.room-screen .turn-banner{font-size:14px;padding:0;letter-spacing:0}.room-screen .sheet-title,.room-screen .team-head h3{font-size:14px;letter-spacing:.02em}.room-screen .btn-role{min-height:32px;padding:5px 7px;font-size:13px;letter-spacing:0;text-transform:none}.room-screen .role-row{flex-direction:row}.room-screen .team-panel{gap:5px}.room-screen .team-player-name{font-size:14px}.room-screen .player-meta .tag{font-size:11px;letter-spacing:0}.room-screen .sidebar-actions{gap:5px}.room-screen .sidebar-actions .btn:not(#start-game-btn){padding:5px 7px;font-size:13px;text-transform:none;letter-spacing:0}.room-screen #hint-display{flex:0 0 56px;height:56px;min-height:56px;gap:8px}.clue-slot{min-width:0;display:flex;flex-direction:column;justify-content:center;padding:4px 8px;border-left:3px solid currentColor;background:var(--paper-light)}.clue-slot[data-team=red]{color:var(--text-red)}.clue-slot[data-team=blue]{color:var(--text-blue)}.clue-slot strong{font-size:12px;line-height:16px}.clue-slot span{font-size:14px;font-weight:600;line-height:20px;overflow:auto;white-space:nowrap}.room-screen .feed-item{font-size:14px;line-height:1.5;flex-shrink:0}.room-screen .feed-chat{display:block}.room-screen .feed-name{font-weight:800;color:var(--ink);padding:1px 4px;border-radius:3px;background:var(--paper-dark)}.room-screen .feed-name.red{color:var(--text-red);background:color-mix(in srgb,var(--text-red) 12%,var(--paper-light))}.room-screen .feed-name.blue{color:var(--text-blue);background:color-mix(in srgb,var(--text-blue) 12%,var(--paper-light))}.room-screen .sheet-body label,.room-screen .settings-block,.room-screen .settings-block .btn,.room-screen .settings-block .toggle-btn,.room-screen .settings-block .mode-btn{font-family:var(--font-body);font-size:14px;letter-spacing:0;color:var(--ink)}.room-screen input,.room-screen select,.room-screen textarea{font-family:var(--font-body);font-size:15px;color:var(--ink)}.room-screen input::placeholder{color:var(--ink-faded);opacity:1;font-style:normal}.room-screen .settings-block small,.room-screen .settings-hint,.room-screen .feed-empty{color:var(--ink-light);font-size:13px}@media(min-width:901px){.room-screen:not(.is-lobby) .controls-strip{min-height:110px}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel .sheet-body{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.room-screen:not(.is-lobby) #sheet-teams .role-row{flex-direction:column}.room-screen:not(.is-lobby) #sheet-teams .sheet-title{margin:0}}@media(max-width:900px){.room-screen .bar-tab,.room-screen #voice-mute-btn,.room-screen .btn-role{min-height:40px}.room-screen .bar-tab{font-size:13px;padding:4px 6px}.room-screen .room-code-val{min-height:40px}.room-screen .bar-util{gap:5px}.room-screen input{font-size:16px}}.room-screen .team-player-name{white-space:normal;overflow-wrap:anywhere}.room-screen .settings-label,.room-screen .mode-note{font-size:14px;color:var(--ink-light);letter-spacing:0}.room-screen .ctrl-status,.room-screen .selected-label{font-size:14px;font-family:var(--font-body);font-style:normal}.room-screen .ctrl-panel{animation:none}@media(min-width:901px){.room-screen:not(.is-lobby) #sheet-teams{flex:0 1 auto;max-height:55%}.room-screen:not(.is-lobby) #sheet-feed{flex:1;height:auto;min-height:200px}}.room-screen .team-red .team-head h3,.room-screen .btn-role.red{color:var(--text-red)}.room-screen .team-blue .team-head h3,.room-screen .btn-role.blue{color:var(--text-blue)}.room-screen .btn-role.red.active{background:#a51d29;color:#fff}.room-screen .btn-role.blue.active{background:#1254a0;color:#fff}html[data-theme=dark] .room-screen{--keycard-red-text: #ffb1b1;--keycard-blue-text: #b0d8ff}@media(min-width:901px){.room-screen:not(.is-lobby) .controls-strip{height:110px;overflow-y:auto}.room-screen .hint-form input[type=text]{flex:1 1 0;min-width:0}.room-screen .hint-form{flex-wrap:nowrap}}.room-screen #sheet-settings{width:480px;max-width:100vw}.room-screen #sheet-settings .sheet-title{color:var(--ink);font-size:16px}.room-screen #sheet-settings .lang-btn,.room-screen #sheet-settings .panel-close{color:var(--ink);font-size:14px}.room-screen #sheet-settings .mode-btn:disabled{opacity:1;color:var(--ink-faded);border-style:dashed}.room-screen #sheet-settings .toggle-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.room-screen #sheet-settings .toggle-btn{min-height:40px}.room-screen #sheet-settings .mode-note{font-style:normal}.room-screen #sheet-settings .qr-wrap svg{width:88px;height:88px}.room-screen .bar-tab,.room-screen .btn-role{font-size:14px}.room-screen .team-player-name,.room-screen .feed-item,.room-screen .ctrl-status,.room-screen .selected-label,.room-screen .mode-note{font-size:16px}.room-screen .feed-name{font-weight:700}.room-screen .sheet-title{font-family:var(--font-display);font-weight:700}.room-screen .settings-block .btn,.room-screen .settings-block .toggle-btn,.room-screen .settings-block .mode-btn,.room-screen .settings-label{font-family:var(--font-typewriter)}.room-screen .bar-tab{background:transparent;border-color:transparent;box-shadow:none}.room-screen .bar-tab:hover,.room-screen .bar-tab:focus-visible{border-color:var(--border-dark);background:var(--paper-light)}.room-screen .bar-tab.in-voice{border-color:var(--voice-active-border)}.room-screen .bottom-bar{background:var(--paper);border:0;border-bottom:1px solid var(--border)}.room-screen .top-bar{background:transparent;border:0;padding:0 12px}.room-screen .score-bar{height:3px}.room-screen .bottom-bar-status{background:transparent;padding:5px 12px}.room-screen .turn-banner{color:var(--ink);font-size:15px}.room-screen .persistent-panel{box-shadow:none;border-color:var(--border-light);border-radius:4px}.room-screen .team-panel{background:transparent;border:0;border-top:2px solid var(--border);box-shadow:none}.room-screen .team-red{border-top-color:var(--text-red)}.room-screen .team-blue{border-top-color:var(--text-blue)}.room-screen .btn-role{border-color:transparent;background:transparent;border-radius:3px}.room-screen .btn-role:hover,.room-screen .btn-role:focus-visible{border-color:currentColor}.room-screen .btn-role.red.active{color:var(--text-red);background:color-mix(in srgb,var(--text-red) 12%,var(--paper-light));border-color:var(--text-red)}.room-screen .btn-role.blue.active{color:var(--text-blue);background:color-mix(in srgb,var(--text-blue) 12%,var(--paper-light));border-color:var(--text-blue)}.room-screen .sidebar-actions{border-top-color:var(--border-light)}.room-screen .clue-slot{background:transparent;border-left:0;border-bottom:2px solid currentColor;padding:4px}.room-screen .clue-slot strong{font-size:14px}.room-screen .clue-slot span{font-size:16px}.room-screen .ctrl-panel{box-shadow:none;background:transparent;border-color:var(--border-light)}.room-screen .ctrl-panel:before{display:none}@media(min-width:901px){.room-screen:not(.is-lobby) .room-sidebar{gap:16px}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel .sheet-body{gap:12px}}@media(max-width:400px){.room-screen .bar-tab,.room-screen .btn-role{font-size:13px}}.room-screen .card-word{display:block;width:100%;max-width:100%;letter-spacing:0;word-break:normal;overflow-wrap:normal;line-height:1.2}.room-screen .card.keycard.assassin,.room-screen .card.finished-reveal.assassin{background:#252126;border:2px solid #d9c7a1;box-shadow:inset 0 0 0 2px #252126}.room-screen .card.keycard.assassin .card-word,.room-screen .card.finished-reveal.assassin .card-word{color:#fff3d7}.colorblind-mode .room-screen .card.keycard:after,.colorblind-mode .room-screen .card.revealed:after{inset:auto 0 0;height:9px;border-top:1px solid var(--border-light)}.room-screen #hint-display{flex-basis:68px;height:68px;min-height:68px}.room-screen .clue-slot{position:relative;padding:3px 4px;justify-content:flex-start}.room-screen .clue-slot .clue-word{font-family:var(--font-typewriter);font-size:18px;line-height:24px;white-space:normal;overflow-wrap:anywhere;overflow:visible}.room-screen .clue-slot small{font-size:14px;line-height:16px;color:var(--ink-light)}.room-screen .roster-title{display:flex;align-items:center;justify-content:space-between}.room-screen .roster-title .btn{font:13px var(--font-body);min-height:32px;padding:3px 7px;text-transform:none}.room-screen:not(.is-lobby):not(.managing-roles) .team-player-item{padding:4px 0}.room-screen:not(.is-lobby):not(.managing-roles) .team-panel{padding:6px 0;gap:4px}.room-screen:not(.is-lobby):not(.managing-roles) .team-head h3{font-size:12px}.room-screen:not(.is-lobby):not(.managing-roles) .team-player-name{font-size:16px;line-height:1.2}.room-screen:not(.is-lobby):not(.managing-roles) .player-meta .tag{border:0;background:transparent;padding:0 4px 0 0;color:var(--ink-light);font-family:var(--font-body);font-size:13px;text-transform:none}.room-screen .ctrl-panel{padding:8px 12px}.room-screen .ctrl-head{margin-bottom:4px}.room-screen #guess-section:not(:has(.guess-row)){border:0;padding:4px}.room-screen #guess-section:not(:has(.guess-row)) .ctrl-status{margin:0}.room-screen #sheet-settings{top:50%;bottom:auto;width:500px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);transform:translate(-50%,-50%);border:1px solid var(--border-dark);border-radius:8px}.room-screen #sheet-settings:not(.sheet-open){display:none}.room-screen #sheet-settings .sheet-handle{display:none}.room-screen #sheet-settings .sheet-body{padding:20px;gap:0}.room-screen #sheet-settings .sheet-title{margin-bottom:14px}.settings-group{margin-bottom:18px}.settings-group:last-child{margin-bottom:0}.settings-group h4{font:700 15px var(--font-display);color:var(--ink);margin:0 0 8px}.preference-row{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:44px;font-size:17px}.segmented{display:flex;border:1px solid var(--border);border-radius:4px;overflow:hidden}.segmented button{min-height:34px;padding:5px 12px;border:0;border-radius:0;background:transparent;color:var(--ink-light);font:15px var(--font-body)}.segmented button[aria-pressed=true]{background:var(--ink);color:var(--paper);font-weight:700}.segmented button:disabled{cursor:not-allowed}.preference-switch{min-width:68px;min-height:34px;border:1px solid var(--border-dark);border-radius:20px;background:transparent;color:var(--ink-light);font:700 15px var(--font-body)}.preference-switch[aria-checked=true]{background:var(--ink);color:var(--paper)}.settings-explanation{color:var(--ink-light);font-size:15px;margin:4px 0 8px}.wordpack-label{display:block;margin-top:12px;font-size:16px}.wordpack-label .pack-row{margin-top:4px}.timer-settings{display:flex;gap:12px}.timer-settings label{flex:1;min-width:0}.timer-settings input{width:100%}@media(min-width:901px){.room-screen:not(.is-lobby) .controls-strip{height:92px;min-height:92px}.room-screen:not(.is-lobby):not(.managing-roles) #sheet-teams{flex:0 0 auto;max-height:32%}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel .sheet-body{gap:8px 16px}}@media(max-width:900px){.room-screen:not(.is-lobby) .board{height:clamp(180px,calc(100dvh - 350px),370px)}.room-screen .bar-tabs{gap:0 4px}.room-screen .bar-tab,.room-screen .room-code-val{min-height:34px}.room-screen .bar-util .btn{padding:4px 6px}.room-screen .bottom-bar{padding:2px 8px}.room-screen .turn-banner{font-size:14px}.room-screen #hint-display{gap:8px}.room-screen .clue-slot .clue-word{font-size:15px;line-height:20px}.room-screen .clue-slot small{font-size:13px}.room-screen:not(.is-lobby):not(.managing-roles) #sheet-teams .sheet-body{padding:8px 12px;gap:6px 12px}.room-screen:not(.is-lobby):not(.managing-roles) .room-sidebar{gap:10px}.room-screen #sheet-settings .sheet-body{padding:16px}.preference-row{font-size:16px}.segmented button{padding:5px 9px}}.room-screen #guess-section:not(:has(.guess-row)){background:transparent;box-shadow:none}@media(max-width:900px){.room-screen #hint-display{display:flex;flex-direction:column;height:76px;min-height:76px;flex-basis:76px;gap:4px}.room-screen .clue-slot{display:grid;grid-template-columns:56px minmax(0,1fr) 80px;align-items:center;flex:1;padding:0 3px;border-bottom-width:1px}.room-screen .clue-slot strong{font-size:13px}.room-screen .clue-slot .clue-word{font-size:15px;line-height:17px}.room-screen .clue-slot small{text-align:right;font-size:13px;line-height:15px}.room-screen:not(.is-lobby) .board{height:clamp(180px,calc(100dvh - 430px),340px)}}.lobby-intro{width:100%;max-width:1100px;margin:8px auto 20px}.lobby-intro h2{font:700 26px var(--font-display);color:var(--ink);margin:0 0 8px}.lobby-intro p{font-size:18px;color:var(--ink-light);margin:0;max-width:620px}.room-screen.is-lobby .bottom-bar-status{display:none}.room-screen.is-lobby .room-sidebar{align-items:stretch}.room-screen.is-lobby #sheet-feed .sheet-body{height:100%;display:grid;grid-template-rows:auto minmax(220px,1fr) auto}.room-screen.is-lobby #sheet-feed .feed-entries{height:100%}.room-screen.is-lobby .player-list{order:1;min-height:56px}.room-screen.is-lobby .team-actions{order:2;margin-top:10px}.room-screen.is-lobby .role-row{flex-direction:column}.room-screen.is-lobby .btn-role{text-align:left;font-size:14px;padding:8px 10px;border:1px solid var(--border)}.room-screen.is-lobby .team-panel{padding:12px}.room-screen.is-lobby .team-player-name{font-size:18px}.room-screen.is-lobby .player-meta .tag{font:14px var(--font-body);padding:0 6px 0 0;background:none;border:none;color:var(--ink-light)}.room-screen.is-lobby #start-game-btn{flex:0 0 auto;min-width:180px;order:2}.room-screen.is-lobby .sidebar-actions .readiness-note{flex:1 1 100%;font-size:17px;margin:0 0 4px}.room-screen.is-lobby .sidebar-actions .spectator-btn{order:3}.room-screen .card:not(.keycard):not(.revealed){background:var(--card-bg)}@media(max-width:900px){.room-screen .bar-tabs{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:0 4px}.room-screen .bar-tabs-center{display:contents}.room-screen .bar-util{grid-column:1;grid-row:1}.room-screen .bar-tab[data-panel=settings]{grid-column:2;grid-row:1}.room-screen .bar-tab[data-panel=debrief]{grid-column:2;grid-row:2}.room-screen .bar-tabs-right{grid-column:3;grid-row:1}.room-screen .voice-dropdown{grid-column:1 / -1;grid-row:2;min-height:40px;gap:8px}.room-screen .bar-tab,.room-screen #voice-mute-btn,.room-screen .room-code-val{min-height:36px;font-size:14px}.room-screen .room-code-val{font-size:17px}.room-screen .conn-text{display:none}.room-screen .bar-util .btn{font:13px var(--font-body);white-space:nowrap}.room-screen #hint-display{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:18px 24px 20px;gap:2px 8px;height:68px;min-height:68px;flex-basis:68px}.room-screen .clue-slot{display:contents}.room-screen .clue-slot.current strong{grid-column:1;grid-row:1}.room-screen .clue-slot:not(.current) strong{grid-column:2;grid-row:1;text-align:right}.room-screen .clue-slot.current .clue-word{grid-column:1;grid-row:2;font-size:17px}.room-screen .clue-slot.current small{grid-column:2;grid-row:2}.room-screen .clue-slot:not(.current) .clue-word{grid-column:1 / -1;grid-row:3;font-size:13px}.room-screen .clue-slot:not(.current):not(.empty) .clue-word:before{content:attr(data-team-label) " · "}.room-screen .clue-slot:not(.current).empty .clue-word{visibility:hidden}.room-screen .controls-strip:not(:has(.ctrl-panel:not(.hidden))){display:none}.room-screen .guess-ctrl{padding:8px}.room-screen .guess-row{gap:6px}.room-screen .selected-label{margin:0}.room-screen:not(.is-lobby):not(.managing-roles) #sheet-teams .sheet-body{padding:6px 10px;gap:4px 10px}.room-screen:not(.is-lobby):not(.managing-roles) .team-head{display:none}.room-screen:not(.is-lobby):not(.managing-roles) .team-panel{border-top-width:2px;padding:4px 0}.room-screen:not(.is-lobby):not(.managing-roles) .player-list{min-height:0}.room-screen:not(.is-lobby):not(.managing-roles) .team-player-item{padding:0}.room-screen.is-lobby .lobby-intro{margin:8px 0 16px}.lobby-intro h2{font-size:22px}.lobby-intro p{font-size:17px}.room-screen.is-lobby .team-panel{padding:8px}.room-screen.is-lobby .btn-role{font:16px var(--font-body);min-height:40px;padding:6px}.room-screen.is-lobby #start-game-btn{flex:1 1 100%}}.room-screen.is-lobby #sheet-feed .sheet-body{grid-template-rows:auto minmax(0,1fr) auto}@media(min-width:901px){.room-screen.is-lobby #sheet-teams,.room-screen.is-lobby #sheet-feed{height:410px}.room-screen.is-lobby #sheet-teams{overflow-y:auto}}@media(max-width:900px){.room-screen.is-lobby #sheet-feed{height:330px}}@media(max-width:900px){.room-screen .hint-form{flex-wrap:nowrap;align-items:center;gap:6px}.room-screen .hint-form input[type=text]{flex:1 1 0;min-width:0}.room-screen .hint-form input[type=number]{width:34px}.room-screen .hint-form .stepper-btn{width:26px;padding:0}.room-screen #hint-section{padding:8px}}.room-screen .card-inner{transform:none}.room-screen .card-front{backface-visibility:visible}.room-screen .card-stamp-slot{width:13px;height:13px;top:4px;right:4px;opacity:.85}.room-screen .clue-slot .words-remaining{font:700 20px/24px var(--font-body);text-transform:uppercase;letter-spacing:.01em}.room-screen .clue-slot .clue-word{font-size:19px;line-height:24px}@media(max-width:900px){.room-screen #hint-display{grid-template-rows:24px 24px 20px;height:74px;min-height:74px;flex-basis:74px}.room-screen .clue-slot .words-remaining{font-size:18px;line-height:24px}.room-screen .clue-slot.current .clue-word{font-size:18px}.room-screen .clue-slot:not(.current) .clue-word{font-size:15px}.room-screen .clue-slot:not(.current):not(.empty) .clue-word:before{content:none}}.room-screen #sheet-teams.persistent-panel{overflow:hidden}.room-screen #sheet-teams.persistent-panel .sheet-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto minmax(0,1fr);gap:10px 16px;overflow:hidden}.room-screen #sheet-teams .team-panel{display:flex;flex-direction:column;min-height:0;overflow:hidden;gap:4px;padding:6px 0}.room-screen #sheet-teams .team-head{display:flex;min-height:24px;flex-shrink:0}.room-screen #sheet-teams .team-head h3{font:700 15px var(--font-body);text-transform:none;letter-spacing:0}.room-screen #sheet-teams .roster-count{color:var(--ink-light);font:700 15px var(--font-body)}.room-screen #sheet-teams .player-list{order:1;height:calc(var(--visible-players) * 44px);max-height:176px;min-height:0;flex:0 1 auto;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;scrollbar-width:thin;scroll-snap-type:y proximity;gap:0;margin:0}.room-screen #sheet-teams .team-player-item{flex:0 0 44px;min-height:44px;height:44px;padding:4px 2px;scroll-snap-align:start;border-bottom:1px solid var(--border-light)}.room-screen #sheet-teams .team-player-name{font:600 16px/18px var(--font-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-screen #sheet-teams .player-meta{flex-wrap:nowrap;overflow:hidden;white-space:nowrap;height:17px}.room-screen #sheet-teams .player-meta .tag{font:13px/17px var(--font-body);text-transform:none;letter-spacing:0;padding:0 4px 0 0;border:0;background:transparent}.room-screen #sheet-teams .team-player-item:focus{outline:1px solid var(--accent);outline-offset:-1px}.room-screen #sheet-teams .team-player-item:focus .team-player-name{overflow-x:auto;text-overflow:clip}.room-screen #sheet-teams .team-player-item.is-offline .team-player-name{color:var(--ink-faded)}.room-screen #sheet-teams .team-player-item.is-spymaster .team-player-name{font-weight:800}.room-screen #sheet-teams .team-actions{order:2;flex:none;margin-top:8px}.room-screen #sheet-teams .sidebar-actions{grid-column:1 / -1;margin:0;padding-top:8px}.spectator-roster{grid-column:1 / -1;min-width:0;border-top:1px solid var(--border-light);padding-top:8px}.spectator-roster strong{font:600 14px var(--font-body);color:var(--ink-light)}.spectator-roster ul{display:flex;flex-wrap:wrap;gap:4px 12px;max-height:48px;overflow:auto;list-style:none;padding:4px 0 0;margin:0}.spectator-roster li{font:15px/20px var(--font-body);overflow-wrap:anywhere;max-width:100%}@media(min-width:901px){.room-screen.is-lobby #sheet-teams,.room-screen.is-lobby #sheet-feed{height:clamp(490px,calc(100dvh - 210px),620px)}.room-screen.is-lobby #sheet-teams .sheet-body{height:100%;grid-template-rows:auto minmax(0,1fr)}.room-screen:not(.is-lobby):not(.managing-roles) #sheet-teams,.room-screen:not(.is-lobby).managing-roles #sheet-teams{flex:0 1 auto;max-height:calc(100% - 216px)}.room-screen:not(.is-lobby) #sheet-teams .sheet-body{max-height:100%}}@media(max-width:900px){.room-screen:not(.is-lobby):not(.managing-roles) #sheet-teams .team-head{display:flex}.room-screen #sheet-teams.persistent-panel .sheet-body{gap:8px 12px;padding:10px}.room-screen.is-lobby #sheet-teams .player-list{height:calc(var(--visible-players) * 44px)}.room-screen #sheet-teams .team-head h3{font-size:14px}}.roster-overflow-note{order:1;flex:none;font:13px/18px var(--font-body);color:var(--ink-light);margin:3px 0 0}@media(min-width:901px){.room-screen.is-lobby .btn-role{min-height:32px;padding:5px 10px}}.room-screen #sheet-teams .team-player-item:focus{height:auto;flex-basis:auto}.room-screen #sheet-teams .team-player-item:focus .team-player-name{white-space:normal;overflow-wrap:anywhere;overflow:visible}.invite-short{display:none}.room-screen .clue-slot.current small{color:inherit}@media(max-width:900px){.invite-full{display:none}.invite-short{display:inline}.room-screen .clue-slot.current small:before{content:"· "}}.room-screen #hint-display{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto;gap:12px;height:auto;min-height:100px;flex:0 0 auto}.room-screen #hint-display .clue-slot{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:24px minmax(24px,auto) minmax(24px,auto) 20px;align-content:start;align-items:start;gap:2px;padding:2px 4px}.room-screen #hint-display .clue-slot>*{grid-column:auto;grid-row:auto;text-align:left;min-width:0}.room-screen #hint-display .words-remaining{font-size:20px;line-height:24px;white-space:nowrap}.room-screen #hint-display .spymaster-roster{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px}.room-screen #hint-display .spymaster-label{font:13px/22px var(--font-body);color:var(--ink-light);overflow:visible;white-space:normal}.spymaster-roster ul{display:flex;flex-wrap:wrap;gap:0 10px;list-style:none;padding:0;margin:0;min-width:0}.spymaster-roster li{font:700 17px/22px var(--font-body);overflow-wrap:anywhere;max-width:100%}.spymaster-roster li.is-offline{opacity:.7}.spymaster-roster li.speaking{text-decoration:underline;text-decoration-thickness:2px}.room-screen #hint-display .spymaster-roster small{font:13px/20px var(--font-body)}.room-screen #hint-display .spymaster-roster small:before{content:none}.room-screen #hint-display .clue-word{font-size:18px;line-height:24px;overflow:visible;white-space:normal}.room-screen #hint-display .clue-slot>small{font:14px/20px var(--font-body)}.room-screen #hint-display .clue-slot>small:before{content:none}.room-screen #hint-display .clue-slot.empty .clue-word{visibility:hidden}.room-screen:not(.is-lobby) .controls-strip{height:auto;min-height:96px;overflow:visible;align-self:start}.room-screen #hint-section{min-width:0}.room-screen #hint-section .ctrl-head{flex-wrap:wrap;gap:2px 12px}.room-screen #hint-section .ctrl-status{margin:0}.room-screen #hint-section .hint-form{align-items:center}.room-screen .feed-guess.red{color:var(--text-red);border-left-color:var(--text-red)}.room-screen .feed-guess.blue{color:var(--text-blue);border-left-color:var(--text-blue)}.room-screen .feed-guess.neutral{color:#d6c7a9;border-left-color:var(--neutral-color)}html[data-theme=light] .room-screen .feed-guess.neutral{color:#75644b}.room-screen .feed-guess.assassin{color:#171419;border-left-color:#171419}.room-screen .feed-guess.assassin .feed-text{background:#e8dcc0;padding:1px 4px;border-radius:2px}@media(max-width:900px){.room-screen #hint-display{gap:8px}.room-screen #hint-display .words-remaining{font-size:18px}.room-screen #hint-display .spymaster-label{flex-basis:100%;line-height:16px}.spymaster-roster li{font-size:16px;line-height:20px}.room-screen:not(.is-lobby) .controls-strip{min-height:0}}.room-screen .feed-guess .feed-text,.room-screen .feed-hint .feed-text{color:inherit}.room-screen .feed-hint.red{color:var(--text-red)}.room-screen .feed-hint.blue{color:var(--text-blue)}.room-screen:not(.is-lobby) .bottom-bar-status{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:5px 20px}.turn-status-center{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 12px;min-width:0}.room-screen .status-score{font:700 20px/26px var(--font-body);text-transform:uppercase;letter-spacing:.01em;white-space:nowrap}.status-score.red{color:var(--text-red);justify-self:start}.status-score.blue{color:var(--text-blue);justify-self:end}.team-action-short{display:none}.room-screen #hint-display{min-height:64px}.room-screen #hint-display .clue-slot{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(26px,auto) 20px;align-content:center}.room-screen #hint-display .clue-slot .spymaster-roster{display:flex;flex-direction:column;align-items:flex-start;grid-row:1 / 3;grid-column:1}.room-screen #hint-display .clue-slot .clue-word{grid-row:1;grid-column:2;text-align:center;align-self:end}.room-screen #hint-display .clue-slot>small{grid-row:2;grid-column:2;text-align:center}.room-screen #hint-display .clue-slot[data-team=blue] .spymaster-roster{grid-column:2;align-items:flex-end;text-align:right}.room-screen #hint-display .clue-slot[data-team=blue] .spymaster-roster ul{justify-content:flex-end}.room-screen #hint-display .clue-slot[data-team=blue] .clue-word,.room-screen #hint-display .clue-slot[data-team=blue]>small{grid-column:1}@media(max-width:900px){.room-screen .bar-tabs{grid-template-columns:minmax(0,1fr) auto auto auto}.room-screen #manage-roles-btn{grid-column:2;grid-row:1}.room-screen .bar-tab[data-panel=settings]{grid-column:3}.room-screen .bar-tabs-right{grid-column:4}.room-screen .bar-tab[data-panel=debrief]{grid-column:1 / -1;grid-row:3}.team-action-full{display:none}.team-action-short{display:inline}.room-screen:not(.is-lobby) .bottom-bar-status{grid-template-columns:1fr 1fr;gap:0 8px;padding:4px 10px}.room-screen .status-score{font-size:18px;grid-row:1}.status-score.blue{grid-column:2}.turn-status-center{grid-column:1 / -1;grid-row:2}.room-screen #hint-display .clue-slot{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(24px,auto) minmax(24px,auto) 20px}.room-screen #hint-display .clue-slot .spymaster-roster,.room-screen #hint-display .clue-slot[data-team=blue] .spymaster-roster{grid-column:1;grid-row:1}.room-screen #hint-display .clue-slot .clue-word,.room-screen #hint-display .clue-slot[data-team=blue] .clue-word{grid-column:1;grid-row:2}.room-screen #hint-display .clue-slot>small,.room-screen #hint-display .clue-slot[data-team=blue]>small{grid-column:1;grid-row:3}}@media(max-width:600px){.room-screen:not(.is-lobby) .bar-tab[data-panel=settings] .bar-tab-label{display:none}.room-screen:not(.is-lobby) .bar-tab[data-panel=settings]{padding-inline:6px}.room-screen #manage-roles-btn{padding-inline:6px;font-size:13px}}.audio-action-short{display:none}@media(max-width:600px){.room-screen .bar-util{position:relative;flex-wrap:nowrap;gap:4px}.room-screen .bar-util .conn-status{position:absolute;top:2px;left:2px}.room-screen .voice-dropdown{flex-wrap:nowrap;gap:6px}.room-screen .voice-dropdown>button{flex:none;white-space:nowrap}.audio-action-full{display:none}.audio-action-short{display:inline}}.room-screen #sheet-teams .team-panel{position:relative;cursor:pointer;border:1px solid var(--border-light);border-left:3px solid currentColor;border-radius:5px;padding:10px}.room-screen #sheet-teams .team-red{color:var(--text-red)}.room-screen #sheet-teams .team-blue{color:var(--text-blue)}.operative-join-target{position:absolute;inset:0 0 auto;z-index:1;width:100%;height:44px;border:0;border-radius:inherit;background:transparent;cursor:pointer}.room-screen #sheet-teams .team-panel:hover,.room-screen #sheet-teams .team-panel:has(.operative-join-target:focus-visible){background:color-mix(in srgb,currentColor 8%,var(--paper));outline:1px solid currentColor;outline-offset:-1px}.room-screen #sheet-teams .team-panel.is-my-team{background:color-mix(in srgb,currentColor 6%,var(--paper))}.room-screen #sheet-teams .team-panel.is-my-team .team-head:after{content:"✓";margin-left:auto}.room-screen #sheet-teams .player-list{position:relative;z-index:2;color:var(--ink);scrollbar-gutter:auto}.team-join-help{display:block;margin-top:4px;font:14px/20px var(--font-body);color:var(--ink-light);text-transform:none;letter-spacing:0}.room-screen #hint-display .clue-slot{border:1px solid currentColor;border-left-width:3px;border-right-width:3px;border-radius:5px;padding:8px 10px;background:color-mix(in srgb,currentColor 4%,var(--paper))}.room-screen .spymaster-vacancy{font:15px/20px var(--font-body);white-space:normal;color:inherit;border:1px dashed currentColor;min-height:36px;padding:5px 8px;text-transform:none;letter-spacing:0}.lobby-spymasters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:min(1100px,100%);margin:0 auto 14px}.lobby-spymaster{display:flex;flex-direction:column;gap:6px;padding:12px;border:1px solid currentColor;border-inline-width:3px;border-radius:5px}.lobby-spymaster[data-team=red]{color:var(--text-red)}.lobby-spymaster[data-team=blue]{color:var(--text-blue)}@media(min-width:901px){.room-screen:not(.is-lobby) .game-stage{padding:12px clamp(12px,1.5vw,28px)}.room-screen:not(.is-lobby) .stage-layout{width:100%;max-width:1800px;grid-template-columns:clamp(180px,17vw,240px) minmax(0,1fr) clamp(240px,23vw,330px);grid-template-rows:minmax(0,1fr) auto;gap:12px 16px}.room-screen:not(.is-lobby) .room-sidebar{display:contents}.room-screen:not(.is-lobby) .board-area{grid-column:2;grid-row:1}.room-screen:not(.is-lobby) .controls-strip{grid-column:2;grid-row:2}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel{grid-column:1;grid-row:1 / -1;height:100%;max-height:none}.room-screen:not(.is-lobby) #sheet-feed.persistent-panel{grid-column:3;grid-row:1 / -1;height:100%;min-height:0;max-height:none}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel .sheet-body{height:100%;max-height:none;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) minmax(0,1fr) auto auto;gap:12px;padding:12px}.room-screen:not(.is-lobby) #sheet-teams .team-panel{grid-column:1;min-height:0}.room-screen:not(.is-lobby) #sheet-teams .team-red{grid-row:2}.room-screen:not(.is-lobby) #sheet-teams .team-blue{grid-row:3}.room-screen:not(.is-lobby) #sheet-teams .spectator-roster{grid-row:4}.room-screen:not(.is-lobby) #sheet-teams .sidebar-actions{grid-row:5}.room-screen:not(.is-lobby) #sheet-teams .player-list{height:auto;max-height:none;flex:1 1 auto}.room-screen:not(.is-lobby) #sheet-teams .team-player-name{white-space:normal;overflow-wrap:anywhere}.room-screen:not(.is-lobby) #sheet-teams .team-player-item{height:auto;min-height:44px;flex-basis:auto}.room-screen:not(.is-lobby) #sheet-teams .roster-overflow-note{display:none}}@media(max-width:900px){.room-screen .bar-tabs{grid-template-columns:minmax(0,1fr) auto auto}.room-screen .bar-tab[data-panel=settings]{grid-column:2}.room-screen .bar-tabs-right{grid-column:3}.room-screen:not(.is-lobby) .bar-tab[data-panel=settings] .bar-tab-label{display:inline}}html[data-theme=dark]{--desk: #101720;--desk-dark: #0b1119;--paper: #1b2633;--paper-light: #233140;--paper-dark: #15202c;--paper-warm: #202d3a;--ink: #edf2f7;--ink-light: #c4d0dd;--ink-faded: #a5b5c6;--ink-ghost: #8194a8;--border: #42566b;--border-dark: #32475d;--border-light: #384c60;--red: #ed7885;--red-stamp: #ef8b96;--red-light: #422835;--red-medium: #55313e;--blue: #79b5ef;--blue-stamp: #91c3f4;--blue-light: #203e58;--blue-medium: #294e6d;--neutral-color: #a5afba;--neutral-light: #303c49;--accent: #c9ae7b;--accent-light: #534936;--focus-ring: #ebc986;--btn-primary-bg: #9ac3e7;--btn-primary-text: #132231;--btn-primary-hover: #b7d6f1;--btn-accent-hover: #dec48f;--room-code-bg: #111c28;--room-code-border: #4b6077;--card-bg: #243241;--card-border: #526478;--keycard-red-bg: #432b38;--keycard-red-border: #ad6978;--keycard-red-text: #ffb8c0;--keycard-blue-bg: #203e57;--keycard-blue-border: #658fb7;--keycard-blue-text: #b5d9ff;--revealed-red-start: #a84255;--revealed-red-end: #863649;--revealed-blue-start: #356e9d;--revealed-blue-end: #29597f;--revealed-neutral-start: #aab2bc;--revealed-neutral-end: #929eaa;--revealed-neutral-text: #172330}html[data-theme=dark] body,html[data-theme=dark] .room-screen{background:#101720}html[data-theme=dark] .room-screen{--text-red: #ffabb6;--text-blue: #9bcbff;--keycard-red-text: #ffb8c0;--keycard-blue-text: #b5d9ff}html[data-theme=dark] .room-screen .game-stage{background:radial-gradient(ellipse at top,#1a2938,#101720 75%)}html[data-theme=dark] .room-screen .persistent-panel,html[data-theme=dark] .room-screen .bottom-bar,html[data-theme=dark] .room-screen .bottom-bar-status{background:#1b2633}html[data-theme=dark] .room-screen .card:not(.revealed){background-image:none;box-shadow:inset 0 0 0 1px #ffffff05}html[data-theme=dark] .room-screen .card.keycard.assassin,html[data-theme=dark] .room-screen .card.finished-reveal.assassin{background:#090d13;border-color:#71849a}html[data-theme=dark] .room-screen .feed-guess.neutral{color:#c4ccd6}html[data-theme=dark] .room-screen .ctrl-panel{background:#1b2633}.room-screen #sheet-teams .roster-title{display:block}.room-screen #sheet-teams.persistent-panel{height:508px;max-height:none}.room-screen #sheet-teams.persistent-panel .sheet-body{height:100%;max-height:none;padding:12px;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:180px 156px 124px}.room-screen #sheet-teams .team-panel{margin:0;min-height:0;height:100%}.room-screen #sheet-teams .team-red{grid-column:1;grid-row:1}.room-screen #sheet-teams .team-blue{grid-column:2;grid-row:1}.room-screen #sheet-teams .team-head{flex:none;align-items:baseline;gap:6px}.room-screen #sheet-teams .team-head h3{font-size:15px;line-height:19px}.room-screen #sheet-teams .player-list{height:auto;max-height:none;min-height:0;flex:1 1 0;overflow-y:auto}.room-screen #sheet-teams .spectator-roster{grid-column:1 / -1;grid-row:2;display:flex;flex-direction:column;min-height:0;height:100%;padding:10px;border:1px solid var(--border-light);border-radius:5px}.room-screen #sheet-teams .spectator-roster>strong{flex:none;font-size:15px;line-height:20px}.room-screen #sheet-teams .spectator-roster ul{flex:1 1 0;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;display:flex;flex-flow:row wrap;align-content:flex-start;align-items:flex-start;gap:6px;padding:8px 0 0;scrollbar-width:thin}.room-screen #sheet-teams .spectator-roster li{flex:0 0 auto;max-width:100%;padding:3px 7px;border:1px solid var(--border);border-radius:4px;background:var(--paper-light);color:var(--ink);font:14px/18px var(--font-body);overflow-wrap:anywhere}.room-screen #sheet-teams .spectator-roster .spectator-empty{border:0;padding:0;background:transparent;color:var(--ink-light)}.room-screen #sheet-teams .sidebar-actions{grid-column:1 / -1;grid-row:3;min-height:0;margin:0;align-content:flex-start;overflow-y:auto}@media(min-width:901px){.room-screen:not(.is-lobby) #sheet-teams.persistent-panel{height:100%}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel .sheet-body{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,.35fr) minmax(0,.35fr) minmax(0,.3fr) 96px}.room-screen:not(.is-lobby) #sheet-teams .team-red{grid-column:1;grid-row:1}.room-screen:not(.is-lobby) #sheet-teams .team-blue{grid-column:1;grid-row:2}.room-screen:not(.is-lobby) #sheet-teams .spectator-roster{grid-row:3}.room-screen:not(.is-lobby) #sheet-teams .sidebar-actions{grid-row:4}}.room-screen #sheet-teams .team-none{color:var(--ink-light);border-left:3px solid currentColor;cursor:pointer}.team-dot.none{background:var(--ink-light)}.room-screen #sheet-teams .team-panel .player-list{display:flex;flex-flow:row wrap;align-content:flex-start;align-items:flex-start;gap:4px;padding:0;margin:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scroll-snap-type:none}.room-screen #sheet-teams .team-panel .team-player-item,.room-screen #sheet-teams .team-panel .team-player-item:focus{display:inline-flex;flex:0 0 auto;align-items:baseline;flex-wrap:wrap;gap:0 4px;height:auto;min-height:0;max-width:100%;padding:2px 6px;border:1px solid var(--border);border-radius:4px;background:var(--paper-light);color:var(--ink);font:14px/18px var(--font-body)}.room-screen #sheet-teams .team-panel .team-player-name{font:inherit;color:inherit;white-space:normal;overflow:visible;overflow-wrap:anywhere;min-width:0}.room-screen #sheet-teams .team-panel .team-player-item.is-offline{color:var(--ink-faded)}.room-screen #sheet-teams .team-panel .team-player-item.speaking{border-color:var(--success);box-shadow:0 0 0 1px var(--success)}.room-screen #sheet-teams .chip-status{font-size:11px}.room-screen #sheet-teams .team-empty{border:0;padding:0;background:transparent;color:var(--ink-light);font:14px/20px var(--font-body)}@media(min-width:901px){.room-screen:not(.is-lobby) #sheet-teams.persistent-panel .sheet-body{grid-template-rows:minmax(0,.35fr) minmax(0,.35fr) minmax(0,.3fr)}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel:has(.sidebar-actions) .sheet-body{grid-template-rows:minmax(0,.35fr) minmax(0,.35fr) minmax(0,.3fr) 52px}}@media(max-width:900px){.room-screen:not(.is-lobby) #sheet-teams.persistent-panel{height:400px}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel .sheet-body{grid-template-rows:180px minmax(0,1fr)}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel:has(.sidebar-actions){height:452px}.room-screen:not(.is-lobby) #sheet-teams.persistent-panel:has(.sidebar-actions) .sheet-body{grid-template-rows:180px minmax(0,1fr) 40px}}.room-screen .score-bar{height:6px;border:0;border-radius:0}.room-screen .score-bar-red,.room-screen .score-bar-blue{flex:none;border-radius:0}.room-screen .score-bar-red{background:var(--red)}.room-screen .score-bar-blue{background:var(--blue)}.room-screen #hint-count-input{width:44px;padding:2px 0;font:700 24px/32px var(--font-body);text-align:center}@media(max-width:600px){.room-screen #hint-count-input{width:38px;font-size:22px}}@media(max-height:700px){.join-screen{padding:12px}.join-card{padding:24px 24px 18px}.join-header{margin-bottom:16px}.join-subtitle,.join-note{min-height:0}.join-form{gap:12px}.join-actions{margin-top:0}.join-footer{margin-top:14px;padding-top:10px}}@media(max-width:400px)and (max-height:700px){.join-screen{padding:10px}.join-card{padding:20px 14px 14px}}@media(min-width:540px)and (max-height:500px){.join-card{max-width:760px;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);grid-template-rows:1fr auto;gap:12px 24px;padding:18px 20px}.join-header{align-self:end;margin-bottom:0}.join-form{grid-column:2;grid-row:1 / 3;gap:8px;justify-content:center}.join-footer{grid-column:1;margin-top:0}.join-card .logo-title{font-size:1.6rem}.join-card .dossier-stamp{top:8px;right:auto;left:-12px;font-size:.65rem}}.join-row input{min-width:0}@media(max-width:539px)and (max-height:540px){.join-card{padding:16px 14px 12px}.join-header{margin-bottom:10px}.join-form{gap:8px}.join-footer{margin-top:10px;padding-top:8px}}.room-screen.is-lobby{height:100dvh;min-height:0}.room-screen.is-lobby .game-stage{padding:12px clamp(10px,2vw,24px);gap:10px}.room-screen.is-lobby .lobby-intro{flex:none;margin:0 auto}.room-screen.is-lobby .lobby-intro h2{margin-bottom:2px}.room-screen.is-lobby .lobby-intro p{max-width:none}.room-screen.is-lobby .lobby-spymasters{flex:none;margin-bottom:0}.room-screen.is-lobby .stage-layout{flex:1;min-height:0}.room-screen.is-lobby .room-sidebar{height:100%;min-height:0;align-items:stretch;gap:12px}.room-screen.is-lobby #sheet-teams.persistent-panel,.room-screen.is-lobby #sheet-feed.persistent-panel{height:100%;min-height:0;max-height:none}.room-screen.is-lobby #sheet-teams.persistent-panel .sheet-body{grid-template-rows:minmax(0,1fr) minmax(0,1fr) auto;gap:8px;padding:10px}.room-screen.is-lobby #sheet-teams .sidebar-actions{overflow:visible;gap:6px}.room-screen.is-lobby #sheet-teams .readiness-note{margin:0;font-size:16px;line-height:20px}.room-screen.is-lobby #start-game-btn{min-height:38px;padding:6px 12px}.room-screen.is-lobby #sheet-feed .sheet-body{height:100%;min-height:0;padding:10px;gap:6px}.room-screen.is-lobby #sheet-feed .chat-form{margin-top:0}@media(max-width:900px){.room-screen.is-lobby .room-sidebar{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1.6fr) minmax(0,1fr);gap:8px}.room-screen.is-lobby .game-stage{gap:6px;padding:8px 10px}.room-screen.is-lobby .lobby-intro h2{font-size:22px;line-height:26px}.room-screen.is-lobby .lobby-intro p{font-size:16px;line-height:19px}.room-screen.is-lobby .lobby-spymasters{gap:8px}.room-screen.is-lobby .lobby-spymaster{padding:6px;gap:4px;font-size:15px;line-height:18px}.room-screen.is-lobby #sheet-teams.persistent-panel .sheet-body{padding:6px;gap:6px}.room-screen.is-lobby #sheet-teams .team-panel{padding:4px 6px;gap:4px}.room-screen.is-lobby #sheet-teams .team-head h3{font-size:14px;line-height:17px}.room-screen.is-lobby #sheet-feed .sheet-title{font-size:16px;line-height:20px;margin:0}}@media(max-width:900px){.room-screen.is-lobby #sheet-teams .sidebar-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.room-screen.is-lobby #sheet-teams .readiness-note{font-size:14px;line-height:17px}.room-screen.is-lobby #start-game-btn{min-width:0;font-size:12px;padding:6px 8px}.room-screen.is-lobby #prune-btn{grid-column:1 / -1}.room-screen.is-lobby #sheet-teams .team-head{flex-wrap:nowrap;padding-right:0}.room-screen.is-lobby #sheet-teams .team-head h3{font-size:13px}.room-screen.is-lobby #sheet-feed .sheet-body{padding:6px;gap:4px}}@media(min-width:540px)and (max-height:500px){.room-screen.is-lobby .game-stage{display:grid;grid-template-columns:minmax(0,.65fr) minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.room-screen.is-lobby .lobby-intro{grid-column:1;grid-row:1}.room-screen.is-lobby .lobby-spymasters{grid-column:2 / 4;grid-row:1}.room-screen.is-lobby .stage-layout{grid-column:1 / -1;grid-row:2;height:100%}.room-screen.is-lobby .room-sidebar{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.room-screen.is-lobby .lobby-intro h2{font-size:18px;line-height:20px}.room-screen.is-lobby .lobby-intro p{font-size:13px;line-height:15px}}@media(max-width:539px)and (max-height:600px){.room-screen.is-lobby .lobby-intro h2{font-size:20px;line-height:22px}.room-screen.is-lobby .lobby-intro p{font-size:14px;line-height:16px}.room-screen.is-lobby .game-stage{gap:4px;padding-block:4px}.room-screen.is-lobby .lobby-spymaster{font-size:13px;line-height:16px;padding:4px}.room-screen.is-lobby .spymaster-vacancy{min-height:30px;padding:3px;font-size:14px}}@media(min-width:540px)and (max-height:500px){.room-screen.is-lobby #sheet-teams.persistent-panel .sheet-body{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:minmax(64px,1fr) auto}.room-screen.is-lobby #sheet-teams .spectator-roster{grid-column:3;grid-row:1}.room-screen.is-lobby #sheet-teams .sidebar-actions{grid-row:2}.room-screen.is-lobby .lobby-intro p{font-size:12px;line-height:13px}}.room-screen.is-lobby .room-sidebar{min-height:220px}@media(max-width:900px)and (min-height:501px),(max-width:539px){.room-screen.is-lobby .room-sidebar{min-height:310px}}@media(min-width:540px)and (max-height:500px){.room-screen.is-lobby .room-sidebar{min-height:140px}}@media(min-width:540px)and (max-width:900px)and (max-height:500px){.room-screen.is-lobby .bar-tabs{grid-template-columns:minmax(0,1fr) auto auto auto}.room-screen.is-lobby .voice-dropdown{grid-column:3;grid-row:1}.room-screen.is-lobby .bar-tabs-right{grid-column:4}}
