:root{--bg: #0f0f1a;--surface: #1a1a2e;--surface-2: #252540;--accent: #e94560;--primary: #4a9eff;--text: #e8e8f0;--muted: #8888aa;--success: #4caf50;--border: #2a2a4a;--radius: 12px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,sans-serif;min-height:100vh;line-height:1.5}#root{max-width:600px;margin:0 auto;padding:16px;min-height:100vh}.setup-page{padding-bottom:32px}.app-logo{display:block;width:88px;height:88px;margin:24px auto 0;border-radius:22px}.app-title{font-size:2.5rem;font-weight:800;color:var(--accent);text-align:center;margin-bottom:4px;margin-top:8px;letter-spacing:-.02em}.app-subtitle{text-align:center;color:var(--muted);margin-bottom:12px}.spotify-note{text-align:center;color:var(--muted);font-size:.8rem;margin-bottom:24px}.setup-section{background:var(--surface);border-radius:var(--radius);padding:20px;margin-bottom:12px}.setup-section h2{font-size:.8rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:12px}.category-list{display:flex;flex-direction:column;gap:8px}.category-item{display:flex;align-items:center;gap:10px;padding:12px;background:var(--surface-2);border-radius:8px;cursor:pointer;border:2px solid transparent;transition:border-color .15s;-webkit-user-select:none;user-select:none}.category-item.selected{border-color:var(--primary)}.category-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);flex-shrink:0;cursor:pointer}.cat-name{flex:1;font-weight:500}.cat-count{color:var(--muted);font-size:.875rem}.number-input{width:100%;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:1.25rem;text-align:center}.add-player{display:flex;gap:8px;margin-bottom:12px}.text-input{flex:1;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:1rem}.text-input::placeholder{color:var(--muted)}.add-btn{padding:10px 18px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;white-space:nowrap}.player-list{list-style:none;display:flex;flex-direction:column;gap:6px}.player-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--surface-2);border-radius:8px}.remove-btn{background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;padding:4px 8px;line-height:1}.start-btn{width:100%;padding:16px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:1.2rem;font-weight:700;cursor:pointer;margin-top:8px}.start-btn:disabled{opacity:.35;cursor:not-allowed}.game-page{padding-bottom:24px}.host-card{background:var(--surface);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:12px}.card-header{display:flex;justify-content:space-between;align-items:center}.category-badge{background:var(--surface-2);color:var(--primary);padding:4px 12px;border-radius:20px;font-size:.85rem;font-weight:600}.progress{color:var(--muted);font-size:.875rem}.prompt{font-size:1.4rem;font-weight:600;line-height:1.4}.play-button{display:block;width:100%;padding:14px;background:var(--accent);color:#fff;text-decoration:none;text-align:center;border-radius:var(--radius);font-size:1.1rem;font-weight:700;letter-spacing:.04em}.web-player-link{text-align:center;color:var(--muted);font-size:.8rem;text-decoration:underline;margin-top:-4px}.toggle-btn{padding:10px 16px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:8px;font-size:.95rem;cursor:pointer;width:100%;text-align:left}.hint{color:var(--muted);font-style:italic;padding:10px 14px;background:var(--surface-2);border-radius:8px;font-size:.95rem}.answer-section{background:var(--surface-2);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:8px}.answer{font-size:1.3rem;font-weight:700;color:var(--success)}.bonus{font-size:.9rem;color:var(--primary);font-style:italic}.attribution{font-size:.875rem;color:var(--muted);font-style:italic}.scoring-label{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:6px}.player-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}.player-score-btn{padding:10px 16px;background:var(--surface);color:var(--text);border:2px solid var(--border);border-radius:8px;font-size:.95rem;cursor:pointer;flex:1;min-width:120px;font-weight:500}.player-score-btn.scored{background:var(--success);border-color:var(--success);color:#fff;cursor:default;font-weight:600}.player-score-btn:disabled{cursor:default}.player-score-btn.bonus-btn{border-color:var(--primary)}.player-score-btn.bonus-btn.scored{background:var(--primary);border-color:var(--primary)}.score-btn-group{display:flex;gap:4px;flex:1;min-width:150px}.score-btn-group .player-score-btn{min-width:0}.score-btn-group .player-score-btn.scored:not(:disabled){cursor:pointer}.score-btn-group .undo-btn{flex:0 0 auto;min-width:44px;padding:10px 12px}.score-btn-group .undo-btn:disabled{opacity:.4}.player-score-btn.no-points-btn{border-style:dashed;color:var(--muted)}.player-score-btn.no-points-btn.scored{background:var(--surface-2);border-color:var(--muted);color:var(--muted)}.primary-btn:disabled{opacity:.4;cursor:default}.card-footer{display:flex;gap:8px;margin-top:4px}.primary-btn{flex:2;padding:14px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius);font-size:1rem;font-weight:600;cursor:pointer}.secondary-btn{flex:1;padding:14px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;cursor:pointer}.scoreboard-page{padding:24px 0}.new-game-link{display:block;margin-left:auto;background:none;border:none;color:var(--muted);font-size:.85rem;text-decoration:underline;cursor:pointer;padding:4px 0;margin-bottom:8px}.scoreboard-page h2{font-size:1.75rem;font-weight:800;text-align:center;margin-bottom:24px}.scoreboard-list{list-style:none;display:flex;flex-direction:column;gap:10px;margin-bottom:28px}.scoreboard-item{display:flex;align-items:center;gap:14px;padding:16px;background:var(--surface);border-radius:var(--radius);border:2px solid transparent}.scoreboard-item.rank-1{border-color:gold}.scoreboard-item.rank-2{border-color:silver}.scoreboard-item.rank-3{border-color:#cd7f32}.rank{font-size:1.1rem;font-weight:700;color:var(--muted);min-width:26px}.player-name{flex:1;font-size:1.1rem;font-weight:600}.player-score{font-size:1.3rem;font-weight:700;color:var(--primary)}.scoreboard-footer{display:flex;gap:8px}.scoreboard-footer .primary-btn,.scoreboard-footer .secondary-btn{flex:1}.site-footer{text-align:center;padding:24px 0 8px;color:var(--muted);font-size:.8rem}.footer-links{display:flex;justify-content:center;gap:10px;margin-bottom:8px}.footer-links button{background:none;border:none;color:var(--muted);font-size:.85rem;text-decoration:underline;cursor:pointer;padding:2px 0}.form-field{margin-bottom:14px}.form-field label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:5px}.form-field .text-input{width:100%}select.text-input{-webkit-appearance:none;-moz-appearance:none;appearance:none}textarea.text-input{resize:vertical;font-family:inherit}.success-msg{text-align:center;padding:20px;color:var(--success);background:var(--surface);border-radius:var(--radius);margin-bottom:12px}.submission-card{display:flex;flex-direction:column;gap:6px}.submission-head{display:flex;justify-content:space-between;align-items:center}.submission-song{font-weight:600;font-size:1.05rem}.submission-answer{color:var(--success)}.submission-actions{display:flex;gap:8px;margin-top:8px}.points-row{display:flex;gap:10px;margin-top:8px}.points-row .form-field{margin-bottom:0}.points-row .form-field:first-child{width:80px;flex-shrink:0}.points-row .bonus-field{flex:1}.review-section-title{font-size:.9rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:24px 0 10px}.loading{text-align:center;padding:60px 20px;color:var(--muted)}.error-msg{text-align:center;padding:20px;color:var(--accent);background:var(--surface);border-radius:var(--radius);margin-bottom:12px}
