:root,[data-theme=light]{--bg: #faf6f1;--bg-secondary: #f0e8df;--bg-tertiary: #e8ddd0;--surface: #ffffff;--surface-hover: #f8f5f2;--surface-elevated: #ffffff;--accent: #00897b;--accent-hover: #00796b;--accent-light: rgba(0, 137, 123, .1);--accent-lighter: rgba(0, 137, 123, .05);--text: #1a1a1a;--text-secondary: #5a5a5a;--text-tertiary: #999;--border: #e0d6cc;--border-light: #ebe5dc;--success: #2e7d32;--success-bg: #e8f5e9;--warning: #e65100;--warning-bg: #fff3e0;--danger: #c62828;--danger-bg: #ffebee;--shadow-sm: 0 1px 3px rgba(0,0,0,.06);--shadow: 0 2px 8px rgba(0,0,0,.08);--shadow-lg: 0 8px 30px rgba(0,0,0,.1);--shadow-xl: 0 12px 40px rgba(0,0,0,.12);--radius: 10px;--radius-lg: 16px;--radius-xl: 20px;--card-shadow: 0 2px 8px rgba(0,0,0,.1);--overlay: rgba(0,0,0,.4)}[data-theme=dark]{--bg: #121218;--bg-secondary: #1a1a24;--bg-tertiary: #242430;--surface: #1e1e2a;--surface-hover: #262634;--surface-elevated: #2a2a3a;--accent: #4db6ac;--accent-hover: #26a69a;--accent-light: rgba(77, 182, 172, .15);--accent-lighter: rgba(77, 182, 172, .06);--text: #e8e8f0;--text-secondary: #a0a0b0;--text-tertiary: #606070;--border: #2e2e40;--border-light: #252535;--success: #66bb6a;--success-bg: rgba(102, 187, 106, .12);--warning: #ffb74d;--warning-bg: rgba(255, 183, 77, .12);--danger: #ef5350;--danger-bg: rgba(239, 83, 80, .12);--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow: 0 2px 8px rgba(0,0,0,.4);--shadow-lg: 0 8px 30px rgba(0,0,0,.5);--shadow-xl: 0 12px 40px rgba(0,0,0,.6);--radius: 10px;--radius-lg: 16px;--radius-xl: 20px;--card-shadow: 0 2px 12px rgba(0,0,0,.4);--overlay: rgba(0,0,0,.6)}*{margin:0;padding:0;box-sizing:border-box}html{height:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s,color .3s;line-height:1.5}#root{min-height:100vh}h1,h2,h3,h4{font-family:Playfair Display,Georgia,serif;font-weight:700;line-height:1.2}.theme-toggle{position:fixed;top:14px;right:14px;z-index:200;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--border);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;padding:0;color:var(--text-secondary)}.theme-toggle-dot{width:12px;height:12px;border-radius:50%;transition:all .2s}.theme-toggle-filled .theme-toggle-dot{background:var(--text-secondary)}.theme-toggle-outline .theme-toggle-dot{background:transparent;border:2px solid var(--text-secondary)}.theme-toggle:hover{border-color:var(--accent);transform:scale(1.1)}.theme-toggle:hover .theme-toggle-dot{background:var(--accent);border-color:var(--accent)}.theme-toggle:active{transform:scale(.95)}.info-toggle{position:fixed;top:14px;right:58px;z-index:200;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--border);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;font-family:Inter,sans-serif;font-size:1rem;font-weight:700;padding:0;color:var(--text-secondary)}.info-toggle:hover{border-color:var(--accent);color:var(--accent);transform:scale(1.1)}.info-toggle:active{transform:scale(.95)}.btn{font-family:Inter,sans-serif;font-weight:600;font-size:.9rem;padding:11px 24px;border-radius:var(--radius);border:none;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;gap:8px;letter-spacing:.01em}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 2px 8px #00897b40}.btn-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 4px 14px #00897b4d;transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--surface);color:var(--text);border:1.5px solid var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-lighter)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:8px 16px}.btn-ghost:hover:not(:disabled){color:var(--accent);background:var(--accent-lighter)}.btn-large{font-size:1rem;padding:14px 32px;border-radius:var(--radius-lg)}.input{font-family:Inter,sans-serif;font-size:.95rem;padding:11px 16px;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);width:100%;transition:border-color .2s,box-shadow .2s}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.input::placeholder{color:var(--text-tertiary)}.error-msg{background:var(--danger-bg);color:var(--danger);padding:10px 16px;border-radius:var(--radius);font-size:.85rem;margin-top:12px;border:1px solid currentColor;border-color:#c6282833}.error-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--danger);color:#fff;padding:10px 24px;border-radius:var(--radius);font-size:.85rem;font-weight:500;z-index:100;box-shadow:var(--shadow-lg);animation:toastIn .3s ease-out}.token{color:var(--accent);font-size:.95rem}.landing{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.landing-card{background:var(--surface);border-radius:var(--radius-xl);padding:48px 40px;max-width:400px;width:100%;box-shadow:var(--shadow-xl);text-align:center;border:1px solid var(--border-light)}.landing-title{font-size:2.6rem;color:var(--accent);margin-bottom:6px;letter-spacing:-.02em}.landing-subtitle{color:var(--text-secondary);margin-bottom:36px;font-size:.95rem}.landing-buttons,.landing-form{display:flex;flex-direction:column;gap:10px}.lobby{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.lobby-card{background:var(--surface);border-radius:var(--radius-xl);padding:40px 36px;max-width:440px;width:100%;box-shadow:var(--shadow-xl);text-align:center;border:1px solid var(--border-light)}.lobby-title{font-size:1.8rem;color:var(--accent);margin-bottom:24px}.room-code-section{margin-bottom:28px}.room-code-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:var(--text-tertiary);font-weight:600}.room-code-display{background:var(--bg-secondary);padding:14px 16px;border-radius:var(--radius-lg);margin:8px 0;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:14px;border:1.5px solid var(--border)}.room-code-display:hover{background:var(--bg-tertiary);border-color:var(--accent)}.room-code-display:active{transform:scale(.98)}.room-code-chars{display:flex;gap:6px;flex:1}.room-code-char{font-family:Inter,monospace;font-size:1.8rem;font-weight:800;color:var(--text);background:var(--surface);border:1.5px solid var(--border);border-radius:8px;flex:1;aspect-ratio:1 / 1.15;display:flex;align-items:center;justify-content:center;line-height:1;transition:border-color .2s}.room-code-display:hover .room-code-char{border-color:var(--accent)}.copy-icon{font-size:1rem;opacity:.5;flex-shrink:0}.room-code-hint{font-size:.72rem;color:var(--text-tertiary);min-height:1.2em}.player-list{text-align:left;margin-bottom:24px}.player-list h3{font-size:.95rem;margin-bottom:10px;color:var(--text-secondary)}.player-list-item{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-secondary);border-radius:var(--radius);margin-bottom:6px;border:1.5px solid transparent;transition:border-color .2s}.player-list-item.is-you{border-color:var(--accent);background:var(--accent-lighter)}.player-name{flex:1;font-weight:500;font-size:.92rem}.host-badge,.you-badge,.disconnected-badge{font-size:.65rem;padding:2px 8px;border-radius:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.host-badge{background:var(--warning-bg);color:var(--warning)}.you-badge{background:var(--accent-light);color:var(--accent)}.disconnected-badge{background:var(--danger-bg);color:var(--danger)}.waiting-text{color:var(--text-tertiary);font-style:italic;font-size:.9rem;margin-top:16px}.token-info{margin:20px auto 0;font-size:.82rem;color:var(--text-tertiary);background:var(--bg-secondary);padding:8px 14px;border-radius:var(--radius);width:fit-content}.game-over{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.game-over-card{background:var(--surface);border-radius:var(--radius-xl);padding:48px 40px;max-width:440px;width:100%;box-shadow:var(--shadow-xl);text-align:center;border:1px solid var(--border-light)}.game-over-title{font-size:2rem;color:var(--text);margin-bottom:20px}.game-over-winner{margin-bottom:32px}.winner-crown{font-size:3rem;color:var(--accent);display:block;margin-bottom:8px;animation:tokenBounce .6s ease-out}.game-over-winner h2{font-size:1.6rem;color:var(--accent)}.game-over-winner p{color:var(--text-secondary);font-size:.9rem;margin-top:4px}.final-standings{margin-bottom:28px;text-align:left}.final-standings h3{font-size:1rem;margin-bottom:12px;color:var(--text-secondary)}.final-standing-row{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--bg-secondary);border-radius:var(--radius);margin-bottom:6px;border:1.5px solid transparent}.final-standing-row.is-winner{background:var(--accent-lighter);border-color:var(--accent)}.standing-rank{font-weight:700;color:var(--text-tertiary);min-width:28px;font-size:.85rem}.standing-name{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.standing-tokens{flex-shrink:0;white-space:nowrap;font-size:.85rem;font-weight:600;color:var(--accent)}@media (max-width: 480px){.landing-card{padding:36px 24px;border-radius:var(--radius-lg)}.landing-title{font-size:2.1rem}.lobby-card{padding:28px 20px;border-radius:var(--radius-lg)}.lobby-title{font-size:1.5rem}.room-code-display{padding:10px;gap:8px}.room-code-chars{gap:4px}.room-code-char{font-size:1.2rem;border-radius:6px}.room-code-label,.room-code-hint{font-size:.65rem}.game-over-card{padding:36px 24px}.game-over-title{font-size:1.6rem}.game-over-winner h2{font-size:1.3rem}.winner-crown{font-size:2.4rem}.info-toggle{width:32px;height:32px;top:10px;right:50px;font-size:.9rem}.theme-toggle{width:32px;height:32px;top:10px;right:10px;font-size:1rem}}.card{border-radius:var(--radius);overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;flex-shrink:0;transition:transform .2s,box-shadow .2s,border-color .2s}.card-small{width:44px;height:62px;font-size:.6rem;border-radius:6px}.card-medium{width:88px;height:128px;font-size:.72rem}.card-large{width:120px;height:180px;font-size:.82rem}.card-back{background:linear-gradient(145deg,var(--accent),var(--accent-hover));border:2px solid var(--accent);display:flex;align-items:center;justify-content:center}.card-back-pattern{opacity:.25}.card-back-icon{font-size:1.3em;color:#fff}.card-face{background:var(--surface);border:2px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 3px 2px;box-shadow:var(--card-shadow)}.card-stripe{position:absolute;top:0;left:0;right:0;height:4px;background:var(--card-color, #999)}.card-corner-value{position:absolute;top:6px;left:7px;font-family:Playfair Display,serif;font-weight:700;font-size:.95em;color:var(--card-color, #999);line-height:1}.card-small .card-corner-value{top:3px;left:4px;font-size:.8em}.card-icon{font-size:1.8em;line-height:1;margin-top:6px}.card-small .card-icon{font-size:1.2em;margin-top:3px}.card-name{font-family:Playfair Display,serif;font-weight:600;font-size:.8em;color:var(--text);text-align:center;line-height:1.1;margin-top:1px}.card-small .card-name{font-size:.65em}.card-effect{font-family:Inter,sans-serif;font-size:.5em;color:var(--text-secondary);text-align:center;line-height:1.25;padding:1px 4px;margin-top:2px;max-height:4em;overflow:hidden}.card-large .card-icon{font-size:2.2em;margin-top:10px}.card-large .card-name{font-size:.95em;margin-top:3px}.card-large .card-effect{font-size:.65em;padding:2px 4px;max-height:5em}.card-large .card-corner-value{font-size:1.1em;top:8px;left:8px}.card-clickable{cursor:pointer}.card-clickable:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--card-color, var(--accent))}.card-disabled{opacity:.4;cursor:default;filter:grayscale(.3)}.card-disabled:hover{transform:none;box-shadow:var(--card-shadow);border-color:var(--border)}.card-highlighted{border-color:var(--warning);box-shadow:0 0 0 3px #e6510040;animation:pulse 1.5s infinite}.card-selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);transform:translateY(-8px)}@media (max-width: 768px){.card-small{width:38px;height:54px;font-size:.52rem}.card-medium{width:70px;height:102px;font-size:.62rem}.card-large{width:100px;height:150px;font-size:.75rem}.card-effect{font-size:.48em;max-height:3.5em}.card-large .card-effect{font-size:.6em;max-height:4.5em}.card-small .card-icon{font-size:1em}.card-small .card-corner-value{font-size:.7em}}@media (max-width: 480px){.card-small{width:34px;height:48px;font-size:.48rem;border-radius:5px}.card-medium{width:58px;height:84px;font-size:.55rem}.card-large{width:86px;height:130px;font-size:.68rem}.card-icon{font-size:1.5em}.card-large .card-icon{font-size:1.7em;margin-top:6px}.card-effect{font-size:.45em;padding:1px 2px;max-height:3em}.card-large .card-effect{font-size:.58em;max-height:4.5em}.card-name{font-size:.7em}.card-large .card-name{font-size:.8em}.card-stripe{height:3px}.card-clickable:hover{transform:none;box-shadow:var(--card-shadow)}.card-clickable:active{transform:scale(.96);border-color:var(--card-color, var(--accent))}.card-selected{transform:translateY(-5px)}}.game-board{display:grid;grid-template-rows:auto auto auto 1fr;height:100vh;height:100dvh;max-width:880px;margin:0 auto;padding:12px 16px;gap:10px;overflow:hidden}.board-header{display:flex;align-items:center;gap:12px;padding:10px 110px 10px 16px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-wrap:wrap;border:1px solid var(--border-light)}.round-info{font-family:Playfair Display,serif;font-weight:700;font-size:1rem;color:var(--accent)}.deck-count{font-size:.85rem;font-weight:600;color:var(--text-secondary)}.face-up-cards{display:flex;align-items:center;gap:6px;margin-left:auto}.face-up-cards .card-icon{font-size:2.2em}.face-up-cards .card-name{font-size:.95em}.face-up-cards .card-corner-value{font-size:1.1em}.face-up-label{font-size:.75rem;font-weight:600;color:var(--text-secondary);white-space:nowrap}.other-players-area{display:flex;gap:8px;flex-wrap:wrap;align-content:start}.other-player{background:var(--surface);border-radius:var(--radius);padding:8px 9px;box-shadow:var(--shadow-sm);flex:1;min-width:105px;max-width:158px;border:1.5px solid transparent;transition:all .25s}.other-player.current-turn{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-light),var(--shadow)}.other-player.eliminated{opacity:.45}.other-player.disconnected{opacity:.55}.other-player-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.other-player-name{font-weight:600;font-size:.75rem;display:flex;align-items:center;gap:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.turn-indicator{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;animation:pulse 1.5s infinite}.other-player-token-count{font-size:.65rem;font-weight:600;color:var(--danger);flex-shrink:0}.other-player-status{margin-bottom:2px;font-size:.6rem}.status-eliminated{color:var(--danger);font-weight:600}.status-protected{color:var(--success);font-weight:600}.status-disconnected{color:var(--text-tertiary);font-weight:500}.other-player-cards{display:flex;gap:3px;margin-bottom:4px}.other-player-discard{display:flex;gap:2px;flex-wrap:wrap;border-top:1px solid var(--border-light);padding-top:5px;margin-top:4px}.middle-area{display:flex;gap:12px;overflow:hidden;min-height:60px}.player-hand{background:var(--surface);border-radius:var(--radius-lg);padding:14px 18px;box-shadow:var(--shadow);border:1px solid var(--border-light)}.hand-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.hand-label{font-family:Playfair Display,serif;font-size:.95rem;font-weight:700}.your-tokens{display:flex;align-items:center;gap:4px}.token-count{font-size:.78rem;color:var(--text-secondary);font-weight:600;margin-left:3px}.hand-cards{display:flex;gap:10px;justify-content:center}.turn-prompt{text-align:center;margin-top:8px;font-weight:600;font-size:.88rem;color:var(--accent);animation:pulse 1.5s infinite}.forced-prompt{text-align:center;margin-top:6px;font-weight:600;font-size:.85rem;color:var(--warning)}.eliminated-prompt{text-align:center;margin-top:6px;font-size:.85rem;color:var(--danger);font-style:italic}.game-log{flex:1;background:var(--surface);border-radius:var(--radius);padding:10px 12px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-light)}.log-title{font-size:.75rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}.log-entries{overflow-y:auto;flex:1;min-height:0}.log-entry{font-size:.78rem;padding:3px 0;border-bottom:1px solid var(--border-light);color:var(--text-secondary);line-height:1.35}.log-entry:last-child{border-bottom:none}.log-private{color:var(--accent);font-weight:500}@media (max-width: 768px){.game-board{padding:8px 10px;gap:6px}.board-header{padding:8px 110px 8px 12px;gap:8px}.face-up-cards{margin-left:0;flex-wrap:wrap}.other-players-area{flex-wrap:nowrap;overflow-x:auto;gap:6px;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.other-players-area::-webkit-scrollbar{display:none}.other-player{min-width:94px;max-width:116px;padding:6px 8px;flex-shrink:0}.other-player-name{font-size:.68rem}.game-log{padding:8px 10px}.log-entry{font-size:.72rem;padding:2px 0}.player-hand{padding:10px 12px}.hand-cards{gap:8px}.turn-prompt,.forced-prompt,.eliminated-prompt{font-size:.8rem}}@media (max-width: 480px){.game-board{padding:4px 6px;gap:4px}.board-header{padding:6px 92px 6px 10px;gap:6px;border-radius:8px}.round-info{font-size:.88rem}.deck-count{font-size:.72rem}.other-players-area{gap:5px}.other-player{min-width:81px;max-width:101px;padding:5px 6px;border-radius:8px}.other-player-name{font-size:.6rem}.other-player-status{font-size:.5rem}.log-entry{font-size:.68rem}.player-hand{padding:8px 10px;border-radius:var(--radius)}.hand-header{margin-bottom:6px}.hand-label{font-size:.82rem}.token-count{font-size:.68rem}.hand-cards{gap:6px}.turn-prompt,.forced-prompt,.eliminated-prompt{font-size:.75rem;margin-top:4px}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px;animation:fadeIn .2s ease-out;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.modal{background:var(--surface);border-radius:var(--radius-xl);padding:32px;max-width:440px;width:100%;box-shadow:var(--shadow-xl);animation:modalIn .25s ease-out;max-height:90vh;overflow-y:auto;border:1px solid var(--border-light)}.modal h3{font-size:1.25rem;margin-bottom:16px;color:var(--text)}.modal-note{font-size:.82rem;color:var(--text-secondary);margin-bottom:16px;line-height:1.4}.modal-section{margin-bottom:18px}.modal-label{display:block;font-size:.78rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.modal-actions{display:flex;gap:8px;margin-top:20px}.target-list{display:flex;flex-direction:column;gap:5px}.target-btn{padding:11px 16px;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:.9rem;font-weight:500;cursor:pointer;text-align:left;transition:all .15s;font-family:Inter,sans-serif;color:var(--text)}.target-btn:hover{border-color:var(--accent);background:var(--accent-lighter)}.target-btn.selected{border-color:var(--accent);background:var(--accent-light);color:var(--accent);font-weight:600}.guess-list{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.guess-btn{padding:8px 4px;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;text-align:center;transition:all .15s;font-family:Inter,sans-serif;color:var(--text)}.guess-btn:hover{border-color:var(--accent);background:var(--accent-lighter)}.guess-btn.selected{border-color:var(--accent);background:var(--accent-light)}.guess-value{display:block;font-weight:700;font-size:1.05rem;font-family:Playfair Display,serif;color:var(--text)}.guess-name{display:block;font-size:.65rem;color:var(--text-secondary);margin-top:1px}.modal-chancellor .chancellor-cards{display:flex;gap:10px;justify-content:center;margin:20px 0}.chancellor-info{text-align:center;font-size:.85rem;color:var(--text-secondary);margin-bottom:12px}.priest-reveal-card{display:flex;justify-content:center;margin:16px 0}.modal-round-summary{max-width:460px;text-align:center}.modal-round-summary h2{font-size:1.4rem;color:var(--text);margin-bottom:18px}.round-winner{margin-bottom:20px;padding:16px;background:var(--accent-light);border-radius:var(--radius);border:1px solid var(--accent)}.winner-label{font-family:Playfair Display,serif;font-size:1.25rem;font-weight:700;color:var(--accent);display:block}.winner-reason{font-size:.78rem;color:var(--text-secondary);margin-top:4px}.revealed-hands{margin-bottom:16px;text-align:left}.revealed-hands h4{font-size:.85rem;margin-bottom:8px;color:var(--text-secondary)}.revealed-hand{display:flex;align-items:center;gap:10px;padding:5px 0}.revealed-name{font-weight:500;min-width:80px;font-size:.88rem}.spy-bonus{background:var(--warning-bg);color:var(--warning);padding:10px 16px;border-radius:var(--radius);font-size:.85rem;font-weight:600;margin-bottom:16px;animation:tokenBounce .6s ease-out}.round-standings{text-align:left;margin-bottom:20px}.round-standings h4{font-size:.85rem;margin-bottom:8px;color:var(--text-secondary)}.standing-row{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;background:var(--bg-secondary);border-radius:6px;margin-bottom:4px;font-size:.85rem}.modal-help{max-width:520px;text-align:left}.modal-help h3{text-align:center;margin-bottom:20px}.help-section{margin-bottom:18px}.help-section h4{font-size:.9rem;color:var(--accent);margin-bottom:8px}.help-section p,.help-section li{font-size:.82rem;color:var(--text-secondary);line-height:1.5}.help-section ol,.help-section ul{padding-left:18px}.help-section li{margin-bottom:4px}.help-cards-table{width:100%;border-collapse:collapse;font-size:.78rem;margin-top:6px}.help-cards-table th{text-align:left;padding:5px 6px;font-weight:600;color:var(--text-secondary);border-bottom:1.5px solid var(--border);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.help-cards-table td{padding:5px 6px;border-bottom:1px solid var(--border-light);color:var(--text-secondary);vertical-align:top}.help-cards-table td:first-child{font-weight:700;color:var(--text);white-space:nowrap}@media (max-width: 768px){.modal-overlay{padding:0;align-items:flex-end}.modal{padding:24px 20px;max-height:88vh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:slideUp .3s ease-out}.modal h3{font-size:1.1rem}.target-btn{padding:12px 14px}.modal-chancellor .chancellor-cards{gap:8px}.modal-round-summary h2{font-size:1.15rem}}@media (max-width: 480px){.modal{padding:20px 16px;max-height:92vh}.modal h3{font-size:1rem}.modal-note{font-size:.75rem}.guess-list{gap:3px}.guess-btn{padding:6px 3px}.guess-value{font-size:.9rem}.guess-name{font-size:.55rem}.target-btn{padding:10px 12px;font-size:.85rem}.standing-row{font-size:.78rem;padding:5px 8px}.help-cards-table{font-size:.7rem}.help-cards-table th{font-size:.62rem;padding:4px}.help-cards-table td{padding:4px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes tokenBounce{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.game-board,.other-player{animation:fadeIn .3s ease-out}.player-hand{animation:slideUp .35s ease-out}.hand-cards .card{animation:slideUp .3s ease-out}.card-clickable:not(.card-disabled):active{transform:translateY(-2px) scale(.98)}body,.card-face,.modal,.game-log,.other-player,.player-hand,.board-header,.landing-card,.lobby-card,.game-over-card{transition:background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease}:root,[data-theme=light]{--cn-red: #d32f2f;--cn-red-light: rgba(211, 47, 47, .12);--cn-red-bg: #ffcdd2;--cn-blue: #1565c0;--cn-blue-light: rgba(21, 101, 192, .12);--cn-blue-bg: #bbdefb;--cn-neutral: #8d6e63;--cn-neutral-bg: #efebe9;--cn-assassin: #212121;--cn-assassin-bg: #424242;--cn-card-bg: #f5f0e8;--cn-card-border: #d4c9b8;--cn-card-hover: #ede6da}[data-theme=dark]{--cn-red: #ef5350;--cn-red-light: rgba(239, 83, 80, .18);--cn-red-bg: #b71c1c;--cn-blue: #42a5f5;--cn-blue-light: rgba(66, 165, 245, .18);--cn-blue-bg: #0d47a1;--cn-neutral: #a1887f;--cn-neutral-bg: #4e342e;--cn-assassin: #e0e0e0;--cn-assassin-bg: #1a1a1a;--cn-card-bg: #2a2a3a;--cn-card-border: #3a3a4a;--cn-card-hover: #333346}.game-picker{max-width:700px}.game-picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}.game-picker-option{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 16px;border:2px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);cursor:pointer;transition:all .2s ease}.game-picker-option:hover{border-color:var(--accent);background:var(--surface-hover);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.game-picker-icon{font-size:2.5rem;line-height:1}.game-picker-name{font-size:1.2rem;font-weight:700;color:var(--text)}.game-picker-info{font-size:.8rem;color:var(--text-tertiary)}.game-picker-desc{font-size:.85rem;color:var(--text-secondary);text-align:center}.cn-lobby{max-width:640px}.cn-unassigned{margin-bottom:16px;padding:12px;background:var(--bg-secondary);border-radius:var(--radius)}.cn-unassigned h3{font-size:.9rem;color:var(--text-secondary);margin-bottom:8px}.cn-teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.cn-team{padding:16px;border-radius:var(--radius-lg);border:2px solid var(--border)}.cn-team-red{border-color:var(--cn-red);background:var(--cn-red-light)}.cn-team-blue{border-color:var(--cn-blue);background:var(--cn-blue-light)}.cn-team-title{font-size:1.1rem;margin-bottom:12px;text-align:center}.cn-red-text{color:var(--cn-red)}.cn-blue-text{color:var(--cn-blue)}.cn-role-section{margin-bottom:12px}.cn-role-section h4{font-size:.85rem;color:var(--text-secondary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.cn-player-slot{padding:6px 10px;margin-bottom:4px;background:var(--surface);border-radius:var(--radius);font-size:.9rem;color:var(--text)}.cn-disconnected{opacity:.5}.cn-join-btn{width:100%;margin-top:4px}.cn-join-red{border-color:var(--cn-red);color:var(--cn-red)}.cn-join-blue{border-color:var(--cn-blue);color:var(--cn-blue)}.cn-board-container{min-height:100vh;padding:12px;display:flex;flex-direction:column;align-items:center;gap:10px;background:var(--bg)}.cn-scorebar{display:flex;gap:16px;justify-content:center;width:100%;max-width:600px}.cn-score{display:flex;flex-direction:column;align-items:center;padding:8px 24px;border-radius:var(--radius);opacity:.7;transition:all .3s ease}.cn-score-active{opacity:1;transform:scale(1.05)}.cn-score-red{background:var(--cn-red-light);color:var(--cn-red)}.cn-score-blue{background:var(--cn-blue-light);color:var(--cn-blue)}.cn-score-label{font-size:.75rem;text-transform:uppercase;letter-spacing:1px;font-weight:600}.cn-score-value{font-size:1.5rem;font-weight:700}.cn-role-badge{display:flex;align-items:center;gap:12px}.cn-badge{padding:4px 12px;border-radius:20px;font-size:.8rem;font-weight:600;text-transform:capitalize}.cn-badge-red{background:var(--cn-red-light);color:var(--cn-red)}.cn-badge-blue{background:var(--cn-blue-light);color:var(--cn-blue)}.cn-badge-none{background:var(--bg-secondary);color:var(--text-secondary)}.cn-room-code{font-size:.8rem;color:var(--text-tertiary);font-family:monospace}.cn-clue-display{display:flex;align-items:center;gap:10px;padding:8px 20px;border-radius:var(--radius);font-size:1rem}.cn-clue-red{background:var(--cn-red-light);color:var(--cn-red)}.cn-clue-blue{background:var(--cn-blue-light);color:var(--cn-blue)}.cn-clue-label{font-weight:500;opacity:.7}.cn-clue-display .cn-clue-word{font-weight:700;font-size:1.2rem;text-transform:uppercase}.cn-clue-for{font-weight:700;font-size:1.2rem}.cn-guesses-left{font-size:.8rem;opacity:.7}.cn-clue-waiting{font-style:italic;opacity:.8}.cn-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(4px,1vw,8px);width:100%;max-width:700px}.cn-card{aspect-ratio:1.4 / 1;display:flex;align-items:center;justify-content:center;padding:4px;border:2px solid var(--cn-card-border);border-radius:var(--radius);background:var(--cn-card-bg);cursor:default;transition:all .2s ease;position:relative;overflow:hidden}.cn-card-word{font-size:clamp(.55rem,1.8vw,.85rem);font-weight:700;text-transform:uppercase;text-align:center;line-height:1.1;color:var(--text);word-break:break-word}.cn-card-clickable{cursor:pointer;border-color:var(--accent)}.cn-card-clickable:hover{background:var(--cn-card-hover);transform:scale(1.03);box-shadow:var(--shadow)}.cn-card-revealed{border-color:transparent}.cn-card-revealed .cn-card-word{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3)}.cn-card-red{background:var(--cn-red)}.cn-card-blue{background:var(--cn-blue)}.cn-card-neutral{background:var(--cn-neutral)}.cn-card-assassin{background:var(--cn-assassin)}.cn-card-spymaster{border-style:dashed}.cn-card-sm-red{border-color:var(--cn-red);background:var(--cn-red-light)}.cn-card-sm-red .cn-card-word{color:var(--cn-red)}.cn-card-sm-blue{border-color:var(--cn-blue);background:var(--cn-blue-light)}.cn-card-sm-blue .cn-card-word{color:var(--cn-blue)}.cn-card-sm-neutral{border-color:var(--cn-neutral);background:var(--cn-neutral-bg)}.cn-card-sm-neutral .cn-card-word{color:var(--cn-neutral)}.cn-card-sm-assassin{border-color:var(--cn-assassin);background:var(--cn-assassin-bg)}.cn-card-sm-assassin .cn-card-word,[data-theme=dark] .cn-card-sm-assassin .cn-card-word{color:var(--cn-assassin)}.cn-card-unrevealed-final{opacity:.7}.cn-controls{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;max-width:700px;min-height:48px}.cn-clue-input{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center}.cn-clue-word-input{width:160px}.cn-clue-number{display:flex;align-items:center;gap:6px}.cn-stepper-btn{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700}.cn-clue-count{font-size:1.2rem;font-weight:700;min-width:24px;text-align:center;color:var(--text)}.cn-pass-btn{min-width:140px}.cn-waiting{font-size:.9rem;color:var(--text-secondary);font-style:italic}.cn-error{cursor:pointer}.cn-log{width:100%;max-width:700px;margin-top:8px}.cn-log-toggle{width:100%;text-align:center}.cn-log-entries{margin-top:6px;padding:8px;background:var(--bg-secondary);border-radius:var(--radius);max-height:200px;overflow-y:auto}.cn-log-entry{padding:4px 8px;font-size:.8rem;color:var(--text-secondary);border-left:3px solid transparent;margin-bottom:2px}.cn-log-red{border-left-color:var(--cn-red)}.cn-log-blue{border-left-color:var(--cn-blue)}.cn-gameover{text-align:center;padding:20px;border-radius:var(--radius-lg);margin-bottom:8px}.cn-gameover-red{background:var(--cn-red-light);color:var(--cn-red)}.cn-gameover-blue{background:var(--cn-blue-light);color:var(--cn-blue)}.cn-gameover-title{font-size:2rem;margin-bottom:4px}.cn-gameover-reason{font-size:1rem;opacity:.8}.cn-grid-gameover .cn-card{cursor:default}.cn-gameover-actions{display:flex;gap:12px;justify-content:center;margin-top:16px}@media (max-width: 768px){.game-picker-grid,.cn-teams-grid{grid-template-columns:1fr}.cn-grid{gap:3px}.cn-card-word{font-size:clamp(.5rem,2.5vw,.75rem)}.cn-scorebar{gap:10px}.cn-score{padding:6px 16px}.cn-score-value{font-size:1.2rem}}@media (max-width: 480px){.cn-board-container{padding:8px 4px;gap:6px}.cn-clue-input{flex-direction:column}.cn-clue-word-input{width:100%}.cn-card{border-radius:4px;border-width:1.5px}.cn-card-word{font-size:clamp(.45rem,3vw,.7rem)}.cn-clue-display{flex-wrap:wrap;justify-content:center;font-size:.9rem;padding:6px 12px}.cn-gameover-title{font-size:1.5rem}}:root,[data-theme=light]{--wl-orange: #e65100;--wl-orange-light: rgba(230, 81, 0, .12);--wl-orange-bg: #fff3e0;--wl-purple: #6a1b9a;--wl-purple-light: rgba(106, 27, 154, .12);--wl-purple-bg: #f3e5f5;--wl-spectrum-left: #ff7043;--wl-spectrum-right: #42a5f5;--wl-bullseye: rgba(76, 175, 80, .5);--wl-close: rgba(255, 193, 7, .4);--wl-near: rgba(255, 152, 0, .3)}[data-theme=dark]{--wl-orange: #ff9800;--wl-orange-light: rgba(255, 152, 0, .18);--wl-orange-bg: #4e2c00;--wl-purple: #ce93d8;--wl-purple-light: rgba(206, 147, 216, .18);--wl-purple-bg: #3a1a4e;--wl-spectrum-left: #ff8a65;--wl-spectrum-right: #64b5f6;--wl-bullseye: rgba(76, 175, 80, .55);--wl-close: rgba(255, 193, 7, .45);--wl-near: rgba(255, 152, 0, .35)}@media (min-width: 769px){.game-picker-grid{grid-template-columns:repeat(3,1fr)}}.wl-lobby{max-width:640px}.wl-unassigned{margin-bottom:16px;padding:12px;background:var(--bg-secondary);border-radius:var(--radius)}.wl-unassigned h3{font-size:.9rem;color:var(--text-secondary);margin-bottom:8px}.wl-teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.wl-team{padding:16px;border-radius:var(--radius-lg);border:2px solid var(--border)}.wl-team-orange{border-color:var(--wl-orange);background:var(--wl-orange-light)}.wl-team-purple{border-color:var(--wl-purple);background:var(--wl-purple-light)}.wl-team-title{font-size:1.1rem;margin-bottom:12px;text-align:center}.wl-orange-text{color:var(--wl-orange)}.wl-purple-text{color:var(--wl-purple)}.wl-team-members{display:flex;flex-direction:column;gap:4px}.wl-player-slot{padding:6px 10px;background:var(--surface);border-radius:var(--radius);font-size:.9rem;color:var(--text)}.wl-disconnected{opacity:.5}.wl-join-btn{width:100%;margin-top:4px}.wl-join-orange{border-color:var(--wl-orange);color:var(--wl-orange)}.wl-join-purple{border-color:var(--wl-purple);color:var(--wl-purple)}.wl-start-hint{font-size:.85rem;color:var(--text-secondary);font-style:italic;text-align:center;margin-top:8px}.wl-board-container{min-height:100vh;padding:12px;display:flex;flex-direction:column;align-items:center;gap:12px;background:var(--bg)}.wl-scorebar{display:flex;gap:16px;justify-content:center;width:100%;max-width:600px}.wl-score{display:flex;flex-direction:column;align-items:center;padding:8px 24px;border-radius:var(--radius);opacity:.7;transition:all .3s ease}.wl-score-active{opacity:1;transform:scale(1.05)}.wl-score-orange{background:var(--wl-orange-light);color:var(--wl-orange)}.wl-score-purple{background:var(--wl-purple-light);color:var(--wl-purple)}.wl-score-label{font-size:.75rem;text-transform:uppercase;letter-spacing:1px;font-weight:600}.wl-score-value{font-size:1.5rem;font-weight:700}.wl-role-badge{display:flex;align-items:center;gap:12px}.wl-badge{padding:4px 12px;border-radius:20px;font-size:.8rem;font-weight:600;text-transform:capitalize}.wl-badge-orange{background:var(--wl-orange-light);color:var(--wl-orange)}.wl-badge-purple{background:var(--wl-purple-light);color:var(--wl-purple)}.wl-badge-none{background:var(--bg-secondary);color:var(--text-secondary)}.wl-room-code{font-size:.8rem;color:var(--text-tertiary);font-family:monospace}.wl-spectrum{width:100%;max-width:600px}.wl-spectrum-labels{display:flex;justify-content:space-between;margin-bottom:8px;font-weight:600;font-size:.95rem;color:var(--text)}.wl-spectrum-label-left{color:var(--wl-spectrum-left)}.wl-spectrum-label-right{color:var(--wl-spectrum-right)}.wl-spectrum-bar{position:relative;height:40px;border-radius:20px;background:linear-gradient(to right,var(--wl-spectrum-left),var(--wl-spectrum-right));overflow:visible;-webkit-user-select:none;user-select:none}.wl-spectrum-interactive{cursor:crosshair}.wl-spectrum-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.8rem;color:#fffc;font-weight:600;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.3)}.wl-spectrum-marker{position:absolute;top:-8px;bottom:-8px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none;z-index:2}.wl-marker-line{width:3px;flex:1;border-radius:2px}.wl-marker-line-target{background:#f44336;box-shadow:0 0 6px #f4433699}.wl-marker-line-guess{background:#fff;box-shadow:0 0 6px #fff9}.wl-marker-label{font-size:.6rem;font-weight:700;letter-spacing:.5px;margin-top:2px;color:var(--text-secondary);white-space:nowrap}.wl-zone{position:absolute;top:0;bottom:0;border-radius:20px;pointer-events:none;animation:wl-zone-fade .5s ease forwards}.wl-zone-near{background:var(--wl-near);z-index:0;animation-delay:0s}.wl-zone-close{background:var(--wl-close);z-index:1;animation-delay:.2s}.wl-zone-bullseye{background:var(--wl-bullseye);z-index:1;animation-delay:.4s}@keyframes wl-zone-fade{0%{opacity:0}to{opacity:1}}.wl-controls{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:600px;min-height:48px}.wl-waiting{font-size:.9rem;color:var(--text-secondary);font-style:italic}.wl-error{cursor:pointer}.wl-clue-input{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center}.wl-clue-prompt{font-size:.9rem;font-weight:600;color:var(--text)}.wl-clue-word-input{width:160px}.wl-clue-display{display:flex;align-items:center;gap:10px;padding:8px 20px;border-radius:var(--radius);background:var(--bg-secondary);font-size:1rem}.wl-clue-label{font-weight:500;opacity:.7;color:var(--text-secondary)}.wl-clue-word{font-weight:700;font-size:1.2rem;text-transform:uppercase;color:var(--text)}.wl-counter-buttons{display:flex;flex-direction:column;align-items:center;gap:8px}.wl-counter-prompt{font-size:.9rem;font-weight:600;color:var(--text)}.wl-counter-actions{display:flex;gap:12px}.wl-counter-btn{min-width:100px;font-weight:700}.wl-reveal{display:flex;flex-direction:column;align-items:center;gap:8px}.wl-points-popup{display:flex;flex-direction:column;align-items:center;padding:12px 24px;border-radius:var(--radius-lg);animation:wl-pop .4s ease}.wl-points-bullseye{background:#4caf5033;color:#4caf50}.wl-points-close{background:#ffc10733;color:#f9a825}.wl-points-near{background:#ff980033;color:#ff9800}.wl-points-miss{background:#f4433633;color:#f44336}.wl-points-label{font-size:1.3rem;font-weight:700}.wl-points-value{font-size:1.8rem;font-weight:800}@keyframes wl-pop{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.wl-counter-result{font-size:.9rem;color:var(--text-secondary)}.wl-counter-correct{color:#4caf50;font-weight:700}.wl-counter-incorrect{color:#f44336;font-weight:700}.wl-log{width:100%;max-width:600px;margin-top:8px}.wl-log-entries{padding:8px;background:var(--bg-secondary);border-radius:var(--radius);max-height:150px;overflow-y:auto}.wl-log-entry{padding:4px 8px;font-size:.8rem;color:var(--text-secondary);border-left:3px solid transparent;margin-bottom:2px}.wl-log-orange{border-left-color:var(--wl-orange)}.wl-log-purple{border-left-color:var(--wl-purple)}.wl-gameover{text-align:center;padding:24px;border-radius:var(--radius-lg);margin-bottom:8px}.wl-gameover-orange{background:var(--wl-orange-light);color:var(--wl-orange)}.wl-gameover-purple{background:var(--wl-purple-light);color:var(--wl-purple)}.wl-gameover-title{font-size:2rem;margin-bottom:8px}.wl-gameover-scores{display:flex;justify-content:center;gap:24px;font-size:1.1rem;font-weight:600}.wl-gameover-score{padding:4px 12px;border-radius:var(--radius);background:var(--surface)}.wl-gameover-actions{display:flex;gap:12px;justify-content:center;margin-top:16px}@media (max-width: 768px){.wl-teams-grid{grid-template-columns:1fr}.wl-scorebar{gap:10px}.wl-score{padding:6px 16px}.wl-score-value{font-size:1.2rem}}@media (max-width: 480px){.wl-board-container{padding:8px 4px;gap:8px}.wl-spectrum-bar{height:36px}.wl-clue-input{flex-direction:column}.wl-clue-word-input{width:100%}.wl-gameover-title{font-size:1.5rem}.wl-gameover-scores{flex-direction:column;gap:8px}.wl-counter-actions{flex-direction:column}.wl-counter-btn{width:100%}}
