.codenames-home,.codenames-create,.codenames-join,.codenames-lobby,.codenames-team-setup,.codenames-spymaster,.codenames-operative,.codenames-end{--red:#dc2626;--red-light:#fecaca;--red-glow:#dc262666;--blue:#2563eb;--blue-light:#bfdbfe;--blue-glow:#2563eb66;--neutral:#a1a1aa;--neutral-light:#e4e4e7;--assassin:#18181b;--assassin-light:#3f3f46}.codenames-home{text-align:center;justify-content:center;padding-top:15vh;padding-bottom:10vh}.codenames-home h1{background:linear-gradient(135deg,var(--red)0%,#a855f7 50%,var(--blue)100%);-webkit-text-fill-color:transparent;color:#0000;letter-spacing:.02em;filter:drop-shadow(0 0 30px #2563eb4d);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;margin-bottom:12px;font-size:3.5rem;animation:.8s ease-out titleEntry,4s ease-in-out 1s infinite codenamesSweep}@keyframes codenamesSweep{0%,to{background-position:0%}50%{background-position:100%}}.codenames-home .subtitle{color:var(--text-secondary);margin-bottom:48px;font-size:1.1rem;animation:.6s ease-out .2s both fadeUp}.codenames-home .how-to-play{animation:.6s ease-out .4s both fadeUp}.codenames-home .how-to-play li:before{background:linear-gradient(135deg,var(--red),var(--blue));box-shadow:0 0 12px var(--blue-glow)}.codenames-home .button-group{margin-top:0;padding-top:0;animation:.6s ease-out .6s both fadeUp}.codenames-lobby{padding-top:20px}.codenames-lobby h2{text-align:center;margin:24px 0}.room-header{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px;display:flex}.room-code{flex-direction:column;gap:4px;display:flex}.room-code .label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem}.room-code .code{letter-spacing:.15em;background:linear-gradient(135deg,var(--red)0%,var(--blue)100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-family:Space Mono,monospace;font-size:1.5rem;font-weight:700}.language-toggle{gap:8px;display:flex}.lang-btn{border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;background:0 0;padding:8px 16px;transition:all .2s}.lang-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.language-display{color:var(--text-secondary);font-size:.9rem}.teams-container{grid-template-columns:1fr 1fr;gap:16px;margin:24px 0;display:grid}.team-column{background:var(--bg-card);border-radius:var(--radius-lg);border:2px solid var(--border);padding:20px;transition:border-color .2s}.team-column.team-red{border-color:var(--red)}.team-column.team-blue{border-color:var(--blue)}.team-column h3{text-align:center;margin-bottom:16px;font-size:1.1rem}.team-red h3{color:var(--red)}.team-blue h3{color:var(--blue)}.team-players{flex-direction:column;gap:8px;min-height:120px;display:flex}.player-chip{background:var(--bg-elevated);border-radius:var(--radius);justify-content:space-between;align-items:center;padding:10px 14px;font-size:.9rem;display:flex}.leave-team-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:1.2rem;line-height:1}.leave-team-btn:hover{color:var(--red)}.join-team-btn{border:2px dashed var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;background:0 0;padding:10px 14px;font-size:.9rem;transition:all .2s}.team-red .join-team-btn:hover{border-color:var(--red);color:var(--red)}.team-blue .join-team-btn:hover{border-color:var(--blue);color:var(--blue)}.team-count{text-align:center;color:var(--text-secondary);margin-top:12px;font-size:.8rem}.unassigned-section{text-align:center;background:var(--bg-card);border-radius:var(--radius);margin-bottom:24px;padding:16px}.unassigned-section .label{color:var(--text-secondary);margin-bottom:8px;font-size:.8rem;display:block}.unassigned-players{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.player-name{background:var(--bg-elevated);border-radius:var(--radius);padding:6px 12px;font-size:.85rem}.hint{text-align:center;color:var(--text-secondary);margin-bottom:16px;font-size:.9rem}.waiting{text-align:center;color:var(--text-secondary);font-style:italic}.codenames-team-setup{padding-top:20px}.codenames-team-setup h2{text-align:center;margin:24px 0 8px}.codenames-team-setup .subtitle{text-align:center;color:var(--text-secondary);margin-bottom:24px}.spymaster-section{text-align:center;margin-bottom:16px}.role-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px;font-size:.75rem;display:block}.spymaster-chip{background:var(--accent);color:#fff;border-radius:var(--radius);align-items:center;gap:8px;padding:12px 20px;font-weight:500;display:inline-flex}.spymaster-empty{background:var(--bg-elevated);border:2px dashed var(--border);border-radius:var(--radius);color:var(--text-secondary);padding:12px 20px;font-size:1.2rem;display:inline-block}.remove-btn{color:#ffffffb3;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:1.2rem;line-height:1}.remove-btn:hover{color:#fff}.operatives-section{margin-top:16px}.operative-list{flex-wrap:wrap;justify-content:center;gap:8px;min-height:40px;display:flex}.operative-chip{background:var(--bg-elevated);border-radius:var(--radius);padding:6px 12px;font-size:.85rem}.btn-volunteer{width:100%;margin-top:16px}.codenames-spymaster,.codenames-operative{padding:16px 16px 100px}.game-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.room-info{align-items:center;gap:12px;display:flex}.room-info .room-code{color:var(--text-secondary);font-family:Space Mono,monospace;font-size:.9rem}.role-badge{border-radius:var(--radius);text-transform:uppercase;letter-spacing:.05em;padding:4px 12px;font-size:.75rem;font-weight:600}.role-badge.spymaster{background:var(--accent);color:#fff}.role-badge.operative.red{background:var(--red);color:#fff}.role-badge.operative.blue{background:var(--blue);color:#fff}.scores{align-items:center;gap:12px;display:flex}.score{border-radius:var(--radius);flex-direction:column;align-items:center;min-width:60px;padding:8px 16px;display:flex}.score.red{background:var(--red-light);color:var(--red)}.score.blue{background:var(--blue-light);color:var(--blue)}.score.active{box-shadow:0 0 0 2px}.score .team-name{text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}.score .remaining{font-family:Space Mono,monospace;font-size:1.5rem;font-weight:700}.vs{color:var(--text-secondary);font-size:.8rem}.turn-indicator{text-align:center;margin-bottom:16px}.turn-badge{border-radius:var(--radius);padding:8px 20px;font-size:.9rem;font-weight:500;display:inline-block}.turn-badge.red{background:var(--red);color:#fff}.turn-badge.blue{background:var(--blue);color:#fff}.turn-badge.waiting{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border)}.current-clue{background:var(--bg-card);border-radius:var(--radius-lg);justify-content:center;align-items:center;gap:12px;margin-bottom:16px;padding:16px;display:flex}.clue-label{color:var(--text-secondary);font-size:.9rem}.clue-word{color:var(--accent);font-size:1.4rem;font-weight:700}.clue-number{background:var(--accent);color:#fff;border-radius:var(--radius);padding:4px 12px;font-family:Space Mono,monospace;font-size:1.2rem}.guesses-left{color:var(--text-secondary);font-size:.85rem}.waiting-clue{text-align:center;color:var(--text-secondary);margin-bottom:16px;padding:16px;font-style:italic}.game-board{grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:20px;display:grid}.board-card{aspect-ratio:1.4;background:var(--bg-card);border:2px solid var(--border);border-radius:var(--radius);cursor:default;justify-content:center;align-items:center;padding:8px;transition:all .2s;display:flex;position:relative;overflow:hidden}.board-card .card-word{text-align:center;word-break:break-word;text-transform:uppercase;font-size:clamp(.5rem,2.5vw,.85rem);font-weight:500;line-height:1.2}.board-card.interactive{cursor:pointer}.board-card.interactive:hover{border-color:var(--accent);transform:translateY(-2px)}.board-card.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);transform:translateY(-2px)}.board-card.key-overlay.red{border-color:var(--red);background:linear-gradient(135deg,var(--red-light)0%,var(--bg-card)100%)}.board-card.key-overlay.blue{border-color:var(--blue);background:linear-gradient(135deg,var(--blue-light)0%,var(--bg-card)100%)}.board-card.key-overlay.neutral{border-color:var(--neutral);background:linear-gradient(135deg,var(--neutral-light)0%,var(--bg-card)100%)}.board-card.key-overlay.assassin{border-color:var(--assassin);background:linear-gradient(135deg,var(--assassin-light)0%,var(--bg-card)100%)}.board-card.key-overlay.assassin .card-word{color:#fff}.board-card.revealed{cursor:default}.board-card.revealed.red{background:var(--red);border-color:var(--red);color:#fff}.board-card.revealed.blue{background:var(--blue);border-color:var(--blue);color:#fff}.board-card.revealed.neutral{background:var(--neutral);border-color:var(--neutral);color:#fff}.board-card.revealed.assassin{background:var(--assassin);border-color:var(--assassin);color:#fff}.board-card.revealed .card-word{opacity:.8}.card-reveal{justify-content:center;align-items:center;font-size:2rem;display:flex;position:absolute;inset:0}.clue-section{background:var(--bg-card);border-radius:var(--radius-lg);margin-bottom:20px;padding:20px}.clue-section h3{text-align:center;margin-bottom:16px;font-size:1rem}.clue-input{flex-direction:column;gap:12px;display:flex}.clue-fields{gap:12px;display:flex}.clue-word-input{text-transform:uppercase;letter-spacing:.05em;flex:1;padding:12px 16px;font-size:1.1rem}.clue-number-input{text-align:center;width:70px;padding:12px;font-size:1.1rem}.clue-hint{text-align:center;color:var(--text-secondary);margin-top:8px;font-size:.8rem}.guess-actions{gap:12px;margin-bottom:20px;display:flex}.guess-actions .btn-reveal{flex:1}.waiting-section,.watching-section{text-align:center;background:var(--bg-card);border-radius:var(--radius-lg);color:var(--text-secondary);margin-bottom:20px;padding:20px;font-style:italic}.team-panels{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px;display:grid}.team-panel{border-radius:var(--radius);background:var(--bg-card);padding:12px}.team-panel.red{border-left:3px solid var(--red)}.team-panel.blue{border-left:3px solid var(--blue)}.team-panel h4{margin-bottom:8px;font-size:.8rem}.team-panel.red h4{color:var(--red)}.team-panel.blue h4{color:var(--blue)}.team-panel .spymaster-name{color:var(--text-secondary);margin-bottom:4px;font-size:.75rem}.team-panel .operatives{flex-wrap:wrap;gap:4px;display:flex}.team-panel .operative-name{background:var(--bg-elevated);border-radius:4px;padding:2px 6px;font-size:.7rem}.btn-leave{width:100%}.codenames-end{padding-top:20px}.winner-banner{text-align:center;border-radius:var(--radius-lg);margin-bottom:24px;padding:32px 20px}.winner-banner.red{background:linear-gradient(135deg,var(--red)0%,#991b1b 100%);color:#fff}.winner-banner.blue{background:linear-gradient(135deg,var(--blue)0%,#1d4ed8 100%);color:#fff}.winner-banner h1{margin-bottom:8px;font-size:2rem}.win-reason{opacity:.9;margin-bottom:12px}.result-emoji{margin:0;font-size:3rem}.final-scores{justify-content:center;gap:24px;margin-bottom:24px;display:flex}.final-score{text-align:center;border-radius:var(--radius);padding:16px 24px}.final-score.red{background:var(--red-light);color:var(--red)}.final-score.blue{background:var(--blue-light);color:var(--blue)}.final-score.winner{box-shadow:0 0 0 3px}.final-score .team-name{margin-bottom:4px;font-weight:700;display:block}.final-score .cards-left{opacity:.8;font-size:.9rem}.codenames-end h3{text-align:center;color:var(--text-secondary);margin-bottom:16px;font-size:1rem}@keyframes titleEntry{0%{opacity:0;transform:translateY(-20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:600px){.codenames-home h1{font-size:2.5rem}.teams-container{grid-template-columns:1fr}.game-board{gap:4px}.board-card{aspect-ratio:1.2;padding:4px}.board-card .card-word{font-size:clamp(.45rem,3vw,.7rem)}.scores{gap:8px}.score{min-width:50px;padding:6px 10px}.score .remaining{font-size:1.2rem}.current-clue{flex-wrap:wrap;gap:8px}.clue-word{font-size:1.2rem}.team-panels{grid-template-columns:1fr}.guess-actions{flex-direction:column}}
