From d6b761ff384847d39459fd7ad6e0eb348b4b27bb Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 23 Aug 2026 21:43:02 +0200 Subject: [PATCH] fix(admin): dock the start-failure banner above the footer, not inside it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2365. Pressing Start with no players joined rendered "Cannot start" as a narrow column between the two footer buttons, wrapping mid-word — `beitrete` / `n`, `scanne` / `n`. Reported from a phone on v4.3.1-rc1. The banner was fine; the anchor was wrong. `showBanner` inserts its node *before the anchor, inside the anchor's parent*, so handing it the Start button put the banner **into** `.home-cta-bar`. That bar is a flex row and `.home-cta-start` claims the free space with `flex: 1`, leaving the banner at its min-content width — one word for a sentence, one character for a long word. "Above the button" and "before the button in a horizontal row" are the same DOM operation and two very different layouts. `showBanner`'s own docstring already said what was meant: "docks directly above the primary action". Three changes: * `bannerAnchorFor()` in admin/util.js resolves the Start button to its footer row, falling back to the button when there is no row and to null when there is no button (showSetupError reads that null to fall back to a toast). Extracted rather than inlined so the decision that caused the bug is unit-testable. * A guard on `.beatify-banner`: `flex-basis: 100%`. It has no effect outside a flex parent, so it costs nothing normally; should a future call site anchor a banner inside a flex row again, it claims its own line instead of being squeezed. * `flex-wrap: wrap` on `.home-cta-bar`, without which that guard cannot take effect. It also lets the buttons themselves wrap on a narrow phone rather than squeeze. Only one production call site reaches showBanner (showSetupError), and all four of its callers go through it, so this is the whole exposure. Tests: four in banner-anchor-2365.test.js. Verified against the broken behaviour — with the anchor returning the button, the first test fails and the three guard tests stay green, which is what they are for. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_012W9Pj7vqs7Yv31j19B4vRt --- custom_components/beatify/www/css/styles.css | 11 ++++ .../beatify/www/css/styles.min.css | 2 +- .../beatify/www/css/styles.min.css.map | 4 +- .../js/__tests__/banner-anchor-2365.test.js | 58 +++++++++++++++++++ custom_components/beatify/www/js/admin.js | 4 +- custom_components/beatify/www/js/admin.min.js | 30 +++++----- .../beatify/www/js/admin/util.js | 27 +++++++++ 7 files changed, 117 insertions(+), 19 deletions(-) create mode 100644 custom_components/beatify/www/js/__tests__/banner-anchor-2365.test.js diff --git a/custom_components/beatify/www/css/styles.css b/custom_components/beatify/www/css/styles.css index e25923ee..b940c175 100644 --- a/custom_components/beatify/www/css/styles.css +++ b/custom_components/beatify/www/css/styles.css @@ -10689,6 +10689,9 @@ body.home-mode .home-view { /* Sticky CTA bar at the bottom of the home card */ .home-cta-bar { display: flex; + /* #2365: lets the guard on `.beatify-banner` actually take effect, and on + a narrow phone lets the buttons themselves wrap rather than squeeze. */ + flex-wrap: wrap; gap: var(--space-sm); padding: var(--space-md) var(--space-lg); background: rgba(0, 0, 0, 0.3); @@ -16685,6 +16688,14 @@ body.theme-dark .your-result-stats .stat-value { /* --- Inline Panel-Banner (Variant C): docked above the primary action --- */ .beatify-banner { display: flex; + /* #2365: a guard, not a layout. The banner is a block that fills the width + of whatever it sits above; it is never meant to share a line. Should a + future call site anchor it inside a flex row again, this makes it claim + its own line there instead of being shrunk to one character per line. + Outside a flex parent `flex-basis` has no effect, so this costs nothing + in the normal case. Paired with `flex-wrap` on `.home-cta-bar` — a basis + of 100% only wins a line of its own if the row is allowed to wrap. */ + flex-basis: 100%; align-items: flex-start; gap: var(--space-sm); margin-bottom: var(--space-md); diff --git a/custom_components/beatify/www/css/styles.min.css b/custom_components/beatify/www/css/styles.min.css index 54cdde6d..0a66390c 100644 --- a/custom_components/beatify/www/css/styles.min.css +++ b/custom_components/beatify/www/css/styles.min.css @@ -1,2 +1,2 @@ -:root{--color-bg-primary: #0a0a12;--color-bg-surface: rgba(255, 255, 255, .05);--color-bg-light: #f5f5f5;--color-bg-white: #ffffff;--color-bg-card: #f9fafb;--color-bg-card-alt: #f3f4f6;--color-accent-primary: #ff2d6a;--color-accent-secondary: #00f5ff;--color-accent-brand: #6366f1;--color-accent-brand-hover: #4f46e5;--color-accent-blue: #3b82f6;--color-accent-blue-hover: #2563eb;--color-success: #10b981;--color-success-hover: #059669;--color-success-light: #d1fae5;--color-success-alt: #22c55e;--color-success-neon: #39ff14;--color-warning: #f59e0b;--color-warning-dark: #d97706;--color-warning-light: #fef3c7;--color-warning-alt: #ff6600;--color-error: #ef4444;--color-error-dark: #dc2626;--color-error-light: #fee2e2;--color-error-neon: #ff0040;--color-purple-primary: #8b5cf6;--color-purple-secondary: #7c3aed;--color-neon-purple: #9d4edd;--color-success-bg: rgba(16, 185, 129, .15);--color-accent-brand-bg: rgba(99, 102, 241, .15);--color-error-bg: rgba(239, 68, 68, .15);--color-text-primary: #1f2937;--color-text-secondary: #374151;--color-text-muted: #6b7280;--color-text-light: #9ca3af;--color-text-white: #ffffff;--color-text-dark: #1a1a1a;--color-text-heading: #444444;--color-text-neon-muted: #b3b3c2;--color-border-light: #e5e7eb;--color-border-medium: #d1d5db;--color-border-dark: #333333;--color-border-neon: rgba(255, 255, 255, .1);--color-dark-surface: rgba(255, 255, 255, .05);--color-dark-surface-hover: rgba(255, 255, 255, .08);--color-dark-card: rgba(255, 255, 255, .03);--color-surface-dark: #1a1a2e;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--font-display: "Outfit", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;--font-mono: monospace;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 28px;--font-size-4xl: 32px;--font-size-year: 56px;--font-size-timer: 64px;--font-size-hero: 72px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--glow-primary: 0 0 20px var(--color-accent-primary);--glow-secondary: 0 0 20px var(--color-accent-secondary);--glow-success: 0 0 20px var(--color-success-neon);--glow-warning: 0 0 20px var(--color-warning);--glow-error: 0 0 20px var(--color-error);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--shadow-md: 0 2px 8px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .1);--shadow-xl: 0 8px 32px rgba(0, 0, 0, .15);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 20px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--z-control-bar: 100;--z-reaction-bar: 101;--z-modal: 1000;--z-overlay: 1100;--z-toast: 1200}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-system);background:var(--color-bg-light);color:var(--color-text-secondary);line-height:1.5;padding:var(--space-sm);min-height:100vh;overscroll-behavior:none}.wordmark{font-family:"Outfit",var(--font-system);font-weight:900;font-size:var(--font-size-hero);letter-spacing:-.02em;line-height:1}.wordmark-beat{color:var(--color-text-white)}body:not(.theme-dark) .wordmark-beat{color:var(--color-text-primary)}.wordmark-gradient{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;color:transparent}.wordmark-hero{text-shadow:0 0 40px rgba(255,45,106,.5)}.logo-loading{animation:logo-pulse 2s ease-in-out infinite}@keyframes logo-pulse{0%,to{opacity:1}50%{opacity:.7}}@media(prefers-reduced-motion:reduce){.logo-loading{animation:none}}.vinyl-starting{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px;box-sizing:border-box}.vinyl-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:clamp(20px,5vw,56px);max-width:100%}.vinyl-loader{flex:0 0 auto;width:clamp(130px,28vw,260px);height:clamp(130px,28vw,260px);display:flex;align-items:center;justify-content:center;border-radius:50%;background:radial-gradient(circle at center,rgba(255,45,106,.18) 0%,rgba(99,102,241,.1) 45%,transparent 70%)}.vinyl-disc{position:relative;width:78%;height:78%;border-radius:50%;background:conic-gradient(from 0deg,var(--color-accent-primary),var(--color-accent-brand),var(--color-accent-secondary),var(--color-accent-brand),var(--color-accent-primary));box-shadow:0 0 40px #ff2d6a59,0 0 80px #00f5ff2e,inset 0 0 30px #00000073;animation:vinyl-spin 3s linear infinite}.vinyl-ring{position:absolute;top:18%;left:18%;width:64%;height:64%;border-radius:50%;border:1.5px dashed rgba(255,255,255,.25)}.vinyl-hole{position:absolute;top:50%;left:50%;width:14%;height:14%;border-radius:50%;background:var(--color-bg-primary);transform:translate(-50%,-50%);box-shadow:0 0 0 4px #0006}.vinyl-copy{flex:1 1 280px;min-width:0;width:min(100%,460px);max-width:460px;text-align:left}.vinyl-copy .vinyl-headline,.vinyl-copy .vinyl-sub,.vinyl-copy .wordmark-hero{overflow-wrap:break-word}.vinyl-copy .wordmark-hero{font-size:clamp(2rem,5vw,3.25rem);margin:0 0 .5em}.vinyl-headline{font-size:clamp(1.5rem,4vw,2.5rem);font-weight:800;color:var(--color-text-white);margin:0 0 .4em}.vinyl-sub{font-size:clamp(.95rem,2.2vw,1.2rem);line-height:1.5;color:var(--color-text-muted);margin:0 0 1.2em}.vinyl-dots{display:flex;gap:12px}.vinyl-dots span{width:12px;height:12px;border-radius:50%;background:var(--color-accent-primary);opacity:.3;animation:vinyl-dot-pulse 1.4s ease-in-out infinite}.vinyl-dots span:nth-child(2){animation-delay:.2s}.vinyl-dots span:nth-child(3){animation-delay:.4s}@keyframes vinyl-spin{to{transform:rotate(360deg)}}@keyframes vinyl-dot-pulse{0%,to{opacity:.3;transform:scale(1)}40%{opacity:1;transform:scale(1.25)}}@media(max-width:640px){.vinyl-copy{text-align:center}.vinyl-dots{justify-content:center}}@media(prefers-reduced-motion:reduce){.vinyl-disc{animation:none}.vinyl-dots span{animation:none;opacity:.7}}header{margin-bottom:var(--space-lg)}header h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-dark)}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md, 16px)}.admin-header h1{margin:0}.player-header{display:flex;align-items:center;justify-content:center;padding:var(--space-md) var(--space-md) 0}.player-header h1{margin:0}body.theme-dark main.admin-content{max-width:800px;margin:0 auto;padding:var(--space-md, 16px)}.analytics-icon-link{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;text-decoration:none;font-size:1.5rem;transition:background-color .2s ease,transform .2s ease}body.theme-dark .analytics-icon-link{background:#00f5ff1a}body.theme-dark .analytics-icon-link:hover,body.theme-dark .analytics-icon-link:focus{background:#00f5ff33;transform:scale(1.1);outline:none}.admin-header-actions{display:flex;align-items:center;gap:var(--space-xs, 8px)}.pwa-install-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:none;background:#00f5ff1a;font-size:1.5rem;cursor:pointer;transition:background-color .2s ease,transform .2s ease;padding:0}.pwa-install-btn:hover,.pwa-install-btn:focus{background:#00f5ff33;transform:scale(1.1);outline:none}.reset-icon-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:none;background:#ff2d6a1a;color:var(--color-text-white);font-size:1.5rem;cursor:pointer;padding:0;transition:background-color .2s ease,transform .2s ease}.reset-icon-btn:hover,.reset-icon-btn:focus{background:#ff2d6a40;transform:scale(1.1);outline:none}.pwa-ios-hint{position:fixed;bottom:0;left:0;right:0;z-index:1000;display:flex;justify-content:center;padding:var(--space-md, 16px);animation:slideUp .3s ease}.pwa-ios-hint.hidden{display:none}.pwa-ios-hint-content{position:relative;background:var(--color-bg-elevated, #2a2a3e);border-radius:var(--radius-lg, 12px);padding:var(--space-md, 16px) var(--space-lg, 24px);color:var(--color-text, #fff);text-align:center;max-width:340px;box-shadow:0 -2px 20px #0000004d}.pwa-ios-hint-close{position:absolute;top:8px;right:12px;background:none;border:none;color:var(--color-text, #fff);font-size:1.4rem;cursor:pointer;opacity:.6}.pwa-ios-hint-close:hover{opacity:1}.pwa-ios-share-icon{font-size:1.2rem}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.status-section,.card-section{background:var(--color-bg-white);border-radius:var(--radius-lg);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);box-shadow:var(--shadow-sm);border:1px solid transparent;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.card-section:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.card-section .section-header{display:flex;align-items:center;gap:var(--space-sm, 8px);margin-bottom:var(--space-sm);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.card-section .section-icon{font-size:1.25rem}.status-section h2,.card-section h2:not(.section-header){font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-sm);color:var(--color-text-heading)}.status-connected{color:var(--color-success-alt);font-weight:var(--font-weight-medium)}.status-error{color:var(--color-error);font-weight:var(--font-weight-medium)}.status-warning{color:var(--color-warning);font-weight:var(--font-weight-medium)}.list-item{padding:var(--space-sm);border-bottom:1px solid var(--color-border-light);display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);transition:background-color .2s ease}.list-item:last-child{border-bottom:none}body.theme-dark .list-item{border-bottom-color:var(--surface-border, #333)}body.theme-dark .list-item:hover{background:#9d4edd1a}.list-item .name{font-weight:var(--font-weight-medium);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-item .meta{color:var(--color-text-muted);font-size:var(--font-size-base);flex-shrink:0}.list-item.is-invalid{background:var(--color-error-light);border-left:3px solid var(--color-error)}.playlist-item.is-disabled{opacity:.5;cursor:not-allowed}.playlist-item.is-disabled .checkbox-label,.playlist-item.is-disabled .playlist-checkbox{cursor:not-allowed}.playlist-item.is-selectable{cursor:pointer}.playlist-item.is-selected,.media-player-item.is-selected{background:#eff6ff;border-left:3px solid var(--color-accent-blue)}body.theme-dark .playlist-item.is-selected,body.theme-dark .media-player-item.is-selected{background:#00f5ff1a;border-left:3px solid var(--color-accent-secondary)}.seasonal-suggestion{position:relative;margin-bottom:12px;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#ff2d6a24,#6366f124),#12121c;border:1px solid rgba(255,45,106,.45);box-shadow:0 0 0 1px #00f5ff14,0 6px 18px #00000059}.seasonal-suggestion__badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-secondary, #00f5ff);background:#00f5ff1a;border:1px solid rgba(0,245,255,.3);border-radius:999px;padding:3px 10px;margin-bottom:10px}.seasonal-suggestion__title{font-size:16px;font-weight:700;color:#fff;margin-bottom:4px}.seasonal-suggestion__reason{font-size:13px;line-height:1.4;color:#ffffffb8;margin-bottom:12px}.seasonal-suggestion__add{display:inline-block}.seasonal-suggestion__dismiss{position:absolute;top:8px;right:10px;width:28px;height:28px;line-height:1;font-size:20px;color:#fff9;background:transparent;border:none;border-radius:8px;cursor:pointer}.seasonal-suggestion__dismiss:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.seasonal-suggestion__dismiss:hover{color:#fff;background:#ffffff14}body:not(.theme-dark) .seasonal-suggestion{background:linear-gradient(135deg,#ff2d6a14,#6366f114),#fff;border:1px solid rgba(255,45,106,.35);box-shadow:0 4px 14px #00000014}body:not(.theme-dark) .seasonal-suggestion__title{color:#111}body:not(.theme-dark) .seasonal-suggestion__reason{color:#555}body:not(.theme-dark) .seasonal-suggestion__dismiss{color:#888}.playlist-checkbox{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.checkbox-label{display:flex;align-items:center;flex:1;min-width:0;cursor:pointer;padding-left:var(--space-xs)}.playlist-name{font-weight:var(--font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selection-summary{padding:var(--space-sm) var(--space-md);background:#f0fdf4;border-radius:var(--radius-md);margin-top:var(--space-sm);font-weight:var(--font-weight-medium);color:#166534}.selection-summary #selected-count,.selection-summary #total-songs{font-family:Outfit,sans-serif;font-weight:700}body.theme-dark .selection-summary{background:#00f5ff1a;border:1px solid var(--color-accent-secondary);color:var(--color-text-white)}body.theme-dark .selection-summary #selected-count,body.theme-dark .selection-summary #total-songs{color:var(--color-accent-secondary);font-size:1.1em}.media-player-item.is-selectable{cursor:pointer}.media-player-radio{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.radio-label{display:flex;align-items:center;flex:1;min-width:0;cursor:pointer;padding-left:var(--space-xs)}.player-name{font-weight:var(--font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.state-dot{display:inline-block;width:var(--space-sm);height:var(--space-sm);border-radius:50%;margin-right:6px}.state-dot.state-playing{background:var(--color-success-alt)}.state-dot.state-idle,.state-dot.state-paused,.state-dot.state-off{background:var(--color-text-light)}button,.btn{min-width:44px;min-height:44px;padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast),opacity var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);touch-action:manipulation}.form-input{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text-primary);margin-bottom:var(--space-sm);box-sizing:border-box}body.theme-dark .form-input{color:#e2e8f0;background:#ffffff1a;border-color:#ffffff26}.btn-primary{background:var(--color-accent-primary);color:#fff}.btn-primary:hover{background:#e0245c}.btn-primary:disabled{background:var(--color-text-light);cursor:not-allowed;opacity:.55}body.theme-dark .btn-primary{color:#fff}.btn-secondary{background:var(--color-border-light);color:var(--color-text-secondary)}.btn-secondary:hover{background:var(--color-border-medium)}.btn-ghost{background:transparent;color:var(--color-accent-primary);border:1.5px solid var(--color-accent-primary)}.btn-ghost:hover{background:#ff2d6a14}.btn-ghost:disabled{opacity:.45;cursor:not-allowed}.btn-outline{background:transparent;color:var(--color-text-secondary);border:1.5px solid var(--color-border-medium)}.btn-outline:hover{background:var(--color-border-light);border-color:var(--color-text-secondary)}.btn-outline:disabled{opacity:.45;cursor:not-allowed}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}a{color:var(--color-accent-blue);text-decoration:none}a:hover{text-decoration:underline}.empty-state{text-align:center;padding:var(--space-lg);color:var(--color-text-muted)}.empty-state p{margin-bottom:var(--space-sm)}footer{margin-top:var(--space-lg);text-align:center;color:var(--color-text-light);font-size:var(--font-size-sm)}.hidden{display:none!important}body.theme-dark{background:var(--color-bg-primary);color:var(--color-text-white)}body.theme-dark .player-container{background:var(--color-bg-primary)}body.theme-dark .card-section{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);color:var(--color-text-white)}.admin-content .card-section{margin-bottom:var(--space-md)}body.theme-dark .card-section:hover{box-shadow:0 4px 20px #9d4edd4d}body.theme-dark .card-section h2,body.theme-dark .card-section .section-header,body.theme-dark .card-section p,body.theme-dark .card-section .name,body.theme-dark .card-section .player-name,body.theme-dark .card-section .playlist-name,body.theme-dark .card-section .list-item,body.theme-dark .card-section .radio-label,body.theme-dark .card-section .checkbox-label,body.theme-dark .card-section strong,body.theme-dark .card-section span{color:var(--color-text-white)}body.theme-dark .card-section .meta{color:var(--color-text-neon-muted)}body.theme-dark .game-info{background:#ffffff0d;border:1px solid var(--color-neon-purple);border-radius:var(--radius-md);color:var(--color-text-white)}body.theme-dark .game-info p,body.theme-dark .game-info strong,body.theme-dark .game-info span{color:var(--color-text-white)}body.theme-dark .btn-primary span,body.theme-dark .btn-secondary span{color:inherit}body.theme-dark .lang-btn:not(.lang-btn--active),body.theme-dark .timer-btn:not(.timer-btn--active),body.theme-dark .difficulty-btn:not(.difficulty-btn--active){color:var(--color-text-primary, #1a1a2e)}body.theme-dark .lang-btn:not(.lang-btn--active) span,body.theme-dark .timer-btn:not(.timer-btn--active) span,body.theme-dark .difficulty-btn:not(.difficulty-btn--active) span{color:var(--color-text-primary, #1a1a2e)}.language-selector{display:flex;justify-content:center;gap:var(--space-sm)}.lang-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);border:2px solid var(--color-border-medium);border-radius:var(--radius-md);background:var(--color-bg-white);color:var(--color-text-primary);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:all .15s ease}.lang-btn:hover{border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.lang-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.lang-btn--active:hover{background:var(--color-accent-brand-hover)}.lang-flag{font-size:1.25em}.lang-name{font-weight:600}.timer-selector{display:flex;justify-content:center;gap:var(--space-sm)}.timer-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);min-width:90px;border:2px solid var(--color-border-neon);border-radius:var(--radius-md);background:var(--color-bg-card);color:var(--color-text-secondary);font-family:inherit;cursor:pointer;transition:all .15s ease}.timer-btn:hover{border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.timer-btn:focus{outline:none;border-color:var(--color-accent-brand);box-shadow:0 0 0 3px #1ed7604d}.timer-btn:focus-visible{outline:2px solid var(--color-accent-brand);outline-offset:2px}.timer-btn:disabled{opacity:.5;cursor:not-allowed;border-color:var(--color-border-neon);background:var(--color-bg-card)}.timer-btn:disabled:hover{border-color:var(--color-border-neon);background:var(--color-bg-card)}.timer-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.timer-btn--active:hover{background:var(--color-accent-brand-hover)}.timer-icon{font-size:1.5em}.timer-label{font-weight:600;font-size:.875rem}.timer-value{font-size:.75rem;opacity:.8}.timer-btn--active .timer-value{opacity:1}.difficulty-selector{display:flex;justify-content:center;gap:var(--space-sm)}.difficulty-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);min-width:90px;border:2px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg-card);color:var(--color-text-secondary);font-family:inherit;cursor:pointer;transition:all .15s ease}.difficulty-btn:hover{border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.difficulty-btn:focus{outline:none;border-color:var(--color-accent-brand);box-shadow:0 0 0 3px #6366f14d}.difficulty-btn:focus-visible{outline:2px solid var(--color-accent-brand);outline-offset:2px}.difficulty-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.difficulty-btn--active:hover{background:var(--color-accent-brand-hover)}.difficulty-icon{font-size:1.5em}.difficulty-label{font-weight:600;font-size:.875rem}.difficulty-description{text-align:center;font-size:.8125rem;color:var(--color-text-muted);margin-top:var(--space-sm);line-height:1.5;max-width:400px;margin-left:auto;margin-right:auto}.toggle-option{display:flex;align-items:center;gap:var(--space-md);cursor:pointer;padding:var(--space-sm) 0}.toggle-option input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.toggle-switch{position:relative;width:48px;height:26px;background:var(--color-border);border-radius:13px;transition:background .2s ease;flex-shrink:0}.toggle-switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s ease}.toggle-option input:checked+.toggle-switch{background:var(--color-success)}.toggle-option input:checked+.toggle-switch:after{transform:translate(22px)}.toggle-option input:focus-visible+.toggle-switch{outline:2px solid var(--color-accent-primary);outline-offset:2px}.toggle-label{font-size:var(--font-size-md);font-weight:500;color:var(--color-text)}.option-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:var(--space-xs) 0 0 0;padding-left:calc(48px + var(--space-md))}body.theme-dark .toggle-switch{background:var(--color-dark-border, #333)}.provider-selector{display:flex;justify-content:center;gap:var(--space-sm)}.provider-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);min-width:100px;border:2px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg-card);color:var(--color-text-secondary);font-family:inherit;cursor:pointer;transition:all .15s ease}.provider-btn:hover:not(.provider-btn--disabled){border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.provider-btn:focus{outline:none;border-color:var(--color-accent-brand);box-shadow:0 0 0 3px #6366f14d}.provider-btn:focus-visible{outline:2px solid var(--color-accent-brand);outline-offset:2px}.provider-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.provider-btn--active:hover{background:var(--color-accent-brand-hover)}.provider-icon{font-size:1.5em}.provider-label{font-weight:600;font-size:.875rem}.playlist-coverage{font-size:.75rem;color:var(--color-text-muted)}.playlist-coverage--warning{color:var(--color-warning)}.playlist-coverage--none{color:var(--color-error)}.playlist-filter-bar{display:flex;flex-direction:column;gap:.75rem;padding:.75rem 0;margin-bottom:.5rem;border-bottom:1px solid var(--color-border)}.filter-dropdowns{display:flex;flex-wrap:wrap;gap:.5rem}.filter-dropdown{padding:.5rem 2rem .5rem .75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md, 6px);font-size:.875rem;font-weight:500;color:var(--color-text-primary, #333);cursor:pointer;transition:all .15s ease;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;min-width:120px}.filter-dropdown:hover{border-color:var(--color-primary, #6c5ce7)}.filter-dropdown:focus{outline:none;border-color:var(--color-primary, #6c5ce7);box-shadow:0 0 0 2px #6c5ce733}.filter-dropdown:not([value=""]):has(option:checked:not([value=""])){border-color:var(--color-primary, #6c5ce7);background-color:#6c5ce714}.filter-summary{display:flex;align-items:center;gap:.75rem;font-size:.8125rem}.filter-summary-text{color:var(--color-text-secondary, #666)}.filter-clear{padding:.25rem .5rem;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm, 4px);font-size:.75rem;color:var(--color-text-secondary, #666);cursor:pointer;transition:all .15s ease}.filter-clear:hover{background:var(--color-error, #e74c3c);border-color:var(--color-error, #e74c3c);color:#fff}body.theme-dark .filter-dropdown{background-color:#ffffff14;border-color:#ffffff26;color:#ffffffd9;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M2 4l4 4 4-4'/%3E%3C/svg%3E")}body.theme-dark .filter-dropdown:hover,body.theme-dark .filter-dropdown:focus{border-color:#6c5ce799}body.theme-dark .filter-summary-text{color:#fff9}body.theme-dark .filter-clear{border-color:#fff3;color:#fff9}.filter-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.4375rem .875rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:.8125rem;font-weight:600;color:var(--color-text-primary, #333);cursor:pointer;transition:all .15s ease;white-space:nowrap}.filter-tag .filter-count{font-size:.6875rem;opacity:.8}.playlist-tags{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.375rem}.playlist-tag{display:inline-block;padding:.1875rem .5rem;background:var(--color-primary-light, #e8e4f8);border:1px solid var(--color-primary-border, #c9bff2);border-radius:var(--radius-full);font-size:.6875rem;font-weight:500;color:var(--color-primary-dark, #5b4cad);max-width:6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-tag--more{background:transparent;border-color:var(--color-primary-border, #c9bff2);color:var(--color-text-secondary, #666);font-style:italic}body.theme-dark .playlist-tag{background:#6c5ce733;border-color:#6c5ce766;color:#b8acf6}body.theme-dark .playlist-tag--more{background:transparent;color:#ffffff80}.difficulty-badge{display:inline-block;padding:.125rem .5rem;border-radius:var(--radius-full);font-size:.75rem;font-weight:600;margin-left:var(--space-xs)}.difficulty-badge--easy{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success)}.difficulty-badge--normal{background:var(--color-accent-brand-bg);color:var(--color-accent-brand);border:1px solid var(--color-accent-brand)}.difficulty-badge--hard{background:var(--color-error-bg);color:var(--color-error);border:1px solid var(--color-error)}.supported-players-hint{font-size:.75rem;color:var(--color-text-muted);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border-light)}.supported-players-hint a{color:var(--color-accent-primary);text-decoration:none}.supported-players-hint a:hover{text-decoration:underline}body.theme-dark .supported-players-hint{color:var(--color-text-neon-muted);border-top-color:var(--color-border-neon)}.player-info{display:flex;flex-direction:column;gap:2px}.platform-badge{display:inline-flex;align-items:center;gap:4px;font-size:.625rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.025em;background:#80808026;color:var(--color-text-muted)}.platform-badge--music_assistant{background:#4caf5026;color:#4caf50}.platform-badge--sonos{background:#ff980026;color:#ff9800}.platform-badge--alexa_media,.platform-badge--alexa{background:#00a8e126;color:#00a8e1}body.theme-dark .platform-badge{background:#ffffff14}body.theme-dark .platform-badge--music_assistant{background:#4caf5033;color:#81c784}body.theme-dark .platform-badge--sonos{background:#ff980033;color:#ffb74d}body.theme-dark .platform-badge--alexa_media,body.theme-dark .platform-badge--alexa{background:#00a8e133;color:#4fc3f7}.no-players-message{text-align:center;padding:var(--space-lg)}.no-players-message h3{font-size:1.125rem;margin-bottom:var(--space-sm)}.no-players-message p{font-size:.875rem;color:var(--color-text-muted);margin-bottom:var(--space-sm)}.no-players-message .button-group{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-md)}.provider-chips{justify-content:flex-start}.provider-chips .chip{display:inline-flex;align-items:center;gap:6px}.provider-icon{font-size:1rem}.warning-box{background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:var(--radius-sm);padding:var(--space-sm);margin-top:var(--space-sm);font-size:.875rem}.warning-box p{margin:0 0 var(--space-xs) 0}.warning-box p:last-child{margin-bottom:0}.warning-caveat{font-size:.8125rem;opacity:.85}#provider-hint{font-size:.8125rem;color:var(--color-text-muted);margin-top:var(--space-sm)}body.theme-dark #provider-hint{color:var(--color-text-neon-muted)}.chip--disabled,.provider-btn--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.hint-text{font-size:.75rem;color:var(--color-text-muted);margin:var(--space-xs) 0 0 calc(var(--space-md) + 24px);font-style:italic}body.theme-dark .hint-text{color:var(--color-text-neon-muted)}body.theme-dark .modal-content,body.theme-dark .modal-content h2,body.theme-dark .modal-content p{color:var(--color-text-primary)}body.theme-dark .modal-content .name-input{background:var(--color-bg-white);border-color:var(--color-border-medium);color:var(--color-text-primary)}body.theme-dark .modal-content .name-input::placeholder{color:var(--color-text-muted)}body.theme-dark .modal-content .name-input:focus{border-color:var(--color-accent-blue);box-shadow:0 0 0 3px #3b82f61a}.card{background:var(--color-dark-surface);border-radius:var(--radius-lg);padding:var(--space-md);border:1px solid var(--color-border-neon)}.card-glass{background:var(--color-dark-surface);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg)}.btn-neon{background:var(--color-accent-primary);color:var(--color-text-white);border:none;border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast)}.btn-neon:hover{background:#ff4080}.btn-neon:active{transform:scale(.98)}.btn-glow{transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.btn-glow:hover{box-shadow:var(--glow-primary)}.btn-glow:active{transform:scale(.98);box-shadow:var(--glow-primary)}.btn-glow-secondary:hover{box-shadow:var(--glow-secondary)}.btn-glow-success:hover{box-shadow:var(--glow-success)}.text-glow{text-shadow:0 0 10px var(--color-accent-primary),0 0 20px var(--color-accent-primary),0 0 30px var(--color-accent-primary)}.text-glow-cyan{text-shadow:0 0 10px var(--color-accent-secondary),0 0 20px var(--color-accent-secondary),0 0 30px var(--color-accent-secondary)}.text-glow-success{text-shadow:0 0 10px var(--color-success-neon),0 0 20px var(--color-success-neon),0 0 30px var(--color-success-neon)}.text-neon-white{color:var(--color-text-white)}.text-neon-muted{color:var(--color-text-neon-muted)}.text-neon-primary{color:var(--color-accent-primary)}.text-neon-secondary{color:var(--color-accent-secondary)}body.theme-dark .player-container h1,body.theme-dark .lobby-header h1,body.theme-dark .game-container h1,body.theme-dark .reveal-container h1,body.theme-dark .end-container h1{color:var(--color-text-white)}body.theme-dark .player-container p,body.theme-dark .hint,body.theme-dark .player-count{color:var(--color-text-neon-muted)}body.theme-dark .join-form>p{color:var(--color-text-neon-muted)}body.theme-dark .player-card{background:var(--color-dark-surface);border-color:var(--color-border-neon)}body.theme-dark .player-card--you{background:#ff2d6a1a;border-color:var(--color-accent-primary)}body.theme-dark .player-name{color:var(--color-text-white)}body.theme-dark .you-badge{color:var(--color-accent-primary)}body.theme-dark .name-input{background:var(--color-dark-surface);border-color:var(--color-border-neon);color:var(--color-text-white)}body.theme-dark .name-input:focus{border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #ff2d6a33}body.theme-dark .name-input::placeholder{color:var(--color-text-neon-muted)}body.theme-dark .join-btn{background:var(--color-accent-primary);color:var(--color-text-white)}body.theme-dark .join-btn:hover{box-shadow:var(--glow-primary)}body.theme-dark .qr-share-area{background:var(--color-dark-surface);border:1px solid var(--color-border-neon)}body.theme-dark .qr-hint{color:var(--color-text-neon-muted)}body.theme-dark .qr-share-header{color:var(--color-text-white)}body.theme-dark .qr-share-chevron,body.theme-dark .lobby-status{color:var(--color-text-neon-muted)}body.theme-dark .game-container{background:var(--color-bg-primary)}body.theme-dark .round-indicator-text,body.theme-dark .timer{color:var(--color-text-white)}body.theme-dark .timer--warning{color:var(--color-warning);text-shadow:0 0 10px var(--color-warning);animation:timer-pulse-subtle 1s ease-in-out infinite}body.theme-dark .timer--critical{color:var(--color-error-neon);text-shadow:0 0 15px var(--color-error-neon);animation:timer-pulse-intense .5s ease-in-out infinite}body.theme-dark .player-avatar{background:var(--color-dark-surface-hover);color:var(--color-text-neon-muted)}body.theme-dark .player-indicator.is-submitted .player-avatar{background:var(--color-success-neon);color:var(--color-bg-primary);box-shadow:var(--glow-success)}body.theme-dark #selected-year{color:var(--color-text-white)}body.theme-dark .slider-label{color:var(--color-text-neon-muted)}body.theme-dark .year-slider{background:var(--color-dark-surface)}body.theme-dark .year-slider::-webkit-slider-thumb{background:var(--color-accent-primary);box-shadow:var(--glow-primary)}body.theme-dark .year-slider::-moz-range-thumb{background:var(--color-accent-primary);box-shadow:var(--glow-primary)}body.theme-dark .submit-btn{background:var(--color-accent-primary)}body.theme-dark .submit-btn:hover{box-shadow:var(--glow-primary)}body.theme-dark .submitted-confirmation{background:var(--color-success-neon);color:var(--color-bg-primary);box-shadow:var(--glow-success)}body.theme-dark .reveal-container{background:var(--color-bg-primary)}body.theme-dark .reveal-round-info,body.theme-dark .correct-year-label{color:var(--color-text-neon-muted)}body.theme-dark .correct-year{color:var(--color-success-neon);text-shadow:0 0 10px var(--color-success-neon),0 0 20px var(--color-success-neon)}body.theme-dark .song-title{color:var(--color-text-white)}body.theme-dark .song-artist{color:var(--color-text-neon-muted)}body.theme-dark .fun-fact-container{background:#ff660026;border:1px solid rgba(255,102,0,.3)}body.theme-dark .fun-fact-text{color:var(--color-warning)}body.theme-dark .reveal-emotion--exact{color:var(--color-success-neon);text-shadow:0 0 20px var(--color-success-neon),0 0 40px var(--color-success-neon)}body.theme-dark .reveal-emotion--close{color:var(--color-warning);text-shadow:0 0 15px var(--color-warning)}body.theme-dark .reveal-emotion--wrong{color:var(--color-text-neon-muted)}body.theme-dark .reveal-emotion--missed{color:var(--color-text-neon-muted);opacity:.6}body.theme-dark .personal-result{background:var(--color-dark-surface);border:1px solid var(--color-border-neon)}body.theme-dark .result-header,body.theme-dark .result-label{color:var(--color-text-neon-muted)}body.theme-dark .result-value{color:var(--color-text-white)}body.theme-dark .result-score{color:var(--color-accent-secondary);text-shadow:0 0 10px var(--color-accent-secondary)}body.theme-dark .leaderboard{background:var(--color-dark-surface);border:1px solid var(--color-border-neon);box-shadow:none}body.theme-dark .leaderboard-header{background:var(--color-dark-card);border-color:var(--color-border-neon)}body.theme-dark .leaderboard-title{color:var(--color-text-white)}body.theme-dark .leaderboard-entry{border-color:var(--color-border-neon)}body.theme-dark .leaderboard-entry.is-current{background:#ff2d6a1a;border-left-color:var(--color-accent-primary)}body.theme-dark .entry-rank{color:var(--color-text-neon-muted)}body.theme-dark .entry-name{color:var(--color-text-white)}body.theme-dark .entry-score{color:var(--color-accent-secondary)}body.theme-dark .leaderboard-entry--climbing{animation:leaderboard-climb-dark .4s ease-out}body.theme-dark .leaderboard-entry--falling{animation:leaderboard-fall-dark .4s ease-out}@keyframes leaderboard-climb-dark{0%{transform:translateY(10px);opacity:.7;background:#00ff8826}to{transform:translateY(0);opacity:1;background:transparent}}@keyframes leaderboard-fall-dark{0%{transform:translateY(-10px);opacity:.7;background:#ff2d6a26}to{transform:translateY(0);opacity:1;background:transparent}}body.theme-dark .rank-up{color:var(--color-success-neon);text-shadow:0 0 5px var(--color-success-neon)}body.theme-dark .rank-down{color:var(--color-error-neon);text-shadow:0 0 5px var(--color-error-neon)}body.theme-dark .streak-indicator{color:var(--color-warning)}body.theme-dark .streak-indicator--hot{text-shadow:0 0 10px var(--color-warning),0 0 20px var(--color-warning)}body.theme-dark .leaderboard-separator{color:var(--color-text-neon-muted);border-color:var(--color-border-neon)}body.theme-dark .leaderboard-entry.is-top-1{background:linear-gradient(90deg,#ffd70026,#ffd7000d)}body.theme-dark .leaderboard-entry.is-top-1 .entry-rank{color:gold;text-shadow:0 0 10px rgba(255,215,0,.5)}body.theme-dark .leaderboard-entry.is-top-2{background:linear-gradient(90deg,#c0c0c026,#c0c0c00d)}body.theme-dark .leaderboard-entry.is-top-2 .entry-rank{color:silver;text-shadow:0 0 10px rgba(192,192,192,.5)}body.theme-dark .leaderboard-entry.is-top-3{background:linear-gradient(90deg,#cd7f3226,#cd7f320d)}body.theme-dark .leaderboard-entry.is-top-3 .entry-rank{color:#cd7f32;text-shadow:0 0 10px rgba(205,127,50,.5)}body.theme-dark .end-container{background:var(--color-bg-primary)}body.theme-dark .end-title{color:var(--color-text-white)}body.theme-dark .end-subtitle{color:var(--color-text-neon-muted)}body.theme-dark .your-result{background:var(--color-dark-surface);border:1px solid var(--color-border-neon)}body.theme-dark .your-result-header{color:var(--color-accent-primary)}body.theme-dark .your-result-rank{color:var(--color-text-white)}body.theme-dark .your-result-score{color:var(--color-text-neon-muted)}body.theme-dark .stat-value{color:var(--color-accent-secondary)}body.theme-dark .stat-label{color:var(--color-text-neon-muted)}body.theme-dark .podium-name{color:var(--color-text-white)}body.theme-dark .podium-score{color:var(--color-text-neon-muted)}body.theme-dark .final-leaderboard{background:var(--color-dark-surface);border:1px solid var(--color-border-neon);box-shadow:none}body.theme-dark .final-leaderboard-header{background:var(--color-dark-card);color:var(--color-text-white)}body.theme-dark .final-entry{border-color:var(--color-border-neon)}body.theme-dark .final-entry.is-current{background:#ff2d6a1a}body.theme-dark .final-rank{color:var(--color-text-neon-muted)}body.theme-dark .final-name{color:var(--color-text-white)}body.theme-dark .final-score{color:var(--color-accent-secondary)}body.theme-dark .new-game-btn{background:var(--color-success-neon);color:var(--color-bg-primary);box-shadow:var(--glow-success)}body.theme-dark .new-game-btn:hover{background:#4dff1f}body.theme-dark .end-player-message,body.theme-dark .rejoin-hint{color:var(--color-text-neon-muted)}body.theme-dark .paused-container{background:var(--color-bg-primary)}body.theme-dark .paused-container h1{color:var(--color-text-white)}body.theme-dark .paused-container>p{color:var(--color-text-neon-muted)}body.theme-dark .paused-hint{color:var(--color-text-neon-muted)}body.theme-dark .connection-lost-container h1{color:var(--color-text-white)}body.theme-dark .connection-lost-container>p{color:var(--color-text-neon-muted)}body.theme-dark .connection-lost-hint{color:var(--color-text-neon-muted)}body.theme-dark .qr-modal-content{background:var(--color-bg-primary);border:1px solid var(--color-border-neon)}body.theme-dark .qr-modal-label{color:var(--color-text-white)}.qr-print-area{text-align:center;padding:var(--space-lg) 0}.qr-container{display:inline-block;padding:var(--space-md);background:var(--color-bg-white);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}#qr-code{display:inline-block}#qr-code img{display:block}.qr-instruction{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-top:var(--space-md)}.join-url{font-family:var(--font-mono);font-size:var(--font-size-base);color:var(--color-text-muted);margin-top:var(--space-sm);word-break:break-all;user-select:all;cursor:text}.lobby-controls{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin:var(--space-md) 0}.btn-dashboard{display:flex;align-items:center;gap:var(--space-xs)}.player-list{margin-top:var(--space-md);border-top:1px solid var(--color-border-light);padding-top:var(--space-md)}.game-controls-bar{display:flex;gap:var(--space-sm);justify-content:center;margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border-light)}.game-info{background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.game-info p{margin-bottom:var(--space-sm)}.game-info p:last-child{margin-bottom:0}@media print{body *{visibility:hidden}.qr-print-area,.qr-print-area *{visibility:visible}.qr-print-area{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}#qr-code{width:400px!important;height:400px!important}#qr-code img,#qr-code canvas{width:400px!important;height:400px!important}.qr-instruction{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin-top:var(--space-xl)}.join-url{font-size:var(--font-size-base);font-family:var(--font-mono);margin-top:var(--space-sm)}.no-print{display:none!important}}.player-container{max-width:500px;margin:0 auto;padding-top:max(var(--space-md),env(safe-area-inset-top));padding-bottom:max(var(--space-md),env(safe-area-inset-bottom));padding-left:max(var(--space-sm),env(safe-area-inset-left));padding-right:max(var(--space-sm),env(safe-area-inset-right));text-align:center;min-height:100vh;display:flex;flex-direction:column;justify-content:flex-start}@media(min-width:768px){.player-container{max-width:480px;margin-left:auto;margin-right:auto;padding-left:var(--space-lg);padding-right:var(--space-lg)}}.view{display:block;overflow-x:hidden}.view.hidden{display:none}.error-icon{font-size:var(--font-size-timer);margin-bottom:var(--space-md)}.player-container h1{margin-bottom:var(--space-sm);color:var(--color-text-primary)}.player-container p{color:var(--color-text-muted);margin-bottom:var(--space-sm)}.hint{font-size:var(--font-size-base);color:var(--color-text-light)}.coming-soon{font-style:italic;color:var(--color-text-muted)}.spinner{width:40px;height:40px;margin:0 auto var(--space-md);border:4px solid var(--color-bg-card-alt);border-top:4px solid var(--color-accent-blue);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#qr-code{max-width:100%}#qr-code img,#qr-code canvas{max-width:100%;height:auto}@media(min-width:481px)and (max-width:768px){.qr-container{padding:var(--space-xl)}}@media(min-width:769px){.qr-container{padding:var(--space-lg)}}.join-form{max-width:400px;margin:0 auto;padding:var(--space-lg);text-align:center}.join-form h1{margin-bottom:var(--space-sm);font-size:var(--font-size-2xl)}.join-form>p{margin-bottom:var(--space-lg);color:var(--color-text-muted)}.form-group{margin-bottom:var(--space-md)}.name-input{width:100%;padding:14px var(--space-md);font-size:var(--font-size-lg);border:2px solid var(--color-border-medium);border-radius:var(--radius-md);min-height:48px;box-sizing:border-box}.name-input:focus{border-color:var(--color-accent-blue);outline:none;box-shadow:0 0 0 3px #3b82f61a}.join-btn{width:100%;min-height:48px;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.validation-msg{margin-top:var(--space-sm);font-size:var(--font-size-base);color:var(--color-error);text-align:left}.lobby-container{max-width:500px;margin:0 auto;padding:var(--space-lg) var(--space-md)}.lobby-header{text-align:center;margin-bottom:var(--space-lg)}.lobby-header h1{font-size:var(--font-size-2xl);margin-bottom:var(--space-sm);color:var(--color-text-primary)}.player-count{font-size:var(--font-size-md);color:var(--color-text-muted)}.player-list{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-lg)}.player-card{display:flex;align-items:center;padding:var(--space-sm) var(--space-md);min-height:48px;background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-border-light);transition:all var(--transition-normal)}.player-card--you{background:#eff6ff;border-color:var(--color-accent-blue)}.player-card--disconnected{opacity:.5;filter:grayscale(.3);transition:opacity .3s ease,filter .3s ease}.away-badge{font-size:var(--font-size-sm);color:var(--color-text-muted);font-style:italic;margin-left:var(--space-xs)}.player-name{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-md);color:var(--color-text-primary)}.you-badge{font-size:var(--font-size-sm);color:var(--color-accent-blue);font-weight:var(--font-weight-medium)}.player-card.is-new{animation:playerJoin var(--transition-slow) ease-out;background:#ecfdf5;border-color:var(--color-success)}@keyframes playerJoin{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.player-list--virtual{position:relative;overflow-y:auto;max-height:320px;-webkit-overflow-scrolling:touch;contain:layout style paint}.player-list--virtual .virtual-spacer-top,.player-list--virtual .virtual-spacer-bottom{flex-shrink:0;pointer-events:none}.player-list--virtual .virtual-content-wrapper{display:flex;flex-direction:column;gap:var(--space-sm)}.player-list--virtual .player-card{flex-shrink:0;height:52px;box-sizing:border-box}.qr-share-area{text-align:center;padding:var(--space-lg) var(--space-md);background:var(--color-bg-card);border-radius:var(--radius-lg);margin-bottom:var(--space-md)}.qr-icon{font-size:var(--font-size-xl)}.qr-container{display:inline-block;padding:var(--space-sm);background:var(--color-bg-white);border-radius:var(--radius-md);box-shadow:var(--shadow-md);cursor:pointer;min-width:150px;min-height:150px;transition:transform var(--transition-fast)}.qr-container:hover,.qr-container:focus{transform:scale(1.02);outline:2px solid var(--color-accent-blue);outline-offset:2px}.qr-container img{display:block;width:100%;height:auto}.qr-hint{margin-top:var(--space-sm);font-size:13px;color:var(--color-text-muted)}.qr-collapsible{padding:0}.qr-share-header{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);cursor:pointer;user-select:none;list-style:none;font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);min-height:44px}.qr-share-header::-webkit-details-marker{display:none}.qr-share-chevron{margin-left:var(--space-sm);transition:transform var(--transition-normal);font-size:.8rem;color:var(--color-text-muted)}.qr-collapsible[open] .qr-share-chevron{transform:rotate(180deg)}.qr-share-content{padding:0 var(--space-md) var(--space-lg);animation:qrSlideDown var(--transition-normal) ease-out}@keyframes qrSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.qr-collapsible:not([open]){padding-bottom:0}.qr-collapsible:not([open]) .qr-share-header{padding-bottom:var(--space-md)}@media(prefers-reduced-motion:reduce){.qr-share-chevron{transition:none}.qr-share-content{animation:none}}.dashboard-hint-container{margin-top:var(--space-md);text-align:center}.dashboard-hint-text{display:inline-flex;flex-direction:column;align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);color:#fff;background:var(--color-surface-dark);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);margin:0}.dashboard-hint-label{display:flex;align-items:center;gap:var(--space-xs);color:#fff}.dashboard-hint-icon{font-size:var(--font-size-base)}.dashboard-hint-url{font-family:monospace;color:var(--color-accent-secondary);font-size:var(--font-size-sm)}.qr-modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.qr-modal.hidden{display:none}.qr-modal-backdrop{position:absolute;inset:0;background:#000000bf}.qr-modal-content{position:relative;background:var(--color-bg-white);padding:var(--space-xl) var(--space-lg);border-radius:var(--radius-xl);text-align:center;max-width:90vw;max-height:90vh;animation:modalFadeIn var(--transition-fast)}.qr-modal-code{display:inline-block;padding:var(--space-md);background:var(--color-bg-white);border-radius:var(--radius-md);min-width:250px}.qr-modal-code img{display:block;width:100%;max-width:80vw;height:auto}.qr-modal-label{margin:var(--space-md) 0;font-size:var(--font-size-lg);color:var(--color-text-primary)}.qr-modal-close{min-width:120px;min-height:48px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.lobby-status{text-align:center;padding:var(--space-md);color:var(--color-text-muted)}.how-to-play{margin:var(--space-md) 0;background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-border-light)}.how-to-play-header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);cursor:pointer;user-select:none;list-style:none;font-weight:600;color:var(--color-text-primary);min-height:44px}.how-to-play-header::-webkit-details-marker{display:none}.how-to-play-icon{font-size:1.2rem}.how-to-play-chevron{margin-left:auto;transition:transform var(--transition-normal);font-size:.8rem;color:var(--color-text-secondary)}.how-to-play[open] .how-to-play-chevron{transform:rotate(180deg)}.how-to-play-content{padding:0 var(--space-md) var(--space-md);animation:howToPlaySlideDown var(--transition-normal) ease-out}.how-to-play-steps{margin:0;padding:0;list-style:none;color:var(--color-text-secondary);font-size:.9rem;line-height:1.6;counter-reset:step-counter}.how-to-play-steps li{margin-bottom:var(--space-sm);padding-left:var(--space-lg);position:relative;counter-increment:step-counter}.how-to-play-steps li:before{content:counter(step-counter) ".";position:absolute;left:0;width:var(--space-md);text-align:right;font-weight:600;color:var(--color-text-primary)}.how-to-play-steps li:last-child{margin-bottom:0}@keyframes howToPlaySlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.leave-game-container{text-align:center;padding:var(--space-md);position:sticky;bottom:0;background:linear-gradient(to top,var(--color-bg-card),transparent);z-index:var(--z-controls, 10)}.leave-game-container.hidden{display:none}body.theme-dark .leave-game-container{background:transparent}.btn-leave{opacity:.7;transition:opacity .2s ease}.btn-leave:hover{opacity:1}.admin-controls{padding:var(--space-lg) var(--space-md);text-align:center;background:linear-gradient(to top,var(--color-bg-card),transparent);position:sticky;bottom:0}.admin-controls.hidden{display:none}body.theme-dark .admin-controls{background:transparent}.btn-large{min-height:56px;font-size:var(--font-size-xl);padding:var(--space-md) var(--space-xl)}.btn-full-width{width:100%}.admin-hint{margin-top:var(--space-sm);font-size:var(--font-size-base);color:var(--color-text-muted)}.admin-lobby-actions{text-align:center;margin-top:var(--space-lg)}.admin-badge{font-size:var(--font-size-sm);color:var(--color-warning);margin-left:var(--space-xs)}.lobby-player-count-container{text-align:center;margin-bottom:var(--space-md)}.lobby-stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md);margin-bottom:var(--space-lg)}.stat-card--clickable{display:block;text-decoration:none;cursor:pointer;margin-bottom:var(--space-lg)}.stat-card--clickable:hover{border-color:var(--color-accent-secondary)}.dashboard-hint-card{background:#00f5ff0d;border-color:var(--color-accent-secondary)}.qr-section{text-align:center;padding:var(--space-xl) var(--space-lg);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-lg)}.qr-section .qr-container{display:inline-block;padding:var(--space-md);background:#fff;border-radius:var(--radius-md);margin-bottom:var(--space-md)}.qr-hint{font-size:1rem;color:var(--color-text-neon-muted);margin-bottom:var(--space-sm)}.qr-url-display{font-family:Outfit,sans-serif;font-size:1.125rem;font-weight:600;color:var(--color-accent-secondary);word-break:break-all}.player-list-section{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-lg)}.section-subheader{display:flex;align-items:center;gap:var(--space-sm);font-size:1rem;font-weight:600;color:var(--color-text-white);margin-bottom:var(--space-md)}.section-subheader .section-icon{font-size:1.25rem}.player-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-sm)}.player-cards-grid .player-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-md);min-height:80px;background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);text-align:center;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.player-cards-grid .player-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #9d4edd33}.player-cards-grid .player-card.is-new{background:#39ff141a;border-color:var(--color-success-neon);animation:playerCardJoin .5s ease-out}@keyframes playerCardJoin{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.player-cards-grid .player-card--disconnected{opacity:.5;filter:grayscale(.3)}.player-cards-grid .player-name{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-white);margin-bottom:var(--space-xs);display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap;justify-content:center}.player-cards-grid .admin-badge{font-size:1rem}.player-cards-grid .away-badge{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);display:block;width:100%}.kick-player-btn{position:relative;background:none;border:1px solid var(--color-border-dark);color:var(--color-text-muted);width:24px;height:24px;border-radius:50%;font-size:1rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-top:var(--space-xs);padding:0;transition:all .15s ease}.kick-player-btn:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.kick-player-btn:hover{background:var(--color-error);color:#fff;border-color:var(--color-error)}.lobby-actions{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border-dark)}.lobby-header-compact{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-md);text-align:left}.section-header--inline{margin-bottom:0;flex:1;min-width:120px;text-align:left}.stat-badge-bar{display:flex;align-items:center;gap:var(--space-md)}.stat-badge{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:#ffffff0d;border:1px solid var(--color-border-neon);border-radius:var(--radius-md);font-size:.875rem}.stat-badge-icon{font-size:1rem}.stat-badge-value{font-weight:600;color:var(--color-accent-secondary)}.stat-badge--status .stat-badge-value{color:var(--color-text-white)}.qr-section--compact{padding:var(--space-md);margin-bottom:var(--space-md)}.qr-section--compact .qr-container{padding:var(--space-sm);margin-bottom:var(--space-sm)}.qr-section--compact #qr-code{width:180px!important;height:180px!important}.qr-section--compact #qr-code img,.qr-section--compact #qr-code canvas{width:180px!important;height:180px!important}.qr-section--compact .qr-hint{font-size:.875rem;margin-bottom:var(--space-xs)}.qr-url-display--compact{font-size:.75rem;margin-bottom:var(--space-sm)}.dashboard-link{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:#00f5ff1a;border:1px solid var(--color-accent-secondary);border-radius:var(--radius-md);color:var(--color-accent-secondary);text-decoration:none;font-size:.875rem;transition:all .2s ease}.dashboard-link:hover{background:#00f5ff33}.dashboard-link-arrow{opacity:.7}.player-list-section--compact{padding:var(--space-sm);margin-bottom:var(--space-sm)}.section-subheader--compact{font-size:.875rem;margin-bottom:var(--space-sm)}.empty-state-inline{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);color:var(--color-text-neon-muted);font-size:.875rem;text-align:center}.lobby-actions--sticky{position:sticky;bottom:0;margin:0 calc(-1 * var(--space-md));padding:var(--space-sm) var(--space-md);background:var(--color-bg-primary);border-top:1px solid var(--color-border-dark);z-index:10;display:flex;flex-direction:column;gap:var(--space-sm, 8px)}@media(min-width:481px){.qr-section--compact #qr-code,.qr-section--compact #qr-code img,.qr-section--compact #qr-code canvas{width:240px!important;height:240px!important}.qr-section--compact{padding:var(--space-lg)}.lobby-actions--sticky{position:relative;margin:var(--space-lg) 0 0 0;padding:var(--space-md) 0 0 0;background:transparent}}.lobby-wordmark-header{display:flex;justify-content:center;align-items:center;padding:var(--space-md) var(--space-md) var(--space-sm);padding-top:env(safe-area-inset-top,16px)}.lobby-wordmark-header .wordmark{font-size:2rem}.lobby-container--compact{flex:1;padding:0 var(--space-sm) var(--space-2xl);max-width:500px;margin:0 auto;width:100%}.lobby-container--compact .section-collapsible{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-md);overflow:hidden}.lobby-container--compact .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.lobby-container--compact .section-header-collapsible .section-icon{font-size:1rem}.lobby-container--compact .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-text-neon-muted);padding:2px 8px;background:#ffffff0d;border-radius:var(--radius-sm)}.lobby-container--compact .section-toggle{font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease;margin-left:var(--space-sm)}.lobby-container--compact .section-header-collapsible>.section-toggle:nth-child(3){margin-left:auto}.lobby-container--compact .section-collapsible:not(.collapsed) .section-toggle{transform:rotate(180deg)}.lobby-container--compact .section-content{padding:0 var(--space-md) var(--space-md)}.lobby-container--compact .section-collapsible.collapsed .section-content{display:none}.lobby-status-compact{text-align:center;padding:var(--space-md);color:var(--color-text-neon-muted);font-size:.875rem}.how-to-play-steps-compact{list-style:decimal;padding-left:var(--space-lg);margin:0;font-size:.875rem;color:var(--color-text-neon-muted)}.how-to-play-steps-compact li{padding:var(--space-xs) 0}.stat-badge--difficulty{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em}.stat-badge--difficulty:empty{display:none}.admin-content .section-collapsible{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-md);overflow:hidden}.admin-content .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.admin-content .section-header-collapsible .section-icon{font-size:1rem}.admin-content .section-header-collapsible .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-accent-secondary);background:#00f5ff1a;padding:2px 8px;border-radius:var(--radius-sm)}.admin-content .section-header-collapsible .section-toggle{margin-left:var(--space-sm);font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease}.admin-content .section-collapsible:not(.collapsed) .section-toggle{transform:rotate(180deg)}.admin-content .section-collapsible .section-content{padding:0 var(--space-md) var(--space-md)}.admin-content .section-collapsible.collapsed .section-content{display:none}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) 0;border-bottom:1px solid rgba(255,255,255,.05)}.setting-row:last-child{border-bottom:none}.setting-group{border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:var(--space-sm);margin-bottom:var(--space-sm)}.setting-group:last-child{border-bottom:none}.setting-group .setting-row{border-bottom:none}.tts-group-title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0 0 var(--space-xs) 0;opacity:.8}.setting-hint{font-size:.7rem;color:var(--color-text-muted);margin:0 0 var(--space-xs) calc(var(--space-xs) + 24px);line-height:1.3;opacity:.75}body.theme-dark .setting-hint{color:var(--color-text-neon-muted)}.setting-label{display:flex;align-items:center;gap:var(--space-xs);font-size:.875rem;color:var(--color-text-white)}.setting-icon{font-size:.875rem}.chip-group{display:flex;gap:4px}.chip{padding:4px 10px;font-size:.75rem;font-weight:500;background:#ffffff0d;border:1px solid var(--color-border-neon);border-radius:var(--radius-sm);color:var(--color-text-neon-muted);cursor:pointer;transition:all .15s ease}.chip:hover{background:#ffffff1a;color:var(--color-text-white)}.chip.chip--active{background:#00f5ff33;border-color:var(--color-accent-secondary);color:var(--color-accent-secondary)}.toggle-compact{display:flex;align-items:center;cursor:pointer}.toggle-compact input{position:absolute;opacity:0;width:0;height:0}.toggle-switch-compact{width:36px;height:20px;background:#ffffff1a;border-radius:10px;position:relative;transition:background .2s ease}.toggle-switch-compact:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--color-text-neon-muted);border-radius:50%;transition:all .2s ease}.toggle-compact input:checked+.toggle-switch-compact{background:#00f5ff4d}.toggle-compact input:checked+.toggle-switch-compact:after{left:18px;background:var(--color-accent-secondary)}.admin-actions{position:sticky;bottom:0;background:var(--color-bg-primary);padding:var(--space-sm) 0;margin-top:var(--space-sm)}.admin-actions .status-error{margin-bottom:var(--space-xs);font-size:.875rem}.modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.modal.hidden{display:none}.modal-backdrop{position:absolute;inset:0;background:#00000080}.modal-content{position:relative;background:var(--color-bg-white);padding:var(--space-lg);border-radius:var(--radius-lg);max-width:400px;width:90%;animation:modalFadeIn var(--transition-fast)}.modal-content h2{margin-bottom:var(--space-sm);font-size:var(--font-size-xl)}.modal-content p{margin-bottom:var(--space-md);color:var(--color-text-muted)}.modal-actions{display:flex;gap:var(--space-sm);margin-top:var(--space-lg)}.modal-actions .btn{flex:1}.game-placeholder{text-align:center;padding:var(--space-2xl) var(--space-lg)}.game-placeholder h1{font-size:var(--font-size-3xl);margin-bottom:var(--space-md);color:var(--color-text-primary)}.game-placeholder p{font-size:var(--font-size-md);color:var(--color-text-muted)}.reveal-placeholder{text-align:center;padding:var(--space-2xl) var(--space-lg)}.reveal-placeholder h1{font-size:var(--font-size-4xl);margin-bottom:var(--space-md);color:var(--color-text-primary)}.reveal-placeholder p{font-size:var(--font-size-md);color:var(--color-text-muted)}.end-container{text-align:center;padding:var(--space-2xl) var(--space-lg)}.end-icon{font-size:var(--font-size-timer);margin-bottom:var(--space-md)}.end-container h1{font-size:var(--font-size-3xl);margin-bottom:var(--space-sm);color:var(--color-text-primary)}.end-message{font-size:var(--font-size-lg);color:#4b5563;margin-bottom:var(--space-sm)}.game-container{display:flex;flex-direction:column;align-items:center;padding:var(--space-sm);padding-bottom:max(var(--space-md),env(safe-area-inset-bottom));max-width:400px;margin:0 auto}.game-sticky-bar{position:sticky;top:0;z-index:50;width:100%;padding:var(--space-xs) var(--space-sm);background:var(--color-bg-light);border-bottom:1px solid var(--color-border-light)}body.theme-dark .game-sticky-bar{background:var(--color-bg-primary);border-bottom-color:var(--color-border-dark)}.game-sticky-bar .timer-container{margin-bottom:0}.game-sticky-bar .timer{font-size:2rem}.game-header-compact{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:var(--space-sm);padding:0 var(--space-xs)}.game-header-left{display:flex;align-items:center;gap:var(--space-xs)}.game-header-left .section-icon{font-size:1rem}.round-indicator-text{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-white)}.stat-badge--steal{background:linear-gradient(135deg,var(--color-purple-primary),var(--color-purple-secondary, #9333ea));animation:steal-badge-pulse 2s ease-in-out infinite}@keyframes steal-badge-pulse{0%,to{box-shadow:0 0 8px #9333ea80}50%{box-shadow:0 0 12px #9333eacc}}.last-round-banner{background:linear-gradient(135deg,var(--color-warning),var(--color-warning-dark));color:var(--color-text-white);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-sm);text-align:center;width:100%;animation:pulse 2s infinite}.intro-badge{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);background:linear-gradient(135deg,gold,#ff6b00);color:#000;border-radius:var(--radius-pill);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:1px;animation:intro-pulse 1.5s ease-in-out infinite;margin-bottom:var(--space-md);box-shadow:0 0 20px #ffd70080,0 0 40px #ff6b004d}.intro-splash{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#000000d9;animation:intro-splash-in .3s ease-out,intro-splash-out .5s ease-in 1.5s forwards;pointer-events:none}.intro-splash-content{display:flex;flex-direction:column;align-items:center;gap:12px;animation:intro-splash-scale .4s cubic-bezier(.34,1.56,.64,1)}.intro-splash-icon{font-size:80px;filter:drop-shadow(0 0 30px rgba(255,215,0,.8))}.intro-splash-text{font-size:36px;font-weight:900;text-transform:uppercase;letter-spacing:4px;background:linear-gradient(135deg,gold,#ff6b00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:none}.intro-splash-hint{font-size:18px;color:#ffffffb3;letter-spacing:1px}@keyframes intro-splash-in{0%{opacity:0}to{opacity:1}}@keyframes intro-splash-out{0%{opacity:1}to{opacity:0;visibility:hidden}}@keyframes intro-splash-scale{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.intro-badge-icon{font-size:var(--font-size-md)}.intro-badge--large{font-size:var(--font-size-lg);padding:var(--space-sm) var(--space-lg);margin-left:var(--space-md)}.intro-badge--large .intro-badge-icon{font-size:var(--font-size-xl)}.intro-badge--stopped{background:linear-gradient(135deg,#666,#444);color:var(--color-text-white);animation:none}@keyframes intro-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@media(prefers-reduced-motion:reduce){.intro-badge{animation:none}}.closest-wins-badge{background:linear-gradient(135deg,#00c6ff,#0072ff);box-shadow:0 0 20px #00c6ff80,0 0 40px #0072ff4d}.result-card.is-closest-winner{border:2px solid #00c6ff;box-shadow:0 0 12px #00c6ff66}.closest-winner-badge{margin-left:var(--space-sm);font-size:var(--font-size-sm)}.album-cover-container{position:relative;width:150px;height:150px;margin-bottom:var(--space-md)}.album-cover{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);filter:blur(20px)}@media(max-width:360px){.album-cover-container{width:120px;height:120px}}@media(min-width:768px){.album-cover-container{width:180px;height:180px}}.album-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-card-alt);border-radius:var(--radius-xl)}.loading-spinner{width:40px;height:40px;border:4px solid var(--color-border-light);border-top-color:var(--color-accent-brand);border-radius:50%;animation:spin 1s linear infinite}.timer-container{margin-bottom:var(--space-lg)}.timer{font-size:var(--font-size-timer);font-weight:var(--font-weight-bold);color:var(--color-text-primary);font-variant-numeric:tabular-nums;transition:color var(--transition-normal)}.timer--warning{color:var(--color-warning);animation:timer-pulse-subtle 1s ease-in-out infinite}.timer--critical{color:var(--color-error);animation:timer-pulse-intense .5s ease-in-out infinite}@keyframes timer-pulse-subtle{0%,to{opacity:1}50%{opacity:.8}}@keyframes timer-pulse-intense{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}@media(prefers-reduced-motion:reduce){.timer--warning,.timer--critical{animation:none}}.submission-tracker{width:100%;margin-bottom:var(--space-md);padding:var(--space-sm);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md)}.submitted-players{display:flex;gap:var(--space-sm);overflow-x:auto;padding:var(--space-xs) 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;justify-content:center;flex-wrap:wrap}.submitted-players::-webkit-scrollbar{display:none}.player-indicator{display:flex;flex-direction:column;align-items:center;min-width:48px;flex-shrink:0;position:relative}.player-badge{position:absolute;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;z-index:1}.player-badge--bet{top:-2px;right:2px;background:var(--color-warning)}.player-badge--steal{top:-2px;left:2px;background:linear-gradient(135deg,var(--color-purple-primary),var(--color-purple-secondary, #9333ea))}.player-avatar{width:36px;height:36px;border-radius:50%;background:var(--color-border-light);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);border:2px solid transparent;transition:all var(--transition-normal)}.player-indicator.is-submitted .player-avatar{background:var(--color-success);color:var(--color-text-white);border-color:var(--color-success-hover);animation:submitted-pulse var(--transition-slow) ease-out}.player-indicator.is-submitted .player-initials{display:none}.player-indicator.is-submitted .player-avatar:after{content:"\2713";font-size:var(--font-size-md)}@keyframes submitted-pulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.player-indicator .player-name{font-size:var(--font-size-xs);color:var(--color-text-muted);max-width:48px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;margin-top:var(--space-xs)}.player-indicator.is-current-player .player-avatar{border-color:var(--color-accent-brand)}.player-indicator.is-current-player .player-name{font-weight:var(--font-weight-semibold);color:var(--color-accent-brand)}.player-indicator--disconnected{opacity:.4}.submission-tracker.all-submitted{border-color:var(--color-success);background:#10b9811a}.artist-challenge{width:100%}.artist-challenge .section-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.stat-badge--bonus{background:#22c55e26;color:var(--color-success);font-weight:700;margin-left:auto}.artist-options-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:var(--space-sm)}@media(max-width:320px){.artist-options-grid{grid-template-columns:1fr}}.artist-option-btn{display:flex;align-items:center;justify-content:center;min-height:72px;padding:var(--space-sm) var(--space-md);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-md);font-weight:500;cursor:pointer;transition:all .2s ease;position:relative}.artist-option-btn:active{transform:scale(.98)}.artist-option-btn.is-loading{animation:artistPulse 1s infinite}@keyframes artistPulse{0%,to{opacity:1}50%{opacity:.6}}.artist-option-btn.is-correct,.artist-option-btn.is-winner{background:var(--color-success);border-color:var(--color-success);color:#fff}.artist-option-btn.is-winner{box-shadow:var(--glow-primary)}.artist-option-btn.is-wrong{animation:artistWrongFlash .5s ease}.artist-option-btn.is-wrong.is-selected{background:var(--color-error);border-color:var(--color-error);color:#fff;animation:none;opacity:.8}@keyframes artistWrongFlash{0%,to{background:var(--color-surface)}50%{background:#ef44444d}}.artist-option-btn.is-disabled{opacity:.5;pointer-events:none}.artist-points-badge{position:absolute;right:var(--space-sm);font-size:var(--font-size-sm);font-weight:700;color:#fff;background:#0003;padding:2px 6px;border-radius:var(--radius-sm)}.artist-result{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-align:center;font-weight:500}.artist-result.is-winner{background:#22c55e26;color:var(--color-success)}.artist-result.is-late{background:var(--color-surface-alt, rgba(255, 255, 255, .05));color:var(--color-text-muted)}body.theme-dark .artist-option-btn{background:#ffffff0d;border-color:var(--color-border-neon);color:var(--color-text-white)}body.theme-dark .artist-option-btn:hover{background:#ffffff1a}@media(prefers-reduced-motion:reduce){.artist-option-btn.is-loading{animation:none;opacity:.7}.artist-option-btn.is-wrong{animation:none;opacity:.5}}.artist-reveal-section{padding:var(--space-md);margin-bottom:var(--space-md);background:var(--color-surface-alt, rgba(255, 255, 255, .05));border-radius:var(--radius-lg)}.artist-reveal-section .section-content-padded{text-align:center}.artist-reveal-label{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs)}.artist-reveal-name{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text);margin-bottom:var(--space-sm)}.artist-reveal-winner{font-size:var(--font-size-md);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);display:inline-block}.artist-reveal-winner.is-you{background:#22c55e26;color:var(--color-success);font-weight:600}.artist-reveal-winner.is-other{color:var(--color-text-muted)}.artist-reveal-no-winner{color:var(--color-text-muted);font-style:italic}body.theme-dark .artist-reveal-section{background:var(--color-dark-surface-alt, #16213e)}.artist-bonus-row .result-value{color:var(--color-success);font-weight:600}.player-card-artist-badge{font-size:var(--font-size-xs);color:var(--color-success);background:#22c55e1a;padding:2px 6px;border-radius:var(--radius-sm);margin-left:var(--space-xs)}.movie-challenge{width:100%}.movie-challenge .section-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.movie-options-grid{display:grid;grid-template-columns:1fr;gap:var(--space-sm)}@media(min-width:480px){.movie-options-grid{grid-template-columns:1fr 1fr}}.movie-option-btn{display:flex;align-items:center;justify-content:center;min-height:44px;padding:var(--space-sm) var(--space-md);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-md);font-weight:500;cursor:pointer;transition:all .2s ease;position:relative;text-align:center}.movie-option-btn:active{transform:scale(.98)}.movie-option-btn.is-loading{animation:moviePulse 1s infinite}@keyframes moviePulse{0%,to{opacity:1}50%{opacity:.6}}.movie-option-btn.is-correct,.movie-option-btn.is-winner{background:var(--color-success);border-color:var(--color-success);color:#fff}.movie-option-btn.is-winner{box-shadow:var(--glow-primary)}.movie-option-btn.is-wrong{animation:movieWrongFlash .5s ease}.movie-option-btn.is-wrong.is-selected{background:var(--color-error);border-color:var(--color-error);color:#fff;animation:none;opacity:.8}@keyframes movieWrongFlash{0%,to{background:var(--color-surface)}50%{background:#ef44444d}}.movie-option-btn.is-disabled{opacity:.5;pointer-events:none}.movie-rank-badge{position:absolute;right:var(--space-sm);font-size:var(--font-size-sm);font-weight:700;color:#fff;background:#0003;padding:2px 6px;border-radius:var(--radius-sm)}.movie-result{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-align:center;font-weight:500}.movie-result.is-winner{background:#22c55e26;color:var(--color-success)}.movie-result.is-late{background:var(--color-surface-alt, rgba(255, 255, 255, .05));color:var(--color-text-muted)}body.theme-dark .movie-option-btn{background:#ffffff0d;border-color:var(--color-border-neon);color:var(--color-text-white)}body.theme-dark .movie-option-btn:hover{background:#ffffff1a}@media(prefers-reduced-motion:reduce){.movie-option-btn.is-loading{animation:none;opacity:.7}.movie-option-btn.is-wrong{animation:none;opacity:.5}}.movie-reveal-section{padding:var(--space-md);margin-bottom:var(--space-md);background:var(--color-surface-alt, rgba(255, 255, 255, .05));border-radius:var(--radius-lg)}.movie-reveal-section .section-content-padded{text-align:center}.movie-reveal-name{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text);margin-bottom:var(--space-sm)}.movie-reveal-winners{margin-top:var(--space-sm)}.movie-reveal-winners-title{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs)}.movie-reveal-winner-entry{font-size:var(--font-size-md);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);display:inline-block;margin:2px 4px}.movie-reveal-winner-entry.is-you{background:#22c55e26;color:var(--color-success);font-weight:600}.movie-reveal-winner-entry.is-other{color:var(--color-text-muted)}.movie-reveal-no-winner{color:var(--color-text-muted);font-style:italic;font-size:var(--font-size-md);padding:var(--space-xs) var(--space-md)}body.theme-dark .movie-reveal-section{background:var(--color-dark-surface-alt, #16213e)}.year-selector-section{width:100%;padding-bottom:max(var(--space-md),env(safe-area-inset-bottom))}.year-selector{width:100%}.year-display{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.year-adjust-btn{width:48px;height:48px;border-radius:50%;border:2px solid var(--color-border-dark);background:transparent;color:var(--color-text-white);font-size:1.5rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;user-select:none;flex-shrink:0}.year-adjust-btn:active{background:var(--color-accent-primary);border-color:var(--color-accent-primary);transform:scale(.95)}.year-adjust-btn:disabled{opacity:.3;pointer-events:none}#selected-year{font-size:var(--font-size-year);font-weight:var(--font-weight-bold);color:var(--color-text-primary);font-variant-numeric:tabular-nums}.slider-container{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg)}.slider-label{font-size:var(--font-size-sm);color:var(--color-text-muted);min-width:40px}.slider-label--min{text-align:right}.slider-label--max{text-align:left}.year-slider{-webkit-appearance:none;appearance:none;flex:1;height:var(--space-sm);background:var(--color-border-light);border-radius:var(--radius-sm);outline:none}.year-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:44px;height:44px;background:var(--color-accent-brand);border-radius:50%;cursor:pointer;border:4px solid var(--color-bg-white);box-shadow:var(--shadow-md);transition:transform .1s ease}.year-slider::-webkit-slider-thumb:active{transform:scale(1.1)}.year-slider::-moz-range-thumb{width:44px;height:44px;background:var(--color-accent-brand);border-radius:50%;cursor:pointer;border:4px solid var(--color-bg-white);box-shadow:var(--shadow-md)}.submit-btn{width:100%;padding:var(--space-lg) var(--space-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);background:var(--color-accent-brand);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);min-height:56px}.submit-btn:hover{background:var(--color-accent-brand-hover)}.submit-btn:active{transform:scale(.98)}.submit-btn:disabled{background:var(--color-text-light);cursor:not-allowed;transform:none}.submit-btn.is-loading{color:transparent;position:relative}.submit-btn.is-loading:after{content:"";position:absolute;width:24px;height:24px;border:3px solid var(--color-bg-white);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite;left:50%;top:50%;margin-left:-12px;margin-top:-12px}.submit-btn.is-error{background:var(--color-error)}.submitted-confirmation{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);background:var(--color-success);color:var(--color-text-white);border-radius:var(--radius-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.submitted-confirmation .checkmark{font-size:var(--font-size-2xl)}.year-selector.is-submitted .year-slider{pointer-events:none;opacity:.5}.year-selector.is-submitted #selected-year{color:var(--color-text-muted)}@media(max-width:360px){.album-cover-container{max-width:250px}.timer{font-size:var(--font-size-2xl)}}@media(min-width:768px){.album-cover-container{max-width:350px}.timer{font-size:var(--font-size-hero)}}@media(min-width:768px){body{max-width:800px;margin:0 auto;padding:var(--space-lg)}header h1{font-size:var(--font-size-4xl)}.status-section h2,.card-section h2{font-size:var(--font-size-lg)}.card-section{padding:var(--space-md) var(--space-lg)}}.reveal-container{display:flex;flex-direction:column;align-items:center;padding:var(--space-lg);width:100%;margin:0 auto;text-align:center}.reveal-container--compact{padding:var(--space-md);gap:var(--space-sm);align-items:stretch}.reveal-container--duel{padding:var(--space-md);gap:var(--space-sm);align-items:stretch;text-align:left}.reveal-header-compact{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) 0;margin-bottom:var(--space-xs)}.reveal-header-left{display:flex;align-items:center;gap:var(--space-xs)}.reveal-header-compact .section-icon{font-size:1rem}.reveal-header-compact .round-indicator-text{font-size:.875rem;color:var(--color-text-neon-muted)}.reveal-song-hero{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.reveal-album-cover-compact{width:80px;height:80px;object-fit:cover;border-radius:var(--radius-md);flex-shrink:0}.reveal-song-info{flex:1;min-width:0;text-align:left}.reveal-song-info .song-title{font-size:1rem;font-weight:600;color:var(--color-text-white);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reveal-song-info .song-artist{font-size:.875rem;color:var(--color-text-neon-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reveal-year-section{text-align:center;padding:var(--space-sm) 0}.reveal-emotion-inline{font-size:1.25rem;font-weight:700;margin-bottom:var(--space-xs);animation:reveal-emotion-entrance .5s ease-out}.reveal-year-section .correct-year-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-neon-muted);margin-bottom:var(--space-xs)}.reveal-year-section .correct-year{font-size:3rem}.personal-result-compact{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#00f5ff1a;border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.result-content-inline{font-size:.875rem;color:var(--color-text-white)}.artist-reveal-compact{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.artist-reveal-icon{font-size:1rem}.artist-reveal-name-inline{font-weight:600;color:var(--color-accent-secondary)}.artist-reveal-winner-inline{font-size:.75rem;color:var(--color-text-neon-muted)}.artist-reveal-winner-inline:before{content:"\2022";margin-right:var(--space-xs)}.fun-fact-section{text-align:left}.fun-fact-section .fun-fact-text{font-size:.875rem;color:var(--color-text-white);line-height:1.5;margin-bottom:var(--space-sm)}.fun-fact-section .song-rich-info{font-size:.75rem;color:var(--color-text-neon-muted)}.section-content-padded{padding:0 var(--space-md) var(--space-md)}.card-section .section-content-padded{padding:0 0 var(--space-sm)}.guesses-section{text-align:left}.reveal-results-grid{width:100%}.personal-result-section{text-align:left}.personal-result-section .result-row{display:flex;justify-content:space-between;padding:var(--space-xs) 0;border-bottom:1px solid rgba(255,255,255,.05)}.personal-result-section .result-row:last-child{border-bottom:none}.artist-reveal-section{text-align:left}.artist-reveal-section .artist-reveal-name{font-size:1.25rem;font-weight:700;color:var(--color-accent-secondary);margin-bottom:var(--space-xs)}.artist-reveal-section .artist-reveal-winner{font-size:.875rem;color:var(--color-text-neon-muted)}.round-analytics-section{width:100%;background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);overflow:hidden;text-align:left}.round-analytics-section .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.round-analytics-section .section-header-collapsible .section-icon{font-size:1rem}.round-analytics-section .section-header-collapsible .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-accent-secondary);background:#00f5ff1a;padding:2px 8px;border-radius:var(--radius-sm)}.round-analytics-section .section-header-collapsible .section-toggle{margin-left:var(--space-sm);font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease}.round-analytics-section .section-content{padding:0 var(--space-md) var(--space-sm)}.round-analytics-section.collapsed .section-content{display:none}.round-analytics-section:not(.collapsed) .section-toggle{transform:rotate(180deg)}.reveal-round-info{font-size:var(--font-size-base);color:var(--color-text-muted);margin-bottom:var(--space-md)}.reveal-album{margin-bottom:var(--space-lg)}.reveal-album-cover{width:150px;height:150px;object-fit:cover;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.correct-year-container{margin-bottom:var(--space-md)}.correct-year-label{font-size:var(--font-size-md);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.correct-year{font-size:var(--font-size-hero);font-weight:var(--font-weight-extrabold);color:var(--color-success);font-variant-numeric:tabular-nums;animation:reveal-pop var(--transition-slow) ease-out}@keyframes reveal-pop{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.song-info{margin-bottom:var(--space-md)}.song-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.song-artist{font-size:var(--font-size-md);color:var(--color-text-muted)}.fun-fact-container{display:flex;flex-direction:column;gap:var(--space-sm);background:var(--color-warning-light);padding:var(--space-md);border-radius:var(--radius-lg);margin-bottom:var(--space-lg);text-align:left;max-width:100%}.fun-fact-header{display:flex;align-items:flex-start;gap:var(--space-sm)}.fun-fact-icon{font-size:var(--font-size-xl);flex-shrink:0}.fun-fact-text{font-size:var(--font-size-base);color:#92400e;line-height:1.4}.fun-fact-header:empty,.fun-fact-text:empty{display:none}.song-rich-info{text-align:left}.song-rich-info:empty{display:none}.song-badges-row{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid rgba(120,53,15,.15)}.song-badges-row:first-child{border-top:none;padding-top:0}.song-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:20px;border:1px solid;box-shadow:0 1px 3px #0000001a;white-space:nowrap}.song-badge-icon{font-size:14px;line-height:1}.song-badge--chart{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af;border-color:#93c5fd}.song-badge--chart .chart-weeks{font-weight:400;opacity:.8;font-size:11px}.song-badge--platinum{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);color:#475569;border-color:#cbd5e1}.song-badge--gold{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;border-color:#fcd34d}.song-badge--diamond{background:linear-gradient(135deg,#e0f2fe,#bae6fd);color:#0369a1;border-color:#7dd3fc}.song-badge--award{background:linear-gradient(135deg,#ffedd5,#fed7aa);color:#9a3412;border-color:#fdba74}.song-badge--grammy{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#78350f;border-color:#f59e0b}.song-badge--eurovision{background:linear-gradient(135deg,#ede9fe,#ddd6fe);color:#5b21b6;border-color:#a78bfa}.song-badge--oscar,.song-badge--academy{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#78350f;border-color:#f59e0b}.song-badge--halloffame{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af;border-color:#60a5fa}.song-badges-more{font-size:var(--font-size-xs);color:#78350f;font-style:italic;opacity:.8}.song-difficulty{display:flex;align-items:center;gap:var(--space-sm);justify-content:center;margin-top:var(--space-sm);opacity:0;animation:fadeIn .5s ease-out forwards;animation-delay:.3s}.difficulty-stars{font-size:1.2rem;letter-spacing:.1em}.difficulty-1{color:var(--color-success-neon);text-shadow:0 0 10px var(--color-success-neon)}.difficulty-2{color:var(--color-warning);text-shadow:0 0 10px var(--color-warning)}.difficulty-3{color:var(--color-warning-alt);text-shadow:0 0 10px var(--color-warning-alt)}.difficulty-4{color:var(--color-accent-primary);text-shadow:0 0 10px var(--color-accent-primary)}.difficulty-label{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-size-sm)}.difficulty-accuracy{font-size:.85em;opacity:.7}.superlatives-container{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-md);margin:var(--space-lg) 0;padding:0 var(--space-md)}.superlative-card{display:flex;flex-direction:column;align-items:center;padding:var(--space-md);min-width:120px;max-width:160px;background:var(--color-dark-surface);border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.1);opacity:0;animation:superlativeSlideIn .5s ease-out forwards}@keyframes superlativeSlideIn{0%{opacity:0;transform:translateY(20px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.superlative-emoji{font-size:2rem;margin-bottom:var(--space-xs)}.superlative-title{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-size-xs);color:var(--color-accent-secondary);text-align:center;margin-bottom:var(--space-xs)}.superlative-player{font-weight:700;font-size:var(--font-size-base);color:var(--color-dark-text-primary);text-align:center;margin-bottom:var(--space-xs)}.superlative-value{font-size:var(--font-size-sm);color:var(--color-dark-text-secondary);text-align:center}.superlative-card--speed_demon{border-color:var(--color-warning);box-shadow:0 0 15px #f59e0b33}.superlative-card--lucky_streak{border-color:var(--color-error);box-shadow:0 0 15px #ef444433}.superlative-card--risk_taker{border-color:var(--color-purple-primary);box-shadow:0 0 15px #8b5cf633}.superlative-card--clutch_player{border-color:var(--color-success-neon);box-shadow:0 0 15px #39ff1433}.superlative-card--close_calls{border-color:var(--color-accent-secondary);box-shadow:0 0 15px #00f5ff33}.highlights-container{width:100%;margin-top:var(--space-lg);margin-bottom:var(--space-lg)}.highlights-header{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);text-align:center;margin-bottom:var(--space-md)}.highlights-list{display:flex;flex-direction:column;gap:var(--space-sm)}.highlight-card{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-dark-surface);border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.1);opacity:0;animation:highlightFadeIn .5s ease-out forwards}@keyframes highlightFadeIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.highlight-emoji{font-size:1.8rem;flex-shrink:0;width:48px;text-align:center}.highlight-content{flex:1;min-width:0}.highlight-text{font-size:var(--font-size-base);color:var(--color-dark-text-primary);line-height:1.4}.highlight-round{font-size:var(--font-size-xs);color:var(--color-dark-text-secondary);margin-top:var(--space-xs)}@media(max-width:480px){.highlight-card{padding:var(--space-sm);gap:var(--space-sm)}.highlight-emoji{font-size:1.4rem;width:36px}.highlight-text{font-size:var(--font-size-sm)}}.round-analytics{width:100%;margin-top:var(--space-lg);margin-bottom:var(--space-lg);padding:var(--space-md);background:var(--color-dark-surface);border-radius:var(--radius-lg);text-align:center}.analytics-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);margin-bottom:var(--space-md)}.analytics-stats-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-lg);margin-bottom:var(--space-xs)}.stat-primary{text-align:left}.stat-primary .stat-label{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);display:block;margin-bottom:var(--space-xs)}.stat-primary .stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-accent-secondary)}.stat-secondary{text-align:right}.stat-secondary .stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-success)}.stat-secondary .stat-label{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);display:block}.stat-comparison-line{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);margin-bottom:var(--space-md)}.analytics-histogram{margin-bottom:var(--space-lg)}.histogram-title{font-size:var(--font-size-base);color:var(--color-text-neon-muted);margin-bottom:var(--space-sm)}.dotaxis-wrap{margin:14px 0 16px}.dotaxis-axis{position:relative;height:88px;margin:0 14px}.dotaxis-line{position:absolute;left:0;right:0;top:52px;height:2px;background:#ffffff1f;border-radius:2px}.dotaxis-tick{position:absolute;top:48px;width:1px;height:10px;background:#ffffff2e}.dotaxis-tick-label{position:absolute;top:64px;font-size:9px;color:#ffffff80;transform:translate(-50%);letter-spacing:.3px;font-weight:500}.dotaxis-marker{position:absolute;top:4px;bottom:18px;width:2px;background:linear-gradient(180deg,transparent,var(--color-cyan, #00d4ff) 30%,var(--color-cyan, #00d4ff) 80%,transparent);box-shadow:0 0 8px var(--color-cyan, #00d4ff),0 0 16px #00d4ff99}.dotaxis-marker-label{position:absolute;top:-4px;left:50%;transform:translate(-50%);background:var(--color-cyan, #00d4ff);color:#0a0a0e;font-family:var(--font-family-display, "Outfit", sans-serif);font-weight:900;font-size:12px;padding:3px 8px;border-radius:6px;box-shadow:0 0 14px #00d4ff99;white-space:nowrap}.dotaxis-dot{position:absolute;top:39px;width:26px;height:26px;border-radius:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;font-family:var(--font-family-display, "Outfit", sans-serif);font-weight:900;font-size:12px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 4px 10px #0006;cursor:default}.dotaxis-dot--c1{background:linear-gradient(135deg,#ff6ec7,#d846a7)}.dotaxis-dot--c2{background:linear-gradient(135deg,#6e3bff,#4a25c8)}.dotaxis-dot--c3{background:linear-gradient(135deg,#ffd60a,#e6b800);color:#1a1a22;text-shadow:none}.dotaxis-dot--c4{background:linear-gradient(135deg,#00d4ff,#008abf)}.dotaxis-dot--correct{box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 0 18px currentColor,0 4px 10px #0006}.dotaxis-dot--me{box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 0 0 5px #ff9f4399,0 4px 10px #0006}.dotaxis-dot--correct.dotaxis-dot--me{box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 0 0 5px #ff9f4399,0 0 22px currentColor,0 4px 10px #0006}.dotaxis-score{position:absolute;top:12px;transform:translate(-50%);font-family:var(--font-family-display, "Outfit", sans-serif);font-weight:800;font-size:11px;padding:2px 6px;border-radius:6px;background:#ffffff14;white-space:nowrap}.dotaxis-score--pos{background:#00d4ff2e;color:var(--color-cyan, #00d4ff)}.dotaxis-score--zero{color:#ffffff59}.dotaxis-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 14px;font-size:11px;color:#ffffffbf;margin-top:4px}.dotaxis-legend-entry{display:inline-flex;align-items:center;gap:5px}.dotaxis-legend-dot{display:inline-block;width:11px;height:11px;border-radius:50%;flex-shrink:0}.dotaxis-legend-medal{font-size:13px;line-height:1}.dotaxis-legend-me{color:#ff9f43;font-weight:700;font-size:10px;margin-left:2px;letter-spacing:.3px}.histogram-bars{display:flex;justify-content:space-between;align-items:flex-end;height:120px;gap:var(--space-xs);padding:0 var(--space-xs)}.histogram-bar-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;animation:histogram-fade-in .3s ease forwards;opacity:0}.histogram-bar{width:100%;max-width:40px;background:linear-gradient(180deg,var(--color-accent-primary),var(--color-accent-brand));border-radius:var(--radius-sm) var(--radius-sm) 0 0;display:flex;align-items:flex-start;justify-content:center;transition:height .5s ease;min-height:0}.histogram-bar.is-correct{background:linear-gradient(180deg,var(--color-success-neon),var(--color-success));box-shadow:var(--glow-success)}.bar-count{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-text-white);padding-top:var(--space-xs)}.histogram-label{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:var(--space-xs)}@keyframes histogram-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.analytics-achievements{display:flex;flex-direction:column;gap:var(--space-sm);text-align:left}.achievement-item{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-white)}.achievement-emoji{font-size:var(--font-size-lg)}.achievement-label{color:var(--color-text-neon-muted)}.achievement-names{font-weight:var(--font-weight-semibold)}.achievement-value{color:var(--color-text-neon-muted)}.analytics-empty{text-align:center;color:var(--color-text-neon-muted);padding:var(--space-lg);font-style:italic}@media(prefers-reduced-motion:reduce){.histogram-bar-wrapper{animation:none;opacity:1}.histogram-bar{transition:none}}.reveal-emotion{text-align:center;font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-md);animation:reveal-emotion-entrance .5s ease-out}.reveal-emotion--exact{color:var(--color-success);text-shadow:0 0 20px var(--color-success)}.reveal-emotion--close{color:var(--color-warning);animation:reveal-emotion-entrance .5s ease-out,reveal-shake .5s ease-in-out .5s}.reveal-emotion--wrong{color:var(--color-text-muted)}.reveal-emotion--missed{color:var(--color-text-muted);opacity:.7}.reveal-emotion-subtitle{font-size:var(--font-size-base);font-weight:var(--font-weight-normal);margin-top:var(--space-xs);opacity:.8}@keyframes reveal-emotion-entrance{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes reveal-shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.confetti-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:var(--z-modal)}body>canvas[style*="position: fixed"]{pointer-events:none!important}.personal-result.is-delayed{opacity:0;animation:fade-in-delay .5s ease-out 1s forwards}@keyframes fade-in-delay{to{opacity:1}}@media(prefers-reduced-motion:reduce){.reveal-emotion,.reveal-emotion--close{animation:none}.personal-result.is-delayed{opacity:1;animation:none}}.personal-result{width:100%;background:var(--color-bg-card-alt);padding:var(--space-md);border-radius:var(--radius-lg);margin-bottom:var(--space-lg)}.result-header{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.result-content{display:flex;flex-direction:column;gap:var(--space-sm)}.result-row{display:flex;justify-content:space-between;align-items:center}.result-label{font-size:var(--font-size-base);color:var(--color-text-muted)}.result-value{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.result-value.is-exact{color:var(--color-success)}.result-value.is-close{color:var(--color-warning)}.result-value.is-far{color:var(--color-error)}.result-value.is-bonus{color:var(--color-warning);font-weight:var(--font-weight-bold)}.result-score{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);color:var(--color-accent-brand);margin-top:var(--space-sm)}.result-missed{font-size:var(--font-size-md);color:var(--color-error);font-weight:var(--font-weight-semibold)}.result-value.is-streak{color:var(--color-error);font-weight:var(--font-weight-bold)}.streak-bonus-row{background:linear-gradient(90deg,var(--color-warning-light),#fde68a);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);margin:var(--space-sm) 0;color:#1a1a1a}.result-total{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-success);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:2px dashed var(--color-border-light)}.streak-indicator{display:inline-flex;align-items:center;gap:2px;font-size:var(--font-size-sm);color:var(--color-warning);font-weight:var(--font-weight-semibold)}.streak-indicator:before{content:"\1f525"}.bet-container{margin-bottom:var(--space-md);position:relative;z-index:1}.bet-toggle{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-xl);background:var(--color-bg-card-alt);border:2px solid var(--color-border-medium);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);width:100%;justify-content:center;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;touch-action:manipulation}.bet-toggle:hover{border-color:var(--color-text-light)}.bet-toggle.is-active{background:var(--color-warning-light);border-color:var(--color-warning);color:#92400e}.bet-toggle.is-active .bet-icon{animation:dice-shake var(--transition-slow) ease}@keyframes dice-shake{0%,to{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}body.theme-dark .bet-toggle{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:var(--color-text-white)}body.theme-dark .bet-toggle.is-active{background:var(--color-warning);border-color:var(--color-warning);color:var(--color-text-primary)}.bet-won-row{background:linear-gradient(90deg,var(--color-success-light),#a7f3d0);padding:var(--space-sm) var(--space-sm);border-radius:var(--radius-md);margin:var(--space-sm) 0}.bet-won-row .result-label,body.theme-dark .bet-won-row .result-label{color:#166534}.result-value.is-bet-won,body.theme-dark .result-value.is-bet-won{color:#166534;font-weight:var(--font-weight-bold)}.bet-lost-row{background:linear-gradient(90deg,var(--color-error-light),#fecaca);padding:var(--space-sm) var(--space-sm);border-radius:var(--radius-md);margin:var(--space-sm) 0}.bet-lost-row .result-label,body.theme-dark .bet-lost-row .result-label{color:#991b1b}.result-value.is-bet-lost,body.theme-dark .result-value.is-bet-lost{color:#991b1b;font-weight:var(--font-weight-bold)}.result-missed-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-md)}.result-missed-icon{font-size:var(--font-size-2xl)}.result-missed-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-muted)}.streak-broken{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-error-light);border-radius:var(--radius-md)}.streak-broken-icon{font-size:var(--font-size-xl)}.streak-broken-text{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-error-dark)}.streak-shield-used{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-success-light);border-radius:var(--radius-md)}.streak-shield-icon{font-size:var(--font-size-xl)}.streak-shield-text{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-success-hover)}.result-score.is-zero{color:var(--color-text-light);font-size:var(--font-size-2xl)}.leaderboard-section{width:100%;background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);overflow:hidden}.leaderboard-section .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.leaderboard-section .section-header-collapsible .section-icon{font-size:1rem}.leaderboard-section .section-header-collapsible .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-accent-secondary);background:#00f5ff1a;padding:2px 8px;border-radius:var(--radius-sm)}.leaderboard-section .section-header-collapsible .section-toggle{margin-left:var(--space-sm);font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease}.leaderboard-section .section-content{padding:0}.leaderboard-section .leaderboard-list{max-height:200px;overflow-y:auto}.leaderboard-section.collapsed .section-content{display:none}.leaderboard-section:not(.collapsed) .section-toggle{transform:rotate(180deg)}.leaderboard{background:var(--color-bg-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;width:100%;margin-bottom:var(--space-md)}.leaderboard.is-compact .leaderboard-list{max-height:120px}.leaderboard.is-expanded .leaderboard-list{max-height:400px}.leaderboard.is-prominent{margin-top:var(--space-md)}.leaderboard.is-prominent .leaderboard-list{max-height:280px}.leaderboard-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background:var(--color-bg-card-alt);border-bottom:1px solid var(--color-border-light)}.leaderboard-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.leaderboard-toggle{background:none;border:none;cursor:pointer;padding:var(--space-xs);min-width:auto;min-height:auto;color:var(--color-text-muted)}.leaderboard-list{max-height:200px;overflow-y:auto;contain:layout style paint;will-change:transform}.leaderboard-spacer-top,.leaderboard-spacer-bottom{flex-shrink:0;pointer-events:none}.leaderboard-sentinel{flex-shrink:0;pointer-events:none;visibility:hidden}.leaderboard-entry{display:flex;align-items:center;gap:var(--space-sm);padding:10px var(--space-md);border-bottom:1px solid var(--color-bg-card-alt);transition:background var(--transition-fast);contain:content;height:48px;box-sizing:border-box}.leaderboard-entry:last-child{border-bottom:none}.leaderboard-entry.is-current{background:#eff6ff;border-left:3px solid var(--color-accent-blue)}.leaderboard-entry.is-top-1{background:linear-gradient(90deg,var(--color-warning-light),#fde68a)}.leaderboard-entry.is-top-1 .entry-rank{color:#b45309;font-weight:var(--font-weight-bold)}.leaderboard-entry.is-top-2{background:linear-gradient(90deg,var(--color-bg-card-alt),var(--color-border-light))}.leaderboard-entry.is-top-2 .entry-rank{color:var(--color-text-muted);font-weight:var(--font-weight-bold)}.leaderboard-entry.is-top-3{background:linear-gradient(90deg,#fed7aa,#fdba74)}.leaderboard-entry.is-top-3 .entry-rank{color:#c2410c;font-weight:var(--font-weight-bold)}.entry-rank{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);min-width:28px}.entry-name{flex:1;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry-meta{display:flex;align-items:center;gap:var(--space-xs)}.entry-score{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-accent-brand);min-width:40px;text-align:right}.rank-up{font-size:var(--font-size-xs);color:var(--color-success);font-weight:var(--font-weight-semibold)}.rank-down{font-size:var(--font-size-xs);color:var(--color-error);font-weight:var(--font-weight-semibold)}.leaderboard-entry--climbing{animation:leaderboard-climb .4s ease-out}.leaderboard-entry--falling{animation:leaderboard-fall .4s ease-out}.leaderboard-entry--disconnected{opacity:.5;transition:opacity .3s ease}@keyframes leaderboard-climb{0%{transform:translateY(10px);opacity:.7;background:#0f83}to{transform:translateY(0);opacity:1;background:transparent}}@keyframes leaderboard-fall{0%{transform:translateY(-10px);opacity:.7;background:#ff004033}to{transform:translateY(0);opacity:1;background:transparent}}.streak-indicator{font-size:var(--font-size-xs);color:var(--color-warning)}.streak-indicator--hot{text-shadow:0 0 8px var(--color-warning);animation:streak-pulse 1s ease-in-out infinite}@keyframes streak-pulse{0%,to{opacity:1}50%{opacity:.7}}.leaderboard-separator{text-align:center;padding:var(--space-xs) var(--space-md);color:var(--color-text-muted);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-bg-card-alt)}@media(prefers-reduced-motion:reduce){.leaderboard-entry--climbing,.leaderboard-entry--falling,.streak-indicator--hot{animation:none}}.leaderboard-you{position:sticky;bottom:0;padding:var(--space-sm) var(--space-md);background:var(--color-accent-blue);color:var(--color-text-white);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);text-align:center}.end-container{padding:var(--space-lg);max-width:480px;margin:0 auto;text-align:center}.end-header{margin-bottom:var(--space-lg)}.end-title{font-size:var(--font-size-4xl);font-weight:var(--font-weight-extrabold);color:var(--color-text-primary);margin-bottom:var(--space-sm)}.end-subtitle{font-size:var(--font-size-md);color:var(--color-text-muted);margin:0}.podium{display:flex;justify-content:center;align-items:flex-end;gap:var(--space-sm);margin-bottom:var(--space-xl)}.podium-place{display:flex;flex-direction:column;align-items:center;width:100px}.podium-medal{font-size:var(--font-size-4xl);margin-bottom:var(--space-sm)}.podium-name{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-xs);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.podium-score{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.podium-stand{width:100%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-2xl);font-weight:var(--font-weight-extrabold);color:var(--color-text-white);border-radius:var(--radius-md) var(--radius-md) 0 0}.podium-1 .podium-stand{height:80px;background:linear-gradient(180deg,#fbbf24,var(--color-warning-dark))}.podium-2 .podium-stand{height:60px;background:linear-gradient(180deg,var(--color-text-light),var(--color-text-muted))}.podium-3 .podium-stand{height:40px;background:linear-gradient(180deg,#fb923c,#c2410c)}.your-result{background:#eff6ff;border-radius:var(--radius-xl);padding:var(--space-lg);margin-bottom:var(--space-lg)}.your-result-header{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-accent-blue);margin-bottom:var(--space-sm)}.your-result-rank{font-size:var(--font-size-2xl);font-weight:var(--font-weight-extrabold);color:var(--color-text-primary)}.your-result-score{font-size:var(--font-size-lg);color:var(--color-text-muted);margin-bottom:var(--space-md)}.your-result-stats{display:flex;justify-content:center;gap:var(--space-lg)}.stat{display:flex;flex-direction:column;align-items:center}.stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-accent-brand)}.stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.final-leaderboard{background:var(--color-bg-white);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg);box-shadow:var(--shadow-md)}.final-leaderboard-header{padding:var(--space-sm) var(--space-md);background:var(--color-bg-card-alt);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-align:left}.final-leaderboard-list{max-height:200px;overflow-y:auto}.final-entry{display:flex;align-items:center;padding:10px var(--space-md);border-bottom:1px solid var(--color-bg-card-alt)}.final-entry:last-child{border-bottom:none}.final-entry.is-current{background:#eff6ff}.final-entry--disconnected{opacity:.5}.final-rank{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);width:32px}.final-name{flex:1;font-size:var(--font-size-base);color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.final-score{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-accent-brand)}.end-admin-controls{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-md)}.new-game-btn{width:100%;padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);background:var(--color-success);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast);min-width:auto;min-height:auto}.new-game-btn:hover{background:var(--color-success-hover)}.new-game-btn:disabled{background:var(--color-text-light);cursor:not-allowed}.end-player-message{color:var(--color-text-muted)}.end-player-message p{margin:0 0 var(--space-sm) 0}.end-hint{font-size:var(--font-size-base)}.rejoin-hint{font-size:var(--font-size-base);color:var(--color-text-muted);margin-top:var(--space-sm)}.reveal-report-row{display:flex;justify-content:center;margin-top:var(--space-md)}.reveal-report-btn{background:none;border:none;padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:color .15s ease,opacity .15s ease;opacity:.7}.reveal-report-btn:hover{color:var(--color-text-neon-muted);opacity:1}.reveal-report-btn:disabled{cursor:default;opacity:.5}.reveal-admin-controls{margin-top:var(--space-md)}.next-round-btn{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);background:var(--color-accent-brand);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast)}.next-round-btn:hover{background:var(--color-accent-brand-hover)}.next-round-btn:disabled{background:var(--color-text-light);cursor:not-allowed}.next-round-btn.is-final{background:var(--color-success)}.next-round-btn.is-final:hover{background:var(--color-success-hover)}.reveal-admin-buttons{display:flex;flex-direction:column;gap:var(--space-md);align-items:center}@media(min-width:480px){.reveal-admin-buttons{flex-direction:row;justify-content:center}}.invite-btn{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-white);background:var(--color-bg-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);min-height:44px;min-width:44px}.invite-btn:hover{background:var(--color-bg-secondary);border-color:var(--color-border-neon)}.invite-btn:active{transform:scale(.98)}.invite-btn-icon{font-size:var(--font-size-lg)}.invite-btn-label{white-space:nowrap}.invite-modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.invite-modal.hidden{display:none}.invite-modal-backdrop{position:absolute;inset:0;background:#000c}.invite-modal-content{position:relative;background:var(--color-bg-primary);border:1px solid var(--color-border-neon);padding:var(--space-lg);border-radius:var(--radius-xl);text-align:center;max-width:90vw;max-height:90vh;overflow-y:auto;animation:modalFadeIn var(--transition-normal) ease-out}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.invite-modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-white);margin:0 0 var(--space-xs)}.invite-modal-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0 0 var(--space-md)}.invite-modal-code{display:inline-block;padding:var(--space-md);background:var(--color-bg-white);border-radius:var(--radius-md);margin-bottom:var(--space-md)}.invite-modal-code img{display:block;width:200px;height:200px}@media(min-width:480px){.invite-modal-code img{width:256px;height:256px}}.invite-modal-url-container{display:flex;gap:var(--space-xs);margin-bottom:var(--space-sm);max-width:100%}.invite-modal-url{flex:1;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);font-family:var(--font-family-mono);color:var(--color-text-primary);background:var(--color-bg-secondary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);min-width:0;text-overflow:ellipsis}body.theme-dark .invite-modal-url{color:#e2e8f0;background:#ffffff1a;border-color:#ffffff26}.invite-copy-btn{display:flex;align-items:center;justify-content:center;padding:var(--space-sm);min-width:44px;min-height:44px;background:var(--color-accent-brand);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.invite-copy-btn:hover{background:var(--color-accent-brand-hover)}.invite-copy-btn:active{transform:scale(.95)}.invite-copy-icon{font-size:var(--font-size-lg)}.invite-copy-feedback{font-size:var(--font-size-sm);color:var(--color-success);margin:0 0 var(--space-md);animation:fadeInOut 2s ease-in-out}.invite-copy-feedback.hidden{display:none}@keyframes fadeInOut{0%,to{opacity:0}10%,80%{opacity:1}}.invite-modal-close{min-width:120px;min-height:48px}.reveal-results-cards{margin-top:var(--space-lg);width:100%;overflow:visible}.results-cards-header{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin-bottom:var(--space-sm);text-align:center}.results-cards-scroll{display:flex;flex-direction:row;flex-wrap:nowrap;gap:var(--space-sm);width:100%;overflow-x:auto;overflow-y:hidden;padding-bottom:var(--space-xs);-webkit-overflow-scrolling:touch}.results-cards-scroll::-webkit-scrollbar{height:3px}.results-cards-scroll::-webkit-scrollbar-thumb{background:var(--color-border-light);border-radius:2px}.result-card{background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-sm);text-align:center;border:2px solid var(--color-border-light);transition:all var(--transition-fast);flex:1 1 140px;min-width:140px;max-width:220px;box-sizing:border-box}.result-card.is-current{border-color:var(--color-accent-brand);background:#6366f11a}.result-card.is-score-high{border-color:var(--color-success);background:#10b9811a}.result-card.is-score-medium{border-color:var(--color-warning);background:#f59e0b1a}.result-card.is-score-zero{opacity:.6}.card-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.card-guess{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.card-accuracy{font-size:var(--font-size-xs);color:var(--color-text-muted)}.result-card.is-score-high .card-accuracy{color:var(--color-success);font-weight:var(--font-weight-semibold)}.card-score{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-success);margin-top:2px}.card-bet{margin-left:4px}body.theme-dark .result-card{background:#ffffff0d;border-color:#ffffff1a}body.theme-dark .result-card.is-current{border-color:var(--color-accent-neon);background:#00f5ff1a}body.theme-dark .result-card.is-score-high{border-color:var(--color-success-neon);background:#00ff881a}body.theme-dark .result-card.is-score-medium{border-color:var(--color-warning);background:#f59e0b26}body.theme-dark .card-name,body.theme-dark .card-guess{color:var(--color-text-white)}body.theme-dark .card-accuracy{color:var(--color-text-neon-muted)}body.theme-dark .result-card.is-score-high .card-accuracy,body.theme-dark .card-score{color:var(--color-success-neon)}.admin-control-bar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:center;padding:var(--space-sm) var(--space-sm);padding-bottom:calc(var(--space-sm) + env(safe-area-inset-bottom));background:#000000e6;border-top:1px solid var(--color-border-dark);z-index:var(--z-control-bar)}.admin-control-bar.hidden{display:none}.control-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:var(--space-sm) var(--space-sm);background:#2a2a2a;border:none;border-radius:var(--radius-md);color:var(--color-text-white);cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast)}.control-btn:hover:not(.is-disabled){background:#3a3a3a}.control-btn:active:not(.is-disabled){background:#4a4a4a}.control-btn.is-disabled{opacity:.4;cursor:not-allowed}.control-btn--danger{background:#7f1d1d}.control-btn--danger:hover:not(.is-disabled){background:#991b1b}.control-btn.is-stopped{background:var(--color-text-secondary);opacity:.7}.control-btn.is-stopped .control-icon{color:var(--color-success)}.volume-indicator{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#000000e6;color:var(--color-text-white);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-sm);opacity:0;transition:opacity var(--transition-normal);pointer-events:none;white-space:nowrap}.volume-indicator.is-visible{opacity:1}.control-btn.is-at-limit{opacity:.5}.control-btn.is-at-limit:active{transform:none}.control-icon{font-size:var(--font-size-xl);line-height:1}.control-icon.is-countdown{font-variant-numeric:tabular-nums;font-weight:700;min-width:1.5em;text-align:center}.control-label{font-size:var(--font-size-xs);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.has-control-bar .game-container,.has-control-bar .reveal-container,.has-control-bar .end-container{padding-bottom:140px}.reaction-bar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;padding:var(--space-sm);padding-bottom:calc(var(--space-sm) + env(safe-area-inset-bottom));z-index:var(--z-reaction-bar);pointer-events:none}main:has(.admin-control-bar:not(.hidden)) .reaction-bar{bottom:70px}.reaction-bar.hidden{display:none}.reaction-bar-container{display:flex;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#0009;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:auto}.reaction-btn{font-size:1.5rem;padding:var(--space-sm);min-width:44px;min-height:44px;background:#1e1e2880;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-md);cursor:pointer;transition:transform var(--transition-fast),background var(--transition-fast)}.reaction-btn:hover{background:#32323cb3}.reaction-btn:active{transform:scale(.9)}.reaction-btn:disabled{cursor:default;opacity:.45}.reaction-btn.is-used{opacity:1;border-color:var(--color-accent-primary);box-shadow:0 0 12px var(--color-accent-primary)}@media(hover:none){.reaction-btn:active{box-shadow:0 0 15px var(--color-accent-primary)}}@media(prefers-reduced-motion:reduce){.reaction-btn{transition:none}.reaction-btn:active{transform:none}}.reaction-container{position:fixed;bottom:120px;left:0;right:0;pointer-events:none;z-index:99}main:has(.admin-control-bar:not(.hidden)) .reaction-container{bottom:180px}.reaction-bubble{position:absolute;font-size:1rem;font-weight:600;color:var(--color-text-white);text-shadow:0 0 8px var(--color-accent-primary);animation:reaction-float 3s ease-out forwards;white-space:nowrap}@keyframes reaction-float{0%{opacity:1;transform:translateY(0)}70%{opacity:1}to{opacity:0;transform:translateY(calc(-50vh + 60px))}}@media(prefers-reduced-motion:reduce){.reaction-bubble{animation:none;opacity:1}}.paused-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-lg);min-height:60vh;text-align:center}.paused-icon{font-size:var(--font-size-hero);margin-bottom:var(--space-lg);animation:pause-pulse 2s infinite}@keyframes pause-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.95)}}.paused-container h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-md)}.paused-container>p{font-size:var(--font-size-md);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.paused-spinner{margin:var(--space-xl) 0}.paused-hint{font-size:var(--font-size-base);color:var(--color-text-light)}.reconnecting-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:var(--z-overlay)}.reconnecting-overlay.hidden{display:none}.reconnecting-content{text-align:center;color:var(--color-text-white)}.reconnecting-spinner .spinner{border-top-color:var(--color-text-white);width:48px;height:48px;margin:0 auto var(--space-md)}.reconnect-status{font-size:var(--font-size-md);color:var(--color-border-light)}.connection-lost-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-lg);min-height:60vh;text-align:center}.connection-lost-icon{font-size:var(--font-size-hero);margin-bottom:var(--space-lg)}.connection-lost-container h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-md)}.connection-lost-container>p{font-size:var(--font-size-md);color:var(--color-text-muted);margin-bottom:var(--space-lg)}.connection-lost-hint{font-size:var(--font-size-base);color:var(--color-text-light);margin-top:var(--space-md)}@media(max-width:360px){.correct-year{font-size:var(--font-size-year)}.reveal-album-cover{width:120px;height:120px}}@media(min-width:768px){.reveal-album-cover{width:180px;height:180px}.correct-year{font-size:84px}}:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}body.theme-dark :focus-visible{outline-color:var(--color-accent-primary);box-shadow:0 0 0 4px #ff2d6a4d}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(prefers-color-scheme:light){body:not(.theme-dark){--color-bg-primary: #ffffff;--color-bg-surface: #f5f5f7;--color-bg-card: #ffffff;--color-bg-card-alt: #f8fafc;--color-text-primary: #1a1a1a;--color-text-muted: #666666;--color-text-light: #999999;--color-border-light: #e5e7eb}}.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}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-accent-primary);color:var(--color-text-white);padding:var(--space-sm) var(--space-md);z-index:var(--z-modal);transition:top var(--transition-fast)}.skip-link:focus{top:0}body.energy-calm .btn-glow:hover{box-shadow:none}body.energy-calm .wordmark-hero{text-shadow:none}body.energy-warmup .player-card{animation:energy-slide-in .3s ease-out}body.energy-warmup .qr-container{animation:energy-pulse-subtle 3s ease-in-out infinite}@keyframes energy-slide-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes energy-pulse-subtle{0%,to{opacity:1}50%{opacity:.85}}body.energy-party .album-cover{box-shadow:0 0 60px #ffffff1a}body.energy-party .submit-btn:not(:disabled){box-shadow:var(--glow-primary)}body.energy-party .year-display{text-shadow:0 0 20px rgba(255,45,106,.3)}.view{animation:screen-fade-in .3s ease-out}@keyframes screen-fade-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){body.energy-warmup .player-card,body.energy-warmup .qr-container,.view{animation:none}}.steal-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);width:100%;padding:var(--space-sm) var(--space-md);margin-top:var(--space-sm);background:linear-gradient(135deg,var(--color-purple-primary, #8b5cf6),var(--color-purple-secondary, #7c3aed));border:none;border-radius:var(--radius-lg);color:var(--color-text-white);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;box-shadow:0 0 20px #8b5cf666;transition:all var(--transition-fast)}.steal-btn:hover:not(:disabled){transform:scale(1.03);box-shadow:0 0 30px #8b5cf699}.steal-btn:disabled{opacity:.5;cursor:not-allowed}.steal-btn-icon{font-size:var(--font-size-lg)}.steal-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.steal-modal-backdrop{position:absolute;inset:0;background:#000c;backdrop-filter:blur(4px)}.steal-modal-content{position:relative;background:var(--color-bg-card);border:2px solid var(--color-purple-primary, #8b5cf6);border-radius:var(--radius-xl);padding:var(--space-lg);max-width:320px;width:90%;text-align:center;box-shadow:0 0 40px #8b5cf64d}.steal-modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.steal-modal-subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-md)}.steal-target-list{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md)}.steal-target-btn{display:block;width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-bg-surface);border:1px solid var(--color-accent-secondary);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast)}.steal-target-btn:hover{background:var(--color-accent-secondary);color:var(--color-bg-primary);transform:scale(1.02)}.steal-no-targets{color:var(--color-text-muted);font-size:var(--font-size-sm);padding:var(--space-md)}.steal-modal-cancel{width:100%}.steal-confirmation{position:fixed;bottom:calc(var(--space-xl) + 60px);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-sm);background:linear-gradient(135deg,var(--color-purple-primary, #8b5cf6),var(--color-purple-secondary, #7c3aed));color:var(--color-text-white);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-full);font-weight:var(--font-weight-semibold);box-shadow:0 4px 20px #8b5cf680;animation:steal-toast-in .3s ease-out;z-index:var(--z-tooltip)}@keyframes steal-toast-in{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.steal-confirmation-icon{font-size:var(--font-size-lg)}.steal-badge{display:inline-flex;align-items:center;gap:var(--space-xs);background:#8b5cf633;border:1px solid var(--color-purple-primary, #8b5cf6);border-radius:var(--radius-full);padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);color:var(--color-purple-primary, #8b5cf6);margin-top:var(--space-xs)}.steal-badge-icon{font-size:.9em}.steal-badge-victim{background:#ef444433;border-color:var(--color-error);color:var(--color-error)}body.theme-dark .steal-modal-content{background:var(--color-bg-card)}body.theme-dark .steal-target-btn{background:#ffffff0d;border-color:var(--color-accent-secondary)}body.theme-dark .steal-target-btn:hover{background:var(--color-accent-secondary);color:var(--color-bg-primary)}@media(prefers-reduced-motion:reduce){.stat-badge--steal,.steal-confirmation{animation:none}}.intro-splash-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.intro-splash-modal-backdrop{position:absolute;inset:0;background:#000c;backdrop-filter:blur(4px)}.intro-splash-modal-content{position:relative;background:var(--color-bg-card);border:2px solid var(--color-accent-primary, #1db954);border-radius:var(--radius-xl);padding:var(--space-lg);max-width:400px;width:90%;text-align:center;box-shadow:0 0 40px #1db9544d}.intro-splash-modal-emoji{font-size:3rem;margin-bottom:var(--space-sm)}.intro-splash-modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.intro-splash-modal-desc{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--space-md)}.intro-splash-modal-waiting{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.intro-splash-confirm-btn{width:100%;margin-top:var(--space-sm)}.score-animating{font-variant-numeric:tabular-nums}@keyframes score-pop{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}.score-pop{animation:score-pop .7s ease-out;display:inline-block}@keyframes score-shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.score-shake{animation:score-shake .4s ease-out;display:inline-block}@keyframes score-flash-red{0%,to{color:inherit}50%{color:var(--color-error)}}.score-flash-red{animation:score-flash-red .4s ease-out}@keyframes score-glow-gold{0%,to{text-shadow:0 0 0 transparent;color:inherit}50%{text-shadow:0 0 20px #ffd700,0 0 40px #ffd700;color:gold}}.score-glow-gold{animation:score-glow-gold .8s ease-out;display:inline-block}@keyframes score-burst{0%{transform:scale(1);text-shadow:0 0 0 transparent}30%{transform:scale(1.4);text-shadow:0 0 30px #ff6600}to{transform:scale(1);text-shadow:0 0 0 transparent}}.score-burst{animation:score-burst .7s ease-out;display:inline-block}@keyframes popup-float{0%{opacity:0;transform:translate(-50%)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-30px)}}.points-popup{position:fixed;z-index:var(--z-toast);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-success);pointer-events:none;animation:popup-float 1s ease-out forwards;transform:translate(-50%)}.points-popup--gold{color:gold;text-shadow:0 0 10px #ffd700}.points-popup--streak{color:#f60;text-shadow:0 0 10px #ff6600;font-size:var(--font-size-xl)}.leaderboard-entry--slide-up{animation:leaderboard-slide-up .5s ease-out}@keyframes leaderboard-slide-up{0%{transform:translateY(10px);background:#00ff884d}to{transform:translateY(0);background:transparent}}.leaderboard-entry--slide-down{animation:leaderboard-slide-down .5s ease-out}@keyframes leaderboard-slide-down{0%{transform:translateY(-10px);opacity:.6}to{transform:translateY(0);opacity:1}}@media(prefers-reduced-motion:reduce){.score-pop,.score-shake,.score-glow-gold,.score-burst,.score-flash-red{animation:none!important}.points-popup{animation:none!important;display:none!important}.leaderboard-entry--slide-up,.leaderboard-entry--slide-down{animation:none!important}}body.device-tier-low .leaderboard-entry--climbing,body.device-tier-low .leaderboard-entry--falling,body.device-tier-low .leaderboard-entry--slide-up,body.device-tier-low .leaderboard-entry--slide-down{animation:none!important}body.device-tier-low .neon-glow,body.device-tier-low .btn-glow:hover{box-shadow:none!important}body.device-tier-low .score-pop,body.device-tier-low .score-shake,body.device-tier-low .score-glow-gold,body.device-tier-low .score-burst{animation:none!important}body.device-tier-low .points-popup{display:none!important}body.device-tier-medium .leaderboard-entry--climbing,body.device-tier-medium .leaderboard-entry--falling{animation-duration:.2s!important}body.device-tier-medium .neon-glow{animation:none!important}body.device-tier-medium .score-pop,body.device-tier-medium .score-shake,body.device-tier-medium .score-glow-gold,body.device-tier-medium .score-burst{animation-duration:.2s!important}.reveal-skip-hint{position:absolute;bottom:var(--space-md);left:50%;transform:translate(-50%);font-size:var(--font-size-sm);color:var(--color-text-muted);opacity:0;animation:fadeInDelayed .3s ease-out 1s forwards}@keyframes fadeInDelayed{to{opacity:.6}}@media(prefers-reduced-motion:reduce){.reveal-skip-hint{animation:none;opacity:.6}}body.device-tier-low .reveal-skip-hint{animation:none;opacity:.6}.request-btn{margin-top:var(--space-md);gap:var(--space-xs)}.requests-list{display:flex;flex-direction:column;gap:var(--space-sm)}.request-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-surface-raised);border-radius:var(--radius-md);border:1px solid var(--color-border)}.request-item-thumbnail{width:40px;height:40px;min-width:40px;min-height:40px;max-width:40px;max-height:40px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0}.request-item-thumbnail-placeholder{width:40px;height:40px;min-width:40px;min-height:40px;border-radius:var(--radius-sm);background:var(--color-surface);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.request-item-info{flex:1;min-width:0}.request-item-name{font-weight:600;font-size:var(--font-size-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.request-item-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.request-status{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;white-space:nowrap}.request-status--pending{background:#ffc10726;color:#ffc107}.request-status--ready{background:#4caf5026;color:#4caf50}.request-status--installed{background:transparent;color:#4caf50;border:1px solid #4caf50}.request-status--declined{background:#f4433626;color:#f44336}.request-update-btn{font-size:var(--font-size-xs);padding:6px 12px;white-space:nowrap}.text-input{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-base);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);transition:border-color .15s ease}.text-input:focus{outline:none;border-color:var(--color-primary)}.text-input.input-error{border-color:var(--color-error)}.info-box{background:var(--color-surface-raised);border-radius:var(--radius-md);padding:var(--space-md);margin-top:var(--space-md)}.info-box-title{font-weight:600;margin-bottom:var(--space-xs);color:var(--color-text-muted)}.info-box-list{margin:0;padding-left:0;list-style-position:inside;font-size:var(--font-size-sm);color:var(--color-text-muted)}.info-box-list li{margin-bottom:var(--space-xs)}.info-box-list li:last-child{margin-bottom:0}.info-box-note{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border);font-size:var(--font-size-sm);color:var(--color-text-muted)}.modal-content--success{text-align:center}.success-icon{font-size:3rem;margin-bottom:var(--space-sm)}.success-playlist-name{font-weight:600;font-size:var(--font-size-lg);margin-bottom:var(--space-xs)}.success-estimate{color:var(--color-text-muted);font-size:var(--font-size-sm)}.btn--loading{position:relative;color:transparent!important;pointer-events:none}.btn--loading:after{content:"";position:absolute;width:16px;height:16px;top:50%;left:50%;margin-left:-8px;margin-top:-8px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.share-container{margin:1.5rem 0;text-align:center}.share-header{font-size:1.2rem;font-weight:700;margin-bottom:1rem;color:var(--text-primary, #fff)}.share-card-preview{margin:12px auto;max-width:360px;width:100%;border-radius:16px;overflow:hidden;box-shadow:0 12px 36px #00000080,0 0 0 1px #ff2d6a40;background:#0a0a12}.share-card-image{display:block;width:100%;height:auto;aspect-ratio:1 / 1}.share-buttons{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.share-btn{padding:.6rem 1.2rem;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;background:var(--accent-color, #e94560);color:#fff;transition:opacity .2s,transform .1s}.share-btn:hover{opacity:.9}.share-btn:active{transform:scale(.97)}.share-toast{margin-top:.75rem;padding:.4rem 1rem;background:var(--success-color, #4caf50);color:#fff;border-radius:20px;display:inline-block;font-size:.85rem;font-weight:600;animation:shareToastIn .3s ease}@keyframes shareToastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.admin-share-player-tabs{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;margin-bottom:.75rem}.admin-share-tab{padding:.3rem .85rem;border-radius:20px;border:1px solid var(--color-border-light);background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all .15s ease}.admin-share-tab:hover{border-color:var(--color-accent-brand);color:var(--color-accent-brand)}.admin-share-tab.active{background:var(--color-accent-brand);border-color:var(--color-accent-brand);color:#fff;font-weight:var(--font-weight-semibold)}@media(max-width:480px){.share-buttons{flex-direction:column;align-items:center}.share-btn{width:100%;max-width:280px}.share-card-preview{max-width:320px}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,var(--color-bg-card) 25%,#3a3a4e 50%,var(--color-bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}.skeleton-list{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm) 0}.skeleton-row{height:48px;width:100%}.skeleton-card{height:64px;width:100%}.player-header{position:relative}.connection-indicator{position:absolute;top:50%;right:var(--space-md);transform:translateY(-50%);display:flex;align-items:center;gap:4px;opacity:0;transition:opacity .3s ease}.connection-indicator--disconnected{opacity:1}.connection-dot{width:8px;height:8px;border-radius:50%;background:var(--color-error, #e94560);animation:pulse-dot 1.2s infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.party-lights-picker{margin-top:12px}.party-lights-picker-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.85rem;color:var(--text-secondary, #aaa)}.party-lights-count{font-weight:500}.btn-link{background:none;border:none;color:var(--accent, #ff00ff);cursor:pointer;font-size:.85rem;padding:4px 8px}.btn-link:hover{text-decoration:underline}.party-lights-list{max-height:240px;overflow-y:auto;border-radius:8px;background:var(--card-bg, rgba(255,255,255,.05));margin-bottom:12px}.party-light-item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-bottom:1px solid var(--border, rgba(255,255,255,.08));min-height:44px}.party-light-item:last-child{border-bottom:none}.party-light-item:hover{background:#ffffff08}.party-light-item input[type=checkbox]{width:18px;height:18px;flex-shrink:0;accent-color:var(--accent, #ff00ff)}.light-status{font-size:.75rem;flex-shrink:0}.light-name{flex:1;font-size:.9rem;color:var(--text-primary, #fff);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.light-cap-badge{font-size:.7rem;padding:2px 6px;border-radius:4px;background:#ffffff1a;color:var(--text-secondary, #aaa);flex-shrink:0;font-weight:500}.setting-row--vertical{flex-direction:column;align-items:flex-start;gap:var(--space-sm, 8px)}.wled-presets-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-xs, 4px) var(--space-sm, 8px);width:100%}.wled-preset-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs, 4px);font-size:.8rem;color:var(--text-secondary, #aaa)}.wled-preset-item .input-sm{width:48px;padding:2px 4px;border:1px solid rgba(255,255,255,.15);border-radius:4px;background:#ffffff0d;color:var(--text-primary, #fff);font-size:.8rem;text-align:center}.admin-game-wrapper{max-width:480px;margin:0 auto}.admin-phase-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.round-badge{font-weight:600;font-size:1rem}.timer-badge{font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums;min-width:3em;text-align:center}.timer-badge.timer-warning{color:var(--color-warning, #f59e0b)}.timer-badge.timer-critical{color:var(--color-danger, #ef4444);animation:pulse-critical .5s ease-in-out infinite alternate}@keyframes pulse-critical{0%{opacity:1}to{opacity:.5}}.admin-song-card{display:flex;align-items:center;gap:var(--space-md);background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.admin-album-art{width:64px;height:64px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0}.admin-song-meta{min-width:0}.admin-song-title{font-weight:600;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-song-artist{color:var(--text-secondary, #aaa);font-size:.9rem}.admin-song-details{text-align:center;margin-bottom:var(--space-sm, 8px)}.admin-song-year{font-size:.95rem;color:var(--color-primary, #1db954);font-weight:600}.admin-song-funfact{font-size:.85rem;color:var(--text-secondary, #aaa);font-style:italic;margin-top:4px;line-height:1.3}.admin-playing-banner{display:flex;align-items:center;gap:var(--space-sm, 8px);padding:var(--space-sm, 8px) var(--space-md, 16px);background:var(--bg-card, rgba(255, 255, 255, .05));border-bottom:2px solid var(--color-primary, #1db954);font-size:.9rem}.admin-playing-banner-icon{font-size:1.1rem;flex-shrink:0}.admin-playing-banner-text{flex:1;min-width:0}.admin-playing-banner-btn{flex-shrink:0;font-size:.8rem;padding:4px 10px;border-radius:var(--radius-sm, 8px)}.idle-halt-banner{display:flex;align-items:center;gap:var(--space-sm, 8px);margin:var(--space-md, 16px) auto;padding:var(--space-sm, 8px) var(--space-md, 16px);background:var(--bg-card, rgba(255, 255, 255, .06));border:1px solid var(--color-warning, #f5a623);border-radius:var(--radius-md, 12px);color:var(--color-warning, #f5a623);font-size:.9rem;line-height:1.35;max-width:540px}.idle-halt-icon{font-size:1.2rem;flex-shrink:0}.admin-pause-recovery{margin:var(--space-md, 16px);padding:var(--space-md, 16px) var(--space-lg, 20px);background:var(--bg-card, rgba(255, 255, 255, .06));border:2px solid var(--color-warning, #f5a623);border-radius:var(--radius-md, 12px)}.admin-pause-recovery-header{display:flex;align-items:center;gap:var(--space-sm, 8px);margin-bottom:var(--space-sm, 8px)}.admin-pause-recovery-icon{font-size:1.3rem;flex-shrink:0}.admin-pause-recovery-title{font-size:1rem;color:var(--color-warning, #f5a623)}.admin-pause-recovery-message{font-size:.95rem;line-height:1.4;margin:0 0 var(--space-sm, 8px) 0;color:var(--text-primary, #ffffff)}.admin-pause-recovery-detail{font-size:.8rem;line-height:1.3;margin:0 0 var(--space-md, 16px) 0;color:var(--text-secondary, rgba(255, 255, 255, .6));font-family:var(--font-monospace, monospace);word-break:break-word}.admin-pause-recovery-detail.hidden{display:none}.admin-pause-recovery-actions{display:flex;gap:var(--space-sm, 8px);flex-wrap:wrap}.admin-pause-recovery-actions .btn{flex:1;min-width:120px}.admin-personal-result-card{display:flex;flex-direction:column;gap:var(--space-xs, 4px)}.admin-personal-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs, 4px) 0}.admin-personal-label{color:var(--text-secondary, #aaa);font-size:.9rem}.admin-personal-value{font-weight:600;font-size:1rem}.admin-personal-score{color:var(--color-primary, #1db954);font-size:1.1rem}.artist-option--readonly{padding:10px 14px;background:var(--bg-card, rgba(255, 255, 255, .05));border:1px solid var(--color-border-dark, rgba(255, 255, 255, .1));border-radius:var(--radius-md, 12px);text-align:center;font-size:.9rem;opacity:.8}.admin-intro-splash{text-align:center;padding:var(--space-md);margin-bottom:var(--space-md);background:var(--bg-card, rgba(255, 255, 255, .05));border-radius:var(--radius-md, 12px);border:1px solid var(--color-primary, #1db954)}.intro-splash-info{font-size:1.1rem;font-weight:600;margin-bottom:var(--space-sm)}.intro-splash-icon{margin-right:6px}.btn-compact{padding:8px 12px;font-size:.85rem}.admin-player-panel{background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.admin-year-selector{text-align:center;margin-bottom:var(--space-md)}.admin-year-selector .year-display{display:block;font-size:2.5rem;font-weight:700;margin-bottom:var(--space-sm);font-variant-numeric:tabular-nums}.admin-year-selector .year-slider{width:100%;margin-bottom:var(--space-xs)}.year-range-labels{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-secondary, #aaa)}.last-round-banner{text-align:center;padding:var(--space-sm);background:var(--color-warning, #f59e0b);color:#000;border-radius:var(--radius-sm);font-weight:600;margin-bottom:var(--space-md)}.submission-status{text-align:center;color:var(--text-secondary, #aaa);font-size:.9rem;margin-top:var(--space-sm)}.submission-count{margin-bottom:6px}.submission-players{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.submission-player{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:12px;font-size:.8rem;background:var(--bg-card, rgba(255, 255, 255, .05))}.submission-player.is-submitted{color:var(--color-primary, #1db954)}.submission-player.is-waiting{opacity:.6}.reveal-year-display{font-size:2.5rem;font-weight:700;text-align:center;margin:var(--space-md) 0;color:var(--color-primary, #1db954)}.admin-personal-result{display:flex;justify-content:space-between;align-items:center;background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.score-badge{font-weight:700;color:var(--color-primary, #1db954)}.admin-leaderboard-container{margin-bottom:var(--space-md)}.admin-leaderboard{width:100%;border-collapse:collapse}.admin-leaderboard th{text-align:left;font-weight:600;padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--color-border-light);font-size:.85rem;color:var(--text-secondary, #aaa)}.admin-leaderboard td{padding:var(--space-xs) var(--space-sm)}.admin-leaderboard tr.admin-highlight td{font-weight:600;color:var(--color-primary, #1db954)}.admin-winner-display{text-align:center;font-size:1.3rem;font-weight:600;padding:var(--space-lg) 0}.winner-trophy{font-size:2rem}.admin-end-actions{display:flex;gap:var(--space-sm);justify-content:center;margin-top:var(--space-md)}body.wizard-active>.admin-header,body.wizard-active>main.admin-content,body.wizard-active>.pwa-ios-hint{display:none}.wizard-takeover{position:fixed;inset:0;z-index:var(--z-overlay, 1100);background:var(--color-bg-primary);display:flex;flex-direction:column;overflow:hidden}.wizard-takeover.hidden{display:none}.wiz-bg{position:absolute;inset:0;background:radial-gradient(ellipse at top,rgba(255,45,106,.18),transparent 55%),radial-gradient(ellipse at bottom right,rgba(0,245,255,.12),transparent 40%);pointer-events:none}.wiz-top{padding:var(--space-md) var(--space-lg);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);border-bottom:1px solid var(--color-border-neon);position:relative;z-index:1}.wiz-step-count{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-dim, #6b6b7a);flex:1;text-align:center}.wiz-skip{font-family:var(--font-display);font-size:var(--font-size-sm);color:var(--color-text-neon-muted);background:none;border:none;font-weight:500;cursor:pointer;padding:var(--space-xs) var(--space-sm)}.wiz-skip:hover{color:var(--color-text-white)}.wiz-progress{display:flex;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);position:relative;z-index:1}.wiz-seg{flex:1;height:3px;background:var(--color-dark-surface);border-radius:var(--radius-full);overflow:hidden}.wiz-seg.filled{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80}.wiz-seg.active .wiz-seg-inner{height:100%;width:60%;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80;border-radius:var(--radius-full)}.wiz-frame{flex:1;overflow-y:auto;position:relative;z-index:1}.wiz-frame[hidden]{display:none}.wiz-body{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);max-width:720px;margin:0 auto}.wiz-eyebrow{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent-secondary)}.wiz-title{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-3xl);line-height:1.15;letter-spacing:-.01em;color:var(--color-text-white)}.wiz-sub{color:var(--color-text-neon-muted);font-size:var(--font-size-base);line-height:1.5}.wiz-hint{font-size:var(--font-size-sm);margin-top:var(--space-xs)}.wiz-hint a{color:var(--color-accent-secondary);text-decoration:underline}.wiz-list{display:flex;flex-direction:column;gap:var(--space-sm)}.wiz-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-fast);color:var(--color-text-white);text-align:left;width:100%;font-family:var(--font-body)}.wiz-row:hover{background:var(--color-dark-surface-hover)}.wiz-row.selected{background:linear-gradient(90deg,#ff2d6a26,#00f5ff0d);border-color:var(--color-accent-primary);box-shadow:0 0 14px #ff2d6a40}.wiz-row-avatar{width:36px;height:36px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-accent-primary),var(--color-accent-brand));flex-shrink:0;display:grid;place-items:center;color:var(--color-bg-primary)}.wiz-row-avatar-icon{width:20px;height:20px}.wiz-row-text{flex:1;min-width:0}.wiz-row-name{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wiz-row-sub{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:2px}.wiz-row-check{color:var(--color-success-neon);text-shadow:var(--glow-success)}.wiz-provider-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.wiz-provider-chip{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);cursor:pointer;color:var(--color-text-white);transition:var(--transition-fast)}.wiz-provider-chip:hover{background:var(--color-dark-surface-hover)}.wiz-provider-chip.active{border-color:var(--color-accent-primary);box-shadow:0 0 14px #ff2d6a40}.wiz-provider-chip.connected{border-color:var(--color-success-neon);background:#39ff141a}.wiz-provider-chip{justify-content:space-between}.wiz-provider-chip.disabled{opacity:.4;cursor:help;background:#ffffff05}.wiz-provider-chip.disabled:hover{opacity:.55;background:#ffffff0a}.wiz-provider-chip .chip-lock{width:14px;height:14px;opacity:.7;flex-shrink:0}.wiz-row-sub .cap-dot{width:4px;height:4px;border-radius:50%;background:var(--color-text-dim);display:inline-block;margin:0 6px;vertical-align:middle}.wiz-row-sub .cap-badge{font-family:var(--font-display);font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:1px 6px;border-radius:var(--radius-sm);border:1px solid;vertical-align:middle;white-space:nowrap}.wiz-row-sub .cap-badge.full{color:var(--color-success-neon);background:#39ff1414;border-color:#39ff1466}.wiz-row-sub .cap-badge.partial{color:var(--color-warning-alt);background:#ff660014;border-color:#f606}.wiz-row-sub .cap-badge.none{color:var(--color-error-neon);background:#ff004014;border-color:#ff004066}.wiz-row-sub .cap-badge.summary{color:var(--color-text-dim);background:none;border:none;padding:0;text-transform:none;letter-spacing:0;font-weight:500}.wiz-explainer{margin-top:var(--space-md);padding:var(--space-lg);border-radius:var(--radius-lg);background:linear-gradient(135deg,#ff66000f,#00f5ff0a);border:1px solid rgba(255,102,0,.35)}.wiz-explainer[hidden]{display:none}.wiz-explainer-title{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-weight:700;font-size:var(--font-size-md);margin:0 0 var(--space-sm)}.wiz-explainer-title .icon{font-size:18px}.wiz-explainer-body{font-size:var(--font-size-base);line-height:1.55;color:var(--color-text-neon-muted);margin:0 0 var(--space-md)}.wiz-explainer-steps{margin:0 0 var(--space-md);padding-left:var(--space-lg);font-size:var(--font-size-base);line-height:1.75;color:var(--color-text-neon-muted)}.wiz-explainer-steps li strong{color:var(--color-text-white)}.wiz-explainer-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap}.wiz-explainer-footer{margin:var(--space-md) 0 0;padding-top:var(--space-sm);border-top:1px solid rgba(255,255,255,.06);font-size:var(--font-size-sm);color:var(--color-text-dim);font-style:italic}.wiz-lvl-card{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-fast)}.wiz-lvl-card.on{background:#00f5ff14;border-color:var(--color-accent-secondary)}.wiz-lvl-card.unavailable{opacity:.45;cursor:not-allowed}.wiz-lvl-text{flex:1}.wiz-lvl-title{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);color:var(--color-text-white)}.wiz-lvl-desc{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:2px;line-height:1.4}.wiz-lvl-toggle{width:38px;height:22px;background:var(--color-dark-surface-hover);border-radius:var(--radius-full);border:1px solid var(--color-border-neon);position:relative;flex-shrink:0;margin-top:2px}.wiz-lvl-toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--color-text-neon-muted);border-radius:var(--radius-full);transition:var(--transition-fast)}.wiz-lvl-card.on .wiz-lvl-toggle{background:var(--color-accent-primary);border-color:var(--color-accent-primary)}.wiz-lvl-card.on .wiz-lvl-toggle:after{left:18px;background:var(--color-bg-primary)}.wiz-done{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);text-align:center;padding:var(--space-xl);position:relative;z-index:1}.wiz-done-badge{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-sm);letter-spacing:.14em;color:var(--color-success-neon);text-shadow:var(--glow-success)}.wiz-done-tag{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-xl);color:var(--color-text-white)}.wiz-done-summary{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;max-width:380px;padding:var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg)}.wiz-done-line{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-lg);font-family:var(--font-display);font-size:var(--font-size-sm);color:var(--color-text-neon-muted)}.wiz-done-line>span{letter-spacing:.08em;text-transform:uppercase;font-size:var(--font-size-xs);font-weight:600;flex-shrink:0}.wiz-done-line strong{color:var(--color-text-white);font-weight:600;text-align:right;word-break:break-word}.wiz-done-demo{width:100%;max-width:400px;aspect-ratio:16/9;border:1px solid var(--color-accent-primary);border-radius:var(--radius-xl);background:var(--color-bg-primary);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;box-shadow:0 0 30px #ff2d6a4d}.wiz-done-demo-label{font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-neon-muted);letter-spacing:.14em;text-transform:uppercase}.wiz-done-demo-year{font-family:var(--font-display);font-weight:900;font-size:64px;line-height:.9;color:var(--color-accent-primary);text-shadow:0 0 24px rgba(255,45,106,.6);letter-spacing:-.03em}.wiz-done-demo-song{font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-neon-muted)}.wiz-cta{padding:var(--space-md) var(--space-lg);display:flex;gap:var(--space-sm);border-top:1px solid var(--color-border-neon);background:#0000004d;position:relative;z-index:1}.wiz-cta .btn{flex:1}.wiz-cta .wiz-back{flex:0 0 auto;min-width:80px}.wiz-frame-playlist:not([hidden])~.wiz-cta{display:none}.finish-setup-pill{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-accent-primary);background:#ff2d6a1a;border:1px solid rgba(255,45,106,.4);border-radius:var(--radius-full);padding:var(--space-xs) var(--space-md);cursor:pointer;transition:var(--transition-fast)}.finish-setup-pill:hover{background:#ff2d6a33;box-shadow:var(--glow-primary)}.finish-setup-pill.hidden{display:none}@media(prefers-reduced-motion:reduce){.wizard-takeover,.wizard-takeover *{animation:none!important;transition:none!important}}.wiz-field{display:flex;flex-direction:column;gap:var(--space-xs)}.wiz-field-label{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.wiz-chip-group{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wiz-chip{padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-full);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-white);cursor:pointer;transition:var(--transition-fast)}.wiz-chip:hover{background:var(--color-dark-surface-hover)}.wiz-chip.active{background:var(--color-accent-primary);border-color:var(--color-accent-primary);color:var(--color-bg-primary);box-shadow:var(--glow-primary)}.wiz-request-playlist{margin-top:var(--space-md);align-self:flex-start}body.wizard-active .modal{z-index:calc(var(--z-overlay) + 10)}.wiz-difficulty-hint{margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#00f5ff0f;border-left:2px solid var(--color-accent-secondary);border-radius:var(--radius-sm);color:var(--color-text-neon-muted);font-size:var(--font-size-sm);line-height:1.5;min-height:1.5em}.wiz-rounds-custom{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm)}.wiz-rounds-custom input{width:6em;padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-sm);color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base)}.wiz-rounds-custom input:focus{outline:none;border-color:var(--color-accent-primary)}.wiz-rounds-custom span{color:var(--color-text-neon-muted);font-size:var(--font-size-sm)}.wiz-lvl-card{flex-direction:column;align-items:stretch;padding:0}.wiz-lvl-head{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);cursor:pointer;user-select:none}.wiz-lvl-card.unavailable .wiz-lvl-head{cursor:not-allowed}.wiz-lvl-head:hover{background:#ffffff05}.wiz-lvl-card.on .wiz-lvl-head{border-bottom:1px solid var(--color-border-neon)}.wiz-detail{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-md);background:#00000026}.wiz-detail-checks{display:flex;flex-direction:column;gap:var(--space-xs)}.wiz-detail-check{display:flex;align-items:center;gap:var(--space-sm);padding:6px 8px;border-radius:var(--radius-md);cursor:pointer}.wiz-detail-check:hover{background:#ffffff08}.wiz-detail-check input[type=checkbox]{accent-color:var(--color-accent-primary);width:16px;height:16px;flex-shrink:0}.wiz-detail-check-name{font-family:var(--font-display);font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-white)}.wiz-detail-empty{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);padding:var(--space-sm);background:var(--color-dark-surface);border:1px dashed var(--color-border-neon);border-radius:var(--radius-md);text-align:center}.wiz-detail-input{padding:var(--space-sm) var(--space-md);background:var(--color-bg-primary);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);color:var(--color-text-white);font-family:ui-monospace,monospace;font-size:var(--font-size-sm)}.wiz-detail-input:focus{outline:none;border-color:var(--color-accent-secondary);box-shadow:0 0 0 3px #00f5ff26}.wiz-field-hint{font-size:var(--font-size-xs);color:var(--color-text-dim);line-height:1.4}body.home-mode #media-players,body.home-mode #music-service,body.home-mode #playlists,body.home-mode #game-settings,body.home-mode #party-lights,body.home-mode #tts-settings,body.home-mode .admin-content>.admin-actions{display:none!important}.home-view{display:none}.home-view.hidden{display:none!important}body.home-mode #home-view,body.home-mode .home-view{display:flex;flex-direction:column;min-height:calc(100vh - 120px);background:var(--color-bg-primary);border:1px solid var(--color-border-neon);border-radius:var(--radius-xl);overflow:hidden;margin-bottom:var(--space-md)}.home-stage{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-xl) var(--space-lg);text-align:center}.home-stage-bg{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,rgba(255,45,106,.15),transparent 55%),radial-gradient(ellipse at bottom,rgba(0,245,255,.08),transparent 50%)}.home-eyebrow{position:relative;z-index:1;font-family:var(--font-display);font-weight:700;font-size:var(--font-size-sm);letter-spacing:.16em;text-transform:uppercase;color:var(--color-accent-secondary)}.home-headline{position:relative;z-index:1;font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);line-height:.95;letter-spacing:-.02em;margin:0;text-shadow:0 0 40px rgba(255,45,106,.35)}.home-headline-sub{display:block;font-weight:600;font-size:var(--font-size-xl);letter-spacing:.02em;text-shadow:none;color:var(--color-text-white);margin-top:4px}.home-hero-card{position:relative;z-index:1;padding:var(--space-lg);background:var(--color-dark-surface);border:1px solid var(--color-accent-primary);border-radius:var(--radius-2xl);box-shadow:0 0 32px #ff2d6a38;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);max-width:280px;width:100%}.home-qr-loading{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-neon-muted);padding:var(--space-xl) 0;letter-spacing:.08em;text-transform:uppercase}.home-qr-loading.hidden{display:none}.home-qr-container{padding:8px;background:var(--color-bg-white);border-radius:var(--radius-md);display:grid;place-items:center;min-width:180px;min-height:180px}.home-qr-container:empty{display:none}.home-qr-container img,.home-qr-container canvas{display:block;max-width:180px;height:auto}.home-hero-title{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);color:var(--color-text-white);letter-spacing:-.01em}.home-hero-sub{font-size:var(--font-size-sm);color:var(--color-accent-secondary);font-family:ui-monospace,monospace;word-break:break-all;max-width:260px}.home-players{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:var(--space-sm);justify-items:center;width:100%;max-width:380px;margin-top:var(--space-lg)}.home-players:empty{display:none}.home-player-tile{position:relative;width:100%;aspect-ratio:1;padding:var(--space-sm);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:linear-gradient(135deg,var(--tile-from),var(--tile-to));border:1.5px solid var(--tile-border);box-shadow:0 0 14px var(--tile-glow);--tile-from: rgba(0, 245, 255, .32);--tile-to: rgba(0, 245, 255, .08);--tile-border: rgba(0, 245, 255, .7);--tile-glow: rgba(0, 245, 255, .35)}.home-player-tile-initial{font-family:var(--font-display);font-weight:900;font-size:28px;line-height:1;color:var(--color-text-white);text-shadow:0 2px 8px rgba(0,0,0,.4)}.home-player-tile-name{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);color:var(--color-text-white);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}.home-player-tile--c2{--tile-from: rgba(57, 255, 20, .32);--tile-to: rgba(57, 255, 20, .08);--tile-border: rgba(57, 255, 20, .65);--tile-glow: rgba(57, 255, 20, .32)}.home-player-tile--c3{--tile-from: rgba(255, 102, 0, .32);--tile-to: rgba(255, 102, 0, .08);--tile-border: rgba(255, 102, 0, .65);--tile-glow: rgba(255, 102, 0, .32)}.home-player-tile--c4{--tile-from: rgba(0, 245, 255, .22);--tile-to: rgba(0, 245, 255, .04);--tile-border: rgba(0, 245, 255, .5);--tile-glow: rgba(0, 245, 255, .22)}.home-player-tile--host{--tile-from: rgba(255, 45, 106, .35);--tile-to: rgba(255, 45, 106, .08);--tile-border: rgba(255, 45, 106, .85);--tile-glow: rgba(255, 45, 106, .5);box-shadow:var(--glow-primary),0 0 22px #ff2d6a59}.home-player-tile-crown{position:absolute;top:-10px;right:-10px;font-size:20px;line-height:1;filter:drop-shadow(0 0 6px rgba(255,45,106,.8));pointer-events:none}.home-players-waiting{grid-column:1 / -1;padding:var(--space-md);border-radius:var(--radius-full);border:1px dashed var(--color-border-neon);background:transparent;color:var(--color-text-dim);font-family:var(--font-display);font-weight:500;font-size:var(--font-size-sm);text-align:center}.home-meta{position:relative;z-index:1;font-family:var(--font-display);font-weight:500;font-size:var(--font-size-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-dim);max-width:320px;line-height:1.6}.home-cta-bar{display:flex;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:#0000004d;border-top:1px solid var(--color-border-neon)}.home-cta-edit{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm)}.home-cta-start{flex:1;padding:var(--space-md);font-size:var(--font-size-base);box-shadow:var(--glow-primary),0 0 40px #ff2d6a40}.home-cta-start.btn-ghost{box-shadow:none;flex:0 0 auto}.home-cta-join{width:100%;margin-top:var(--space-md);padding:var(--space-lg) var(--space-md);font-size:var(--font-size-xl);font-weight:700;letter-spacing:.02em;border-radius:var(--radius-xl);box-shadow:var(--glow-primary),0 0 48px #ff2d6a4d;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm)}.home-cta-join svg{width:26px;height:26px;stroke-width:2.25}.home-cta-join.hidden{display:none}.wiz-mode-cards{display:flex;flex-direction:column;gap:var(--space-xs)}.wiz-mode-card{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-fast)}.wiz-mode-card:hover{background:var(--color-dark-surface-hover)}.wiz-mode-card.disabled{cursor:not-allowed;pointer-events:none}.wiz-mode-card.disabled .wiz-mode-icon,.wiz-mode-card.disabled .wiz-mode-title,.wiz-mode-card.disabled .wiz-lvl-toggle{opacity:.45}.wiz-mode-hint.gated{color:var(--color-warning);font-weight:600}.wiz-mode-card.on{background:#ff2d6a14;border-color:var(--color-accent-primary)}.wiz-mode-icon{font-size:22px;line-height:1;flex-shrink:0;margin-top:2px}.wiz-mode-body{flex:1;min-width:0}.wiz-mode-title{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);color:var(--color-text-white)}.wiz-mode-hint{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:2px;line-height:1.45}.wiz-mode-card.on .wiz-lvl-toggle{background:var(--color-accent-primary);border-color:var(--color-accent-primary)}.wiz-mode-card.on .wiz-lvl-toggle:after{left:18px;background:var(--color-bg-primary)}.wiz-coremode-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}.wiz-coremode-card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:var(--space-md) var(--space-sm);background:var(--color-dark-surface);border:1.5px solid var(--color-border-neon);border-radius:var(--radius-xl);cursor:pointer;overflow:hidden;transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast),opacity var(--transition-fast)}.wiz-coremode-card:hover{background:var(--color-dark-surface-hover)}.wiz-coremode-card .wiz-mode-icon{font-size:32px;margin-top:0}.wiz-coremode-card .wiz-mode-body{flex:none}.wiz-coremode-card .wiz-mode-title{font-weight:900;letter-spacing:.02em;text-transform:uppercase}.wiz-coremode-card .wiz-mode-hint{color:var(--color-text-dim)}.wiz-coremode-card.selected{transform:translateY(-2px)}.wiz-coremode-card--pink.selected{border-color:var(--color-accent-primary);background:radial-gradient(120% 100% at 50% 0%,#ff2d6a38,#ff2d6a0a);box-shadow:0 0 24px #ff2d6a4d}.wiz-coremode-card--cyan.selected{border-color:var(--color-accent-secondary);background:radial-gradient(120% 100% at 50% 0%,#00f5ff33,#00f5ff08);box-shadow:0 0 24px #00f5ff47}.wiz-coremode-card.dim{opacity:.5}.wiz-coremode-card.dim:hover{opacity:.8}.wiz-coremode-badge{position:absolute;top:8px;right:8px;font-family:var(--font-display);font-weight:800;font-size:9px;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:var(--radius-full)}.wiz-coremode-card--pink .wiz-coremode-badge{background:var(--color-accent-primary);color:var(--color-text-white)}.wiz-coremode-card--cyan .wiz-coremode-badge{background:var(--color-accent-secondary);color:#04222a}@media(prefers-reduced-motion:reduce){.wiz-coremode-card{transition:none}.wiz-coremode-card.selected{transform:none}}.home-cast-link{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-accent-secondary);border-radius:var(--radius-full);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-accent-secondary);text-decoration:none;position:relative;z-index:1;transition:var(--transition-fast)}.home-cast-link:hover{background:#00f5ff14;box-shadow:var(--glow-secondary)}.home-cast-link.hidden{display:none}.wiz-detail-test{align-self:flex-start;margin-top:var(--space-xs);padding:var(--space-xs) var(--space-md);font-size:var(--font-size-xs)}.wiz-detail-test[disabled]{opacity:.5;cursor:not-allowed}.wiz-wled-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xs)}.wiz-wled-row{display:flex;align-items:center;gap:var(--space-xs)}.wiz-wled-phase{font-family:var(--font-display);font-weight:700;font-size:10px;letter-spacing:.1em;color:var(--color-text-dim);min-width:72px}.wiz-wled-input{width:60px;padding:4px 8px;text-align:center;font-family:ui-monospace,monospace;font-size:var(--font-size-sm)}.home-utility-row{display:flex;gap:var(--space-sm);flex-wrap:wrap;justify-content:center;position:relative;z-index:1}.home-utility-btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-full);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-neon-muted);cursor:pointer;transition:var(--transition-fast)}.home-utility-btn:hover{color:var(--color-text-white);border-color:var(--color-accent-secondary)}.home-utility-btn.hidden{display:none}.home-cta-end{border-color:#ff004066;color:var(--color-error-neon)}.home-cta-end:hover{background:#ff00401a;box-shadow:0 0 12px #ff00404d}.home-cta-end.hidden{display:none}.home-hero-card--setup{border-color:var(--color-border-neon);box-shadow:none;gap:var(--space-md)}.home-setup-glyph{width:56px;height:56px;display:grid;place-items:center;color:var(--color-accent-secondary);text-shadow:0 0 12px rgba(0,245,255,.4)}.home-setup-glyph svg{width:100%;height:100%}.home-hero-sub--plain{color:var(--color-text-neon-muted);font-family:var(--font-body);text-align:center;font-size:var(--font-size-sm);line-height:1.5;max-width:280px}.home-cta-setup{flex:1;padding:var(--space-md);font-size:var(--font-size-base);box-shadow:var(--glow-primary),0 0 40px #ff2d6a40}.home-cta-setup.hidden,body.is-learning-screen .player-header,body.is-ingame .player-header{display:none}#tour-view.view:not(.hidden){display:flex;flex-direction:column}.tour-container{min-height:100vh;padding:var(--space-xl) var(--space-md) var(--space-md);background:radial-gradient(circle at 50% 10%,rgba(255,45,106,.1),transparent 55%),radial-gradient(circle at 85% 90%,rgba(0,245,255,.08),transparent 55%),var(--color-bg-primary);display:flex;flex-direction:column}.tour-header-wiz{margin-bottom:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.tour-step-count{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.tour-step-count .of{color:var(--color-text-dim);font-weight:500}.tour-skip-link{font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-dim);background:transparent;border:0;cursor:pointer;padding:var(--space-xs) var(--space-sm);transition:color var(--transition-fast)}.tour-skip-link:hover,.tour-skip-link:focus-visible{color:var(--color-text-neon-muted);outline:none}.tour-wiz-progress{display:flex;gap:4px;width:100%}.tour-wiz-seg{flex:1;height:3px;background:#ffffff14;border-radius:var(--radius-full);overflow:hidden;position:relative}.tour-wiz-seg.filled{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80}.tour-wiz-seg.active .tour-wiz-seg-inner{height:100%;width:60%;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80;border-radius:var(--radius-full)}.tour-card{flex:1;display:flex;flex-direction:column;align-items:center;padding:var(--space-md) 0;animation:tour-card-enter var(--transition-slow) ease-out}@keyframes tour-card-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.tour-card.hidden{display:none}@media(prefers-reduced-motion:reduce){.tour-card{animation:none}}.tour-title{font-family:var(--font-display);font-weight:900;font-size:2.5rem;line-height:1;text-align:center;color:var(--color-text-white);letter-spacing:-.02em;margin-bottom:var(--space-sm)}.tour-caption{font-family:var(--font-body);font-weight:500;font-size:var(--font-size-lg);text-align:center;color:var(--color-text-neon-muted);margin-bottom:var(--space-xl);max-width:320px}.tour-preview{flex:1;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);margin-bottom:var(--space-md)}.tour-preview-album{width:88px;height:88px;border-radius:var(--radius-lg);background:linear-gradient(135deg,#2a1b4a,#1a1a24);border:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.tour-preview-album:after{content:"";position:absolute;width:32px;height:32px;border-radius:50%;background:radial-gradient(circle,#0a0a12 28%,#2a2a3a 29% 62%,#0a0a12 63%);border:1px solid rgba(255,255,255,.08)}.tour-preview-album:before{content:"\266a";position:absolute;font-size:26px;color:var(--color-accent-secondary);opacity:.75;z-index:1}.tour-year-display{display:flex;align-items:center;justify-content:center;gap:var(--space-md)}.tour-year-adjust{width:38px;height:38px;border-radius:50%;border:1.5px solid rgba(255,255,255,.25);background:transparent;color:#fff9;font-size:var(--font-size-xl);font-weight:400;display:flex;align-items:center;justify-content:center}.tour-year-big{font-family:var(--font-display);font-weight:900;font-size:4.25rem;color:var(--color-accent-secondary);text-shadow:0 0 24px rgba(0,245,255,.6);line-height:1;letter-spacing:-.03em}.tour-preview-slider{width:100%;max-width:320px;display:flex;align-items:center;gap:var(--space-sm)}.tour-slider-label{font-family:var(--font-body);font-size:var(--font-size-sm);color:#ffffff80;min-width:34px;text-align:center}.tour-slider-track{flex:1;height:4px;background:#ffffff26;border-radius:2px;position:relative}.tour-slider-thumb{position:absolute;top:50%;left:45.3%;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:var(--color-accent-secondary);box-shadow:0 0 16px #00f5ffcc;border:2px solid var(--color-bg-primary)}.tour-bet-button{background:linear-gradient(135deg,#ff2d6a1f,#ff2d6a0f);border:2px solid var(--color-accent-primary);border-radius:var(--radius-xl);padding:var(--space-md) var(--space-lg);display:flex;align-items:center;gap:var(--space-sm);box-shadow:0 0 24px #ff2d6a59}.tour-bet-button .tour-bet-dice{font-size:30px;filter:drop-shadow(0 0 6px rgba(255,45,106,.6))}.tour-bet-button .tour-bet-label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);color:var(--color-text-white)}.tour-bet-score{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg-surface);border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.06)}.tour-bet-score-base{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-2xl);color:var(--color-text-neon-muted)}.tour-bet-score-op{color:var(--color-text-dim);font-size:var(--font-size-lg)}.tour-bet-score-multi{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-2xl);color:var(--color-accent-primary)}.tour-bet-score-final{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);color:var(--color-success-neon);text-shadow:0 0 12px rgba(57,255,20,.5)}.tour-steal-button{background:linear-gradient(135deg,#00f5ff1f,#00f5ff0a);border:2px solid var(--color-accent-secondary);border-radius:var(--radius-xl);padding:var(--space-md) var(--space-lg);display:flex;align-items:center;gap:var(--space-sm);box-shadow:0 0 24px #00f5ff66}.tour-steal-button .tour-steal-ninja{font-size:30px}.tour-steal-button .tour-steal-label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);color:var(--color-text-white)}.tour-steal-targets{display:flex;gap:var(--space-sm);align-items:center}.tour-steal-target{background:var(--color-bg-surface);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-neon-muted);border:1px solid rgba(255,255,255,.06)}.tour-steal-target.highlighted{color:var(--color-text-white);border-color:var(--color-accent-secondary);box-shadow:0 0 12px #00f5ff59}.tour-hint{font-family:var(--font-body);font-size:var(--font-size-sm);color:#fff6;text-align:center;font-style:italic;margin-top:var(--space-xs)}.tour-ta-fields{display:flex;flex-direction:column;gap:var(--space-sm);width:100%}.tour-ta-field{display:flex;flex-direction:column;gap:4px;padding:10px 14px;background:linear-gradient(180deg,#ff2d6a0f,#ffffff05);border:1px solid rgba(255,45,106,.22);border-radius:var(--radius-lg);text-align:left}.tour-ta-field-label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.tour-ta-field-val{font-family:var(--font-body);font-weight:600;font-size:var(--font-size-md);color:var(--color-text-white)}.tour-artist-prompt{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg-surface);border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.06);width:100%;max-width:320px}.tour-artist-prompt .tour-artist-mic{font-size:var(--font-size-xl)}.tour-artist-prompt .tour-artist-who{font-family:var(--font-body);font-size:var(--font-size-base);font-weight:500;color:var(--color-text-white)}.tour-artist-prompt .tour-artist-bonus{margin-left:auto;background:#22c55e26;color:var(--color-success);font-weight:700;font-size:var(--font-size-sm);padding:2px var(--space-sm);border-radius:var(--radius-full)}.tour-artist-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);width:100%;max-width:320px}.tour-artist-option{min-height:48px;padding:var(--space-sm) var(--space-md);border:2px solid rgba(255,255,255,.12);border-radius:var(--radius-md);background:var(--color-bg-surface);color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base);font-weight:500;display:flex;align-items:center;justify-content:center;cursor:default}.tour-artist-option.is-winner{background:var(--color-success);border-color:var(--color-success);color:var(--color-text-white);box-shadow:var(--glow-primary)}.tour-footer{margin-top:auto;padding-top:var(--space-md);display:flex;gap:var(--space-sm);align-items:stretch}.btn-tour-skip{flex:1;background:transparent;color:var(--color-text-neon-muted);border:1.5px solid rgba(255,255,255,.15);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-md);font-family:var(--font-body);font-weight:600;font-size:var(--font-size-md);cursor:pointer}.btn-tour-skip:hover,.btn-tour-skip:focus-visible{border-color:#ffffff4d;color:var(--color-text-white);outline:none}.btn-tour-next{flex:2;background:var(--color-accent-primary);color:var(--color-text-white);border:none;border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);box-shadow:var(--glow-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--space-sm)}.btn-tour-next .chev{opacity:.85}#ready-view.view:not(.hidden){display:flex;flex-direction:column}.ready-container{min-height:100vh;padding:var(--space-xl);background:radial-gradient(circle at 50% 30%,rgba(255,45,106,.1),transparent 55%),radial-gradient(circle at 85% 80%,rgba(0,245,255,.08),transparent 55%),var(--color-bg-primary);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-sm)}.ready-wordmark{font-family:var(--font-display);font-weight:900;font-size:5rem;letter-spacing:-.02em;margin-bottom:var(--space-sm);text-shadow:0 0 48px rgba(255,45,106,.55);animation:ready-wordmark-in .5s ease-out}.ready-wordmark .beat{color:var(--color-text-white)}.ready-wordmark .ify{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}@keyframes ready-wordmark-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.ready-name{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-3xl);color:var(--color-text-white);margin-bottom:var(--space-xs);animation:ready-fade-in .5s ease-out .1s both}.ready-subtitle{font-family:var(--font-body);font-size:var(--font-size-md);color:var(--color-text-neon-muted);margin-bottom:var(--space-2xl);animation:ready-fade-in .5s ease-out .2s both}@keyframes ready-fade-in{0%{opacity:0}to{opacity:1}}.ready-waiting{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);animation:ready-fade-in .5s ease-out .3s both}.ready-pulse{position:relative;width:16px;height:16px;border-radius:50%;background:var(--color-accent-secondary);box-shadow:0 0 12px #00f5ffb3}.ready-pulse:before{content:"";position:absolute;inset:-8px;border-radius:50%;border:2px solid var(--color-accent-secondary);opacity:.6;animation:ready-pulse-ring 1.8s ease-out infinite}@keyframes ready-pulse-ring{0%{transform:scale(.6);opacity:.8}to{transform:scale(2.4);opacity:0}}@media(prefers-reduced-motion:reduce){.ready-wordmark,.ready-name,.ready-subtitle,.ready-waiting{animation:none}.ready-pulse:before{animation:none;opacity:0}}.ready-label{font-family:var(--font-body);font-size:var(--font-size-md);font-weight:500;color:var(--color-text-white)}.ready-count{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--color-text-dim)}.replay-tour-link{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:transparent;border:1px dashed rgba(255,45,106,.4);border-radius:var(--radius-md);color:var(--color-accent-primary);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;text-decoration:none;margin-bottom:var(--space-sm);cursor:pointer;width:100%;transition:all var(--transition-fast)}.replay-tour-link:hover,.replay-tour-link:focus-visible{border-color:var(--color-accent-primary);background:#ff2d6a0d;outline:none}.replay-tour-link .arrow{margin-left:auto}.home-player-tile--learning{border-style:dashed!important;opacity:.72}.home-player-tile-tour{position:absolute;top:-6px;right:-6px;background:#00f5ff1a;color:var(--color-accent-secondary);font-family:var(--font-body);font-size:9px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:var(--radius-full);border:1px solid rgba(0,245,255,.4);box-shadow:0 0 8px #00f5ff40}.home-learning-warning{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-sm);background:#ff660014;border:1px solid rgba(255,102,0,.25);border-radius:var(--radius-md);color:var(--color-warning-alt);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;text-align:center}.home-learning-warning.hidden{display:none}.player-tiles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:var(--space-sm);justify-items:center;width:100%}.player-tiles-grid:empty{display:none}.player-tile{position:relative;width:100%;aspect-ratio:1;padding:var(--space-sm);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:linear-gradient(135deg,var(--tile-from),var(--tile-to));border:1.5px solid var(--tile-border);box-shadow:0 0 14px var(--tile-glow);--tile-from: rgba(0, 245, 255, .32);--tile-to: rgba(0, 245, 255, .08);--tile-border: rgba(0, 245, 255, .7);--tile-glow: rgba(0, 245, 255, .35);transition:box-shadow var(--transition-fast),border-color var(--transition-fast)}.player-tile-initial{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-3xl);line-height:1;color:var(--color-text-white);text-shadow:0 2px 8px rgba(0,0,0,.4)}.player-tile-name{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);color:var(--color-text-white);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}.player-tile--c2{--tile-from: rgba(57, 255, 20, .32);--tile-to: rgba(57, 255, 20, .08);--tile-border: rgba(57, 255, 20, .65);--tile-glow: rgba(57, 255, 20, .32)}.player-tile--c3{--tile-from: rgba(255, 102, 0, .32);--tile-to: rgba(255, 102, 0, .08);--tile-border: rgba(255, 102, 0, .65);--tile-glow: rgba(255, 102, 0, .32)}.player-tile--c4{--tile-from: rgba(0, 245, 255, .22);--tile-to: rgba(0, 245, 255, .04);--tile-border: rgba(0, 245, 255, .5);--tile-glow: rgba(0, 245, 255, .22)}.player-tile--host{--tile-from: rgba(255, 45, 106, .35);--tile-to: rgba(255, 45, 106, .08);--tile-border: rgba(255, 45, 106, .85);--tile-glow: rgba(255, 45, 106, .5);box-shadow:var(--glow-primary),0 0 22px #ff2d6a59}.player-tile-crown{position:absolute;top:-10px;right:-10px;font-size:20px;line-height:1;filter:drop-shadow(0 0 6px rgba(255,45,106,.8));pointer-events:none}.player-tile-you-chip{position:absolute;top:-10px;right:-10px;background:var(--color-accent-secondary);color:var(--color-bg-primary);font-family:var(--font-display);font-weight:900;font-size:9px;letter-spacing:.1em;padding:3px 7px;border-radius:var(--radius-full);box-shadow:0 0 12px #00f5ff99;pointer-events:none}.player-tile-away{position:absolute;bottom:-8px;left:50%;transform:translate(-50%);font-family:var(--font-body);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-dim);background:var(--color-bg-primary);padding:2px 6px;border-radius:var(--radius-full);border:1px solid rgba(255,255,255,.12);pointer-events:none}.player-tile--disconnected{opacity:.5;filter:grayscale(.4)}.player-tile.is-new{animation:player-tile-pop var(--transition-slow) ease-out}@keyframes player-tile-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.player-tile.is-new{animation:none}}.reveal-header-v2{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md);gap:var(--space-sm)}.reveal-header-v2 .round-count{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-neon-muted);display:flex;align-items:center;gap:4px}.reveal-header-v2 .header-right{display:flex;align-items:center;gap:var(--space-sm)}.reveal-advance-pill{position:relative;width:32px;height:32px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.reveal-advance-pill.hidden{display:none}.reveal-advance-svg{width:100%;height:100%;transform:rotate(-90deg)}.reveal-advance-bg{fill:none;stroke:#ffffff1f;stroke-width:5}.reveal-advance-fg{fill:none;stroke:var(--color-accent-secondary);stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset .5s linear;filter:drop-shadow(var(--glow-secondary))}.reveal-advance-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:13px;color:var(--color-accent-secondary)}.info-btn{width:28px;height:28px;border-radius:50%;border:1px solid rgba(255,255,255,.14);background:var(--color-bg-surface);color:var(--color-text-neon-muted);font-size:var(--font-size-base);font-weight:700;font-family:var(--font-display);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast);padding:0}.info-btn:hover,.info-btn:focus-visible{color:var(--color-text-white);border-color:#ffffff4d;outline:none}.song-strip{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-sm) var(--space-sm) var(--space-sm);background:#ffffff0a;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.08);margin-bottom:var(--space-md)}.song-strip-cover{width:56px;height:56px;border-radius:var(--radius-md);object-fit:cover;flex-shrink:0;background:linear-gradient(135deg,#ff6b9a,#6366f1)}.song-strip-info{flex:1;min-width:0}.song-strip-title{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-md);color:var(--color-text-white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-strip-artist{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--color-text-neon-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-row{display:flex;gap:var(--space-xs);margin-bottom:var(--space-sm);flex-wrap:wrap}.chip-row.hidden{display:none}.chip-row .chip{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:var(--radius-full);font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:700;letter-spacing:.04em}.chip-row .chip--bet-won{background:#ff2d6a1f;border:1px solid rgba(255,45,106,.5);color:var(--color-accent-primary);box-shadow:0 0 12px #ff2d6a33}.chip-row .chip--bet-lost{background:#ff004014;border:1px solid rgba(255,0,64,.4);color:var(--color-error-neon)}.chip-row .chip--streak{background:#ff66001f;border:1px solid rgba(255,102,0,.5);color:var(--color-warning-alt)}.duel{padding:var(--space-lg) var(--space-xs) var(--space-md);margin-bottom:var(--space-sm)}.duel-emotion{text-align:center;font-family:var(--font-display);font-weight:900;font-size:var(--font-size-2xl);letter-spacing:.06em;margin-bottom:var(--space-md);min-height:1.2em;transition:color var(--transition-normal)}.duel-emotion.hidden{visibility:hidden}.duel-emotion--exact{color:var(--color-success-neon);text-shadow:0 0 16px rgba(57,255,20,.55)}.duel-emotion--close{color:var(--color-success-neon);text-shadow:0 0 14px rgba(57,255,20,.45)}.duel-emotion--wrong{color:var(--color-error-neon);text-shadow:0 0 14px rgba(255,0,64,.45)}.duel-emotion--missed{color:var(--color-text-dim);text-shadow:none}.duel-row{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--space-sm);align-items:center}.duel-side{text-align:center;min-width:0}.duel-label{font-family:var(--font-body);font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-dim);font-weight:600;margin-bottom:var(--space-sm)}.duel-year{font-family:var(--font-display);font-weight:900;font-size:clamp(40px,12vw,64px);line-height:1;letter-spacing:-.03em}.duel-year.mine{color:var(--color-text-neon-muted)}.duel-year.correct{color:var(--color-accent-secondary);text-shadow:0 0 24px rgba(0,245,255,.6)}.duel-gap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:48px}.duel-gap-x{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xl);color:var(--color-text-dim);opacity:.6;line-height:1}.duel-gap-n{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-2xl);color:var(--color-error-neon);text-shadow:0 0 10px rgba(255,0,64,.35);line-height:1}.duel-gap--exact .duel-gap-n{color:var(--color-success-neon);text-shadow:0 0 10px rgba(57,255,20,.5)}.duel-gap--close .duel-gap-n{color:var(--color-success-neon);text-shadow:0 0 8px rgba(57,255,20,.35)}.duel-gap-unit{font-family:var(--font-body);font-size:9px;color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.1em;margin-top:3px}.score-row{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--color-bg-surface);border-radius:var(--radius-lg);border:1px solid rgba(0,245,255,.25);box-shadow:0 0 14px #00f5ff1f;margin-bottom:var(--space-md);gap:var(--space-sm)}.score-row-left{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--color-text-neon-muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em;display:flex;flex-direction:column;gap:3px;min-width:0}.score-row-subtitle{color:var(--color-text-white);font-size:var(--font-size-sm);font-weight:700;letter-spacing:0;text-transform:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-row-right{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.score-row-pts{font-family:var(--font-display);font-weight:900;font-size:38px;color:var(--color-accent-secondary);text-shadow:0 0 18px rgba(0,245,255,.5);line-height:1}.standings-section .leaderboard-list{display:flex;flex-direction:column;gap:6px}.sheet-backdrop{position:fixed;inset:0;z-index:400;display:flex;align-items:flex-end;justify-content:center}.sheet-backdrop.hidden{display:none}.sheet-dim{position:absolute;inset:0;background:#0a0a1299;backdrop-filter:blur(2px);animation:sheet-dim-in .2s ease-out}@keyframes sheet-dim-in{0%{opacity:0}to{opacity:1}}.sheet{position:relative;z-index:1;width:100%;max-width:520px;background:linear-gradient(180deg,#14141e,#0a0a12);border-top:1px solid rgba(0,245,255,.25);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;box-shadow:0 -12px 40px #00000080,0 -4px 16px #00f5ff1a;padding:14px 20px calc(28px + env(safe-area-inset-bottom,0));max-height:80vh;overflow-y:auto;animation:sheet-slide-up .32s cubic-bezier(.22,.8,.32,1)}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.sheet-dim,.sheet{animation:none}}.sheet-handle{width:40px;height:4px;border-radius:2px;background:#fff3;margin:0 auto 16px}.sheet-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.sheet-title{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-lg);display:flex;align-items:center;gap:8px;color:var(--color-text-white)}.sheet-close{width:32px;height:32px;border-radius:50%;background:#ffffff14;border:0;color:var(--color-text-neon-muted);font-size:var(--font-size-base);font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer}.sheet-close:hover,.sheet-close:focus-visible{color:var(--color-text-white);background:#ffffff24;outline:none}.breakdown-list{display:flex;flex-direction:column;margin-bottom:var(--space-md)}.breakdown-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;font-family:var(--font-body);font-size:var(--font-size-base)}.breakdown-row+.breakdown-row{border-top:1px solid rgba(255,255,255,.05)}.breakdown-row .label{color:var(--color-text-neon-muted);display:flex;align-items:center;gap:8px}.breakdown-row .label .emoji{font-size:var(--font-size-md)}.breakdown-row .value{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-md)}.breakdown-row .value--positive{color:var(--color-success-neon)}.breakdown-row .value--multiplier{color:var(--color-accent-primary)}.breakdown-row .value--neutral{color:var(--color-text-white)}.breakdown-total{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border-radius:var(--radius-lg);background:linear-gradient(90deg,#00f5ff14,#ff2d6a0d);border:1px solid rgba(0,245,255,.3)}.breakdown-total .label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-md);color:var(--color-text-white)}.breakdown-total .value{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-3xl);color:var(--color-accent-secondary);text-shadow:0 0 16px rgba(0,245,255,.5)}.breakdown-total--zero .value{color:var(--color-text-dim);text-shadow:none}.breakdown-empty{text-align:center;padding:var(--space-md) 0}.breakdown-empty-icon{font-size:42px;margin-bottom:var(--space-sm)}.breakdown-empty-text{color:var(--color-text-neon-muted);font-family:var(--font-body);font-size:var(--font-size-base);margin-bottom:var(--space-md)}.difficulty-visual{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);background:#ff004014;border:1px solid rgba(255,0,64,.3);border-radius:var(--radius-md);margin-bottom:var(--space-sm);gap:var(--space-sm)}.difficulty-visual .left{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-sm);color:var(--color-error-neon);min-width:0}.difficulty-visual .left .sub{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-neon-muted);margin-top:3px}.difficulty-visual .stars{font-size:var(--font-size-md);letter-spacing:2px;white-space:nowrap}.difficulty-visual .star-filled{color:var(--color-warning-alt)}.difficulty-visual .star-empty{color:#ffffff26}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-sm)}.stats-card{padding:12px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-md)}.stats-card .lbl{font-family:var(--font-body);font-size:10px;color:var(--color-text-dim);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.stats-card .val{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-2xl);margin-top:4px;color:var(--color-text-white)}.stats-card .val.cyan{color:var(--color-accent-secondary)}.stats-card .val.success{color:var(--color-success-neon)}.stats-card .val.warn{color:var(--color-error-neon)}.stats-card .sub{font-family:var(--font-body);font-size:10px;color:var(--color-text-neon-muted);margin-top:2px}.furthest-list{display:flex;flex-direction:column;gap:6px}.furthest-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#ffffff08;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-size-sm)}.furthest-row .name{font-weight:600;color:var(--color-text-white)}.furthest-row .off{color:var(--color-error-neon);font-family:var(--font-display);font-weight:700}.stats-empty{text-align:center;color:var(--color-text-dim);font-family:var(--font-body);font-size:var(--font-size-sm);padding:var(--space-md)}.game-container--arcade{padding:0;display:flex;flex-direction:column;gap:0}.arc-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);position:sticky;top:0;z-index:5;background:linear-gradient(180deg,rgba(10,10,18,.95),rgba(10,10,18,.82) 72%,transparent);backdrop-filter:blur(8px);margin-bottom:var(--space-md)}.timer-float{position:fixed;top:max(env(safe-area-inset-top,0px) + 8px,8px);right:12px;z-index:100;width:52px;height:52px;border-radius:50%;background:#0a0a12c7;border:2px solid var(--color-accent-primary);box-shadow:0 0 14px #ff2d6a73,inset 0 0 8px #ff2d6a40;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:22px;line-height:1;color:var(--color-accent-primary);text-shadow:0 0 8px rgba(255,45,106,.6);backdrop-filter:blur(8px);transition:opacity .2s ease-out,transform .2s ease-out;pointer-events:none}.timer-float.hidden{opacity:0;transform:scale(.7);pointer-events:none}.timer-float.timer-float--visible{opacity:1;transform:scale(1)}.timer-float.timer-float--warn{border-color:var(--color-error-neon, #ff0040);color:var(--color-error-neon, #ff0040);box-shadow:0 0 16px #ff004099,inset 0 0 8px #ff00404d;animation:arc-urgency .8s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.timer-float{transition:none}.timer-float.timer-float--warn{animation:none}}.arc-pulse-orb{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(135deg,#ff6b9a,#6366f1);box-shadow:0 0 24px #ff2d6a80;flex-shrink:0}.arc-pulse-orb:before{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(255,45,106,.5);animation:arc-orb-pulse 1.4s ease-out infinite;pointer-events:none}.arc-pulse-orb--steady:before{animation:none;opacity:0}@keyframes arc-orb-pulse{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.25)}}@media(prefers-reduced-motion:reduce){.arc-pulse-orb:before{animation:none;opacity:0}}.arc-pulse-orb-img{width:100%;height:100%;object-fit:cover;border-radius:50%;z-index:1;filter:blur(12px);transform:scale(1.15);transition:filter .4s ease,transform .4s ease}.arc-round-center{text-align:center;font-family:var(--font-display);font-weight:800;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-neon-muted);line-height:1.3;overflow:hidden}.arc-round-label{display:block}.arc-round-big{display:block;font-size:20px;color:var(--color-text-white);letter-spacing:0;text-transform:none;margin-top:2px}.arc-round-sep{color:var(--color-text-dim);margin:0 2px;font-weight:500}.timer-neon{width:72px;height:72px;border-radius:50%;background:var(--color-bg-primary);border:3px solid var(--color-accent-primary);box-shadow:var(--glow-primary),inset 0 0 12px #ff2d6a4d;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:30px;color:var(--color-accent-primary);text-shadow:0 0 10px rgba(255,45,106,.6);flex-shrink:0;line-height:1}.timer-neon .timer{color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit}.timer-neon.timer-neon--warn{border-color:var(--color-error-neon);color:var(--color-error-neon);box-shadow:0 0 20px #ff004099,inset 0 0 12px #ff00404d;animation:arc-urgency .8s ease-in-out infinite}@keyframes arc-urgency{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.timer-neon.timer-neon--catchup{animation:timer-catchup-glow .4s ease-out}@keyframes timer-catchup-glow{0%{box-shadow:var(--glow-primary),inset 0 0 12px #ff2d6a4d}45%{box-shadow:0 0 26px #00f5ffb3,inset 0 0 16px #00f5ff59}to{box-shadow:var(--glow-primary),inset 0 0 12px #ff2d6a4d}}@media(prefers-reduced-motion:reduce){.timer-neon.timer-neon--warn,.timer-neon.timer-neon--catchup{animation:none}}.arc-chip-row{display:flex;gap:6px;flex-wrap:wrap;padding:0 var(--space-md);margin-bottom:var(--space-md)}.arc-chip-row.hidden{display:none}.arc-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--radius-full);font-family:var(--font-body);font-size:11px;font-weight:700;letter-spacing:.04em}.arc-chip--steal{color:var(--color-accent-secondary);background:#00f5ff14;border:1px solid rgba(0,245,255,.4)}.arc-chip--closest-wins{color:var(--color-success-neon);background:#39ff1414;border:1px solid rgba(57,255,20,.4)}.arc-chip--intro{color:var(--color-warning-alt);background:#ff66001f;border:1px solid rgba(255,102,0,.5)}.arc-chip--final{color:var(--color-accent-primary);background:#ff2d6a1f;border:1px solid rgba(255,45,106,.5);text-transform:uppercase}.year-xxl{text-align:center;font-family:var(--font-display);font-weight:900;font-size:clamp(96px,34vw,128px);line-height:1;letter-spacing:-.04em;background:linear-gradient(180deg,var(--color-text-white) 0%,rgba(0,245,255,.85) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:0 0 32px rgba(0,245,255,.35);margin:4px 0 var(--space-md);padding:0 var(--space-md);max-width:100%}.year-xxl--locked{background:linear-gradient(180deg,var(--color-success-neon) 0%,rgba(57,255,20,.7) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 28px rgba(57,255,20,.45)}.submitted-banner{margin:0 var(--space-md) var(--space-sm);padding:8px 14px;background:#39ff1414;border:1px solid rgba(57,255,20,.4);border-radius:var(--radius-md);font-family:var(--font-display);font-weight:800;font-size:14px;color:var(--color-success-neon);letter-spacing:.04em;display:flex;align-items:center;justify-content:center;gap:6px;text-align:center}.submitted-banner.hidden{display:none}.submitted-banner .check{width:18px;height:18px;border-radius:50%;background:var(--color-success-neon);color:var(--color-bg-primary);font-size:11px;font-weight:900;display:flex;align-items:center;justify-content:center;flex-shrink:0}.slider-arcade-wrap{padding:0 var(--space-md);margin-bottom:var(--space-md);position:relative}.slider-arcade{padding:10px;background:#ffffff0a;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:12px}.slider-btn-year{width:44px;height:44px;border-radius:50%;background:var(--color-bg-primary);border:2px solid rgba(255,255,255,.15);color:var(--color-text-white);font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);touch-action:manipulation}.slider-btn-year:hover,.slider-btn-year:focus-visible{border-color:var(--color-accent-secondary);color:var(--color-accent-secondary);outline:none}.slider-btn-year:disabled{opacity:.4;cursor:not-allowed}.slider-btn-year--coarse{position:relative;width:36px;height:36px;font-size:13px;font-weight:800;letter-spacing:-.02em}.slider-btn-year--coarse:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.slider-arcade{gap:8px}.slider-arcade-track{flex:1;display:flex;flex-direction:column;align-items:stretch;gap:4px}.year-scale{position:relative;height:13px;margin:0 2px;pointer-events:none}.year-scale span{position:absolute;top:0;transform:translate(-50%);font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--color-text-muted, rgba(255, 255, 255, .42));font-variant-numeric:tabular-nums;white-space:nowrap;user-select:none}.slider-arcade.slider-arcade--locked .year-scale{opacity:.5}.year-slider-arcade{-webkit-appearance:none;appearance:none;width:100%;height:10px;background:linear-gradient(90deg,#00f5ff26,#ff2d6a40,#39ff1426);border-radius:var(--radius-full);outline:none;cursor:pointer}.year-slider-arcade::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:32px;height:32px;border-radius:50%;background:var(--color-accent-primary);border:3px solid var(--color-bg-primary);box-shadow:var(--glow-primary);cursor:grab;transition:transform var(--transition-fast)}.year-slider-arcade::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.05)}.year-slider-arcade::-moz-range-thumb{width:32px;height:32px;border-radius:50%;background:var(--color-accent-primary);border:3px solid var(--color-bg-primary);box-shadow:var(--glow-primary);cursor:grab}.slider-arcade.slider-arcade--locked{opacity:.55;pointer-events:none}.slider-arcade.slider-arcade--locked .year-slider-arcade::-webkit-slider-thumb{background:var(--color-success-neon);box-shadow:0 0 16px #39ff1499}.slider-arcade.slider-arcade--locked .year-slider-arcade::-moz-range-thumb{background:var(--color-success-neon);box-shadow:0 0 16px #39ff1499}.guess-lock-stamp{position:absolute;right:calc(var(--space-md) + 8px);top:-10px;padding:3px 10px;font-family:var(--font-display);font-weight:900;font-size:10px;color:var(--color-success-neon);background:var(--color-bg-primary);border:1px solid rgba(57,255,20,.4);border-radius:var(--radius-full);letter-spacing:.08em;text-transform:uppercase;box-shadow:0 0 8px #39ff1440}.guess-lock-stamp.hidden{display:none}.arc-tiles{padding:12px 14px;margin:0 var(--space-md) var(--space-md);background:linear-gradient(180deg,#00f5ff0a,#ffffff05);border:1px solid rgba(0,245,255,.18);border-radius:var(--radius-lg);box-shadow:inset 0 0 12px #00f5ff0a}.arc-tiles.hidden{display:none}.arc-tiles-header{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted);margin-bottom:10px;gap:var(--space-sm)}.arc-tiles-header>span:first-child{display:flex;align-items:center;gap:6px;min-width:0}.arc-tiles-bonus{background:#39ff1426;color:var(--color-success-neon);font-weight:900;font-size:11px;padding:2px 8px;border-radius:var(--radius-full);letter-spacing:.04em;flex-shrink:0}.arc-tiles-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.arc-tiles-grid .artist-option-btn,.arc-tiles-grid .movie-option-btn{padding:14px 10px;background:#ffffff0d;border:2px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);font-family:var(--font-display);font-weight:700;font-size:15px;text-align:center;color:var(--color-text-white);box-shadow:0 4px #0000004d;transition:transform var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast);cursor:pointer;min-height:56px}.arc-tiles-grid .artist-option-btn:hover,.arc-tiles-grid .movie-option-btn:hover,.arc-tiles-grid .artist-option-btn:focus-visible,.arc-tiles-grid .movie-option-btn:focus-visible{border-color:#00f5ff8c;outline:none}.arc-tiles-grid .artist-option-btn:active,.arc-tiles-grid .movie-option-btn:active{transform:translateY(1px);box-shadow:0 2px #0000004d}.arc-tiles-grid .artist-option-btn.is-loading{background:linear-gradient(135deg,#00f5ff33,#00f5ff0d);border-color:var(--color-accent-secondary);color:var(--color-accent-secondary);animation:arc-tile-pulse 1s ease-in-out infinite}@keyframes arc-tile-pulse{0%,to{opacity:1}50%{opacity:.7}}.arc-tiles-grid .artist-option-btn.is-winner,.arc-tiles-grid .artist-option-btn.is-correct,.arc-tiles-grid .movie-option-btn.is-winner,.arc-tiles-grid .movie-option-btn.is-correct{background:linear-gradient(135deg,#39ff1440,#39ff1414);border-color:var(--color-success-neon);color:var(--color-success-neon);box-shadow:0 0 20px #39ff1480,0 4px #0000004d}.arc-tiles-grid .artist-option-btn.is-wrong,.arc-tiles-grid .artist-option-btn.is-wrong.is-selected,.arc-tiles-grid .movie-option-btn.is-wrong{opacity:.5;border-style:dashed}.arc-tiles-grid .artist-option-btn.is-disabled,.arc-tiles-grid .movie-option-btn.is-disabled{opacity:.6;cursor:not-allowed;box-shadow:none}@media(prefers-reduced-motion:reduce){.arc-tiles-grid .artist-option-btn.is-loading{animation:none}}.bonus-filler{padding:var(--space-md);margin:0 var(--space-md) var(--space-md);background:#ffffff05;border:1px dashed rgba(255,255,255,.1);border-radius:var(--radius-lg);text-align:center;font-family:var(--font-body);font-size:12px;color:var(--color-text-dim);font-style:italic;display:flex;align-items:center;justify-content:center;gap:6px}.bonus-filler.hidden{display:none}.arc-actions{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:0 var(--space-md);margin-bottom:var(--space-md)}.bet-arc{width:72px;height:60px;background:transparent;border:2px solid rgba(255,45,106,.5);color:var(--color-accent-primary);border-radius:var(--radius-lg);font-family:var(--font-display);font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;box-shadow:0 4px #0000004d;cursor:pointer;transition:all var(--transition-fast)}.bet-arc .bet-icon{font-size:22px;line-height:1}.bet-arc .bet-label{font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.bet-arc.is-active{background:#ff2d6a26;box-shadow:var(--glow-primary),0 4px #0000004d}.bet-arc:active{transform:translateY(2px);box-shadow:0 2px #0000004d}.bet-arc:disabled{opacity:.55;cursor:not-allowed}.submit-arc{background:linear-gradient(180deg,#ff4d82,var(--color-accent-primary));border:0;color:var(--color-text-white);border-radius:var(--radius-lg);padding:16px 20px;font-family:var(--font-display);font-weight:900;font-size:17px;letter-spacing:.08em;text-transform:uppercase;box-shadow:var(--glow-primary),0 6px #b4143c99;cursor:pointer;transition:transform var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:8px}.submit-arc:active{transform:translateY(2px);box-shadow:var(--glow-primary),0 4px #b4143c99}.submit-arc:disabled{background:#ffffff0f;color:var(--color-text-neon-muted);box-shadow:0 4px #0000004d;cursor:not-allowed;text-shadow:none}.submit-arc.submit-arc--waiting{background:#ffffff0d;color:var(--color-text-neon-muted);box-shadow:0 4px #0000004d;text-shadow:none}.submit-arc .waiting-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-accent-secondary);box-shadow:0 0 8px #00f5ff80;animation:arc-wait-pulse 1.2s ease-in-out infinite}@keyframes arc-wait-pulse{0%,to{opacity:.4}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.submit-arc .waiting-dot{animation:none}}.steal-btn-full{margin:0 var(--space-md) var(--space-md);background:#00f5ff14;border:2px solid var(--color-accent-secondary);color:var(--color-accent-secondary);border-radius:var(--radius-lg);padding:14px;font-family:var(--font-display);font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase;box-shadow:0 0 16px #00f5ff4d,0 4px #0000004d;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:transform var(--transition-fast)}.steal-btn-full.hidden{display:none}.steal-btn-full:active{transform:translateY(2px);box-shadow:0 0 16px #00f5ff4d,0 2px #0000004d}.steal-btn-full .steal-btn-icon{font-size:18px}.powerup-btn-row{display:flex;gap:var(--space-md);margin:0 var(--space-md) var(--space-md)}.powerup-btn-row .steal-btn-full,.powerup-btn-row .sabotage-btn-full{flex:1;margin:0}.sabotage-btn-full{background:#ff2d5514;border:2px solid var(--color-danger, #ff2d55);color:var(--color-danger, #ff2d55);border-radius:var(--radius-lg);padding:14px;font-family:var(--font-display);font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase;box-shadow:0 0 16px #ff2d554d,0 4px #0000004d;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:transform var(--transition-fast)}.sabotage-btn-full.hidden{display:none}.sabotage-btn-full:active{transform:translateY(2px);box-shadow:0 0 16px #ff2d554d,0 2px #0000004d}.sabotage-btn-full .sabotage-btn-icon{font-size:18px}.arc-chip--sabotage{color:var(--color-danger, #ff2d55);background:#ff2d5514;border:1px solid rgba(255,45,85,.4)}.player-badge--sabotage{top:-2px;left:2px;background:linear-gradient(135deg,#ff2d55,#c1121f)}.sabotage-confirmation{background:linear-gradient(135deg,#ff2d55,#c1121f);box-shadow:0 4px 20px #ff2d5580}.sabotaged-banner{background:linear-gradient(135deg,#ff2d55,#7c1020);box-shadow:0 4px 20px #ff2d5599}.bet-arc--forced{opacity:.85;cursor:not-allowed}.submit-arc--frozen{opacity:.6;filter:grayscale(.4)}.arc-submission-strip{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px var(--space-md) 12px;font-family:var(--font-body);font-size:11px;color:var(--color-text-dim);font-weight:600}.arc-submission-dots{display:flex;align-items:center;gap:6px}.arc-submission-dots .player-indicator{width:12px;height:12px;min-width:12px;padding:0;background:#ffffff2e;border:0;border-radius:50%;font-size:0;color:transparent;transition:all var(--transition-normal);flex:0 0 auto;overflow:hidden;display:block}.arc-submission-dots .player-indicator>*{display:none!important}.arc-submission-dots .player-indicator.is-submitted{background:var(--color-success-neon);box-shadow:0 0 6px #39ff1480}.arc-submission-dots .player-indicator.is-current-player,.arc-submission-dots .player-indicator.is-current{background:var(--color-accent-secondary);box-shadow:0 0 6px #00f5ff80}.arc-submission-dots .player-indicator.is-current-player.is-submitted{background:var(--color-success-neon);box-shadow:0 0 8px #39ff14b3}.arc-submission-count{color:var(--color-text-dim);font-weight:600}.submitted-confirmation.hidden{display:none}.closest-wins-splash{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#0a0a12b3;backdrop-filter:blur(4px);font-family:var(--font-display);font-weight:900;font-size:40px;color:var(--color-success-neon);letter-spacing:.08em;gap:12px;pointer-events:none;text-shadow:0 0 32px rgba(57,255,20,.55);animation:closest-wins-splash-in 1.6s ease-out both}.closest-wins-splash.hidden{display:none}@keyframes closest-wins-splash-in{0%{opacity:0;transform:scale(.8)}20%{opacity:1;transform:scale(1)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.05)}}#round-indicator.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}body:has(#game-view:not(.hidden)) .player-header{display:none}body:has(#game-view:not(.hidden)) .player-container{padding-top:max(var(--space-xs),env(safe-area-inset-top))}body:has(#game-view:not(.hidden)) .arc-header{margin-bottom:var(--space-sm)}body:has(#game-view:not(.hidden)) .year-xxl{font-size:clamp(72px,26vw,104px);margin:2px 0 var(--space-sm)}body:has(#game-view:not(.hidden)) .slider-arcade-wrap{margin-bottom:var(--space-sm)}body:has(#game-view:not(.hidden)) .arc-tiles{padding:10px 12px;margin:0 var(--space-md) var(--space-sm)}body:has(#game-view:not(.hidden)) .arc-tiles-header{margin-bottom:6px}body:has(#game-view:not(.hidden)) .arc-tiles-grid{gap:8px}body:has(#game-view:not(.hidden)) .arc-tiles-grid .artist-option-btn,body:has(#game-view:not(.hidden)) .arc-tiles-grid .movie-option-btn{min-height:52px;padding:12px 10px}body:has(#game-view:not(.hidden)) .arc-actions{margin-bottom:var(--space-sm)}body:has(#game-view:not(.hidden)) .bonus-filler{padding:var(--space-sm) var(--space-md);margin:0 var(--space-md) var(--space-sm)}body.theme-dark .podium{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"hero hero" "second third";gap:var(--space-md);align-items:stretch;justify-content:stretch;margin-bottom:var(--space-xl);padding:0 var(--space-xs)}body.theme-dark .podium-place.podium-1{grid-area:hero;width:100%;padding:var(--space-lg) var(--space-md) var(--space-md);background:linear-gradient(135deg,#ff2d6a24,#00f5ff0f);border:1px solid rgba(255,45,106,.35);border-radius:var(--radius-xl);box-shadow:0 0 40px #ff2d6a2e;text-align:center;justify-content:center}body.theme-dark .podium-place.podium-1 .podium-medal{font-size:38px;margin-bottom:var(--space-xs);filter:drop-shadow(0 0 16px rgba(255,45,106,.6))}body.theme-dark .podium-place.podium-1 .podium-name{font-family:Outfit,sans-serif;font-weight:900;line-height:.92;letter-spacing:-.04em;margin:0 0 var(--space-sm);max-width:100%;white-space:normal;word-break:break-word;overflow:visible;text-overflow:clip;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(255,45,106,.3));font-size:clamp(40px,14vw,64px)}body.theme-dark .podium-place.podium-1 .podium-score{font-family:Inter,sans-serif;font-weight:700;font-size:var(--font-size-3xl);color:var(--color-accent-secondary);font-variant-numeric:tabular-nums;text-shadow:0 0 14px rgba(0,245,255,.5);margin-bottom:0}body.theme-dark .podium-place.podium-1 .podium-stand{display:none}body.theme-dark .podium-place.podium-2,body.theme-dark .podium-place.podium-3{width:100%;min-width:0;padding:var(--space-md) var(--space-sm);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto;align-items:center;gap:var(--space-sm);text-align:left}body.theme-dark .podium-place.podium-2{grid-area:second;border-color:#00f5ff47;box-shadow:0 0 18px #00f5ff1a}body.theme-dark .podium-place.podium-3{grid-area:third}body.theme-dark .podium-place.podium-2 .podium-medal,body.theme-dark .podium-place.podium-3 .podium-medal{font-size:22px;margin:0;line-height:1}body.theme-dark .podium-place.podium-2 .podium-name,body.theme-dark .podium-place.podium-3 .podium-name{font-family:Outfit,sans-serif;font-weight:800;font-size:var(--font-size-lg);color:var(--color-text-white);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.theme-dark .podium-place.podium-2 .podium-score,body.theme-dark .podium-place.podium-3 .podium-score{font-family:Outfit,sans-serif;font-weight:900;font-size:var(--font-size-lg);color:var(--color-accent-secondary);font-variant-numeric:tabular-nums;text-shadow:0 0 8px rgba(0,245,255,.3);margin:0;white-space:nowrap}body.theme-dark .podium-place.podium-2 .podium-stand,body.theme-dark .podium-place.podium-3 .podium-stand{display:none}body.theme-dark .podium-place.podium-2.hidden~.podium-place.podium-3:not(.hidden){grid-area:second}body.theme-dark .your-result{background:linear-gradient(135deg,#ff2d6a1a,#00f5ff0a);border:1px solid rgba(255,45,106,.28);box-shadow:0 0 28px #ff2d6a1f}body.theme-dark .your-result-rank{font-family:Outfit,sans-serif;font-weight:900;font-size:var(--font-size-4xl);letter-spacing:-.03em}body.theme-dark .your-result-stats .stat-value{font-family:Outfit,sans-serif;font-weight:800}.plh-root{display:flex;flex-direction:column;min-height:100%;height:100%;background:var(--color-bg-primary);color:var(--color-text-white);font-family:var(--font-body);font-variant-numeric:tabular-nums;position:relative;isolation:isolate;overflow:hidden}.plh-root:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 70% 25% at 50% 0%,rgba(255,45,106,.12),transparent 60%),radial-gradient(ellipse 60% 30% at 30% 60%,rgba(0,245,255,.06),transparent 60%)}.plh-header{position:sticky;top:0;z-index:5;background:#0a0a12d1;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:8px 14px 6px;border-bottom:1px solid rgba(255,255,255,.04)}.plh-titlebar{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.plh-wordmark{font-family:var(--font-display);font-weight:900;font-size:20px;letter-spacing:-.02em;line-height:1;background:linear-gradient(90deg,var(--color-accent-primary) 0%,var(--color-accent-secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.plh-search{position:relative;margin-bottom:10px}.plh-search input{width:100%;height:40px;padding:0 38px 0 40px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:10px;color:var(--color-text-white);font-family:var(--font-body);font-weight:500;font-size:13px;outline:none;transition:border-color .15s,box-shadow .15s}.plh-search input:focus{border-color:var(--color-accent-secondary);box-shadow:0 0 0 3px #00f5ff26}.plh-search input::placeholder{color:var(--color-text-neon-muted);opacity:.6}.plh-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--color-accent-secondary);opacity:.75}.plh-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;background:var(--color-dark-surface-hover);border:none;color:var(--color-text-neon-muted);font-family:var(--font-display);font-weight:900;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center}.plh-segmented{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;padding:4px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:10px;margin-bottom:10px}.plh-seg{background:transparent;border:none;padding:8px 4px;cursor:pointer;border-radius:7px;display:flex;flex-direction:column;gap:1px;align-items:center;line-height:1.1;font-family:var(--font-body);font-weight:700;font-size:12px;color:var(--color-text-neon-muted);letter-spacing:.04em;transition:background .15s,color .15s}.plh-seg .plh-seg-num{font-family:var(--font-display);font-weight:900;font-size:15px;color:var(--color-text-neon-muted)}.plh-seg .plh-seg-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase}.plh-seg.active{background:linear-gradient(135deg,#ff2d6a38,#00f5ff24);color:var(--color-text-white);box-shadow:inset 0 0 0 1px #ff2d6a59,0 0 18px #ff2d6a2e}.plh-seg.active .plh-seg-num{color:var(--color-accent-primary)}.plh-seg-community.active{background:linear-gradient(135deg,#9d4edd40,#ff2d6a26);box-shadow:inset 0 0 0 1px #9d4edd73,0 0 18px #9d4edd38}.plh-seg-community.active .plh-seg-num{color:#c89af5}.plh-seg-mine.active{background:linear-gradient(135deg,#00f5ff2e,#ff2d6a1a);box-shadow:inset 0 0 0 1px #00f5ff66,0 0 18px #00f5ff2e}.plh-seg-mine.active .plh-seg-num{color:var(--color-accent-secondary)}.plh-chips{display:flex;gap:7px;overflow-x:auto;padding:0 0 6px;scrollbar-width:none}.plh-chips::-webkit-scrollbar{display:none}.plh-chip{flex-shrink:0;padding:7px 13px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:999px;font-family:var(--font-body);font-weight:600;font-size:12px;color:var(--color-text-neon-muted);white-space:nowrap;cursor:pointer;letter-spacing:.01em;transition:background .15s,color .15s,border-color .15s}.plh-chip.active{background:var(--color-accent-primary);color:var(--color-text-white);border-color:transparent;font-weight:700;box-shadow:0 0 16px #ff2d6a73}.plh-list-view,.plh-mix-view{flex:1 1 0;min-height:0;display:flex;flex-direction:column}.plh-body{position:relative;z-index:1;flex:1;overflow-y:auto;padding:14px 0 110px}.plh-loading{padding:40px 20px;text-align:center;font-family:var(--font-body);font-weight:500;font-size:13px;color:var(--color-text-neon-muted)}.plh-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 18px 12px;margin:4px 0 8px;border-bottom:1px solid rgba(0,245,255,.12)}.plh-section-head-title{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:900;font-size:22px;letter-spacing:-.02em;color:var(--color-text-white);line-height:1}.plh-section-head-emoji{font-size:22px;filter:drop-shadow(0 0 12px rgba(0,245,255,.3))}.plh-section-head-meta{font-family:var(--font-body);font-weight:600;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--color-text-neon-muted);flex-shrink:0}.plh-shelf{margin-bottom:22px}.plh-shelf-head{display:flex;align-items:baseline;justify-content:space-between;padding:0 18px 10px}.plh-shelf-title{font-family:var(--font-display);font-weight:800;font-size:18px;letter-spacing:-.01em;color:var(--color-text-white);display:flex;align-items:center;gap:6px}.plh-shelf-see{font-family:var(--font-body);font-weight:600;font-size:12px;color:var(--color-accent-secondary);letter-spacing:.02em;cursor:pointer;background:transparent;border:none;padding:0}.plh-local-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--color-success-neon);box-shadow:0 0 8px var(--color-success-neon);margin-right:8px;vertical-align:middle}.plh-local-badge{font-family:var(--font-body);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-success-neon);padding:2px 7px;background:#39ff141f;border:1px solid rgba(57,255,20,.4);border-radius:999px;margin-left:8px;vertical-align:middle}.plh-cards{display:flex;gap:12px;overflow-x:auto;padding:0 18px 4px;scrollbar-width:none}.plh-cards::-webkit-scrollbar{display:none}.plh-card{flex-shrink:0;width:160px;cursor:pointer;position:relative;background:transparent;border:none;padding:0;text-align:left;color:inherit;font:inherit}.plh-card .plh-cover{width:160px;height:160px;border-radius:12px;position:relative;overflow:hidden;box-shadow:0 10px 24px #00000080;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-end;padding:10px}.plh-card .plh-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.45) 100%);pointer-events:none;z-index:1}.plh-cover-inner{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;height:100%}.plh-cover-glyph{font-family:var(--font-display);font-weight:900;font-size:42px;line-height:.9;letter-spacing:-.04em;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.4);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plh-cover-glyph-long{font-size:26px;letter-spacing:-.02em}.plh-cover-sub{font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:#ffffffeb;margin-top:4px;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:break-word;word-break:break-word;max-width:100%}.plh-cover-badge{position:absolute;top:8px;right:8px;padding:3px 8px;background:#00000080;backdrop-filter:blur(6px);border-radius:999px;font-family:var(--font-body);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-white);z-index:3}.plh-cover-badge-purple{background:#9d4edd80}.plh-card-meta{padding:8px 2px 0}.plh-card-name{font-family:var(--font-body);font-weight:700;font-size:13px;line-height:1.25;color:var(--color-text-white);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plh-card-sub{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px;letter-spacing:.02em}.plh-card-sub b{color:var(--color-accent-secondary);font-weight:700}.plh-card-local{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-success-neon);margin-top:2px;letter-spacing:.02em}.plh-card-local b{color:var(--color-success-neon);font-weight:800}.plh-card-local-when{color:var(--color-text-neon-muted)}.plh-card-local-when b{color:var(--color-accent-secondary)}.plh-pill{position:absolute;top:8px;left:8px;z-index:4;display:inline-flex;align-items:center;gap:4px;padding:5px 10px 5px 8px;border-radius:999px;background:#ff2d6aeb;color:var(--color-text-white);font-family:var(--font-display);font-weight:800;font-size:10px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border:1px solid rgba(255,255,255,.12);box-shadow:0 4px 12px #0006,0 0 14px #ff2d6a59;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:background .15s,color .15s,box-shadow .15s,filter .15s}.plh-pill:hover{filter:brightness(1.1)}.plh-pill-label{line-height:1}.plh-card-selected .plh-pill{background:var(--color-success-neon);color:var(--color-bg-primary);border-color:transparent;box-shadow:0 4px 12px #0006,0 0 18px #39ff148c}.plh-card-selected .plh-cover{box-shadow:0 0 0 3px var(--color-success-neon),0 10px 24px #00000080}.plh-check{display:none}.plh-featured .plh-card,.plh-featured .plh-card .plh-cover{width:160px}.plh-featured .plh-card .plh-cover{height:200px;padding:2px;background:linear-gradient(135deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 12px 30px #0009,0 0 24px #ff2d6a40}.plh-featured .plh-card .plh-cover:after{border-radius:10px;margin:2px;inset:2px}.plh-featured .plh-cover-inner{padding:10px}.plh-featured .plh-cover-glyph{font-size:48px}.plh-card-community .plh-cover{background:linear-gradient(135deg,#240046,#7209b7,#ff2d6a);box-shadow:0 12px 30px #0009,0 0 28px #9d4edd66}.plh-tint-pop{background:linear-gradient(135deg,#ff2d6a,#ff6b9d 60%,#ff8c42)}.plh-tint-rock{background:linear-gradient(135deg,#c1121f,#ff4d1c 60%,#ff8c42)}.plh-tint-hiphop{background:linear-gradient(135deg,#7209b7,#b5179e 60%,#ff2d6a)}.plh-tint-jazz{background:linear-gradient(135deg,#b08968,#e6a855 60%,#ffc94a)}.plh-tint-metal{background:linear-gradient(135deg,#1a0000,#6a040f 60%,#c1121f)}.plh-tint-eu{background:linear-gradient(135deg,#00b4d8,#0077b6 60%,#03045e)}.plh-tint-latin{background:linear-gradient(135deg,#f60,#ffb703 60%,#fdd85d)}.plh-tint-schlager{background:linear-gradient(135deg,#ff8fab,#ffc2d1 60%,#fae0e4)}.plh-tint-schlager .plh-cover-glyph,.plh-tint-schlager .plh-cover-sub{color:#2a0a1a;text-shadow:none}.plh-tint-soul{background:linear-gradient(135deg,#6a0572,#ab4287 60%,#fcbf49)}.plh-tint-purple{background:linear-gradient(135deg,#240046,#7209b7,#ff2d6a)}.plh-banner{margin:0 18px 18px;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#9d4edd2e,#ff2d6a1a);border:1px solid rgba(157,78,221,.35);display:flex;align-items:center;gap:12px;cursor:pointer}.plh-banner-icon{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#7209b7,var(--color-accent-primary));display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;box-shadow:0 0 14px #9d4edd80}.plh-banner-body{flex:1;min-width:0}.plh-banner-title{font-family:var(--font-display);font-weight:800;font-size:14px;color:var(--color-text-white);line-height:1.2}.plh-banner-sub{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px;line-height:1.35}.plh-banner-arrow{font-family:var(--font-display);font-weight:900;font-size:22px;color:#c89af5}.plh-mine-empty{padding:30px 24px;text-align:center}.plh-empty-emoji{font-size:64px;margin-bottom:12px;filter:drop-shadow(0 0 24px rgba(0,245,255,.3))}.plh-mine-title{font-family:var(--font-display);font-weight:900;font-size:26px;color:var(--color-text-white);margin:0 0 8px;letter-spacing:-.01em;line-height:1.1}.plh-mine-body{font-family:var(--font-body);font-weight:500;font-size:14px;color:var(--color-text-neon-muted);margin:0 0 20px;line-height:1.5}.plh-mine-body b{color:var(--color-text-white);font-weight:700}.plh-request-cta{margin:0 0 16px;padding:20px;background:linear-gradient(135deg,#00f5ff1a,#ff2d6a0f);border:1px solid rgba(0,245,255,.35);border-radius:16px;text-align:left}.plh-request-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.plh-request-icon{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--color-accent-secondary),#0077b6);display:flex;align-items:center;justify-content:center;color:var(--color-bg-primary);font-family:var(--font-display);font-weight:900;font-size:22px;box-shadow:0 0 16px #00f5ff80}.plh-request-titles{flex:1;min-width:0}.plh-request-t1{font-family:var(--font-display);font-weight:800;font-size:16px;color:var(--color-text-white);line-height:1.2}.plh-request-t2{font-family:var(--font-body);font-weight:500;font-size:12px;color:var(--color-text-neon-muted);margin-top:2px;line-height:1.35}.plh-meanwhile{margin:12px 0 0;padding:14px 16px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:12px;display:flex;align-items:center;gap:12px;cursor:pointer;text-align:left}.plh-meanwhile-icon{color:var(--color-accent-secondary);font-family:var(--font-display);font-weight:900;font-size:18px;flex-shrink:0}.plh-meanwhile-body{flex:1;min-width:0}.plh-meanwhile-t1{font-family:var(--font-display);font-weight:800;font-size:13px;color:var(--color-text-white);line-height:1.2}.plh-meanwhile-t2{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px;line-height:1.35}.plh-meanwhile-arrow{color:var(--color-text-neon-muted);font-family:var(--font-display);font-weight:900;font-size:20px}.plh-mine-head{padding:14px 18px 6px;display:flex;align-items:baseline;justify-content:space-between}.plh-mine-count{font-family:var(--font-display);font-weight:800;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-neon-muted)}.plh-mine-count b{color:var(--color-text-white);font-weight:900}.plh-new-request{margin:10px 18px 18px;display:flex;align-items:center;gap:12px;padding:14px;background:linear-gradient(90deg,#00f5ff1a,#ff2d6a14);border:1px dashed rgba(0,245,255,.4);border-radius:12px;cursor:pointer}.plh-new-plus{width:36px;height:36px;border-radius:10px;background:var(--color-accent-secondary);color:var(--color-bg-primary);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:20px;box-shadow:0 0 16px var(--color-accent-secondary);flex-shrink:0}.plh-new-t1{font-family:var(--font-display);font-weight:800;font-size:14px;color:var(--color-text-white);line-height:1.2}.plh-new-t2{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px}.plh-req-list{padding:0 18px;display:flex;flex-direction:column;gap:10px}.plh-req-card{padding:14px 14px 14px 16px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:14px;display:flex;flex-direction:column;gap:10px}.plh-req-card.plh-req-done{border-color:#39ff1459;background:linear-gradient(90deg,rgba(57,255,20,.06),transparent 75%)}.plh-req-card.plh-req-building{border-color:#00f5ff66;background:linear-gradient(90deg,rgba(0,245,255,.06),transparent 75%)}.plh-req-card.plh-req-declined{border-color:#ff2d6a59}.plh-req-row1{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.plh-req-body{min-width:0;flex:1}.plh-req-name{font-family:var(--font-display);font-weight:800;font-size:15px;color:var(--color-text-white);line-height:1.2;letter-spacing:-.01em}.plh-req-desc{font-family:var(--font-body);font-weight:500;font-size:11.5px;color:var(--color-text-neon-muted);margin-top:3px;line-height:1.45;word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plh-req-meta{font-family:var(--font-body);font-weight:600;font-size:10px;color:var(--color-text-light);letter-spacing:.06em;text-transform:uppercase;margin-top:4px}.plh-req-meta b{color:var(--color-text-neon-muted);font-weight:700}.plh-req-link{color:var(--color-accent-secondary);font-weight:700;text-transform:none;letter-spacing:.02em;text-decoration:none}.plh-status-badge{flex-shrink:0;padding:4px 10px;border-radius:999px;font-family:var(--font-display);font-weight:800;font-size:10px;letter-spacing:.14em;text-transform:uppercase;display:flex;align-items:center;gap:5px}.plh-sb-dot{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}.plh-status-badge.pending{background:#f59e0b1f;border:1px solid rgba(245,158,11,.45);color:var(--color-warning)}.plh-status-badge.building{background:#00f5ff1f;border:1px solid rgba(0,245,255,.45);color:var(--color-accent-secondary)}.plh-status-badge.done{background:#39ff141f;border:1px solid rgba(57,255,20,.4);color:var(--color-success-neon)}.plh-status-badge.declined{background:#ff2d6a1f;border:1px solid rgba(255,45,106,.4);color:#ff7ca7}.plh-progress{display:flex;gap:3px;align-items:center}.plh-seg-pill{flex:1;height:3px;border-radius:2px;background:var(--color-border-neon)}.plh-seg-pill.filled-pending{background:var(--color-warning);box-shadow:0 0 6px var(--color-warning)}.plh-seg-pill.filled-building{background:var(--color-accent-secondary);box-shadow:0 0 6px var(--color-accent-secondary)}.plh-seg-pill.filled-done{background:var(--color-success-neon);box-shadow:0 0 6px var(--color-success-neon)}.plh-seg-pill.filled-declined{background:var(--color-accent-primary);box-shadow:0 0 6px var(--color-accent-primary)}.plh-steps-row{display:flex;justify-content:space-between;font-family:var(--font-body);font-weight:600;font-size:9px;color:var(--color-text-light);letter-spacing:.1em;text-transform:uppercase;margin-top:-4px}.plh-steps-row span.active{color:var(--color-text-white);font-weight:800}.plh-empty{padding:30px 28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.plh-empty-icon{width:96px;height:96px;border-radius:26px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);font-size:42px;position:relative}.plh-empty-icon-search{background:radial-gradient(circle,rgba(0,245,255,.12),var(--color-bg-surface) 60%)}.plh-empty-title{font-family:var(--font-display);font-weight:900;font-size:24px;color:var(--color-text-white);margin:0;letter-spacing:-.01em;line-height:1.15}.plh-empty-body{font-family:var(--font-body);font-weight:500;font-size:13px;color:var(--color-text-neon-muted);margin:0;line-height:1.55;max-width:280px}.plh-cyan{color:var(--color-accent-secondary)}.plh-action-stack{display:flex;flex-direction:column;gap:8px;width:100%;max-width:280px;margin-top:12px}.plh-btn{padding:13px 16px;border-radius:12px;font-weight:800;font-size:13px;letter-spacing:.04em;border:1px solid var(--color-border-neon);background:var(--color-bg-surface);color:var(--color-text-white);cursor:pointer;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px;text-transform:uppercase;transition:all .15s;font-family:var(--font-display)}.plh-btn:hover{border-color:var(--color-accent-secondary)}.plh-btn-primary{background:linear-gradient(90deg,var(--color-accent-primary),#ff5fa4);border-color:transparent;color:var(--color-text-white);box-shadow:0 0 24px #ff2d6a73}.plh-btn-primary:hover{border-color:transparent;filter:brightness(1.1)}.plh-btn-cyan{background:linear-gradient(90deg,var(--color-accent-secondary),#0077b6);color:var(--color-bg-primary);border-color:transparent;box-shadow:0 0 22px #00f5ff73}.plh-btn-cyan:hover{border-color:transparent;filter:brightness(1.1)}.plh-btn-neon{background:linear-gradient(90deg,var(--color-success-neon),#7bf1ff);color:var(--color-bg-primary);border-color:transparent;box-shadow:0 0 24px #39ff1480}.plh-btn-ghost{background:transparent;color:var(--color-text-neon-muted)}.plh-sheet-host{position:fixed;inset:0;z-index:50;pointer-events:none;display:none}.plh-sheet-host.open{display:block;pointer-events:auto}.plh-scrim{position:absolute;inset:0;background:#05050ab8;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.plh-sheet{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,#14141e 0%,var(--color-bg-primary) 100%);border-top-left-radius:28px;border-top-right-radius:28px;box-shadow:0 -12px 40px #0009;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;border-top:1px solid rgba(255,45,106,.25);animation:plh-sheet-in .25s ease-out}.plh-sheet-community{border-top-color:#9d4edd66}.plh-sheet:before{content:"";position:absolute;top:10px;left:50%;transform:translate(-50%);width:48px;height:4px;border-radius:999px;background:#fff3}@keyframes plh-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}.plh-sheet-close{position:absolute;top:18px;right:18px;width:32px;height:32px;border-radius:50%;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);color:var(--color-text-neon-muted);cursor:pointer;font-family:var(--font-display);font-weight:900;font-size:16px;line-height:1;z-index:5;display:flex;align-items:center;justify-content:center}.plh-sheet-head{padding:28px 20px 0;display:flex;gap:14px;align-items:flex-start;flex-shrink:0}.plh-sheet-cover{width:100px;height:100px;border-radius:14px;position:relative;overflow:hidden;flex-shrink:0;display:flex;flex-direction:column;justify-content:flex-end;padding:10px;box-shadow:0 12px 30px #00000080}.plh-sheet-cover-glyph{font-family:var(--font-display);font-weight:900;font-size:36px;line-height:.9;letter-spacing:-.04em;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.4)}.plh-sheet-cover-sub{font-family:var(--font-display);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#ffffffe6;margin-top:2px}.plh-sheet-info{flex:1;min-width:0}.plh-sheet-title{font-family:var(--font-display);font-weight:900;font-size:22px;line-height:1.1;letter-spacing:-.02em;color:var(--color-text-white);margin:0}.plh-sheet-author{font-family:var(--font-body);font-weight:500;font-size:12px;color:var(--color-text-neon-muted);margin-top:4px}.plh-sheet-author b{color:var(--color-accent-secondary);font-weight:700}.plh-sheet-stats{display:flex;gap:0;padding:18px 20px 16px;border-bottom:1px solid rgba(255,255,255,.06);margin-top:18px;flex-shrink:0}.plh-stat{flex:1;text-align:center;position:relative}.plh-stat+.plh-stat:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:1px;background:var(--color-border-neon)}.plh-stat-val{font-family:var(--font-display);font-weight:900;font-size:22px;color:var(--color-text-white);letter-spacing:-.02em;line-height:1}.plh-stat-val-cyan{color:var(--color-accent-secondary)}.plh-stat-val-pink{color:var(--color-accent-primary)}.plh-stat-lbl{font-family:var(--font-body);font-weight:700;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--color-text-light);margin-top:4px}.plh-sheet-scroll{flex:1;overflow-y:auto;padding:16px 20px 20px}.plh-sheet-sec-title{font-family:var(--font-display);font-weight:800;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--color-text-neon-muted);margin:0 0 10px}.plh-sheet-desc{font-family:var(--font-body);font-weight:500;font-size:13px;color:var(--color-text-neon-muted);line-height:1.55;margin-bottom:16px;padding:14px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:12px}.plh-sheet-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.plh-sheet-tag{padding:5px 10px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:6px;font-family:var(--font-body);font-weight:600;font-size:11px;color:var(--color-text-white);letter-spacing:.02em}.plh-sheet-providers{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.plh-sheet-provider{padding:6px 10px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:8px;font-family:var(--font-body);font-weight:600;font-size:11px;color:var(--color-text-neon-muted)}.plh-sheet-provider b{color:var(--color-accent-secondary);font-weight:800}.plh-sheet-foot{padding:14px 20px calc(14px + env(safe-area-inset-bottom,0px)) 20px;background:#0a0a12f2;border-top:1px solid var(--color-border-neon);display:flex;gap:10px;align-items:center;flex-shrink:0}.plh-sheet-foot .plh-btn{flex:1}.plh-mix-cta:empty{display:none}.plh-cta-bar{position:absolute;left:12px;right:12px;bottom:12px;display:flex;gap:8px;padding:10px;background:#0a0a12e0;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--color-border-neon);border-radius:16px;box-shadow:0 12px 40px #0009;align-items:center;z-index:10}.plh-cta-fab{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--color-accent-secondary) 0%,#0ea5c4 100%);border:none;color:var(--color-bg-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 0 18px #00f5ff73,inset 0 1px #ffffff40;flex-shrink:0;transition:filter .15s}.plh-cta-fab:hover{filter:brightness(1.1)}.plh-cta-fab svg{stroke:#fff;fill:none}.plh-cta-back{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;padding:0 12px;height:44px;border-radius:12px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);color:var(--color-text-white);font-family:var(--font-display);font-weight:700;font-size:13px;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:border-color .15s,background .15s}.plh-cta-back:hover{border-color:var(--color-accent-secondary)}.plh-cta-back svg{opacity:.85}.plh-cta-count{font-family:var(--font-display);font-weight:900;font-size:14px;color:var(--color-success-neon);padding:0 8px;letter-spacing:.04em;text-shadow:0 0 10px rgba(57,255,20,.5)}.plh-cta-start{flex:1;background:linear-gradient(90deg,var(--color-accent-primary),#ff5fa4);border:none;border-radius:12px;padding:12px;font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--color-text-white);cursor:pointer;letter-spacing:.02em;box-shadow:0 0 24px #ff2d6a80;display:flex;align-items:center;justify-content:center;gap:8px}.plh-cta-start-count{display:none}.plh-cta-start-label{font-family:var(--font-display);font-weight:700}.plh-cta-start-arrow{opacity:.9;flex-shrink:0}.plh-cta-count-empty{opacity:.5}.plh-cta-count-btn{background:transparent;border:1px solid rgba(57,255,20,.35);border-radius:999px;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease}.plh-cta-count-btn:hover,.plh-cta-count-btn:focus-visible{background:#39ff141f;border-color:#39ff1499;outline:none}.plh-cta-count-btn:active{transform:scale(.96)}.plh-cta-start-disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.plh-sheet-selected{border-top-color:#39ff1459}.plh-selected-head{padding:28px 20px 12px;flex-shrink:0}.plh-selected-title{font-family:var(--font-display);font-weight:900;font-size:20px;color:var(--color-text-white);margin:0 0 4px;letter-spacing:.01em}.plh-selected-subtitle{font-size:13px;color:var(--color-text-neon-muted);letter-spacing:.01em}.plh-selected-scroll{overflow-y:auto;padding:4px 16px 24px;flex:1;min-height:0}.plh-selected-row{display:flex;align-items:center;gap:12px;padding:10px 8px;border-bottom:1px solid rgba(255,255,255,.06)}.plh-selected-row:last-child{border-bottom:none}.plh-selected-thumb{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#ffffff0f}.plh-selected-glyph{font-size:20px}.plh-selected-meta{flex:1;min-width:0}.plh-selected-name{font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--color-text-white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plh-selected-sub{font-size:12px;color:var(--color-text-neon-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.plh-selected-sub b{color:var(--color-text-white);font-weight:700}.plh-selected-remove{height:32px;padding:0 12px;border-radius:16px;background:var(--color-bg-surface);border:1px solid rgba(255,45,106,.35);color:#ff5fa4;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;flex-shrink:0;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;transition:background .15s ease,color .15s ease,border-color .15s ease,transform .1s ease}.plh-selected-remove:hover,.plh-selected-remove:focus-visible{background:#ff2d6a2e;border-color:#ff2d6aa6;color:#ff7ab3;outline:none}.plh-selected-remove:active{transform:scale(.94)}.plh-selected-remove-label{line-height:1}.plh-selected-empty{text-align:center;padding:36px 20px;color:var(--color-text-neon-muted)}.plh-selected-empty-icon{font-size:36px;margin-bottom:8px}.plh-selected-empty-title{font-family:var(--font-display);font-weight:700;font-size:14px}@media(min-width:720px){.plh-cards{padding:0 24px 4px}.plh-header{padding:16px 24px 12px}.plh-shelf-head{padding:0 24px 10px}.plh-banner,.plh-new-request{margin-left:24px;margin-right:24px}.plh-req-list{padding:0 24px}.plh-mine-head{padding:14px 24px 6px}}.plg-host{position:fixed;inset:0;z-index:9000;display:flex;align-items:flex-start;justify-content:center;overflow:hidden}.plg-scrim{position:absolute;inset:0;background:#000000b8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.plg-modal{position:relative;z-index:1;margin:32px 16px;max-width:880px;width:100%;background:#0f1116;color:#f1f3f7;border-radius:16px;border:1px solid rgba(255,255,255,.08);box-shadow:0 30px 60px #0009;padding:24px 24px 20px;max-height:calc(100vh - 64px);overflow-y:auto;font-family:var(--font-body, system-ui)}.plg-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;background:#ffffff0f;color:#f1f3f7;border:0;font-size:16px;cursor:pointer}.plg-close:hover{background:#ffffff1f}.plg-title{margin:0 0 4px;font-size:20px;font-family:var(--font-display, system-ui);font-weight:700;letter-spacing:.02em}.plg-sub{margin:0 0 18px;color:#d8dce5;font-size:15px;line-height:1.55}.plg-guide{margin:0 0 18px;background:#14171f;border:1px solid rgba(255,255,255,.08);border-radius:12px;overflow:hidden}.plg-guide-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;box-sizing:border-box;padding:12px 14px;background:transparent;border:0;color:#f1f3f7;font:inherit;font-size:14px;font-weight:700;letter-spacing:.01em;cursor:pointer;text-align:left}.plg-guide-toggle:hover{background:#ffffff08}.plg-guide-chevron{color:#8a92a3;font-size:13px;margin-left:12px}.plg-guide-body{padding:4px 14px 14px;border-top:1px solid rgba(255,255,255,.06)}.plg-guide-steps{list-style:none;margin:12px 0 14px;padding:0;display:flex;flex-direction:column;gap:12px}.plg-guide-step{display:flex;align-items:flex-start;gap:12px}.plg-guide-num{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:linear-gradient(180deg,#ff3a8c,#cf2e72);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.plg-guide-text{color:#d8dce5;font-size:13.5px;line-height:1.5}.plg-guide-text b{color:#f1f3f7}.plg-guide-warn{display:flex;align-items:flex-start;gap:10px;background:#ffb80014;border:1px solid rgba(255,184,0,.35);border-radius:10px;padding:10px 12px}.plg-guide-warn-icon{flex:0 0 auto;font-size:14px;line-height:1.5}.plg-guide-warn-text{color:#f0d9a8;font-size:12.5px;line-height:1.55}.plg-guide-warn-text b{color:#ffd66b}.plg-label{display:block;margin:14px 0 6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#8a92a3}.plg-input,.plg-textarea{width:100%;box-sizing:border-box;background:#181b24;color:#f1f3f7;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;outline:none}.plg-input:focus,.plg-textarea:focus{border-color:#5cc8ff}.plg-textarea{min-height:200px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:12.5px;line-height:1.45;resize:vertical}.plg-row{display:flex;gap:10px;align-items:center;margin:8px 0 0;flex-wrap:wrap}.plg-hint{color:#8a92a3;font-size:12px}.plg-btn{appearance:none;-webkit-appearance:none;cursor:pointer;border-radius:999px;padding:9px 16px;font:inherit;font-size:13px;font-weight:600;border:0;background:#ffffff14;color:#f1f3f7}.plg-btn:disabled{cursor:not-allowed;opacity:.45}.plg-btn-primary{background:linear-gradient(180deg,#ff3a8c,#cf2e72);color:#fff}.plg-btn-secondary{background:#ffffff1a}.plg-btn-ghost{background:transparent;color:#aab0bd}.plg-btn-success{background:linear-gradient(180deg,#2dd66f,#20b659);color:#04140a}.plg-btn-disabled{background:#ffffff0a;color:#5a606e}.plg-actions{display:flex;gap:10px;margin:16px 0 0;flex-wrap:wrap}.plg-results{margin-top:16px}.plg-verdict{padding:10px 12px;border-radius:10px;margin:6px 0 12px;font-weight:700;font-size:13px}.plg-verdict-ok{background:#2dd66f29;color:#2dd66f;border:1px solid rgba(45,214,111,.4)}.plg-verdict-bad{background:#ff505024;color:#ff8a8a;border:1px solid rgba(255,80,80,.4)}.plg-block{background:#14171f;border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:10px 12px;margin:8px 0}.plg-block h4{margin:0 0 6px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#aab0bd}.plg-block ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.plg-block-err{border-color:#ff505066}.plg-table-wrap{overflow-x:auto}.plg-table{width:100%;border-collapse:collapse;font-size:11px}.plg-table th,.plg-table td{padding:4px 6px;text-align:center}.plg-table th{color:#8a92a3;font-weight:600;letter-spacing:.04em;border-bottom:1px solid rgba(255,255,255,.08)}.plg-row-idx{color:#aab0bd;text-align:left;font-weight:700}.plg-cell-ok{color:#2dd66f}.plg-cell-bad{color:#ff8a8a;background:#ff50500f}.plg-row-bad{background:#ff50500a}.plg-row-details td{text-align:left;padding-left:24px}.plg-err-list{color:#ff8a8a}.plg-warn-list{color:#ffd66b}.plg-song-issue{padding:8px 0;border-top:1px solid rgba(255,255,255,.05)}.plg-song-issue:first-of-type{border-top:0;padding-top:4px}.plg-song-issue-head{font-weight:700;font-size:12px;margin:0 0 4px;color:#f1f3f7;letter-spacing:.02em}.plg-song-issue ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.plg-err-item{color:#ff8a8a}.plg-warn-item{color:#ffd66b}.plg-results-actions{margin-top:0!important;margin-bottom:6px}.plg-hint-inline{font-style:italic}.plg-error{background:#ff50501f;border:1px solid rgba(255,80,80,.4);color:#ff8a8a;border-radius:10px;padding:12px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:12px}.plg-footer{margin-top:16px;border-top:1px solid rgba(255,255,255,.06);padding-top:10px;color:#8a92a3;font-size:12px;line-height:1.5}.plg-followup:empty{display:none}.plg-banner{margin-top:12px;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.5}.plg-banner p{margin:0 0 8px}.plg-banner .plg-row{margin-top:4px;flex-wrap:wrap}.plg-banner-ok{background:#2dd66f24;border:1px solid rgba(45,214,111,.4);color:#c8f3d8}.plg-banner-info{background:#6366f124;border:1px solid rgba(99,102,241,.4);color:#d6d8ff}.ta-reveal-truth{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:8px;font-family:var(--font-display, inherit);font-size:var(--font-size-md, 1rem);margin-bottom:var(--space-sm, 8px)}.ta-truth-title{font-weight:800}.ta-truth-sep{opacity:.4}.ta-truth-artist{color:var(--color-text-neon-muted, #b3b3c2);font-family:var(--font-body, inherit);font-weight:600}.ta-reveal-own{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-lg, 12px)}.ta-verdict{text-align:center;font-family:var(--font-display, inherit);font-weight:900;font-size:var(--font-size-lg, 1.125rem);letter-spacing:.01em;padding:8px 12px;margin-bottom:4px;border-radius:var(--radius-md, 8px)}.ta-verdict--win{color:var(--color-success-neon, #39ff14);background:#39ff1424;box-shadow:inset 0 0 18px #39ff141f;text-shadow:0 0 12px rgba(57,255,20,.5)}.ta-verdict--partial{color:var(--color-accent-secondary, #00f5ff);background:#00f5ff1a}.ta-verdict--pending{color:var(--color-accent-secondary, #00f5ff);background:#00f5ff12;font-weight:700;font-style:italic}.ta-verdict--miss{color:var(--color-text-neon-muted, #b3b3c2);background:#ffffff0d}.ta-own-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.ta-own-label{color:var(--color-text-dim, #6b6b7a);font-size:var(--font-size-sm, .875rem);min-width:6em}.ta-own-guess{font-weight:600;flex:1 1 auto;word-break:break-word}.ta-own-row--none{color:var(--color-text-neon-muted, #b3b3c2);font-style:italic}.ta-pill{font-size:.72rem;font-weight:700;padding:2px 10px;border-radius:var(--radius-full, 999px);white-space:nowrap;letter-spacing:.02em}.ta-pill--exact,.ta-pill--fuzzy,.ta-pill--near-miss-accepted{background:#2ee59d29;color:#2ee59d}.ta-pill--near-miss{background:#ffb40029;color:#ffb400}.ta-pill--wrong{background:#ff004024;color:var(--color-error-neon, #ff0040)}.ta-pill--skipped{background:#ffffff14;color:var(--color-text-secondary, #b9b9c6)}.ta-voting{margin-top:var(--space-lg, 24px)}.ta-voting.hidden{display:none}.ta-voting-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:var(--space-md, 16px)}.ta-voting-header>span:not(.ta-voting-countdown){font-family:var(--font-display, inherit);font-weight:900;font-size:var(--font-size-sm, .875rem);letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-white, #fff)}.ta-voting-countdown{flex-shrink:0;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:18px;font-variant-numeric:tabular-nums;color:var(--color-accent-secondary, #00f5ff);background:radial-gradient(circle at center,var(--color-bg-primary, #0a0a12) 56%,transparent 57%),conic-gradient(var(--color-accent-secondary, #00f5ff) var(--ta-vote-progress, 360deg),rgba(255,255,255,.1) 0);box-shadow:var(--glow-secondary, 0 0 20px rgba(0, 245, 255, .5))}.ta-voting-countdown--closed{width:auto;height:auto;border-radius:var(--radius-full, 999px);padding:4px 12px;font-size:var(--font-size-sm, .875rem);font-weight:700;color:var(--color-text-neon-muted, #b3b3c2);background:#ffffff14;box-shadow:none}.ta-voting-cards{display:flex;flex-direction:column;gap:12px}.ta-vote-card{background:var(--color-bg-surface, rgba(255, 255, 255, .05));border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg, 12px);padding:14px}.ta-vote-card--mine{border-color:#ff2d6a73;box-shadow:inset 0 0 16px #ff2d6a12}.ta-vote-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.ta-vote-avatar{flex-shrink:0;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display, inherit);font-weight:800;font-size:13px;color:#fff;background:linear-gradient(135deg,var(--color-accent-primary, #ff2d6a),var(--color-neon-purple, #9d4edd))}.ta-vote-who{flex:1;font-weight:700;font-size:var(--font-size-md, 1rem);word-break:break-word}.ta-vote-field{flex-shrink:0;font-size:var(--font-size-xs, .625rem);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-dim, #6b6b7a);background:#ffffff0f;padding:3px 8px;border-radius:var(--radius-full, 999px)}.ta-vote-guess{font-family:var(--font-display, inherit);font-weight:800;font-size:var(--font-size-lg, 1.125rem);margin:2px 0 12px;word-break:break-word}.ta-vote-tally{display:flex;flex-direction:column;gap:7px;margin-bottom:12px}.ta-tally-row{display:flex;align-items:center;gap:8px;font-size:var(--font-size-sm, .875rem);font-weight:700;font-variant-numeric:tabular-nums}.ta-tally-yes{color:var(--color-success-neon, #39ff14);min-width:48px}.ta-tally-no{color:var(--color-error-neon, #ff0040);min-width:48px}.ta-tally-track{flex:1;height:8px;border-radius:var(--radius-full, 999px);background:#ffffff12;overflow:hidden}.ta-tally-fill{display:block;height:100%;border-radius:var(--radius-full, 999px);transition:width var(--transition-normal, .3s) ease-out}.ta-tally-fill--yes{background:var(--color-success-neon, #39ff14);box-shadow:0 0 10px #39ff1480}.ta-tally-fill--no{background:var(--color-error-neon, #ff0040);box-shadow:0 0 10px #ff004073}.ta-vote-actions{display:flex;gap:10px}.ta-vote-btn{position:relative;flex:1;height:48px;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-lg, 12px);background:#ffffff0d;font-size:20px;cursor:pointer;transition:transform var(--transition-fast, .15s),box-shadow var(--transition-fast, .15s),opacity var(--transition-fast, .15s),background var(--transition-fast, .15s)}.ta-vote-btn--yes{background:#39ff141f;border-color:#39ff1466;color:var(--color-success-neon, #39ff14)}.ta-vote-btn--no{background:#ff00401a;border-color:#ff004061;color:var(--color-error-neon, #ff0040)}.ta-vote-btn.is-chosen{transform:translateY(-1px)}.ta-vote-btn--yes.is-chosen{background:#39ff1438;border-color:#39ff1499;box-shadow:var(--glow-success, 0 0 20px rgba(57, 255, 20, .5))}.ta-vote-btn--no.is-chosen{background:#ff004033;border-color:#ff00408c;box-shadow:var(--glow-error, 0 0 20px rgba(255, 0, 64, .5))}.ta-vote-actions--voted .ta-vote-btn{opacity:.34}.ta-vote-actions--voted .ta-vote-btn.is-chosen{opacity:1}.ta-vote-actions--voted .ta-vote-btn.is-chosen:after{content:"\2713";position:absolute;top:3px;right:8px;font-size:12px;font-weight:800}.ta-vote-btn--yes.is-chosen:after{color:var(--color-success-neon, #39ff14)}.ta-vote-btn--no.is-chosen:after{color:var(--color-error-neon, #ff0040)}.ta-voted-caption{margin-top:8px;text-align:center;font-size:var(--font-size-sm, .875rem);color:var(--color-text-neon-muted, #b3b3c2)}.ta-vote-own-note{text-align:center;font-size:var(--font-size-sm, .875rem);font-style:italic;color:var(--color-accent-primary, #ff2d6a);opacity:.85}.ta-override-actions{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.07)}.ta-override-label{margin-right:auto;font-size:var(--font-size-xs, .625rem);color:var(--color-text-dim, #6b6b7a)}.ta-override-btn{padding:6px 14px;border-radius:var(--radius-md, 8px);border:1px solid rgba(255,255,255,.14);background:#ffffff0d;color:var(--color-text-white, #fff);font-weight:700;font-size:var(--font-size-sm, .875rem);cursor:pointer}.ta-override-btn--accept.is-chosen{border-color:var(--color-success-neon, #39ff14);color:var(--color-success-neon, #39ff14)}.ta-override-btn--reject.is-chosen{border-color:var(--color-error-neon, #ff0040);color:var(--color-error-neon, #ff0040)}@media(prefers-reduced-motion:reduce){.ta-tally-fill,.ta-vote-btn{transition:none}}.ta-outcome-card{display:flex;align-items:center;gap:10px;background:var(--color-bg-surface, rgba(255, 255, 255, .05));border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg, 12px);padding:11px 13px}.ta-outcome-card--accepted{border-color:#39ff144d}.ta-outcome-card--rejected{opacity:.72}.ta-outcome-avatar{flex-shrink:0;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display, inherit);font-weight:800;font-size:12px;color:#fff;background:linear-gradient(135deg,var(--color-accent-primary, #ff2d6a),var(--color-neon-purple, #9d4edd))}.ta-outcome-main{flex:1;min-width:0}.ta-outcome-who{font-weight:700;font-size:var(--font-size-base, .875rem)}.ta-outcome-field{color:var(--color-text-dim, #6b6b7a);font-weight:600}.ta-outcome-guess{font-size:var(--font-size-sm, .875rem);color:var(--color-text-neon-muted, #b3b3c2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ta-outcome-tally{font-size:var(--font-size-xs, .625rem);color:var(--color-text-dim, #6b6b7a);font-variant-numeric:tabular-nums}.ta-outcome-verdict{flex-shrink:0;display:inline-flex;align-items:center;font-family:var(--font-display, inherit);font-weight:800;font-size:var(--font-size-base, .875rem);padding:5px 11px;border-radius:var(--radius-full, 999px);font-variant-numeric:tabular-nums}.ta-outcome-verdict--accepted{background:#39ff1429;color:var(--color-success-neon, #39ff14)}.ta-outcome-verdict--rejected{background:#ff00401f;color:var(--color-error-neon, #ff0040)}.ta-input-section{display:flex;flex-direction:column;gap:12px;padding:12px 14px;margin:0 var(--space-md) var(--space-md);background:linear-gradient(180deg,#ff2d6a0f,#ffffff05);border:1px solid rgba(255,45,106,.22);border-radius:var(--radius-lg);box-shadow:inset 0 0 12px #ff2d6a0d}.ta-input-section.hidden{display:none}.ta-input-field{display:flex;flex-direction:column;gap:6px}.ta-input-label{display:flex;align-items:center;gap:6px;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.ta-input-points{margin-left:auto;flex-shrink:0;background:#39ff1426;color:var(--color-success-neon);font-weight:900;font-size:11px;letter-spacing:.04em;padding:2px 8px;border-radius:var(--radius-full)}.ta-text-input{width:100%;box-sizing:border-box;padding:12px 14px;background:#ffffff0d;border:2px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);color:var(--color-text-white);font-family:var(--font-body);font-size:16px;line-height:1.3;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.ta-text-input::placeholder{color:var(--color-text-neon-muted);opacity:.55}.ta-text-input:focus{outline:none;border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #ff2d6a33}.ta-input-ack{margin-top:2px;text-align:center;font-family:var(--font-body);font-size:12px;color:var(--color-success-neon)}.ta-input-ack.hidden{display:none}#reveal-view .reveal-container--duel{position:relative;overflow:hidden;isolation:isolate}#reveal-view .reveal-backdrop{position:absolute;top:0;left:0;right:0;height:340px;z-index:0;background-size:cover;background-position:center;background-repeat:no-repeat;filter:blur(46px) saturate(1.15);transform:scale(1.15);transform-origin:top center;opacity:.5;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 28%,transparent 70%);mask-image:linear-gradient(to bottom,#000 0%,#000 28%,transparent 70%)}#reveal-view .reveal-backdrop--synthetic{background-image:radial-gradient(circle at 28% 22%,#a82054f2,#a8205400 42%),radial-gradient(circle at 78% 14%,#601c96e6,#601c9600 46%),radial-gradient(circle at 18% 82%,#222878e6,#22287800 50%),conic-gradient(from 210deg at 52% 48%,#1a1038,#4a1240 70deg,#7a1e3c 130deg,#2a1454 200deg,#131642,#1a1038 360deg);filter:blur(54px) saturate(1.25)}#reveal-view .reveal-scrim{position:absolute;top:0;left:0;right:0;height:380px;z-index:0;pointer-events:none;background:linear-gradient(180deg,rgba(10,10,18,.78) 0%,rgba(10,10,18,.88) 55%,var(--color-bg-primary) 100%)}#reveal-view .reveal-scrim:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 320px 360px at 50% 24%,#00f5ff21,#00f5ff00 62%)}#reveal-view .reveal-container--duel>*:not(.reveal-backdrop):not(.reveal-scrim):not(.confetti-canvas){position:relative;z-index:1}@media(prefers-reduced-motion:no-preference){#reveal-view .reveal-backdrop{transition:background-image .4s ease}}#reveal-view .song-strip,#reveal-view .score-row,#reveal-view .card-section,#reveal-view .duel-ticket{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 10px 30px #00000059;border-radius:var(--radius-lg)}#reveal-view .card-section:hover{background:#ffffff14;border-color:#ffffff29}#reveal-view .reveal-header-v2{margin-bottom:var(--space-sm)}#reveal-view .song-strip{padding:var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm)}#reveal-view .song-strip-cover{box-shadow:0 2px 10px #00000080;border:1px solid rgba(255,255,255,.15)}#reveal-view .duel-emotion{font-size:30px;letter-spacing:.04em;margin-bottom:var(--space-sm);text-shadow:0 4px 18px rgba(0,0,0,.6)}#reveal-view .duel{padding:var(--space-md) var(--space-xs) var(--space-lg)}#reveal-view .duel-tickets{position:relative;display:flex;justify-content:center;align-items:stretch;gap:var(--space-md);padding-bottom:20px}#reveal-view .duel-ticket{flex:1 1 0;max-width:170px;padding:var(--space-md) var(--space-sm) var(--space-lg);text-align:center}#reveal-view .duel-ticket--you{transform:rotate(-3deg) translateY(4px);border-color:#ff2d6a59;box-shadow:0 14px 34px #00000073,0 0 24px #ff2d6a1f}#reveal-view .duel-ticket--truth{transform:rotate(3deg) translateY(4px);border-color:#00f5ff66;box-shadow:0 14px 34px #00000073,0 0 34px #00f5ff2e}#reveal-view .duel-ticket .duel-label{padding-bottom:var(--space-sm);margin:0 6px var(--space-sm);border-bottom:1.5px dashed rgba(255,255,255,.18)}#reveal-view .duel-ticket .duel-year{font-size:clamp(40px,13vw,54px)}#reveal-view .duel-ticket--you .duel-year.mine{color:var(--color-accent-primary);text-shadow:0 0 18px rgba(255,45,106,.45)}#reveal-view .duel-ticket--truth .duel-year.correct{color:var(--color-accent-secondary);text-shadow:0 0 14px rgba(0,245,255,.9),0 0 38px rgba(0,245,255,.45)}#reveal-view .duel-gap{position:absolute;left:50%;bottom:0;transform:translate(-50%);flex-direction:row;align-items:baseline;gap:5px;min-width:0;padding:6px 16px;border-radius:var(--radius-full);background:#ff660029;border:1px solid rgba(255,102,0,.55);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 6px 18px #00000080,0 0 16px #f603;white-space:nowrap;z-index:3}#reveal-view .duel-gap-x{font-size:var(--font-size-md);color:var(--color-warning-alt);opacity:.9}#reveal-view .duel-gap-n{font-size:var(--font-size-lg);color:var(--color-warning-alt);text-shadow:none}#reveal-view .duel-gap-unit{margin-top:0;font-size:10px;color:var(--color-warning-alt)}#reveal-view .duel-gap--exact{background:#39ff1429;border-color:#39ff148c;box-shadow:0 6px 18px #00000080,0 0 16px #39ff1438}#reveal-view .duel-gap--exact .duel-gap-x,#reveal-view .duel-gap--exact .duel-gap-n,#reveal-view .duel-gap--exact .duel-gap-unit{color:var(--color-success-neon)}#reveal-view .duel-gap--wrong{background:#ff004024;border-color:#ff004080;box-shadow:0 6px 18px #00000080,0 0 16px #ff004033}#reveal-view .duel-gap--wrong .duel-gap-x,#reveal-view .duel-gap--wrong .duel-gap-n,#reveal-view .duel-gap--wrong .duel-gap-unit{color:var(--color-error-neon)}#reveal-view .score-row{border-color:#ffffff1f;box-shadow:0 10px 30px #00000059}#reveal-view .score-row-pts{color:var(--color-success-neon);text-shadow:0 0 16px rgba(57,255,20,.5);font-size:32px}#reveal-view .ta-vote-card,#reveal-view .ta-outcome-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}#reveal-view .next-round-btn{background:linear-gradient(135deg,#ff2d6a,#ff4f86);border-radius:var(--radius-full);box-shadow:0 8px 24px #ff2d6a73,0 0 18px #ff2d6a4d}#reveal-view .next-round-btn:hover{background:linear-gradient(135deg,#ff4f86,#ff2d6a)}#reveal-view .next-round-btn.is-final{background:linear-gradient(135deg,#39ff14,#00f5ff);color:var(--color-bg-primary)}#reveal-view .invite-btn{background:#ffffff0f;border:1px solid rgba(255,255,255,.18);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:var(--radius-full)}#reveal-view .reveal-admin-buttons{align-items:stretch}#reveal-view .reveal-admin-buttons .invite-btn,#reveal-view .reveal-admin-buttons .next-round-btn{flex:1 1 0;min-width:0;max-width:260px;min-height:56px;padding:12px 20px;font-size:var(--font-size-md);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);text-align:center}#reveal-view #reveal-leaderboard-list{display:flex;flex-direction:column;gap:8px;max-height:none;overflow:visible}#reveal-view .rstand-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06)}#reveal-view .rstand-row--you{border:1px solid var(--color-accent-primary);background:#ff2d6a0f;box-shadow:0 0 16px #ff2d6a38}#reveal-view .rstand-row--taper1{opacity:.85}#reveal-view .rstand-row--taper2{opacity:.68}#reveal-view .rstand-rankcell{display:flex;flex-direction:column;align-items:center;width:26px;flex-shrink:0}#reveal-view .rstand-rank{font-family:var(--font-display);font-weight:800;font-size:20px;line-height:1;color:var(--color-text-white)}#reveal-view .rstand-row--taper1 .rstand-rank,#reveal-view .rstand-row--taper2 .rstand-rank{font-size:18px}#reveal-view .rstand-move{font-size:10px;font-weight:700;line-height:1;margin-top:3px}#reveal-view .rstand-move--up{color:var(--color-success-neon)}#reveal-view .rstand-move--down{color:var(--color-error-neon)}#reveal-view .rstand-move--flat{color:var(--color-text-neon-muted)}#reveal-view .rstand-avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:15px;color:var(--color-text-white);text-shadow:0 1px 2px rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.15)}#reveal-view .rstand-ident{flex:1;min-width:0}#reveal-view .rstand-name{font-family:var(--font-body);font-weight:700;font-size:15px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px;color:var(--color-text-white)}#reveal-view .rstand-you{font-family:var(--font-display);font-weight:800;font-size:9px;letter-spacing:.06em;color:var(--color-accent-primary);background:#ff2d6a26;border:1px solid rgba(255,45,106,.4);border-radius:6px;padding:2px 5px;line-height:1;flex-shrink:0}#reveal-view .rstand-guess{font-size:11px;font-weight:500;color:var(--color-text-neon-muted);line-height:1.2;margin-top:3px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#reveal-view .rstand-guess .rstand-exact{color:var(--color-success-neon);font-weight:600}#reveal-view .rstand-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}#reveal-view .rstand-chip{font-size:10px;font-weight:600;color:var(--color-text-neon-muted);background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:999px;padding:2px 7px;line-height:1.4;white-space:nowrap}#reveal-view .rstand-chip--fire{color:var(--color-warning-alt);border-color:#ff66004d;background:#ff660014}#reveal-view .rstand-chip--steal{color:var(--color-success-neon);border-color:#39ff1447;background:#39ff1412}#reveal-view .rstand-score{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;margin-left:4px}#reveal-view .rstand-total{font-family:var(--font-display);font-weight:900;font-size:22px;line-height:1;color:var(--color-text-white);letter-spacing:-.01em}#reveal-view .rstand-row--taper1 .rstand-total{font-size:20px}#reveal-view .rstand-row--taper2 .rstand-total{font-size:19px}#reveal-view .rstand-delta{font-family:var(--font-body);font-weight:700;font-size:12px;line-height:1;margin-top:4px;color:var(--color-success-neon)}#reveal-view .rstand-delta--zero{color:var(--color-text-neon-muted)}#reveal-view .song-strip{flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden}#reveal-view .song-strip-main{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm)}#reveal-view .artist-guess-row{display:flex;align-items:center;gap:8px;padding:9px var(--space-md) 9px var(--space-sm);border-top:1px solid rgba(255,255,255,.08)}#reveal-view .artist-guess-row.hidden{display:none}#reveal-view .artist-guess-ic{font-size:14px;flex-shrink:0}#reveal-view .artist-guess-name{font-family:var(--font-body);font-weight:700;font-size:14px;color:var(--color-text-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}#reveal-view .artist-reveal-winner{margin-left:auto;flex-shrink:0;font-family:var(--font-body);font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--radius-full);white-space:nowrap}#reveal-view .artist-reveal-winner.hidden{display:none}#reveal-view .artist-reveal-winner.is-you,#reveal-view .artist-reveal-winner.is-other{color:var(--color-success-neon);background:#39ff141f;border:1px solid rgba(57,255,20,.4)}#reveal-view .artist-reveal-winner.is-you{box-shadow:0 0 12px #39ff1433}#reveal-view .artist-reveal-winner.artist-reveal-no-winner{color:var(--color-text-neon-muted);background:#ffffff0f;border:1px solid rgba(255,255,255,.12)}#reveal-view #fun-fact-container .section-content-padded{display:flex;flex-direction:column;gap:11px}#reveal-view .song-rich-info .song-badges-row{display:flex;gap:8px}#reveal-view .song-rich-info .song-badge{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:11px 6px;border-radius:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);font-family:var(--font-body);font-size:11px;font-weight:700;line-height:1.2;text-align:center;white-space:normal}#reveal-view .song-rich-info .song-badge .song-badge-icon{font-size:20px}#reveal-view .song-rich-info .song-badges-more{flex:0 0 auto;align-self:center;font-size:11px;color:var(--color-text-neon-muted)}#reveal-view #fun-fact .fun-fact-text,#reveal-view .fun-fact-text{font-size:12px;line-height:1.4;color:var(--color-text-neon-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.playlist-tabs{display:flex;gap:var(--space-lg);border-bottom:1px solid var(--color-border-neon);margin-bottom:var(--space-md)}.playlist-tab{appearance:none;background:none;border:none;padding:10px 2px;margin-bottom:-1px;font:inherit;font-weight:700;font-size:.95rem;color:var(--color-text-neon-muted);cursor:pointer;border-bottom:2px solid transparent;transition:color var(--transition-fast),border-color var(--transition-fast)}.playlist-tab:hover{color:var(--color-text-white)}.playlist-tab.active{color:var(--color-accent-secondary);border-bottom-color:var(--color-accent-secondary)}.playlist-panel.hidden{display:none}.mix-card{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);padding:var(--space-lg)}.mix-card-head{display:flex;align-items:center;gap:var(--space-sm)}.mix-card-icon{font-size:1.25rem}.mix-card-title{margin:0;font-size:1.25rem;font-weight:800;color:var(--color-text-white)}.mix-card-sub{margin:6px 0 var(--space-lg);color:var(--color-text-neon-muted);font-size:.9rem}.mix-chip-cloud{display:flex;flex-direction:column;gap:var(--space-md)}.mix-chip-row{display:flex;flex-direction:column;gap:8px}.mix-chip-rowlabel{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.mix-chip-group{display:flex;flex-wrap:wrap;gap:8px}.mix-chip{appearance:none;padding:6px 14px;border-radius:var(--radius-full);border:1px solid var(--color-border-neon);background:#ffffff0a;color:var(--color-text-neon-muted);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.mix-chip:hover{border-color:#ffffff4d;color:var(--color-text-white)}.mix-chip-group[data-accent=cyan] .mix-chip.active{background:#00f5ff26;border-color:var(--color-accent-secondary);color:var(--color-accent-secondary)}.mix-chip-group[data-accent=pink] .mix-chip.active{background:#ff2d6a26;border-color:var(--color-accent-primary);color:var(--color-accent-primary)}.mix-chip-group[data-accent=indigo] .mix-chip.active{background:#6366f12e;border-color:var(--color-accent-brand);color:#a5b4fc}.mix-empty{color:var(--color-text-neon-muted);font-size:.9rem;margin:0}.mix-divider{height:1px;background:var(--color-border-neon);margin:var(--space-lg) 0}.mix-count-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.mix-count-label{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.mix-segmented{display:inline-flex;padding:4px;gap:4px;background:#ffffff0d;border:1px solid var(--color-border-neon);border-radius:10px}.mix-seg{appearance:none;min-width:56px;padding:8px 14px;border:none;border-radius:7px;background:transparent;color:var(--color-text-neon-muted);font:inherit;font-weight:700;cursor:pointer;transition:all var(--transition-fast)}.mix-seg:hover{color:var(--color-text-white)}.mix-seg.active{background:var(--color-accent-brand);color:var(--color-text-white);box-shadow:0 0 14px #6366f180}.mix-preview{display:flex;align-items:center;gap:10px;margin:var(--space-md) 0 var(--space-lg);padding:12px 16px;border-radius:var(--radius-md);background:#00f5ff0f;border:1px solid rgba(0,245,255,.15);color:var(--color-text-white);font-size:.9rem}.mix-preview-dot{width:8px;height:8px;border-radius:50%;background:#1ed760;box-shadow:0 0 8px #1ed760cc;flex-shrink:0}.mix-actions{display:flex;align-items:center;gap:var(--space-lg);flex-wrap:wrap}.mix-actions .btn-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.mix-save-label{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--color-text-neon-muted);cursor:pointer}#mix-error{margin-top:var(--space-md)}.mix-error-detail{display:block;margin-top:var(--space-xs);font-size:var(--font-size-sm);line-height:1.35;color:var(--color-text-light);word-break:break-word}.mix-tracklist-row{margin:var(--space-sm) 0}.mix-tracklist-row .btn-sm{font-size:.85rem;padding:6px 12px}.mix-tracklist{margin:var(--space-sm) 0 var(--space-md);max-height:280px;overflow-y:auto;border-radius:var(--radius-md);border:1px solid rgba(0,245,255,.15);background:#00f5ff0a}.mix-tracklist.hidden{display:none}.mix-tracklist-head{margin:0;padding:10px 14px;font-size:.8rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-neon-muted);border-bottom:1px solid rgba(0,245,255,.12);position:sticky;top:0;background:#0a0c18eb}.mix-tracklist-empty{margin:0;padding:14px;font-size:.9rem;color:var(--color-text-neon-muted)}.mix-track-list{list-style:none;margin:0;padding:4px 0;counter-reset:mix-track}.mix-track{display:flex;align-items:baseline;gap:8px;padding:6px 14px;font-size:.88rem;color:var(--color-text-white)}.mix-track:before{counter-increment:mix-track;content:counter(mix-track);flex-shrink:0;min-width:1.8em;text-align:right;font-variant-numeric:tabular-nums;color:var(--color-text-neon-muted);opacity:.7}.mix-track-title{font-weight:500}.mix-track-artist{color:var(--color-text-neon-muted)}.mix-track-artist:before{content:"\2014 "}.mix-track-year{margin-left:auto;flex-shrink:0;color:var(--color-text-neon-muted);font-variant-numeric:tabular-nums;opacity:.7}.beatify-toast-container{position:fixed;top:var(--space-md);left:50%;transform:translate(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);width:min(92vw,440px);pointer-events:none}.beatify-toast{pointer-events:auto;width:100%;display:flex;align-items:flex-start;gap:var(--space-sm);position:relative;overflow:hidden;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-lg);background:#141422f5;border:1px solid var(--color-error-neon);box-shadow:0 0 20px #ff004073,0 8px 32px #00000073;color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);opacity:0;transform:translateY(-12px);transition:opacity var(--transition-normal),transform var(--transition-normal)}.beatify-toast--in{opacity:1;transform:translateY(0)}.beatify-toast--leaving{opacity:0;transform:translateY(-12px)}.beatify-toast--info{border-color:var(--color-accent-secondary);box-shadow:0 0 20px #00f5ff66,0 8px 32px #00000073}.beatify-toast--success{border-color:var(--color-success-neon);box-shadow:0 0 20px #39ff1466,0 8px 32px #00000073}.beatify-toast-body{display:flex;align-items:flex-start;gap:var(--space-sm);flex:1 1 auto;min-width:0}.beatify-toast-icon{font-size:var(--font-size-lg);line-height:1.3;flex-shrink:0}.beatify-toast-text{line-height:1.35;word-break:break-word}.beatify-toast-close{flex-shrink:0;background:none;border:none;color:var(--color-text-neon-muted);font-size:var(--font-size-xl);line-height:1;cursor:pointer;padding:0 var(--space-xs);transition:color var(--transition-fast)}.beatify-toast-close:hover{color:var(--color-text-white)}.beatify-toast-progress{position:absolute;left:0;bottom:0;height:3px;width:100%;transform-origin:left center;background:var(--color-error-neon);box-shadow:0 0 8px var(--color-error-neon);animation:beatify-toast-drain linear forwards}.beatify-toast--info .beatify-toast-progress{background:var(--color-accent-secondary);box-shadow:0 0 8px var(--color-accent-secondary)}.beatify-toast--success .beatify-toast-progress{background:var(--color-success-neon);box-shadow:0 0 8px var(--color-success-neon)}@keyframes beatify-toast-drain{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.beatify-banner{display:flex;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-lg);background:#ff004014;border:1px solid var(--color-error-neon);box-shadow:inset 0 0 16px #ff00401f;color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base);text-align:left}.beatify-banner--warning{background:#f59e0b1a;border-color:var(--color-warning);box-shadow:inset 0 0 16px #f59e0b1f}.beatify-banner--info{background:#00f5ff14;border-color:var(--color-accent-secondary);box-shadow:inset 0 0 16px #00f5ff1f}.beatify-banner-icon{font-size:var(--font-size-lg);line-height:1.2;flex-shrink:0}.beatify-banner-content{flex:1 1 auto;min-width:0}.beatify-banner-title{font-family:var(--font-display);font-weight:var(--font-weight-bold);margin-bottom:2px;color:var(--color-error-neon)}.beatify-banner--warning .beatify-banner-title{color:var(--color-warning)}.beatify-banner--info .beatify-banner-title{color:var(--color-accent-secondary)}.beatify-banner-text{line-height:1.4;color:var(--color-text-neon-muted);word-break:break-word}.beatify-banner-detail{margin-top:var(--space-xs);font-size:var(--font-size-sm);line-height:1.35;color:var(--color-text-light);word-break:break-word}.beatify-banner-action{margin-top:var(--space-xs);background:none;border:1px solid currentColor;border-radius:var(--radius-sm);color:var(--color-error-neon);font-family:var(--font-body);font-size:var(--font-size-sm);line-height:1.2;padding:6px var(--space-sm);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.beatify-banner-action:hover{background:var(--color-error-neon);color:var(--color-bg-primary)}.beatify-banner--warning .beatify-banner-action{color:var(--color-warning)}.beatify-banner--warning .beatify-banner-action:hover{background:var(--color-warning)}.beatify-banner--info .beatify-banner-action{color:var(--color-accent-secondary)}.beatify-banner--info .beatify-banner-action:hover{background:var(--color-accent-secondary)}.beatify-banner-close{flex-shrink:0;background:none;border:none;color:var(--color-text-neon-muted);font-size:var(--font-size-xl);line-height:1;cursor:pointer;padding:0 var(--space-xs);transition:color var(--transition-fast)}.beatify-banner-close:hover{color:var(--color-text-white)}@media(prefers-reduced-motion:reduce){.beatify-toast{transition:none;opacity:1;transform:none}.beatify-toast-progress{animation:none}}.steal-target-row{display:flex;align-items:center;gap:var(--space-sm);text-align:left}.steal-target-rank{flex-shrink:0;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);font-family:var(--font-display);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);color:var(--color-text-neon-muted)}.steal-target-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--font-weight-semibold)}.steal-target-score{flex-shrink:0;font-family:var(--font-display);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;color:var(--color-accent-secondary);text-shadow:0 0 8px rgba(0,245,255,.5)}.steal-target-crown{flex-shrink:0;font-size:var(--font-size-md);line-height:1}.steal-target-row--leader{border-color:var(--color-warning);box-shadow:0 0 14px #f59e0b59,inset 0 0 10px #f59e0b1f}.steal-target-row--leader .steal-target-rank{border-color:var(--color-warning);color:var(--color-warning);box-shadow:0 0 8px #f59e0b66}.steal-target-row--leader .steal-target-score{color:var(--color-warning);text-shadow:0 0 8px rgba(245,158,11,.5)}.dotaxis-legend-acc{display:inline-flex;align-items:center;gap:3px;margin-left:4px;padding:1px 6px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border:1px solid currentColor;white-space:nowrap}.dotaxis-legend-acc-glyph{font-size:.95em;line-height:1}.dotaxis-legend-acc--exact{color:var(--color-accent-secondary)}.dotaxis-legend-acc--near{color:var(--color-warning)}.dotaxis-legend-acc--off{color:var(--color-text-neon-muted)}.player-tile-away{display:inline-flex;align-items:center;gap:3px}.player-tile-away-glyph{font-size:.9em;line-height:1}.timer-neon{position:relative}.timer-neon-ring{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);transform:rotate(-90deg);pointer-events:none}.timer-neon-ring-bg{fill:none;stroke:#ffffff1f;stroke-width:4}.timer-neon-ring-fg{fill:none;stroke:var(--color-accent-secondary);stroke-width:4;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(0,245,255,.6));transition:stroke-dashoffset 1s linear,stroke var(--transition-normal)}.timer-neon--warn .timer-neon-ring-fg,.timer-neon-ring--warn .timer-neon-ring-fg{stroke:var(--color-warning);filter:drop-shadow(0 0 6px rgba(245,158,11,.7))}.timer-neon-ring--critical .timer-neon-ring-fg{stroke:var(--color-error-neon);filter:drop-shadow(0 0 7px rgba(255,0,64,.8))}@media(prefers-reduced-motion:reduce){.timer-neon-ring-fg{transition:none}.arc-chip--elim{color:var(--color-error-neon);background:#ff00401f;border:1px solid rgba(255,0,64,.5);text-transform:uppercase}.sd-live-toggle{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:var(--radius-md);background:var(--color-bg-surface);border:1px solid rgba(255,255,255,.12);font-family:var(--font-body);font-size:12px;font-weight:600;color:var(--color-text-white);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.sd-live-toggle:disabled{opacity:.4;cursor:not-allowed}.sd-live-toggle.is-on{border-color:var(--color-accent-primary);background:#ff2d6a14;box-shadow:var(--glow-primary)}.sd-live-toggle__switch{position:relative;width:30px;height:17px;border-radius:var(--radius-full);background:#ffffff26;flex:none}.sd-live-toggle.is-on .sd-live-toggle__switch{background:var(--color-accent-primary)}.sd-live-toggle__switch:after{content:"";position:absolute;width:13px;height:13px;border-radius:50%;background:#fff;top:2px;left:2px;transition:left var(--transition-fast)}.sd-live-toggle.is-on .sd-live-toggle__switch:after{left:15px}.eliminated-view{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-sm);min-height:60vh;padding:var(--space-xl) var(--space-md)}.eliminated-orb{width:120px;height:120px;border-radius:var(--radius-full);overflow:hidden;filter:grayscale(1) brightness(.5);display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2a2540,#16131f);margin-bottom:var(--space-md);position:relative}.eliminated-orb img{width:100%;height:100%;object-fit:cover}.eliminated-skull{font-size:46px;position:absolute}.eliminated-title{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);color:var(--color-text-white);letter-spacing:-.02em}.eliminated-sub{color:var(--color-text-neon-muted);font-size:var(--font-size-base)}.eliminated-hint{color:var(--color-text-dim);font-size:var(--font-size-sm);margin-top:var(--space-md)}.cut-line{position:relative;height:0;border-top:2px solid var(--color-accent-primary);box-shadow:0 0 12px #ff2d6ab3;margin:var(--space-md) 0}.cut-line__label{position:absolute;top:-9px;left:50%;transform:translate(-50%);background:var(--color-bg-primary);padding:0 10px;font-family:var(--font-body);font-size:9px;font-weight:700;letter-spacing:.15em;color:var(--color-accent-primary)}.player-indicator.is-eliminated,.leaderboard-entry.is-eliminated{opacity:.45}.player-out-badge{font-size:10px;font-weight:700;color:var(--color-text-dim);letter-spacing:.04em}.sd-out-overlay{position:fixed;inset:0;z-index:900;display:none;flex-direction:column;align-items:center;justify-content:center;background:#06060cf5}.sd-out-overlay.show{display:flex;animation:sd-out-in var(--transition-slow) ease-out}.sd-out__word{font-family:var(--font-display);font-weight:900;font-size:clamp(120px,26vw,360px);line-height:.85;color:var(--color-error-neon);text-shadow:0 0 40px rgba(255,0,64,.7)}.sd-out__name{display:flex;align-items:center;gap:14px;margin-top:var(--space-md);font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);color:var(--color-text-white)}.sd-out__skull{font-size:40px}@keyframes sd-out-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.sd-final-banner{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:var(--radius-full);font-family:var(--font-display);font-weight:900;letter-spacing:.06em;color:var(--color-accent-primary);background:#ff2d6a1f;border:1px solid rgba(255,45,106,.5);box-shadow:0 0 16px #ff2d6a4d}.superlative-card--last_one_standing{box-shadow:0 0 18px #ff2d6a4d;border-color:#ff2d6a66}.sd-last-standing{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);text-align:center;margin-bottom:var(--space-lg)}.sd-last-standing__trophy{font-size:40px}.sd-last-standing__headline{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-hero);letter-spacing:-.02em;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 40px rgba(255,45,106,.5)}.sd-last-standing__winner{font-family:var(--font-body);font-weight:700;font-size:var(--font-size-xl);color:var(--color-text-white)}.sd-last-standing__sub{font-family:var(--font-body);font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-neon-muted)}.sd-out-overlay.show{animation:none}} +:root{--color-bg-primary: #0a0a12;--color-bg-surface: rgba(255, 255, 255, .05);--color-bg-light: #f5f5f5;--color-bg-white: #ffffff;--color-bg-card: #f9fafb;--color-bg-card-alt: #f3f4f6;--color-accent-primary: #ff2d6a;--color-accent-secondary: #00f5ff;--color-accent-brand: #6366f1;--color-accent-brand-hover: #4f46e5;--color-accent-blue: #3b82f6;--color-accent-blue-hover: #2563eb;--color-success: #10b981;--color-success-hover: #059669;--color-success-light: #d1fae5;--color-success-alt: #22c55e;--color-success-neon: #39ff14;--color-warning: #f59e0b;--color-warning-dark: #d97706;--color-warning-light: #fef3c7;--color-warning-alt: #ff6600;--color-error: #ef4444;--color-error-dark: #dc2626;--color-error-light: #fee2e2;--color-error-neon: #ff0040;--color-purple-primary: #8b5cf6;--color-purple-secondary: #7c3aed;--color-neon-purple: #9d4edd;--color-success-bg: rgba(16, 185, 129, .15);--color-accent-brand-bg: rgba(99, 102, 241, .15);--color-error-bg: rgba(239, 68, 68, .15);--color-text-primary: #1f2937;--color-text-secondary: #374151;--color-text-muted: #6b7280;--color-text-light: #9ca3af;--color-text-white: #ffffff;--color-text-dark: #1a1a1a;--color-text-heading: #444444;--color-text-neon-muted: #b3b3c2;--color-border-light: #e5e7eb;--color-border-medium: #d1d5db;--color-border-dark: #333333;--color-border-neon: rgba(255, 255, 255, .1);--color-dark-surface: rgba(255, 255, 255, .05);--color-dark-surface-hover: rgba(255, 255, 255, .08);--color-dark-card: rgba(255, 255, 255, .03);--color-surface-dark: #1a1a2e;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--font-display: "Outfit", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;--font-mono: monospace;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 28px;--font-size-4xl: 32px;--font-size-year: 56px;--font-size-timer: 64px;--font-size-hero: 72px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--glow-primary: 0 0 20px var(--color-accent-primary);--glow-secondary: 0 0 20px var(--color-accent-secondary);--glow-success: 0 0 20px var(--color-success-neon);--glow-warning: 0 0 20px var(--color-warning);--glow-error: 0 0 20px var(--color-error);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--shadow-md: 0 2px 8px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .1);--shadow-xl: 0 8px 32px rgba(0, 0, 0, .15);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 20px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--z-control-bar: 100;--z-reaction-bar: 101;--z-modal: 1000;--z-overlay: 1100;--z-toast: 1200}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-system);background:var(--color-bg-light);color:var(--color-text-secondary);line-height:1.5;padding:var(--space-sm);min-height:100vh;overscroll-behavior:none}.wordmark{font-family:"Outfit",var(--font-system);font-weight:900;font-size:var(--font-size-hero);letter-spacing:-.02em;line-height:1}.wordmark-beat{color:var(--color-text-white)}body:not(.theme-dark) .wordmark-beat{color:var(--color-text-primary)}.wordmark-gradient{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;color:transparent}.wordmark-hero{text-shadow:0 0 40px rgba(255,45,106,.5)}.logo-loading{animation:logo-pulse 2s ease-in-out infinite}@keyframes logo-pulse{0%,to{opacity:1}50%{opacity:.7}}@media(prefers-reduced-motion:reduce){.logo-loading{animation:none}}.vinyl-starting{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px;box-sizing:border-box}.vinyl-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:clamp(20px,5vw,56px);max-width:100%}.vinyl-loader{flex:0 0 auto;width:clamp(130px,28vw,260px);height:clamp(130px,28vw,260px);display:flex;align-items:center;justify-content:center;border-radius:50%;background:radial-gradient(circle at center,rgba(255,45,106,.18) 0%,rgba(99,102,241,.1) 45%,transparent 70%)}.vinyl-disc{position:relative;width:78%;height:78%;border-radius:50%;background:conic-gradient(from 0deg,var(--color-accent-primary),var(--color-accent-brand),var(--color-accent-secondary),var(--color-accent-brand),var(--color-accent-primary));box-shadow:0 0 40px #ff2d6a59,0 0 80px #00f5ff2e,inset 0 0 30px #00000073;animation:vinyl-spin 3s linear infinite}.vinyl-ring{position:absolute;top:18%;left:18%;width:64%;height:64%;border-radius:50%;border:1.5px dashed rgba(255,255,255,.25)}.vinyl-hole{position:absolute;top:50%;left:50%;width:14%;height:14%;border-radius:50%;background:var(--color-bg-primary);transform:translate(-50%,-50%);box-shadow:0 0 0 4px #0006}.vinyl-copy{flex:1 1 280px;min-width:0;width:min(100%,460px);max-width:460px;text-align:left}.vinyl-copy .vinyl-headline,.vinyl-copy .vinyl-sub,.vinyl-copy .wordmark-hero{overflow-wrap:break-word}.vinyl-copy .wordmark-hero{font-size:clamp(2rem,5vw,3.25rem);margin:0 0 .5em}.vinyl-headline{font-size:clamp(1.5rem,4vw,2.5rem);font-weight:800;color:var(--color-text-white);margin:0 0 .4em}.vinyl-sub{font-size:clamp(.95rem,2.2vw,1.2rem);line-height:1.5;color:var(--color-text-muted);margin:0 0 1.2em}.vinyl-dots{display:flex;gap:12px}.vinyl-dots span{width:12px;height:12px;border-radius:50%;background:var(--color-accent-primary);opacity:.3;animation:vinyl-dot-pulse 1.4s ease-in-out infinite}.vinyl-dots span:nth-child(2){animation-delay:.2s}.vinyl-dots span:nth-child(3){animation-delay:.4s}@keyframes vinyl-spin{to{transform:rotate(360deg)}}@keyframes vinyl-dot-pulse{0%,to{opacity:.3;transform:scale(1)}40%{opacity:1;transform:scale(1.25)}}@media(max-width:640px){.vinyl-copy{text-align:center}.vinyl-dots{justify-content:center}}@media(prefers-reduced-motion:reduce){.vinyl-disc{animation:none}.vinyl-dots span{animation:none;opacity:.7}}header{margin-bottom:var(--space-lg)}header h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-dark)}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md, 16px)}.admin-header h1{margin:0}.player-header{display:flex;align-items:center;justify-content:center;padding:var(--space-md) var(--space-md) 0}.player-header h1{margin:0}body.theme-dark main.admin-content{max-width:800px;margin:0 auto;padding:var(--space-md, 16px)}.analytics-icon-link{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;text-decoration:none;font-size:1.5rem;transition:background-color .2s ease,transform .2s ease}body.theme-dark .analytics-icon-link{background:#00f5ff1a}body.theme-dark .analytics-icon-link:hover,body.theme-dark .analytics-icon-link:focus{background:#00f5ff33;transform:scale(1.1);outline:none}.admin-header-actions{display:flex;align-items:center;gap:var(--space-xs, 8px)}.pwa-install-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:none;background:#00f5ff1a;font-size:1.5rem;cursor:pointer;transition:background-color .2s ease,transform .2s ease;padding:0}.pwa-install-btn:hover,.pwa-install-btn:focus{background:#00f5ff33;transform:scale(1.1);outline:none}.reset-icon-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:none;background:#ff2d6a1a;color:var(--color-text-white);font-size:1.5rem;cursor:pointer;padding:0;transition:background-color .2s ease,transform .2s ease}.reset-icon-btn:hover,.reset-icon-btn:focus{background:#ff2d6a40;transform:scale(1.1);outline:none}.pwa-ios-hint{position:fixed;bottom:0;left:0;right:0;z-index:1000;display:flex;justify-content:center;padding:var(--space-md, 16px);animation:slideUp .3s ease}.pwa-ios-hint.hidden{display:none}.pwa-ios-hint-content{position:relative;background:var(--color-bg-elevated, #2a2a3e);border-radius:var(--radius-lg, 12px);padding:var(--space-md, 16px) var(--space-lg, 24px);color:var(--color-text, #fff);text-align:center;max-width:340px;box-shadow:0 -2px 20px #0000004d}.pwa-ios-hint-close{position:absolute;top:8px;right:12px;background:none;border:none;color:var(--color-text, #fff);font-size:1.4rem;cursor:pointer;opacity:.6}.pwa-ios-hint-close:hover{opacity:1}.pwa-ios-share-icon{font-size:1.2rem}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.status-section,.card-section{background:var(--color-bg-white);border-radius:var(--radius-lg);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);box-shadow:var(--shadow-sm);border:1px solid transparent;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.card-section:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.card-section .section-header{display:flex;align-items:center;gap:var(--space-sm, 8px);margin-bottom:var(--space-sm);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.card-section .section-icon{font-size:1.25rem}.status-section h2,.card-section h2:not(.section-header){font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-sm);color:var(--color-text-heading)}.status-connected{color:var(--color-success-alt);font-weight:var(--font-weight-medium)}.status-error{color:var(--color-error);font-weight:var(--font-weight-medium)}.status-warning{color:var(--color-warning);font-weight:var(--font-weight-medium)}.list-item{padding:var(--space-sm);border-bottom:1px solid var(--color-border-light);display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);transition:background-color .2s ease}.list-item:last-child{border-bottom:none}body.theme-dark .list-item{border-bottom-color:var(--surface-border, #333)}body.theme-dark .list-item:hover{background:#9d4edd1a}.list-item .name{font-weight:var(--font-weight-medium);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-item .meta{color:var(--color-text-muted);font-size:var(--font-size-base);flex-shrink:0}.list-item.is-invalid{background:var(--color-error-light);border-left:3px solid var(--color-error)}.playlist-item.is-disabled{opacity:.5;cursor:not-allowed}.playlist-item.is-disabled .checkbox-label,.playlist-item.is-disabled .playlist-checkbox{cursor:not-allowed}.playlist-item.is-selectable{cursor:pointer}.playlist-item.is-selected,.media-player-item.is-selected{background:#eff6ff;border-left:3px solid var(--color-accent-blue)}body.theme-dark .playlist-item.is-selected,body.theme-dark .media-player-item.is-selected{background:#00f5ff1a;border-left:3px solid var(--color-accent-secondary)}.seasonal-suggestion{position:relative;margin-bottom:12px;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#ff2d6a24,#6366f124),#12121c;border:1px solid rgba(255,45,106,.45);box-shadow:0 0 0 1px #00f5ff14,0 6px 18px #00000059}.seasonal-suggestion__badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-secondary, #00f5ff);background:#00f5ff1a;border:1px solid rgba(0,245,255,.3);border-radius:999px;padding:3px 10px;margin-bottom:10px}.seasonal-suggestion__title{font-size:16px;font-weight:700;color:#fff;margin-bottom:4px}.seasonal-suggestion__reason{font-size:13px;line-height:1.4;color:#ffffffb8;margin-bottom:12px}.seasonal-suggestion__add{display:inline-block}.seasonal-suggestion__dismiss{position:absolute;top:8px;right:10px;width:28px;height:28px;line-height:1;font-size:20px;color:#fff9;background:transparent;border:none;border-radius:8px;cursor:pointer}.seasonal-suggestion__dismiss:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.seasonal-suggestion__dismiss:hover{color:#fff;background:#ffffff14}body:not(.theme-dark) .seasonal-suggestion{background:linear-gradient(135deg,#ff2d6a14,#6366f114),#fff;border:1px solid rgba(255,45,106,.35);box-shadow:0 4px 14px #00000014}body:not(.theme-dark) .seasonal-suggestion__title{color:#111}body:not(.theme-dark) .seasonal-suggestion__reason{color:#555}body:not(.theme-dark) .seasonal-suggestion__dismiss{color:#888}.playlist-checkbox{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.checkbox-label{display:flex;align-items:center;flex:1;min-width:0;cursor:pointer;padding-left:var(--space-xs)}.playlist-name{font-weight:var(--font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selection-summary{padding:var(--space-sm) var(--space-md);background:#f0fdf4;border-radius:var(--radius-md);margin-top:var(--space-sm);font-weight:var(--font-weight-medium);color:#166534}.selection-summary #selected-count,.selection-summary #total-songs{font-family:Outfit,sans-serif;font-weight:700}body.theme-dark .selection-summary{background:#00f5ff1a;border:1px solid var(--color-accent-secondary);color:var(--color-text-white)}body.theme-dark .selection-summary #selected-count,body.theme-dark .selection-summary #total-songs{color:var(--color-accent-secondary);font-size:1.1em}.media-player-item.is-selectable{cursor:pointer}.media-player-radio{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.radio-label{display:flex;align-items:center;flex:1;min-width:0;cursor:pointer;padding-left:var(--space-xs)}.player-name{font-weight:var(--font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.state-dot{display:inline-block;width:var(--space-sm);height:var(--space-sm);border-radius:50%;margin-right:6px}.state-dot.state-playing{background:var(--color-success-alt)}.state-dot.state-idle,.state-dot.state-paused,.state-dot.state-off{background:var(--color-text-light)}button,.btn{min-width:44px;min-height:44px;padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast),opacity var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);touch-action:manipulation}.form-input{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text-primary);margin-bottom:var(--space-sm);box-sizing:border-box}body.theme-dark .form-input{color:#e2e8f0;background:#ffffff1a;border-color:#ffffff26}.btn-primary{background:var(--color-accent-primary);color:#fff}.btn-primary:hover{background:#e0245c}.btn-primary:disabled{background:var(--color-text-light);cursor:not-allowed;opacity:.55}body.theme-dark .btn-primary{color:#fff}.btn-secondary{background:var(--color-border-light);color:var(--color-text-secondary)}.btn-secondary:hover{background:var(--color-border-medium)}.btn-ghost{background:transparent;color:var(--color-accent-primary);border:1.5px solid var(--color-accent-primary)}.btn-ghost:hover{background:#ff2d6a14}.btn-ghost:disabled{opacity:.45;cursor:not-allowed}.btn-outline{background:transparent;color:var(--color-text-secondary);border:1.5px solid var(--color-border-medium)}.btn-outline:hover{background:var(--color-border-light);border-color:var(--color-text-secondary)}.btn-outline:disabled{opacity:.45;cursor:not-allowed}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}a{color:var(--color-accent-blue);text-decoration:none}a:hover{text-decoration:underline}.empty-state{text-align:center;padding:var(--space-lg);color:var(--color-text-muted)}.empty-state p{margin-bottom:var(--space-sm)}footer{margin-top:var(--space-lg);text-align:center;color:var(--color-text-light);font-size:var(--font-size-sm)}.hidden{display:none!important}body.theme-dark{background:var(--color-bg-primary);color:var(--color-text-white)}body.theme-dark .player-container{background:var(--color-bg-primary)}body.theme-dark .card-section{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);color:var(--color-text-white)}.admin-content .card-section{margin-bottom:var(--space-md)}body.theme-dark .card-section:hover{box-shadow:0 4px 20px #9d4edd4d}body.theme-dark .card-section h2,body.theme-dark .card-section .section-header,body.theme-dark .card-section p,body.theme-dark .card-section .name,body.theme-dark .card-section .player-name,body.theme-dark .card-section .playlist-name,body.theme-dark .card-section .list-item,body.theme-dark .card-section .radio-label,body.theme-dark .card-section .checkbox-label,body.theme-dark .card-section strong,body.theme-dark .card-section span{color:var(--color-text-white)}body.theme-dark .card-section .meta{color:var(--color-text-neon-muted)}body.theme-dark .game-info{background:#ffffff0d;border:1px solid var(--color-neon-purple);border-radius:var(--radius-md);color:var(--color-text-white)}body.theme-dark .game-info p,body.theme-dark .game-info strong,body.theme-dark .game-info span{color:var(--color-text-white)}body.theme-dark .btn-primary span,body.theme-dark .btn-secondary span{color:inherit}body.theme-dark .lang-btn:not(.lang-btn--active),body.theme-dark .timer-btn:not(.timer-btn--active),body.theme-dark .difficulty-btn:not(.difficulty-btn--active){color:var(--color-text-primary, #1a1a2e)}body.theme-dark .lang-btn:not(.lang-btn--active) span,body.theme-dark .timer-btn:not(.timer-btn--active) span,body.theme-dark .difficulty-btn:not(.difficulty-btn--active) span{color:var(--color-text-primary, #1a1a2e)}.language-selector{display:flex;justify-content:center;gap:var(--space-sm)}.lang-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);border:2px solid var(--color-border-medium);border-radius:var(--radius-md);background:var(--color-bg-white);color:var(--color-text-primary);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:all .15s ease}.lang-btn:hover{border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.lang-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.lang-btn--active:hover{background:var(--color-accent-brand-hover)}.lang-flag{font-size:1.25em}.lang-name{font-weight:600}.timer-selector{display:flex;justify-content:center;gap:var(--space-sm)}.timer-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);min-width:90px;border:2px solid var(--color-border-neon);border-radius:var(--radius-md);background:var(--color-bg-card);color:var(--color-text-secondary);font-family:inherit;cursor:pointer;transition:all .15s ease}.timer-btn:hover{border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.timer-btn:focus{outline:none;border-color:var(--color-accent-brand);box-shadow:0 0 0 3px #1ed7604d}.timer-btn:focus-visible{outline:2px solid var(--color-accent-brand);outline-offset:2px}.timer-btn:disabled{opacity:.5;cursor:not-allowed;border-color:var(--color-border-neon);background:var(--color-bg-card)}.timer-btn:disabled:hover{border-color:var(--color-border-neon);background:var(--color-bg-card)}.timer-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.timer-btn--active:hover{background:var(--color-accent-brand-hover)}.timer-icon{font-size:1.5em}.timer-label{font-weight:600;font-size:.875rem}.timer-value{font-size:.75rem;opacity:.8}.timer-btn--active .timer-value{opacity:1}.difficulty-selector{display:flex;justify-content:center;gap:var(--space-sm)}.difficulty-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);min-width:90px;border:2px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg-card);color:var(--color-text-secondary);font-family:inherit;cursor:pointer;transition:all .15s ease}.difficulty-btn:hover{border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.difficulty-btn:focus{outline:none;border-color:var(--color-accent-brand);box-shadow:0 0 0 3px #6366f14d}.difficulty-btn:focus-visible{outline:2px solid var(--color-accent-brand);outline-offset:2px}.difficulty-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.difficulty-btn--active:hover{background:var(--color-accent-brand-hover)}.difficulty-icon{font-size:1.5em}.difficulty-label{font-weight:600;font-size:.875rem}.difficulty-description{text-align:center;font-size:.8125rem;color:var(--color-text-muted);margin-top:var(--space-sm);line-height:1.5;max-width:400px;margin-left:auto;margin-right:auto}.toggle-option{display:flex;align-items:center;gap:var(--space-md);cursor:pointer;padding:var(--space-sm) 0}.toggle-option input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.toggle-switch{position:relative;width:48px;height:26px;background:var(--color-border);border-radius:13px;transition:background .2s ease;flex-shrink:0}.toggle-switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s ease}.toggle-option input:checked+.toggle-switch{background:var(--color-success)}.toggle-option input:checked+.toggle-switch:after{transform:translate(22px)}.toggle-option input:focus-visible+.toggle-switch{outline:2px solid var(--color-accent-primary);outline-offset:2px}.toggle-label{font-size:var(--font-size-md);font-weight:500;color:var(--color-text)}.option-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:var(--space-xs) 0 0 0;padding-left:calc(48px + var(--space-md))}body.theme-dark .toggle-switch{background:var(--color-dark-border, #333)}.provider-selector{display:flex;justify-content:center;gap:var(--space-sm)}.provider-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);min-width:100px;border:2px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg-card);color:var(--color-text-secondary);font-family:inherit;cursor:pointer;transition:all .15s ease}.provider-btn:hover:not(.provider-btn--disabled){border-color:var(--color-accent-brand);background:var(--color-bg-card-alt)}.provider-btn:focus{outline:none;border-color:var(--color-accent-brand);box-shadow:0 0 0 3px #6366f14d}.provider-btn:focus-visible{outline:2px solid var(--color-accent-brand);outline-offset:2px}.provider-btn--active{border-color:var(--color-accent-brand);background:var(--color-accent-brand);color:var(--color-text-white)}.provider-btn--active:hover{background:var(--color-accent-brand-hover)}.provider-icon{font-size:1.5em}.provider-label{font-weight:600;font-size:.875rem}.playlist-coverage{font-size:.75rem;color:var(--color-text-muted)}.playlist-coverage--warning{color:var(--color-warning)}.playlist-coverage--none{color:var(--color-error)}.playlist-filter-bar{display:flex;flex-direction:column;gap:.75rem;padding:.75rem 0;margin-bottom:.5rem;border-bottom:1px solid var(--color-border)}.filter-dropdowns{display:flex;flex-wrap:wrap;gap:.5rem}.filter-dropdown{padding:.5rem 2rem .5rem .75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md, 6px);font-size:.875rem;font-weight:500;color:var(--color-text-primary, #333);cursor:pointer;transition:all .15s ease;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;min-width:120px}.filter-dropdown:hover{border-color:var(--color-primary, #6c5ce7)}.filter-dropdown:focus{outline:none;border-color:var(--color-primary, #6c5ce7);box-shadow:0 0 0 2px #6c5ce733}.filter-dropdown:not([value=""]):has(option:checked:not([value=""])){border-color:var(--color-primary, #6c5ce7);background-color:#6c5ce714}.filter-summary{display:flex;align-items:center;gap:.75rem;font-size:.8125rem}.filter-summary-text{color:var(--color-text-secondary, #666)}.filter-clear{padding:.25rem .5rem;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm, 4px);font-size:.75rem;color:var(--color-text-secondary, #666);cursor:pointer;transition:all .15s ease}.filter-clear:hover{background:var(--color-error, #e74c3c);border-color:var(--color-error, #e74c3c);color:#fff}body.theme-dark .filter-dropdown{background-color:#ffffff14;border-color:#ffffff26;color:#ffffffd9;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M2 4l4 4 4-4'/%3E%3C/svg%3E")}body.theme-dark .filter-dropdown:hover,body.theme-dark .filter-dropdown:focus{border-color:#6c5ce799}body.theme-dark .filter-summary-text{color:#fff9}body.theme-dark .filter-clear{border-color:#fff3;color:#fff9}.filter-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.4375rem .875rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:.8125rem;font-weight:600;color:var(--color-text-primary, #333);cursor:pointer;transition:all .15s ease;white-space:nowrap}.filter-tag .filter-count{font-size:.6875rem;opacity:.8}.playlist-tags{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.375rem}.playlist-tag{display:inline-block;padding:.1875rem .5rem;background:var(--color-primary-light, #e8e4f8);border:1px solid var(--color-primary-border, #c9bff2);border-radius:var(--radius-full);font-size:.6875rem;font-weight:500;color:var(--color-primary-dark, #5b4cad);max-width:6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-tag--more{background:transparent;border-color:var(--color-primary-border, #c9bff2);color:var(--color-text-secondary, #666);font-style:italic}body.theme-dark .playlist-tag{background:#6c5ce733;border-color:#6c5ce766;color:#b8acf6}body.theme-dark .playlist-tag--more{background:transparent;color:#ffffff80}.difficulty-badge{display:inline-block;padding:.125rem .5rem;border-radius:var(--radius-full);font-size:.75rem;font-weight:600;margin-left:var(--space-xs)}.difficulty-badge--easy{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success)}.difficulty-badge--normal{background:var(--color-accent-brand-bg);color:var(--color-accent-brand);border:1px solid var(--color-accent-brand)}.difficulty-badge--hard{background:var(--color-error-bg);color:var(--color-error);border:1px solid var(--color-error)}.supported-players-hint{font-size:.75rem;color:var(--color-text-muted);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border-light)}.supported-players-hint a{color:var(--color-accent-primary);text-decoration:none}.supported-players-hint a:hover{text-decoration:underline}body.theme-dark .supported-players-hint{color:var(--color-text-neon-muted);border-top-color:var(--color-border-neon)}.player-info{display:flex;flex-direction:column;gap:2px}.platform-badge{display:inline-flex;align-items:center;gap:4px;font-size:.625rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.025em;background:#80808026;color:var(--color-text-muted)}.platform-badge--music_assistant{background:#4caf5026;color:#4caf50}.platform-badge--sonos{background:#ff980026;color:#ff9800}.platform-badge--alexa_media,.platform-badge--alexa{background:#00a8e126;color:#00a8e1}body.theme-dark .platform-badge{background:#ffffff14}body.theme-dark .platform-badge--music_assistant{background:#4caf5033;color:#81c784}body.theme-dark .platform-badge--sonos{background:#ff980033;color:#ffb74d}body.theme-dark .platform-badge--alexa_media,body.theme-dark .platform-badge--alexa{background:#00a8e133;color:#4fc3f7}.no-players-message{text-align:center;padding:var(--space-lg)}.no-players-message h3{font-size:1.125rem;margin-bottom:var(--space-sm)}.no-players-message p{font-size:.875rem;color:var(--color-text-muted);margin-bottom:var(--space-sm)}.no-players-message .button-group{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-md)}.provider-chips{justify-content:flex-start}.provider-chips .chip{display:inline-flex;align-items:center;gap:6px}.provider-icon{font-size:1rem}.warning-box{background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:var(--radius-sm);padding:var(--space-sm);margin-top:var(--space-sm);font-size:.875rem}.warning-box p{margin:0 0 var(--space-xs) 0}.warning-box p:last-child{margin-bottom:0}.warning-caveat{font-size:.8125rem;opacity:.85}#provider-hint{font-size:.8125rem;color:var(--color-text-muted);margin-top:var(--space-sm)}body.theme-dark #provider-hint{color:var(--color-text-neon-muted)}.chip--disabled,.provider-btn--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.hint-text{font-size:.75rem;color:var(--color-text-muted);margin:var(--space-xs) 0 0 calc(var(--space-md) + 24px);font-style:italic}body.theme-dark .hint-text{color:var(--color-text-neon-muted)}body.theme-dark .modal-content,body.theme-dark .modal-content h2,body.theme-dark .modal-content p{color:var(--color-text-primary)}body.theme-dark .modal-content .name-input{background:var(--color-bg-white);border-color:var(--color-border-medium);color:var(--color-text-primary)}body.theme-dark .modal-content .name-input::placeholder{color:var(--color-text-muted)}body.theme-dark .modal-content .name-input:focus{border-color:var(--color-accent-blue);box-shadow:0 0 0 3px #3b82f61a}.card{background:var(--color-dark-surface);border-radius:var(--radius-lg);padding:var(--space-md);border:1px solid var(--color-border-neon)}.card-glass{background:var(--color-dark-surface);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg)}.btn-neon{background:var(--color-accent-primary);color:var(--color-text-white);border:none;border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast)}.btn-neon:hover{background:#ff4080}.btn-neon:active{transform:scale(.98)}.btn-glow{transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.btn-glow:hover{box-shadow:var(--glow-primary)}.btn-glow:active{transform:scale(.98);box-shadow:var(--glow-primary)}.btn-glow-secondary:hover{box-shadow:var(--glow-secondary)}.btn-glow-success:hover{box-shadow:var(--glow-success)}.text-glow{text-shadow:0 0 10px var(--color-accent-primary),0 0 20px var(--color-accent-primary),0 0 30px var(--color-accent-primary)}.text-glow-cyan{text-shadow:0 0 10px var(--color-accent-secondary),0 0 20px var(--color-accent-secondary),0 0 30px var(--color-accent-secondary)}.text-glow-success{text-shadow:0 0 10px var(--color-success-neon),0 0 20px var(--color-success-neon),0 0 30px var(--color-success-neon)}.text-neon-white{color:var(--color-text-white)}.text-neon-muted{color:var(--color-text-neon-muted)}.text-neon-primary{color:var(--color-accent-primary)}.text-neon-secondary{color:var(--color-accent-secondary)}body.theme-dark .player-container h1,body.theme-dark .lobby-header h1,body.theme-dark .game-container h1,body.theme-dark .reveal-container h1,body.theme-dark .end-container h1{color:var(--color-text-white)}body.theme-dark .player-container p,body.theme-dark .hint,body.theme-dark .player-count{color:var(--color-text-neon-muted)}body.theme-dark .join-form>p{color:var(--color-text-neon-muted)}body.theme-dark .player-card{background:var(--color-dark-surface);border-color:var(--color-border-neon)}body.theme-dark .player-card--you{background:#ff2d6a1a;border-color:var(--color-accent-primary)}body.theme-dark .player-name{color:var(--color-text-white)}body.theme-dark .you-badge{color:var(--color-accent-primary)}body.theme-dark .name-input{background:var(--color-dark-surface);border-color:var(--color-border-neon);color:var(--color-text-white)}body.theme-dark .name-input:focus{border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #ff2d6a33}body.theme-dark .name-input::placeholder{color:var(--color-text-neon-muted)}body.theme-dark .join-btn{background:var(--color-accent-primary);color:var(--color-text-white)}body.theme-dark .join-btn:hover{box-shadow:var(--glow-primary)}body.theme-dark .qr-share-area{background:var(--color-dark-surface);border:1px solid var(--color-border-neon)}body.theme-dark .qr-hint{color:var(--color-text-neon-muted)}body.theme-dark .qr-share-header{color:var(--color-text-white)}body.theme-dark .qr-share-chevron,body.theme-dark .lobby-status{color:var(--color-text-neon-muted)}body.theme-dark .game-container{background:var(--color-bg-primary)}body.theme-dark .round-indicator-text,body.theme-dark .timer{color:var(--color-text-white)}body.theme-dark .timer--warning{color:var(--color-warning);text-shadow:0 0 10px var(--color-warning);animation:timer-pulse-subtle 1s ease-in-out infinite}body.theme-dark .timer--critical{color:var(--color-error-neon);text-shadow:0 0 15px var(--color-error-neon);animation:timer-pulse-intense .5s ease-in-out infinite}body.theme-dark .player-avatar{background:var(--color-dark-surface-hover);color:var(--color-text-neon-muted)}body.theme-dark .player-indicator.is-submitted .player-avatar{background:var(--color-success-neon);color:var(--color-bg-primary);box-shadow:var(--glow-success)}body.theme-dark #selected-year{color:var(--color-text-white)}body.theme-dark .slider-label{color:var(--color-text-neon-muted)}body.theme-dark .year-slider{background:var(--color-dark-surface)}body.theme-dark .year-slider::-webkit-slider-thumb{background:var(--color-accent-primary);box-shadow:var(--glow-primary)}body.theme-dark .year-slider::-moz-range-thumb{background:var(--color-accent-primary);box-shadow:var(--glow-primary)}body.theme-dark .submit-btn{background:var(--color-accent-primary)}body.theme-dark .submit-btn:hover{box-shadow:var(--glow-primary)}body.theme-dark .submitted-confirmation{background:var(--color-success-neon);color:var(--color-bg-primary);box-shadow:var(--glow-success)}body.theme-dark .reveal-container{background:var(--color-bg-primary)}body.theme-dark .reveal-round-info,body.theme-dark .correct-year-label{color:var(--color-text-neon-muted)}body.theme-dark .correct-year{color:var(--color-success-neon);text-shadow:0 0 10px var(--color-success-neon),0 0 20px var(--color-success-neon)}body.theme-dark .song-title{color:var(--color-text-white)}body.theme-dark .song-artist{color:var(--color-text-neon-muted)}body.theme-dark .fun-fact-container{background:#ff660026;border:1px solid rgba(255,102,0,.3)}body.theme-dark .fun-fact-text{color:var(--color-warning)}body.theme-dark .reveal-emotion--exact{color:var(--color-success-neon);text-shadow:0 0 20px var(--color-success-neon),0 0 40px var(--color-success-neon)}body.theme-dark .reveal-emotion--close{color:var(--color-warning);text-shadow:0 0 15px var(--color-warning)}body.theme-dark .reveal-emotion--wrong{color:var(--color-text-neon-muted)}body.theme-dark .reveal-emotion--missed{color:var(--color-text-neon-muted);opacity:.6}body.theme-dark .personal-result{background:var(--color-dark-surface);border:1px solid var(--color-border-neon)}body.theme-dark .result-header,body.theme-dark .result-label{color:var(--color-text-neon-muted)}body.theme-dark .result-value{color:var(--color-text-white)}body.theme-dark .result-score{color:var(--color-accent-secondary);text-shadow:0 0 10px var(--color-accent-secondary)}body.theme-dark .leaderboard{background:var(--color-dark-surface);border:1px solid var(--color-border-neon);box-shadow:none}body.theme-dark .leaderboard-header{background:var(--color-dark-card);border-color:var(--color-border-neon)}body.theme-dark .leaderboard-title{color:var(--color-text-white)}body.theme-dark .leaderboard-entry{border-color:var(--color-border-neon)}body.theme-dark .leaderboard-entry.is-current{background:#ff2d6a1a;border-left-color:var(--color-accent-primary)}body.theme-dark .entry-rank{color:var(--color-text-neon-muted)}body.theme-dark .entry-name{color:var(--color-text-white)}body.theme-dark .entry-score{color:var(--color-accent-secondary)}body.theme-dark .leaderboard-entry--climbing{animation:leaderboard-climb-dark .4s ease-out}body.theme-dark .leaderboard-entry--falling{animation:leaderboard-fall-dark .4s ease-out}@keyframes leaderboard-climb-dark{0%{transform:translateY(10px);opacity:.7;background:#00ff8826}to{transform:translateY(0);opacity:1;background:transparent}}@keyframes leaderboard-fall-dark{0%{transform:translateY(-10px);opacity:.7;background:#ff2d6a26}to{transform:translateY(0);opacity:1;background:transparent}}body.theme-dark .rank-up{color:var(--color-success-neon);text-shadow:0 0 5px var(--color-success-neon)}body.theme-dark .rank-down{color:var(--color-error-neon);text-shadow:0 0 5px var(--color-error-neon)}body.theme-dark .streak-indicator{color:var(--color-warning)}body.theme-dark .streak-indicator--hot{text-shadow:0 0 10px var(--color-warning),0 0 20px var(--color-warning)}body.theme-dark .leaderboard-separator{color:var(--color-text-neon-muted);border-color:var(--color-border-neon)}body.theme-dark .leaderboard-entry.is-top-1{background:linear-gradient(90deg,#ffd70026,#ffd7000d)}body.theme-dark .leaderboard-entry.is-top-1 .entry-rank{color:gold;text-shadow:0 0 10px rgba(255,215,0,.5)}body.theme-dark .leaderboard-entry.is-top-2{background:linear-gradient(90deg,#c0c0c026,#c0c0c00d)}body.theme-dark .leaderboard-entry.is-top-2 .entry-rank{color:silver;text-shadow:0 0 10px rgba(192,192,192,.5)}body.theme-dark .leaderboard-entry.is-top-3{background:linear-gradient(90deg,#cd7f3226,#cd7f320d)}body.theme-dark .leaderboard-entry.is-top-3 .entry-rank{color:#cd7f32;text-shadow:0 0 10px rgba(205,127,50,.5)}body.theme-dark .end-container{background:var(--color-bg-primary)}body.theme-dark .end-title{color:var(--color-text-white)}body.theme-dark .end-subtitle{color:var(--color-text-neon-muted)}body.theme-dark .your-result{background:var(--color-dark-surface);border:1px solid var(--color-border-neon)}body.theme-dark .your-result-header{color:var(--color-accent-primary)}body.theme-dark .your-result-rank{color:var(--color-text-white)}body.theme-dark .your-result-score{color:var(--color-text-neon-muted)}body.theme-dark .stat-value{color:var(--color-accent-secondary)}body.theme-dark .stat-label{color:var(--color-text-neon-muted)}body.theme-dark .podium-name{color:var(--color-text-white)}body.theme-dark .podium-score{color:var(--color-text-neon-muted)}body.theme-dark .final-leaderboard{background:var(--color-dark-surface);border:1px solid var(--color-border-neon);box-shadow:none}body.theme-dark .final-leaderboard-header{background:var(--color-dark-card);color:var(--color-text-white)}body.theme-dark .final-entry{border-color:var(--color-border-neon)}body.theme-dark .final-entry.is-current{background:#ff2d6a1a}body.theme-dark .final-rank{color:var(--color-text-neon-muted)}body.theme-dark .final-name{color:var(--color-text-white)}body.theme-dark .final-score{color:var(--color-accent-secondary)}body.theme-dark .new-game-btn{background:var(--color-success-neon);color:var(--color-bg-primary);box-shadow:var(--glow-success)}body.theme-dark .new-game-btn:hover{background:#4dff1f}body.theme-dark .end-player-message,body.theme-dark .rejoin-hint{color:var(--color-text-neon-muted)}body.theme-dark .paused-container{background:var(--color-bg-primary)}body.theme-dark .paused-container h1{color:var(--color-text-white)}body.theme-dark .paused-container>p{color:var(--color-text-neon-muted)}body.theme-dark .paused-hint{color:var(--color-text-neon-muted)}body.theme-dark .connection-lost-container h1{color:var(--color-text-white)}body.theme-dark .connection-lost-container>p{color:var(--color-text-neon-muted)}body.theme-dark .connection-lost-hint{color:var(--color-text-neon-muted)}body.theme-dark .qr-modal-content{background:var(--color-bg-primary);border:1px solid var(--color-border-neon)}body.theme-dark .qr-modal-label{color:var(--color-text-white)}.qr-print-area{text-align:center;padding:var(--space-lg) 0}.qr-container{display:inline-block;padding:var(--space-md);background:var(--color-bg-white);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}#qr-code{display:inline-block}#qr-code img{display:block}.qr-instruction{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-top:var(--space-md)}.join-url{font-family:var(--font-mono);font-size:var(--font-size-base);color:var(--color-text-muted);margin-top:var(--space-sm);word-break:break-all;user-select:all;cursor:text}.lobby-controls{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin:var(--space-md) 0}.btn-dashboard{display:flex;align-items:center;gap:var(--space-xs)}.player-list{margin-top:var(--space-md);border-top:1px solid var(--color-border-light);padding-top:var(--space-md)}.game-controls-bar{display:flex;gap:var(--space-sm);justify-content:center;margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border-light)}.game-info{background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.game-info p{margin-bottom:var(--space-sm)}.game-info p:last-child{margin-bottom:0}@media print{body *{visibility:hidden}.qr-print-area,.qr-print-area *{visibility:visible}.qr-print-area{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}#qr-code{width:400px!important;height:400px!important}#qr-code img,#qr-code canvas{width:400px!important;height:400px!important}.qr-instruction{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin-top:var(--space-xl)}.join-url{font-size:var(--font-size-base);font-family:var(--font-mono);margin-top:var(--space-sm)}.no-print{display:none!important}}.player-container{max-width:500px;margin:0 auto;padding-top:max(var(--space-md),env(safe-area-inset-top));padding-bottom:max(var(--space-md),env(safe-area-inset-bottom));padding-left:max(var(--space-sm),env(safe-area-inset-left));padding-right:max(var(--space-sm),env(safe-area-inset-right));text-align:center;min-height:100vh;display:flex;flex-direction:column;justify-content:flex-start}@media(min-width:768px){.player-container{max-width:480px;margin-left:auto;margin-right:auto;padding-left:var(--space-lg);padding-right:var(--space-lg)}}.view{display:block;overflow-x:hidden}.view.hidden{display:none}.error-icon{font-size:var(--font-size-timer);margin-bottom:var(--space-md)}.player-container h1{margin-bottom:var(--space-sm);color:var(--color-text-primary)}.player-container p{color:var(--color-text-muted);margin-bottom:var(--space-sm)}.hint{font-size:var(--font-size-base);color:var(--color-text-light)}.coming-soon{font-style:italic;color:var(--color-text-muted)}.spinner{width:40px;height:40px;margin:0 auto var(--space-md);border:4px solid var(--color-bg-card-alt);border-top:4px solid var(--color-accent-blue);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#qr-code{max-width:100%}#qr-code img,#qr-code canvas{max-width:100%;height:auto}@media(min-width:481px)and (max-width:768px){.qr-container{padding:var(--space-xl)}}@media(min-width:769px){.qr-container{padding:var(--space-lg)}}.join-form{max-width:400px;margin:0 auto;padding:var(--space-lg);text-align:center}.join-form h1{margin-bottom:var(--space-sm);font-size:var(--font-size-2xl)}.join-form>p{margin-bottom:var(--space-lg);color:var(--color-text-muted)}.form-group{margin-bottom:var(--space-md)}.name-input{width:100%;padding:14px var(--space-md);font-size:var(--font-size-lg);border:2px solid var(--color-border-medium);border-radius:var(--radius-md);min-height:48px;box-sizing:border-box}.name-input:focus{border-color:var(--color-accent-blue);outline:none;box-shadow:0 0 0 3px #3b82f61a}.join-btn{width:100%;min-height:48px;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.validation-msg{margin-top:var(--space-sm);font-size:var(--font-size-base);color:var(--color-error);text-align:left}.lobby-container{max-width:500px;margin:0 auto;padding:var(--space-lg) var(--space-md)}.lobby-header{text-align:center;margin-bottom:var(--space-lg)}.lobby-header h1{font-size:var(--font-size-2xl);margin-bottom:var(--space-sm);color:var(--color-text-primary)}.player-count{font-size:var(--font-size-md);color:var(--color-text-muted)}.player-list{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-lg)}.player-card{display:flex;align-items:center;padding:var(--space-sm) var(--space-md);min-height:48px;background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-border-light);transition:all var(--transition-normal)}.player-card--you{background:#eff6ff;border-color:var(--color-accent-blue)}.player-card--disconnected{opacity:.5;filter:grayscale(.3);transition:opacity .3s ease,filter .3s ease}.away-badge{font-size:var(--font-size-sm);color:var(--color-text-muted);font-style:italic;margin-left:var(--space-xs)}.player-name{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-md);color:var(--color-text-primary)}.you-badge{font-size:var(--font-size-sm);color:var(--color-accent-blue);font-weight:var(--font-weight-medium)}.player-card.is-new{animation:playerJoin var(--transition-slow) ease-out;background:#ecfdf5;border-color:var(--color-success)}@keyframes playerJoin{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.player-list--virtual{position:relative;overflow-y:auto;max-height:320px;-webkit-overflow-scrolling:touch;contain:layout style paint}.player-list--virtual .virtual-spacer-top,.player-list--virtual .virtual-spacer-bottom{flex-shrink:0;pointer-events:none}.player-list--virtual .virtual-content-wrapper{display:flex;flex-direction:column;gap:var(--space-sm)}.player-list--virtual .player-card{flex-shrink:0;height:52px;box-sizing:border-box}.qr-share-area{text-align:center;padding:var(--space-lg) var(--space-md);background:var(--color-bg-card);border-radius:var(--radius-lg);margin-bottom:var(--space-md)}.qr-icon{font-size:var(--font-size-xl)}.qr-container{display:inline-block;padding:var(--space-sm);background:var(--color-bg-white);border-radius:var(--radius-md);box-shadow:var(--shadow-md);cursor:pointer;min-width:150px;min-height:150px;transition:transform var(--transition-fast)}.qr-container:hover,.qr-container:focus{transform:scale(1.02);outline:2px solid var(--color-accent-blue);outline-offset:2px}.qr-container img{display:block;width:100%;height:auto}.qr-hint{margin-top:var(--space-sm);font-size:13px;color:var(--color-text-muted)}.qr-collapsible{padding:0}.qr-share-header{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);cursor:pointer;user-select:none;list-style:none;font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);min-height:44px}.qr-share-header::-webkit-details-marker{display:none}.qr-share-chevron{margin-left:var(--space-sm);transition:transform var(--transition-normal);font-size:.8rem;color:var(--color-text-muted)}.qr-collapsible[open] .qr-share-chevron{transform:rotate(180deg)}.qr-share-content{padding:0 var(--space-md) var(--space-lg);animation:qrSlideDown var(--transition-normal) ease-out}@keyframes qrSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.qr-collapsible:not([open]){padding-bottom:0}.qr-collapsible:not([open]) .qr-share-header{padding-bottom:var(--space-md)}@media(prefers-reduced-motion:reduce){.qr-share-chevron{transition:none}.qr-share-content{animation:none}}.dashboard-hint-container{margin-top:var(--space-md);text-align:center}.dashboard-hint-text{display:inline-flex;flex-direction:column;align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);color:#fff;background:var(--color-surface-dark);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);margin:0}.dashboard-hint-label{display:flex;align-items:center;gap:var(--space-xs);color:#fff}.dashboard-hint-icon{font-size:var(--font-size-base)}.dashboard-hint-url{font-family:monospace;color:var(--color-accent-secondary);font-size:var(--font-size-sm)}.qr-modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.qr-modal.hidden{display:none}.qr-modal-backdrop{position:absolute;inset:0;background:#000000bf}.qr-modal-content{position:relative;background:var(--color-bg-white);padding:var(--space-xl) var(--space-lg);border-radius:var(--radius-xl);text-align:center;max-width:90vw;max-height:90vh;animation:modalFadeIn var(--transition-fast)}.qr-modal-code{display:inline-block;padding:var(--space-md);background:var(--color-bg-white);border-radius:var(--radius-md);min-width:250px}.qr-modal-code img{display:block;width:100%;max-width:80vw;height:auto}.qr-modal-label{margin:var(--space-md) 0;font-size:var(--font-size-lg);color:var(--color-text-primary)}.qr-modal-close{min-width:120px;min-height:48px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.lobby-status{text-align:center;padding:var(--space-md);color:var(--color-text-muted)}.how-to-play{margin:var(--space-md) 0;background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-border-light)}.how-to-play-header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);cursor:pointer;user-select:none;list-style:none;font-weight:600;color:var(--color-text-primary);min-height:44px}.how-to-play-header::-webkit-details-marker{display:none}.how-to-play-icon{font-size:1.2rem}.how-to-play-chevron{margin-left:auto;transition:transform var(--transition-normal);font-size:.8rem;color:var(--color-text-secondary)}.how-to-play[open] .how-to-play-chevron{transform:rotate(180deg)}.how-to-play-content{padding:0 var(--space-md) var(--space-md);animation:howToPlaySlideDown var(--transition-normal) ease-out}.how-to-play-steps{margin:0;padding:0;list-style:none;color:var(--color-text-secondary);font-size:.9rem;line-height:1.6;counter-reset:step-counter}.how-to-play-steps li{margin-bottom:var(--space-sm);padding-left:var(--space-lg);position:relative;counter-increment:step-counter}.how-to-play-steps li:before{content:counter(step-counter) ".";position:absolute;left:0;width:var(--space-md);text-align:right;font-weight:600;color:var(--color-text-primary)}.how-to-play-steps li:last-child{margin-bottom:0}@keyframes howToPlaySlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.leave-game-container{text-align:center;padding:var(--space-md);position:sticky;bottom:0;background:linear-gradient(to top,var(--color-bg-card),transparent);z-index:var(--z-controls, 10)}.leave-game-container.hidden{display:none}body.theme-dark .leave-game-container{background:transparent}.btn-leave{opacity:.7;transition:opacity .2s ease}.btn-leave:hover{opacity:1}.admin-controls{padding:var(--space-lg) var(--space-md);text-align:center;background:linear-gradient(to top,var(--color-bg-card),transparent);position:sticky;bottom:0}.admin-controls.hidden{display:none}body.theme-dark .admin-controls{background:transparent}.btn-large{min-height:56px;font-size:var(--font-size-xl);padding:var(--space-md) var(--space-xl)}.btn-full-width{width:100%}.admin-hint{margin-top:var(--space-sm);font-size:var(--font-size-base);color:var(--color-text-muted)}.admin-lobby-actions{text-align:center;margin-top:var(--space-lg)}.admin-badge{font-size:var(--font-size-sm);color:var(--color-warning);margin-left:var(--space-xs)}.lobby-player-count-container{text-align:center;margin-bottom:var(--space-md)}.lobby-stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md);margin-bottom:var(--space-lg)}.stat-card--clickable{display:block;text-decoration:none;cursor:pointer;margin-bottom:var(--space-lg)}.stat-card--clickable:hover{border-color:var(--color-accent-secondary)}.dashboard-hint-card{background:#00f5ff0d;border-color:var(--color-accent-secondary)}.qr-section{text-align:center;padding:var(--space-xl) var(--space-lg);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-lg)}.qr-section .qr-container{display:inline-block;padding:var(--space-md);background:#fff;border-radius:var(--radius-md);margin-bottom:var(--space-md)}.qr-hint{font-size:1rem;color:var(--color-text-neon-muted);margin-bottom:var(--space-sm)}.qr-url-display{font-family:Outfit,sans-serif;font-size:1.125rem;font-weight:600;color:var(--color-accent-secondary);word-break:break-all}.player-list-section{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-lg)}.section-subheader{display:flex;align-items:center;gap:var(--space-sm);font-size:1rem;font-weight:600;color:var(--color-text-white);margin-bottom:var(--space-md)}.section-subheader .section-icon{font-size:1.25rem}.player-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-sm)}.player-cards-grid .player-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-md);min-height:80px;background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);text-align:center;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.player-cards-grid .player-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #9d4edd33}.player-cards-grid .player-card.is-new{background:#39ff141a;border-color:var(--color-success-neon);animation:playerCardJoin .5s ease-out}@keyframes playerCardJoin{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.player-cards-grid .player-card--disconnected{opacity:.5;filter:grayscale(.3)}.player-cards-grid .player-name{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-white);margin-bottom:var(--space-xs);display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap;justify-content:center}.player-cards-grid .admin-badge{font-size:1rem}.player-cards-grid .away-badge{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);display:block;width:100%}.kick-player-btn{position:relative;background:none;border:1px solid var(--color-border-dark);color:var(--color-text-muted);width:24px;height:24px;border-radius:50%;font-size:1rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-top:var(--space-xs);padding:0;transition:all .15s ease}.kick-player-btn:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.kick-player-btn:hover{background:var(--color-error);color:#fff;border-color:var(--color-error)}.lobby-actions{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border-dark)}.lobby-header-compact{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-md);text-align:left}.section-header--inline{margin-bottom:0;flex:1;min-width:120px;text-align:left}.stat-badge-bar{display:flex;align-items:center;gap:var(--space-md)}.stat-badge{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:#ffffff0d;border:1px solid var(--color-border-neon);border-radius:var(--radius-md);font-size:.875rem}.stat-badge-icon{font-size:1rem}.stat-badge-value{font-weight:600;color:var(--color-accent-secondary)}.stat-badge--status .stat-badge-value{color:var(--color-text-white)}.qr-section--compact{padding:var(--space-md);margin-bottom:var(--space-md)}.qr-section--compact .qr-container{padding:var(--space-sm);margin-bottom:var(--space-sm)}.qr-section--compact #qr-code{width:180px!important;height:180px!important}.qr-section--compact #qr-code img,.qr-section--compact #qr-code canvas{width:180px!important;height:180px!important}.qr-section--compact .qr-hint{font-size:.875rem;margin-bottom:var(--space-xs)}.qr-url-display--compact{font-size:.75rem;margin-bottom:var(--space-sm)}.dashboard-link{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:#00f5ff1a;border:1px solid var(--color-accent-secondary);border-radius:var(--radius-md);color:var(--color-accent-secondary);text-decoration:none;font-size:.875rem;transition:all .2s ease}.dashboard-link:hover{background:#00f5ff33}.dashboard-link-arrow{opacity:.7}.player-list-section--compact{padding:var(--space-sm);margin-bottom:var(--space-sm)}.section-subheader--compact{font-size:.875rem;margin-bottom:var(--space-sm)}.empty-state-inline{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);color:var(--color-text-neon-muted);font-size:.875rem;text-align:center}.lobby-actions--sticky{position:sticky;bottom:0;margin:0 calc(-1 * var(--space-md));padding:var(--space-sm) var(--space-md);background:var(--color-bg-primary);border-top:1px solid var(--color-border-dark);z-index:10;display:flex;flex-direction:column;gap:var(--space-sm, 8px)}@media(min-width:481px){.qr-section--compact #qr-code,.qr-section--compact #qr-code img,.qr-section--compact #qr-code canvas{width:240px!important;height:240px!important}.qr-section--compact{padding:var(--space-lg)}.lobby-actions--sticky{position:relative;margin:var(--space-lg) 0 0 0;padding:var(--space-md) 0 0 0;background:transparent}}.lobby-wordmark-header{display:flex;justify-content:center;align-items:center;padding:var(--space-md) var(--space-md) var(--space-sm);padding-top:env(safe-area-inset-top,16px)}.lobby-wordmark-header .wordmark{font-size:2rem}.lobby-container--compact{flex:1;padding:0 var(--space-sm) var(--space-2xl);max-width:500px;margin:0 auto;width:100%}.lobby-container--compact .section-collapsible{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-md);overflow:hidden}.lobby-container--compact .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.lobby-container--compact .section-header-collapsible .section-icon{font-size:1rem}.lobby-container--compact .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-text-neon-muted);padding:2px 8px;background:#ffffff0d;border-radius:var(--radius-sm)}.lobby-container--compact .section-toggle{font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease;margin-left:var(--space-sm)}.lobby-container--compact .section-header-collapsible>.section-toggle:nth-child(3){margin-left:auto}.lobby-container--compact .section-collapsible:not(.collapsed) .section-toggle{transform:rotate(180deg)}.lobby-container--compact .section-content{padding:0 var(--space-md) var(--space-md)}.lobby-container--compact .section-collapsible.collapsed .section-content{display:none}.lobby-status-compact{text-align:center;padding:var(--space-md);color:var(--color-text-neon-muted);font-size:.875rem}.how-to-play-steps-compact{list-style:decimal;padding-left:var(--space-lg);margin:0;font-size:.875rem;color:var(--color-text-neon-muted)}.how-to-play-steps-compact li{padding:var(--space-xs) 0}.stat-badge--difficulty{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em}.stat-badge--difficulty:empty{display:none}.admin-content .section-collapsible{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-md);overflow:hidden}.admin-content .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.admin-content .section-header-collapsible .section-icon{font-size:1rem}.admin-content .section-header-collapsible .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-accent-secondary);background:#00f5ff1a;padding:2px 8px;border-radius:var(--radius-sm)}.admin-content .section-header-collapsible .section-toggle{margin-left:var(--space-sm);font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease}.admin-content .section-collapsible:not(.collapsed) .section-toggle{transform:rotate(180deg)}.admin-content .section-collapsible .section-content{padding:0 var(--space-md) var(--space-md)}.admin-content .section-collapsible.collapsed .section-content{display:none}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) 0;border-bottom:1px solid rgba(255,255,255,.05)}.setting-row:last-child{border-bottom:none}.setting-group{border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:var(--space-sm);margin-bottom:var(--space-sm)}.setting-group:last-child{border-bottom:none}.setting-group .setting-row{border-bottom:none}.tts-group-title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0 0 var(--space-xs) 0;opacity:.8}.setting-hint{font-size:.7rem;color:var(--color-text-muted);margin:0 0 var(--space-xs) calc(var(--space-xs) + 24px);line-height:1.3;opacity:.75}body.theme-dark .setting-hint{color:var(--color-text-neon-muted)}.setting-label{display:flex;align-items:center;gap:var(--space-xs);font-size:.875rem;color:var(--color-text-white)}.setting-icon{font-size:.875rem}.chip-group{display:flex;gap:4px}.chip{padding:4px 10px;font-size:.75rem;font-weight:500;background:#ffffff0d;border:1px solid var(--color-border-neon);border-radius:var(--radius-sm);color:var(--color-text-neon-muted);cursor:pointer;transition:all .15s ease}.chip:hover{background:#ffffff1a;color:var(--color-text-white)}.chip.chip--active{background:#00f5ff33;border-color:var(--color-accent-secondary);color:var(--color-accent-secondary)}.toggle-compact{display:flex;align-items:center;cursor:pointer}.toggle-compact input{position:absolute;opacity:0;width:0;height:0}.toggle-switch-compact{width:36px;height:20px;background:#ffffff1a;border-radius:10px;position:relative;transition:background .2s ease}.toggle-switch-compact:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--color-text-neon-muted);border-radius:50%;transition:all .2s ease}.toggle-compact input:checked+.toggle-switch-compact{background:#00f5ff4d}.toggle-compact input:checked+.toggle-switch-compact:after{left:18px;background:var(--color-accent-secondary)}.admin-actions{position:sticky;bottom:0;background:var(--color-bg-primary);padding:var(--space-sm) 0;margin-top:var(--space-sm)}.admin-actions .status-error{margin-bottom:var(--space-xs);font-size:.875rem}.modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.modal.hidden{display:none}.modal-backdrop{position:absolute;inset:0;background:#00000080}.modal-content{position:relative;background:var(--color-bg-white);padding:var(--space-lg);border-radius:var(--radius-lg);max-width:400px;width:90%;animation:modalFadeIn var(--transition-fast)}.modal-content h2{margin-bottom:var(--space-sm);font-size:var(--font-size-xl)}.modal-content p{margin-bottom:var(--space-md);color:var(--color-text-muted)}.modal-actions{display:flex;gap:var(--space-sm);margin-top:var(--space-lg)}.modal-actions .btn{flex:1}.game-placeholder{text-align:center;padding:var(--space-2xl) var(--space-lg)}.game-placeholder h1{font-size:var(--font-size-3xl);margin-bottom:var(--space-md);color:var(--color-text-primary)}.game-placeholder p{font-size:var(--font-size-md);color:var(--color-text-muted)}.reveal-placeholder{text-align:center;padding:var(--space-2xl) var(--space-lg)}.reveal-placeholder h1{font-size:var(--font-size-4xl);margin-bottom:var(--space-md);color:var(--color-text-primary)}.reveal-placeholder p{font-size:var(--font-size-md);color:var(--color-text-muted)}.end-container{text-align:center;padding:var(--space-2xl) var(--space-lg)}.end-icon{font-size:var(--font-size-timer);margin-bottom:var(--space-md)}.end-container h1{font-size:var(--font-size-3xl);margin-bottom:var(--space-sm);color:var(--color-text-primary)}.end-message{font-size:var(--font-size-lg);color:#4b5563;margin-bottom:var(--space-sm)}.game-container{display:flex;flex-direction:column;align-items:center;padding:var(--space-sm);padding-bottom:max(var(--space-md),env(safe-area-inset-bottom));max-width:400px;margin:0 auto}.game-sticky-bar{position:sticky;top:0;z-index:50;width:100%;padding:var(--space-xs) var(--space-sm);background:var(--color-bg-light);border-bottom:1px solid var(--color-border-light)}body.theme-dark .game-sticky-bar{background:var(--color-bg-primary);border-bottom-color:var(--color-border-dark)}.game-sticky-bar .timer-container{margin-bottom:0}.game-sticky-bar .timer{font-size:2rem}.game-header-compact{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:var(--space-sm);padding:0 var(--space-xs)}.game-header-left{display:flex;align-items:center;gap:var(--space-xs)}.game-header-left .section-icon{font-size:1rem}.round-indicator-text{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-white)}.stat-badge--steal{background:linear-gradient(135deg,var(--color-purple-primary),var(--color-purple-secondary, #9333ea));animation:steal-badge-pulse 2s ease-in-out infinite}@keyframes steal-badge-pulse{0%,to{box-shadow:0 0 8px #9333ea80}50%{box-shadow:0 0 12px #9333eacc}}.last-round-banner{background:linear-gradient(135deg,var(--color-warning),var(--color-warning-dark));color:var(--color-text-white);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-sm);text-align:center;width:100%;animation:pulse 2s infinite}.intro-badge{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);background:linear-gradient(135deg,gold,#ff6b00);color:#000;border-radius:var(--radius-pill);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:1px;animation:intro-pulse 1.5s ease-in-out infinite;margin-bottom:var(--space-md);box-shadow:0 0 20px #ffd70080,0 0 40px #ff6b004d}.intro-splash{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#000000d9;animation:intro-splash-in .3s ease-out,intro-splash-out .5s ease-in 1.5s forwards;pointer-events:none}.intro-splash-content{display:flex;flex-direction:column;align-items:center;gap:12px;animation:intro-splash-scale .4s cubic-bezier(.34,1.56,.64,1)}.intro-splash-icon{font-size:80px;filter:drop-shadow(0 0 30px rgba(255,215,0,.8))}.intro-splash-text{font-size:36px;font-weight:900;text-transform:uppercase;letter-spacing:4px;background:linear-gradient(135deg,gold,#ff6b00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:none}.intro-splash-hint{font-size:18px;color:#ffffffb3;letter-spacing:1px}@keyframes intro-splash-in{0%{opacity:0}to{opacity:1}}@keyframes intro-splash-out{0%{opacity:1}to{opacity:0;visibility:hidden}}@keyframes intro-splash-scale{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.intro-badge-icon{font-size:var(--font-size-md)}.intro-badge--large{font-size:var(--font-size-lg);padding:var(--space-sm) var(--space-lg);margin-left:var(--space-md)}.intro-badge--large .intro-badge-icon{font-size:var(--font-size-xl)}.intro-badge--stopped{background:linear-gradient(135deg,#666,#444);color:var(--color-text-white);animation:none}@keyframes intro-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@media(prefers-reduced-motion:reduce){.intro-badge{animation:none}}.closest-wins-badge{background:linear-gradient(135deg,#00c6ff,#0072ff);box-shadow:0 0 20px #00c6ff80,0 0 40px #0072ff4d}.result-card.is-closest-winner{border:2px solid #00c6ff;box-shadow:0 0 12px #00c6ff66}.closest-winner-badge{margin-left:var(--space-sm);font-size:var(--font-size-sm)}.album-cover-container{position:relative;width:150px;height:150px;margin-bottom:var(--space-md)}.album-cover{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);filter:blur(20px)}@media(max-width:360px){.album-cover-container{width:120px;height:120px}}@media(min-width:768px){.album-cover-container{width:180px;height:180px}}.album-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-card-alt);border-radius:var(--radius-xl)}.loading-spinner{width:40px;height:40px;border:4px solid var(--color-border-light);border-top-color:var(--color-accent-brand);border-radius:50%;animation:spin 1s linear infinite}.timer-container{margin-bottom:var(--space-lg)}.timer{font-size:var(--font-size-timer);font-weight:var(--font-weight-bold);color:var(--color-text-primary);font-variant-numeric:tabular-nums;transition:color var(--transition-normal)}.timer--warning{color:var(--color-warning);animation:timer-pulse-subtle 1s ease-in-out infinite}.timer--critical{color:var(--color-error);animation:timer-pulse-intense .5s ease-in-out infinite}@keyframes timer-pulse-subtle{0%,to{opacity:1}50%{opacity:.8}}@keyframes timer-pulse-intense{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}@media(prefers-reduced-motion:reduce){.timer--warning,.timer--critical{animation:none}}.submission-tracker{width:100%;margin-bottom:var(--space-md);padding:var(--space-sm);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md)}.submitted-players{display:flex;gap:var(--space-sm);overflow-x:auto;padding:var(--space-xs) 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;justify-content:center;flex-wrap:wrap}.submitted-players::-webkit-scrollbar{display:none}.player-indicator{display:flex;flex-direction:column;align-items:center;min-width:48px;flex-shrink:0;position:relative}.player-badge{position:absolute;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;z-index:1}.player-badge--bet{top:-2px;right:2px;background:var(--color-warning)}.player-badge--steal{top:-2px;left:2px;background:linear-gradient(135deg,var(--color-purple-primary),var(--color-purple-secondary, #9333ea))}.player-avatar{width:36px;height:36px;border-radius:50%;background:var(--color-border-light);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);border:2px solid transparent;transition:all var(--transition-normal)}.player-indicator.is-submitted .player-avatar{background:var(--color-success);color:var(--color-text-white);border-color:var(--color-success-hover);animation:submitted-pulse var(--transition-slow) ease-out}.player-indicator.is-submitted .player-initials{display:none}.player-indicator.is-submitted .player-avatar:after{content:"\2713";font-size:var(--font-size-md)}@keyframes submitted-pulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.player-indicator .player-name{font-size:var(--font-size-xs);color:var(--color-text-muted);max-width:48px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;margin-top:var(--space-xs)}.player-indicator.is-current-player .player-avatar{border-color:var(--color-accent-brand)}.player-indicator.is-current-player .player-name{font-weight:var(--font-weight-semibold);color:var(--color-accent-brand)}.player-indicator--disconnected{opacity:.4}.submission-tracker.all-submitted{border-color:var(--color-success);background:#10b9811a}.artist-challenge{width:100%}.artist-challenge .section-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.stat-badge--bonus{background:#22c55e26;color:var(--color-success);font-weight:700;margin-left:auto}.artist-options-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:var(--space-sm)}@media(max-width:320px){.artist-options-grid{grid-template-columns:1fr}}.artist-option-btn{display:flex;align-items:center;justify-content:center;min-height:72px;padding:var(--space-sm) var(--space-md);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-md);font-weight:500;cursor:pointer;transition:all .2s ease;position:relative}.artist-option-btn:active{transform:scale(.98)}.artist-option-btn.is-loading{animation:artistPulse 1s infinite}@keyframes artistPulse{0%,to{opacity:1}50%{opacity:.6}}.artist-option-btn.is-correct,.artist-option-btn.is-winner{background:var(--color-success);border-color:var(--color-success);color:#fff}.artist-option-btn.is-winner{box-shadow:var(--glow-primary)}.artist-option-btn.is-wrong{animation:artistWrongFlash .5s ease}.artist-option-btn.is-wrong.is-selected{background:var(--color-error);border-color:var(--color-error);color:#fff;animation:none;opacity:.8}@keyframes artistWrongFlash{0%,to{background:var(--color-surface)}50%{background:#ef44444d}}.artist-option-btn.is-disabled{opacity:.5;pointer-events:none}.artist-points-badge{position:absolute;right:var(--space-sm);font-size:var(--font-size-sm);font-weight:700;color:#fff;background:#0003;padding:2px 6px;border-radius:var(--radius-sm)}.artist-result{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-align:center;font-weight:500}.artist-result.is-winner{background:#22c55e26;color:var(--color-success)}.artist-result.is-late{background:var(--color-surface-alt, rgba(255, 255, 255, .05));color:var(--color-text-muted)}body.theme-dark .artist-option-btn{background:#ffffff0d;border-color:var(--color-border-neon);color:var(--color-text-white)}body.theme-dark .artist-option-btn:hover{background:#ffffff1a}@media(prefers-reduced-motion:reduce){.artist-option-btn.is-loading{animation:none;opacity:.7}.artist-option-btn.is-wrong{animation:none;opacity:.5}}.artist-reveal-section{padding:var(--space-md);margin-bottom:var(--space-md);background:var(--color-surface-alt, rgba(255, 255, 255, .05));border-radius:var(--radius-lg)}.artist-reveal-section .section-content-padded{text-align:center}.artist-reveal-label{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs)}.artist-reveal-name{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text);margin-bottom:var(--space-sm)}.artist-reveal-winner{font-size:var(--font-size-md);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);display:inline-block}.artist-reveal-winner.is-you{background:#22c55e26;color:var(--color-success);font-weight:600}.artist-reveal-winner.is-other{color:var(--color-text-muted)}.artist-reveal-no-winner{color:var(--color-text-muted);font-style:italic}body.theme-dark .artist-reveal-section{background:var(--color-dark-surface-alt, #16213e)}.artist-bonus-row .result-value{color:var(--color-success);font-weight:600}.player-card-artist-badge{font-size:var(--font-size-xs);color:var(--color-success);background:#22c55e1a;padding:2px 6px;border-radius:var(--radius-sm);margin-left:var(--space-xs)}.movie-challenge{width:100%}.movie-challenge .section-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.movie-options-grid{display:grid;grid-template-columns:1fr;gap:var(--space-sm)}@media(min-width:480px){.movie-options-grid{grid-template-columns:1fr 1fr}}.movie-option-btn{display:flex;align-items:center;justify-content:center;min-height:44px;padding:var(--space-sm) var(--space-md);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-md);font-weight:500;cursor:pointer;transition:all .2s ease;position:relative;text-align:center}.movie-option-btn:active{transform:scale(.98)}.movie-option-btn.is-loading{animation:moviePulse 1s infinite}@keyframes moviePulse{0%,to{opacity:1}50%{opacity:.6}}.movie-option-btn.is-correct,.movie-option-btn.is-winner{background:var(--color-success);border-color:var(--color-success);color:#fff}.movie-option-btn.is-winner{box-shadow:var(--glow-primary)}.movie-option-btn.is-wrong{animation:movieWrongFlash .5s ease}.movie-option-btn.is-wrong.is-selected{background:var(--color-error);border-color:var(--color-error);color:#fff;animation:none;opacity:.8}@keyframes movieWrongFlash{0%,to{background:var(--color-surface)}50%{background:#ef44444d}}.movie-option-btn.is-disabled{opacity:.5;pointer-events:none}.movie-rank-badge{position:absolute;right:var(--space-sm);font-size:var(--font-size-sm);font-weight:700;color:#fff;background:#0003;padding:2px 6px;border-radius:var(--radius-sm)}.movie-result{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-align:center;font-weight:500}.movie-result.is-winner{background:#22c55e26;color:var(--color-success)}.movie-result.is-late{background:var(--color-surface-alt, rgba(255, 255, 255, .05));color:var(--color-text-muted)}body.theme-dark .movie-option-btn{background:#ffffff0d;border-color:var(--color-border-neon);color:var(--color-text-white)}body.theme-dark .movie-option-btn:hover{background:#ffffff1a}@media(prefers-reduced-motion:reduce){.movie-option-btn.is-loading{animation:none;opacity:.7}.movie-option-btn.is-wrong{animation:none;opacity:.5}}.movie-reveal-section{padding:var(--space-md);margin-bottom:var(--space-md);background:var(--color-surface-alt, rgba(255, 255, 255, .05));border-radius:var(--radius-lg)}.movie-reveal-section .section-content-padded{text-align:center}.movie-reveal-name{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text);margin-bottom:var(--space-sm)}.movie-reveal-winners{margin-top:var(--space-sm)}.movie-reveal-winners-title{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs)}.movie-reveal-winner-entry{font-size:var(--font-size-md);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);display:inline-block;margin:2px 4px}.movie-reveal-winner-entry.is-you{background:#22c55e26;color:var(--color-success);font-weight:600}.movie-reveal-winner-entry.is-other{color:var(--color-text-muted)}.movie-reveal-no-winner{color:var(--color-text-muted);font-style:italic;font-size:var(--font-size-md);padding:var(--space-xs) var(--space-md)}body.theme-dark .movie-reveal-section{background:var(--color-dark-surface-alt, #16213e)}.year-selector-section{width:100%;padding-bottom:max(var(--space-md),env(safe-area-inset-bottom))}.year-selector{width:100%}.year-display{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.year-adjust-btn{width:48px;height:48px;border-radius:50%;border:2px solid var(--color-border-dark);background:transparent;color:var(--color-text-white);font-size:1.5rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;user-select:none;flex-shrink:0}.year-adjust-btn:active{background:var(--color-accent-primary);border-color:var(--color-accent-primary);transform:scale(.95)}.year-adjust-btn:disabled{opacity:.3;pointer-events:none}#selected-year{font-size:var(--font-size-year);font-weight:var(--font-weight-bold);color:var(--color-text-primary);font-variant-numeric:tabular-nums}.slider-container{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg)}.slider-label{font-size:var(--font-size-sm);color:var(--color-text-muted);min-width:40px}.slider-label--min{text-align:right}.slider-label--max{text-align:left}.year-slider{-webkit-appearance:none;appearance:none;flex:1;height:var(--space-sm);background:var(--color-border-light);border-radius:var(--radius-sm);outline:none}.year-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:44px;height:44px;background:var(--color-accent-brand);border-radius:50%;cursor:pointer;border:4px solid var(--color-bg-white);box-shadow:var(--shadow-md);transition:transform .1s ease}.year-slider::-webkit-slider-thumb:active{transform:scale(1.1)}.year-slider::-moz-range-thumb{width:44px;height:44px;background:var(--color-accent-brand);border-radius:50%;cursor:pointer;border:4px solid var(--color-bg-white);box-shadow:var(--shadow-md)}.submit-btn{width:100%;padding:var(--space-lg) var(--space-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);background:var(--color-accent-brand);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);min-height:56px}.submit-btn:hover{background:var(--color-accent-brand-hover)}.submit-btn:active{transform:scale(.98)}.submit-btn:disabled{background:var(--color-text-light);cursor:not-allowed;transform:none}.submit-btn.is-loading{color:transparent;position:relative}.submit-btn.is-loading:after{content:"";position:absolute;width:24px;height:24px;border:3px solid var(--color-bg-white);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite;left:50%;top:50%;margin-left:-12px;margin-top:-12px}.submit-btn.is-error{background:var(--color-error)}.submitted-confirmation{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);background:var(--color-success);color:var(--color-text-white);border-radius:var(--radius-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.submitted-confirmation .checkmark{font-size:var(--font-size-2xl)}.year-selector.is-submitted .year-slider{pointer-events:none;opacity:.5}.year-selector.is-submitted #selected-year{color:var(--color-text-muted)}@media(max-width:360px){.album-cover-container{max-width:250px}.timer{font-size:var(--font-size-2xl)}}@media(min-width:768px){.album-cover-container{max-width:350px}.timer{font-size:var(--font-size-hero)}}@media(min-width:768px){body{max-width:800px;margin:0 auto;padding:var(--space-lg)}header h1{font-size:var(--font-size-4xl)}.status-section h2,.card-section h2{font-size:var(--font-size-lg)}.card-section{padding:var(--space-md) var(--space-lg)}}.reveal-container{display:flex;flex-direction:column;align-items:center;padding:var(--space-lg);width:100%;margin:0 auto;text-align:center}.reveal-container--compact{padding:var(--space-md);gap:var(--space-sm);align-items:stretch}.reveal-container--duel{padding:var(--space-md);gap:var(--space-sm);align-items:stretch;text-align:left}.reveal-header-compact{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) 0;margin-bottom:var(--space-xs)}.reveal-header-left{display:flex;align-items:center;gap:var(--space-xs)}.reveal-header-compact .section-icon{font-size:1rem}.reveal-header-compact .round-indicator-text{font-size:.875rem;color:var(--color-text-neon-muted)}.reveal-song-hero{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.reveal-album-cover-compact{width:80px;height:80px;object-fit:cover;border-radius:var(--radius-md);flex-shrink:0}.reveal-song-info{flex:1;min-width:0;text-align:left}.reveal-song-info .song-title{font-size:1rem;font-weight:600;color:var(--color-text-white);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reveal-song-info .song-artist{font-size:.875rem;color:var(--color-text-neon-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reveal-year-section{text-align:center;padding:var(--space-sm) 0}.reveal-emotion-inline{font-size:1.25rem;font-weight:700;margin-bottom:var(--space-xs);animation:reveal-emotion-entrance .5s ease-out}.reveal-year-section .correct-year-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-neon-muted);margin-bottom:var(--space-xs)}.reveal-year-section .correct-year{font-size:3rem}.personal-result-compact{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#00f5ff1a;border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.result-content-inline{font-size:.875rem;color:var(--color-text-white)}.artist-reveal-compact{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.artist-reveal-icon{font-size:1rem}.artist-reveal-name-inline{font-weight:600;color:var(--color-accent-secondary)}.artist-reveal-winner-inline{font-size:.75rem;color:var(--color-text-neon-muted)}.artist-reveal-winner-inline:before{content:"\2022";margin-right:var(--space-xs)}.fun-fact-section{text-align:left}.fun-fact-section .fun-fact-text{font-size:.875rem;color:var(--color-text-white);line-height:1.5;margin-bottom:var(--space-sm)}.fun-fact-section .song-rich-info{font-size:.75rem;color:var(--color-text-neon-muted)}.section-content-padded{padding:0 var(--space-md) var(--space-md)}.card-section .section-content-padded{padding:0 0 var(--space-sm)}.guesses-section{text-align:left}.reveal-results-grid{width:100%}.personal-result-section{text-align:left}.personal-result-section .result-row{display:flex;justify-content:space-between;padding:var(--space-xs) 0;border-bottom:1px solid rgba(255,255,255,.05)}.personal-result-section .result-row:last-child{border-bottom:none}.artist-reveal-section{text-align:left}.artist-reveal-section .artist-reveal-name{font-size:1.25rem;font-weight:700;color:var(--color-accent-secondary);margin-bottom:var(--space-xs)}.artist-reveal-section .artist-reveal-winner{font-size:.875rem;color:var(--color-text-neon-muted)}.round-analytics-section{width:100%;background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);overflow:hidden;text-align:left}.round-analytics-section .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.round-analytics-section .section-header-collapsible .section-icon{font-size:1rem}.round-analytics-section .section-header-collapsible .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-accent-secondary);background:#00f5ff1a;padding:2px 8px;border-radius:var(--radius-sm)}.round-analytics-section .section-header-collapsible .section-toggle{margin-left:var(--space-sm);font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease}.round-analytics-section .section-content{padding:0 var(--space-md) var(--space-sm)}.round-analytics-section.collapsed .section-content{display:none}.round-analytics-section:not(.collapsed) .section-toggle{transform:rotate(180deg)}.reveal-round-info{font-size:var(--font-size-base);color:var(--color-text-muted);margin-bottom:var(--space-md)}.reveal-album{margin-bottom:var(--space-lg)}.reveal-album-cover{width:150px;height:150px;object-fit:cover;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.correct-year-container{margin-bottom:var(--space-md)}.correct-year-label{font-size:var(--font-size-md);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.correct-year{font-size:var(--font-size-hero);font-weight:var(--font-weight-extrabold);color:var(--color-success);font-variant-numeric:tabular-nums;animation:reveal-pop var(--transition-slow) ease-out}@keyframes reveal-pop{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.song-info{margin-bottom:var(--space-md)}.song-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.song-artist{font-size:var(--font-size-md);color:var(--color-text-muted)}.fun-fact-container{display:flex;flex-direction:column;gap:var(--space-sm);background:var(--color-warning-light);padding:var(--space-md);border-radius:var(--radius-lg);margin-bottom:var(--space-lg);text-align:left;max-width:100%}.fun-fact-header{display:flex;align-items:flex-start;gap:var(--space-sm)}.fun-fact-icon{font-size:var(--font-size-xl);flex-shrink:0}.fun-fact-text{font-size:var(--font-size-base);color:#92400e;line-height:1.4}.fun-fact-header:empty,.fun-fact-text:empty{display:none}.song-rich-info{text-align:left}.song-rich-info:empty{display:none}.song-badges-row{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid rgba(120,53,15,.15)}.song-badges-row:first-child{border-top:none;padding-top:0}.song-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:20px;border:1px solid;box-shadow:0 1px 3px #0000001a;white-space:nowrap}.song-badge-icon{font-size:14px;line-height:1}.song-badge--chart{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af;border-color:#93c5fd}.song-badge--chart .chart-weeks{font-weight:400;opacity:.8;font-size:11px}.song-badge--platinum{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);color:#475569;border-color:#cbd5e1}.song-badge--gold{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;border-color:#fcd34d}.song-badge--diamond{background:linear-gradient(135deg,#e0f2fe,#bae6fd);color:#0369a1;border-color:#7dd3fc}.song-badge--award{background:linear-gradient(135deg,#ffedd5,#fed7aa);color:#9a3412;border-color:#fdba74}.song-badge--grammy{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#78350f;border-color:#f59e0b}.song-badge--eurovision{background:linear-gradient(135deg,#ede9fe,#ddd6fe);color:#5b21b6;border-color:#a78bfa}.song-badge--oscar,.song-badge--academy{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#78350f;border-color:#f59e0b}.song-badge--halloffame{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af;border-color:#60a5fa}.song-badges-more{font-size:var(--font-size-xs);color:#78350f;font-style:italic;opacity:.8}.song-difficulty{display:flex;align-items:center;gap:var(--space-sm);justify-content:center;margin-top:var(--space-sm);opacity:0;animation:fadeIn .5s ease-out forwards;animation-delay:.3s}.difficulty-stars{font-size:1.2rem;letter-spacing:.1em}.difficulty-1{color:var(--color-success-neon);text-shadow:0 0 10px var(--color-success-neon)}.difficulty-2{color:var(--color-warning);text-shadow:0 0 10px var(--color-warning)}.difficulty-3{color:var(--color-warning-alt);text-shadow:0 0 10px var(--color-warning-alt)}.difficulty-4{color:var(--color-accent-primary);text-shadow:0 0 10px var(--color-accent-primary)}.difficulty-label{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-size-sm)}.difficulty-accuracy{font-size:.85em;opacity:.7}.superlatives-container{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-md);margin:var(--space-lg) 0;padding:0 var(--space-md)}.superlative-card{display:flex;flex-direction:column;align-items:center;padding:var(--space-md);min-width:120px;max-width:160px;background:var(--color-dark-surface);border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.1);opacity:0;animation:superlativeSlideIn .5s ease-out forwards}@keyframes superlativeSlideIn{0%{opacity:0;transform:translateY(20px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.superlative-emoji{font-size:2rem;margin-bottom:var(--space-xs)}.superlative-title{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-size-xs);color:var(--color-accent-secondary);text-align:center;margin-bottom:var(--space-xs)}.superlative-player{font-weight:700;font-size:var(--font-size-base);color:var(--color-dark-text-primary);text-align:center;margin-bottom:var(--space-xs)}.superlative-value{font-size:var(--font-size-sm);color:var(--color-dark-text-secondary);text-align:center}.superlative-card--speed_demon{border-color:var(--color-warning);box-shadow:0 0 15px #f59e0b33}.superlative-card--lucky_streak{border-color:var(--color-error);box-shadow:0 0 15px #ef444433}.superlative-card--risk_taker{border-color:var(--color-purple-primary);box-shadow:0 0 15px #8b5cf633}.superlative-card--clutch_player{border-color:var(--color-success-neon);box-shadow:0 0 15px #39ff1433}.superlative-card--close_calls{border-color:var(--color-accent-secondary);box-shadow:0 0 15px #00f5ff33}.highlights-container{width:100%;margin-top:var(--space-lg);margin-bottom:var(--space-lg)}.highlights-header{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);text-align:center;margin-bottom:var(--space-md)}.highlights-list{display:flex;flex-direction:column;gap:var(--space-sm)}.highlight-card{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-dark-surface);border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.1);opacity:0;animation:highlightFadeIn .5s ease-out forwards}@keyframes highlightFadeIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.highlight-emoji{font-size:1.8rem;flex-shrink:0;width:48px;text-align:center}.highlight-content{flex:1;min-width:0}.highlight-text{font-size:var(--font-size-base);color:var(--color-dark-text-primary);line-height:1.4}.highlight-round{font-size:var(--font-size-xs);color:var(--color-dark-text-secondary);margin-top:var(--space-xs)}@media(max-width:480px){.highlight-card{padding:var(--space-sm);gap:var(--space-sm)}.highlight-emoji{font-size:1.4rem;width:36px}.highlight-text{font-size:var(--font-size-sm)}}.round-analytics{width:100%;margin-top:var(--space-lg);margin-bottom:var(--space-lg);padding:var(--space-md);background:var(--color-dark-surface);border-radius:var(--radius-lg);text-align:center}.analytics-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);margin-bottom:var(--space-md)}.analytics-stats-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-lg);margin-bottom:var(--space-xs)}.stat-primary{text-align:left}.stat-primary .stat-label{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);display:block;margin-bottom:var(--space-xs)}.stat-primary .stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-accent-secondary)}.stat-secondary{text-align:right}.stat-secondary .stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-success)}.stat-secondary .stat-label{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);display:block}.stat-comparison-line{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);margin-bottom:var(--space-md)}.analytics-histogram{margin-bottom:var(--space-lg)}.histogram-title{font-size:var(--font-size-base);color:var(--color-text-neon-muted);margin-bottom:var(--space-sm)}.dotaxis-wrap{margin:14px 0 16px}.dotaxis-axis{position:relative;height:88px;margin:0 14px}.dotaxis-line{position:absolute;left:0;right:0;top:52px;height:2px;background:#ffffff1f;border-radius:2px}.dotaxis-tick{position:absolute;top:48px;width:1px;height:10px;background:#ffffff2e}.dotaxis-tick-label{position:absolute;top:64px;font-size:9px;color:#ffffff80;transform:translate(-50%);letter-spacing:.3px;font-weight:500}.dotaxis-marker{position:absolute;top:4px;bottom:18px;width:2px;background:linear-gradient(180deg,transparent,var(--color-cyan, #00d4ff) 30%,var(--color-cyan, #00d4ff) 80%,transparent);box-shadow:0 0 8px var(--color-cyan, #00d4ff),0 0 16px #00d4ff99}.dotaxis-marker-label{position:absolute;top:-4px;left:50%;transform:translate(-50%);background:var(--color-cyan, #00d4ff);color:#0a0a0e;font-family:var(--font-family-display, "Outfit", sans-serif);font-weight:900;font-size:12px;padding:3px 8px;border-radius:6px;box-shadow:0 0 14px #00d4ff99;white-space:nowrap}.dotaxis-dot{position:absolute;top:39px;width:26px;height:26px;border-radius:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;font-family:var(--font-family-display, "Outfit", sans-serif);font-weight:900;font-size:12px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 4px 10px #0006;cursor:default}.dotaxis-dot--c1{background:linear-gradient(135deg,#ff6ec7,#d846a7)}.dotaxis-dot--c2{background:linear-gradient(135deg,#6e3bff,#4a25c8)}.dotaxis-dot--c3{background:linear-gradient(135deg,#ffd60a,#e6b800);color:#1a1a22;text-shadow:none}.dotaxis-dot--c4{background:linear-gradient(135deg,#00d4ff,#008abf)}.dotaxis-dot--correct{box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 0 18px currentColor,0 4px 10px #0006}.dotaxis-dot--me{box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 0 0 5px #ff9f4399,0 4px 10px #0006}.dotaxis-dot--correct.dotaxis-dot--me{box-shadow:0 0 0 3px var(--color-bg-primary, #0d0d12),0 0 0 5px #ff9f4399,0 0 22px currentColor,0 4px 10px #0006}.dotaxis-score{position:absolute;top:12px;transform:translate(-50%);font-family:var(--font-family-display, "Outfit", sans-serif);font-weight:800;font-size:11px;padding:2px 6px;border-radius:6px;background:#ffffff14;white-space:nowrap}.dotaxis-score--pos{background:#00d4ff2e;color:var(--color-cyan, #00d4ff)}.dotaxis-score--zero{color:#ffffff59}.dotaxis-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 14px;font-size:11px;color:#ffffffbf;margin-top:4px}.dotaxis-legend-entry{display:inline-flex;align-items:center;gap:5px}.dotaxis-legend-dot{display:inline-block;width:11px;height:11px;border-radius:50%;flex-shrink:0}.dotaxis-legend-medal{font-size:13px;line-height:1}.dotaxis-legend-me{color:#ff9f43;font-weight:700;font-size:10px;margin-left:2px;letter-spacing:.3px}.histogram-bars{display:flex;justify-content:space-between;align-items:flex-end;height:120px;gap:var(--space-xs);padding:0 var(--space-xs)}.histogram-bar-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;animation:histogram-fade-in .3s ease forwards;opacity:0}.histogram-bar{width:100%;max-width:40px;background:linear-gradient(180deg,var(--color-accent-primary),var(--color-accent-brand));border-radius:var(--radius-sm) var(--radius-sm) 0 0;display:flex;align-items:flex-start;justify-content:center;transition:height .5s ease;min-height:0}.histogram-bar.is-correct{background:linear-gradient(180deg,var(--color-success-neon),var(--color-success));box-shadow:var(--glow-success)}.bar-count{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-text-white);padding-top:var(--space-xs)}.histogram-label{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:var(--space-xs)}@keyframes histogram-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.analytics-achievements{display:flex;flex-direction:column;gap:var(--space-sm);text-align:left}.achievement-item{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-white)}.achievement-emoji{font-size:var(--font-size-lg)}.achievement-label{color:var(--color-text-neon-muted)}.achievement-names{font-weight:var(--font-weight-semibold)}.achievement-value{color:var(--color-text-neon-muted)}.analytics-empty{text-align:center;color:var(--color-text-neon-muted);padding:var(--space-lg);font-style:italic}@media(prefers-reduced-motion:reduce){.histogram-bar-wrapper{animation:none;opacity:1}.histogram-bar{transition:none}}.reveal-emotion{text-align:center;font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-md);animation:reveal-emotion-entrance .5s ease-out}.reveal-emotion--exact{color:var(--color-success);text-shadow:0 0 20px var(--color-success)}.reveal-emotion--close{color:var(--color-warning);animation:reveal-emotion-entrance .5s ease-out,reveal-shake .5s ease-in-out .5s}.reveal-emotion--wrong{color:var(--color-text-muted)}.reveal-emotion--missed{color:var(--color-text-muted);opacity:.7}.reveal-emotion-subtitle{font-size:var(--font-size-base);font-weight:var(--font-weight-normal);margin-top:var(--space-xs);opacity:.8}@keyframes reveal-emotion-entrance{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes reveal-shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.confetti-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:var(--z-modal)}body>canvas[style*="position: fixed"]{pointer-events:none!important}.personal-result.is-delayed{opacity:0;animation:fade-in-delay .5s ease-out 1s forwards}@keyframes fade-in-delay{to{opacity:1}}@media(prefers-reduced-motion:reduce){.reveal-emotion,.reveal-emotion--close{animation:none}.personal-result.is-delayed{opacity:1;animation:none}}.personal-result{width:100%;background:var(--color-bg-card-alt);padding:var(--space-md);border-radius:var(--radius-lg);margin-bottom:var(--space-lg)}.result-header{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.result-content{display:flex;flex-direction:column;gap:var(--space-sm)}.result-row{display:flex;justify-content:space-between;align-items:center}.result-label{font-size:var(--font-size-base);color:var(--color-text-muted)}.result-value{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.result-value.is-exact{color:var(--color-success)}.result-value.is-close{color:var(--color-warning)}.result-value.is-far{color:var(--color-error)}.result-value.is-bonus{color:var(--color-warning);font-weight:var(--font-weight-bold)}.result-score{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);color:var(--color-accent-brand);margin-top:var(--space-sm)}.result-missed{font-size:var(--font-size-md);color:var(--color-error);font-weight:var(--font-weight-semibold)}.result-value.is-streak{color:var(--color-error);font-weight:var(--font-weight-bold)}.streak-bonus-row{background:linear-gradient(90deg,var(--color-warning-light),#fde68a);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);margin:var(--space-sm) 0;color:#1a1a1a}.result-total{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-success);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:2px dashed var(--color-border-light)}.streak-indicator{display:inline-flex;align-items:center;gap:2px;font-size:var(--font-size-sm);color:var(--color-warning);font-weight:var(--font-weight-semibold)}.streak-indicator:before{content:"\1f525"}.bet-container{margin-bottom:var(--space-md);position:relative;z-index:1}.bet-toggle{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-xl);background:var(--color-bg-card-alt);border:2px solid var(--color-border-medium);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);width:100%;justify-content:center;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;touch-action:manipulation}.bet-toggle:hover{border-color:var(--color-text-light)}.bet-toggle.is-active{background:var(--color-warning-light);border-color:var(--color-warning);color:#92400e}.bet-toggle.is-active .bet-icon{animation:dice-shake var(--transition-slow) ease}@keyframes dice-shake{0%,to{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}body.theme-dark .bet-toggle{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:var(--color-text-white)}body.theme-dark .bet-toggle.is-active{background:var(--color-warning);border-color:var(--color-warning);color:var(--color-text-primary)}.bet-won-row{background:linear-gradient(90deg,var(--color-success-light),#a7f3d0);padding:var(--space-sm) var(--space-sm);border-radius:var(--radius-md);margin:var(--space-sm) 0}.bet-won-row .result-label,body.theme-dark .bet-won-row .result-label{color:#166534}.result-value.is-bet-won,body.theme-dark .result-value.is-bet-won{color:#166534;font-weight:var(--font-weight-bold)}.bet-lost-row{background:linear-gradient(90deg,var(--color-error-light),#fecaca);padding:var(--space-sm) var(--space-sm);border-radius:var(--radius-md);margin:var(--space-sm) 0}.bet-lost-row .result-label,body.theme-dark .bet-lost-row .result-label{color:#991b1b}.result-value.is-bet-lost,body.theme-dark .result-value.is-bet-lost{color:#991b1b;font-weight:var(--font-weight-bold)}.result-missed-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-md)}.result-missed-icon{font-size:var(--font-size-2xl)}.result-missed-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-muted)}.streak-broken{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-error-light);border-radius:var(--radius-md)}.streak-broken-icon{font-size:var(--font-size-xl)}.streak-broken-text{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-error-dark)}.streak-shield-used{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-success-light);border-radius:var(--radius-md)}.streak-shield-icon{font-size:var(--font-size-xl)}.streak-shield-text{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-success-hover)}.result-score.is-zero{color:var(--color-text-light);font-size:var(--font-size-2xl)}.leaderboard-section{width:100%;background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);overflow:hidden}.leaderboard-section .section-header-collapsible{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);background:transparent;border:none;color:var(--color-text-white);font-size:.875rem;font-weight:600;cursor:pointer;text-align:left}.leaderboard-section .section-header-collapsible .section-icon{font-size:1rem}.leaderboard-section .section-header-collapsible .section-summary{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--color-accent-secondary);background:#00f5ff1a;padding:2px 8px;border-radius:var(--radius-sm)}.leaderboard-section .section-header-collapsible .section-toggle{margin-left:var(--space-sm);font-size:.625rem;color:var(--color-text-neon-muted);transition:transform .2s ease}.leaderboard-section .section-content{padding:0}.leaderboard-section .leaderboard-list{max-height:200px;overflow-y:auto}.leaderboard-section.collapsed .section-content{display:none}.leaderboard-section:not(.collapsed) .section-toggle{transform:rotate(180deg)}.leaderboard{background:var(--color-bg-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;width:100%;margin-bottom:var(--space-md)}.leaderboard.is-compact .leaderboard-list{max-height:120px}.leaderboard.is-expanded .leaderboard-list{max-height:400px}.leaderboard.is-prominent{margin-top:var(--space-md)}.leaderboard.is-prominent .leaderboard-list{max-height:280px}.leaderboard-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background:var(--color-bg-card-alt);border-bottom:1px solid var(--color-border-light)}.leaderboard-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.leaderboard-toggle{background:none;border:none;cursor:pointer;padding:var(--space-xs);min-width:auto;min-height:auto;color:var(--color-text-muted)}.leaderboard-list{max-height:200px;overflow-y:auto;contain:layout style paint;will-change:transform}.leaderboard-spacer-top,.leaderboard-spacer-bottom{flex-shrink:0;pointer-events:none}.leaderboard-sentinel{flex-shrink:0;pointer-events:none;visibility:hidden}.leaderboard-entry{display:flex;align-items:center;gap:var(--space-sm);padding:10px var(--space-md);border-bottom:1px solid var(--color-bg-card-alt);transition:background var(--transition-fast);contain:content;height:48px;box-sizing:border-box}.leaderboard-entry:last-child{border-bottom:none}.leaderboard-entry.is-current{background:#eff6ff;border-left:3px solid var(--color-accent-blue)}.leaderboard-entry.is-top-1{background:linear-gradient(90deg,var(--color-warning-light),#fde68a)}.leaderboard-entry.is-top-1 .entry-rank{color:#b45309;font-weight:var(--font-weight-bold)}.leaderboard-entry.is-top-2{background:linear-gradient(90deg,var(--color-bg-card-alt),var(--color-border-light))}.leaderboard-entry.is-top-2 .entry-rank{color:var(--color-text-muted);font-weight:var(--font-weight-bold)}.leaderboard-entry.is-top-3{background:linear-gradient(90deg,#fed7aa,#fdba74)}.leaderboard-entry.is-top-3 .entry-rank{color:#c2410c;font-weight:var(--font-weight-bold)}.entry-rank{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);min-width:28px}.entry-name{flex:1;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry-meta{display:flex;align-items:center;gap:var(--space-xs)}.entry-score{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-accent-brand);min-width:40px;text-align:right}.rank-up{font-size:var(--font-size-xs);color:var(--color-success);font-weight:var(--font-weight-semibold)}.rank-down{font-size:var(--font-size-xs);color:var(--color-error);font-weight:var(--font-weight-semibold)}.leaderboard-entry--climbing{animation:leaderboard-climb .4s ease-out}.leaderboard-entry--falling{animation:leaderboard-fall .4s ease-out}.leaderboard-entry--disconnected{opacity:.5;transition:opacity .3s ease}@keyframes leaderboard-climb{0%{transform:translateY(10px);opacity:.7;background:#0f83}to{transform:translateY(0);opacity:1;background:transparent}}@keyframes leaderboard-fall{0%{transform:translateY(-10px);opacity:.7;background:#ff004033}to{transform:translateY(0);opacity:1;background:transparent}}.streak-indicator{font-size:var(--font-size-xs);color:var(--color-warning)}.streak-indicator--hot{text-shadow:0 0 8px var(--color-warning);animation:streak-pulse 1s ease-in-out infinite}@keyframes streak-pulse{0%,to{opacity:1}50%{opacity:.7}}.leaderboard-separator{text-align:center;padding:var(--space-xs) var(--space-md);color:var(--color-text-muted);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-bg-card-alt)}@media(prefers-reduced-motion:reduce){.leaderboard-entry--climbing,.leaderboard-entry--falling,.streak-indicator--hot{animation:none}}.leaderboard-you{position:sticky;bottom:0;padding:var(--space-sm) var(--space-md);background:var(--color-accent-blue);color:var(--color-text-white);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);text-align:center}.end-container{padding:var(--space-lg);max-width:480px;margin:0 auto;text-align:center}.end-header{margin-bottom:var(--space-lg)}.end-title{font-size:var(--font-size-4xl);font-weight:var(--font-weight-extrabold);color:var(--color-text-primary);margin-bottom:var(--space-sm)}.end-subtitle{font-size:var(--font-size-md);color:var(--color-text-muted);margin:0}.podium{display:flex;justify-content:center;align-items:flex-end;gap:var(--space-sm);margin-bottom:var(--space-xl)}.podium-place{display:flex;flex-direction:column;align-items:center;width:100px}.podium-medal{font-size:var(--font-size-4xl);margin-bottom:var(--space-sm)}.podium-name{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-xs);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.podium-score{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.podium-stand{width:100%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-2xl);font-weight:var(--font-weight-extrabold);color:var(--color-text-white);border-radius:var(--radius-md) var(--radius-md) 0 0}.podium-1 .podium-stand{height:80px;background:linear-gradient(180deg,#fbbf24,var(--color-warning-dark))}.podium-2 .podium-stand{height:60px;background:linear-gradient(180deg,var(--color-text-light),var(--color-text-muted))}.podium-3 .podium-stand{height:40px;background:linear-gradient(180deg,#fb923c,#c2410c)}.your-result{background:#eff6ff;border-radius:var(--radius-xl);padding:var(--space-lg);margin-bottom:var(--space-lg)}.your-result-header{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-accent-blue);margin-bottom:var(--space-sm)}.your-result-rank{font-size:var(--font-size-2xl);font-weight:var(--font-weight-extrabold);color:var(--color-text-primary)}.your-result-score{font-size:var(--font-size-lg);color:var(--color-text-muted);margin-bottom:var(--space-md)}.your-result-stats{display:flex;justify-content:center;gap:var(--space-lg)}.stat{display:flex;flex-direction:column;align-items:center}.stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-accent-brand)}.stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.final-leaderboard{background:var(--color-bg-white);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg);box-shadow:var(--shadow-md)}.final-leaderboard-header{padding:var(--space-sm) var(--space-md);background:var(--color-bg-card-alt);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-align:left}.final-leaderboard-list{max-height:200px;overflow-y:auto}.final-entry{display:flex;align-items:center;padding:10px var(--space-md);border-bottom:1px solid var(--color-bg-card-alt)}.final-entry:last-child{border-bottom:none}.final-entry.is-current{background:#eff6ff}.final-entry--disconnected{opacity:.5}.final-rank{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);width:32px}.final-name{flex:1;font-size:var(--font-size-base);color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.final-score{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-accent-brand)}.end-admin-controls{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-md)}.new-game-btn{width:100%;padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);background:var(--color-success);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast);min-width:auto;min-height:auto}.new-game-btn:hover{background:var(--color-success-hover)}.new-game-btn:disabled{background:var(--color-text-light);cursor:not-allowed}.end-player-message{color:var(--color-text-muted)}.end-player-message p{margin:0 0 var(--space-sm) 0}.end-hint{font-size:var(--font-size-base)}.rejoin-hint{font-size:var(--font-size-base);color:var(--color-text-muted);margin-top:var(--space-sm)}.reveal-report-row{display:flex;justify-content:center;margin-top:var(--space-md)}.reveal-report-btn{background:none;border:none;padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:color .15s ease,opacity .15s ease;opacity:.7}.reveal-report-btn:hover{color:var(--color-text-neon-muted);opacity:1}.reveal-report-btn:disabled{cursor:default;opacity:.5}.reveal-admin-controls{margin-top:var(--space-md)}.next-round-btn{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-white);background:var(--color-accent-brand);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast)}.next-round-btn:hover{background:var(--color-accent-brand-hover)}.next-round-btn:disabled{background:var(--color-text-light);cursor:not-allowed}.next-round-btn.is-final{background:var(--color-success)}.next-round-btn.is-final:hover{background:var(--color-success-hover)}.reveal-admin-buttons{display:flex;flex-direction:column;gap:var(--space-md);align-items:center}@media(min-width:480px){.reveal-admin-buttons{flex-direction:row;justify-content:center}}.invite-btn{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-white);background:var(--color-bg-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);min-height:44px;min-width:44px}.invite-btn:hover{background:var(--color-bg-secondary);border-color:var(--color-border-neon)}.invite-btn:active{transform:scale(.98)}.invite-btn-icon{font-size:var(--font-size-lg)}.invite-btn-label{white-space:nowrap}.invite-modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.invite-modal.hidden{display:none}.invite-modal-backdrop{position:absolute;inset:0;background:#000c}.invite-modal-content{position:relative;background:var(--color-bg-primary);border:1px solid var(--color-border-neon);padding:var(--space-lg);border-radius:var(--radius-xl);text-align:center;max-width:90vw;max-height:90vh;overflow-y:auto;animation:modalFadeIn var(--transition-normal) ease-out}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.invite-modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-white);margin:0 0 var(--space-xs)}.invite-modal-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0 0 var(--space-md)}.invite-modal-code{display:inline-block;padding:var(--space-md);background:var(--color-bg-white);border-radius:var(--radius-md);margin-bottom:var(--space-md)}.invite-modal-code img{display:block;width:200px;height:200px}@media(min-width:480px){.invite-modal-code img{width:256px;height:256px}}.invite-modal-url-container{display:flex;gap:var(--space-xs);margin-bottom:var(--space-sm);max-width:100%}.invite-modal-url{flex:1;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);font-family:var(--font-family-mono);color:var(--color-text-primary);background:var(--color-bg-secondary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);min-width:0;text-overflow:ellipsis}body.theme-dark .invite-modal-url{color:#e2e8f0;background:#ffffff1a;border-color:#ffffff26}.invite-copy-btn{display:flex;align-items:center;justify-content:center;padding:var(--space-sm);min-width:44px;min-height:44px;background:var(--color-accent-brand);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.invite-copy-btn:hover{background:var(--color-accent-brand-hover)}.invite-copy-btn:active{transform:scale(.95)}.invite-copy-icon{font-size:var(--font-size-lg)}.invite-copy-feedback{font-size:var(--font-size-sm);color:var(--color-success);margin:0 0 var(--space-md);animation:fadeInOut 2s ease-in-out}.invite-copy-feedback.hidden{display:none}@keyframes fadeInOut{0%,to{opacity:0}10%,80%{opacity:1}}.invite-modal-close{min-width:120px;min-height:48px}.reveal-results-cards{margin-top:var(--space-lg);width:100%;overflow:visible}.results-cards-header{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin-bottom:var(--space-sm);text-align:center}.results-cards-scroll{display:flex;flex-direction:row;flex-wrap:nowrap;gap:var(--space-sm);width:100%;overflow-x:auto;overflow-y:hidden;padding-bottom:var(--space-xs);-webkit-overflow-scrolling:touch}.results-cards-scroll::-webkit-scrollbar{height:3px}.results-cards-scroll::-webkit-scrollbar-thumb{background:var(--color-border-light);border-radius:2px}.result-card{background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-sm);text-align:center;border:2px solid var(--color-border-light);transition:all var(--transition-fast);flex:1 1 140px;min-width:140px;max-width:220px;box-sizing:border-box}.result-card.is-current{border-color:var(--color-accent-brand);background:#6366f11a}.result-card.is-score-high{border-color:var(--color-success);background:#10b9811a}.result-card.is-score-medium{border-color:var(--color-warning);background:#f59e0b1a}.result-card.is-score-zero{opacity:.6}.card-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.card-guess{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.card-accuracy{font-size:var(--font-size-xs);color:var(--color-text-muted)}.result-card.is-score-high .card-accuracy{color:var(--color-success);font-weight:var(--font-weight-semibold)}.card-score{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-success);margin-top:2px}.card-bet{margin-left:4px}body.theme-dark .result-card{background:#ffffff0d;border-color:#ffffff1a}body.theme-dark .result-card.is-current{border-color:var(--color-accent-neon);background:#00f5ff1a}body.theme-dark .result-card.is-score-high{border-color:var(--color-success-neon);background:#00ff881a}body.theme-dark .result-card.is-score-medium{border-color:var(--color-warning);background:#f59e0b26}body.theme-dark .card-name,body.theme-dark .card-guess{color:var(--color-text-white)}body.theme-dark .card-accuracy{color:var(--color-text-neon-muted)}body.theme-dark .result-card.is-score-high .card-accuracy,body.theme-dark .card-score{color:var(--color-success-neon)}.admin-control-bar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:center;padding:var(--space-sm) var(--space-sm);padding-bottom:calc(var(--space-sm) + env(safe-area-inset-bottom));background:#000000e6;border-top:1px solid var(--color-border-dark);z-index:var(--z-control-bar)}.admin-control-bar.hidden{display:none}.control-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:var(--space-sm) var(--space-sm);background:#2a2a2a;border:none;border-radius:var(--radius-md);color:var(--color-text-white);cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast)}.control-btn:hover:not(.is-disabled){background:#3a3a3a}.control-btn:active:not(.is-disabled){background:#4a4a4a}.control-btn.is-disabled{opacity:.4;cursor:not-allowed}.control-btn--danger{background:#7f1d1d}.control-btn--danger:hover:not(.is-disabled){background:#991b1b}.control-btn.is-stopped{background:var(--color-text-secondary);opacity:.7}.control-btn.is-stopped .control-icon{color:var(--color-success)}.volume-indicator{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#000000e6;color:var(--color-text-white);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-sm);opacity:0;transition:opacity var(--transition-normal);pointer-events:none;white-space:nowrap}.volume-indicator.is-visible{opacity:1}.control-btn.is-at-limit{opacity:.5}.control-btn.is-at-limit:active{transform:none}.control-icon{font-size:var(--font-size-xl);line-height:1}.control-icon.is-countdown{font-variant-numeric:tabular-nums;font-weight:700;min-width:1.5em;text-align:center}.control-label{font-size:var(--font-size-xs);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.has-control-bar .game-container,.has-control-bar .reveal-container,.has-control-bar .end-container{padding-bottom:140px}.reaction-bar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;padding:var(--space-sm);padding-bottom:calc(var(--space-sm) + env(safe-area-inset-bottom));z-index:var(--z-reaction-bar);pointer-events:none}main:has(.admin-control-bar:not(.hidden)) .reaction-bar{bottom:70px}.reaction-bar.hidden{display:none}.reaction-bar-container{display:flex;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#0009;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:auto}.reaction-btn{font-size:1.5rem;padding:var(--space-sm);min-width:44px;min-height:44px;background:#1e1e2880;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-md);cursor:pointer;transition:transform var(--transition-fast),background var(--transition-fast)}.reaction-btn:hover{background:#32323cb3}.reaction-btn:active{transform:scale(.9)}.reaction-btn:disabled{cursor:default;opacity:.45}.reaction-btn.is-used{opacity:1;border-color:var(--color-accent-primary);box-shadow:0 0 12px var(--color-accent-primary)}@media(hover:none){.reaction-btn:active{box-shadow:0 0 15px var(--color-accent-primary)}}@media(prefers-reduced-motion:reduce){.reaction-btn{transition:none}.reaction-btn:active{transform:none}}.reaction-container{position:fixed;bottom:120px;left:0;right:0;pointer-events:none;z-index:99}main:has(.admin-control-bar:not(.hidden)) .reaction-container{bottom:180px}.reaction-bubble{position:absolute;font-size:1rem;font-weight:600;color:var(--color-text-white);text-shadow:0 0 8px var(--color-accent-primary);animation:reaction-float 3s ease-out forwards;white-space:nowrap}@keyframes reaction-float{0%{opacity:1;transform:translateY(0)}70%{opacity:1}to{opacity:0;transform:translateY(calc(-50vh + 60px))}}@media(prefers-reduced-motion:reduce){.reaction-bubble{animation:none;opacity:1}}.paused-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-lg);min-height:60vh;text-align:center}.paused-icon{font-size:var(--font-size-hero);margin-bottom:var(--space-lg);animation:pause-pulse 2s infinite}@keyframes pause-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.95)}}.paused-container h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-md)}.paused-container>p{font-size:var(--font-size-md);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.paused-spinner{margin:var(--space-xl) 0}.paused-hint{font-size:var(--font-size-base);color:var(--color-text-light)}.reconnecting-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:var(--z-overlay)}.reconnecting-overlay.hidden{display:none}.reconnecting-content{text-align:center;color:var(--color-text-white)}.reconnecting-spinner .spinner{border-top-color:var(--color-text-white);width:48px;height:48px;margin:0 auto var(--space-md)}.reconnect-status{font-size:var(--font-size-md);color:var(--color-border-light)}.connection-lost-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-lg);min-height:60vh;text-align:center}.connection-lost-icon{font-size:var(--font-size-hero);margin-bottom:var(--space-lg)}.connection-lost-container h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-md)}.connection-lost-container>p{font-size:var(--font-size-md);color:var(--color-text-muted);margin-bottom:var(--space-lg)}.connection-lost-hint{font-size:var(--font-size-base);color:var(--color-text-light);margin-top:var(--space-md)}@media(max-width:360px){.correct-year{font-size:var(--font-size-year)}.reveal-album-cover{width:120px;height:120px}}@media(min-width:768px){.reveal-album-cover{width:180px;height:180px}.correct-year{font-size:84px}}:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}body.theme-dark :focus-visible{outline-color:var(--color-accent-primary);box-shadow:0 0 0 4px #ff2d6a4d}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(prefers-color-scheme:light){body:not(.theme-dark){--color-bg-primary: #ffffff;--color-bg-surface: #f5f5f7;--color-bg-card: #ffffff;--color-bg-card-alt: #f8fafc;--color-text-primary: #1a1a1a;--color-text-muted: #666666;--color-text-light: #999999;--color-border-light: #e5e7eb}}.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}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-accent-primary);color:var(--color-text-white);padding:var(--space-sm) var(--space-md);z-index:var(--z-modal);transition:top var(--transition-fast)}.skip-link:focus{top:0}body.energy-calm .btn-glow:hover{box-shadow:none}body.energy-calm .wordmark-hero{text-shadow:none}body.energy-warmup .player-card{animation:energy-slide-in .3s ease-out}body.energy-warmup .qr-container{animation:energy-pulse-subtle 3s ease-in-out infinite}@keyframes energy-slide-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes energy-pulse-subtle{0%,to{opacity:1}50%{opacity:.85}}body.energy-party .album-cover{box-shadow:0 0 60px #ffffff1a}body.energy-party .submit-btn:not(:disabled){box-shadow:var(--glow-primary)}body.energy-party .year-display{text-shadow:0 0 20px rgba(255,45,106,.3)}.view{animation:screen-fade-in .3s ease-out}@keyframes screen-fade-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){body.energy-warmup .player-card,body.energy-warmup .qr-container,.view{animation:none}}.steal-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);width:100%;padding:var(--space-sm) var(--space-md);margin-top:var(--space-sm);background:linear-gradient(135deg,var(--color-purple-primary, #8b5cf6),var(--color-purple-secondary, #7c3aed));border:none;border-radius:var(--radius-lg);color:var(--color-text-white);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;box-shadow:0 0 20px #8b5cf666;transition:all var(--transition-fast)}.steal-btn:hover:not(:disabled){transform:scale(1.03);box-shadow:0 0 30px #8b5cf699}.steal-btn:disabled{opacity:.5;cursor:not-allowed}.steal-btn-icon{font-size:var(--font-size-lg)}.steal-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.steal-modal-backdrop{position:absolute;inset:0;background:#000c;backdrop-filter:blur(4px)}.steal-modal-content{position:relative;background:var(--color-bg-card);border:2px solid var(--color-purple-primary, #8b5cf6);border-radius:var(--radius-xl);padding:var(--space-lg);max-width:320px;width:90%;text-align:center;box-shadow:0 0 40px #8b5cf64d}.steal-modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.steal-modal-subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-md)}.steal-target-list{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md)}.steal-target-btn{display:block;width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-bg-surface);border:1px solid var(--color-accent-secondary);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast)}.steal-target-btn:hover{background:var(--color-accent-secondary);color:var(--color-bg-primary);transform:scale(1.02)}.steal-no-targets{color:var(--color-text-muted);font-size:var(--font-size-sm);padding:var(--space-md)}.steal-modal-cancel{width:100%}.steal-confirmation{position:fixed;bottom:calc(var(--space-xl) + 60px);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-sm);background:linear-gradient(135deg,var(--color-purple-primary, #8b5cf6),var(--color-purple-secondary, #7c3aed));color:var(--color-text-white);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-full);font-weight:var(--font-weight-semibold);box-shadow:0 4px 20px #8b5cf680;animation:steal-toast-in .3s ease-out;z-index:var(--z-tooltip)}@keyframes steal-toast-in{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.steal-confirmation-icon{font-size:var(--font-size-lg)}.steal-badge{display:inline-flex;align-items:center;gap:var(--space-xs);background:#8b5cf633;border:1px solid var(--color-purple-primary, #8b5cf6);border-radius:var(--radius-full);padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);color:var(--color-purple-primary, #8b5cf6);margin-top:var(--space-xs)}.steal-badge-icon{font-size:.9em}.steal-badge-victim{background:#ef444433;border-color:var(--color-error);color:var(--color-error)}body.theme-dark .steal-modal-content{background:var(--color-bg-card)}body.theme-dark .steal-target-btn{background:#ffffff0d;border-color:var(--color-accent-secondary)}body.theme-dark .steal-target-btn:hover{background:var(--color-accent-secondary);color:var(--color-bg-primary)}@media(prefers-reduced-motion:reduce){.stat-badge--steal,.steal-confirmation{animation:none}}.intro-splash-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.intro-splash-modal-backdrop{position:absolute;inset:0;background:#000c;backdrop-filter:blur(4px)}.intro-splash-modal-content{position:relative;background:var(--color-bg-card);border:2px solid var(--color-accent-primary, #1db954);border-radius:var(--radius-xl);padding:var(--space-lg);max-width:400px;width:90%;text-align:center;box-shadow:0 0 40px #1db9544d}.intro-splash-modal-emoji{font-size:3rem;margin-bottom:var(--space-sm)}.intro-splash-modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.intro-splash-modal-desc{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--space-md)}.intro-splash-modal-waiting{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.intro-splash-confirm-btn{width:100%;margin-top:var(--space-sm)}.score-animating{font-variant-numeric:tabular-nums}@keyframes score-pop{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}.score-pop{animation:score-pop .7s ease-out;display:inline-block}@keyframes score-shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.score-shake{animation:score-shake .4s ease-out;display:inline-block}@keyframes score-flash-red{0%,to{color:inherit}50%{color:var(--color-error)}}.score-flash-red{animation:score-flash-red .4s ease-out}@keyframes score-glow-gold{0%,to{text-shadow:0 0 0 transparent;color:inherit}50%{text-shadow:0 0 20px #ffd700,0 0 40px #ffd700;color:gold}}.score-glow-gold{animation:score-glow-gold .8s ease-out;display:inline-block}@keyframes score-burst{0%{transform:scale(1);text-shadow:0 0 0 transparent}30%{transform:scale(1.4);text-shadow:0 0 30px #ff6600}to{transform:scale(1);text-shadow:0 0 0 transparent}}.score-burst{animation:score-burst .7s ease-out;display:inline-block}@keyframes popup-float{0%{opacity:0;transform:translate(-50%)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-30px)}}.points-popup{position:fixed;z-index:var(--z-toast);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-success);pointer-events:none;animation:popup-float 1s ease-out forwards;transform:translate(-50%)}.points-popup--gold{color:gold;text-shadow:0 0 10px #ffd700}.points-popup--streak{color:#f60;text-shadow:0 0 10px #ff6600;font-size:var(--font-size-xl)}.leaderboard-entry--slide-up{animation:leaderboard-slide-up .5s ease-out}@keyframes leaderboard-slide-up{0%{transform:translateY(10px);background:#00ff884d}to{transform:translateY(0);background:transparent}}.leaderboard-entry--slide-down{animation:leaderboard-slide-down .5s ease-out}@keyframes leaderboard-slide-down{0%{transform:translateY(-10px);opacity:.6}to{transform:translateY(0);opacity:1}}@media(prefers-reduced-motion:reduce){.score-pop,.score-shake,.score-glow-gold,.score-burst,.score-flash-red{animation:none!important}.points-popup{animation:none!important;display:none!important}.leaderboard-entry--slide-up,.leaderboard-entry--slide-down{animation:none!important}}body.device-tier-low .leaderboard-entry--climbing,body.device-tier-low .leaderboard-entry--falling,body.device-tier-low .leaderboard-entry--slide-up,body.device-tier-low .leaderboard-entry--slide-down{animation:none!important}body.device-tier-low .neon-glow,body.device-tier-low .btn-glow:hover{box-shadow:none!important}body.device-tier-low .score-pop,body.device-tier-low .score-shake,body.device-tier-low .score-glow-gold,body.device-tier-low .score-burst{animation:none!important}body.device-tier-low .points-popup{display:none!important}body.device-tier-medium .leaderboard-entry--climbing,body.device-tier-medium .leaderboard-entry--falling{animation-duration:.2s!important}body.device-tier-medium .neon-glow{animation:none!important}body.device-tier-medium .score-pop,body.device-tier-medium .score-shake,body.device-tier-medium .score-glow-gold,body.device-tier-medium .score-burst{animation-duration:.2s!important}.reveal-skip-hint{position:absolute;bottom:var(--space-md);left:50%;transform:translate(-50%);font-size:var(--font-size-sm);color:var(--color-text-muted);opacity:0;animation:fadeInDelayed .3s ease-out 1s forwards}@keyframes fadeInDelayed{to{opacity:.6}}@media(prefers-reduced-motion:reduce){.reveal-skip-hint{animation:none;opacity:.6}}body.device-tier-low .reveal-skip-hint{animation:none;opacity:.6}.request-btn{margin-top:var(--space-md);gap:var(--space-xs)}.requests-list{display:flex;flex-direction:column;gap:var(--space-sm)}.request-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-surface-raised);border-radius:var(--radius-md);border:1px solid var(--color-border)}.request-item-thumbnail{width:40px;height:40px;min-width:40px;min-height:40px;max-width:40px;max-height:40px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0}.request-item-thumbnail-placeholder{width:40px;height:40px;min-width:40px;min-height:40px;border-radius:var(--radius-sm);background:var(--color-surface);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.request-item-info{flex:1;min-width:0}.request-item-name{font-weight:600;font-size:var(--font-size-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.request-item-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.request-status{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;white-space:nowrap}.request-status--pending{background:#ffc10726;color:#ffc107}.request-status--ready{background:#4caf5026;color:#4caf50}.request-status--installed{background:transparent;color:#4caf50;border:1px solid #4caf50}.request-status--declined{background:#f4433626;color:#f44336}.request-update-btn{font-size:var(--font-size-xs);padding:6px 12px;white-space:nowrap}.text-input{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-base);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);transition:border-color .15s ease}.text-input:focus{outline:none;border-color:var(--color-primary)}.text-input.input-error{border-color:var(--color-error)}.info-box{background:var(--color-surface-raised);border-radius:var(--radius-md);padding:var(--space-md);margin-top:var(--space-md)}.info-box-title{font-weight:600;margin-bottom:var(--space-xs);color:var(--color-text-muted)}.info-box-list{margin:0;padding-left:0;list-style-position:inside;font-size:var(--font-size-sm);color:var(--color-text-muted)}.info-box-list li{margin-bottom:var(--space-xs)}.info-box-list li:last-child{margin-bottom:0}.info-box-note{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border);font-size:var(--font-size-sm);color:var(--color-text-muted)}.modal-content--success{text-align:center}.success-icon{font-size:3rem;margin-bottom:var(--space-sm)}.success-playlist-name{font-weight:600;font-size:var(--font-size-lg);margin-bottom:var(--space-xs)}.success-estimate{color:var(--color-text-muted);font-size:var(--font-size-sm)}.btn--loading{position:relative;color:transparent!important;pointer-events:none}.btn--loading:after{content:"";position:absolute;width:16px;height:16px;top:50%;left:50%;margin-left:-8px;margin-top:-8px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.share-container{margin:1.5rem 0;text-align:center}.share-header{font-size:1.2rem;font-weight:700;margin-bottom:1rem;color:var(--text-primary, #fff)}.share-card-preview{margin:12px auto;max-width:360px;width:100%;border-radius:16px;overflow:hidden;box-shadow:0 12px 36px #00000080,0 0 0 1px #ff2d6a40;background:#0a0a12}.share-card-image{display:block;width:100%;height:auto;aspect-ratio:1 / 1}.share-buttons{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.share-btn{padding:.6rem 1.2rem;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;background:var(--accent-color, #e94560);color:#fff;transition:opacity .2s,transform .1s}.share-btn:hover{opacity:.9}.share-btn:active{transform:scale(.97)}.share-toast{margin-top:.75rem;padding:.4rem 1rem;background:var(--success-color, #4caf50);color:#fff;border-radius:20px;display:inline-block;font-size:.85rem;font-weight:600;animation:shareToastIn .3s ease}@keyframes shareToastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.admin-share-player-tabs{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;margin-bottom:.75rem}.admin-share-tab{padding:.3rem .85rem;border-radius:20px;border:1px solid var(--color-border-light);background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all .15s ease}.admin-share-tab:hover{border-color:var(--color-accent-brand);color:var(--color-accent-brand)}.admin-share-tab.active{background:var(--color-accent-brand);border-color:var(--color-accent-brand);color:#fff;font-weight:var(--font-weight-semibold)}@media(max-width:480px){.share-buttons{flex-direction:column;align-items:center}.share-btn{width:100%;max-width:280px}.share-card-preview{max-width:320px}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,var(--color-bg-card) 25%,#3a3a4e 50%,var(--color-bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}.skeleton-list{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm) 0}.skeleton-row{height:48px;width:100%}.skeleton-card{height:64px;width:100%}.player-header{position:relative}.connection-indicator{position:absolute;top:50%;right:var(--space-md);transform:translateY(-50%);display:flex;align-items:center;gap:4px;opacity:0;transition:opacity .3s ease}.connection-indicator--disconnected{opacity:1}.connection-dot{width:8px;height:8px;border-radius:50%;background:var(--color-error, #e94560);animation:pulse-dot 1.2s infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.party-lights-picker{margin-top:12px}.party-lights-picker-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.85rem;color:var(--text-secondary, #aaa)}.party-lights-count{font-weight:500}.btn-link{background:none;border:none;color:var(--accent, #ff00ff);cursor:pointer;font-size:.85rem;padding:4px 8px}.btn-link:hover{text-decoration:underline}.party-lights-list{max-height:240px;overflow-y:auto;border-radius:8px;background:var(--card-bg, rgba(255,255,255,.05));margin-bottom:12px}.party-light-item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-bottom:1px solid var(--border, rgba(255,255,255,.08));min-height:44px}.party-light-item:last-child{border-bottom:none}.party-light-item:hover{background:#ffffff08}.party-light-item input[type=checkbox]{width:18px;height:18px;flex-shrink:0;accent-color:var(--accent, #ff00ff)}.light-status{font-size:.75rem;flex-shrink:0}.light-name{flex:1;font-size:.9rem;color:var(--text-primary, #fff);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.light-cap-badge{font-size:.7rem;padding:2px 6px;border-radius:4px;background:#ffffff1a;color:var(--text-secondary, #aaa);flex-shrink:0;font-weight:500}.setting-row--vertical{flex-direction:column;align-items:flex-start;gap:var(--space-sm, 8px)}.wled-presets-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-xs, 4px) var(--space-sm, 8px);width:100%}.wled-preset-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs, 4px);font-size:.8rem;color:var(--text-secondary, #aaa)}.wled-preset-item .input-sm{width:48px;padding:2px 4px;border:1px solid rgba(255,255,255,.15);border-radius:4px;background:#ffffff0d;color:var(--text-primary, #fff);font-size:.8rem;text-align:center}.admin-game-wrapper{max-width:480px;margin:0 auto}.admin-phase-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.round-badge{font-weight:600;font-size:1rem}.timer-badge{font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums;min-width:3em;text-align:center}.timer-badge.timer-warning{color:var(--color-warning, #f59e0b)}.timer-badge.timer-critical{color:var(--color-danger, #ef4444);animation:pulse-critical .5s ease-in-out infinite alternate}@keyframes pulse-critical{0%{opacity:1}to{opacity:.5}}.admin-song-card{display:flex;align-items:center;gap:var(--space-md);background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.admin-album-art{width:64px;height:64px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0}.admin-song-meta{min-width:0}.admin-song-title{font-weight:600;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-song-artist{color:var(--text-secondary, #aaa);font-size:.9rem}.admin-song-details{text-align:center;margin-bottom:var(--space-sm, 8px)}.admin-song-year{font-size:.95rem;color:var(--color-primary, #1db954);font-weight:600}.admin-song-funfact{font-size:.85rem;color:var(--text-secondary, #aaa);font-style:italic;margin-top:4px;line-height:1.3}.admin-playing-banner{display:flex;align-items:center;gap:var(--space-sm, 8px);padding:var(--space-sm, 8px) var(--space-md, 16px);background:var(--bg-card, rgba(255, 255, 255, .05));border-bottom:2px solid var(--color-primary, #1db954);font-size:.9rem}.admin-playing-banner-icon{font-size:1.1rem;flex-shrink:0}.admin-playing-banner-text{flex:1;min-width:0}.admin-playing-banner-btn{flex-shrink:0;font-size:.8rem;padding:4px 10px;border-radius:var(--radius-sm, 8px)}.idle-halt-banner{display:flex;align-items:center;gap:var(--space-sm, 8px);margin:var(--space-md, 16px) auto;padding:var(--space-sm, 8px) var(--space-md, 16px);background:var(--bg-card, rgba(255, 255, 255, .06));border:1px solid var(--color-warning, #f5a623);border-radius:var(--radius-md, 12px);color:var(--color-warning, #f5a623);font-size:.9rem;line-height:1.35;max-width:540px}.idle-halt-icon{font-size:1.2rem;flex-shrink:0}.admin-pause-recovery{margin:var(--space-md, 16px);padding:var(--space-md, 16px) var(--space-lg, 20px);background:var(--bg-card, rgba(255, 255, 255, .06));border:2px solid var(--color-warning, #f5a623);border-radius:var(--radius-md, 12px)}.admin-pause-recovery-header{display:flex;align-items:center;gap:var(--space-sm, 8px);margin-bottom:var(--space-sm, 8px)}.admin-pause-recovery-icon{font-size:1.3rem;flex-shrink:0}.admin-pause-recovery-title{font-size:1rem;color:var(--color-warning, #f5a623)}.admin-pause-recovery-message{font-size:.95rem;line-height:1.4;margin:0 0 var(--space-sm, 8px) 0;color:var(--text-primary, #ffffff)}.admin-pause-recovery-detail{font-size:.8rem;line-height:1.3;margin:0 0 var(--space-md, 16px) 0;color:var(--text-secondary, rgba(255, 255, 255, .6));font-family:var(--font-monospace, monospace);word-break:break-word}.admin-pause-recovery-detail.hidden{display:none}.admin-pause-recovery-actions{display:flex;gap:var(--space-sm, 8px);flex-wrap:wrap}.admin-pause-recovery-actions .btn{flex:1;min-width:120px}.admin-personal-result-card{display:flex;flex-direction:column;gap:var(--space-xs, 4px)}.admin-personal-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs, 4px) 0}.admin-personal-label{color:var(--text-secondary, #aaa);font-size:.9rem}.admin-personal-value{font-weight:600;font-size:1rem}.admin-personal-score{color:var(--color-primary, #1db954);font-size:1.1rem}.artist-option--readonly{padding:10px 14px;background:var(--bg-card, rgba(255, 255, 255, .05));border:1px solid var(--color-border-dark, rgba(255, 255, 255, .1));border-radius:var(--radius-md, 12px);text-align:center;font-size:.9rem;opacity:.8}.admin-intro-splash{text-align:center;padding:var(--space-md);margin-bottom:var(--space-md);background:var(--bg-card, rgba(255, 255, 255, .05));border-radius:var(--radius-md, 12px);border:1px solid var(--color-primary, #1db954)}.intro-splash-info{font-size:1.1rem;font-weight:600;margin-bottom:var(--space-sm)}.intro-splash-icon{margin-right:6px}.btn-compact{padding:8px 12px;font-size:.85rem}.admin-player-panel{background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.admin-year-selector{text-align:center;margin-bottom:var(--space-md)}.admin-year-selector .year-display{display:block;font-size:2.5rem;font-weight:700;margin-bottom:var(--space-sm);font-variant-numeric:tabular-nums}.admin-year-selector .year-slider{width:100%;margin-bottom:var(--space-xs)}.year-range-labels{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-secondary, #aaa)}.last-round-banner{text-align:center;padding:var(--space-sm);background:var(--color-warning, #f59e0b);color:#000;border-radius:var(--radius-sm);font-weight:600;margin-bottom:var(--space-md)}.submission-status{text-align:center;color:var(--text-secondary, #aaa);font-size:.9rem;margin-top:var(--space-sm)}.submission-count{margin-bottom:6px}.submission-players{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.submission-player{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:12px;font-size:.8rem;background:var(--bg-card, rgba(255, 255, 255, .05))}.submission-player.is-submitted{color:var(--color-primary, #1db954)}.submission-player.is-waiting{opacity:.6}.reveal-year-display{font-size:2.5rem;font-weight:700;text-align:center;margin:var(--space-md) 0;color:var(--color-primary, #1db954)}.admin-personal-result{display:flex;justify-content:space-between;align-items:center;background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.score-badge{font-weight:700;color:var(--color-primary, #1db954)}.admin-leaderboard-container{margin-bottom:var(--space-md)}.admin-leaderboard{width:100%;border-collapse:collapse}.admin-leaderboard th{text-align:left;font-weight:600;padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--color-border-light);font-size:.85rem;color:var(--text-secondary, #aaa)}.admin-leaderboard td{padding:var(--space-xs) var(--space-sm)}.admin-leaderboard tr.admin-highlight td{font-weight:600;color:var(--color-primary, #1db954)}.admin-winner-display{text-align:center;font-size:1.3rem;font-weight:600;padding:var(--space-lg) 0}.winner-trophy{font-size:2rem}.admin-end-actions{display:flex;gap:var(--space-sm);justify-content:center;margin-top:var(--space-md)}body.wizard-active>.admin-header,body.wizard-active>main.admin-content,body.wizard-active>.pwa-ios-hint{display:none}.wizard-takeover{position:fixed;inset:0;z-index:var(--z-overlay, 1100);background:var(--color-bg-primary);display:flex;flex-direction:column;overflow:hidden}.wizard-takeover.hidden{display:none}.wiz-bg{position:absolute;inset:0;background:radial-gradient(ellipse at top,rgba(255,45,106,.18),transparent 55%),radial-gradient(ellipse at bottom right,rgba(0,245,255,.12),transparent 40%);pointer-events:none}.wiz-top{padding:var(--space-md) var(--space-lg);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);border-bottom:1px solid var(--color-border-neon);position:relative;z-index:1}.wiz-step-count{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-dim, #6b6b7a);flex:1;text-align:center}.wiz-skip{font-family:var(--font-display);font-size:var(--font-size-sm);color:var(--color-text-neon-muted);background:none;border:none;font-weight:500;cursor:pointer;padding:var(--space-xs) var(--space-sm)}.wiz-skip:hover{color:var(--color-text-white)}.wiz-progress{display:flex;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);position:relative;z-index:1}.wiz-seg{flex:1;height:3px;background:var(--color-dark-surface);border-radius:var(--radius-full);overflow:hidden}.wiz-seg.filled{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80}.wiz-seg.active .wiz-seg-inner{height:100%;width:60%;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80;border-radius:var(--radius-full)}.wiz-frame{flex:1;overflow-y:auto;position:relative;z-index:1}.wiz-frame[hidden]{display:none}.wiz-body{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);max-width:720px;margin:0 auto}.wiz-eyebrow{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent-secondary)}.wiz-title{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-3xl);line-height:1.15;letter-spacing:-.01em;color:var(--color-text-white)}.wiz-sub{color:var(--color-text-neon-muted);font-size:var(--font-size-base);line-height:1.5}.wiz-hint{font-size:var(--font-size-sm);margin-top:var(--space-xs)}.wiz-hint a{color:var(--color-accent-secondary);text-decoration:underline}.wiz-list{display:flex;flex-direction:column;gap:var(--space-sm)}.wiz-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-fast);color:var(--color-text-white);text-align:left;width:100%;font-family:var(--font-body)}.wiz-row:hover{background:var(--color-dark-surface-hover)}.wiz-row.selected{background:linear-gradient(90deg,#ff2d6a26,#00f5ff0d);border-color:var(--color-accent-primary);box-shadow:0 0 14px #ff2d6a40}.wiz-row-avatar{width:36px;height:36px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-accent-primary),var(--color-accent-brand));flex-shrink:0;display:grid;place-items:center;color:var(--color-bg-primary)}.wiz-row-avatar-icon{width:20px;height:20px}.wiz-row-text{flex:1;min-width:0}.wiz-row-name{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wiz-row-sub{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:2px}.wiz-row-check{color:var(--color-success-neon);text-shadow:var(--glow-success)}.wiz-provider-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.wiz-provider-chip{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);cursor:pointer;color:var(--color-text-white);transition:var(--transition-fast)}.wiz-provider-chip:hover{background:var(--color-dark-surface-hover)}.wiz-provider-chip.active{border-color:var(--color-accent-primary);box-shadow:0 0 14px #ff2d6a40}.wiz-provider-chip.connected{border-color:var(--color-success-neon);background:#39ff141a}.wiz-provider-chip{justify-content:space-between}.wiz-provider-chip.disabled{opacity:.4;cursor:help;background:#ffffff05}.wiz-provider-chip.disabled:hover{opacity:.55;background:#ffffff0a}.wiz-provider-chip .chip-lock{width:14px;height:14px;opacity:.7;flex-shrink:0}.wiz-row-sub .cap-dot{width:4px;height:4px;border-radius:50%;background:var(--color-text-dim);display:inline-block;margin:0 6px;vertical-align:middle}.wiz-row-sub .cap-badge{font-family:var(--font-display);font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:1px 6px;border-radius:var(--radius-sm);border:1px solid;vertical-align:middle;white-space:nowrap}.wiz-row-sub .cap-badge.full{color:var(--color-success-neon);background:#39ff1414;border-color:#39ff1466}.wiz-row-sub .cap-badge.partial{color:var(--color-warning-alt);background:#ff660014;border-color:#f606}.wiz-row-sub .cap-badge.none{color:var(--color-error-neon);background:#ff004014;border-color:#ff004066}.wiz-row-sub .cap-badge.summary{color:var(--color-text-dim);background:none;border:none;padding:0;text-transform:none;letter-spacing:0;font-weight:500}.wiz-explainer{margin-top:var(--space-md);padding:var(--space-lg);border-radius:var(--radius-lg);background:linear-gradient(135deg,#ff66000f,#00f5ff0a);border:1px solid rgba(255,102,0,.35)}.wiz-explainer[hidden]{display:none}.wiz-explainer-title{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-weight:700;font-size:var(--font-size-md);margin:0 0 var(--space-sm)}.wiz-explainer-title .icon{font-size:18px}.wiz-explainer-body{font-size:var(--font-size-base);line-height:1.55;color:var(--color-text-neon-muted);margin:0 0 var(--space-md)}.wiz-explainer-steps{margin:0 0 var(--space-md);padding-left:var(--space-lg);font-size:var(--font-size-base);line-height:1.75;color:var(--color-text-neon-muted)}.wiz-explainer-steps li strong{color:var(--color-text-white)}.wiz-explainer-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap}.wiz-explainer-footer{margin:var(--space-md) 0 0;padding-top:var(--space-sm);border-top:1px solid rgba(255,255,255,.06);font-size:var(--font-size-sm);color:var(--color-text-dim);font-style:italic}.wiz-lvl-card{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-fast)}.wiz-lvl-card.on{background:#00f5ff14;border-color:var(--color-accent-secondary)}.wiz-lvl-card.unavailable{opacity:.45;cursor:not-allowed}.wiz-lvl-text{flex:1}.wiz-lvl-title{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);color:var(--color-text-white)}.wiz-lvl-desc{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:2px;line-height:1.4}.wiz-lvl-toggle{width:38px;height:22px;background:var(--color-dark-surface-hover);border-radius:var(--radius-full);border:1px solid var(--color-border-neon);position:relative;flex-shrink:0;margin-top:2px}.wiz-lvl-toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--color-text-neon-muted);border-radius:var(--radius-full);transition:var(--transition-fast)}.wiz-lvl-card.on .wiz-lvl-toggle{background:var(--color-accent-primary);border-color:var(--color-accent-primary)}.wiz-lvl-card.on .wiz-lvl-toggle:after{left:18px;background:var(--color-bg-primary)}.wiz-done{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);text-align:center;padding:var(--space-xl);position:relative;z-index:1}.wiz-done-badge{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-sm);letter-spacing:.14em;color:var(--color-success-neon);text-shadow:var(--glow-success)}.wiz-done-tag{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-xl);color:var(--color-text-white)}.wiz-done-summary{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;max-width:380px;padding:var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg)}.wiz-done-line{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-lg);font-family:var(--font-display);font-size:var(--font-size-sm);color:var(--color-text-neon-muted)}.wiz-done-line>span{letter-spacing:.08em;text-transform:uppercase;font-size:var(--font-size-xs);font-weight:600;flex-shrink:0}.wiz-done-line strong{color:var(--color-text-white);font-weight:600;text-align:right;word-break:break-word}.wiz-done-demo{width:100%;max-width:400px;aspect-ratio:16/9;border:1px solid var(--color-accent-primary);border-radius:var(--radius-xl);background:var(--color-bg-primary);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;box-shadow:0 0 30px #ff2d6a4d}.wiz-done-demo-label{font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-neon-muted);letter-spacing:.14em;text-transform:uppercase}.wiz-done-demo-year{font-family:var(--font-display);font-weight:900;font-size:64px;line-height:.9;color:var(--color-accent-primary);text-shadow:0 0 24px rgba(255,45,106,.6);letter-spacing:-.03em}.wiz-done-demo-song{font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-neon-muted)}.wiz-cta{padding:var(--space-md) var(--space-lg);display:flex;gap:var(--space-sm);border-top:1px solid var(--color-border-neon);background:#0000004d;position:relative;z-index:1}.wiz-cta .btn{flex:1}.wiz-cta .wiz-back{flex:0 0 auto;min-width:80px}.wiz-frame-playlist:not([hidden])~.wiz-cta{display:none}.finish-setup-pill{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-accent-primary);background:#ff2d6a1a;border:1px solid rgba(255,45,106,.4);border-radius:var(--radius-full);padding:var(--space-xs) var(--space-md);cursor:pointer;transition:var(--transition-fast)}.finish-setup-pill:hover{background:#ff2d6a33;box-shadow:var(--glow-primary)}.finish-setup-pill.hidden{display:none}@media(prefers-reduced-motion:reduce){.wizard-takeover,.wizard-takeover *{animation:none!important;transition:none!important}}.wiz-field{display:flex;flex-direction:column;gap:var(--space-xs)}.wiz-field-label{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.wiz-chip-group{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wiz-chip{padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-full);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-white);cursor:pointer;transition:var(--transition-fast)}.wiz-chip:hover{background:var(--color-dark-surface-hover)}.wiz-chip.active{background:var(--color-accent-primary);border-color:var(--color-accent-primary);color:var(--color-bg-primary);box-shadow:var(--glow-primary)}.wiz-request-playlist{margin-top:var(--space-md);align-self:flex-start}body.wizard-active .modal{z-index:calc(var(--z-overlay) + 10)}.wiz-difficulty-hint{margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#00f5ff0f;border-left:2px solid var(--color-accent-secondary);border-radius:var(--radius-sm);color:var(--color-text-neon-muted);font-size:var(--font-size-sm);line-height:1.5;min-height:1.5em}.wiz-rounds-custom{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm)}.wiz-rounds-custom input{width:6em;padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-sm);color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base)}.wiz-rounds-custom input:focus{outline:none;border-color:var(--color-accent-primary)}.wiz-rounds-custom span{color:var(--color-text-neon-muted);font-size:var(--font-size-sm)}.wiz-lvl-card{flex-direction:column;align-items:stretch;padding:0}.wiz-lvl-head{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);cursor:pointer;user-select:none}.wiz-lvl-card.unavailable .wiz-lvl-head{cursor:not-allowed}.wiz-lvl-head:hover{background:#ffffff05}.wiz-lvl-card.on .wiz-lvl-head{border-bottom:1px solid var(--color-border-neon)}.wiz-detail{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-md);background:#00000026}.wiz-detail-checks{display:flex;flex-direction:column;gap:var(--space-xs)}.wiz-detail-check{display:flex;align-items:center;gap:var(--space-sm);padding:6px 8px;border-radius:var(--radius-md);cursor:pointer}.wiz-detail-check:hover{background:#ffffff08}.wiz-detail-check input[type=checkbox]{accent-color:var(--color-accent-primary);width:16px;height:16px;flex-shrink:0}.wiz-detail-check-name{font-family:var(--font-display);font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-white)}.wiz-detail-empty{font-size:var(--font-size-sm);color:var(--color-text-neon-muted);padding:var(--space-sm);background:var(--color-dark-surface);border:1px dashed var(--color-border-neon);border-radius:var(--radius-md);text-align:center}.wiz-detail-input{padding:var(--space-sm) var(--space-md);background:var(--color-bg-primary);border:1px solid var(--color-border-neon);border-radius:var(--radius-md);color:var(--color-text-white);font-family:ui-monospace,monospace;font-size:var(--font-size-sm)}.wiz-detail-input:focus{outline:none;border-color:var(--color-accent-secondary);box-shadow:0 0 0 3px #00f5ff26}.wiz-field-hint{font-size:var(--font-size-xs);color:var(--color-text-dim);line-height:1.4}body.home-mode #media-players,body.home-mode #music-service,body.home-mode #playlists,body.home-mode #game-settings,body.home-mode #party-lights,body.home-mode #tts-settings,body.home-mode .admin-content>.admin-actions{display:none!important}.home-view{display:none}.home-view.hidden{display:none!important}body.home-mode #home-view,body.home-mode .home-view{display:flex;flex-direction:column;min-height:calc(100vh - 120px);background:var(--color-bg-primary);border:1px solid var(--color-border-neon);border-radius:var(--radius-xl);overflow:hidden;margin-bottom:var(--space-md)}.home-stage{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-xl) var(--space-lg);text-align:center}.home-stage-bg{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,rgba(255,45,106,.15),transparent 55%),radial-gradient(ellipse at bottom,rgba(0,245,255,.08),transparent 50%)}.home-eyebrow{position:relative;z-index:1;font-family:var(--font-display);font-weight:700;font-size:var(--font-size-sm);letter-spacing:.16em;text-transform:uppercase;color:var(--color-accent-secondary)}.home-headline{position:relative;z-index:1;font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);line-height:.95;letter-spacing:-.02em;margin:0;text-shadow:0 0 40px rgba(255,45,106,.35)}.home-headline-sub{display:block;font-weight:600;font-size:var(--font-size-xl);letter-spacing:.02em;text-shadow:none;color:var(--color-text-white);margin-top:4px}.home-hero-card{position:relative;z-index:1;padding:var(--space-lg);background:var(--color-dark-surface);border:1px solid var(--color-accent-primary);border-radius:var(--radius-2xl);box-shadow:0 0 32px #ff2d6a38;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);max-width:280px;width:100%}.home-qr-loading{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-neon-muted);padding:var(--space-xl) 0;letter-spacing:.08em;text-transform:uppercase}.home-qr-loading.hidden{display:none}.home-qr-container{padding:8px;background:var(--color-bg-white);border-radius:var(--radius-md);display:grid;place-items:center;min-width:180px;min-height:180px}.home-qr-container:empty{display:none}.home-qr-container img,.home-qr-container canvas{display:block;max-width:180px;height:auto}.home-hero-title{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);color:var(--color-text-white);letter-spacing:-.01em}.home-hero-sub{font-size:var(--font-size-sm);color:var(--color-accent-secondary);font-family:ui-monospace,monospace;word-break:break-all;max-width:260px}.home-players{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:var(--space-sm);justify-items:center;width:100%;max-width:380px;margin-top:var(--space-lg)}.home-players:empty{display:none}.home-player-tile{position:relative;width:100%;aspect-ratio:1;padding:var(--space-sm);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:linear-gradient(135deg,var(--tile-from),var(--tile-to));border:1.5px solid var(--tile-border);box-shadow:0 0 14px var(--tile-glow);--tile-from: rgba(0, 245, 255, .32);--tile-to: rgba(0, 245, 255, .08);--tile-border: rgba(0, 245, 255, .7);--tile-glow: rgba(0, 245, 255, .35)}.home-player-tile-initial{font-family:var(--font-display);font-weight:900;font-size:28px;line-height:1;color:var(--color-text-white);text-shadow:0 2px 8px rgba(0,0,0,.4)}.home-player-tile-name{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);color:var(--color-text-white);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}.home-player-tile--c2{--tile-from: rgba(57, 255, 20, .32);--tile-to: rgba(57, 255, 20, .08);--tile-border: rgba(57, 255, 20, .65);--tile-glow: rgba(57, 255, 20, .32)}.home-player-tile--c3{--tile-from: rgba(255, 102, 0, .32);--tile-to: rgba(255, 102, 0, .08);--tile-border: rgba(255, 102, 0, .65);--tile-glow: rgba(255, 102, 0, .32)}.home-player-tile--c4{--tile-from: rgba(0, 245, 255, .22);--tile-to: rgba(0, 245, 255, .04);--tile-border: rgba(0, 245, 255, .5);--tile-glow: rgba(0, 245, 255, .22)}.home-player-tile--host{--tile-from: rgba(255, 45, 106, .35);--tile-to: rgba(255, 45, 106, .08);--tile-border: rgba(255, 45, 106, .85);--tile-glow: rgba(255, 45, 106, .5);box-shadow:var(--glow-primary),0 0 22px #ff2d6a59}.home-player-tile-crown{position:absolute;top:-10px;right:-10px;font-size:20px;line-height:1;filter:drop-shadow(0 0 6px rgba(255,45,106,.8));pointer-events:none}.home-players-waiting{grid-column:1 / -1;padding:var(--space-md);border-radius:var(--radius-full);border:1px dashed var(--color-border-neon);background:transparent;color:var(--color-text-dim);font-family:var(--font-display);font-weight:500;font-size:var(--font-size-sm);text-align:center}.home-meta{position:relative;z-index:1;font-family:var(--font-display);font-weight:500;font-size:var(--font-size-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-dim);max-width:320px;line-height:1.6}.home-cta-bar{display:flex;flex-wrap:wrap;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:#0000004d;border-top:1px solid var(--color-border-neon)}.home-cta-edit{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm)}.home-cta-start{flex:1;padding:var(--space-md);font-size:var(--font-size-base);box-shadow:var(--glow-primary),0 0 40px #ff2d6a40}.home-cta-start.btn-ghost{box-shadow:none;flex:0 0 auto}.home-cta-join{width:100%;margin-top:var(--space-md);padding:var(--space-lg) var(--space-md);font-size:var(--font-size-xl);font-weight:700;letter-spacing:.02em;border-radius:var(--radius-xl);box-shadow:var(--glow-primary),0 0 48px #ff2d6a4d;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm)}.home-cta-join svg{width:26px;height:26px;stroke-width:2.25}.home-cta-join.hidden{display:none}.wiz-mode-cards{display:flex;flex-direction:column;gap:var(--space-xs)}.wiz-mode-card{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-fast)}.wiz-mode-card:hover{background:var(--color-dark-surface-hover)}.wiz-mode-card.disabled{cursor:not-allowed;pointer-events:none}.wiz-mode-card.disabled .wiz-mode-icon,.wiz-mode-card.disabled .wiz-mode-title,.wiz-mode-card.disabled .wiz-lvl-toggle{opacity:.45}.wiz-mode-hint.gated{color:var(--color-warning);font-weight:600}.wiz-mode-card.on{background:#ff2d6a14;border-color:var(--color-accent-primary)}.wiz-mode-icon{font-size:22px;line-height:1;flex-shrink:0;margin-top:2px}.wiz-mode-body{flex:1;min-width:0}.wiz-mode-title{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);color:var(--color-text-white)}.wiz-mode-hint{font-size:var(--font-size-xs);color:var(--color-text-neon-muted);margin-top:2px;line-height:1.45}.wiz-mode-card.on .wiz-lvl-toggle{background:var(--color-accent-primary);border-color:var(--color-accent-primary)}.wiz-mode-card.on .wiz-lvl-toggle:after{left:18px;background:var(--color-bg-primary)}.wiz-coremode-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}.wiz-coremode-card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:var(--space-md) var(--space-sm);background:var(--color-dark-surface);border:1.5px solid var(--color-border-neon);border-radius:var(--radius-xl);cursor:pointer;overflow:hidden;transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast),opacity var(--transition-fast)}.wiz-coremode-card:hover{background:var(--color-dark-surface-hover)}.wiz-coremode-card .wiz-mode-icon{font-size:32px;margin-top:0}.wiz-coremode-card .wiz-mode-body{flex:none}.wiz-coremode-card .wiz-mode-title{font-weight:900;letter-spacing:.02em;text-transform:uppercase}.wiz-coremode-card .wiz-mode-hint{color:var(--color-text-dim)}.wiz-coremode-card.selected{transform:translateY(-2px)}.wiz-coremode-card--pink.selected{border-color:var(--color-accent-primary);background:radial-gradient(120% 100% at 50% 0%,#ff2d6a38,#ff2d6a0a);box-shadow:0 0 24px #ff2d6a4d}.wiz-coremode-card--cyan.selected{border-color:var(--color-accent-secondary);background:radial-gradient(120% 100% at 50% 0%,#00f5ff33,#00f5ff08);box-shadow:0 0 24px #00f5ff47}.wiz-coremode-card.dim{opacity:.5}.wiz-coremode-card.dim:hover{opacity:.8}.wiz-coremode-badge{position:absolute;top:8px;right:8px;font-family:var(--font-display);font-weight:800;font-size:9px;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:var(--radius-full)}.wiz-coremode-card--pink .wiz-coremode-badge{background:var(--color-accent-primary);color:var(--color-text-white)}.wiz-coremode-card--cyan .wiz-coremode-badge{background:var(--color-accent-secondary);color:#04222a}@media(prefers-reduced-motion:reduce){.wiz-coremode-card{transition:none}.wiz-coremode-card.selected{transform:none}}.home-cast-link{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-accent-secondary);border-radius:var(--radius-full);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-accent-secondary);text-decoration:none;position:relative;z-index:1;transition:var(--transition-fast)}.home-cast-link:hover{background:#00f5ff14;box-shadow:var(--glow-secondary)}.home-cast-link.hidden{display:none}.wiz-detail-test{align-self:flex-start;margin-top:var(--space-xs);padding:var(--space-xs) var(--space-md);font-size:var(--font-size-xs)}.wiz-detail-test[disabled]{opacity:.5;cursor:not-allowed}.wiz-wled-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xs)}.wiz-wled-row{display:flex;align-items:center;gap:var(--space-xs)}.wiz-wled-phase{font-family:var(--font-display);font-weight:700;font-size:10px;letter-spacing:.1em;color:var(--color-text-dim);min-width:72px}.wiz-wled-input{width:60px;padding:4px 8px;text-align:center;font-family:ui-monospace,monospace;font-size:var(--font-size-sm)}.home-utility-row{display:flex;gap:var(--space-sm);flex-wrap:wrap;justify-content:center;position:relative;z-index:1}.home-utility-btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-full);font-family:var(--font-display);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-neon-muted);cursor:pointer;transition:var(--transition-fast)}.home-utility-btn:hover{color:var(--color-text-white);border-color:var(--color-accent-secondary)}.home-utility-btn.hidden{display:none}.home-cta-end{border-color:#ff004066;color:var(--color-error-neon)}.home-cta-end:hover{background:#ff00401a;box-shadow:0 0 12px #ff00404d}.home-cta-end.hidden{display:none}.home-hero-card--setup{border-color:var(--color-border-neon);box-shadow:none;gap:var(--space-md)}.home-setup-glyph{width:56px;height:56px;display:grid;place-items:center;color:var(--color-accent-secondary);text-shadow:0 0 12px rgba(0,245,255,.4)}.home-setup-glyph svg{width:100%;height:100%}.home-hero-sub--plain{color:var(--color-text-neon-muted);font-family:var(--font-body);text-align:center;font-size:var(--font-size-sm);line-height:1.5;max-width:280px}.home-cta-setup{flex:1;padding:var(--space-md);font-size:var(--font-size-base);box-shadow:var(--glow-primary),0 0 40px #ff2d6a40}.home-cta-setup.hidden,body.is-learning-screen .player-header,body.is-ingame .player-header{display:none}#tour-view.view:not(.hidden){display:flex;flex-direction:column}.tour-container{min-height:100vh;padding:var(--space-xl) var(--space-md) var(--space-md);background:radial-gradient(circle at 50% 10%,rgba(255,45,106,.1),transparent 55%),radial-gradient(circle at 85% 90%,rgba(0,245,255,.08),transparent 55%),var(--color-bg-primary);display:flex;flex-direction:column}.tour-header-wiz{margin-bottom:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.tour-step-count{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.tour-step-count .of{color:var(--color-text-dim);font-weight:500}.tour-skip-link{font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-dim);background:transparent;border:0;cursor:pointer;padding:var(--space-xs) var(--space-sm);transition:color var(--transition-fast)}.tour-skip-link:hover,.tour-skip-link:focus-visible{color:var(--color-text-neon-muted);outline:none}.tour-wiz-progress{display:flex;gap:4px;width:100%}.tour-wiz-seg{flex:1;height:3px;background:#ffffff14;border-radius:var(--radius-full);overflow:hidden;position:relative}.tour-wiz-seg.filled{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80}.tour-wiz-seg.active .tour-wiz-seg-inner{height:100%;width:60%;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 0 12px #ff2d6a80;border-radius:var(--radius-full)}.tour-card{flex:1;display:flex;flex-direction:column;align-items:center;padding:var(--space-md) 0;animation:tour-card-enter var(--transition-slow) ease-out}@keyframes tour-card-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.tour-card.hidden{display:none}@media(prefers-reduced-motion:reduce){.tour-card{animation:none}}.tour-title{font-family:var(--font-display);font-weight:900;font-size:2.5rem;line-height:1;text-align:center;color:var(--color-text-white);letter-spacing:-.02em;margin-bottom:var(--space-sm)}.tour-caption{font-family:var(--font-body);font-weight:500;font-size:var(--font-size-lg);text-align:center;color:var(--color-text-neon-muted);margin-bottom:var(--space-xl);max-width:320px}.tour-preview{flex:1;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);margin-bottom:var(--space-md)}.tour-preview-album{width:88px;height:88px;border-radius:var(--radius-lg);background:linear-gradient(135deg,#2a1b4a,#1a1a24);border:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.tour-preview-album:after{content:"";position:absolute;width:32px;height:32px;border-radius:50%;background:radial-gradient(circle,#0a0a12 28%,#2a2a3a 29% 62%,#0a0a12 63%);border:1px solid rgba(255,255,255,.08)}.tour-preview-album:before{content:"\266a";position:absolute;font-size:26px;color:var(--color-accent-secondary);opacity:.75;z-index:1}.tour-year-display{display:flex;align-items:center;justify-content:center;gap:var(--space-md)}.tour-year-adjust{width:38px;height:38px;border-radius:50%;border:1.5px solid rgba(255,255,255,.25);background:transparent;color:#fff9;font-size:var(--font-size-xl);font-weight:400;display:flex;align-items:center;justify-content:center}.tour-year-big{font-family:var(--font-display);font-weight:900;font-size:4.25rem;color:var(--color-accent-secondary);text-shadow:0 0 24px rgba(0,245,255,.6);line-height:1;letter-spacing:-.03em}.tour-preview-slider{width:100%;max-width:320px;display:flex;align-items:center;gap:var(--space-sm)}.tour-slider-label{font-family:var(--font-body);font-size:var(--font-size-sm);color:#ffffff80;min-width:34px;text-align:center}.tour-slider-track{flex:1;height:4px;background:#ffffff26;border-radius:2px;position:relative}.tour-slider-thumb{position:absolute;top:50%;left:45.3%;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:var(--color-accent-secondary);box-shadow:0 0 16px #00f5ffcc;border:2px solid var(--color-bg-primary)}.tour-bet-button{background:linear-gradient(135deg,#ff2d6a1f,#ff2d6a0f);border:2px solid var(--color-accent-primary);border-radius:var(--radius-xl);padding:var(--space-md) var(--space-lg);display:flex;align-items:center;gap:var(--space-sm);box-shadow:0 0 24px #ff2d6a59}.tour-bet-button .tour-bet-dice{font-size:30px;filter:drop-shadow(0 0 6px rgba(255,45,106,.6))}.tour-bet-button .tour-bet-label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);color:var(--color-text-white)}.tour-bet-score{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg-surface);border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.06)}.tour-bet-score-base{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-2xl);color:var(--color-text-neon-muted)}.tour-bet-score-op{color:var(--color-text-dim);font-size:var(--font-size-lg)}.tour-bet-score-multi{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-2xl);color:var(--color-accent-primary)}.tour-bet-score-final{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);color:var(--color-success-neon);text-shadow:0 0 12px rgba(57,255,20,.5)}.tour-steal-button{background:linear-gradient(135deg,#00f5ff1f,#00f5ff0a);border:2px solid var(--color-accent-secondary);border-radius:var(--radius-xl);padding:var(--space-md) var(--space-lg);display:flex;align-items:center;gap:var(--space-sm);box-shadow:0 0 24px #00f5ff66}.tour-steal-button .tour-steal-ninja{font-size:30px}.tour-steal-button .tour-steal-label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);color:var(--color-text-white)}.tour-steal-targets{display:flex;gap:var(--space-sm);align-items:center}.tour-steal-target{background:var(--color-bg-surface);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-neon-muted);border:1px solid rgba(255,255,255,.06)}.tour-steal-target.highlighted{color:var(--color-text-white);border-color:var(--color-accent-secondary);box-shadow:0 0 12px #00f5ff59}.tour-hint{font-family:var(--font-body);font-size:var(--font-size-sm);color:#fff6;text-align:center;font-style:italic;margin-top:var(--space-xs)}.tour-ta-fields{display:flex;flex-direction:column;gap:var(--space-sm);width:100%}.tour-ta-field{display:flex;flex-direction:column;gap:4px;padding:10px 14px;background:linear-gradient(180deg,#ff2d6a0f,#ffffff05);border:1px solid rgba(255,45,106,.22);border-radius:var(--radius-lg);text-align:left}.tour-ta-field-label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.tour-ta-field-val{font-family:var(--font-body);font-weight:600;font-size:var(--font-size-md);color:var(--color-text-white)}.tour-artist-prompt{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg-surface);border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.06);width:100%;max-width:320px}.tour-artist-prompt .tour-artist-mic{font-size:var(--font-size-xl)}.tour-artist-prompt .tour-artist-who{font-family:var(--font-body);font-size:var(--font-size-base);font-weight:500;color:var(--color-text-white)}.tour-artist-prompt .tour-artist-bonus{margin-left:auto;background:#22c55e26;color:var(--color-success);font-weight:700;font-size:var(--font-size-sm);padding:2px var(--space-sm);border-radius:var(--radius-full)}.tour-artist-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);width:100%;max-width:320px}.tour-artist-option{min-height:48px;padding:var(--space-sm) var(--space-md);border:2px solid rgba(255,255,255,.12);border-radius:var(--radius-md);background:var(--color-bg-surface);color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base);font-weight:500;display:flex;align-items:center;justify-content:center;cursor:default}.tour-artist-option.is-winner{background:var(--color-success);border-color:var(--color-success);color:var(--color-text-white);box-shadow:var(--glow-primary)}.tour-footer{margin-top:auto;padding-top:var(--space-md);display:flex;gap:var(--space-sm);align-items:stretch}.btn-tour-skip{flex:1;background:transparent;color:var(--color-text-neon-muted);border:1.5px solid rgba(255,255,255,.15);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-md);font-family:var(--font-body);font-weight:600;font-size:var(--font-size-md);cursor:pointer}.btn-tour-skip:hover,.btn-tour-skip:focus-visible{border-color:#ffffff4d;color:var(--color-text-white);outline:none}.btn-tour-next{flex:2;background:var(--color-accent-primary);color:var(--color-text-white);border:none;border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);box-shadow:var(--glow-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--space-sm)}.btn-tour-next .chev{opacity:.85}#ready-view.view:not(.hidden){display:flex;flex-direction:column}.ready-container{min-height:100vh;padding:var(--space-xl);background:radial-gradient(circle at 50% 30%,rgba(255,45,106,.1),transparent 55%),radial-gradient(circle at 85% 80%,rgba(0,245,255,.08),transparent 55%),var(--color-bg-primary);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-sm)}.ready-wordmark{font-family:var(--font-display);font-weight:900;font-size:5rem;letter-spacing:-.02em;margin-bottom:var(--space-sm);text-shadow:0 0 48px rgba(255,45,106,.55);animation:ready-wordmark-in .5s ease-out}.ready-wordmark .beat{color:var(--color-text-white)}.ready-wordmark .ify{background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}@keyframes ready-wordmark-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.ready-name{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-3xl);color:var(--color-text-white);margin-bottom:var(--space-xs);animation:ready-fade-in .5s ease-out .1s both}.ready-subtitle{font-family:var(--font-body);font-size:var(--font-size-md);color:var(--color-text-neon-muted);margin-bottom:var(--space-2xl);animation:ready-fade-in .5s ease-out .2s both}@keyframes ready-fade-in{0%{opacity:0}to{opacity:1}}.ready-waiting{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);animation:ready-fade-in .5s ease-out .3s both}.ready-pulse{position:relative;width:16px;height:16px;border-radius:50%;background:var(--color-accent-secondary);box-shadow:0 0 12px #00f5ffb3}.ready-pulse:before{content:"";position:absolute;inset:-8px;border-radius:50%;border:2px solid var(--color-accent-secondary);opacity:.6;animation:ready-pulse-ring 1.8s ease-out infinite}@keyframes ready-pulse-ring{0%{transform:scale(.6);opacity:.8}to{transform:scale(2.4);opacity:0}}@media(prefers-reduced-motion:reduce){.ready-wordmark,.ready-name,.ready-subtitle,.ready-waiting{animation:none}.ready-pulse:before{animation:none;opacity:0}}.ready-label{font-family:var(--font-body);font-size:var(--font-size-md);font-weight:500;color:var(--color-text-white)}.ready-count{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--color-text-dim)}.replay-tour-link{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:transparent;border:1px dashed rgba(255,45,106,.4);border-radius:var(--radius-md);color:var(--color-accent-primary);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;text-decoration:none;margin-bottom:var(--space-sm);cursor:pointer;width:100%;transition:all var(--transition-fast)}.replay-tour-link:hover,.replay-tour-link:focus-visible{border-color:var(--color-accent-primary);background:#ff2d6a0d;outline:none}.replay-tour-link .arrow{margin-left:auto}.home-player-tile--learning{border-style:dashed!important;opacity:.72}.home-player-tile-tour{position:absolute;top:-6px;right:-6px;background:#00f5ff1a;color:var(--color-accent-secondary);font-family:var(--font-body);font-size:9px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:var(--radius-full);border:1px solid rgba(0,245,255,.4);box-shadow:0 0 8px #00f5ff40}.home-learning-warning{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-sm);background:#ff660014;border:1px solid rgba(255,102,0,.25);border-radius:var(--radius-md);color:var(--color-warning-alt);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;text-align:center}.home-learning-warning.hidden{display:none}.player-tiles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:var(--space-sm);justify-items:center;width:100%}.player-tiles-grid:empty{display:none}.player-tile{position:relative;width:100%;aspect-ratio:1;padding:var(--space-sm);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:linear-gradient(135deg,var(--tile-from),var(--tile-to));border:1.5px solid var(--tile-border);box-shadow:0 0 14px var(--tile-glow);--tile-from: rgba(0, 245, 255, .32);--tile-to: rgba(0, 245, 255, .08);--tile-border: rgba(0, 245, 255, .7);--tile-glow: rgba(0, 245, 255, .35);transition:box-shadow var(--transition-fast),border-color var(--transition-fast)}.player-tile-initial{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-3xl);line-height:1;color:var(--color-text-white);text-shadow:0 2px 8px rgba(0,0,0,.4)}.player-tile-name{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xs);color:var(--color-text-white);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}.player-tile--c2{--tile-from: rgba(57, 255, 20, .32);--tile-to: rgba(57, 255, 20, .08);--tile-border: rgba(57, 255, 20, .65);--tile-glow: rgba(57, 255, 20, .32)}.player-tile--c3{--tile-from: rgba(255, 102, 0, .32);--tile-to: rgba(255, 102, 0, .08);--tile-border: rgba(255, 102, 0, .65);--tile-glow: rgba(255, 102, 0, .32)}.player-tile--c4{--tile-from: rgba(0, 245, 255, .22);--tile-to: rgba(0, 245, 255, .04);--tile-border: rgba(0, 245, 255, .5);--tile-glow: rgba(0, 245, 255, .22)}.player-tile--host{--tile-from: rgba(255, 45, 106, .35);--tile-to: rgba(255, 45, 106, .08);--tile-border: rgba(255, 45, 106, .85);--tile-glow: rgba(255, 45, 106, .5);box-shadow:var(--glow-primary),0 0 22px #ff2d6a59}.player-tile-crown{position:absolute;top:-10px;right:-10px;font-size:20px;line-height:1;filter:drop-shadow(0 0 6px rgba(255,45,106,.8));pointer-events:none}.player-tile-you-chip{position:absolute;top:-10px;right:-10px;background:var(--color-accent-secondary);color:var(--color-bg-primary);font-family:var(--font-display);font-weight:900;font-size:9px;letter-spacing:.1em;padding:3px 7px;border-radius:var(--radius-full);box-shadow:0 0 12px #00f5ff99;pointer-events:none}.player-tile-away{position:absolute;bottom:-8px;left:50%;transform:translate(-50%);font-family:var(--font-body);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-dim);background:var(--color-bg-primary);padding:2px 6px;border-radius:var(--radius-full);border:1px solid rgba(255,255,255,.12);pointer-events:none}.player-tile--disconnected{opacity:.5;filter:grayscale(.4)}.player-tile.is-new{animation:player-tile-pop var(--transition-slow) ease-out}@keyframes player-tile-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.player-tile.is-new{animation:none}}.reveal-header-v2{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md);gap:var(--space-sm)}.reveal-header-v2 .round-count{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-neon-muted);display:flex;align-items:center;gap:4px}.reveal-header-v2 .header-right{display:flex;align-items:center;gap:var(--space-sm)}.reveal-advance-pill{position:relative;width:32px;height:32px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.reveal-advance-pill.hidden{display:none}.reveal-advance-svg{width:100%;height:100%;transform:rotate(-90deg)}.reveal-advance-bg{fill:none;stroke:#ffffff1f;stroke-width:5}.reveal-advance-fg{fill:none;stroke:var(--color-accent-secondary);stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset .5s linear;filter:drop-shadow(var(--glow-secondary))}.reveal-advance-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:13px;color:var(--color-accent-secondary)}.info-btn{width:28px;height:28px;border-radius:50%;border:1px solid rgba(255,255,255,.14);background:var(--color-bg-surface);color:var(--color-text-neon-muted);font-size:var(--font-size-base);font-weight:700;font-family:var(--font-display);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast);padding:0}.info-btn:hover,.info-btn:focus-visible{color:var(--color-text-white);border-color:#ffffff4d;outline:none}.song-strip{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-sm) var(--space-sm) var(--space-sm);background:#ffffff0a;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.08);margin-bottom:var(--space-md)}.song-strip-cover{width:56px;height:56px;border-radius:var(--radius-md);object-fit:cover;flex-shrink:0;background:linear-gradient(135deg,#ff6b9a,#6366f1)}.song-strip-info{flex:1;min-width:0}.song-strip-title{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-md);color:var(--color-text-white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-strip-artist{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--color-text-neon-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-row{display:flex;gap:var(--space-xs);margin-bottom:var(--space-sm);flex-wrap:wrap}.chip-row.hidden{display:none}.chip-row .chip{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:var(--radius-full);font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:700;letter-spacing:.04em}.chip-row .chip--bet-won{background:#ff2d6a1f;border:1px solid rgba(255,45,106,.5);color:var(--color-accent-primary);box-shadow:0 0 12px #ff2d6a33}.chip-row .chip--bet-lost{background:#ff004014;border:1px solid rgba(255,0,64,.4);color:var(--color-error-neon)}.chip-row .chip--streak{background:#ff66001f;border:1px solid rgba(255,102,0,.5);color:var(--color-warning-alt)}.duel{padding:var(--space-lg) var(--space-xs) var(--space-md);margin-bottom:var(--space-sm)}.duel-emotion{text-align:center;font-family:var(--font-display);font-weight:900;font-size:var(--font-size-2xl);letter-spacing:.06em;margin-bottom:var(--space-md);min-height:1.2em;transition:color var(--transition-normal)}.duel-emotion.hidden{visibility:hidden}.duel-emotion--exact{color:var(--color-success-neon);text-shadow:0 0 16px rgba(57,255,20,.55)}.duel-emotion--close{color:var(--color-success-neon);text-shadow:0 0 14px rgba(57,255,20,.45)}.duel-emotion--wrong{color:var(--color-error-neon);text-shadow:0 0 14px rgba(255,0,64,.45)}.duel-emotion--missed{color:var(--color-text-dim);text-shadow:none}.duel-row{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--space-sm);align-items:center}.duel-side{text-align:center;min-width:0}.duel-label{font-family:var(--font-body);font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-dim);font-weight:600;margin-bottom:var(--space-sm)}.duel-year{font-family:var(--font-display);font-weight:900;font-size:clamp(40px,12vw,64px);line-height:1;letter-spacing:-.03em}.duel-year.mine{color:var(--color-text-neon-muted)}.duel-year.correct{color:var(--color-accent-secondary);text-shadow:0 0 24px rgba(0,245,255,.6)}.duel-gap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:48px}.duel-gap-x{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-xl);color:var(--color-text-dim);opacity:.6;line-height:1}.duel-gap-n{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-2xl);color:var(--color-error-neon);text-shadow:0 0 10px rgba(255,0,64,.35);line-height:1}.duel-gap--exact .duel-gap-n{color:var(--color-success-neon);text-shadow:0 0 10px rgba(57,255,20,.5)}.duel-gap--close .duel-gap-n{color:var(--color-success-neon);text-shadow:0 0 8px rgba(57,255,20,.35)}.duel-gap-unit{font-family:var(--font-body);font-size:9px;color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.1em;margin-top:3px}.score-row{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--color-bg-surface);border-radius:var(--radius-lg);border:1px solid rgba(0,245,255,.25);box-shadow:0 0 14px #00f5ff1f;margin-bottom:var(--space-md);gap:var(--space-sm)}.score-row-left{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--color-text-neon-muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em;display:flex;flex-direction:column;gap:3px;min-width:0}.score-row-subtitle{color:var(--color-text-white);font-size:var(--font-size-sm);font-weight:700;letter-spacing:0;text-transform:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-row-right{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.score-row-pts{font-family:var(--font-display);font-weight:900;font-size:38px;color:var(--color-accent-secondary);text-shadow:0 0 18px rgba(0,245,255,.5);line-height:1}.standings-section .leaderboard-list{display:flex;flex-direction:column;gap:6px}.sheet-backdrop{position:fixed;inset:0;z-index:400;display:flex;align-items:flex-end;justify-content:center}.sheet-backdrop.hidden{display:none}.sheet-dim{position:absolute;inset:0;background:#0a0a1299;backdrop-filter:blur(2px);animation:sheet-dim-in .2s ease-out}@keyframes sheet-dim-in{0%{opacity:0}to{opacity:1}}.sheet{position:relative;z-index:1;width:100%;max-width:520px;background:linear-gradient(180deg,#14141e,#0a0a12);border-top:1px solid rgba(0,245,255,.25);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;box-shadow:0 -12px 40px #00000080,0 -4px 16px #00f5ff1a;padding:14px 20px calc(28px + env(safe-area-inset-bottom,0));max-height:80vh;overflow-y:auto;animation:sheet-slide-up .32s cubic-bezier(.22,.8,.32,1)}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.sheet-dim,.sheet{animation:none}}.sheet-handle{width:40px;height:4px;border-radius:2px;background:#fff3;margin:0 auto 16px}.sheet-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.sheet-title{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-lg);display:flex;align-items:center;gap:8px;color:var(--color-text-white)}.sheet-close{width:32px;height:32px;border-radius:50%;background:#ffffff14;border:0;color:var(--color-text-neon-muted);font-size:var(--font-size-base);font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer}.sheet-close:hover,.sheet-close:focus-visible{color:var(--color-text-white);background:#ffffff24;outline:none}.breakdown-list{display:flex;flex-direction:column;margin-bottom:var(--space-md)}.breakdown-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;font-family:var(--font-body);font-size:var(--font-size-base)}.breakdown-row+.breakdown-row{border-top:1px solid rgba(255,255,255,.05)}.breakdown-row .label{color:var(--color-text-neon-muted);display:flex;align-items:center;gap:8px}.breakdown-row .label .emoji{font-size:var(--font-size-md)}.breakdown-row .value{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-md)}.breakdown-row .value--positive{color:var(--color-success-neon)}.breakdown-row .value--multiplier{color:var(--color-accent-primary)}.breakdown-row .value--neutral{color:var(--color-text-white)}.breakdown-total{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border-radius:var(--radius-lg);background:linear-gradient(90deg,#00f5ff14,#ff2d6a0d);border:1px solid rgba(0,245,255,.3)}.breakdown-total .label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-md);color:var(--color-text-white)}.breakdown-total .value{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-3xl);color:var(--color-accent-secondary);text-shadow:0 0 16px rgba(0,245,255,.5)}.breakdown-total--zero .value{color:var(--color-text-dim);text-shadow:none}.breakdown-empty{text-align:center;padding:var(--space-md) 0}.breakdown-empty-icon{font-size:42px;margin-bottom:var(--space-sm)}.breakdown-empty-text{color:var(--color-text-neon-muted);font-family:var(--font-body);font-size:var(--font-size-base);margin-bottom:var(--space-md)}.difficulty-visual{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);background:#ff004014;border:1px solid rgba(255,0,64,.3);border-radius:var(--radius-md);margin-bottom:var(--space-sm);gap:var(--space-sm)}.difficulty-visual .left{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-sm);color:var(--color-error-neon);min-width:0}.difficulty-visual .left .sub{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-neon-muted);margin-top:3px}.difficulty-visual .stars{font-size:var(--font-size-md);letter-spacing:2px;white-space:nowrap}.difficulty-visual .star-filled{color:var(--color-warning-alt)}.difficulty-visual .star-empty{color:#ffffff26}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-sm)}.stats-card{padding:12px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-md)}.stats-card .lbl{font-family:var(--font-body);font-size:10px;color:var(--color-text-dim);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.stats-card .val{font-family:var(--font-display);font-weight:800;font-size:var(--font-size-2xl);margin-top:4px;color:var(--color-text-white)}.stats-card .val.cyan{color:var(--color-accent-secondary)}.stats-card .val.success{color:var(--color-success-neon)}.stats-card .val.warn{color:var(--color-error-neon)}.stats-card .sub{font-family:var(--font-body);font-size:10px;color:var(--color-text-neon-muted);margin-top:2px}.furthest-list{display:flex;flex-direction:column;gap:6px}.furthest-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#ffffff08;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-size-sm)}.furthest-row .name{font-weight:600;color:var(--color-text-white)}.furthest-row .off{color:var(--color-error-neon);font-family:var(--font-display);font-weight:700}.stats-empty{text-align:center;color:var(--color-text-dim);font-family:var(--font-body);font-size:var(--font-size-sm);padding:var(--space-md)}.game-container--arcade{padding:0;display:flex;flex-direction:column;gap:0}.arc-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);position:sticky;top:0;z-index:5;background:linear-gradient(180deg,rgba(10,10,18,.95),rgba(10,10,18,.82) 72%,transparent);backdrop-filter:blur(8px);margin-bottom:var(--space-md)}.timer-float{position:fixed;top:max(env(safe-area-inset-top,0px) + 8px,8px);right:12px;z-index:100;width:52px;height:52px;border-radius:50%;background:#0a0a12c7;border:2px solid var(--color-accent-primary);box-shadow:0 0 14px #ff2d6a73,inset 0 0 8px #ff2d6a40;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:22px;line-height:1;color:var(--color-accent-primary);text-shadow:0 0 8px rgba(255,45,106,.6);backdrop-filter:blur(8px);transition:opacity .2s ease-out,transform .2s ease-out;pointer-events:none}.timer-float.hidden{opacity:0;transform:scale(.7);pointer-events:none}.timer-float.timer-float--visible{opacity:1;transform:scale(1)}.timer-float.timer-float--warn{border-color:var(--color-error-neon, #ff0040);color:var(--color-error-neon, #ff0040);box-shadow:0 0 16px #ff004099,inset 0 0 8px #ff00404d;animation:arc-urgency .8s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.timer-float{transition:none}.timer-float.timer-float--warn{animation:none}}.arc-pulse-orb{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(135deg,#ff6b9a,#6366f1);box-shadow:0 0 24px #ff2d6a80;flex-shrink:0}.arc-pulse-orb:before{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(255,45,106,.5);animation:arc-orb-pulse 1.4s ease-out infinite;pointer-events:none}.arc-pulse-orb--steady:before{animation:none;opacity:0}@keyframes arc-orb-pulse{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.25)}}@media(prefers-reduced-motion:reduce){.arc-pulse-orb:before{animation:none;opacity:0}}.arc-pulse-orb-img{width:100%;height:100%;object-fit:cover;border-radius:50%;z-index:1;filter:blur(12px);transform:scale(1.15);transition:filter .4s ease,transform .4s ease}.arc-round-center{text-align:center;font-family:var(--font-display);font-weight:800;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-neon-muted);line-height:1.3;overflow:hidden}.arc-round-label{display:block}.arc-round-big{display:block;font-size:20px;color:var(--color-text-white);letter-spacing:0;text-transform:none;margin-top:2px}.arc-round-sep{color:var(--color-text-dim);margin:0 2px;font-weight:500}.timer-neon{width:72px;height:72px;border-radius:50%;background:var(--color-bg-primary);border:3px solid var(--color-accent-primary);box-shadow:var(--glow-primary),inset 0 0 12px #ff2d6a4d;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:30px;color:var(--color-accent-primary);text-shadow:0 0 10px rgba(255,45,106,.6);flex-shrink:0;line-height:1}.timer-neon .timer{color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit}.timer-neon.timer-neon--warn{border-color:var(--color-error-neon);color:var(--color-error-neon);box-shadow:0 0 20px #ff004099,inset 0 0 12px #ff00404d;animation:arc-urgency .8s ease-in-out infinite}@keyframes arc-urgency{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.timer-neon.timer-neon--catchup{animation:timer-catchup-glow .4s ease-out}@keyframes timer-catchup-glow{0%{box-shadow:var(--glow-primary),inset 0 0 12px #ff2d6a4d}45%{box-shadow:0 0 26px #00f5ffb3,inset 0 0 16px #00f5ff59}to{box-shadow:var(--glow-primary),inset 0 0 12px #ff2d6a4d}}@media(prefers-reduced-motion:reduce){.timer-neon.timer-neon--warn,.timer-neon.timer-neon--catchup{animation:none}}.arc-chip-row{display:flex;gap:6px;flex-wrap:wrap;padding:0 var(--space-md);margin-bottom:var(--space-md)}.arc-chip-row.hidden{display:none}.arc-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--radius-full);font-family:var(--font-body);font-size:11px;font-weight:700;letter-spacing:.04em}.arc-chip--steal{color:var(--color-accent-secondary);background:#00f5ff14;border:1px solid rgba(0,245,255,.4)}.arc-chip--closest-wins{color:var(--color-success-neon);background:#39ff1414;border:1px solid rgba(57,255,20,.4)}.arc-chip--intro{color:var(--color-warning-alt);background:#ff66001f;border:1px solid rgba(255,102,0,.5)}.arc-chip--final{color:var(--color-accent-primary);background:#ff2d6a1f;border:1px solid rgba(255,45,106,.5);text-transform:uppercase}.year-xxl{text-align:center;font-family:var(--font-display);font-weight:900;font-size:clamp(96px,34vw,128px);line-height:1;letter-spacing:-.04em;background:linear-gradient(180deg,var(--color-text-white) 0%,rgba(0,245,255,.85) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:0 0 32px rgba(0,245,255,.35);margin:4px 0 var(--space-md);padding:0 var(--space-md);max-width:100%}.year-xxl--locked{background:linear-gradient(180deg,var(--color-success-neon) 0%,rgba(57,255,20,.7) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 28px rgba(57,255,20,.45)}.submitted-banner{margin:0 var(--space-md) var(--space-sm);padding:8px 14px;background:#39ff1414;border:1px solid rgba(57,255,20,.4);border-radius:var(--radius-md);font-family:var(--font-display);font-weight:800;font-size:14px;color:var(--color-success-neon);letter-spacing:.04em;display:flex;align-items:center;justify-content:center;gap:6px;text-align:center}.submitted-banner.hidden{display:none}.submitted-banner .check{width:18px;height:18px;border-radius:50%;background:var(--color-success-neon);color:var(--color-bg-primary);font-size:11px;font-weight:900;display:flex;align-items:center;justify-content:center;flex-shrink:0}.slider-arcade-wrap{padding:0 var(--space-md);margin-bottom:var(--space-md);position:relative}.slider-arcade{padding:10px;background:#ffffff0a;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:12px}.slider-btn-year{width:44px;height:44px;border-radius:50%;background:var(--color-bg-primary);border:2px solid rgba(255,255,255,.15);color:var(--color-text-white);font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);touch-action:manipulation}.slider-btn-year:hover,.slider-btn-year:focus-visible{border-color:var(--color-accent-secondary);color:var(--color-accent-secondary);outline:none}.slider-btn-year:disabled{opacity:.4;cursor:not-allowed}.slider-btn-year--coarse{position:relative;width:36px;height:36px;font-size:13px;font-weight:800;letter-spacing:-.02em}.slider-btn-year--coarse:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.slider-arcade{gap:8px}.slider-arcade-track{flex:1;display:flex;flex-direction:column;align-items:stretch;gap:4px}.year-scale{position:relative;height:13px;margin:0 2px;pointer-events:none}.year-scale span{position:absolute;top:0;transform:translate(-50%);font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--color-text-muted, rgba(255, 255, 255, .42));font-variant-numeric:tabular-nums;white-space:nowrap;user-select:none}.slider-arcade.slider-arcade--locked .year-scale{opacity:.5}.year-slider-arcade{-webkit-appearance:none;appearance:none;width:100%;height:10px;background:linear-gradient(90deg,#00f5ff26,#ff2d6a40,#39ff1426);border-radius:var(--radius-full);outline:none;cursor:pointer}.year-slider-arcade::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:32px;height:32px;border-radius:50%;background:var(--color-accent-primary);border:3px solid var(--color-bg-primary);box-shadow:var(--glow-primary);cursor:grab;transition:transform var(--transition-fast)}.year-slider-arcade::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.05)}.year-slider-arcade::-moz-range-thumb{width:32px;height:32px;border-radius:50%;background:var(--color-accent-primary);border:3px solid var(--color-bg-primary);box-shadow:var(--glow-primary);cursor:grab}.slider-arcade.slider-arcade--locked{opacity:.55;pointer-events:none}.slider-arcade.slider-arcade--locked .year-slider-arcade::-webkit-slider-thumb{background:var(--color-success-neon);box-shadow:0 0 16px #39ff1499}.slider-arcade.slider-arcade--locked .year-slider-arcade::-moz-range-thumb{background:var(--color-success-neon);box-shadow:0 0 16px #39ff1499}.guess-lock-stamp{position:absolute;right:calc(var(--space-md) + 8px);top:-10px;padding:3px 10px;font-family:var(--font-display);font-weight:900;font-size:10px;color:var(--color-success-neon);background:var(--color-bg-primary);border:1px solid rgba(57,255,20,.4);border-radius:var(--radius-full);letter-spacing:.08em;text-transform:uppercase;box-shadow:0 0 8px #39ff1440}.guess-lock-stamp.hidden{display:none}.arc-tiles{padding:12px 14px;margin:0 var(--space-md) var(--space-md);background:linear-gradient(180deg,#00f5ff0a,#ffffff05);border:1px solid rgba(0,245,255,.18);border-radius:var(--radius-lg);box-shadow:inset 0 0 12px #00f5ff0a}.arc-tiles.hidden{display:none}.arc-tiles-header{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted);margin-bottom:10px;gap:var(--space-sm)}.arc-tiles-header>span:first-child{display:flex;align-items:center;gap:6px;min-width:0}.arc-tiles-bonus{background:#39ff1426;color:var(--color-success-neon);font-weight:900;font-size:11px;padding:2px 8px;border-radius:var(--radius-full);letter-spacing:.04em;flex-shrink:0}.arc-tiles-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.arc-tiles-grid .artist-option-btn,.arc-tiles-grid .movie-option-btn{padding:14px 10px;background:#ffffff0d;border:2px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);font-family:var(--font-display);font-weight:700;font-size:15px;text-align:center;color:var(--color-text-white);box-shadow:0 4px #0000004d;transition:transform var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast);cursor:pointer;min-height:56px}.arc-tiles-grid .artist-option-btn:hover,.arc-tiles-grid .movie-option-btn:hover,.arc-tiles-grid .artist-option-btn:focus-visible,.arc-tiles-grid .movie-option-btn:focus-visible{border-color:#00f5ff8c;outline:none}.arc-tiles-grid .artist-option-btn:active,.arc-tiles-grid .movie-option-btn:active{transform:translateY(1px);box-shadow:0 2px #0000004d}.arc-tiles-grid .artist-option-btn.is-loading{background:linear-gradient(135deg,#00f5ff33,#00f5ff0d);border-color:var(--color-accent-secondary);color:var(--color-accent-secondary);animation:arc-tile-pulse 1s ease-in-out infinite}@keyframes arc-tile-pulse{0%,to{opacity:1}50%{opacity:.7}}.arc-tiles-grid .artist-option-btn.is-winner,.arc-tiles-grid .artist-option-btn.is-correct,.arc-tiles-grid .movie-option-btn.is-winner,.arc-tiles-grid .movie-option-btn.is-correct{background:linear-gradient(135deg,#39ff1440,#39ff1414);border-color:var(--color-success-neon);color:var(--color-success-neon);box-shadow:0 0 20px #39ff1480,0 4px #0000004d}.arc-tiles-grid .artist-option-btn.is-wrong,.arc-tiles-grid .artist-option-btn.is-wrong.is-selected,.arc-tiles-grid .movie-option-btn.is-wrong{opacity:.5;border-style:dashed}.arc-tiles-grid .artist-option-btn.is-disabled,.arc-tiles-grid .movie-option-btn.is-disabled{opacity:.6;cursor:not-allowed;box-shadow:none}@media(prefers-reduced-motion:reduce){.arc-tiles-grid .artist-option-btn.is-loading{animation:none}}.bonus-filler{padding:var(--space-md);margin:0 var(--space-md) var(--space-md);background:#ffffff05;border:1px dashed rgba(255,255,255,.1);border-radius:var(--radius-lg);text-align:center;font-family:var(--font-body);font-size:12px;color:var(--color-text-dim);font-style:italic;display:flex;align-items:center;justify-content:center;gap:6px}.bonus-filler.hidden{display:none}.arc-actions{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:0 var(--space-md);margin-bottom:var(--space-md)}.bet-arc{width:72px;height:60px;background:transparent;border:2px solid rgba(255,45,106,.5);color:var(--color-accent-primary);border-radius:var(--radius-lg);font-family:var(--font-display);font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;box-shadow:0 4px #0000004d;cursor:pointer;transition:all var(--transition-fast)}.bet-arc .bet-icon{font-size:22px;line-height:1}.bet-arc .bet-label{font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.bet-arc.is-active{background:#ff2d6a26;box-shadow:var(--glow-primary),0 4px #0000004d}.bet-arc:active{transform:translateY(2px);box-shadow:0 2px #0000004d}.bet-arc:disabled{opacity:.55;cursor:not-allowed}.submit-arc{background:linear-gradient(180deg,#ff4d82,var(--color-accent-primary));border:0;color:var(--color-text-white);border-radius:var(--radius-lg);padding:16px 20px;font-family:var(--font-display);font-weight:900;font-size:17px;letter-spacing:.08em;text-transform:uppercase;box-shadow:var(--glow-primary),0 6px #b4143c99;cursor:pointer;transition:transform var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:8px}.submit-arc:active{transform:translateY(2px);box-shadow:var(--glow-primary),0 4px #b4143c99}.submit-arc:disabled{background:#ffffff0f;color:var(--color-text-neon-muted);box-shadow:0 4px #0000004d;cursor:not-allowed;text-shadow:none}.submit-arc.submit-arc--waiting{background:#ffffff0d;color:var(--color-text-neon-muted);box-shadow:0 4px #0000004d;text-shadow:none}.submit-arc .waiting-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-accent-secondary);box-shadow:0 0 8px #00f5ff80;animation:arc-wait-pulse 1.2s ease-in-out infinite}@keyframes arc-wait-pulse{0%,to{opacity:.4}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.submit-arc .waiting-dot{animation:none}}.steal-btn-full{margin:0 var(--space-md) var(--space-md);background:#00f5ff14;border:2px solid var(--color-accent-secondary);color:var(--color-accent-secondary);border-radius:var(--radius-lg);padding:14px;font-family:var(--font-display);font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase;box-shadow:0 0 16px #00f5ff4d,0 4px #0000004d;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:transform var(--transition-fast)}.steal-btn-full.hidden{display:none}.steal-btn-full:active{transform:translateY(2px);box-shadow:0 0 16px #00f5ff4d,0 2px #0000004d}.steal-btn-full .steal-btn-icon{font-size:18px}.powerup-btn-row{display:flex;gap:var(--space-md);margin:0 var(--space-md) var(--space-md)}.powerup-btn-row .steal-btn-full,.powerup-btn-row .sabotage-btn-full{flex:1;margin:0}.sabotage-btn-full{background:#ff2d5514;border:2px solid var(--color-danger, #ff2d55);color:var(--color-danger, #ff2d55);border-radius:var(--radius-lg);padding:14px;font-family:var(--font-display);font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase;box-shadow:0 0 16px #ff2d554d,0 4px #0000004d;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:transform var(--transition-fast)}.sabotage-btn-full.hidden{display:none}.sabotage-btn-full:active{transform:translateY(2px);box-shadow:0 0 16px #ff2d554d,0 2px #0000004d}.sabotage-btn-full .sabotage-btn-icon{font-size:18px}.arc-chip--sabotage{color:var(--color-danger, #ff2d55);background:#ff2d5514;border:1px solid rgba(255,45,85,.4)}.player-badge--sabotage{top:-2px;left:2px;background:linear-gradient(135deg,#ff2d55,#c1121f)}.sabotage-confirmation{background:linear-gradient(135deg,#ff2d55,#c1121f);box-shadow:0 4px 20px #ff2d5580}.sabotaged-banner{background:linear-gradient(135deg,#ff2d55,#7c1020);box-shadow:0 4px 20px #ff2d5599}.bet-arc--forced{opacity:.85;cursor:not-allowed}.submit-arc--frozen{opacity:.6;filter:grayscale(.4)}.arc-submission-strip{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px var(--space-md) 12px;font-family:var(--font-body);font-size:11px;color:var(--color-text-dim);font-weight:600}.arc-submission-dots{display:flex;align-items:center;gap:6px}.arc-submission-dots .player-indicator{width:12px;height:12px;min-width:12px;padding:0;background:#ffffff2e;border:0;border-radius:50%;font-size:0;color:transparent;transition:all var(--transition-normal);flex:0 0 auto;overflow:hidden;display:block}.arc-submission-dots .player-indicator>*{display:none!important}.arc-submission-dots .player-indicator.is-submitted{background:var(--color-success-neon);box-shadow:0 0 6px #39ff1480}.arc-submission-dots .player-indicator.is-current-player,.arc-submission-dots .player-indicator.is-current{background:var(--color-accent-secondary);box-shadow:0 0 6px #00f5ff80}.arc-submission-dots .player-indicator.is-current-player.is-submitted{background:var(--color-success-neon);box-shadow:0 0 8px #39ff14b3}.arc-submission-count{color:var(--color-text-dim);font-weight:600}.submitted-confirmation.hidden{display:none}.closest-wins-splash{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#0a0a12b3;backdrop-filter:blur(4px);font-family:var(--font-display);font-weight:900;font-size:40px;color:var(--color-success-neon);letter-spacing:.08em;gap:12px;pointer-events:none;text-shadow:0 0 32px rgba(57,255,20,.55);animation:closest-wins-splash-in 1.6s ease-out both}.closest-wins-splash.hidden{display:none}@keyframes closest-wins-splash-in{0%{opacity:0;transform:scale(.8)}20%{opacity:1;transform:scale(1)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.05)}}#round-indicator.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}body:has(#game-view:not(.hidden)) .player-header{display:none}body:has(#game-view:not(.hidden)) .player-container{padding-top:max(var(--space-xs),env(safe-area-inset-top))}body:has(#game-view:not(.hidden)) .arc-header{margin-bottom:var(--space-sm)}body:has(#game-view:not(.hidden)) .year-xxl{font-size:clamp(72px,26vw,104px);margin:2px 0 var(--space-sm)}body:has(#game-view:not(.hidden)) .slider-arcade-wrap{margin-bottom:var(--space-sm)}body:has(#game-view:not(.hidden)) .arc-tiles{padding:10px 12px;margin:0 var(--space-md) var(--space-sm)}body:has(#game-view:not(.hidden)) .arc-tiles-header{margin-bottom:6px}body:has(#game-view:not(.hidden)) .arc-tiles-grid{gap:8px}body:has(#game-view:not(.hidden)) .arc-tiles-grid .artist-option-btn,body:has(#game-view:not(.hidden)) .arc-tiles-grid .movie-option-btn{min-height:52px;padding:12px 10px}body:has(#game-view:not(.hidden)) .arc-actions{margin-bottom:var(--space-sm)}body:has(#game-view:not(.hidden)) .bonus-filler{padding:var(--space-sm) var(--space-md);margin:0 var(--space-md) var(--space-sm)}body.theme-dark .podium{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"hero hero" "second third";gap:var(--space-md);align-items:stretch;justify-content:stretch;margin-bottom:var(--space-xl);padding:0 var(--space-xs)}body.theme-dark .podium-place.podium-1{grid-area:hero;width:100%;padding:var(--space-lg) var(--space-md) var(--space-md);background:linear-gradient(135deg,#ff2d6a24,#00f5ff0f);border:1px solid rgba(255,45,106,.35);border-radius:var(--radius-xl);box-shadow:0 0 40px #ff2d6a2e;text-align:center;justify-content:center}body.theme-dark .podium-place.podium-1 .podium-medal{font-size:38px;margin-bottom:var(--space-xs);filter:drop-shadow(0 0 16px rgba(255,45,106,.6))}body.theme-dark .podium-place.podium-1 .podium-name{font-family:Outfit,sans-serif;font-weight:900;line-height:.92;letter-spacing:-.04em;margin:0 0 var(--space-sm);max-width:100%;white-space:normal;word-break:break-word;overflow:visible;text-overflow:clip;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(255,45,106,.3));font-size:clamp(40px,14vw,64px)}body.theme-dark .podium-place.podium-1 .podium-score{font-family:Inter,sans-serif;font-weight:700;font-size:var(--font-size-3xl);color:var(--color-accent-secondary);font-variant-numeric:tabular-nums;text-shadow:0 0 14px rgba(0,245,255,.5);margin-bottom:0}body.theme-dark .podium-place.podium-1 .podium-stand{display:none}body.theme-dark .podium-place.podium-2,body.theme-dark .podium-place.podium-3{width:100%;min-width:0;padding:var(--space-md) var(--space-sm);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto;align-items:center;gap:var(--space-sm);text-align:left}body.theme-dark .podium-place.podium-2{grid-area:second;border-color:#00f5ff47;box-shadow:0 0 18px #00f5ff1a}body.theme-dark .podium-place.podium-3{grid-area:third}body.theme-dark .podium-place.podium-2 .podium-medal,body.theme-dark .podium-place.podium-3 .podium-medal{font-size:22px;margin:0;line-height:1}body.theme-dark .podium-place.podium-2 .podium-name,body.theme-dark .podium-place.podium-3 .podium-name{font-family:Outfit,sans-serif;font-weight:800;font-size:var(--font-size-lg);color:var(--color-text-white);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.theme-dark .podium-place.podium-2 .podium-score,body.theme-dark .podium-place.podium-3 .podium-score{font-family:Outfit,sans-serif;font-weight:900;font-size:var(--font-size-lg);color:var(--color-accent-secondary);font-variant-numeric:tabular-nums;text-shadow:0 0 8px rgba(0,245,255,.3);margin:0;white-space:nowrap}body.theme-dark .podium-place.podium-2 .podium-stand,body.theme-dark .podium-place.podium-3 .podium-stand{display:none}body.theme-dark .podium-place.podium-2.hidden~.podium-place.podium-3:not(.hidden){grid-area:second}body.theme-dark .your-result{background:linear-gradient(135deg,#ff2d6a1a,#00f5ff0a);border:1px solid rgba(255,45,106,.28);box-shadow:0 0 28px #ff2d6a1f}body.theme-dark .your-result-rank{font-family:Outfit,sans-serif;font-weight:900;font-size:var(--font-size-4xl);letter-spacing:-.03em}body.theme-dark .your-result-stats .stat-value{font-family:Outfit,sans-serif;font-weight:800}.plh-root{display:flex;flex-direction:column;min-height:100%;height:100%;background:var(--color-bg-primary);color:var(--color-text-white);font-family:var(--font-body);font-variant-numeric:tabular-nums;position:relative;isolation:isolate;overflow:hidden}.plh-root:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 70% 25% at 50% 0%,rgba(255,45,106,.12),transparent 60%),radial-gradient(ellipse 60% 30% at 30% 60%,rgba(0,245,255,.06),transparent 60%)}.plh-header{position:sticky;top:0;z-index:5;background:#0a0a12d1;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:8px 14px 6px;border-bottom:1px solid rgba(255,255,255,.04)}.plh-titlebar{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.plh-wordmark{font-family:var(--font-display);font-weight:900;font-size:20px;letter-spacing:-.02em;line-height:1;background:linear-gradient(90deg,var(--color-accent-primary) 0%,var(--color-accent-secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.plh-search{position:relative;margin-bottom:10px}.plh-search input{width:100%;height:40px;padding:0 38px 0 40px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:10px;color:var(--color-text-white);font-family:var(--font-body);font-weight:500;font-size:13px;outline:none;transition:border-color .15s,box-shadow .15s}.plh-search input:focus{border-color:var(--color-accent-secondary);box-shadow:0 0 0 3px #00f5ff26}.plh-search input::placeholder{color:var(--color-text-neon-muted);opacity:.6}.plh-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--color-accent-secondary);opacity:.75}.plh-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;background:var(--color-dark-surface-hover);border:none;color:var(--color-text-neon-muted);font-family:var(--font-display);font-weight:900;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center}.plh-segmented{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;padding:4px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:10px;margin-bottom:10px}.plh-seg{background:transparent;border:none;padding:8px 4px;cursor:pointer;border-radius:7px;display:flex;flex-direction:column;gap:1px;align-items:center;line-height:1.1;font-family:var(--font-body);font-weight:700;font-size:12px;color:var(--color-text-neon-muted);letter-spacing:.04em;transition:background .15s,color .15s}.plh-seg .plh-seg-num{font-family:var(--font-display);font-weight:900;font-size:15px;color:var(--color-text-neon-muted)}.plh-seg .plh-seg-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase}.plh-seg.active{background:linear-gradient(135deg,#ff2d6a38,#00f5ff24);color:var(--color-text-white);box-shadow:inset 0 0 0 1px #ff2d6a59,0 0 18px #ff2d6a2e}.plh-seg.active .plh-seg-num{color:var(--color-accent-primary)}.plh-seg-community.active{background:linear-gradient(135deg,#9d4edd40,#ff2d6a26);box-shadow:inset 0 0 0 1px #9d4edd73,0 0 18px #9d4edd38}.plh-seg-community.active .plh-seg-num{color:#c89af5}.plh-seg-mine.active{background:linear-gradient(135deg,#00f5ff2e,#ff2d6a1a);box-shadow:inset 0 0 0 1px #00f5ff66,0 0 18px #00f5ff2e}.plh-seg-mine.active .plh-seg-num{color:var(--color-accent-secondary)}.plh-chips{display:flex;gap:7px;overflow-x:auto;padding:0 0 6px;scrollbar-width:none}.plh-chips::-webkit-scrollbar{display:none}.plh-chip{flex-shrink:0;padding:7px 13px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:999px;font-family:var(--font-body);font-weight:600;font-size:12px;color:var(--color-text-neon-muted);white-space:nowrap;cursor:pointer;letter-spacing:.01em;transition:background .15s,color .15s,border-color .15s}.plh-chip.active{background:var(--color-accent-primary);color:var(--color-text-white);border-color:transparent;font-weight:700;box-shadow:0 0 16px #ff2d6a73}.plh-list-view,.plh-mix-view{flex:1 1 0;min-height:0;display:flex;flex-direction:column}.plh-body{position:relative;z-index:1;flex:1;overflow-y:auto;padding:14px 0 110px}.plh-loading{padding:40px 20px;text-align:center;font-family:var(--font-body);font-weight:500;font-size:13px;color:var(--color-text-neon-muted)}.plh-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 18px 12px;margin:4px 0 8px;border-bottom:1px solid rgba(0,245,255,.12)}.plh-section-head-title{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:900;font-size:22px;letter-spacing:-.02em;color:var(--color-text-white);line-height:1}.plh-section-head-emoji{font-size:22px;filter:drop-shadow(0 0 12px rgba(0,245,255,.3))}.plh-section-head-meta{font-family:var(--font-body);font-weight:600;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--color-text-neon-muted);flex-shrink:0}.plh-shelf{margin-bottom:22px}.plh-shelf-head{display:flex;align-items:baseline;justify-content:space-between;padding:0 18px 10px}.plh-shelf-title{font-family:var(--font-display);font-weight:800;font-size:18px;letter-spacing:-.01em;color:var(--color-text-white);display:flex;align-items:center;gap:6px}.plh-shelf-see{font-family:var(--font-body);font-weight:600;font-size:12px;color:var(--color-accent-secondary);letter-spacing:.02em;cursor:pointer;background:transparent;border:none;padding:0}.plh-local-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--color-success-neon);box-shadow:0 0 8px var(--color-success-neon);margin-right:8px;vertical-align:middle}.plh-local-badge{font-family:var(--font-body);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-success-neon);padding:2px 7px;background:#39ff141f;border:1px solid rgba(57,255,20,.4);border-radius:999px;margin-left:8px;vertical-align:middle}.plh-cards{display:flex;gap:12px;overflow-x:auto;padding:0 18px 4px;scrollbar-width:none}.plh-cards::-webkit-scrollbar{display:none}.plh-card{flex-shrink:0;width:160px;cursor:pointer;position:relative;background:transparent;border:none;padding:0;text-align:left;color:inherit;font:inherit}.plh-card .plh-cover{width:160px;height:160px;border-radius:12px;position:relative;overflow:hidden;box-shadow:0 10px 24px #00000080;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-end;padding:10px}.plh-card .plh-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.45) 100%);pointer-events:none;z-index:1}.plh-cover-inner{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;height:100%}.plh-cover-glyph{font-family:var(--font-display);font-weight:900;font-size:42px;line-height:.9;letter-spacing:-.04em;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.4);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plh-cover-glyph-long{font-size:26px;letter-spacing:-.02em}.plh-cover-sub{font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:#ffffffeb;margin-top:4px;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:break-word;word-break:break-word;max-width:100%}.plh-cover-badge{position:absolute;top:8px;right:8px;padding:3px 8px;background:#00000080;backdrop-filter:blur(6px);border-radius:999px;font-family:var(--font-body);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-white);z-index:3}.plh-cover-badge-purple{background:#9d4edd80}.plh-card-meta{padding:8px 2px 0}.plh-card-name{font-family:var(--font-body);font-weight:700;font-size:13px;line-height:1.25;color:var(--color-text-white);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plh-card-sub{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px;letter-spacing:.02em}.plh-card-sub b{color:var(--color-accent-secondary);font-weight:700}.plh-card-local{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-success-neon);margin-top:2px;letter-spacing:.02em}.plh-card-local b{color:var(--color-success-neon);font-weight:800}.plh-card-local-when{color:var(--color-text-neon-muted)}.plh-card-local-when b{color:var(--color-accent-secondary)}.plh-pill{position:absolute;top:8px;left:8px;z-index:4;display:inline-flex;align-items:center;gap:4px;padding:5px 10px 5px 8px;border-radius:999px;background:#ff2d6aeb;color:var(--color-text-white);font-family:var(--font-display);font-weight:800;font-size:10px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border:1px solid rgba(255,255,255,.12);box-shadow:0 4px 12px #0006,0 0 14px #ff2d6a59;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:background .15s,color .15s,box-shadow .15s,filter .15s}.plh-pill:hover{filter:brightness(1.1)}.plh-pill-label{line-height:1}.plh-card-selected .plh-pill{background:var(--color-success-neon);color:var(--color-bg-primary);border-color:transparent;box-shadow:0 4px 12px #0006,0 0 18px #39ff148c}.plh-card-selected .plh-cover{box-shadow:0 0 0 3px var(--color-success-neon),0 10px 24px #00000080}.plh-check{display:none}.plh-featured .plh-card,.plh-featured .plh-card .plh-cover{width:160px}.plh-featured .plh-card .plh-cover{height:200px;padding:2px;background:linear-gradient(135deg,var(--color-accent-primary),var(--color-accent-secondary));box-shadow:0 12px 30px #0009,0 0 24px #ff2d6a40}.plh-featured .plh-card .plh-cover:after{border-radius:10px;margin:2px;inset:2px}.plh-featured .plh-cover-inner{padding:10px}.plh-featured .plh-cover-glyph{font-size:48px}.plh-card-community .plh-cover{background:linear-gradient(135deg,#240046,#7209b7,#ff2d6a);box-shadow:0 12px 30px #0009,0 0 28px #9d4edd66}.plh-tint-pop{background:linear-gradient(135deg,#ff2d6a,#ff6b9d 60%,#ff8c42)}.plh-tint-rock{background:linear-gradient(135deg,#c1121f,#ff4d1c 60%,#ff8c42)}.plh-tint-hiphop{background:linear-gradient(135deg,#7209b7,#b5179e 60%,#ff2d6a)}.plh-tint-jazz{background:linear-gradient(135deg,#b08968,#e6a855 60%,#ffc94a)}.plh-tint-metal{background:linear-gradient(135deg,#1a0000,#6a040f 60%,#c1121f)}.plh-tint-eu{background:linear-gradient(135deg,#00b4d8,#0077b6 60%,#03045e)}.plh-tint-latin{background:linear-gradient(135deg,#f60,#ffb703 60%,#fdd85d)}.plh-tint-schlager{background:linear-gradient(135deg,#ff8fab,#ffc2d1 60%,#fae0e4)}.plh-tint-schlager .plh-cover-glyph,.plh-tint-schlager .plh-cover-sub{color:#2a0a1a;text-shadow:none}.plh-tint-soul{background:linear-gradient(135deg,#6a0572,#ab4287 60%,#fcbf49)}.plh-tint-purple{background:linear-gradient(135deg,#240046,#7209b7,#ff2d6a)}.plh-banner{margin:0 18px 18px;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#9d4edd2e,#ff2d6a1a);border:1px solid rgba(157,78,221,.35);display:flex;align-items:center;gap:12px;cursor:pointer}.plh-banner-icon{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#7209b7,var(--color-accent-primary));display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;box-shadow:0 0 14px #9d4edd80}.plh-banner-body{flex:1;min-width:0}.plh-banner-title{font-family:var(--font-display);font-weight:800;font-size:14px;color:var(--color-text-white);line-height:1.2}.plh-banner-sub{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px;line-height:1.35}.plh-banner-arrow{font-family:var(--font-display);font-weight:900;font-size:22px;color:#c89af5}.plh-mine-empty{padding:30px 24px;text-align:center}.plh-empty-emoji{font-size:64px;margin-bottom:12px;filter:drop-shadow(0 0 24px rgba(0,245,255,.3))}.plh-mine-title{font-family:var(--font-display);font-weight:900;font-size:26px;color:var(--color-text-white);margin:0 0 8px;letter-spacing:-.01em;line-height:1.1}.plh-mine-body{font-family:var(--font-body);font-weight:500;font-size:14px;color:var(--color-text-neon-muted);margin:0 0 20px;line-height:1.5}.plh-mine-body b{color:var(--color-text-white);font-weight:700}.plh-request-cta{margin:0 0 16px;padding:20px;background:linear-gradient(135deg,#00f5ff1a,#ff2d6a0f);border:1px solid rgba(0,245,255,.35);border-radius:16px;text-align:left}.plh-request-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.plh-request-icon{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--color-accent-secondary),#0077b6);display:flex;align-items:center;justify-content:center;color:var(--color-bg-primary);font-family:var(--font-display);font-weight:900;font-size:22px;box-shadow:0 0 16px #00f5ff80}.plh-request-titles{flex:1;min-width:0}.plh-request-t1{font-family:var(--font-display);font-weight:800;font-size:16px;color:var(--color-text-white);line-height:1.2}.plh-request-t2{font-family:var(--font-body);font-weight:500;font-size:12px;color:var(--color-text-neon-muted);margin-top:2px;line-height:1.35}.plh-meanwhile{margin:12px 0 0;padding:14px 16px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:12px;display:flex;align-items:center;gap:12px;cursor:pointer;text-align:left}.plh-meanwhile-icon{color:var(--color-accent-secondary);font-family:var(--font-display);font-weight:900;font-size:18px;flex-shrink:0}.plh-meanwhile-body{flex:1;min-width:0}.plh-meanwhile-t1{font-family:var(--font-display);font-weight:800;font-size:13px;color:var(--color-text-white);line-height:1.2}.plh-meanwhile-t2{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px;line-height:1.35}.plh-meanwhile-arrow{color:var(--color-text-neon-muted);font-family:var(--font-display);font-weight:900;font-size:20px}.plh-mine-head{padding:14px 18px 6px;display:flex;align-items:baseline;justify-content:space-between}.plh-mine-count{font-family:var(--font-display);font-weight:800;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-neon-muted)}.plh-mine-count b{color:var(--color-text-white);font-weight:900}.plh-new-request{margin:10px 18px 18px;display:flex;align-items:center;gap:12px;padding:14px;background:linear-gradient(90deg,#00f5ff1a,#ff2d6a14);border:1px dashed rgba(0,245,255,.4);border-radius:12px;cursor:pointer}.plh-new-plus{width:36px;height:36px;border-radius:10px;background:var(--color-accent-secondary);color:var(--color-bg-primary);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:20px;box-shadow:0 0 16px var(--color-accent-secondary);flex-shrink:0}.plh-new-t1{font-family:var(--font-display);font-weight:800;font-size:14px;color:var(--color-text-white);line-height:1.2}.plh-new-t2{font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--color-text-neon-muted);margin-top:2px}.plh-req-list{padding:0 18px;display:flex;flex-direction:column;gap:10px}.plh-req-card{padding:14px 14px 14px 16px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:14px;display:flex;flex-direction:column;gap:10px}.plh-req-card.plh-req-done{border-color:#39ff1459;background:linear-gradient(90deg,rgba(57,255,20,.06),transparent 75%)}.plh-req-card.plh-req-building{border-color:#00f5ff66;background:linear-gradient(90deg,rgba(0,245,255,.06),transparent 75%)}.plh-req-card.plh-req-declined{border-color:#ff2d6a59}.plh-req-row1{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.plh-req-body{min-width:0;flex:1}.plh-req-name{font-family:var(--font-display);font-weight:800;font-size:15px;color:var(--color-text-white);line-height:1.2;letter-spacing:-.01em}.plh-req-desc{font-family:var(--font-body);font-weight:500;font-size:11.5px;color:var(--color-text-neon-muted);margin-top:3px;line-height:1.45;word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plh-req-meta{font-family:var(--font-body);font-weight:600;font-size:10px;color:var(--color-text-light);letter-spacing:.06em;text-transform:uppercase;margin-top:4px}.plh-req-meta b{color:var(--color-text-neon-muted);font-weight:700}.plh-req-link{color:var(--color-accent-secondary);font-weight:700;text-transform:none;letter-spacing:.02em;text-decoration:none}.plh-status-badge{flex-shrink:0;padding:4px 10px;border-radius:999px;font-family:var(--font-display);font-weight:800;font-size:10px;letter-spacing:.14em;text-transform:uppercase;display:flex;align-items:center;gap:5px}.plh-sb-dot{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}.plh-status-badge.pending{background:#f59e0b1f;border:1px solid rgba(245,158,11,.45);color:var(--color-warning)}.plh-status-badge.building{background:#00f5ff1f;border:1px solid rgba(0,245,255,.45);color:var(--color-accent-secondary)}.plh-status-badge.done{background:#39ff141f;border:1px solid rgba(57,255,20,.4);color:var(--color-success-neon)}.plh-status-badge.declined{background:#ff2d6a1f;border:1px solid rgba(255,45,106,.4);color:#ff7ca7}.plh-progress{display:flex;gap:3px;align-items:center}.plh-seg-pill{flex:1;height:3px;border-radius:2px;background:var(--color-border-neon)}.plh-seg-pill.filled-pending{background:var(--color-warning);box-shadow:0 0 6px var(--color-warning)}.plh-seg-pill.filled-building{background:var(--color-accent-secondary);box-shadow:0 0 6px var(--color-accent-secondary)}.plh-seg-pill.filled-done{background:var(--color-success-neon);box-shadow:0 0 6px var(--color-success-neon)}.plh-seg-pill.filled-declined{background:var(--color-accent-primary);box-shadow:0 0 6px var(--color-accent-primary)}.plh-steps-row{display:flex;justify-content:space-between;font-family:var(--font-body);font-weight:600;font-size:9px;color:var(--color-text-light);letter-spacing:.1em;text-transform:uppercase;margin-top:-4px}.plh-steps-row span.active{color:var(--color-text-white);font-weight:800}.plh-empty{padding:30px 28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.plh-empty-icon{width:96px;height:96px;border-radius:26px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);font-size:42px;position:relative}.plh-empty-icon-search{background:radial-gradient(circle,rgba(0,245,255,.12),var(--color-bg-surface) 60%)}.plh-empty-title{font-family:var(--font-display);font-weight:900;font-size:24px;color:var(--color-text-white);margin:0;letter-spacing:-.01em;line-height:1.15}.plh-empty-body{font-family:var(--font-body);font-weight:500;font-size:13px;color:var(--color-text-neon-muted);margin:0;line-height:1.55;max-width:280px}.plh-cyan{color:var(--color-accent-secondary)}.plh-action-stack{display:flex;flex-direction:column;gap:8px;width:100%;max-width:280px;margin-top:12px}.plh-btn{padding:13px 16px;border-radius:12px;font-weight:800;font-size:13px;letter-spacing:.04em;border:1px solid var(--color-border-neon);background:var(--color-bg-surface);color:var(--color-text-white);cursor:pointer;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px;text-transform:uppercase;transition:all .15s;font-family:var(--font-display)}.plh-btn:hover{border-color:var(--color-accent-secondary)}.plh-btn-primary{background:linear-gradient(90deg,var(--color-accent-primary),#ff5fa4);border-color:transparent;color:var(--color-text-white);box-shadow:0 0 24px #ff2d6a73}.plh-btn-primary:hover{border-color:transparent;filter:brightness(1.1)}.plh-btn-cyan{background:linear-gradient(90deg,var(--color-accent-secondary),#0077b6);color:var(--color-bg-primary);border-color:transparent;box-shadow:0 0 22px #00f5ff73}.plh-btn-cyan:hover{border-color:transparent;filter:brightness(1.1)}.plh-btn-neon{background:linear-gradient(90deg,var(--color-success-neon),#7bf1ff);color:var(--color-bg-primary);border-color:transparent;box-shadow:0 0 24px #39ff1480}.plh-btn-ghost{background:transparent;color:var(--color-text-neon-muted)}.plh-sheet-host{position:fixed;inset:0;z-index:50;pointer-events:none;display:none}.plh-sheet-host.open{display:block;pointer-events:auto}.plh-scrim{position:absolute;inset:0;background:#05050ab8;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.plh-sheet{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,#14141e 0%,var(--color-bg-primary) 100%);border-top-left-radius:28px;border-top-right-radius:28px;box-shadow:0 -12px 40px #0009;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;border-top:1px solid rgba(255,45,106,.25);animation:plh-sheet-in .25s ease-out}.plh-sheet-community{border-top-color:#9d4edd66}.plh-sheet:before{content:"";position:absolute;top:10px;left:50%;transform:translate(-50%);width:48px;height:4px;border-radius:999px;background:#fff3}@keyframes plh-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}.plh-sheet-close{position:absolute;top:18px;right:18px;width:32px;height:32px;border-radius:50%;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);color:var(--color-text-neon-muted);cursor:pointer;font-family:var(--font-display);font-weight:900;font-size:16px;line-height:1;z-index:5;display:flex;align-items:center;justify-content:center}.plh-sheet-head{padding:28px 20px 0;display:flex;gap:14px;align-items:flex-start;flex-shrink:0}.plh-sheet-cover{width:100px;height:100px;border-radius:14px;position:relative;overflow:hidden;flex-shrink:0;display:flex;flex-direction:column;justify-content:flex-end;padding:10px;box-shadow:0 12px 30px #00000080}.plh-sheet-cover-glyph{font-family:var(--font-display);font-weight:900;font-size:36px;line-height:.9;letter-spacing:-.04em;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.4)}.plh-sheet-cover-sub{font-family:var(--font-display);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#ffffffe6;margin-top:2px}.plh-sheet-info{flex:1;min-width:0}.plh-sheet-title{font-family:var(--font-display);font-weight:900;font-size:22px;line-height:1.1;letter-spacing:-.02em;color:var(--color-text-white);margin:0}.plh-sheet-author{font-family:var(--font-body);font-weight:500;font-size:12px;color:var(--color-text-neon-muted);margin-top:4px}.plh-sheet-author b{color:var(--color-accent-secondary);font-weight:700}.plh-sheet-stats{display:flex;gap:0;padding:18px 20px 16px;border-bottom:1px solid rgba(255,255,255,.06);margin-top:18px;flex-shrink:0}.plh-stat{flex:1;text-align:center;position:relative}.plh-stat+.plh-stat:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:1px;background:var(--color-border-neon)}.plh-stat-val{font-family:var(--font-display);font-weight:900;font-size:22px;color:var(--color-text-white);letter-spacing:-.02em;line-height:1}.plh-stat-val-cyan{color:var(--color-accent-secondary)}.plh-stat-val-pink{color:var(--color-accent-primary)}.plh-stat-lbl{font-family:var(--font-body);font-weight:700;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--color-text-light);margin-top:4px}.plh-sheet-scroll{flex:1;overflow-y:auto;padding:16px 20px 20px}.plh-sheet-sec-title{font-family:var(--font-display);font-weight:800;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--color-text-neon-muted);margin:0 0 10px}.plh-sheet-desc{font-family:var(--font-body);font-weight:500;font-size:13px;color:var(--color-text-neon-muted);line-height:1.55;margin-bottom:16px;padding:14px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:12px}.plh-sheet-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.plh-sheet-tag{padding:5px 10px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:6px;font-family:var(--font-body);font-weight:600;font-size:11px;color:var(--color-text-white);letter-spacing:.02em}.plh-sheet-providers{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.plh-sheet-provider{padding:6px 10px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);border-radius:8px;font-family:var(--font-body);font-weight:600;font-size:11px;color:var(--color-text-neon-muted)}.plh-sheet-provider b{color:var(--color-accent-secondary);font-weight:800}.plh-sheet-foot{padding:14px 20px calc(14px + env(safe-area-inset-bottom,0px)) 20px;background:#0a0a12f2;border-top:1px solid var(--color-border-neon);display:flex;gap:10px;align-items:center;flex-shrink:0}.plh-sheet-foot .plh-btn{flex:1}.plh-mix-cta:empty{display:none}.plh-cta-bar{position:absolute;left:12px;right:12px;bottom:12px;display:flex;gap:8px;padding:10px;background:#0a0a12e0;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--color-border-neon);border-radius:16px;box-shadow:0 12px 40px #0009;align-items:center;z-index:10}.plh-cta-fab{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--color-accent-secondary) 0%,#0ea5c4 100%);border:none;color:var(--color-bg-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 0 18px #00f5ff73,inset 0 1px #ffffff40;flex-shrink:0;transition:filter .15s}.plh-cta-fab:hover{filter:brightness(1.1)}.plh-cta-fab svg{stroke:#fff;fill:none}.plh-cta-back{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;padding:0 12px;height:44px;border-radius:12px;background:var(--color-bg-surface);border:1px solid var(--color-border-neon);color:var(--color-text-white);font-family:var(--font-display);font-weight:700;font-size:13px;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:border-color .15s,background .15s}.plh-cta-back:hover{border-color:var(--color-accent-secondary)}.plh-cta-back svg{opacity:.85}.plh-cta-count{font-family:var(--font-display);font-weight:900;font-size:14px;color:var(--color-success-neon);padding:0 8px;letter-spacing:.04em;text-shadow:0 0 10px rgba(57,255,20,.5)}.plh-cta-start{flex:1;background:linear-gradient(90deg,var(--color-accent-primary),#ff5fa4);border:none;border-radius:12px;padding:12px;font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--color-text-white);cursor:pointer;letter-spacing:.02em;box-shadow:0 0 24px #ff2d6a80;display:flex;align-items:center;justify-content:center;gap:8px}.plh-cta-start-count{display:none}.plh-cta-start-label{font-family:var(--font-display);font-weight:700}.plh-cta-start-arrow{opacity:.9;flex-shrink:0}.plh-cta-count-empty{opacity:.5}.plh-cta-count-btn{background:transparent;border:1px solid rgba(57,255,20,.35);border-radius:999px;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease}.plh-cta-count-btn:hover,.plh-cta-count-btn:focus-visible{background:#39ff141f;border-color:#39ff1499;outline:none}.plh-cta-count-btn:active{transform:scale(.96)}.plh-cta-start-disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.plh-sheet-selected{border-top-color:#39ff1459}.plh-selected-head{padding:28px 20px 12px;flex-shrink:0}.plh-selected-title{font-family:var(--font-display);font-weight:900;font-size:20px;color:var(--color-text-white);margin:0 0 4px;letter-spacing:.01em}.plh-selected-subtitle{font-size:13px;color:var(--color-text-neon-muted);letter-spacing:.01em}.plh-selected-scroll{overflow-y:auto;padding:4px 16px 24px;flex:1;min-height:0}.plh-selected-row{display:flex;align-items:center;gap:12px;padding:10px 8px;border-bottom:1px solid rgba(255,255,255,.06)}.plh-selected-row:last-child{border-bottom:none}.plh-selected-thumb{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#ffffff0f}.plh-selected-glyph{font-size:20px}.plh-selected-meta{flex:1;min-width:0}.plh-selected-name{font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--color-text-white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plh-selected-sub{font-size:12px;color:var(--color-text-neon-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.plh-selected-sub b{color:var(--color-text-white);font-weight:700}.plh-selected-remove{height:32px;padding:0 12px;border-radius:16px;background:var(--color-bg-surface);border:1px solid rgba(255,45,106,.35);color:#ff5fa4;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;flex-shrink:0;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;transition:background .15s ease,color .15s ease,border-color .15s ease,transform .1s ease}.plh-selected-remove:hover,.plh-selected-remove:focus-visible{background:#ff2d6a2e;border-color:#ff2d6aa6;color:#ff7ab3;outline:none}.plh-selected-remove:active{transform:scale(.94)}.plh-selected-remove-label{line-height:1}.plh-selected-empty{text-align:center;padding:36px 20px;color:var(--color-text-neon-muted)}.plh-selected-empty-icon{font-size:36px;margin-bottom:8px}.plh-selected-empty-title{font-family:var(--font-display);font-weight:700;font-size:14px}@media(min-width:720px){.plh-cards{padding:0 24px 4px}.plh-header{padding:16px 24px 12px}.plh-shelf-head{padding:0 24px 10px}.plh-banner,.plh-new-request{margin-left:24px;margin-right:24px}.plh-req-list{padding:0 24px}.plh-mine-head{padding:14px 24px 6px}}.plg-host{position:fixed;inset:0;z-index:9000;display:flex;align-items:flex-start;justify-content:center;overflow:hidden}.plg-scrim{position:absolute;inset:0;background:#000000b8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.plg-modal{position:relative;z-index:1;margin:32px 16px;max-width:880px;width:100%;background:#0f1116;color:#f1f3f7;border-radius:16px;border:1px solid rgba(255,255,255,.08);box-shadow:0 30px 60px #0009;padding:24px 24px 20px;max-height:calc(100vh - 64px);overflow-y:auto;font-family:var(--font-body, system-ui)}.plg-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;background:#ffffff0f;color:#f1f3f7;border:0;font-size:16px;cursor:pointer}.plg-close:hover{background:#ffffff1f}.plg-title{margin:0 0 4px;font-size:20px;font-family:var(--font-display, system-ui);font-weight:700;letter-spacing:.02em}.plg-sub{margin:0 0 18px;color:#d8dce5;font-size:15px;line-height:1.55}.plg-guide{margin:0 0 18px;background:#14171f;border:1px solid rgba(255,255,255,.08);border-radius:12px;overflow:hidden}.plg-guide-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;box-sizing:border-box;padding:12px 14px;background:transparent;border:0;color:#f1f3f7;font:inherit;font-size:14px;font-weight:700;letter-spacing:.01em;cursor:pointer;text-align:left}.plg-guide-toggle:hover{background:#ffffff08}.plg-guide-chevron{color:#8a92a3;font-size:13px;margin-left:12px}.plg-guide-body{padding:4px 14px 14px;border-top:1px solid rgba(255,255,255,.06)}.plg-guide-steps{list-style:none;margin:12px 0 14px;padding:0;display:flex;flex-direction:column;gap:12px}.plg-guide-step{display:flex;align-items:flex-start;gap:12px}.plg-guide-num{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:linear-gradient(180deg,#ff3a8c,#cf2e72);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.plg-guide-text{color:#d8dce5;font-size:13.5px;line-height:1.5}.plg-guide-text b{color:#f1f3f7}.plg-guide-warn{display:flex;align-items:flex-start;gap:10px;background:#ffb80014;border:1px solid rgba(255,184,0,.35);border-radius:10px;padding:10px 12px}.plg-guide-warn-icon{flex:0 0 auto;font-size:14px;line-height:1.5}.plg-guide-warn-text{color:#f0d9a8;font-size:12.5px;line-height:1.55}.plg-guide-warn-text b{color:#ffd66b}.plg-label{display:block;margin:14px 0 6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#8a92a3}.plg-input,.plg-textarea{width:100%;box-sizing:border-box;background:#181b24;color:#f1f3f7;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;outline:none}.plg-input:focus,.plg-textarea:focus{border-color:#5cc8ff}.plg-textarea{min-height:200px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:12.5px;line-height:1.45;resize:vertical}.plg-row{display:flex;gap:10px;align-items:center;margin:8px 0 0;flex-wrap:wrap}.plg-hint{color:#8a92a3;font-size:12px}.plg-btn{appearance:none;-webkit-appearance:none;cursor:pointer;border-radius:999px;padding:9px 16px;font:inherit;font-size:13px;font-weight:600;border:0;background:#ffffff14;color:#f1f3f7}.plg-btn:disabled{cursor:not-allowed;opacity:.45}.plg-btn-primary{background:linear-gradient(180deg,#ff3a8c,#cf2e72);color:#fff}.plg-btn-secondary{background:#ffffff1a}.plg-btn-ghost{background:transparent;color:#aab0bd}.plg-btn-success{background:linear-gradient(180deg,#2dd66f,#20b659);color:#04140a}.plg-btn-disabled{background:#ffffff0a;color:#5a606e}.plg-actions{display:flex;gap:10px;margin:16px 0 0;flex-wrap:wrap}.plg-results{margin-top:16px}.plg-verdict{padding:10px 12px;border-radius:10px;margin:6px 0 12px;font-weight:700;font-size:13px}.plg-verdict-ok{background:#2dd66f29;color:#2dd66f;border:1px solid rgba(45,214,111,.4)}.plg-verdict-bad{background:#ff505024;color:#ff8a8a;border:1px solid rgba(255,80,80,.4)}.plg-block{background:#14171f;border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:10px 12px;margin:8px 0}.plg-block h4{margin:0 0 6px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#aab0bd}.plg-block ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.plg-block-err{border-color:#ff505066}.plg-table-wrap{overflow-x:auto}.plg-table{width:100%;border-collapse:collapse;font-size:11px}.plg-table th,.plg-table td{padding:4px 6px;text-align:center}.plg-table th{color:#8a92a3;font-weight:600;letter-spacing:.04em;border-bottom:1px solid rgba(255,255,255,.08)}.plg-row-idx{color:#aab0bd;text-align:left;font-weight:700}.plg-cell-ok{color:#2dd66f}.plg-cell-bad{color:#ff8a8a;background:#ff50500f}.plg-row-bad{background:#ff50500a}.plg-row-details td{text-align:left;padding-left:24px}.plg-err-list{color:#ff8a8a}.plg-warn-list{color:#ffd66b}.plg-song-issue{padding:8px 0;border-top:1px solid rgba(255,255,255,.05)}.plg-song-issue:first-of-type{border-top:0;padding-top:4px}.plg-song-issue-head{font-weight:700;font-size:12px;margin:0 0 4px;color:#f1f3f7;letter-spacing:.02em}.plg-song-issue ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.plg-err-item{color:#ff8a8a}.plg-warn-item{color:#ffd66b}.plg-results-actions{margin-top:0!important;margin-bottom:6px}.plg-hint-inline{font-style:italic}.plg-error{background:#ff50501f;border:1px solid rgba(255,80,80,.4);color:#ff8a8a;border-radius:10px;padding:12px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:12px}.plg-footer{margin-top:16px;border-top:1px solid rgba(255,255,255,.06);padding-top:10px;color:#8a92a3;font-size:12px;line-height:1.5}.plg-followup:empty{display:none}.plg-banner{margin-top:12px;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.5}.plg-banner p{margin:0 0 8px}.plg-banner .plg-row{margin-top:4px;flex-wrap:wrap}.plg-banner-ok{background:#2dd66f24;border:1px solid rgba(45,214,111,.4);color:#c8f3d8}.plg-banner-info{background:#6366f124;border:1px solid rgba(99,102,241,.4);color:#d6d8ff}.ta-reveal-truth{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:8px;font-family:var(--font-display, inherit);font-size:var(--font-size-md, 1rem);margin-bottom:var(--space-sm, 8px)}.ta-truth-title{font-weight:800}.ta-truth-sep{opacity:.4}.ta-truth-artist{color:var(--color-text-neon-muted, #b3b3c2);font-family:var(--font-body, inherit);font-weight:600}.ta-reveal-own{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-lg, 12px)}.ta-verdict{text-align:center;font-family:var(--font-display, inherit);font-weight:900;font-size:var(--font-size-lg, 1.125rem);letter-spacing:.01em;padding:8px 12px;margin-bottom:4px;border-radius:var(--radius-md, 8px)}.ta-verdict--win{color:var(--color-success-neon, #39ff14);background:#39ff1424;box-shadow:inset 0 0 18px #39ff141f;text-shadow:0 0 12px rgba(57,255,20,.5)}.ta-verdict--partial{color:var(--color-accent-secondary, #00f5ff);background:#00f5ff1a}.ta-verdict--pending{color:var(--color-accent-secondary, #00f5ff);background:#00f5ff12;font-weight:700;font-style:italic}.ta-verdict--miss{color:var(--color-text-neon-muted, #b3b3c2);background:#ffffff0d}.ta-own-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.ta-own-label{color:var(--color-text-dim, #6b6b7a);font-size:var(--font-size-sm, .875rem);min-width:6em}.ta-own-guess{font-weight:600;flex:1 1 auto;word-break:break-word}.ta-own-row--none{color:var(--color-text-neon-muted, #b3b3c2);font-style:italic}.ta-pill{font-size:.72rem;font-weight:700;padding:2px 10px;border-radius:var(--radius-full, 999px);white-space:nowrap;letter-spacing:.02em}.ta-pill--exact,.ta-pill--fuzzy,.ta-pill--near-miss-accepted{background:#2ee59d29;color:#2ee59d}.ta-pill--near-miss{background:#ffb40029;color:#ffb400}.ta-pill--wrong{background:#ff004024;color:var(--color-error-neon, #ff0040)}.ta-pill--skipped{background:#ffffff14;color:var(--color-text-secondary, #b9b9c6)}.ta-voting{margin-top:var(--space-lg, 24px)}.ta-voting.hidden{display:none}.ta-voting-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:var(--space-md, 16px)}.ta-voting-header>span:not(.ta-voting-countdown){font-family:var(--font-display, inherit);font-weight:900;font-size:var(--font-size-sm, .875rem);letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-white, #fff)}.ta-voting-countdown{flex-shrink:0;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:18px;font-variant-numeric:tabular-nums;color:var(--color-accent-secondary, #00f5ff);background:radial-gradient(circle at center,var(--color-bg-primary, #0a0a12) 56%,transparent 57%),conic-gradient(var(--color-accent-secondary, #00f5ff) var(--ta-vote-progress, 360deg),rgba(255,255,255,.1) 0);box-shadow:var(--glow-secondary, 0 0 20px rgba(0, 245, 255, .5))}.ta-voting-countdown--closed{width:auto;height:auto;border-radius:var(--radius-full, 999px);padding:4px 12px;font-size:var(--font-size-sm, .875rem);font-weight:700;color:var(--color-text-neon-muted, #b3b3c2);background:#ffffff14;box-shadow:none}.ta-voting-cards{display:flex;flex-direction:column;gap:12px}.ta-vote-card{background:var(--color-bg-surface, rgba(255, 255, 255, .05));border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg, 12px);padding:14px}.ta-vote-card--mine{border-color:#ff2d6a73;box-shadow:inset 0 0 16px #ff2d6a12}.ta-vote-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.ta-vote-avatar{flex-shrink:0;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display, inherit);font-weight:800;font-size:13px;color:#fff;background:linear-gradient(135deg,var(--color-accent-primary, #ff2d6a),var(--color-neon-purple, #9d4edd))}.ta-vote-who{flex:1;font-weight:700;font-size:var(--font-size-md, 1rem);word-break:break-word}.ta-vote-field{flex-shrink:0;font-size:var(--font-size-xs, .625rem);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-dim, #6b6b7a);background:#ffffff0f;padding:3px 8px;border-radius:var(--radius-full, 999px)}.ta-vote-guess{font-family:var(--font-display, inherit);font-weight:800;font-size:var(--font-size-lg, 1.125rem);margin:2px 0 12px;word-break:break-word}.ta-vote-tally{display:flex;flex-direction:column;gap:7px;margin-bottom:12px}.ta-tally-row{display:flex;align-items:center;gap:8px;font-size:var(--font-size-sm, .875rem);font-weight:700;font-variant-numeric:tabular-nums}.ta-tally-yes{color:var(--color-success-neon, #39ff14);min-width:48px}.ta-tally-no{color:var(--color-error-neon, #ff0040);min-width:48px}.ta-tally-track{flex:1;height:8px;border-radius:var(--radius-full, 999px);background:#ffffff12;overflow:hidden}.ta-tally-fill{display:block;height:100%;border-radius:var(--radius-full, 999px);transition:width var(--transition-normal, .3s) ease-out}.ta-tally-fill--yes{background:var(--color-success-neon, #39ff14);box-shadow:0 0 10px #39ff1480}.ta-tally-fill--no{background:var(--color-error-neon, #ff0040);box-shadow:0 0 10px #ff004073}.ta-vote-actions{display:flex;gap:10px}.ta-vote-btn{position:relative;flex:1;height:48px;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-lg, 12px);background:#ffffff0d;font-size:20px;cursor:pointer;transition:transform var(--transition-fast, .15s),box-shadow var(--transition-fast, .15s),opacity var(--transition-fast, .15s),background var(--transition-fast, .15s)}.ta-vote-btn--yes{background:#39ff141f;border-color:#39ff1466;color:var(--color-success-neon, #39ff14)}.ta-vote-btn--no{background:#ff00401a;border-color:#ff004061;color:var(--color-error-neon, #ff0040)}.ta-vote-btn.is-chosen{transform:translateY(-1px)}.ta-vote-btn--yes.is-chosen{background:#39ff1438;border-color:#39ff1499;box-shadow:var(--glow-success, 0 0 20px rgba(57, 255, 20, .5))}.ta-vote-btn--no.is-chosen{background:#ff004033;border-color:#ff00408c;box-shadow:var(--glow-error, 0 0 20px rgba(255, 0, 64, .5))}.ta-vote-actions--voted .ta-vote-btn{opacity:.34}.ta-vote-actions--voted .ta-vote-btn.is-chosen{opacity:1}.ta-vote-actions--voted .ta-vote-btn.is-chosen:after{content:"\2713";position:absolute;top:3px;right:8px;font-size:12px;font-weight:800}.ta-vote-btn--yes.is-chosen:after{color:var(--color-success-neon, #39ff14)}.ta-vote-btn--no.is-chosen:after{color:var(--color-error-neon, #ff0040)}.ta-voted-caption{margin-top:8px;text-align:center;font-size:var(--font-size-sm, .875rem);color:var(--color-text-neon-muted, #b3b3c2)}.ta-vote-own-note{text-align:center;font-size:var(--font-size-sm, .875rem);font-style:italic;color:var(--color-accent-primary, #ff2d6a);opacity:.85}.ta-override-actions{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.07)}.ta-override-label{margin-right:auto;font-size:var(--font-size-xs, .625rem);color:var(--color-text-dim, #6b6b7a)}.ta-override-btn{padding:6px 14px;border-radius:var(--radius-md, 8px);border:1px solid rgba(255,255,255,.14);background:#ffffff0d;color:var(--color-text-white, #fff);font-weight:700;font-size:var(--font-size-sm, .875rem);cursor:pointer}.ta-override-btn--accept.is-chosen{border-color:var(--color-success-neon, #39ff14);color:var(--color-success-neon, #39ff14)}.ta-override-btn--reject.is-chosen{border-color:var(--color-error-neon, #ff0040);color:var(--color-error-neon, #ff0040)}@media(prefers-reduced-motion:reduce){.ta-tally-fill,.ta-vote-btn{transition:none}}.ta-outcome-card{display:flex;align-items:center;gap:10px;background:var(--color-bg-surface, rgba(255, 255, 255, .05));border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg, 12px);padding:11px 13px}.ta-outcome-card--accepted{border-color:#39ff144d}.ta-outcome-card--rejected{opacity:.72}.ta-outcome-avatar{flex-shrink:0;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display, inherit);font-weight:800;font-size:12px;color:#fff;background:linear-gradient(135deg,var(--color-accent-primary, #ff2d6a),var(--color-neon-purple, #9d4edd))}.ta-outcome-main{flex:1;min-width:0}.ta-outcome-who{font-weight:700;font-size:var(--font-size-base, .875rem)}.ta-outcome-field{color:var(--color-text-dim, #6b6b7a);font-weight:600}.ta-outcome-guess{font-size:var(--font-size-sm, .875rem);color:var(--color-text-neon-muted, #b3b3c2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ta-outcome-tally{font-size:var(--font-size-xs, .625rem);color:var(--color-text-dim, #6b6b7a);font-variant-numeric:tabular-nums}.ta-outcome-verdict{flex-shrink:0;display:inline-flex;align-items:center;font-family:var(--font-display, inherit);font-weight:800;font-size:var(--font-size-base, .875rem);padding:5px 11px;border-radius:var(--radius-full, 999px);font-variant-numeric:tabular-nums}.ta-outcome-verdict--accepted{background:#39ff1429;color:var(--color-success-neon, #39ff14)}.ta-outcome-verdict--rejected{background:#ff00401f;color:var(--color-error-neon, #ff0040)}.ta-input-section{display:flex;flex-direction:column;gap:12px;padding:12px 14px;margin:0 var(--space-md) var(--space-md);background:linear-gradient(180deg,#ff2d6a0f,#ffffff05);border:1px solid rgba(255,45,106,.22);border-radius:var(--radius-lg);box-shadow:inset 0 0 12px #ff2d6a0d}.ta-input-section.hidden{display:none}.ta-input-field{display:flex;flex-direction:column;gap:6px}.ta-input-label{display:flex;align-items:center;gap:6px;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.ta-input-points{margin-left:auto;flex-shrink:0;background:#39ff1426;color:var(--color-success-neon);font-weight:900;font-size:11px;letter-spacing:.04em;padding:2px 8px;border-radius:var(--radius-full)}.ta-text-input{width:100%;box-sizing:border-box;padding:12px 14px;background:#ffffff0d;border:2px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);color:var(--color-text-white);font-family:var(--font-body);font-size:16px;line-height:1.3;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.ta-text-input::placeholder{color:var(--color-text-neon-muted);opacity:.55}.ta-text-input:focus{outline:none;border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #ff2d6a33}.ta-input-ack{margin-top:2px;text-align:center;font-family:var(--font-body);font-size:12px;color:var(--color-success-neon)}.ta-input-ack.hidden{display:none}#reveal-view .reveal-container--duel{position:relative;overflow:hidden;isolation:isolate}#reveal-view .reveal-backdrop{position:absolute;top:0;left:0;right:0;height:340px;z-index:0;background-size:cover;background-position:center;background-repeat:no-repeat;filter:blur(46px) saturate(1.15);transform:scale(1.15);transform-origin:top center;opacity:.5;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 28%,transparent 70%);mask-image:linear-gradient(to bottom,#000 0%,#000 28%,transparent 70%)}#reveal-view .reveal-backdrop--synthetic{background-image:radial-gradient(circle at 28% 22%,#a82054f2,#a8205400 42%),radial-gradient(circle at 78% 14%,#601c96e6,#601c9600 46%),radial-gradient(circle at 18% 82%,#222878e6,#22287800 50%),conic-gradient(from 210deg at 52% 48%,#1a1038,#4a1240 70deg,#7a1e3c 130deg,#2a1454 200deg,#131642,#1a1038 360deg);filter:blur(54px) saturate(1.25)}#reveal-view .reveal-scrim{position:absolute;top:0;left:0;right:0;height:380px;z-index:0;pointer-events:none;background:linear-gradient(180deg,rgba(10,10,18,.78) 0%,rgba(10,10,18,.88) 55%,var(--color-bg-primary) 100%)}#reveal-view .reveal-scrim:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 320px 360px at 50% 24%,#00f5ff21,#00f5ff00 62%)}#reveal-view .reveal-container--duel>*:not(.reveal-backdrop):not(.reveal-scrim):not(.confetti-canvas){position:relative;z-index:1}@media(prefers-reduced-motion:no-preference){#reveal-view .reveal-backdrop{transition:background-image .4s ease}}#reveal-view .song-strip,#reveal-view .score-row,#reveal-view .card-section,#reveal-view .duel-ticket{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 10px 30px #00000059;border-radius:var(--radius-lg)}#reveal-view .card-section:hover{background:#ffffff14;border-color:#ffffff29}#reveal-view .reveal-header-v2{margin-bottom:var(--space-sm)}#reveal-view .song-strip{padding:var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm)}#reveal-view .song-strip-cover{box-shadow:0 2px 10px #00000080;border:1px solid rgba(255,255,255,.15)}#reveal-view .duel-emotion{font-size:30px;letter-spacing:.04em;margin-bottom:var(--space-sm);text-shadow:0 4px 18px rgba(0,0,0,.6)}#reveal-view .duel{padding:var(--space-md) var(--space-xs) var(--space-lg)}#reveal-view .duel-tickets{position:relative;display:flex;justify-content:center;align-items:stretch;gap:var(--space-md);padding-bottom:20px}#reveal-view .duel-ticket{flex:1 1 0;max-width:170px;padding:var(--space-md) var(--space-sm) var(--space-lg);text-align:center}#reveal-view .duel-ticket--you{transform:rotate(-3deg) translateY(4px);border-color:#ff2d6a59;box-shadow:0 14px 34px #00000073,0 0 24px #ff2d6a1f}#reveal-view .duel-ticket--truth{transform:rotate(3deg) translateY(4px);border-color:#00f5ff66;box-shadow:0 14px 34px #00000073,0 0 34px #00f5ff2e}#reveal-view .duel-ticket .duel-label{padding-bottom:var(--space-sm);margin:0 6px var(--space-sm);border-bottom:1.5px dashed rgba(255,255,255,.18)}#reveal-view .duel-ticket .duel-year{font-size:clamp(40px,13vw,54px)}#reveal-view .duel-ticket--you .duel-year.mine{color:var(--color-accent-primary);text-shadow:0 0 18px rgba(255,45,106,.45)}#reveal-view .duel-ticket--truth .duel-year.correct{color:var(--color-accent-secondary);text-shadow:0 0 14px rgba(0,245,255,.9),0 0 38px rgba(0,245,255,.45)}#reveal-view .duel-gap{position:absolute;left:50%;bottom:0;transform:translate(-50%);flex-direction:row;align-items:baseline;gap:5px;min-width:0;padding:6px 16px;border-radius:var(--radius-full);background:#ff660029;border:1px solid rgba(255,102,0,.55);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 6px 18px #00000080,0 0 16px #f603;white-space:nowrap;z-index:3}#reveal-view .duel-gap-x{font-size:var(--font-size-md);color:var(--color-warning-alt);opacity:.9}#reveal-view .duel-gap-n{font-size:var(--font-size-lg);color:var(--color-warning-alt);text-shadow:none}#reveal-view .duel-gap-unit{margin-top:0;font-size:10px;color:var(--color-warning-alt)}#reveal-view .duel-gap--exact{background:#39ff1429;border-color:#39ff148c;box-shadow:0 6px 18px #00000080,0 0 16px #39ff1438}#reveal-view .duel-gap--exact .duel-gap-x,#reveal-view .duel-gap--exact .duel-gap-n,#reveal-view .duel-gap--exact .duel-gap-unit{color:var(--color-success-neon)}#reveal-view .duel-gap--wrong{background:#ff004024;border-color:#ff004080;box-shadow:0 6px 18px #00000080,0 0 16px #ff004033}#reveal-view .duel-gap--wrong .duel-gap-x,#reveal-view .duel-gap--wrong .duel-gap-n,#reveal-view .duel-gap--wrong .duel-gap-unit{color:var(--color-error-neon)}#reveal-view .score-row{border-color:#ffffff1f;box-shadow:0 10px 30px #00000059}#reveal-view .score-row-pts{color:var(--color-success-neon);text-shadow:0 0 16px rgba(57,255,20,.5);font-size:32px}#reveal-view .ta-vote-card,#reveal-view .ta-outcome-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}#reveal-view .next-round-btn{background:linear-gradient(135deg,#ff2d6a,#ff4f86);border-radius:var(--radius-full);box-shadow:0 8px 24px #ff2d6a73,0 0 18px #ff2d6a4d}#reveal-view .next-round-btn:hover{background:linear-gradient(135deg,#ff4f86,#ff2d6a)}#reveal-view .next-round-btn.is-final{background:linear-gradient(135deg,#39ff14,#00f5ff);color:var(--color-bg-primary)}#reveal-view .invite-btn{background:#ffffff0f;border:1px solid rgba(255,255,255,.18);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:var(--radius-full)}#reveal-view .reveal-admin-buttons{align-items:stretch}#reveal-view .reveal-admin-buttons .invite-btn,#reveal-view .reveal-admin-buttons .next-round-btn{flex:1 1 0;min-width:0;max-width:260px;min-height:56px;padding:12px 20px;font-size:var(--font-size-md);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);text-align:center}#reveal-view #reveal-leaderboard-list{display:flex;flex-direction:column;gap:8px;max-height:none;overflow:visible}#reveal-view .rstand-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06)}#reveal-view .rstand-row--you{border:1px solid var(--color-accent-primary);background:#ff2d6a0f;box-shadow:0 0 16px #ff2d6a38}#reveal-view .rstand-row--taper1{opacity:.85}#reveal-view .rstand-row--taper2{opacity:.68}#reveal-view .rstand-rankcell{display:flex;flex-direction:column;align-items:center;width:26px;flex-shrink:0}#reveal-view .rstand-rank{font-family:var(--font-display);font-weight:800;font-size:20px;line-height:1;color:var(--color-text-white)}#reveal-view .rstand-row--taper1 .rstand-rank,#reveal-view .rstand-row--taper2 .rstand-rank{font-size:18px}#reveal-view .rstand-move{font-size:10px;font-weight:700;line-height:1;margin-top:3px}#reveal-view .rstand-move--up{color:var(--color-success-neon)}#reveal-view .rstand-move--down{color:var(--color-error-neon)}#reveal-view .rstand-move--flat{color:var(--color-text-neon-muted)}#reveal-view .rstand-avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:15px;color:var(--color-text-white);text-shadow:0 1px 2px rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.15)}#reveal-view .rstand-ident{flex:1;min-width:0}#reveal-view .rstand-name{font-family:var(--font-body);font-weight:700;font-size:15px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px;color:var(--color-text-white)}#reveal-view .rstand-you{font-family:var(--font-display);font-weight:800;font-size:9px;letter-spacing:.06em;color:var(--color-accent-primary);background:#ff2d6a26;border:1px solid rgba(255,45,106,.4);border-radius:6px;padding:2px 5px;line-height:1;flex-shrink:0}#reveal-view .rstand-guess{font-size:11px;font-weight:500;color:var(--color-text-neon-muted);line-height:1.2;margin-top:3px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#reveal-view .rstand-guess .rstand-exact{color:var(--color-success-neon);font-weight:600}#reveal-view .rstand-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}#reveal-view .rstand-chip{font-size:10px;font-weight:600;color:var(--color-text-neon-muted);background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:999px;padding:2px 7px;line-height:1.4;white-space:nowrap}#reveal-view .rstand-chip--fire{color:var(--color-warning-alt);border-color:#ff66004d;background:#ff660014}#reveal-view .rstand-chip--steal{color:var(--color-success-neon);border-color:#39ff1447;background:#39ff1412}#reveal-view .rstand-score{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;margin-left:4px}#reveal-view .rstand-total{font-family:var(--font-display);font-weight:900;font-size:22px;line-height:1;color:var(--color-text-white);letter-spacing:-.01em}#reveal-view .rstand-row--taper1 .rstand-total{font-size:20px}#reveal-view .rstand-row--taper2 .rstand-total{font-size:19px}#reveal-view .rstand-delta{font-family:var(--font-body);font-weight:700;font-size:12px;line-height:1;margin-top:4px;color:var(--color-success-neon)}#reveal-view .rstand-delta--zero{color:var(--color-text-neon-muted)}#reveal-view .song-strip{flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden}#reveal-view .song-strip-main{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm)}#reveal-view .artist-guess-row{display:flex;align-items:center;gap:8px;padding:9px var(--space-md) 9px var(--space-sm);border-top:1px solid rgba(255,255,255,.08)}#reveal-view .artist-guess-row.hidden{display:none}#reveal-view .artist-guess-ic{font-size:14px;flex-shrink:0}#reveal-view .artist-guess-name{font-family:var(--font-body);font-weight:700;font-size:14px;color:var(--color-text-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}#reveal-view .artist-reveal-winner{margin-left:auto;flex-shrink:0;font-family:var(--font-body);font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--radius-full);white-space:nowrap}#reveal-view .artist-reveal-winner.hidden{display:none}#reveal-view .artist-reveal-winner.is-you,#reveal-view .artist-reveal-winner.is-other{color:var(--color-success-neon);background:#39ff141f;border:1px solid rgba(57,255,20,.4)}#reveal-view .artist-reveal-winner.is-you{box-shadow:0 0 12px #39ff1433}#reveal-view .artist-reveal-winner.artist-reveal-no-winner{color:var(--color-text-neon-muted);background:#ffffff0f;border:1px solid rgba(255,255,255,.12)}#reveal-view #fun-fact-container .section-content-padded{display:flex;flex-direction:column;gap:11px}#reveal-view .song-rich-info .song-badges-row{display:flex;gap:8px}#reveal-view .song-rich-info .song-badge{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:11px 6px;border-radius:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);font-family:var(--font-body);font-size:11px;font-weight:700;line-height:1.2;text-align:center;white-space:normal}#reveal-view .song-rich-info .song-badge .song-badge-icon{font-size:20px}#reveal-view .song-rich-info .song-badges-more{flex:0 0 auto;align-self:center;font-size:11px;color:var(--color-text-neon-muted)}#reveal-view #fun-fact .fun-fact-text,#reveal-view .fun-fact-text{font-size:12px;line-height:1.4;color:var(--color-text-neon-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.playlist-tabs{display:flex;gap:var(--space-lg);border-bottom:1px solid var(--color-border-neon);margin-bottom:var(--space-md)}.playlist-tab{appearance:none;background:none;border:none;padding:10px 2px;margin-bottom:-1px;font:inherit;font-weight:700;font-size:.95rem;color:var(--color-text-neon-muted);cursor:pointer;border-bottom:2px solid transparent;transition:color var(--transition-fast),border-color var(--transition-fast)}.playlist-tab:hover{color:var(--color-text-white)}.playlist-tab.active{color:var(--color-accent-secondary);border-bottom-color:var(--color-accent-secondary)}.playlist-panel.hidden{display:none}.mix-card{background:var(--color-surface-dark);border:1px solid var(--color-border-neon);border-radius:var(--radius-lg);padding:var(--space-lg)}.mix-card-head{display:flex;align-items:center;gap:var(--space-sm)}.mix-card-icon{font-size:1.25rem}.mix-card-title{margin:0;font-size:1.25rem;font-weight:800;color:var(--color-text-white)}.mix-card-sub{margin:6px 0 var(--space-lg);color:var(--color-text-neon-muted);font-size:.9rem}.mix-chip-cloud{display:flex;flex-direction:column;gap:var(--space-md)}.mix-chip-row{display:flex;flex-direction:column;gap:8px}.mix-chip-rowlabel{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.mix-chip-group{display:flex;flex-wrap:wrap;gap:8px}.mix-chip{appearance:none;padding:6px 14px;border-radius:var(--radius-full);border:1px solid var(--color-border-neon);background:#ffffff0a;color:var(--color-text-neon-muted);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.mix-chip:hover{border-color:#ffffff4d;color:var(--color-text-white)}.mix-chip-group[data-accent=cyan] .mix-chip.active{background:#00f5ff26;border-color:var(--color-accent-secondary);color:var(--color-accent-secondary)}.mix-chip-group[data-accent=pink] .mix-chip.active{background:#ff2d6a26;border-color:var(--color-accent-primary);color:var(--color-accent-primary)}.mix-chip-group[data-accent=indigo] .mix-chip.active{background:#6366f12e;border-color:var(--color-accent-brand);color:#a5b4fc}.mix-empty{color:var(--color-text-neon-muted);font-size:.9rem;margin:0}.mix-divider{height:1px;background:var(--color-border-neon);margin:var(--space-lg) 0}.mix-count-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.mix-count-label{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-neon-muted)}.mix-segmented{display:inline-flex;padding:4px;gap:4px;background:#ffffff0d;border:1px solid var(--color-border-neon);border-radius:10px}.mix-seg{appearance:none;min-width:56px;padding:8px 14px;border:none;border-radius:7px;background:transparent;color:var(--color-text-neon-muted);font:inherit;font-weight:700;cursor:pointer;transition:all var(--transition-fast)}.mix-seg:hover{color:var(--color-text-white)}.mix-seg.active{background:var(--color-accent-brand);color:var(--color-text-white);box-shadow:0 0 14px #6366f180}.mix-preview{display:flex;align-items:center;gap:10px;margin:var(--space-md) 0 var(--space-lg);padding:12px 16px;border-radius:var(--radius-md);background:#00f5ff0f;border:1px solid rgba(0,245,255,.15);color:var(--color-text-white);font-size:.9rem}.mix-preview-dot{width:8px;height:8px;border-radius:50%;background:#1ed760;box-shadow:0 0 8px #1ed760cc;flex-shrink:0}.mix-actions{display:flex;align-items:center;gap:var(--space-lg);flex-wrap:wrap}.mix-actions .btn-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.mix-save-label{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--color-text-neon-muted);cursor:pointer}#mix-error{margin-top:var(--space-md)}.mix-error-detail{display:block;margin-top:var(--space-xs);font-size:var(--font-size-sm);line-height:1.35;color:var(--color-text-light);word-break:break-word}.mix-tracklist-row{margin:var(--space-sm) 0}.mix-tracklist-row .btn-sm{font-size:.85rem;padding:6px 12px}.mix-tracklist{margin:var(--space-sm) 0 var(--space-md);max-height:280px;overflow-y:auto;border-radius:var(--radius-md);border:1px solid rgba(0,245,255,.15);background:#00f5ff0a}.mix-tracklist.hidden{display:none}.mix-tracklist-head{margin:0;padding:10px 14px;font-size:.8rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-neon-muted);border-bottom:1px solid rgba(0,245,255,.12);position:sticky;top:0;background:#0a0c18eb}.mix-tracklist-empty{margin:0;padding:14px;font-size:.9rem;color:var(--color-text-neon-muted)}.mix-track-list{list-style:none;margin:0;padding:4px 0;counter-reset:mix-track}.mix-track{display:flex;align-items:baseline;gap:8px;padding:6px 14px;font-size:.88rem;color:var(--color-text-white)}.mix-track:before{counter-increment:mix-track;content:counter(mix-track);flex-shrink:0;min-width:1.8em;text-align:right;font-variant-numeric:tabular-nums;color:var(--color-text-neon-muted);opacity:.7}.mix-track-title{font-weight:500}.mix-track-artist{color:var(--color-text-neon-muted)}.mix-track-artist:before{content:"\2014 "}.mix-track-year{margin-left:auto;flex-shrink:0;color:var(--color-text-neon-muted);font-variant-numeric:tabular-nums;opacity:.7}.beatify-toast-container{position:fixed;top:var(--space-md);left:50%;transform:translate(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);width:min(92vw,440px);pointer-events:none}.beatify-toast{pointer-events:auto;width:100%;display:flex;align-items:flex-start;gap:var(--space-sm);position:relative;overflow:hidden;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-lg);background:#141422f5;border:1px solid var(--color-error-neon);box-shadow:0 0 20px #ff004073,0 8px 32px #00000073;color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);opacity:0;transform:translateY(-12px);transition:opacity var(--transition-normal),transform var(--transition-normal)}.beatify-toast--in{opacity:1;transform:translateY(0)}.beatify-toast--leaving{opacity:0;transform:translateY(-12px)}.beatify-toast--info{border-color:var(--color-accent-secondary);box-shadow:0 0 20px #00f5ff66,0 8px 32px #00000073}.beatify-toast--success{border-color:var(--color-success-neon);box-shadow:0 0 20px #39ff1466,0 8px 32px #00000073}.beatify-toast-body{display:flex;align-items:flex-start;gap:var(--space-sm);flex:1 1 auto;min-width:0}.beatify-toast-icon{font-size:var(--font-size-lg);line-height:1.3;flex-shrink:0}.beatify-toast-text{line-height:1.35;word-break:break-word}.beatify-toast-close{flex-shrink:0;background:none;border:none;color:var(--color-text-neon-muted);font-size:var(--font-size-xl);line-height:1;cursor:pointer;padding:0 var(--space-xs);transition:color var(--transition-fast)}.beatify-toast-close:hover{color:var(--color-text-white)}.beatify-toast-progress{position:absolute;left:0;bottom:0;height:3px;width:100%;transform-origin:left center;background:var(--color-error-neon);box-shadow:0 0 8px var(--color-error-neon);animation:beatify-toast-drain linear forwards}.beatify-toast--info .beatify-toast-progress{background:var(--color-accent-secondary);box-shadow:0 0 8px var(--color-accent-secondary)}.beatify-toast--success .beatify-toast-progress{background:var(--color-success-neon);box-shadow:0 0 8px var(--color-success-neon)}@keyframes beatify-toast-drain{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.beatify-banner{display:flex;flex-basis:100%;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-lg);background:#ff004014;border:1px solid var(--color-error-neon);box-shadow:inset 0 0 16px #ff00401f;color:var(--color-text-white);font-family:var(--font-body);font-size:var(--font-size-base);text-align:left}.beatify-banner--warning{background:#f59e0b1a;border-color:var(--color-warning);box-shadow:inset 0 0 16px #f59e0b1f}.beatify-banner--info{background:#00f5ff14;border-color:var(--color-accent-secondary);box-shadow:inset 0 0 16px #00f5ff1f}.beatify-banner-icon{font-size:var(--font-size-lg);line-height:1.2;flex-shrink:0}.beatify-banner-content{flex:1 1 auto;min-width:0}.beatify-banner-title{font-family:var(--font-display);font-weight:var(--font-weight-bold);margin-bottom:2px;color:var(--color-error-neon)}.beatify-banner--warning .beatify-banner-title{color:var(--color-warning)}.beatify-banner--info .beatify-banner-title{color:var(--color-accent-secondary)}.beatify-banner-text{line-height:1.4;color:var(--color-text-neon-muted);word-break:break-word}.beatify-banner-detail{margin-top:var(--space-xs);font-size:var(--font-size-sm);line-height:1.35;color:var(--color-text-light);word-break:break-word}.beatify-banner-action{margin-top:var(--space-xs);background:none;border:1px solid currentColor;border-radius:var(--radius-sm);color:var(--color-error-neon);font-family:var(--font-body);font-size:var(--font-size-sm);line-height:1.2;padding:6px var(--space-sm);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.beatify-banner-action:hover{background:var(--color-error-neon);color:var(--color-bg-primary)}.beatify-banner--warning .beatify-banner-action{color:var(--color-warning)}.beatify-banner--warning .beatify-banner-action:hover{background:var(--color-warning)}.beatify-banner--info .beatify-banner-action{color:var(--color-accent-secondary)}.beatify-banner--info .beatify-banner-action:hover{background:var(--color-accent-secondary)}.beatify-banner-close{flex-shrink:0;background:none;border:none;color:var(--color-text-neon-muted);font-size:var(--font-size-xl);line-height:1;cursor:pointer;padding:0 var(--space-xs);transition:color var(--transition-fast)}.beatify-banner-close:hover{color:var(--color-text-white)}@media(prefers-reduced-motion:reduce){.beatify-toast{transition:none;opacity:1;transform:none}.beatify-toast-progress{animation:none}}.steal-target-row{display:flex;align-items:center;gap:var(--space-sm);text-align:left}.steal-target-rank{flex-shrink:0;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--color-dark-surface);border:1px solid var(--color-border-neon);font-family:var(--font-display);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);color:var(--color-text-neon-muted)}.steal-target-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--font-weight-semibold)}.steal-target-score{flex-shrink:0;font-family:var(--font-display);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;color:var(--color-accent-secondary);text-shadow:0 0 8px rgba(0,245,255,.5)}.steal-target-crown{flex-shrink:0;font-size:var(--font-size-md);line-height:1}.steal-target-row--leader{border-color:var(--color-warning);box-shadow:0 0 14px #f59e0b59,inset 0 0 10px #f59e0b1f}.steal-target-row--leader .steal-target-rank{border-color:var(--color-warning);color:var(--color-warning);box-shadow:0 0 8px #f59e0b66}.steal-target-row--leader .steal-target-score{color:var(--color-warning);text-shadow:0 0 8px rgba(245,158,11,.5)}.dotaxis-legend-acc{display:inline-flex;align-items:center;gap:3px;margin-left:4px;padding:1px 6px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border:1px solid currentColor;white-space:nowrap}.dotaxis-legend-acc-glyph{font-size:.95em;line-height:1}.dotaxis-legend-acc--exact{color:var(--color-accent-secondary)}.dotaxis-legend-acc--near{color:var(--color-warning)}.dotaxis-legend-acc--off{color:var(--color-text-neon-muted)}.player-tile-away{display:inline-flex;align-items:center;gap:3px}.player-tile-away-glyph{font-size:.9em;line-height:1}.timer-neon{position:relative}.timer-neon-ring{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);transform:rotate(-90deg);pointer-events:none}.timer-neon-ring-bg{fill:none;stroke:#ffffff1f;stroke-width:4}.timer-neon-ring-fg{fill:none;stroke:var(--color-accent-secondary);stroke-width:4;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(0,245,255,.6));transition:stroke-dashoffset 1s linear,stroke var(--transition-normal)}.timer-neon--warn .timer-neon-ring-fg,.timer-neon-ring--warn .timer-neon-ring-fg{stroke:var(--color-warning);filter:drop-shadow(0 0 6px rgba(245,158,11,.7))}.timer-neon-ring--critical .timer-neon-ring-fg{stroke:var(--color-error-neon);filter:drop-shadow(0 0 7px rgba(255,0,64,.8))}@media(prefers-reduced-motion:reduce){.timer-neon-ring-fg{transition:none}.arc-chip--elim{color:var(--color-error-neon);background:#ff00401f;border:1px solid rgba(255,0,64,.5);text-transform:uppercase}.sd-live-toggle{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:var(--radius-md);background:var(--color-bg-surface);border:1px solid rgba(255,255,255,.12);font-family:var(--font-body);font-size:12px;font-weight:600;color:var(--color-text-white);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.sd-live-toggle:disabled{opacity:.4;cursor:not-allowed}.sd-live-toggle.is-on{border-color:var(--color-accent-primary);background:#ff2d6a14;box-shadow:var(--glow-primary)}.sd-live-toggle__switch{position:relative;width:30px;height:17px;border-radius:var(--radius-full);background:#ffffff26;flex:none}.sd-live-toggle.is-on .sd-live-toggle__switch{background:var(--color-accent-primary)}.sd-live-toggle__switch:after{content:"";position:absolute;width:13px;height:13px;border-radius:50%;background:#fff;top:2px;left:2px;transition:left var(--transition-fast)}.sd-live-toggle.is-on .sd-live-toggle__switch:after{left:15px}.eliminated-view{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-sm);min-height:60vh;padding:var(--space-xl) var(--space-md)}.eliminated-orb{width:120px;height:120px;border-radius:var(--radius-full);overflow:hidden;filter:grayscale(1) brightness(.5);display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2a2540,#16131f);margin-bottom:var(--space-md);position:relative}.eliminated-orb img{width:100%;height:100%;object-fit:cover}.eliminated-skull{font-size:46px;position:absolute}.eliminated-title{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);color:var(--color-text-white);letter-spacing:-.02em}.eliminated-sub{color:var(--color-text-neon-muted);font-size:var(--font-size-base)}.eliminated-hint{color:var(--color-text-dim);font-size:var(--font-size-sm);margin-top:var(--space-md)}.cut-line{position:relative;height:0;border-top:2px solid var(--color-accent-primary);box-shadow:0 0 12px #ff2d6ab3;margin:var(--space-md) 0}.cut-line__label{position:absolute;top:-9px;left:50%;transform:translate(-50%);background:var(--color-bg-primary);padding:0 10px;font-family:var(--font-body);font-size:9px;font-weight:700;letter-spacing:.15em;color:var(--color-accent-primary)}.player-indicator.is-eliminated,.leaderboard-entry.is-eliminated{opacity:.45}.player-out-badge{font-size:10px;font-weight:700;color:var(--color-text-dim);letter-spacing:.04em}.sd-out-overlay{position:fixed;inset:0;z-index:900;display:none;flex-direction:column;align-items:center;justify-content:center;background:#06060cf5}.sd-out-overlay.show{display:flex;animation:sd-out-in var(--transition-slow) ease-out}.sd-out__word{font-family:var(--font-display);font-weight:900;font-size:clamp(120px,26vw,360px);line-height:.85;color:var(--color-error-neon);text-shadow:0 0 40px rgba(255,0,64,.7)}.sd-out__name{display:flex;align-items:center;gap:14px;margin-top:var(--space-md);font-family:var(--font-display);font-weight:900;font-size:var(--font-size-4xl);color:var(--color-text-white)}.sd-out__skull{font-size:40px}@keyframes sd-out-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.sd-final-banner{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:var(--radius-full);font-family:var(--font-display);font-weight:900;letter-spacing:.06em;color:var(--color-accent-primary);background:#ff2d6a1f;border:1px solid rgba(255,45,106,.5);box-shadow:0 0 16px #ff2d6a4d}.superlative-card--last_one_standing{box-shadow:0 0 18px #ff2d6a4d;border-color:#ff2d6a66}.sd-last-standing{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);text-align:center;margin-bottom:var(--space-lg)}.sd-last-standing__trophy{font-size:40px}.sd-last-standing__headline{font-family:var(--font-display);font-weight:900;font-size:var(--font-size-hero);letter-spacing:-.02em;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 40px rgba(255,45,106,.5)}.sd-last-standing__winner{font-family:var(--font-body);font-weight:700;font-size:var(--font-size-xl);color:var(--color-text-white)}.sd-last-standing__sub{font-family:var(--font-body);font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-neon-muted)}.sd-out-overlay.show{animation:none}} /*# sourceMappingURL=styles.min.css.map */ diff --git a/custom_components/beatify/www/css/styles.min.css.map b/custom_components/beatify/www/css/styles.min.css.map index 0b4a0d97..c85199f0 100644 --- a/custom_components/beatify/www/css/styles.min.css.map +++ b/custom_components/beatify/www/css/styles.min.css.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["styles.css"], - "sourcesContent": ["/* Beatify - Mobile-first styles */\n\n/* ==========================================\n Design System Tokens (Story 9.1)\n ========================================== */\n\n:root {\n /* Color Tokens - Background */\n --color-bg-primary: #0a0a12;\n --color-bg-surface: rgba(255, 255, 255, 0.05);\n --color-bg-light: #f5f5f5;\n --color-bg-white: #ffffff;\n --color-bg-card: #f9fafb;\n --color-bg-card-alt: #f3f4f6;\n\n /* Color Tokens - Accent */\n --color-accent-primary: #ff2d6a;\n --color-accent-secondary: #00f5ff;\n --color-accent-brand: #6366f1;\n --color-accent-brand-hover: #4f46e5;\n --color-accent-blue: #3b82f6;\n --color-accent-blue-hover: #2563eb;\n\n /* Color Tokens - Semantic */\n --color-success: #10b981;\n --color-success-hover: #059669;\n --color-success-light: #d1fae5;\n --color-success-alt: #22c55e;\n --color-success-neon: #39ff14;\n --color-warning: #f59e0b;\n --color-warning-dark: #d97706;\n --color-warning-light: #fef3c7;\n --color-warning-alt: #ff6600;\n --color-error: #ef4444;\n --color-error-dark: #dc2626;\n --color-error-light: #fee2e2;\n --color-error-neon: #ff0040;\n\n /* Purple colors for steal power-up (Story 15.3) */\n --color-purple-primary: #8b5cf6;\n --color-purple-secondary: #7c3aed;\n --color-neon-purple: #9d4edd; /* Analytics accent color */\n\n /* Color Tokens - Badge Backgrounds (Story 14.1) */\n --color-success-bg: rgba(16, 185, 129, 0.15);\n --color-accent-brand-bg: rgba(99, 102, 241, 0.15);\n --color-error-bg: rgba(239, 68, 68, 0.15);\n\n /* Color Tokens - Text */\n --color-text-primary: #1f2937;\n --color-text-secondary: #374151;\n --color-text-muted: #6b7280;\n --color-text-light: #9ca3af;\n --color-text-white: #ffffff;\n --color-text-dark: #1a1a1a;\n --color-text-heading: #444444;\n --color-text-neon-muted: #b3b3c2;\n\n /* Color Tokens - Border */\n --color-border-light: #e5e7eb;\n --color-border-medium: #d1d5db;\n --color-border-dark: #333333;\n --color-border-neon: rgba(255, 255, 255, 0.1);\n\n /* Dark Theme Surface Colors */\n --color-dark-surface: rgba(255, 255, 255, 0.05);\n --color-dark-surface-hover: rgba(255, 255, 255, 0.08);\n --color-dark-card: rgba(255, 255, 255, 0.03);\n --color-surface-dark: #1a1a2e; /* Card background in dark mode */\n\n /* Spacing Tokens */\n --space-xs: 4px;\n --space-sm: 8px;\n --space-md: 16px;\n --space-lg: 24px;\n --space-xl: 32px;\n --space-2xl: 48px;\n\n /* Typography Tokens */\n --font-display: 'Outfit', system-ui, sans-serif;\n --font-body: 'Inter', system-ui, sans-serif;\n --font-system: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n --font-mono: monospace;\n\n --font-size-xs: 10px;\n --font-size-sm: 12px;\n --font-size-base: 14px;\n --font-size-md: 16px;\n --font-size-lg: 18px;\n --font-size-xl: 20px;\n --font-size-2xl: 24px;\n --font-size-3xl: 28px;\n --font-size-4xl: 32px;\n --font-size-year: 56px;\n --font-size-timer: 64px;\n --font-size-hero: 72px;\n\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n\n /* Effect Tokens - Glow */\n --glow-primary: 0 0 20px var(--color-accent-primary);\n --glow-secondary: 0 0 20px var(--color-accent-secondary);\n --glow-success: 0 0 20px var(--color-success-neon);\n --glow-warning: 0 0 20px var(--color-warning);\n --glow-error: 0 0 20px var(--color-error);\n\n /* Effect Tokens - Shadow */\n --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.1);\n --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);\n --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.1);\n --shadow-xl: 0 8px 32px rgba(0, 0, 0, 0.15);\n\n /* Border Radius Tokens */\n --radius-sm: 4px;\n --radius-md: 8px;\n --radius-lg: 12px;\n --radius-xl: 16px;\n --radius-2xl: 20px;\n --radius-full: 9999px;\n\n /* Transition Tokens */\n --transition-fast: 150ms ease;\n --transition-normal: 300ms ease;\n --transition-slow: 500ms ease;\n\n /* Z-Index Tokens */\n --z-control-bar: 100;\n --z-reaction-bar: 101; /* Story 18.9: Above control bar */\n --z-modal: 1000;\n --z-overlay: 1100;\n --z-toast: 1200; /* #1663 item 1: neon top-toast \u2014 above overlays/modals */\n}\n\n/* ==========================================\n Base Styles\n ========================================== */\n\n/* Base reset */\n* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nbody {\n font-family: var(--font-system);\n background: var(--color-bg-light);\n color: var(--color-text-secondary);\n line-height: 1.5;\n padding: var(--space-sm);\n min-height: 100vh;\n /* #865: lock iOS overscroll-bounce so the admin lobby (and any other\n short view) doesn't drag freely in all directions when the user\n touches the background. */\n overscroll-behavior: none;\n}\n\n/* ==========================================\n Brand Identity (Story 9.8)\n ========================================== */\n\n/* Wordmark styles */\n.wordmark {\n font-family: 'Outfit', var(--font-system);\n font-weight: 900;\n font-size: var(--font-size-hero);\n letter-spacing: -0.02em;\n line-height: 1;\n}\n\n.wordmark-beat {\n color: var(--color-text-white);\n}\n\n/* Light theme wordmark (admin page) */\nbody:not(.theme-dark) .wordmark-beat {\n color: var(--color-text-primary);\n}\n\n.wordmark-gradient {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n color: transparent;\n}\n\n.wordmark-hero {\n text-shadow: 0 0 40px rgba(255, 45, 106, 0.5);\n}\n\n/* Logo pulse animation for loading state */\n.logo-loading {\n animation: logo-pulse 2s ease-in-out infinite;\n}\n\n@keyframes logo-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.7; }\n}\n\n/* Reduced motion support for logo */\n@media (prefers-reduced-motion: reduce) {\n .logo-loading {\n animation: none;\n }\n}\n\n/* ============================================================\n Cold-start vinyl loader (#1287)\n Animated vinyl disc + hype copy bridging the ~10-15s\n Music-Assistant speaker-connect before round 1. Shared by\n player.html (#starting-view) and dashboard.html\n (#dashboard-starting).\n ============================================================ */\n/* Outer: full-height column box that centers its single inner row both axes.\n Mirrors the proven .dashboard-centered pattern (no explicit width \u2192 stretches\n via the parent's align-items:stretch) so the group is always viewport-centered\n on the TV/dashboard and the phone. */\n.vinyl-starting {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 24px;\n box-sizing: border-box;\n}\n\n/* Inner: the disc-beside-copy row. Caps its own width and centers itself; wraps\n to stacked (disc over copy) on narrow phones. */\n.vinyl-row {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n gap: clamp(20px, 5vw, 56px);\n max-width: 100%;\n}\n\n.vinyl-loader {\n flex: 0 0 auto;\n width: clamp(130px, 28vw, 260px);\n height: clamp(130px, 28vw, 260px);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n /* Soft pink/cyan glow halo behind the disc */\n background: radial-gradient(circle at center,\n rgba(255, 45, 106, 0.18) 0%,\n rgba(99, 102, 241, 0.10) 45%,\n transparent 70%);\n}\n\n.vinyl-disc {\n position: relative;\n width: 78%;\n height: 78%;\n border-radius: 50%;\n /* Conic gradient = the spinning record */\n background: conic-gradient(from 0deg,\n var(--color-accent-primary),\n var(--color-accent-brand),\n var(--color-accent-secondary),\n var(--color-accent-brand),\n var(--color-accent-primary));\n box-shadow:\n 0 0 40px rgba(255, 45, 106, 0.35),\n 0 0 80px rgba(0, 245, 255, 0.18),\n inset 0 0 30px rgba(0, 0, 0, 0.45);\n animation: vinyl-spin 3s linear infinite;\n}\n\n.vinyl-ring {\n position: absolute;\n top: 18%;\n left: 18%;\n width: 64%;\n height: 64%;\n border-radius: 50%;\n border: 1.5px dashed rgba(255, 255, 255, 0.25);\n}\n\n.vinyl-hole {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 14%;\n height: 14%;\n border-radius: 50%;\n background: var(--color-bg-primary);\n transform: translate(-50%, -50%);\n box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.4);\n}\n\n.vinyl-copy {\n /* min-width:0 + width:min(100%,460px) keeps the copy inside its flex line\n on every surface: beside the disc on landscape (TV/dashboard) and on its\n own line when wrapped on a narrow phone \u2014 the text re-wraps, it never\n overflows the viewport. */\n flex: 1 1 280px;\n min-width: 0;\n width: min(100%, 460px);\n max-width: 460px;\n text-align: left;\n}\n\n.vinyl-copy .vinyl-headline,\n.vinyl-copy .vinyl-sub,\n.vinyl-copy .wordmark-hero {\n overflow-wrap: break-word;\n}\n\n.vinyl-copy .wordmark-hero {\n font-size: clamp(2rem, 5vw, 3.25rem);\n margin: 0 0 0.5em;\n}\n\n.vinyl-headline {\n font-size: clamp(1.5rem, 4vw, 2.5rem);\n font-weight: 800;\n color: var(--color-text-white);\n margin: 0 0 0.4em;\n}\n\n.vinyl-sub {\n font-size: clamp(0.95rem, 2.2vw, 1.2rem);\n line-height: 1.5;\n color: var(--color-text-muted);\n margin: 0 0 1.2em;\n}\n\n.vinyl-dots {\n display: flex;\n gap: 12px;\n}\n\n.vinyl-dots span {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: var(--color-accent-primary);\n opacity: 0.3;\n animation: vinyl-dot-pulse 1.4s ease-in-out infinite;\n}\n\n.vinyl-dots span:nth-child(2) {\n animation-delay: 0.2s;\n}\n\n.vinyl-dots span:nth-child(3) {\n animation-delay: 0.4s;\n}\n\n@keyframes vinyl-spin {\n to { transform: rotate(360deg); }\n}\n\n@keyframes vinyl-dot-pulse {\n 0%, 100% { opacity: 0.3; transform: scale(1); }\n 40% { opacity: 1; transform: scale(1.25); }\n}\n\n/* Narrow / portrait (phone player): the row wraps to stacked, so center the\n copy under the disc and center the pulse dots \u2014 left-alignment only reads well\n in the landscape side-by-side layout. */\n@media (max-width: 640px) {\n .vinyl-copy { text-align: center; }\n .vinyl-dots { justify-content: center; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .vinyl-disc { animation: none; }\n .vinyl-dots span { animation: none; opacity: 0.7; }\n}\n\n/* Header */\nheader {\n margin-bottom: var(--space-lg);\n}\n\nheader h1 {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-dark);\n}\n\n/* Admin Header with Analytics Icon (Story 19.13) */\n.admin-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-md, 16px);\n}\n\n.admin-header h1 {\n margin: 0;\n}\n\n/* Player Header (centered, no analytics icon) */\n.player-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--space-md) var(--space-md) 0;\n}\n\n.player-header h1 {\n margin: 0;\n}\n\n/* Admin Main Content - Centered Layout (Story 19.13) */\n/* Scoped to admin-content to avoid affecting dashboard */\nbody.theme-dark main.admin-content {\n max-width: 800px;\n margin: 0 auto;\n padding: var(--space-md, 16px);\n}\n\n/* Analytics Icon Link (Story 19.13) */\n.analytics-icon-link {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n text-decoration: none;\n font-size: 1.5rem;\n transition: background-color 0.2s ease, transform 0.2s ease;\n}\n\nbody.theme-dark .analytics-icon-link {\n background: rgba(0, 245, 255, 0.1);\n}\n\nbody.theme-dark .analytics-icon-link:hover,\nbody.theme-dark .analytics-icon-link:focus {\n background: rgba(0, 245, 255, 0.2);\n transform: scale(1.1);\n outline: none;\n}\n\n/* Admin Header Actions wrapper (#226) */\n.admin-header-actions {\n display: flex;\n align-items: center;\n gap: var(--space-xs, 8px);\n}\n\n/* PWA Install Button (#226) */\n.pwa-install-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: none;\n background: rgba(0, 245, 255, 0.1);\n font-size: 1.5rem;\n cursor: pointer;\n transition: background-color 0.2s ease, transform 0.2s ease;\n padding: 0;\n}\n\n.pwa-install-btn:hover,\n.pwa-install-btn:focus {\n background: rgba(0, 245, 255, 0.2);\n transform: scale(1.1);\n outline: none;\n}\n\n/* Reset button (#777 follow-up \u2014 emergency escape hatch).\n Same 44px icon-button shape as the analytics + PWA install buttons,\n but neon-pink to signal \"destructive, last resort\". Stays subtle at\n rest so it doesn't read as a primary action. */\n.reset-icon-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: none;\n background: rgba(255, 45, 106, 0.1);\n color: var(--color-text-white);\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0;\n transition: background-color 0.2s ease, transform 0.2s ease;\n}\n.reset-icon-btn:hover,\n.reset-icon-btn:focus {\n background: rgba(255, 45, 106, 0.25);\n transform: scale(1.1);\n outline: none;\n}\n\n/* PWA iOS Hint Modal (#226) */\n.pwa-ios-hint {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1000;\n display: flex;\n justify-content: center;\n padding: var(--space-md, 16px);\n animation: slideUp 0.3s ease;\n}\n\n.pwa-ios-hint.hidden {\n display: none;\n}\n\n.pwa-ios-hint-content {\n position: relative;\n background: var(--color-bg-elevated, #2a2a3e);\n border-radius: var(--radius-lg, 12px);\n padding: var(--space-md, 16px) var(--space-lg, 24px);\n color: var(--color-text, #fff);\n text-align: center;\n max-width: 340px;\n box-shadow: 0 -2px 20px rgba(0, 0, 0, 0.3);\n}\n\n.pwa-ios-hint-close {\n position: absolute;\n top: 8px;\n right: 12px;\n background: none;\n border: none;\n color: var(--color-text, #fff);\n font-size: 1.4rem;\n cursor: pointer;\n opacity: 0.6;\n}\n\n.pwa-ios-hint-close:hover {\n opacity: 1;\n}\n\n.pwa-ios-share-icon {\n font-size: 1.2rem;\n}\n\n@keyframes slideUp {\n from { transform: translateY(100%); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n\n/* Sections */\n.status-section,\n.card-section {\n background: var(--color-bg-white);\n border-radius: var(--radius-lg);\n padding: var(--space-sm) var(--space-md);\n margin-bottom: var(--space-md);\n box-shadow: var(--shadow-sm);\n border: 1px solid transparent;\n transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.card-section:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n\n/* Section Headers with Icons (Story 19.13) */\n.card-section .section-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n margin-bottom: var(--space-sm);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-heading);\n}\n\n.card-section .section-icon {\n font-size: 1.25rem;\n}\n\n.status-section h2,\n.card-section h2:not(.section-header) {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--space-sm);\n color: var(--color-text-heading);\n}\n\n/* Status indicators */\n.status-connected {\n color: var(--color-success-alt);\n font-weight: var(--font-weight-medium);\n}\n\n.status-error {\n color: var(--color-error);\n font-weight: var(--font-weight-medium);\n}\n\n.status-warning {\n color: var(--color-warning);\n font-weight: var(--font-weight-medium);\n}\n\n/* List items */\n.list-item {\n padding: var(--space-sm);\n border-bottom: 1px solid var(--color-border-light);\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--space-sm);\n transition: background-color 0.2s ease;\n}\n\n.list-item:last-child {\n border-bottom: none;\n}\n\n/* Dark mode list items (Story 19.13) */\nbody.theme-dark .list-item {\n border-bottom-color: var(--surface-border, #333);\n}\n\nbody.theme-dark .list-item:hover {\n background: rgba(157, 78, 221, 0.1);\n}\n\n.list-item .name {\n font-weight: var(--font-weight-medium);\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-item .meta {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n flex-shrink: 0;\n}\n\n.list-item.is-invalid {\n background: var(--color-error-light);\n border-left: 3px solid var(--color-error);\n}\n\n/* Disabled playlist (no songs for selected provider) */\n.playlist-item.is-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.playlist-item.is-disabled .checkbox-label {\n cursor: not-allowed;\n}\n\n.playlist-item.is-disabled .playlist-checkbox {\n cursor: not-allowed;\n}\n\n/* Playlist selection (Story 2.1) */\n.playlist-item.is-selectable {\n cursor: pointer;\n}\n\n/* Selected state for both playlists and media players */\n.playlist-item.is-selected,\n.media-player-item.is-selected {\n background: #eff6ff;\n border-left: 3px solid var(--color-accent-blue);\n}\n\n/* Dark mode selected state - neon styling (Story 19.13) */\nbody.theme-dark .playlist-item.is-selected,\nbody.theme-dark .media-player-item.is-selected {\n background: rgba(0, 245, 255, 0.1);\n border-left: 3px solid var(--color-accent-secondary);\n}\n\n/* Seasonal playlist suggestion chip (#1539, design option 2) \u2014\n highlighted first tile inside the playlist list. */\n.seasonal-suggestion {\n position: relative;\n margin-bottom: 12px;\n padding: 14px 16px;\n border-radius: 14px;\n background:\n linear-gradient(135deg, rgba(255, 45, 106, 0.14) 0%, rgba(99, 102, 241, 0.14) 100%),\n #12121c;\n border: 1px solid rgba(255, 45, 106, 0.45);\n box-shadow: 0 0 0 1px rgba(0, 245, 255, 0.08), 0 6px 18px rgba(0, 0, 0, 0.35);\n}\n\n.seasonal-suggestion__badge {\n display: inline-block;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-accent-secondary, #00f5ff);\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid rgba(0, 245, 255, 0.3);\n border-radius: 999px;\n padding: 3px 10px;\n margin-bottom: 10px;\n}\n\n.seasonal-suggestion__title {\n font-size: 16px;\n font-weight: 700;\n color: #fff;\n margin-bottom: 4px;\n}\n\n.seasonal-suggestion__reason {\n font-size: 13px;\n line-height: 1.4;\n color: rgba(255, 255, 255, 0.72);\n margin-bottom: 12px;\n}\n\n.seasonal-suggestion__add {\n /* inherits .btn .btn-primary; just ensure it sits inline-block at the bottom */\n display: inline-block;\n}\n\n.seasonal-suggestion__dismiss {\n position: absolute;\n top: 8px;\n right: 10px;\n width: 28px;\n height: 28px;\n line-height: 1;\n font-size: 20px;\n color: rgba(255, 255, 255, 0.6);\n background: transparent;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n}\n\n/* #1759: 44px tap target (visual stays 28px) so dismissing the banner doesn't\n risk hitting the banner CTA underneath. */\n.seasonal-suggestion__dismiss::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 44px;\n height: 44px;\n transform: translate(-50%, -50%);\n}\n\n.seasonal-suggestion__dismiss:hover {\n color: #fff;\n background: rgba(255, 255, 255, 0.08);\n}\n\n/* Light theme fallback (admin defaults to dark, but keep it legible if not). */\nbody:not(.theme-dark) .seasonal-suggestion {\n background:\n linear-gradient(135deg, rgba(255, 45, 106, 0.08) 0%, rgba(99, 102, 241, 0.08) 100%),\n #fff;\n border: 1px solid rgba(255, 45, 106, 0.35);\n box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);\n}\n\nbody:not(.theme-dark) .seasonal-suggestion__title {\n color: #111;\n}\n\nbody:not(.theme-dark) .seasonal-suggestion__reason {\n color: #555;\n}\n\nbody:not(.theme-dark) .seasonal-suggestion__dismiss {\n color: #888;\n}\n\n/* Hide native checkbox, use row selection state */\n.playlist-checkbox {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n cursor: pointer;\n padding-left: var(--space-xs);\n}\n\n.playlist-name {\n font-weight: var(--font-weight-medium);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.selection-summary {\n padding: var(--space-sm) var(--space-md);\n background: #f0fdf4;\n border-radius: var(--radius-md);\n margin-top: var(--space-sm);\n font-weight: var(--font-weight-medium);\n color: #166534;\n}\n\n/* Selection summary counts - neon styling (Story 19.13) */\n.selection-summary #selected-count,\n.selection-summary #total-songs {\n font-family: 'Outfit', sans-serif;\n font-weight: 700;\n}\n\n/* Dark mode selection summary */\nbody.theme-dark .selection-summary {\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid var(--color-accent-secondary);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .selection-summary #selected-count,\nbody.theme-dark .selection-summary #total-songs {\n color: var(--color-accent-secondary);\n font-size: 1.1em;\n}\n\n/* Media player selection (Story 2.2) */\n.media-player-item.is-selectable {\n cursor: pointer;\n}\n\n/* Hide native radio, use row selection state */\n.media-player-radio {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n}\n\n.radio-label {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n cursor: pointer;\n padding-left: var(--space-xs);\n}\n\n.player-name {\n font-weight: var(--font-weight-medium);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* State indicators */\n.state-dot {\n display: inline-block;\n width: var(--space-sm);\n height: var(--space-sm);\n border-radius: 50%;\n margin-right: 6px;\n}\n\n.state-dot.state-playing {\n background: var(--color-success-alt);\n}\n\n.state-dot.state-idle,\n.state-dot.state-paused,\n.state-dot.state-off {\n background: var(--color-text-light);\n}\n\n/* Buttons - Touch-friendly minimum 44x44px */\nbutton,\n.btn {\n min-width: 44px;\n min-height: 44px;\n padding: var(--space-sm) var(--space-lg);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n border: none;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background-color var(--transition-fast), opacity var(--transition-fast);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n touch-action: manipulation;\n}\n\n.form-input {\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-sm);\n border: 1px solid var(--color-border-subtle);\n border-radius: var(--radius-md);\n background: var(--color-bg-secondary);\n color: var(--color-text-primary);\n margin-bottom: var(--space-sm);\n box-sizing: border-box;\n}\n\nbody.theme-dark .form-input {\n color: #e2e8f0;\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.15);\n}\n\n.btn-primary {\n background: var(--color-accent-primary);\n color: #fff;\n}\n\n.btn-primary:hover {\n background: #e0245c;\n}\n\n.btn-primary:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n opacity: 0.55;\n}\n\nbody.theme-dark .btn-primary {\n color: #fff;\n}\n\n.btn-secondary {\n background: var(--color-border-light);\n color: var(--color-text-secondary);\n}\n\n.btn-secondary:hover {\n background: var(--color-border-medium);\n}\n\n.btn-ghost {\n background: transparent;\n color: var(--color-accent-primary);\n border: 1.5px solid var(--color-accent-primary);\n}\n\n.btn-ghost:hover {\n background: rgba(255, 45, 106, 0.08);\n}\n\n.btn-ghost:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.btn-outline {\n background: transparent;\n color: var(--color-text-secondary);\n border: 1.5px solid var(--color-border-medium);\n}\n\n.btn-outline:hover {\n background: var(--color-border-light);\n border-color: var(--color-text-secondary);\n}\n\n.btn-outline:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.btn-danger {\n background: #dc2626;\n color: #fff;\n}\n\n.btn-danger:hover {\n background: #b91c1c;\n}\n\n/* Links */\na {\n color: var(--color-accent-blue);\n text-decoration: none;\n}\n\na:hover {\n text-decoration: underline;\n}\n\n/* Empty state */\n.empty-state {\n text-align: center;\n padding: var(--space-lg);\n color: var(--color-text-muted);\n}\n\n.empty-state p {\n margin-bottom: var(--space-sm);\n}\n\n/* Footer */\nfooter {\n margin-top: var(--space-lg);\n text-align: center;\n color: var(--color-text-light);\n font-size: var(--font-size-sm);\n}\n\n/* Utility classes */\n.hidden {\n display: none !important;\n}\n\n/* ==========================================\n Neon Party Mode Theme (Story 9.2)\n ========================================== */\n\n/* Dark theme body - applied to player page */\nbody.theme-dark {\n background: var(--color-bg-primary);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .player-container {\n background: var(--color-bg-primary);\n}\n\n/* Admin page cards in dark mode - neon styling (Story 19.13) */\nbody.theme-dark .card-section {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n color: var(--color-text-white);\n}\n\n/* Consistent spacing for admin content sections */\n.admin-content .card-section {\n margin-bottom: var(--space-md);\n}\n\nbody.theme-dark .card-section:hover {\n box-shadow: 0 4px 20px rgba(157, 78, 221, 0.3);\n}\n\nbody.theme-dark .card-section h2,\nbody.theme-dark .card-section .section-header {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .card-section p,\nbody.theme-dark .card-section .name,\nbody.theme-dark .card-section .player-name,\nbody.theme-dark .card-section .playlist-name,\nbody.theme-dark .card-section .list-item,\nbody.theme-dark .card-section .radio-label,\nbody.theme-dark .card-section .checkbox-label,\nbody.theme-dark .card-section strong,\nbody.theme-dark .card-section span {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .card-section .meta {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .game-info {\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-neon-purple);\n border-radius: var(--radius-md);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .game-info p,\nbody.theme-dark .game-info strong,\nbody.theme-dark .game-info span {\n color: var(--color-text-white);\n}\n\n/* Ensure button text stays white in dark mode (override card-section span rule) */\nbody.theme-dark .btn-primary span,\nbody.theme-dark .btn-secondary span {\n color: inherit;\n}\n\n/* Badge colors are explicitly set per badge type - no dark mode override needed */\n\n/* Inactive selector buttons need dark text on light backgrounds (Story 19.13) */\nbody.theme-dark .lang-btn:not(.lang-btn--active),\nbody.theme-dark .timer-btn:not(.timer-btn--active),\nbody.theme-dark .difficulty-btn:not(.difficulty-btn--active) {\n color: var(--color-text-primary, #1a1a2e);\n}\n\nbody.theme-dark .lang-btn:not(.lang-btn--active) span,\nbody.theme-dark .timer-btn:not(.timer-btn--active) span,\nbody.theme-dark .difficulty-btn:not(.difficulty-btn--active) span {\n color: var(--color-text-primary, #1a1a2e);\n}\n\n/* Language Selector (Story 12.4) */\n.language-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.lang-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-xs);\n padding: var(--space-sm) var(--space-lg);\n border: 2px solid var(--color-border-medium);\n border-radius: var(--radius-md);\n background: var(--color-bg-white);\n color: var(--color-text-primary);\n font-size: var(--font-size-base);\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.lang-btn:hover {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.lang-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.lang-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.lang-flag {\n font-size: 1.25em;\n}\n\n.lang-name {\n font-weight: 600;\n}\n\n/* Timer Selector (Story 13.1) */\n.timer-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.timer-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2xs);\n padding: var(--space-sm) var(--space-md);\n min-width: 90px;\n border: 2px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n background: var(--color-bg-card);\n color: var(--color-text-secondary);\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.timer-btn:hover {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.timer-btn:focus {\n outline: none;\n border-color: var(--color-accent-brand);\n box-shadow: 0 0 0 3px rgba(30, 215, 96, 0.3);\n}\n\n.timer-btn:focus-visible {\n outline: 2px solid var(--color-accent-brand);\n outline-offset: 2px;\n}\n\n.timer-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: var(--color-border-neon);\n background: var(--color-bg-card);\n}\n\n.timer-btn:disabled:hover {\n border-color: var(--color-border-neon);\n background: var(--color-bg-card);\n}\n\n.timer-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.timer-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.timer-icon {\n font-size: 1.5em;\n}\n\n.timer-label {\n font-weight: 600;\n font-size: 0.875rem;\n}\n\n.timer-value {\n font-size: 0.75rem;\n opacity: 0.8;\n}\n\n.timer-btn--active .timer-value {\n opacity: 1;\n}\n\n/* Difficulty Selector (Story 14.1) */\n.difficulty-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.difficulty-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2xs);\n padding: var(--space-sm) var(--space-md);\n min-width: 90px;\n border: 2px solid var(--color-border-light);\n border-radius: var(--radius-md);\n background: var(--color-bg-card);\n color: var(--color-text-secondary);\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.difficulty-btn:hover {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.difficulty-btn:focus {\n outline: none;\n border-color: var(--color-accent-brand);\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.3);\n}\n\n.difficulty-btn:focus-visible {\n outline: 2px solid var(--color-accent-brand);\n outline-offset: 2px;\n}\n\n.difficulty-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.difficulty-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.difficulty-icon {\n font-size: 1.5em;\n}\n\n.difficulty-label {\n font-weight: 600;\n font-size: 0.875rem;\n}\n\n.difficulty-description {\n text-align: center;\n font-size: 0.8125rem;\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n line-height: 1.5;\n max-width: 400px;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* Artist Challenge Toggle (Story 20.7) */\n.toggle-option {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n cursor: pointer;\n padding: var(--space-sm) 0;\n}\n\n.toggle-option input[type=\"checkbox\"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-switch {\n position: relative;\n width: 48px;\n height: 26px;\n background: var(--color-border);\n border-radius: 13px;\n transition: background 0.2s ease;\n flex-shrink: 0;\n}\n\n.toggle-switch::after {\n content: '';\n position: absolute;\n top: 3px;\n left: 3px;\n width: 20px;\n height: 20px;\n background: white;\n border-radius: 50%;\n transition: transform 0.2s ease;\n}\n\n.toggle-option input:checked + .toggle-switch {\n background: var(--color-success);\n}\n\n.toggle-option input:checked + .toggle-switch::after {\n transform: translateX(22px);\n}\n\n.toggle-option input:focus-visible + .toggle-switch {\n outline: 2px solid var(--color-accent-primary);\n outline-offset: 2px;\n}\n\n.toggle-label {\n font-size: var(--font-size-md);\n font-weight: 500;\n color: var(--color-text);\n}\n\n.option-description {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin: var(--space-xs) 0 0 0;\n padding-left: calc(48px + var(--space-md));\n}\n\n/* Dark mode toggle */\nbody.theme-dark .toggle-switch {\n background: var(--color-dark-border, #333);\n}\n\n/* Provider Selector (Story 17.2) */\n.provider-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.provider-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2xs);\n padding: var(--space-sm) var(--space-md);\n min-width: 100px;\n border: 2px solid var(--color-border-light);\n border-radius: var(--radius-md);\n background: var(--color-bg-card);\n color: var(--color-text-secondary);\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.provider-btn:hover:not(.provider-btn--disabled) {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.provider-btn:focus {\n outline: none;\n border-color: var(--color-accent-brand);\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.3);\n}\n\n.provider-btn:focus-visible {\n outline: 2px solid var(--color-accent-brand);\n outline-offset: 2px;\n}\n\n.provider-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.provider-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.provider-icon {\n font-size: 1.5em;\n}\n\n.provider-label {\n font-weight: 600;\n font-size: 0.875rem;\n}\n\n/* Playlist coverage warning (Story 17.2) */\n.playlist-coverage {\n font-size: 0.75rem;\n color: var(--color-text-muted);\n}\n\n.playlist-coverage--warning {\n color: var(--color-warning);\n}\n\n.playlist-coverage--none {\n color: var(--color-error);\n}\n\n/* Playlist Filter Bar (Issue #70) */\n.playlist-filter-bar {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 0.75rem 0;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid var(--color-border);\n}\n\n/* Dropdown filters container */\n.filter-dropdowns {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.filter-dropdown {\n padding: 0.5rem 2rem 0.5rem 0.75rem;\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md, 6px);\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--color-text-primary, #333);\n cursor: pointer;\n transition: all 0.15s ease;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M2 4l4 4 4-4'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n min-width: 120px;\n}\n\n.filter-dropdown:hover {\n border-color: var(--color-primary, #6c5ce7);\n}\n\n.filter-dropdown:focus {\n outline: none;\n border-color: var(--color-primary, #6c5ce7);\n box-shadow: 0 0 0 2px rgba(108, 92, 231, 0.2);\n}\n\n/* Dropdown with active selection */\n.filter-dropdown:not([value=\"\"]):has(option:checked:not([value=\"\"])) {\n border-color: var(--color-primary, #6c5ce7);\n background-color: rgba(108, 92, 231, 0.08);\n}\n\n/* Filter summary */\n.filter-summary {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.8125rem;\n}\n\n.filter-summary-text {\n color: var(--color-text-secondary, #666);\n}\n\n.filter-clear {\n padding: 0.25rem 0.5rem;\n background: transparent;\n border: 1px solid var(--color-border);\n border-radius: var(--radius-sm, 4px);\n font-size: 0.75rem;\n color: var(--color-text-secondary, #666);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.filter-clear:hover {\n background: var(--color-error, #e74c3c);\n border-color: var(--color-error, #e74c3c);\n color: white;\n}\n\n/* Dark theme */\nbody.theme-dark .filter-dropdown {\n background-color: rgba(255, 255, 255, 0.08);\n border-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.85);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M2 4l4 4 4-4'/%3E%3C/svg%3E\");\n}\n\nbody.theme-dark .filter-dropdown:hover,\nbody.theme-dark .filter-dropdown:focus {\n border-color: rgba(108, 92, 231, 0.6);\n}\n\nbody.theme-dark .filter-summary-text {\n color: rgba(255, 255, 255, 0.6);\n}\n\nbody.theme-dark .filter-clear {\n border-color: rgba(255, 255, 255, 0.2);\n color: rgba(255, 255, 255, 0.6);\n}\n\n/* Legacy filter-tag styles (kept for backwards compatibility) */\n.filter-tag {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.4375rem 0.875rem;\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-full);\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--color-text-primary, #333);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.filter-tag .filter-count {\n font-size: 0.6875rem;\n opacity: 0.8;\n}\n\n/* Playlist Tags Display */\n.playlist-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n margin-top: 0.375rem;\n}\n\n.playlist-tag {\n display: inline-block;\n padding: 0.1875rem 0.5rem;\n background: var(--color-primary-light, #e8e4f8);\n border: 1px solid var(--color-primary-border, #c9bff2);\n border-radius: var(--radius-full);\n font-size: 0.6875rem;\n font-weight: 500;\n color: var(--color-primary-dark, #5b4cad);\n max-width: 6rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.playlist-tag--more {\n background: transparent;\n border-color: var(--color-primary-border, #c9bff2);\n color: var(--color-text-secondary, #666);\n font-style: italic;\n}\n\nbody.theme-dark .playlist-tag {\n background: rgba(108, 92, 231, 0.2);\n border-color: rgba(108, 92, 231, 0.4);\n color: #b8acf6;\n}\n\nbody.theme-dark .playlist-tag--more {\n background: transparent;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* Difficulty Badge (Story 14.1) */\n.difficulty-badge {\n display: inline-block;\n padding: 0.125rem 0.5rem;\n border-radius: var(--radius-full);\n font-size: 0.75rem;\n font-weight: 600;\n margin-left: var(--space-xs);\n}\n\n.difficulty-badge--easy {\n background: var(--color-success-bg);\n color: var(--color-success);\n border: 1px solid var(--color-success);\n}\n\n.difficulty-badge--normal {\n background: var(--color-accent-brand-bg);\n color: var(--color-accent-brand);\n border: 1px solid var(--color-accent-brand);\n}\n\n.difficulty-badge--hard {\n background: var(--color-error-bg);\n color: var(--color-error);\n border: 1px solid var(--color-error);\n}\n\n/* Supported players hint below media player list */\n.supported-players-hint {\n font-size: 0.75rem;\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 1px solid var(--color-border-light);\n}\n\n.supported-players-hint a {\n color: var(--color-accent-primary);\n text-decoration: none;\n}\n\n.supported-players-hint a:hover {\n text-decoration: underline;\n}\n\nbody.theme-dark .supported-players-hint {\n color: var(--color-text-neon-muted);\n border-top-color: var(--color-border-neon);\n}\n\n/* Player info container - holds name and platform badge */\n.player-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n/* Platform badge on each player item */\n.platform-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 0.625rem;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n background: rgba(128, 128, 128, 0.15);\n color: var(--color-text-muted);\n}\n\n.platform-badge--music_assistant {\n background: rgba(76, 175, 80, 0.15);\n color: #4caf50;\n}\n\n.platform-badge--sonos {\n background: rgba(255, 152, 0, 0.15);\n color: #ff9800;\n}\n\n.platform-badge--alexa_media,\n.platform-badge--alexa {\n background: rgba(0, 168, 225, 0.15);\n color: #00a8e1;\n}\n\nbody.theme-dark .platform-badge {\n background: rgba(255, 255, 255, 0.08);\n}\n\nbody.theme-dark .platform-badge--music_assistant {\n background: rgba(76, 175, 80, 0.2);\n color: #81c784;\n}\n\nbody.theme-dark .platform-badge--sonos {\n background: rgba(255, 152, 0, 0.2);\n color: #ffb74d;\n}\n\nbody.theme-dark .platform-badge--alexa_media,\nbody.theme-dark .platform-badge--alexa {\n background: rgba(0, 168, 225, 0.2);\n color: #4fc3f7;\n}\n\n/* No compatible players message */\n.no-players-message {\n text-align: center;\n padding: var(--space-lg);\n}\n\n.no-players-message h3 {\n font-size: 1.125rem;\n margin-bottom: var(--space-sm);\n}\n\n.no-players-message p {\n font-size: 0.875rem;\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.no-players-message .button-group {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n margin-top: var(--space-md);\n}\n\n/* Provider chips section */\n.provider-chips {\n justify-content: flex-start;\n}\n\n.provider-chips .chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.provider-icon {\n font-size: 1rem;\n}\n\n/* Warning box styling */\n.warning-box {\n background: var(--color-warning-bg);\n border: 1px solid var(--color-warning);\n border-radius: var(--radius-sm);\n padding: var(--space-sm);\n margin-top: var(--space-sm);\n font-size: 0.875rem;\n}\n\n.warning-box p {\n margin: 0 0 var(--space-xs) 0;\n}\n\n.warning-box p:last-child {\n margin-bottom: 0;\n}\n\n.warning-caveat {\n font-size: 0.8125rem;\n opacity: 0.85;\n}\n\n/* Provider hint text */\n#provider-hint {\n font-size: 0.8125rem;\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n}\n\nbody.theme-dark #provider-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Disabled chip state (for provider/feature chips) */\n.chip--disabled,\n.provider-btn--disabled {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* Hint text styling */\n.hint-text {\n font-size: 0.75rem;\n color: var(--color-text-muted);\n margin: var(--space-xs) 0 0 calc(var(--space-md) + 24px);\n font-style: italic;\n}\n\nbody.theme-dark .hint-text {\n color: var(--color-text-neon-muted);\n}\n\n/* Modal content in dark mode needs dark text on light backgrounds */\nbody.theme-dark .modal-content {\n color: var(--color-text-primary);\n}\n\nbody.theme-dark .modal-content h2,\nbody.theme-dark .modal-content p {\n color: var(--color-text-primary);\n}\n\n/* Input fields inside modals need dark text on light background */\nbody.theme-dark .modal-content .name-input {\n background: var(--color-bg-white);\n border-color: var(--color-border-medium);\n color: var(--color-text-primary);\n}\n\nbody.theme-dark .modal-content .name-input::placeholder {\n color: var(--color-text-muted);\n}\n\nbody.theme-dark .modal-content .name-input:focus {\n border-color: var(--color-accent-blue);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n/* Card component classes */\n.card {\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n padding: var(--space-md);\n border: 1px solid var(--color-border-neon);\n}\n\n.card-glass {\n background: var(--color-dark-surface);\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n}\n\n/* Neon Primary Button */\n.btn-neon {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n border: none;\n border-radius: var(--radius-md);\n padding: var(--space-md) var(--space-lg);\n font-weight: var(--font-weight-semibold);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.btn-neon:hover {\n background: #ff4080;\n}\n\n.btn-neon:active {\n transform: scale(0.98);\n}\n\n/* Glow effect for buttons */\n.btn-glow {\n transition: box-shadow var(--transition-fast), transform var(--transition-fast);\n}\n\n.btn-glow:hover {\n box-shadow: var(--glow-primary);\n}\n\n.btn-glow:active {\n transform: scale(0.98);\n box-shadow: var(--glow-primary);\n}\n\n/* Secondary glow (cyan) */\n.btn-glow-secondary:hover {\n box-shadow: var(--glow-secondary);\n}\n\n/* Success glow */\n.btn-glow-success:hover {\n box-shadow: var(--glow-success);\n}\n\n/* Text glow utilities */\n.text-glow {\n text-shadow: 0 0 10px var(--color-accent-primary),\n 0 0 20px var(--color-accent-primary),\n 0 0 30px var(--color-accent-primary);\n}\n\n.text-glow-cyan {\n text-shadow: 0 0 10px var(--color-accent-secondary),\n 0 0 20px var(--color-accent-secondary),\n 0 0 30px var(--color-accent-secondary);\n}\n\n.text-glow-success {\n text-shadow: 0 0 10px var(--color-success-neon),\n 0 0 20px var(--color-success-neon),\n 0 0 30px var(--color-success-neon);\n}\n\n/* Dark theme text utilities */\n.text-neon-white {\n color: var(--color-text-white);\n}\n\n.text-neon-muted {\n color: var(--color-text-neon-muted);\n}\n\n.text-neon-primary {\n color: var(--color-accent-primary);\n}\n\n.text-neon-secondary {\n color: var(--color-accent-secondary);\n}\n\n/* Dark theme overrides for player views */\nbody.theme-dark .player-container h1,\nbody.theme-dark .lobby-header h1,\nbody.theme-dark .game-container h1,\nbody.theme-dark .reveal-container h1,\nbody.theme-dark .end-container h1 {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .player-container p,\nbody.theme-dark .hint,\nbody.theme-dark .player-count {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .join-form > p {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme player cards */\nbody.theme-dark .player-card {\n background: var(--color-dark-surface);\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .player-card--you {\n background: rgba(255, 45, 106, 0.1);\n border-color: var(--color-accent-primary);\n}\n\nbody.theme-dark .player-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .you-badge {\n color: var(--color-accent-primary);\n}\n\n/* Dark theme form inputs */\nbody.theme-dark .name-input {\n background: var(--color-dark-surface);\n border-color: var(--color-border-neon);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .name-input:focus {\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 0 3px rgba(255, 45, 106, 0.2);\n}\n\nbody.theme-dark .name-input::placeholder {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme join button */\nbody.theme-dark .join-btn {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .join-btn:hover {\n box-shadow: var(--glow-primary);\n}\n\n/* Dark theme QR area */\nbody.theme-dark .qr-share-area {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .qr-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme - QR collapsible (Story 18.8) */\nbody.theme-dark .qr-share-header {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .qr-share-chevron {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme lobby status */\nbody.theme-dark .lobby-status {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme game container */\nbody.theme-dark .game-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .round-indicator-text {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .timer {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .timer--warning {\n color: var(--color-warning);\n text-shadow: 0 0 10px var(--color-warning);\n animation: timer-pulse-subtle 1s ease-in-out infinite;\n}\n\nbody.theme-dark .timer--critical {\n color: var(--color-error-neon);\n text-shadow: 0 0 15px var(--color-error-neon);\n animation: timer-pulse-intense 0.5s ease-in-out infinite;\n}\n\n/* Dark theme submission tracker - inherits from base styles */\n\nbody.theme-dark .player-avatar {\n background: var(--color-dark-surface-hover);\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .player-indicator.is-submitted .player-avatar {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-success);\n}\n\n/* Dark theme year selector */\nbody.theme-dark #selected-year {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .slider-label {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .year-slider {\n background: var(--color-dark-surface);\n}\n\nbody.theme-dark .year-slider::-webkit-slider-thumb {\n background: var(--color-accent-primary);\n box-shadow: var(--glow-primary);\n}\n\nbody.theme-dark .year-slider::-moz-range-thumb {\n background: var(--color-accent-primary);\n box-shadow: var(--glow-primary);\n}\n\n/* Dark theme submit button */\nbody.theme-dark .submit-btn {\n background: var(--color-accent-primary);\n}\n\nbody.theme-dark .submit-btn:hover {\n box-shadow: var(--glow-primary);\n}\n\n/* Dark theme submitted confirmation */\nbody.theme-dark .submitted-confirmation {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-success);\n}\n\n/* Dark theme reveal container */\nbody.theme-dark .reveal-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .reveal-round-info {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .correct-year-label {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .correct-year {\n color: var(--color-success-neon);\n text-shadow: 0 0 10px var(--color-success-neon),\n 0 0 20px var(--color-success-neon);\n}\n\nbody.theme-dark .song-title {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .song-artist {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme fun fact */\nbody.theme-dark .fun-fact-container {\n background: rgba(255, 102, 0, 0.15);\n border: 1px solid rgba(255, 102, 0, 0.3);\n}\n\nbody.theme-dark .fun-fact-text {\n color: var(--color-warning);\n}\n\n/* Dark theme reveal emotion (Story 9.4) */\nbody.theme-dark .reveal-emotion--exact {\n color: var(--color-success-neon);\n text-shadow: 0 0 20px var(--color-success-neon), 0 0 40px var(--color-success-neon);\n}\n\nbody.theme-dark .reveal-emotion--close {\n color: var(--color-warning);\n text-shadow: 0 0 15px var(--color-warning);\n}\n\nbody.theme-dark .reveal-emotion--wrong {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .reveal-emotion--missed {\n color: var(--color-text-neon-muted);\n opacity: 0.6;\n}\n\n/* Dark theme personal result */\nbody.theme-dark .personal-result {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .result-header {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .result-label {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .result-value {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .result-score {\n color: var(--color-accent-secondary);\n text-shadow: 0 0 10px var(--color-accent-secondary);\n}\n\n/* Dark theme leaderboard */\nbody.theme-dark .leaderboard {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n box-shadow: none;\n}\n\nbody.theme-dark .leaderboard-header {\n background: var(--color-dark-card);\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .leaderboard-title {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .leaderboard-entry {\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .leaderboard-entry.is-current {\n background: rgba(255, 45, 106, 0.1);\n border-left-color: var(--color-accent-primary);\n}\n\nbody.theme-dark .entry-rank {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .entry-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .entry-score {\n color: var(--color-accent-secondary);\n}\n\n/* Dark theme leaderboard animations (Story 9.5) */\nbody.theme-dark .leaderboard-entry--climbing {\n animation: leaderboard-climb-dark 400ms ease-out;\n}\n\nbody.theme-dark .leaderboard-entry--falling {\n animation: leaderboard-fall-dark 400ms ease-out;\n}\n\n@keyframes leaderboard-climb-dark {\n 0% { transform: translateY(10px); opacity: 0.7; background: rgba(0, 255, 136, 0.15); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\n@keyframes leaderboard-fall-dark {\n 0% { transform: translateY(-10px); opacity: 0.7; background: rgba(255, 45, 106, 0.15); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\nbody.theme-dark .rank-up {\n color: var(--color-success-neon);\n text-shadow: 0 0 5px var(--color-success-neon);\n}\n\nbody.theme-dark .rank-down {\n color: var(--color-error-neon);\n text-shadow: 0 0 5px var(--color-error-neon);\n}\n\nbody.theme-dark .streak-indicator {\n color: var(--color-warning);\n}\n\nbody.theme-dark .streak-indicator--hot {\n text-shadow: 0 0 10px var(--color-warning), 0 0 20px var(--color-warning);\n}\n\nbody.theme-dark .leaderboard-separator {\n color: var(--color-text-neon-muted);\n border-color: var(--color-border-neon);\n}\n\n/* Dark theme top 3 styling (Story 9.5) */\nbody.theme-dark .leaderboard-entry.is-top-1 {\n background: linear-gradient(90deg, rgba(255, 215, 0, 0.15), rgba(255, 215, 0, 0.05));\n}\n\nbody.theme-dark .leaderboard-entry.is-top-1 .entry-rank {\n color: #ffd700;\n text-shadow: 0 0 10px rgba(255, 215, 0, 0.5);\n}\n\nbody.theme-dark .leaderboard-entry.is-top-2 {\n background: linear-gradient(90deg, rgba(192, 192, 192, 0.15), rgba(192, 192, 192, 0.05));\n}\n\nbody.theme-dark .leaderboard-entry.is-top-2 .entry-rank {\n color: #c0c0c0;\n text-shadow: 0 0 10px rgba(192, 192, 192, 0.5);\n}\n\nbody.theme-dark .leaderboard-entry.is-top-3 {\n background: linear-gradient(90deg, rgba(205, 127, 50, 0.15), rgba(205, 127, 50, 0.05));\n}\n\nbody.theme-dark .leaderboard-entry.is-top-3 .entry-rank {\n color: #cd7f32;\n text-shadow: 0 0 10px rgba(205, 127, 50, 0.5);\n}\n\n/* Dark theme end container */\nbody.theme-dark .end-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .end-title {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .end-subtitle {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .your-result {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .your-result-header {\n color: var(--color-accent-primary);\n}\n\nbody.theme-dark .your-result-rank {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .your-result-score {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .stat-value {\n color: var(--color-accent-secondary);\n}\n\nbody.theme-dark .stat-label {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme podium */\nbody.theme-dark .podium-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .podium-score {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme final leaderboard */\nbody.theme-dark .final-leaderboard {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n box-shadow: none;\n}\n\nbody.theme-dark .final-leaderboard-header {\n background: var(--color-dark-card);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .final-entry {\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .final-entry.is-current {\n background: rgba(255, 45, 106, 0.1);\n}\n\nbody.theme-dark .final-rank {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .final-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .final-score {\n color: var(--color-accent-secondary);\n}\n\n/* Dark theme new game button */\nbody.theme-dark .new-game-btn {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-success);\n}\n\nbody.theme-dark .new-game-btn:hover {\n background: #4dff1f;\n}\n\n/* Dark theme end player message */\nbody.theme-dark .end-player-message {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .rejoin-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme paused view */\nbody.theme-dark .paused-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .paused-container h1 {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .paused-container > p {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .paused-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme connection lost view */\nbody.theme-dark .connection-lost-container h1 {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .connection-lost-container > p {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .connection-lost-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme modal */\nbody.theme-dark .qr-modal-content {\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .qr-modal-label {\n color: var(--color-text-white);\n}\n\n/* ==========================================\n Lobby Section (Story 2.3)\n ========================================== */\n\n.qr-print-area {\n text-align: center;\n padding: var(--space-lg) 0;\n}\n\n.qr-container {\n display: inline-block;\n padding: var(--space-md);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n box-shadow: var(--shadow-md);\n}\n\n#qr-code {\n display: inline-block;\n}\n\n#qr-code img {\n display: block;\n}\n\n.qr-instruction {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n margin-top: var(--space-md);\n}\n\n.join-url {\n font-family: var(--font-mono);\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n word-break: break-all;\n user-select: all;\n cursor: text;\n}\n\n.lobby-controls {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--space-sm);\n margin: var(--space-md) 0;\n}\n\n/* Dashboard button styling (Story 16.4) */\n.btn-dashboard {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.player-list {\n margin-top: var(--space-md);\n border-top: 1px solid var(--color-border-light);\n padding-top: var(--space-md);\n}\n\n.game-controls-bar {\n display: flex;\n gap: var(--space-sm);\n justify-content: center;\n margin-top: var(--space-md);\n padding-top: var(--space-md);\n border-top: 1px solid var(--color-border-light);\n}\n\n/* Game Info Card (Story 2.3) */\n.game-info {\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.game-info p {\n margin-bottom: var(--space-sm);\n}\n\n.game-info p:last-child {\n margin-bottom: 0;\n}\n\n/* Print Styles (Story 2.3) */\n@media print {\n body * {\n visibility: hidden;\n }\n\n .qr-print-area,\n .qr-print-area * {\n visibility: visible;\n }\n\n .qr-print-area {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n }\n\n #qr-code {\n width: 400px !important;\n height: 400px !important;\n }\n\n #qr-code img,\n #qr-code canvas {\n width: 400px !important;\n height: 400px !important;\n }\n\n .qr-instruction {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n margin-top: var(--space-xl);\n }\n\n .join-url {\n font-size: var(--font-size-base);\n font-family: var(--font-mono);\n margin-top: var(--space-sm);\n }\n\n .no-print {\n display: none !important;\n }\n}\n\n/* ==========================================\n Player Page Styles (Story 2.4)\n ========================================== */\n\n.player-container {\n max-width: 500px;\n margin: 0 auto;\n /* Edge-to-edge layout with safe area support (Story 9.6) */\n padding-top: max(var(--space-md), env(safe-area-inset-top));\n padding-bottom: max(var(--space-md), env(safe-area-inset-bottom));\n padding-left: max(var(--space-sm), env(safe-area-inset-left));\n padding-right: max(var(--space-sm), env(safe-area-inset-right));\n text-align: center;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n}\n\n/* Tablet breakpoint - center content (Story 9.6) */\n@media (min-width: 768px) {\n .player-container {\n max-width: 480px;\n margin-left: auto;\n margin-right: auto;\n padding-left: var(--space-lg);\n padding-right: var(--space-lg);\n }\n}\n\n.view {\n display: block;\n overflow-x: hidden;\n}\n\n.view.hidden {\n display: none;\n}\n\n.error-icon {\n font-size: var(--font-size-timer);\n margin-bottom: var(--space-md);\n}\n\n.player-container h1 {\n margin-bottom: var(--space-sm);\n color: var(--color-text-primary);\n}\n\n.player-container p {\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.hint {\n font-size: var(--font-size-base);\n color: var(--color-text-light);\n}\n\n.coming-soon {\n font-style: italic;\n color: var(--color-text-muted);\n}\n\n.spinner {\n width: 40px;\n height: 40px;\n margin: 0 auto var(--space-md);\n border: 4px solid var(--color-bg-card-alt);\n border-top: 4px solid var(--color-accent-blue);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* ==========================================\n Responsive QR Sizing (Story 2.4)\n ========================================== */\n\n/* Mobile default - minimum 250px */\n#qr-code {\n max-width: 100%;\n}\n\n#qr-code img,\n#qr-code canvas {\n max-width: 100%;\n height: auto;\n}\n\n/* Tablet (481-768px): 280px QR code */\n@media (min-width: 481px) and (max-width: 768px) {\n .qr-container {\n padding: var(--space-xl);\n }\n}\n\n/* Desktop (>768px): 350px QR code */\n@media (min-width: 769px) {\n .qr-container {\n padding: var(--space-lg);\n }\n}\n\n/* ==========================================\n Join Form Styles (Story 3.1)\n ========================================== */\n\n.join-form {\n max-width: 400px;\n margin: 0 auto;\n padding: var(--space-lg);\n text-align: center;\n}\n\n.join-form h1 {\n margin-bottom: var(--space-sm);\n font-size: var(--font-size-2xl);\n}\n\n.join-form > p {\n margin-bottom: var(--space-lg);\n color: var(--color-text-muted);\n}\n\n.form-group {\n margin-bottom: var(--space-md);\n}\n\n.name-input {\n width: 100%;\n padding: 14px var(--space-md);\n font-size: var(--font-size-lg);\n border: 2px solid var(--color-border-medium);\n border-radius: var(--radius-md);\n min-height: 48px;\n box-sizing: border-box;\n}\n\n.name-input:focus {\n border-color: var(--color-accent-blue);\n outline: none;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.join-btn {\n width: 100%;\n min-height: 48px;\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n}\n\n.validation-msg {\n margin-top: var(--space-sm);\n font-size: var(--font-size-base);\n color: var(--color-error);\n text-align: left;\n}\n\n/* ==========================================\n Lobby Styles (Story 3.3)\n ========================================== */\n\n.lobby-container {\n max-width: 500px;\n margin: 0 auto;\n padding: var(--space-lg) var(--space-md);\n}\n\n.lobby-header {\n text-align: center;\n margin-bottom: var(--space-lg);\n}\n\n.lobby-header h1 {\n font-size: var(--font-size-2xl);\n margin-bottom: var(--space-sm);\n color: var(--color-text-primary);\n}\n\n.player-count {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* Player List */\n.player-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n margin-bottom: var(--space-lg);\n}\n\n.player-card {\n display: flex;\n align-items: center;\n padding: var(--space-sm) var(--space-md);\n min-height: 48px;\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border-light);\n transition: all var(--transition-normal);\n}\n\n.player-card--you {\n background: #eff6ff;\n border-color: var(--color-accent-blue);\n}\n\n.player-card--disconnected {\n opacity: 0.5;\n filter: grayscale(0.3);\n transition: opacity 0.3s ease, filter 0.3s ease;\n}\n\n.away-badge {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n font-style: italic;\n margin-left: var(--space-xs);\n}\n\n.player-name {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-size: var(--font-size-md);\n color: var(--color-text-primary);\n}\n\n.you-badge {\n font-size: var(--font-size-sm);\n color: var(--color-accent-blue);\n font-weight: var(--font-weight-medium);\n}\n\n/* New player animation */\n.player-card.is-new {\n animation: playerJoin var(--transition-slow) ease-out;\n background: #ecfdf5;\n border-color: var(--color-success);\n}\n\n@keyframes playerJoin {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Story 18.2: Virtual scrolling for player lists */\n.player-list--virtual {\n position: relative;\n overflow-y: auto;\n max-height: 320px;\n -webkit-overflow-scrolling: touch;\n contain: layout style paint;\n}\n\n.player-list--virtual .virtual-spacer-top,\n.player-list--virtual .virtual-spacer-bottom {\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.player-list--virtual .virtual-content-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n.player-list--virtual .player-card {\n flex-shrink: 0;\n height: 52px;\n box-sizing: border-box;\n}\n\n/* QR Share Area (Story 3.4) */\n.qr-share-area {\n text-align: center;\n padding: var(--space-lg) var(--space-md);\n background: var(--color-bg-card);\n border-radius: var(--radius-lg);\n margin-bottom: var(--space-md);\n}\n\n.qr-icon {\n font-size: var(--font-size-xl);\n}\n\n.qr-container {\n display: inline-block;\n padding: var(--space-sm);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n box-shadow: var(--shadow-md);\n cursor: pointer;\n min-width: 150px;\n min-height: 150px;\n transition: transform var(--transition-fast);\n}\n\n.qr-container:hover,\n.qr-container:focus {\n transform: scale(1.02);\n outline: 2px solid var(--color-accent-blue);\n outline-offset: 2px;\n}\n\n.qr-container img {\n display: block;\n width: 100%;\n height: auto;\n}\n\n.qr-hint {\n margin-top: var(--space-sm);\n font-size: 13px;\n color: var(--color-text-muted);\n}\n\n/* QR Share Section - Collapsible (Story 18.8) */\n.qr-collapsible {\n /* Override base qr-share-area padding for collapsible */\n padding: 0;\n}\n\n.qr-share-header {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n cursor: pointer;\n user-select: none;\n list-style: none; /* Remove default marker */\n font-size: var(--font-size-md);\n font-weight: 600;\n color: var(--color-text-primary);\n min-height: 44px; /* Touch target */\n}\n\n.qr-share-header::-webkit-details-marker {\n display: none; /* Hide Safari default marker */\n}\n\n.qr-share-chevron {\n margin-left: var(--space-sm);\n transition: transform var(--transition-normal);\n font-size: 0.8rem;\n color: var(--color-text-muted);\n}\n\n.qr-collapsible[open] .qr-share-chevron {\n transform: rotate(180deg);\n}\n\n.qr-share-content {\n padding: 0 var(--space-md) var(--space-lg);\n animation: qrSlideDown var(--transition-normal) ease-out;\n}\n\n@keyframes qrSlideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Collapsed state - just show header */\n.qr-collapsible:not([open]) {\n padding-bottom: 0;\n}\n\n.qr-collapsible:not([open]) .qr-share-header {\n padding-bottom: var(--space-md);\n}\n\n/* Reduced motion preference */\n@media (prefers-reduced-motion: reduce) {\n .qr-share-chevron {\n transition: none;\n }\n .qr-share-content {\n animation: none;\n }\n}\n\n/* Dashboard Hint (Story 16.4) */\n.dashboard-hint-container {\n margin-top: var(--space-md);\n text-align: center;\n}\n\n.dashboard-hint-text {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-xs);\n font-size: var(--font-size-sm);\n color: #ffffff;\n background: var(--color-surface-dark);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n margin: 0;\n}\n\n.dashboard-hint-label {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n color: white;\n}\n\n.dashboard-hint-icon {\n font-size: var(--font-size-base);\n}\n\n.dashboard-hint-url {\n font-family: monospace;\n color: var(--color-accent-secondary);\n font-size: var(--font-size-sm);\n}\n\n/* QR Modal (Story 3.4) */\n.qr-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.qr-modal.hidden {\n display: none;\n}\n\n.qr-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.75);\n}\n\n.qr-modal-content {\n position: relative;\n background: var(--color-bg-white);\n padding: var(--space-xl) var(--space-lg);\n border-radius: var(--radius-xl);\n text-align: center;\n max-width: 90vw;\n max-height: 90vh;\n animation: modalFadeIn var(--transition-fast);\n}\n\n@keyframes modalFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.qr-modal-code {\n display: inline-block;\n padding: var(--space-md);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n min-width: 250px;\n}\n\n.qr-modal-code img {\n display: block;\n width: 100%;\n max-width: 80vw;\n height: auto;\n}\n\n.qr-modal-label {\n margin: var(--space-md) 0;\n font-size: var(--font-size-lg);\n color: var(--color-text-primary);\n}\n\n.qr-modal-close {\n min-width: 120px;\n min-height: 48px;\n}\n\n/* Screen reader only */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n/* Lobby Status */\n.lobby-status {\n text-align: center;\n padding: var(--space-md);\n color: var(--color-text-muted);\n}\n\n/* How to Play Section (Story 18.7) */\n.how-to-play {\n margin: var(--space-md) 0;\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border-light);\n}\n\n.how-to-play-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n cursor: pointer;\n user-select: none;\n list-style: none;\n font-weight: 600;\n color: var(--color-text-primary);\n min-height: 44px;\n}\n\n.how-to-play-header::-webkit-details-marker {\n display: none;\n}\n\n.how-to-play-icon {\n font-size: 1.2rem;\n}\n\n.how-to-play-chevron {\n margin-left: auto;\n transition: transform var(--transition-normal);\n font-size: 0.8rem;\n color: var(--color-text-secondary);\n}\n\n.how-to-play[open] .how-to-play-chevron {\n transform: rotate(180deg);\n}\n\n.how-to-play-content {\n padding: 0 var(--space-md) var(--space-md);\n animation: howToPlaySlideDown var(--transition-normal) ease-out;\n}\n\n.how-to-play-steps {\n margin: 0;\n padding: 0;\n list-style: none;\n color: var(--color-text-secondary);\n font-size: 0.9rem;\n line-height: 1.6;\n counter-reset: step-counter;\n}\n\n.how-to-play-steps li {\n margin-bottom: var(--space-sm);\n padding-left: var(--space-lg);\n position: relative;\n counter-increment: step-counter;\n}\n\n.how-to-play-steps li::before {\n content: counter(step-counter) \".\";\n position: absolute;\n left: 0;\n width: var(--space-md);\n text-align: right;\n font-weight: 600;\n color: var(--color-text-primary);\n}\n\n.how-to-play-steps li:last-child {\n margin-bottom: 0;\n}\n\n@keyframes howToPlaySlideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Leave Game Container (Story 11.5, Story 18.6) */\n.leave-game-container {\n text-align: center;\n padding: var(--space-md);\n /* Story 18.6: Sticky positioning for mobile */\n position: sticky;\n bottom: 0;\n background: linear-gradient(to top, var(--color-bg-card), transparent);\n z-index: var(--z-controls, 10);\n}\n\n.leave-game-container.hidden {\n display: none;\n}\n\n/* Story 18.6: Remove gradient background in dark theme (matching admin-controls) */\nbody.theme-dark .leave-game-container {\n background: transparent;\n}\n\n.btn-leave {\n opacity: 0.7;\n transition: opacity 0.2s ease;\n}\n\n.btn-leave:hover {\n opacity: 1;\n}\n\n/* Admin Controls (Story 3.5) */\n.admin-controls {\n padding: var(--space-lg) var(--space-md);\n text-align: center;\n background: linear-gradient(to top, var(--color-bg-card), transparent);\n position: sticky;\n bottom: 0;\n}\n\n.admin-controls.hidden {\n display: none;\n}\n\n/* Story 9.10: Remove gradient background in dark theme */\nbody.theme-dark .admin-controls {\n background: transparent;\n}\n\n.btn-large {\n min-height: 56px;\n font-size: var(--font-size-xl);\n padding: var(--space-md) var(--space-xl);\n}\n\n.btn-full-width {\n width: 100%;\n}\n\n/* .btn-icon margin removed - .btn already uses flexbox gap for spacing */\n\n.admin-hint {\n margin-top: var(--space-sm);\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n}\n\n/* Admin page modal and actions */\n.admin-lobby-actions {\n text-align: center;\n margin-top: var(--space-lg);\n}\n\n/* Admin badge styling (Story 16.8) */\n.admin-badge {\n font-size: var(--font-size-sm);\n color: var(--color-warning);\n margin-left: var(--space-xs);\n}\n\n/* Player count styling for admin lobby (legacy - kept for backwards compat) */\n.lobby-player-count-container {\n text-align: center;\n margin-bottom: var(--space-md);\n}\n\n/* =====================================================\n Admin Lobby - Analytics Layout (Story 2.3 restructure)\n ===================================================== */\n\n/* Lobby Stats Grid - 2 column layout like analytics */\n.lobby-stats-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-md);\n margin-bottom: var(--space-lg);\n}\n\n/* Clickable stat card (dashboard link) */\n.stat-card--clickable {\n display: block;\n text-decoration: none;\n cursor: pointer;\n margin-bottom: var(--space-lg);\n}\n\n.stat-card--clickable:hover {\n border-color: var(--color-accent-secondary);\n}\n\n.dashboard-hint-card {\n background: rgba(0, 245, 255, 0.05);\n border-color: var(--color-accent-secondary);\n}\n\n/* QR Section - centered card with consistent styling */\n.qr-section {\n text-align: center;\n padding: var(--space-xl) var(--space-lg);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-lg);\n}\n\n.qr-section .qr-container {\n display: inline-block;\n padding: var(--space-md);\n background: #ffffff;\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n}\n\n.qr-hint {\n font-size: 1rem;\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-sm);\n}\n\n.qr-url-display {\n font-family: 'Outfit', sans-serif;\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--color-accent-secondary);\n word-break: break-all;\n}\n\n/* Player List Section - consistent with analytics sections */\n.player-list-section {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-lg);\n}\n\n.section-subheader {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-size: 1rem;\n font-weight: 600;\n color: var(--color-text-white);\n margin-bottom: var(--space-md);\n}\n\n.section-subheader .section-icon {\n font-size: 1.25rem;\n}\n\n/* Player Cards Grid - responsive grid layout */\n.player-cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: var(--space-sm);\n}\n\n/* Player card in grid layout */\n.player-cards-grid .player-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--space-md);\n min-height: 80px;\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n text-align: center;\n transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.player-cards-grid .player-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(157, 78, 221, 0.2);\n}\n\n.player-cards-grid .player-card.is-new {\n background: rgba(57, 255, 20, 0.1);\n border-color: var(--color-success-neon);\n animation: playerCardJoin 0.5s ease-out;\n}\n\n@keyframes playerCardJoin {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.player-cards-grid .player-card--disconnected {\n opacity: 0.5;\n filter: grayscale(0.3);\n}\n\n.player-cards-grid .player-name {\n font-size: var(--font-size-md);\n font-weight: 600;\n color: var(--color-text-white);\n margin-bottom: var(--space-xs);\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n flex-wrap: wrap;\n justify-content: center;\n}\n\n.player-cards-grid .admin-badge {\n font-size: 1rem;\n}\n\n.player-cards-grid .away-badge {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n display: block;\n width: 100%;\n}\n\n/* Kick player button for disconnected players (#659) */\n.kick-player-btn {\n position: relative;\n background: none;\n border: 1px solid var(--color-border-dark);\n color: var(--color-text-muted);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n font-size: 1rem;\n line-height: 1;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: var(--space-xs);\n padding: 0;\n transition: all 0.15s ease;\n}\n\n/* #1759: expand the tap target to the 44px iOS/Android guideline without\n growing the 24px visual, so it's reliably hittable inside the tappable row. */\n.kick-player-btn::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 44px;\n height: 44px;\n transform: translate(-50%, -50%);\n}\n\n.kick-player-btn:hover {\n background: var(--color-error);\n color: white;\n border-color: var(--color-error);\n}\n\n/* Lobby Actions */\n.lobby-actions {\n margin-top: var(--space-lg);\n padding-top: var(--space-md);\n border-top: 1px solid var(--color-border-dark);\n}\n\n/* =====================================================\n Mobile-Optimized Compact Lobby Layout\n ===================================================== */\n\n/* Compact header with inline badges */\n.lobby-header-compact {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n text-align: left;\n}\n\n.section-header--inline {\n margin-bottom: 0;\n flex: 1;\n min-width: 120px;\n text-align: left;\n}\n\n/* Stat Badge Bar */\n.stat-badge-bar {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n}\n\n.stat-badge {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-sm);\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n font-size: 0.875rem;\n}\n\n.stat-badge-icon {\n font-size: 1rem;\n}\n\n.stat-badge-value {\n font-weight: 600;\n color: var(--color-accent-secondary);\n}\n\n.stat-badge--status .stat-badge-value {\n color: var(--color-text-white);\n}\n\n/* Compact QR Section */\n.qr-section--compact {\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.qr-section--compact .qr-container {\n padding: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n\n.qr-section--compact #qr-code {\n width: 180px !important;\n height: 180px !important;\n}\n\n.qr-section--compact #qr-code img,\n.qr-section--compact #qr-code canvas {\n width: 180px !important;\n height: 180px !important;\n}\n\n.qr-section--compact .qr-hint {\n font-size: 0.875rem;\n margin-bottom: var(--space-xs);\n}\n\n.qr-url-display--compact {\n font-size: 0.75rem;\n margin-bottom: var(--space-sm);\n}\n\n/* Inline Dashboard Link */\n.dashboard-link {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-sm);\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid var(--color-accent-secondary);\n border-radius: var(--radius-md);\n color: var(--color-accent-secondary);\n text-decoration: none;\n font-size: 0.875rem;\n transition: all 0.2s ease;\n}\n\n.dashboard-link:hover {\n background: rgba(0, 245, 255, 0.2);\n}\n\n.dashboard-link-arrow {\n opacity: 0.7;\n}\n\n/* Compact Player List */\n.player-list-section--compact {\n padding: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n\n.section-subheader--compact {\n font-size: 0.875rem;\n margin-bottom: var(--space-sm);\n}\n\n/* Inline Empty State */\n.empty-state-inline {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n color: var(--color-text-neon-muted);\n font-size: 0.875rem;\n text-align: center;\n}\n\n/* Sticky Lobby Actions */\n.lobby-actions--sticky {\n position: sticky;\n bottom: 0;\n margin: 0 calc(-1 * var(--space-md));\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-primary);\n border-top: 1px solid var(--color-border-dark);\n z-index: 10;\n display: flex;\n flex-direction: column;\n gap: var(--space-sm, 8px);\n}\n\n/* Desktop: Keep larger layout */\n@media (min-width: 481px) {\n .qr-section--compact #qr-code,\n .qr-section--compact #qr-code img,\n .qr-section--compact #qr-code canvas {\n width: 240px !important;\n height: 240px !important;\n }\n\n .qr-section--compact {\n padding: var(--space-lg);\n }\n\n .lobby-actions--sticky {\n position: relative;\n margin: var(--space-lg) 0 0 0;\n padding: var(--space-md) 0 0 0;\n background: transparent;\n }\n}\n\n/* =====================================================\n Lobby View - Shared Styles (Admin & Player)\n ===================================================== */\n\n/* Lobby Wordmark Header (without analytics icon) */\n.lobby-wordmark-header {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--space-md) var(--space-md) var(--space-sm);\n padding-top: env(safe-area-inset-top, 16px);\n}\n\n.lobby-wordmark-header .wordmark {\n font-size: 2rem;\n}\n\n/* Compact Lobby Container */\n.lobby-container--compact {\n flex: 1;\n padding: 0 var(--space-sm) var(--space-2xl);\n max-width: 500px;\n margin: 0 auto;\n width: 100%;\n}\n\n/* Lobby sections use the same collapsible pattern */\n.lobby-container--compact .section-collapsible {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n overflow: hidden;\n}\n\n.lobby-container--compact .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.lobby-container--compact .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.lobby-container--compact .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-text-neon-muted);\n padding: 2px 8px;\n background: rgba(255, 255, 255, 0.05);\n border-radius: var(--radius-sm);\n}\n\n.lobby-container--compact .section-toggle {\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n margin-left: var(--space-sm);\n}\n\n/* Push toggle to right when no summary present (toggle is 3rd child) */\n.lobby-container--compact .section-header-collapsible > .section-toggle:nth-child(3) {\n margin-left: auto;\n}\n\n.lobby-container--compact .section-collapsible:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n.lobby-container--compact .section-content {\n padding: 0 var(--space-md) var(--space-md);\n}\n\n.lobby-container--compact .section-collapsible.collapsed .section-content {\n display: none;\n}\n\n/* Compact Status (for non-admin players) */\n.lobby-status-compact {\n text-align: center;\n padding: var(--space-md);\n color: var(--color-text-neon-muted);\n font-size: 0.875rem;\n}\n\n/* Compact How to Play Steps */\n.how-to-play-steps-compact {\n list-style: decimal;\n padding-left: var(--space-lg);\n margin: 0;\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n}\n\n.how-to-play-steps-compact li {\n padding: var(--space-xs) 0;\n}\n\n/* Stat Badge for Difficulty */\n.stat-badge--difficulty {\n font-size: 0.75rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.stat-badge--difficulty:empty {\n display: none;\n}\n\n/* =====================================================\n Admin Page - Collapsible Sections & Compact Controls\n ===================================================== */\n\n/* Collapsible sections for admin (reuse analytics pattern) */\n.admin-content .section-collapsible {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n overflow: hidden;\n}\n\n.admin-content .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.admin-content .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.admin-content .section-header-collapsible .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.1);\n padding: 2px 8px;\n border-radius: var(--radius-sm);\n}\n\n.admin-content .section-header-collapsible .section-toggle {\n margin-left: var(--space-sm);\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n}\n\n.admin-content .section-collapsible:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n.admin-content .section-collapsible .section-content {\n padding: 0 var(--space-md) var(--space-md);\n}\n\n.admin-content .section-collapsible.collapsed .section-content {\n display: none;\n}\n\n/* Setting rows - compact horizontal layout */\n.setting-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--space-xs) 0;\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n.setting-row:last-child {\n border-bottom: none;\n}\n\n.setting-group {\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n padding-bottom: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n\n.setting-group:last-child {\n border-bottom: none;\n}\n\n.setting-group .setting-row {\n border-bottom: none;\n}\n\n.tts-group-title {\n font-size: 0.7rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-text-muted);\n margin: 0 0 var(--space-xs) 0;\n opacity: 0.8;\n}\n\n.setting-hint {\n font-size: 0.7rem;\n color: var(--color-text-muted);\n margin: 0 0 var(--space-xs) calc(var(--space-xs) + 24px);\n line-height: 1.3;\n opacity: 0.75;\n}\n\nbody.theme-dark .setting-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* #1138 cleanup: .ha-entity-list rules removed with the legacy flat\n #ha-entities info section (deleted from admin.html). */\n\n.setting-label {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n font-size: 0.875rem;\n color: var(--color-text-white);\n}\n\n.setting-icon {\n font-size: 0.875rem;\n}\n\n/* Chip group - compact inline buttons */\n.chip-group {\n display: flex;\n gap: 4px;\n}\n\n.chip {\n padding: 4px 10px;\n font-size: 0.75rem;\n font-weight: 500;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-sm);\n color: var(--color-text-neon-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chip:hover {\n background: rgba(255, 255, 255, 0.1);\n color: var(--color-text-white);\n}\n\n.chip.chip--active {\n background: rgba(0, 245, 255, 0.2);\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n}\n\n/* Compact toggle switch */\n.toggle-compact {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.toggle-compact input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-switch-compact {\n width: 36px;\n height: 20px;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 10px;\n position: relative;\n transition: background 0.2s ease;\n}\n\n.toggle-switch-compact::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n background: var(--color-text-neon-muted);\n border-radius: 50%;\n transition: all 0.2s ease;\n}\n\n.toggle-compact input:checked + .toggle-switch-compact {\n background: rgba(0, 245, 255, 0.3);\n}\n\n.toggle-compact input:checked + .toggle-switch-compact::after {\n left: 18px;\n background: var(--color-accent-secondary);\n}\n\n/* Admin actions - sticky footer */\n.admin-actions {\n position: sticky;\n bottom: 0;\n background: var(--color-bg-primary);\n padding: var(--space-sm) 0;\n margin-top: var(--space-sm);\n}\n\n.admin-actions .status-error {\n margin-bottom: var(--space-xs);\n font-size: 0.875rem;\n}\n\n/* Modal styles */\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.modal.hidden {\n display: none;\n}\n\n.modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n}\n\n.modal-content {\n position: relative;\n background: var(--color-bg-white);\n padding: var(--space-lg);\n border-radius: var(--radius-lg);\n max-width: 400px;\n width: 90%;\n animation: modalFadeIn var(--transition-fast);\n}\n\n.modal-content h2 {\n margin-bottom: var(--space-sm);\n font-size: var(--font-size-xl);\n}\n\n.modal-content p {\n margin-bottom: var(--space-md);\n color: var(--color-text-muted);\n}\n\n.modal-actions {\n display: flex;\n gap: var(--space-sm);\n margin-top: var(--space-lg);\n}\n\n.modal-actions .btn {\n flex: 1;\n}\n\n/* Game placeholder (Epic 4 prep) */\n.game-placeholder {\n text-align: center;\n padding: var(--space-2xl) var(--space-lg);\n}\n\n.game-placeholder h1 {\n font-size: var(--font-size-3xl);\n margin-bottom: var(--space-md);\n color: var(--color-text-primary);\n}\n\n.game-placeholder p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* Reveal placeholder (Story 3.6 / Epic 4 prep) */\n.reveal-placeholder {\n text-align: center;\n padding: var(--space-2xl) var(--space-lg);\n}\n\n.reveal-placeholder h1 {\n font-size: var(--font-size-4xl);\n margin-bottom: var(--space-md);\n color: var(--color-text-primary);\n}\n\n.reveal-placeholder p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* End View (Story 3.6) */\n.end-container {\n text-align: center;\n padding: var(--space-2xl) var(--space-lg);\n}\n\n.end-icon {\n font-size: var(--font-size-timer);\n margin-bottom: var(--space-md);\n}\n\n.end-container h1 {\n font-size: var(--font-size-3xl);\n margin-bottom: var(--space-sm);\n color: var(--color-text-primary);\n}\n\n.end-message {\n font-size: var(--font-size-lg);\n color: #4b5563;\n margin-bottom: var(--space-sm);\n}\n\n/* ==========================================\n Game View Styles (Story 4.2)\n ========================================== */\n\n/* Game View Container */\n.game-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n /* Edge-to-edge with minimal padding (Story 9.6) */\n padding: var(--space-sm);\n padding-bottom: max(var(--space-md), env(safe-area-inset-bottom));\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Sticky bar: Round info + Timer always visible (Issue #654) */\n.game-sticky-bar {\n position: sticky;\n top: 0;\n z-index: 50;\n width: 100%;\n padding: var(--space-xs) var(--space-sm);\n background: var(--color-bg-light);\n border-bottom: 1px solid var(--color-border-light);\n}\n\nbody.theme-dark .game-sticky-bar {\n background: var(--color-bg-primary);\n border-bottom-color: var(--color-border-dark);\n}\n\n.game-sticky-bar .timer-container {\n margin-bottom: 0;\n}\n\n.game-sticky-bar .timer {\n font-size: 2rem;\n}\n\n/* Game Header - Compact (matches lobby header pattern) */\n.game-header-compact {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-bottom: var(--space-sm);\n padding: 0 var(--space-xs);\n}\n\n.game-header-left {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.game-header-left .section-icon {\n font-size: 1rem;\n}\n\n.round-indicator-text {\n font-size: var(--font-size-sm);\n font-weight: 600;\n color: var(--color-text-white);\n}\n\n/* Steal badge styling */\n.stat-badge--steal {\n background: linear-gradient(135deg, var(--color-purple-primary), var(--color-purple-secondary, #9333ea));\n animation: steal-badge-pulse 2s ease-in-out infinite;\n}\n\n@keyframes steal-badge-pulse {\n 0%, 100% {\n box-shadow: 0 0 8px rgba(147, 51, 234, 0.5);\n }\n 50% {\n box-shadow: 0 0 12px rgba(147, 51, 234, 0.8);\n }\n}\n\n/* Last Round Banner - Inline */\n.last-round-banner {\n background: linear-gradient(135deg, var(--color-warning), var(--color-warning-dark));\n color: var(--color-text-white);\n padding: var(--space-xs) var(--space-md);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--space-sm);\n text-align: center;\n width: 100%;\n animation: pulse 2s infinite;\n}\n\n/* Intro Round Badge (Issue #23) */\n.intro-badge {\n display: inline-flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-lg);\n background: linear-gradient(135deg, #ffd700, #ff6b00);\n color: #000;\n border-radius: var(--radius-pill);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-bold);\n text-transform: uppercase;\n letter-spacing: 1px;\n animation: intro-pulse 1.5s ease-in-out infinite;\n margin-bottom: var(--space-md);\n box-shadow: 0 0 20px rgba(255, 215, 0, 0.5), 0 0 40px rgba(255, 107, 0, 0.3);\n}\n\n/* Intro Splash Overlay */\n.intro-splash {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.85);\n animation: intro-splash-in 0.3s ease-out, intro-splash-out 0.5s ease-in 1.5s forwards;\n pointer-events: none;\n}\n\n.intro-splash-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n animation: intro-splash-scale 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n.intro-splash-icon {\n font-size: 80px;\n filter: drop-shadow(0 0 30px rgba(255, 215, 0, 0.8));\n}\n\n.intro-splash-text {\n font-size: 36px;\n font-weight: 900;\n text-transform: uppercase;\n letter-spacing: 4px;\n background: linear-gradient(135deg, #ffd700, #ff6b00);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n text-shadow: none;\n}\n\n.intro-splash-hint {\n font-size: 18px;\n color: rgba(255, 255, 255, 0.7);\n letter-spacing: 1px;\n}\n\n@keyframes intro-splash-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes intro-splash-out {\n from { opacity: 1; }\n to { opacity: 0; visibility: hidden; }\n}\n\n@keyframes intro-splash-scale {\n from { transform: scale(0.5); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n.intro-badge-icon {\n font-size: var(--font-size-md);\n}\n\n.intro-badge--large {\n font-size: var(--font-size-lg);\n padding: var(--space-sm) var(--space-lg);\n margin-left: var(--space-md);\n}\n\n.intro-badge--large .intro-badge-icon {\n font-size: var(--font-size-xl);\n}\n\n.intro-badge--stopped {\n background: linear-gradient(135deg, #666, #444);\n color: var(--color-text-white);\n animation: none;\n}\n\n@keyframes intro-pulse {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.05); opacity: 0.9; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .intro-badge {\n animation: none;\n }\n}\n\n/* Issue #442: Closest Wins badge */\n.closest-wins-badge {\n background: linear-gradient(135deg, #00c6ff, #0072ff);\n box-shadow: 0 0 20px rgba(0, 198, 255, 0.5), 0 0 40px rgba(0, 114, 255, 0.3);\n}\n\n/* Issue #442: Highlight closest winner in result cards */\n.result-card.is-closest-winner {\n border: 2px solid #00c6ff;\n box-shadow: 0 0 12px rgba(0, 198, 255, 0.4);\n}\n\n.closest-winner-badge {\n margin-left: var(--space-sm);\n font-size: var(--font-size-sm);\n}\n\n/* Album Cover (compact, matches reveal size) */\n.album-cover-container {\n position: relative;\n width: 150px;\n height: 150px;\n margin-bottom: var(--space-md);\n}\n\n.album-cover {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg);\n filter: blur(20px);\n}\n\n/* Responsive album cover */\n@media (max-width: 360px) {\n .album-cover-container {\n width: 120px;\n height: 120px;\n }\n}\n\n@media (min-width: 768px) {\n .album-cover-container {\n width: 180px;\n height: 180px;\n }\n}\n\n.album-loading {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-bg-card-alt);\n border-radius: var(--radius-xl);\n}\n\n.loading-spinner {\n width: 40px;\n height: 40px;\n border: 4px solid var(--color-border-light);\n border-top-color: var(--color-accent-brand);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n/* Timer */\n.timer-container {\n margin-bottom: var(--space-lg);\n}\n\n.timer {\n font-size: var(--font-size-timer);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n font-variant-numeric: tabular-nums;\n transition: color var(--transition-normal);\n}\n\n.timer--warning {\n color: var(--color-warning);\n animation: timer-pulse-subtle 1s ease-in-out infinite;\n}\n\n.timer--critical {\n color: var(--color-error);\n animation: timer-pulse-intense 0.5s ease-in-out infinite;\n}\n\n/* Timer animations */\n@keyframes timer-pulse-subtle {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.8; }\n}\n\n@keyframes timer-pulse-intense {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.9; transform: scale(1.05); }\n}\n\n/* Reduced motion support for timer */\n@media (prefers-reduced-motion: reduce) {\n .timer--warning,\n .timer--critical {\n animation: none;\n }\n}\n\n/* Submission Tracker (Story 4.4) - Aligned with analytics style */\n.submission-tracker {\n width: 100%;\n margin-bottom: var(--space-md);\n padding: var(--space-sm);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n}\n\n/* Player Indicators Row */\n.submitted-players {\n display: flex;\n gap: var(--space-sm);\n overflow-x: auto;\n padding: var(--space-xs) 0;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none; /* Firefox */\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.submitted-players::-webkit-scrollbar {\n display: none; /* Chrome, Safari */\n}\n\n/* Player Indicator */\n.player-indicator {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 48px;\n flex-shrink: 0;\n position: relative;\n}\n\n/* Player badges for bet and steal */\n.player-badge {\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n z-index: 1;\n}\n\n/* Bet badge - upper right */\n.player-badge--bet {\n top: -2px;\n right: 2px;\n background: var(--color-warning);\n}\n\n/* Steal badge - upper left */\n.player-badge--steal {\n top: -2px;\n left: 2px;\n background: linear-gradient(135deg, var(--color-purple-primary), var(--color-purple-secondary, #9333ea));\n}\n\n.player-avatar {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--color-border-light);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n border: 2px solid transparent;\n transition: all var(--transition-normal);\n}\n\n.player-indicator.is-submitted .player-avatar {\n background: var(--color-success);\n color: var(--color-text-white);\n border-color: var(--color-success-hover);\n animation: submitted-pulse var(--transition-slow) ease-out;\n}\n\n.player-indicator.is-submitted .player-initials {\n display: none;\n}\n\n.player-indicator.is-submitted .player-avatar::after {\n content: '\u2713';\n font-size: var(--font-size-md);\n}\n\n@keyframes submitted-pulse {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.2); }\n 100% { transform: scale(1); }\n}\n\n.player-indicator .player-name {\n font-size: var(--font-size-xs);\n color: var(--color-text-muted);\n max-width: 48px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: center;\n margin-top: var(--space-xs);\n}\n\n/* Current Player Highlight */\n.player-indicator.is-current-player .player-avatar {\n border-color: var(--color-accent-brand);\n}\n\n.player-indicator.is-current-player .player-name {\n font-weight: var(--font-weight-semibold);\n color: var(--color-accent-brand);\n}\n\n/* Disconnected player indicator (Story 11.4) */\n.player-indicator--disconnected {\n opacity: 0.4;\n}\n\n/* All Submitted State */\n.submission-tracker.all-submitted {\n border-color: var(--color-success);\n background: rgba(16, 185, 129, 0.1);\n}\n\n/* Artist Challenge (Story 20.5) - Uses card-section base */\n.artist-challenge {\n width: 100%;\n}\n\n.artist-challenge .section-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n flex-wrap: wrap;\n}\n\n/* Bonus badge in header */\n.stat-badge--bonus {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 700;\n margin-left: auto;\n}\n\n/* Artist options grid */\n.artist-options-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: 1fr;\n gap: var(--space-sm);\n}\n\n@media (max-width: 320px) {\n .artist-options-grid {\n grid-template-columns: 1fr;\n }\n}\n\n.artist-option-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 72px;\n padding: var(--space-sm) var(--space-md);\n border: 2px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n color: var(--color-text);\n font-size: var(--font-size-md);\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.artist-option-btn:active {\n transform: scale(0.98);\n}\n\n.artist-option-btn.is-loading {\n animation: artistPulse 1s infinite;\n}\n\n@keyframes artistPulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n}\n\n.artist-option-btn.is-correct,\n.artist-option-btn.is-winner {\n background: var(--color-success);\n border-color: var(--color-success);\n color: white;\n}\n\n.artist-option-btn.is-winner {\n box-shadow: var(--glow-primary);\n}\n\n.artist-option-btn.is-wrong {\n animation: artistWrongFlash 0.5s ease;\n}\n\n.artist-option-btn.is-wrong.is-selected {\n background: var(--color-error);\n border-color: var(--color-error);\n color: white;\n animation: none;\n opacity: 0.8;\n}\n\n@keyframes artistWrongFlash {\n 0%, 100% { background: var(--color-surface); }\n 50% { background: rgba(239, 68, 68, 0.3); }\n}\n\n.artist-option-btn.is-disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.artist-points-badge {\n position: absolute;\n right: var(--space-sm);\n font-size: var(--font-size-sm);\n font-weight: 700;\n color: white;\n background: rgba(0, 0, 0, 0.2);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.artist-result {\n margin-top: var(--space-md);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n text-align: center;\n font-weight: 500;\n}\n\n.artist-result.is-winner {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n}\n\n.artist-result.is-late {\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n color: var(--color-text-muted);\n}\n\n/* Dark mode - artist-challenge inherits from card-section */\nbody.theme-dark .artist-option-btn {\n background: rgba(255, 255, 255, 0.05);\n border-color: var(--color-border-neon);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .artist-option-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .artist-option-btn.is-loading {\n animation: none;\n opacity: 0.7;\n }\n\n .artist-option-btn.is-wrong {\n animation: none;\n opacity: 0.5;\n }\n}\n\n/* Artist Reveal Section (Story 20.6) */\n.artist-reveal-section {\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n border-radius: var(--radius-lg);\n}\n\n/* Center the artist name and winner content, not the header */\n.artist-reveal-section .section-content-padded {\n text-align: center;\n}\n\n.artist-reveal-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: var(--space-xs);\n}\n\n.artist-reveal-name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n color: var(--color-text);\n margin-bottom: var(--space-sm);\n}\n\n.artist-reveal-winner {\n font-size: var(--font-size-md);\n padding: var(--space-xs) var(--space-md);\n border-radius: var(--radius-md);\n display: inline-block;\n}\n\n.artist-reveal-winner.is-you {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 600;\n}\n\n.artist-reveal-winner.is-other {\n color: var(--color-text-muted);\n}\n\n.artist-reveal-no-winner {\n color: var(--color-text-muted);\n font-style: italic;\n}\n\n/* Dark mode */\nbody.theme-dark .artist-reveal-section {\n background: var(--color-dark-surface-alt, #16213e);\n}\n\n/* Artist Bonus Row in Score Breakdown (Story 20.6) */\n.artist-bonus-row .result-value {\n color: var(--color-success);\n font-weight: 600;\n}\n\n/* Artist Badge on Player Cards (Story 20.6) */\n.player-card-artist-badge {\n font-size: var(--font-size-xs);\n color: var(--color-success);\n background: rgba(34, 197, 94, 0.1);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n margin-left: var(--space-xs);\n}\n\n/* ============================================\n Movie Challenge (Issue #28) - Uses card-section base\n ============================================ */\n.movie-challenge {\n width: 100%;\n}\n\n.movie-challenge .section-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n flex-wrap: wrap;\n}\n\n/* Movie options grid - 1 column default (titles are longer) */\n.movie-options-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: var(--space-sm);\n}\n\n@media (min-width: 480px) {\n .movie-options-grid {\n grid-template-columns: 1fr 1fr;\n }\n}\n\n.movie-option-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 44px;\n padding: var(--space-sm) var(--space-md);\n border: 2px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n color: var(--color-text);\n font-size: var(--font-size-md);\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n text-align: center;\n}\n\n.movie-option-btn:active {\n transform: scale(0.98);\n}\n\n.movie-option-btn.is-loading {\n animation: moviePulse 1s infinite;\n}\n\n@keyframes moviePulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n}\n\n.movie-option-btn.is-correct,\n.movie-option-btn.is-winner {\n background: var(--color-success);\n border-color: var(--color-success);\n color: white;\n}\n\n.movie-option-btn.is-winner {\n box-shadow: var(--glow-primary);\n}\n\n.movie-option-btn.is-wrong {\n animation: movieWrongFlash 0.5s ease;\n}\n\n.movie-option-btn.is-wrong.is-selected {\n background: var(--color-error);\n border-color: var(--color-error);\n color: white;\n animation: none;\n opacity: 0.8;\n}\n\n@keyframes movieWrongFlash {\n 0%, 100% { background: var(--color-surface); }\n 50% { background: rgba(239, 68, 68, 0.3); }\n}\n\n.movie-option-btn.is-disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.movie-rank-badge {\n position: absolute;\n right: var(--space-sm);\n font-size: var(--font-size-sm);\n font-weight: 700;\n color: white;\n background: rgba(0, 0, 0, 0.2);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.movie-result {\n margin-top: var(--space-md);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n text-align: center;\n font-weight: 500;\n}\n\n.movie-result.is-winner {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n}\n\n.movie-result.is-late {\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n color: var(--color-text-muted);\n}\n\n/* Dark mode - movie-challenge inherits from card-section */\nbody.theme-dark .movie-option-btn {\n background: rgba(255, 255, 255, 0.05);\n border-color: var(--color-border-neon);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .movie-option-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .movie-option-btn.is-loading {\n animation: none;\n opacity: 0.7;\n }\n\n .movie-option-btn.is-wrong {\n animation: none;\n opacity: 0.5;\n }\n}\n\n/* Movie Reveal Section (Issue #28) */\n.movie-reveal-section {\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n border-radius: var(--radius-lg);\n}\n\n.movie-reveal-section .section-content-padded {\n text-align: center;\n}\n\n.movie-reveal-name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n color: var(--color-text);\n margin-bottom: var(--space-sm);\n}\n\n.movie-reveal-winners {\n margin-top: var(--space-sm);\n}\n\n.movie-reveal-winners-title {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: var(--space-xs);\n}\n\n.movie-reveal-winner-entry {\n font-size: var(--font-size-md);\n padding: var(--space-xs) var(--space-md);\n border-radius: var(--radius-md);\n display: inline-block;\n margin: 2px 4px;\n}\n\n.movie-reveal-winner-entry.is-you {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 600;\n}\n\n.movie-reveal-winner-entry.is-other {\n color: var(--color-text-muted);\n}\n\n.movie-reveal-no-winner {\n color: var(--color-text-muted);\n font-style: italic;\n font-size: var(--font-size-md);\n padding: var(--space-xs) var(--space-md);\n}\n\n/* Dark mode */\nbody.theme-dark .movie-reveal-section {\n background: var(--color-dark-surface-alt, #16213e);\n}\n\n/* Year Selector (Story 4.3) - Uses card-section base */\n.year-selector-section {\n width: 100%;\n /* Safe area for submit button (Story 9.6) */\n padding-bottom: max(var(--space-md), env(safe-area-inset-bottom));\n}\n\n.year-selector {\n width: 100%;\n}\n\n.year-display {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n}\n\n/* +/- buttons for precise year adjustment (Issue #662) */\n.year-adjust-btn {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n border: 2px solid var(--color-border-dark);\n background: transparent;\n color: var(--color-text-white);\n font-size: 1.5rem;\n font-weight: bold;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n -webkit-tap-highlight-color: transparent;\n touch-action: manipulation;\n user-select: none;\n flex-shrink: 0;\n}\n\n.year-adjust-btn:active {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n transform: scale(0.95);\n}\n\n.year-adjust-btn:disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n\n#selected-year {\n font-size: var(--font-size-year);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n font-variant-numeric: tabular-nums;\n}\n\n/* Slider Container */\n.slider-container {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-bottom: var(--space-lg);\n}\n\n.slider-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n min-width: 40px;\n}\n\n.slider-label--min {\n text-align: right;\n}\n\n.slider-label--max {\n text-align: left;\n}\n\n/* Custom Range Slider */\n.year-slider {\n -webkit-appearance: none;\n appearance: none;\n flex: 1;\n height: var(--space-sm);\n background: var(--color-border-light);\n border-radius: var(--radius-sm);\n outline: none;\n}\n\n.year-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 44px;\n height: 44px;\n background: var(--color-accent-brand);\n border-radius: 50%;\n cursor: pointer;\n border: 4px solid var(--color-bg-white);\n box-shadow: var(--shadow-md);\n transition: transform 0.1s ease;\n}\n\n.year-slider::-webkit-slider-thumb:active {\n transform: scale(1.1);\n}\n\n.year-slider::-moz-range-thumb {\n width: 44px;\n height: 44px;\n background: var(--color-accent-brand);\n border-radius: 50%;\n cursor: pointer;\n border: 4px solid var(--color-bg-white);\n box-shadow: var(--shadow-md);\n}\n\n/* Submit Button */\n.submit-btn {\n width: 100%;\n padding: var(--space-lg) var(--space-lg);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n background: var(--color-accent-brand);\n border: none;\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n min-height: 56px;\n}\n\n.submit-btn:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.submit-btn:active {\n transform: scale(0.98);\n}\n\n.submit-btn:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n transform: none;\n}\n\n.submit-btn.is-loading {\n color: transparent;\n position: relative;\n}\n\n.submit-btn.is-loading::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n border: 3px solid var(--color-bg-white);\n border-top-color: transparent;\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n left: 50%;\n top: 50%;\n margin-left: -12px;\n margin-top: -12px;\n}\n\n.submit-btn.is-error {\n background: var(--color-error);\n}\n\n/* Submitted Confirmation */\n.submitted-confirmation {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n background: var(--color-success);\n color: var(--color-text-white);\n border-radius: var(--radius-lg);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n}\n\n.submitted-confirmation .checkmark {\n font-size: var(--font-size-2xl);\n}\n\n/* Submitted state for slider */\n.year-selector.is-submitted .year-slider {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.year-selector.is-submitted #selected-year {\n color: var(--color-text-muted);\n}\n\n/* Responsive adjustments for Game View */\n@media (max-width: 360px) {\n .album-cover-container {\n max-width: 250px;\n }\n\n .timer {\n font-size: var(--font-size-2xl);\n }\n}\n\n@media (min-width: 768px) {\n .album-cover-container {\n max-width: 350px;\n }\n\n .timer {\n font-size: var(--font-size-hero);\n }\n}\n\n/* Tablet+ breakpoint (min-width for mobile-first) */\n@media (min-width: 768px) {\n body {\n max-width: 800px;\n margin: 0 auto;\n padding: var(--space-lg);\n }\n\n header h1 {\n font-size: var(--font-size-4xl);\n }\n\n .status-section h2,\n .card-section h2 {\n font-size: var(--font-size-lg);\n }\n\n .card-section {\n padding: var(--space-md) var(--space-lg);\n }\n}\n\n/* ============================================\n Reveal View (Story 4.6)\n ============================================ */\n\n.reveal-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--space-lg);\n width: 100%;\n margin: 0 auto;\n text-align: center;\n}\n\n/* Compact Reveal Container */\n.reveal-container--compact {\n padding: var(--space-md);\n gap: var(--space-sm);\n align-items: stretch;\n}\n\n/* Duel Reveal Container (round-reveal v2) \u2014 same stretch/padding behavior as\n --compact so every card-section has the same width. Default .reveal-container\n uses align-items:center which makes cards size to their content. */\n.reveal-container--duel {\n padding: var(--space-md);\n gap: var(--space-sm);\n align-items: stretch;\n text-align: left;\n}\n\n/* Compact Header Bar */\n.reveal-header-compact {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--space-xs) 0;\n margin-bottom: var(--space-xs);\n}\n\n.reveal-header-left {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.reveal-header-compact .section-icon {\n font-size: 1rem;\n}\n\n.reveal-header-compact .round-indicator-text {\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n}\n\n/* Song Hero - Album + Info side by side */\n.reveal-song-hero {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n padding: var(--space-sm);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n}\n\n.reveal-album-cover-compact {\n width: 80px;\n height: 80px;\n object-fit: cover;\n border-radius: var(--radius-md);\n flex-shrink: 0;\n}\n\n.reveal-song-info {\n flex: 1;\n min-width: 0;\n text-align: left;\n}\n\n.reveal-song-info .song-title {\n font-size: 1rem;\n font-weight: 600;\n color: var(--color-text-white);\n margin-bottom: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.reveal-song-info .song-artist {\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Year Section with Emotion */\n.reveal-year-section {\n text-align: center;\n padding: var(--space-sm) 0;\n}\n\n.reveal-emotion-inline {\n font-size: 1.25rem;\n font-weight: 700;\n margin-bottom: var(--space-xs);\n animation: reveal-emotion-entrance 0.5s ease-out;\n}\n\n.reveal-year-section .correct-year-label {\n font-size: 0.75rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-xs);\n}\n\n.reveal-year-section .correct-year {\n font-size: 3rem;\n}\n\n/* Personal Result - Compact */\n.personal-result-compact {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n}\n\n.result-content-inline {\n font-size: 0.875rem;\n color: var(--color-text-white);\n}\n\n/* Artist Reveal - Compact */\n.artist-reveal-compact {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n}\n\n.artist-reveal-icon {\n font-size: 1rem;\n}\n\n.artist-reveal-name-inline {\n font-weight: 600;\n color: var(--color-accent-secondary);\n}\n\n.artist-reveal-winner-inline {\n font-size: 0.75rem;\n color: var(--color-text-neon-muted);\n}\n\n.artist-reveal-winner-inline::before {\n content: \"\u2022\";\n margin-right: var(--space-xs);\n}\n\n/* Fun Fact Card Section */\n.fun-fact-section {\n text-align: left;\n}\n\n.fun-fact-section .fun-fact-text {\n font-size: 0.875rem;\n color: var(--color-text-white);\n line-height: 1.5;\n margin-bottom: var(--space-sm);\n}\n\n.fun-fact-section .song-rich-info {\n font-size: 0.75rem;\n color: var(--color-text-neon-muted);\n}\n\n/* Consistent section content padding */\n.section-content-padded {\n padding: 0 var(--space-md) var(--space-md);\n}\n\n/* Remove side padding when inside card-section (card already has padding) */\n.card-section .section-content-padded {\n padding: 0 0 var(--space-sm);\n}\n\n/* All Guesses Card Section */\n.guesses-section {\n text-align: left;\n}\n\n.reveal-results-grid {\n width: 100%;\n}\n\n/* Personal Result Card Section */\n.personal-result-section {\n text-align: left;\n}\n\n.personal-result-section .result-row {\n display: flex;\n justify-content: space-between;\n padding: var(--space-xs) 0;\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n.personal-result-section .result-row:last-child {\n border-bottom: none;\n}\n\n/* Artist Reveal Card Section */\n.artist-reveal-section {\n text-align: left;\n}\n\n.artist-reveal-section .artist-reveal-name {\n font-size: 1.25rem;\n font-weight: 700;\n color: var(--color-accent-secondary);\n margin-bottom: var(--space-xs);\n}\n\n.artist-reveal-section .artist-reveal-winner {\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n}\n\n/* Round Analytics Card Section */\n.round-analytics-section {\n width: 100%;\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n overflow: hidden;\n text-align: left;\n}\n\n.round-analytics-section .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.round-analytics-section .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.round-analytics-section .section-header-collapsible .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.1);\n padding: 2px 8px;\n border-radius: var(--radius-sm);\n}\n\n.round-analytics-section .section-header-collapsible .section-toggle {\n margin-left: var(--space-sm);\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n}\n\n.round-analytics-section .section-content {\n padding: 0 var(--space-md) var(--space-sm);\n}\n\n.round-analytics-section.collapsed .section-content {\n display: none;\n}\n\n.round-analytics-section:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n/* Legacy styles preserved */\n.reveal-round-info {\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n margin-bottom: var(--space-md);\n}\n\n/* Album Cover (smaller for reveal) - legacy */\n.reveal-album {\n margin-bottom: var(--space-lg);\n}\n\n.reveal-album-cover {\n width: 150px;\n height: 150px;\n object-fit: cover;\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg);\n}\n\n/* Correct Year */\n.correct-year-container {\n margin-bottom: var(--space-md);\n}\n\n.correct-year-label {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.correct-year {\n font-size: var(--font-size-hero);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-success);\n font-variant-numeric: tabular-nums;\n animation: reveal-pop var(--transition-slow) ease-out;\n}\n\n@keyframes reveal-pop {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 70% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n/* Song Info */\n.song-info {\n margin-bottom: var(--space-md);\n}\n\n.song-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n}\n\n.song-artist {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* Fun Fact + Rich Song Info Container */\n.fun-fact-container {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n background: var(--color-warning-light);\n padding: var(--space-md);\n border-radius: var(--radius-lg);\n margin-bottom: var(--space-lg);\n text-align: left;\n max-width: 100%;\n}\n\n.fun-fact-header {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n}\n\n.fun-fact-icon {\n font-size: var(--font-size-xl);\n flex-shrink: 0;\n}\n\n.fun-fact-text {\n font-size: var(--font-size-base);\n color: #92400e;\n line-height: 1.4;\n}\n\n/* Hide fun fact header when no fun fact text */\n.fun-fact-header:empty,\n.fun-fact-text:empty {\n display: none;\n}\n\n/* ============================================\n Rich Song Info (Story 14.3) - inside fun fact box\n ============================================ */\n\n.song-rich-info {\n text-align: left;\n}\n\n.song-rich-info:empty {\n display: none;\n}\n\n/* ============================================\n Song Info Badges - Unified Design\n All badges centered with consistent styling\n ============================================ */\n\n/* Shared badge container - centers all badge rows */\n.song-badges-row {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 1px solid rgba(120, 53, 15, 0.15);\n}\n\n.song-badges-row:first-child {\n border-top: none;\n padding-top: 0;\n}\n\n/* Base badge style - shared by all badge types */\n.song-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n border-radius: 20px;\n border: 1px solid;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n white-space: nowrap;\n}\n\n.song-badge-icon {\n font-size: 14px;\n line-height: 1;\n}\n\n/* Chart position badge - blue theme */\n.song-badge--chart {\n background: linear-gradient(135deg, #dbeafe, #bfdbfe);\n color: #1e40af;\n border-color: #93c5fd;\n}\n\n.song-badge--chart .chart-weeks {\n font-weight: normal;\n opacity: 0.8;\n font-size: 11px;\n}\n\n/* Certification badges */\n.song-badge--platinum {\n background: linear-gradient(135deg, #f1f5f9, #e2e8f0);\n color: #475569;\n border-color: #cbd5e1;\n}\n\n.song-badge--gold {\n background: linear-gradient(135deg, #fef3c7, #fde68a);\n color: #92400e;\n border-color: #fcd34d;\n}\n\n.song-badge--diamond {\n background: linear-gradient(135deg, #e0f2fe, #bae6fd);\n color: #0369a1;\n border-color: #7dd3fc;\n}\n\n/* Award badges - warm orange/amber theme */\n.song-badge--award {\n background: linear-gradient(135deg, #ffedd5, #fed7aa);\n color: #9a3412;\n border-color: #fdba74;\n}\n\n/* Special award variants */\n.song-badge--grammy {\n background: linear-gradient(135deg, #fef3c7, #fde68a);\n color: #78350f;\n border-color: #f59e0b;\n}\n\n.song-badge--eurovision {\n background: linear-gradient(135deg, #ede9fe, #ddd6fe);\n color: #5b21b6;\n border-color: #a78bfa;\n}\n\n.song-badge--oscar,\n.song-badge--academy {\n background: linear-gradient(135deg, #fef3c7, #fde68a);\n color: #78350f;\n border-color: #f59e0b;\n}\n\n.song-badge--halloffame {\n background: linear-gradient(135deg, #dbeafe, #bfdbfe);\n color: #1e40af;\n border-color: #60a5fa;\n}\n\n/* More awards indicator */\n.song-badges-more {\n font-size: var(--font-size-xs);\n color: #78350f;\n font-style: italic;\n opacity: 0.8;\n}\n\n/* ============================================\n Song Difficulty Rating (Story 15.1)\n ============================================ */\n\n.song-difficulty {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n justify-content: center;\n margin-top: var(--space-sm);\n opacity: 0;\n animation: fadeIn 0.5s ease-out forwards;\n animation-delay: 0.3s;\n}\n\n.difficulty-stars {\n font-size: 1.2rem;\n letter-spacing: 0.1em;\n}\n\n/* Easy (1-star): green glow */\n.difficulty-1 {\n color: var(--color-success-neon);\n text-shadow: 0 0 10px var(--color-success-neon);\n}\n\n/* Medium (2-star): yellow */\n.difficulty-2 {\n color: var(--color-warning);\n text-shadow: 0 0 10px var(--color-warning);\n}\n\n/* Hard (3-star): orange */\n.difficulty-3 {\n color: var(--color-warning-alt);\n text-shadow: 0 0 10px var(--color-warning-alt);\n}\n\n/* Extreme (4-star): red/pink neon */\n.difficulty-4 {\n color: var(--color-accent-primary);\n text-shadow: 0 0 10px var(--color-accent-primary);\n}\n\n.difficulty-label {\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: var(--font-size-sm);\n}\n\n.difficulty-accuracy {\n font-size: 0.85em;\n opacity: 0.7;\n}\n\n/* ============================================\n Superlatives / Fun Awards (Story 15.2)\n ============================================ */\n\n.superlatives-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--space-md);\n margin: var(--space-lg) 0;\n padding: 0 var(--space-md);\n}\n\n.superlative-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--space-md);\n min-width: 120px;\n max-width: 160px;\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.1);\n opacity: 0;\n animation: superlativeSlideIn 0.5s ease-out forwards;\n}\n\n@keyframes superlativeSlideIn {\n from {\n opacity: 0;\n transform: translateY(20px) scale(0.9);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n.superlative-emoji {\n font-size: 2rem;\n margin-bottom: var(--space-xs);\n}\n\n.superlative-title {\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: var(--font-size-xs);\n color: var(--color-accent-secondary);\n text-align: center;\n margin-bottom: var(--space-xs);\n}\n\n.superlative-player {\n font-weight: bold;\n font-size: var(--font-size-base);\n color: var(--color-dark-text-primary);\n text-align: center;\n margin-bottom: var(--space-xs);\n}\n\n.superlative-value {\n font-size: var(--font-size-sm);\n color: var(--color-dark-text-secondary);\n text-align: center;\n}\n\n/* Card-specific accent colors */\n.superlative-card--speed_demon {\n border-color: var(--color-warning);\n box-shadow: 0 0 15px rgba(245, 158, 11, 0.2);\n}\n\n.superlative-card--lucky_streak {\n border-color: var(--color-error);\n box-shadow: 0 0 15px rgba(239, 68, 68, 0.2);\n}\n\n.superlative-card--risk_taker {\n border-color: var(--color-purple-primary);\n box-shadow: 0 0 15px rgba(139, 92, 246, 0.2);\n}\n\n.superlative-card--clutch_player {\n border-color: var(--color-success-neon);\n box-shadow: 0 0 15px rgba(57, 255, 20, 0.2);\n}\n\n.superlative-card--close_calls {\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 15px rgba(0, 245, 255, 0.2);\n}\n\n/* ============================================\n Game Highlights Reel (Issue #75)\n ============================================ */\n\n.highlights-container {\n width: 100%;\n margin-top: var(--space-lg);\n margin-bottom: var(--space-lg);\n}\n\n.highlights-header {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n text-align: center;\n margin-bottom: var(--space-md);\n}\n\n.highlights-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n.highlight-card {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.1);\n opacity: 0;\n animation: highlightFadeIn 0.5s ease-out forwards;\n}\n\n@keyframes highlightFadeIn {\n from {\n opacity: 0;\n transform: translateX(-20px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n.highlight-emoji {\n font-size: 1.8rem;\n flex-shrink: 0;\n width: 48px;\n text-align: center;\n}\n\n.highlight-content {\n flex: 1;\n min-width: 0;\n}\n\n.highlight-text {\n font-size: var(--font-size-base);\n color: var(--color-dark-text-primary);\n line-height: 1.4;\n}\n\n.highlight-round {\n font-size: var(--font-size-xs);\n color: var(--color-dark-text-secondary);\n margin-top: var(--space-xs);\n}\n\n/* Mobile responsive */\n@media (max-width: 480px) {\n .highlight-card {\n padding: var(--space-sm);\n gap: var(--space-sm);\n }\n\n .highlight-emoji {\n font-size: 1.4rem;\n width: 36px;\n }\n\n .highlight-text {\n font-size: var(--font-size-sm);\n }\n}\n\n/* ============================================\n Round Analytics (Story 13.3)\n ============================================ */\n\n.round-analytics {\n width: 100%;\n margin-top: var(--space-lg);\n margin-bottom: var(--space-lg);\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n text-align: center;\n}\n\n.analytics-title {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n margin-bottom: var(--space-md);\n}\n\n/* Analytics stats - single row layout */\n.analytics-stats-row {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: var(--space-lg);\n margin-bottom: var(--space-xs);\n}\n\n.stat-primary {\n text-align: left;\n}\n\n.stat-primary .stat-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n display: block;\n margin-bottom: var(--space-xs);\n}\n\n.stat-primary .stat-value {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-secondary);\n}\n\n.stat-secondary {\n text-align: right;\n}\n\n.stat-secondary .stat-value {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-success);\n}\n\n.stat-secondary .stat-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n display: block;\n}\n\n.stat-comparison-line {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-md);\n}\n\n/* Histogram */\n.analytics-histogram {\n margin-bottom: var(--space-lg);\n}\n\n.histogram-title {\n font-size: var(--font-size-base);\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-sm);\n}\n\n/* #1178: per-player dot-axis (replaces aggregated histogram on phone reveal).\n Each player's guess is a colored dot at the exact year on a horizontal axis;\n the correct year is marked by a vertical cyan line. */\n.dotaxis-wrap {\n margin: 14px 0 16px;\n}\n.dotaxis-axis {\n position: relative;\n height: 88px;\n margin: 0 14px;\n}\n.dotaxis-line {\n position: absolute;\n left: 0; right: 0;\n top: 52px;\n height: 2px;\n background: rgba(255, 255, 255, 0.12);\n border-radius: 2px;\n}\n.dotaxis-tick {\n position: absolute;\n top: 48px;\n width: 1px;\n height: 10px;\n background: rgba(255, 255, 255, 0.18);\n}\n.dotaxis-tick-label {\n position: absolute;\n top: 64px;\n font-size: 9px;\n color: rgba(255, 255, 255, 0.5);\n transform: translateX(-50%);\n letter-spacing: 0.3px;\n font-weight: 500;\n}\n.dotaxis-marker {\n position: absolute;\n top: 4px;\n bottom: 18px;\n width: 2px;\n background: linear-gradient(180deg, transparent, var(--color-cyan, #00d4ff) 30%, var(--color-cyan, #00d4ff) 80%, transparent);\n box-shadow: 0 0 8px var(--color-cyan, #00d4ff), 0 0 16px rgba(0, 212, 255, 0.6);\n}\n.dotaxis-marker-label {\n position: absolute;\n top: -4px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--color-cyan, #00d4ff);\n color: #0a0a0e;\n font-family: var(--font-family-display, 'Outfit', sans-serif);\n font-weight: 900;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n box-shadow: 0 0 14px rgba(0, 212, 255, 0.6);\n white-space: nowrap;\n}\n.dotaxis-dot {\n position: absolute;\n top: 39px;\n width: 26px;\n height: 26px;\n border-radius: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-family-display, 'Outfit', sans-serif);\n font-weight: 900;\n font-size: 12px;\n color: #fff;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 4px 10px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n.dotaxis-dot--c1 { background: linear-gradient(135deg, #ff6ec7, #d846a7); }\n.dotaxis-dot--c2 { background: linear-gradient(135deg, #6e3bff, #4a25c8); }\n.dotaxis-dot--c3 { background: linear-gradient(135deg, #ffd60a, #e6b800); color: #1a1a22; text-shadow: none; }\n.dotaxis-dot--c4 { background: linear-gradient(135deg, #00d4ff, #008abf); }\n.dotaxis-dot--correct {\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 0 18px currentColor, 0 4px 10px rgba(0, 0, 0, 0.4);\n}\n.dotaxis-dot--me {\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 0 0 5px rgba(255, 159, 67, 0.6), 0 4px 10px rgba(0, 0, 0, 0.4);\n}\n.dotaxis-dot--correct.dotaxis-dot--me {\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 0 0 5px rgba(255, 159, 67, 0.6), 0 0 22px currentColor, 0 4px 10px rgba(0, 0, 0, 0.4);\n}\n.dotaxis-score {\n position: absolute;\n top: 12px;\n transform: translateX(-50%);\n font-family: var(--font-family-display, 'Outfit', sans-serif);\n font-weight: 800;\n font-size: 11px;\n padding: 2px 6px;\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.08);\n white-space: nowrap;\n}\n.dotaxis-score--pos {\n background: rgba(0, 212, 255, 0.18);\n color: var(--color-cyan, #00d4ff);\n}\n.dotaxis-score--zero {\n color: rgba(255, 255, 255, 0.35);\n}\n.dotaxis-legend {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 8px 14px;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.75);\n margin-top: 4px;\n}\n.dotaxis-legend-entry {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.dotaxis-legend-dot {\n display: inline-block;\n width: 11px;\n height: 11px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.dotaxis-legend-medal {\n font-size: 13px;\n line-height: 1;\n}\n.dotaxis-legend-me {\n color: rgba(255, 159, 67, 1);\n font-weight: 700;\n font-size: 10px;\n margin-left: 2px;\n letter-spacing: 0.3px;\n}\n\n.histogram-bars {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n height: 120px;\n gap: var(--space-xs);\n padding: 0 var(--space-xs);\n}\n\n.histogram-bar-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n animation: histogram-fade-in 0.3s ease forwards;\n opacity: 0;\n}\n\n.histogram-bar {\n width: 100%;\n max-width: 40px;\n background: linear-gradient(180deg, var(--color-accent-primary), var(--color-accent-brand));\n border-radius: var(--radius-sm) var(--radius-sm) 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n transition: height 0.5s ease;\n min-height: 0;\n}\n\n.histogram-bar.is-correct {\n background: linear-gradient(180deg, var(--color-success-neon), var(--color-success));\n box-shadow: var(--glow-success);\n}\n\n.bar-count {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-white);\n padding-top: var(--space-xs);\n}\n\n.histogram-label {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: var(--space-xs);\n}\n\n@keyframes histogram-fade-in {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Achievements */\n.analytics-achievements {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n text-align: left;\n}\n\n.achievement-item {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-size: var(--font-size-sm);\n color: var(--color-text-white);\n}\n\n.achievement-emoji {\n font-size: var(--font-size-lg);\n}\n\n.achievement-label {\n color: var(--color-text-neon-muted);\n}\n\n.achievement-names {\n font-weight: var(--font-weight-semibold);\n}\n\n.achievement-value {\n color: var(--color-text-neon-muted);\n}\n\n/* Empty state */\n.analytics-empty {\n text-align: center;\n color: var(--color-text-neon-muted);\n padding: var(--space-lg);\n font-style: italic;\n}\n\n/* Reduced motion support (AC6) */\n@media (prefers-reduced-motion: reduce) {\n .histogram-bar-wrapper {\n animation: none;\n opacity: 1;\n }\n\n .histogram-bar {\n transition: none;\n }\n}\n\n/* Reveal Emotion (Story 9.4) */\n.reveal-emotion {\n text-align: center;\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n margin-bottom: var(--space-md);\n animation: reveal-emotion-entrance 0.5s ease-out;\n}\n\n.reveal-emotion--exact {\n color: var(--color-success);\n text-shadow: 0 0 20px var(--color-success);\n}\n\n.reveal-emotion--close {\n color: var(--color-warning);\n animation: reveal-emotion-entrance 0.5s ease-out, reveal-shake 0.5s ease-in-out 0.5s;\n}\n\n.reveal-emotion--wrong {\n color: var(--color-text-muted);\n}\n\n.reveal-emotion--missed {\n color: var(--color-text-muted);\n opacity: 0.7;\n}\n\n.reveal-emotion-subtitle {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n margin-top: var(--space-xs);\n opacity: 0.8;\n}\n\n@keyframes reveal-emotion-entrance {\n 0% { opacity: 0; transform: scale(0.8); }\n 50% { transform: scale(1.1); }\n 100% { opacity: 1; transform: scale(1); }\n}\n\n@keyframes reveal-shake {\n 0%, 100% { transform: translateX(0); }\n 20%, 60% { transform: translateX(-5px); }\n 40%, 80% { transform: translateX(5px); }\n}\n\n/* Confetti Canvas (Story 9.4, Story 14.5) */\n.confetti-canvas {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: var(--z-modal);\n}\n\n/* canvas-confetti library creates canvas dynamically at body level - ensure non-blocking (AC6) */\n/* M2 fix: Scoped to body > canvas to avoid affecting other fixed canvases */\nbody > canvas[style*=\"position: fixed\"] {\n pointer-events: none !important;\n}\n\n/* Score breakdown fade-in delay (Story 9.4) */\n.personal-result.is-delayed {\n opacity: 0;\n animation: fade-in-delay 0.5s ease-out 1s forwards;\n}\n\n@keyframes fade-in-delay {\n to { opacity: 1; }\n}\n\n/* Reduced motion support for reveal */\n@media (prefers-reduced-motion: reduce) {\n .reveal-emotion,\n .reveal-emotion--close {\n animation: none;\n }\n .personal-result.is-delayed {\n opacity: 1;\n animation: none;\n }\n}\n\n/* Personal Result */\n.personal-result {\n width: 100%;\n background: var(--color-bg-card-alt);\n padding: var(--space-md);\n border-radius: var(--radius-lg);\n margin-bottom: var(--space-lg);\n}\n\n.result-header {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.result-content {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n.result-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.result-label {\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n}\n\n.result-value {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.result-value.is-exact {\n color: var(--color-success);\n}\n\n.result-value.is-close {\n color: var(--color-warning);\n}\n\n.result-value.is-far {\n color: var(--color-error);\n}\n\n/* Speed bonus indicator (Story 5.1) */\n.result-value.is-bonus {\n color: var(--color-warning);\n font-weight: var(--font-weight-bold);\n}\n\n.result-score {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-brand);\n margin-top: var(--space-sm);\n}\n\n.result-missed {\n font-size: var(--font-size-md);\n color: var(--color-error);\n font-weight: var(--font-weight-semibold);\n}\n\n/* Streak bonus styling (Story 5.2) */\n.result-value.is-streak {\n color: var(--color-error);\n font-weight: var(--font-weight-bold);\n}\n\n.streak-bonus-row {\n background: linear-gradient(90deg, var(--color-warning-light), #fde68a);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n margin: var(--space-sm) 0;\n color: #1a1a1a;\n}\n\n.result-total {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-success);\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 2px dashed var(--color-border-light);\n}\n\n/* Leaderboard streak indicator (Story 5.2) */\n.streak-indicator {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n font-size: var(--font-size-sm);\n color: var(--color-warning);\n font-weight: var(--font-weight-semibold);\n}\n\n.streak-indicator::before {\n content: \"\\01F525\";\n}\n\n/* Bet toggle (Story 5.3) */\n.bet-container {\n margin-bottom: var(--space-md);\n /* Fix Safari desktop click issue - establish stacking context */\n position: relative;\n z-index: 1;\n}\n\n.bet-toggle {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-xl);\n background: var(--color-bg-card-alt);\n border: 2px solid var(--color-border-medium);\n border-radius: var(--radius-lg);\n cursor: pointer;\n /* Fix Safari: use specific properties instead of 'all' */\n transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n width: 100%;\n justify-content: center;\n /* Fix Safari desktop click handling */\n -webkit-tap-highlight-color: transparent;\n -webkit-user-select: none;\n user-select: none;\n touch-action: manipulation;\n}\n\n.bet-toggle:hover {\n border-color: var(--color-text-light);\n}\n\n.bet-toggle.is-active {\n background: var(--color-warning-light);\n border-color: var(--color-warning);\n color: #92400e;\n}\n\n.bet-toggle.is-active .bet-icon {\n animation: dice-shake var(--transition-slow) ease;\n}\n\n@keyframes dice-shake {\n 0%, 100% { transform: rotate(0deg); }\n 25% { transform: rotate(-10deg); }\n 75% { transform: rotate(10deg); }\n}\n\n/* Dark theme bet toggle (Story 9.10) */\nbody.theme-dark .bet-toggle {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .bet-toggle.is-active {\n background: var(--color-warning);\n border-color: var(--color-warning);\n color: var(--color-text-primary);\n}\n\n/* Bet outcomes */\n.bet-won-row {\n background: linear-gradient(90deg, var(--color-success-light), #a7f3d0);\n padding: var(--space-sm) var(--space-sm);\n border-radius: var(--radius-md);\n margin: var(--space-sm) 0;\n}\n\n/* Bet rows have light backgrounds - need dark text even in dark mode */\n.bet-won-row .result-label,\nbody.theme-dark .bet-won-row .result-label {\n color: #166534;\n}\n\n.result-value.is-bet-won,\nbody.theme-dark .result-value.is-bet-won {\n color: #166534;\n font-weight: var(--font-weight-bold);\n}\n\n.bet-lost-row {\n background: linear-gradient(90deg, var(--color-error-light), #fecaca);\n padding: var(--space-sm) var(--space-sm);\n border-radius: var(--radius-md);\n margin: var(--space-sm) 0;\n}\n\n/* Bet rows have light backgrounds - need dark text even in dark mode */\n.bet-lost-row .result-label,\nbody.theme-dark .bet-lost-row .result-label {\n color: #991b1b;\n}\n\n.result-value.is-bet-lost,\nbody.theme-dark .result-value.is-bet-lost {\n color: #991b1b;\n font-weight: var(--font-weight-bold);\n}\n\n/* Missed round styling (Story 5.4) */\n.result-missed-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n}\n\n.result-missed-icon {\n font-size: var(--font-size-2xl);\n}\n\n.result-missed-text {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n}\n\n.streak-broken {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-error-light);\n border-radius: var(--radius-md);\n}\n\n.streak-broken-icon {\n font-size: var(--font-size-xl);\n}\n\n.streak-broken-text {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-error-dark);\n}\n\n/* Streak-Shield (#1666) \u2014 the counterpart to .streak-broken above. Same\n shape on purpose: both explain what just happened to a streak, so they\n should read as one pair rather than two unrelated notices. Success colours\n because the run survived. */\n.streak-shield-used {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-success-light);\n border-radius: var(--radius-md);\n}\n\n.streak-shield-icon {\n font-size: var(--font-size-xl);\n}\n\n.streak-shield-text {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-success-hover);\n}\n\n.result-score.is-zero {\n color: var(--color-text-light);\n font-size: var(--font-size-2xl);\n}\n\n/* ============================================\n Leaderboard (Story 5.5)\n ============================================ */\n\n/* Game view leaderboard - uses collapsible section pattern */\n.leaderboard-section {\n width: 100%;\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.leaderboard-section .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.leaderboard-section .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.leaderboard-section .section-header-collapsible .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.1);\n padding: 2px 8px;\n border-radius: var(--radius-sm);\n}\n\n.leaderboard-section .section-header-collapsible .section-toggle {\n margin-left: var(--space-sm);\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n}\n\n.leaderboard-section .section-content {\n padding: 0;\n}\n\n.leaderboard-section .leaderboard-list {\n max-height: 200px;\n overflow-y: auto;\n}\n\n.leaderboard-section.collapsed .section-content {\n display: none;\n}\n\n.leaderboard-section:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n/* Leaderboard container (legacy) */\n.leaderboard {\n background: var(--color-bg-white);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md);\n overflow: hidden;\n width: 100%;\n margin-bottom: var(--space-md);\n}\n\n.leaderboard.is-compact .leaderboard-list {\n max-height: 120px;\n}\n\n.leaderboard.is-expanded .leaderboard-list {\n max-height: 400px;\n}\n\n.leaderboard.is-prominent {\n margin-top: var(--space-md);\n}\n\n.leaderboard.is-prominent .leaderboard-list {\n max-height: 280px;\n}\n\n.leaderboard-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-card-alt);\n border-bottom: 1px solid var(--color-border-light);\n}\n\n.leaderboard-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-secondary);\n}\n\n.leaderboard-toggle {\n background: none;\n border: none;\n cursor: pointer;\n padding: var(--space-xs);\n min-width: auto;\n min-height: auto;\n color: var(--color-text-muted);\n}\n\n.leaderboard-list {\n max-height: 200px;\n overflow-y: auto;\n /* Story 18.1: CSS containment for scroll performance (layout style paint, not strict/size) */\n contain: layout style paint;\n will-change: transform;\n}\n\n/* Story 18.1: Spacer elements for lazy loading virtual scroll */\n.leaderboard-spacer-top,\n.leaderboard-spacer-bottom {\n flex-shrink: 0;\n pointer-events: none;\n}\n\n/* Story 18.1: Sentinel elements for IntersectionObserver */\n.leaderboard-sentinel {\n flex-shrink: 0;\n pointer-events: none;\n visibility: hidden;\n}\n\n/* Leaderboard entries */\n.leaderboard-entry {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: 10px var(--space-md);\n border-bottom: 1px solid var(--color-bg-card-alt);\n transition: background var(--transition-fast);\n /* Story 18.1: CSS containment for layout isolation */\n contain: content;\n height: 48px;\n box-sizing: border-box;\n}\n\n.leaderboard-entry:last-child {\n border-bottom: none;\n}\n\n.leaderboard-entry.is-current {\n background: #eff6ff;\n border-left: 3px solid var(--color-accent-blue);\n}\n\n/* Top 3 styling */\n.leaderboard-entry.is-top-1 {\n background: linear-gradient(90deg, var(--color-warning-light), #fde68a);\n}\n\n.leaderboard-entry.is-top-1 .entry-rank {\n color: #b45309;\n font-weight: var(--font-weight-bold);\n}\n\n.leaderboard-entry.is-top-2 {\n background: linear-gradient(90deg, var(--color-bg-card-alt), var(--color-border-light));\n}\n\n.leaderboard-entry.is-top-2 .entry-rank {\n color: var(--color-text-muted);\n font-weight: var(--font-weight-bold);\n}\n\n.leaderboard-entry.is-top-3 {\n background: linear-gradient(90deg, #fed7aa, #fdba74);\n}\n\n.leaderboard-entry.is-top-3 .entry-rank {\n color: #c2410c;\n font-weight: var(--font-weight-bold);\n}\n\n.entry-rank {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n min-width: 28px;\n}\n\n.entry-name {\n flex: 1;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.entry-meta {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.entry-score {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-brand);\n min-width: 40px;\n text-align: right;\n}\n\n/* Rank change indicators */\n.rank-up {\n font-size: var(--font-size-xs);\n color: var(--color-success);\n font-weight: var(--font-weight-semibold);\n}\n\n.rank-down {\n font-size: var(--font-size-xs);\n color: var(--color-error);\n font-weight: var(--font-weight-semibold);\n}\n\n/* Rank change animations (Story 9.5) */\n.leaderboard-entry--climbing {\n animation: leaderboard-climb 400ms ease-out;\n}\n\n.leaderboard-entry--falling {\n animation: leaderboard-fall 400ms ease-out;\n}\n\n/* Disconnected player in leaderboard (Story 11.4) */\n.leaderboard-entry--disconnected {\n opacity: 0.5;\n transition: opacity 0.3s ease;\n}\n\n@keyframes leaderboard-climb {\n 0% { transform: translateY(10px); opacity: 0.7; background: rgba(0, 255, 136, 0.2); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\n@keyframes leaderboard-fall {\n 0% { transform: translateY(-10px); opacity: 0.7; background: rgba(255, 0, 64, 0.2); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\n/* Streak indicators (Story 9.5) */\n.streak-indicator {\n font-size: var(--font-size-xs);\n color: var(--color-warning);\n}\n\n.streak-indicator--hot {\n text-shadow: 0 0 8px var(--color-warning);\n animation: streak-pulse 1s ease-in-out infinite;\n}\n\n@keyframes streak-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.7; }\n}\n\n/* Leaderboard separator (Story 9.5) */\n.leaderboard-separator {\n text-align: center;\n padding: var(--space-xs) var(--space-md);\n color: var(--color-text-muted);\n font-size: var(--font-size-sm);\n border-bottom: 1px solid var(--color-bg-card-alt);\n}\n\n/* Reduced motion support for leaderboard */\n@media (prefers-reduced-motion: reduce) {\n .leaderboard-entry--climbing,\n .leaderboard-entry--falling {\n animation: none;\n }\n .streak-indicator--hot {\n animation: none;\n }\n}\n\n/* Quick you indicator */\n.leaderboard-you {\n position: sticky;\n bottom: 0;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-accent-blue);\n color: var(--color-text-white);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n text-align: center;\n}\n\n/* ============================================\n Final Leaderboard / End View (Story 5.6)\n ============================================ */\n\n/* End view container */\n.end-container {\n padding: var(--space-lg);\n max-width: 480px;\n margin: 0 auto;\n text-align: center;\n}\n\n.end-header {\n margin-bottom: var(--space-lg);\n}\n\n.end-title {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-sm);\n}\n\n.end-subtitle {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin: 0;\n}\n\n/* Podium */\n.podium {\n display: flex;\n justify-content: center;\n align-items: flex-end;\n gap: var(--space-sm);\n margin-bottom: var(--space-xl);\n}\n\n.podium-place {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100px;\n}\n\n.podium-medal {\n font-size: var(--font-size-4xl);\n margin-bottom: var(--space-sm);\n}\n\n.podium-name {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.podium-score {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.podium-stand {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-text-white);\n border-radius: var(--radius-md) var(--radius-md) 0 0;\n}\n\n.podium-1 .podium-stand {\n height: 80px;\n background: linear-gradient(180deg, #fbbf24, var(--color-warning-dark));\n}\n\n.podium-2 .podium-stand {\n height: 60px;\n background: linear-gradient(180deg, var(--color-text-light), var(--color-text-muted));\n}\n\n.podium-3 .podium-stand {\n height: 40px;\n background: linear-gradient(180deg, #fb923c, #c2410c);\n}\n\n/* Your result */\n.your-result {\n background: #eff6ff;\n border-radius: var(--radius-xl);\n padding: var(--space-lg);\n margin-bottom: var(--space-lg);\n}\n\n.your-result-header {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-accent-blue);\n margin-bottom: var(--space-sm);\n}\n\n.your-result-rank {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-text-primary);\n}\n\n.your-result-score {\n font-size: var(--font-size-lg);\n color: var(--color-text-muted);\n margin-bottom: var(--space-md);\n}\n\n.your-result-stats {\n display: flex;\n justify-content: center;\n gap: var(--space-lg);\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.stat-value {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-brand);\n}\n\n.stat-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n/* Final leaderboard */\n.final-leaderboard {\n background: var(--color-bg-white);\n border-radius: var(--radius-lg);\n overflow: hidden;\n margin-bottom: var(--space-lg);\n box-shadow: var(--shadow-md);\n}\n\n.final-leaderboard-header {\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-card-alt);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-secondary);\n text-align: left;\n}\n\n.final-leaderboard-list {\n max-height: 200px;\n overflow-y: auto;\n}\n\n.final-entry {\n display: flex;\n align-items: center;\n padding: 10px var(--space-md);\n border-bottom: 1px solid var(--color-bg-card-alt);\n}\n\n.final-entry:last-child {\n border-bottom: none;\n}\n\n.final-entry.is-current {\n background: #eff6ff;\n}\n\n/* Disconnected player in final leaderboard (Story 11.4) */\n.final-entry--disconnected {\n opacity: 0.5;\n}\n\n.final-rank {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n width: 32px;\n}\n\n.final-name {\n flex: 1;\n font-size: var(--font-size-base);\n color: var(--color-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.final-score {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-accent-brand);\n}\n\n/* Admin controls for end */\n.end-admin-controls {\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.new-game-btn {\n width: 100%;\n padding: var(--space-md) var(--space-xl);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n background: var(--color-success);\n border: none;\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: background var(--transition-fast);\n min-width: auto;\n min-height: auto;\n}\n\n.new-game-btn:hover {\n background: var(--color-success-hover);\n}\n\n.new-game-btn:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n}\n\n/* Player message */\n.end-player-message {\n color: var(--color-text-muted);\n}\n\n.end-player-message p {\n margin: 0 0 var(--space-sm) 0;\n}\n\n.end-hint {\n font-size: var(--font-size-base);\n}\n\n.rejoin-hint {\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n}\n\n/* Admin Controls */\n.reveal-report-row {\n display: flex;\n justify-content: center;\n margin-top: var(--space-md);\n}\n\n.reveal-report-btn {\n background: none;\n border: none;\n padding: var(--space-xs) var(--space-sm);\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n cursor: pointer;\n border-radius: var(--radius-sm);\n transition: color 0.15s ease, opacity 0.15s ease;\n opacity: 0.7;\n}\n\n.reveal-report-btn:hover {\n color: var(--color-text-neon-muted);\n opacity: 1;\n}\n\n.reveal-report-btn:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n.reveal-admin-controls {\n margin-top: var(--space-md);\n}\n\n.next-round-btn {\n padding: var(--space-md) var(--space-xl);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n background: var(--color-accent-brand);\n border: none;\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.next-round-btn:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.next-round-btn:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n}\n\n.next-round-btn.is-final {\n background: var(--color-success);\n}\n\n.next-round-btn.is-final:hover {\n background: var(--color-success-hover);\n}\n\n/* Reveal Admin Buttons Layout (Story 16.5) */\n.reveal-admin-buttons {\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n align-items: center;\n}\n\n@media (min-width: 480px) {\n .reveal-admin-buttons {\n flex-direction: row;\n justify-content: center;\n }\n}\n\n/* Invite Button (Story 16.5) */\n.invite-btn {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-lg);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-white);\n background: var(--color-bg-tertiary);\n border: 1px solid var(--color-border-subtle);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n min-height: 44px;\n min-width: 44px;\n}\n\n.invite-btn:hover {\n background: var(--color-bg-secondary);\n border-color: var(--color-border-neon);\n}\n\n.invite-btn:active {\n transform: scale(0.98);\n}\n\n.invite-btn-icon {\n font-size: var(--font-size-lg);\n}\n\n.invite-btn-label {\n white-space: nowrap;\n}\n\n/* Invite Modal (Story 16.5) */\n.invite-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.invite-modal.hidden {\n display: none;\n}\n\n.invite-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n}\n\n.invite-modal-content {\n position: relative;\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n padding: var(--space-lg);\n border-radius: var(--radius-xl);\n text-align: center;\n max-width: 90vw;\n max-height: 90vh;\n overflow-y: auto;\n animation: modalFadeIn var(--transition-normal) ease-out;\n}\n\n@keyframes modalFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.invite-modal-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-white);\n margin: 0 0 var(--space-xs);\n}\n\n.invite-modal-hint {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin: 0 0 var(--space-md);\n}\n\n.invite-modal-code {\n display: inline-block;\n padding: var(--space-md);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n}\n\n.invite-modal-code img {\n display: block;\n width: 200px;\n height: 200px;\n}\n\n@media (min-width: 480px) {\n .invite-modal-code img {\n width: 256px;\n height: 256px;\n }\n}\n\n.invite-modal-url-container {\n display: flex;\n gap: var(--space-xs);\n margin-bottom: var(--space-sm);\n max-width: 100%;\n}\n\n.invite-modal-url {\n flex: 1;\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-sm);\n font-family: var(--font-family-mono);\n color: var(--color-text-primary);\n background: var(--color-bg-secondary);\n border: 1px solid var(--color-border-subtle);\n border-radius: var(--radius-md);\n min-width: 0;\n text-overflow: ellipsis;\n}\n\nbody.theme-dark .invite-modal-url {\n color: #e2e8f0;\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.15);\n}\n\n.invite-copy-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--space-sm);\n min-width: 44px;\n min-height: 44px;\n background: var(--color-accent-brand);\n border: none;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.invite-copy-btn:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.invite-copy-btn:active {\n transform: scale(0.95);\n}\n\n.invite-copy-icon {\n font-size: var(--font-size-lg);\n}\n\n.invite-copy-feedback {\n font-size: var(--font-size-sm);\n color: var(--color-success);\n margin: 0 0 var(--space-md);\n animation: fadeInOut 2s ease-in-out;\n}\n\n.invite-copy-feedback.hidden {\n display: none;\n}\n\n@keyframes fadeInOut {\n 0%, 100% { opacity: 0; }\n 10%, 80% { opacity: 1; }\n}\n\n.invite-modal-close {\n min-width: 120px;\n min-height: 48px;\n}\n\n/* ============================================\n Player Result Cards (Story 9.10)\n ============================================ */\n\n.reveal-results-cards {\n margin-top: var(--space-lg);\n width: 100%;\n overflow: visible;\n}\n\n.results-cards-header {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-secondary);\n margin-bottom: var(--space-sm);\n text-align: center;\n}\n\n/* Horizontal row with overflow scroll (#355) */\n.results-cards-scroll {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: var(--space-sm);\n width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n padding-bottom: var(--space-xs);\n -webkit-overflow-scrolling: touch;\n}\n\n.results-cards-scroll::-webkit-scrollbar {\n height: 3px;\n}\n\n.results-cards-scroll::-webkit-scrollbar-thumb {\n background: var(--color-border-light);\n border-radius: 2px;\n}\n\n.result-card {\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-sm);\n text-align: center;\n border: 2px solid var(--color-border-light);\n transition: all var(--transition-fast);\n flex: 1 1 140px;\n min-width: 140px;\n max-width: 220px;\n box-sizing: border-box;\n}\n\n.result-card.is-current {\n border-color: var(--color-accent-brand);\n background: rgba(99, 102, 241, 0.1);\n}\n\n/* Score-based classes per AC #13 (Code Review fix) */\n.result-card.is-score-high {\n border-color: var(--color-success);\n background: rgba(16, 185, 129, 0.1);\n}\n\n.result-card.is-score-medium {\n border-color: var(--color-warning);\n background: rgba(245, 158, 11, 0.1);\n}\n\n.result-card.is-score-zero {\n opacity: 0.6;\n}\n\n.card-name {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 2px;\n}\n\n.card-guess {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n}\n\n.card-accuracy {\n font-size: var(--font-size-xs);\n color: var(--color-text-muted);\n}\n\n.result-card.is-score-high .card-accuracy {\n color: var(--color-success);\n font-weight: var(--font-weight-semibold);\n}\n\n.card-score {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-success);\n margin-top: 2px;\n}\n\n.card-bet {\n margin-left: 4px;\n}\n\n/* Dark theme result cards */\nbody.theme-dark .result-card {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\nbody.theme-dark .result-card.is-current {\n border-color: var(--color-accent-neon);\n background: rgba(0, 245, 255, 0.1);\n}\n\n/* Dark theme score-based classes (Code Review fix) */\nbody.theme-dark .result-card.is-score-high {\n border-color: var(--color-success-neon);\n background: rgba(0, 255, 136, 0.1);\n}\n\nbody.theme-dark .result-card.is-score-medium {\n border-color: var(--color-warning);\n background: rgba(245, 158, 11, 0.15);\n}\n\nbody.theme-dark .card-name,\nbody.theme-dark .card-guess {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .card-accuracy {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .result-card.is-score-high .card-accuracy {\n color: var(--color-success-neon);\n}\n\nbody.theme-dark .card-score {\n color: var(--color-success-neon);\n}\n\n/* ============================================\n Admin Control Bar (Story 6.1)\n ============================================ */\n\n.admin-control-bar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n justify-content: space-around;\n align-items: center;\n padding: var(--space-sm) var(--space-sm);\n padding-bottom: calc(var(--space-sm) + env(safe-area-inset-bottom));\n background: rgba(0, 0, 0, 0.9);\n border-top: 1px solid var(--color-border-dark);\n z-index: var(--z-control-bar);\n}\n\n.admin-control-bar.hidden {\n display: none;\n}\n\n.control-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-width: 44px;\n min-height: 44px;\n padding: var(--space-sm) var(--space-sm);\n background: #2a2a2a;\n border: none;\n border-radius: var(--radius-md);\n color: var(--color-text-white);\n cursor: pointer;\n transition: background var(--transition-fast), opacity var(--transition-fast);\n}\n\n.control-btn:hover:not(.is-disabled) {\n background: #3a3a3a;\n}\n\n.control-btn:active:not(.is-disabled) {\n background: #4a4a4a;\n}\n\n.control-btn.is-disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.control-btn--danger {\n background: #7f1d1d;\n}\n\n.control-btn--danger:hover:not(.is-disabled) {\n background: #991b1b;\n}\n\n.control-btn.is-stopped {\n background: var(--color-text-secondary);\n opacity: 0.7;\n}\n\n.control-btn.is-stopped .control-icon {\n color: var(--color-success);\n}\n\n/* Volume indicator popup (Story 6.4) */\n.volume-indicator {\n position: absolute;\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(0, 0, 0, 0.9);\n color: var(--color-text-white);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--space-sm);\n opacity: 0;\n transition: opacity var(--transition-normal);\n pointer-events: none;\n white-space: nowrap;\n}\n\n.volume-indicator.is-visible {\n opacity: 1;\n}\n\n/* Volume button at limit (Story 6.4) */\n.control-btn.is-at-limit {\n opacity: 0.5;\n}\n\n.control-btn.is-at-limit:active {\n transform: none;\n}\n\n.control-icon {\n font-size: var(--font-size-xl);\n line-height: 1;\n}\n\n/* #1048: REVEAL auto-advance countdown \u2014 replaces the icon in the Next\n button with the remaining seconds while the auto-advance timer runs.\n Tabular numerals so 30 \u2192 29 \u2192 28 doesn't shift the layout. */\n.control-icon.is-countdown {\n font-variant-numeric: tabular-nums;\n font-weight: 700;\n min-width: 1.5em;\n text-align: center;\n}\n\n.control-label {\n font-size: var(--font-size-xs);\n margin-top: 2px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Ensure game-view content doesn't get covered by control bar (M3 fix: conditional) */\n/* 80px admin bar + 60px reaction bar = 140px total clearance */\n.has-control-bar .game-container {\n padding-bottom: 140px;\n}\n\n.has-control-bar .reveal-container {\n padding-bottom: 140px;\n}\n\n.has-control-bar .end-container {\n padding-bottom: 140px;\n}\n\n/* ============================================\n Live Reactions Bar (Story 18.9)\n ============================================ */\n\n.reaction-bar {\n position: fixed;\n bottom: 0; /* Default: at bottom for regular players */\n left: 0;\n right: 0;\n display: flex;\n justify-content: center;\n padding: var(--space-sm);\n padding-bottom: calc(var(--space-sm) + env(safe-area-inset-bottom));\n z-index: var(--z-reaction-bar);\n pointer-events: none; /* Allow clicks through the bar */\n}\n\n/* When admin control bar is visible, position reaction bar above it */\nmain:has(.admin-control-bar:not(.hidden)) .reaction-bar {\n bottom: 70px;\n}\n\n.reaction-bar.hidden {\n display: none;\n}\n\n.reaction-bar-container {\n display: flex;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: rgba(0, 0, 0, 0.6);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n pointer-events: auto; /* Restore clicks on container */\n}\n\n.reaction-btn {\n font-size: 1.5rem;\n padding: var(--space-sm);\n min-width: 44px;\n min-height: 44px;\n background: rgba(30, 30, 40, 0.5);\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: transform var(--transition-fast), background var(--transition-fast);\n}\n\n.reaction-btn:hover {\n background: rgba(50, 50, 60, 0.7);\n}\n\n.reaction-btn:active {\n transform: scale(0.9);\n}\n\n/* #1757: used-state feedback. Once a reaction is spent this phase the whole bar\n is disabled; the chosen emoji stays lit so the player sees what they sent. */\n.reaction-btn:disabled {\n cursor: default;\n opacity: 0.45;\n}\n\n.reaction-btn.is-used {\n opacity: 1;\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 12px var(--color-accent-primary);\n}\n\n/* Neon glow effect on tap */\n@media (hover: none) {\n .reaction-btn:active {\n box-shadow: 0 0 15px var(--color-accent-primary);\n }\n}\n\n/* Accessibility: Respect reduced motion preference */\n@media (prefers-reduced-motion: reduce) {\n .reaction-btn {\n transition: none;\n }\n\n .reaction-btn:active {\n transform: none;\n }\n}\n\n/* Floating Reactions Display (Story 18.9) */\n.reaction-container {\n position: fixed;\n bottom: 120px; /* Above reaction bar */\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 99; /* Below reaction bar */\n}\n\n/* When admin control bar visible, adjust position */\nmain:has(.admin-control-bar:not(.hidden)) .reaction-container {\n bottom: 180px;\n}\n\n.reaction-bubble {\n position: absolute;\n font-size: 1rem;\n font-weight: 600;\n color: var(--color-text-white);\n text-shadow: 0 0 8px var(--color-accent-primary);\n animation: reaction-float 3s ease-out forwards;\n white-space: nowrap;\n}\n\n@keyframes reaction-float {\n 0% {\n opacity: 1;\n transform: translateY(0);\n }\n 70% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translateY(calc(-50vh + 60px));\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .reaction-bubble {\n animation: none;\n opacity: 1;\n }\n}\n\n/* ============================================\n Paused View (Story 7-1)\n ============================================ */\n\n.paused-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--space-2xl) var(--space-lg);\n min-height: 60vh;\n text-align: center;\n}\n\n.paused-icon {\n font-size: var(--font-size-hero);\n margin-bottom: var(--space-lg);\n animation: pause-pulse 2s infinite;\n}\n\n@keyframes pause-pulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.6; transform: scale(0.95); }\n}\n\n.paused-container h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-md);\n}\n\n.paused-container > p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.paused-spinner {\n margin: var(--space-xl) 0;\n}\n\n.paused-hint {\n font-size: var(--font-size-base);\n color: var(--color-text-light);\n}\n\n/* ============================================\n Reconnecting Overlay (Story 7-3)\n ============================================ */\n\n.reconnecting-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: var(--z-overlay);\n}\n\n.reconnecting-overlay.hidden {\n display: none;\n}\n\n.reconnecting-content {\n text-align: center;\n color: var(--color-text-white);\n}\n\n.reconnecting-spinner .spinner {\n border-top-color: var(--color-text-white);\n width: 48px;\n height: 48px;\n margin: 0 auto var(--space-md);\n}\n\n.reconnect-status {\n font-size: var(--font-size-md);\n color: var(--color-border-light);\n}\n\n/* ============================================\n Connection Lost View (Story 7-4)\n ============================================ */\n\n.connection-lost-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--space-2xl) var(--space-lg);\n min-height: 60vh;\n text-align: center;\n}\n\n.connection-lost-icon {\n font-size: var(--font-size-hero);\n margin-bottom: var(--space-lg);\n}\n\n.connection-lost-container h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-md);\n}\n\n.connection-lost-container > p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin-bottom: var(--space-lg);\n}\n\n.connection-lost-hint {\n font-size: var(--font-size-base);\n color: var(--color-text-light);\n margin-top: var(--space-md);\n}\n\n/* Responsive adjustments for Reveal View */\n@media (max-width: 360px) {\n .correct-year {\n font-size: var(--font-size-year);\n }\n\n .reveal-album-cover {\n width: 120px;\n height: 120px;\n }\n}\n\n@media (min-width: 768px) {\n .reveal-album-cover {\n width: 180px;\n height: 180px;\n }\n\n .correct-year {\n font-size: 84px;\n }\n}\n\n/* ============================================\n Accessibility & Reduced Motion (Story 9.7)\n ============================================ */\n\n/* Focus indicators for keyboard navigation */\n:focus-visible {\n outline: 2px solid var(--color-accent-primary);\n outline-offset: 2px;\n}\n\nbody.theme-dark :focus-visible {\n outline-color: var(--color-accent-primary);\n box-shadow: 0 0 0 4px rgba(255, 45, 106, 0.3);\n}\n\n/* Remove default outline for mouse users */\n:focus:not(:focus-visible) {\n outline: none;\n}\n\n/* Global reduced motion - disables all animations */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Day Mode fallback for prefers-color-scheme: light */\n@media (prefers-color-scheme: light) {\n body:not(.theme-dark) {\n --color-bg-primary: #ffffff;\n --color-bg-surface: #f5f5f7;\n --color-bg-card: #ffffff;\n --color-bg-card-alt: #f8fafc;\n --color-text-primary: #1a1a1a;\n --color-text-muted: #666666;\n --color-text-light: #999999;\n --color-border-light: #e5e7eb;\n /* Accents remain vibrant */\n }\n}\n\n/* Screen reader only utility */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Skip link for keyboard users */\n.skip-link {\n position: absolute;\n top: -40px;\n left: 0;\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n padding: var(--space-sm) var(--space-md);\n z-index: var(--z-modal);\n transition: top var(--transition-fast);\n}\n\n.skip-link:focus {\n top: 0;\n}\n\n/* ============================================\n Energy Escalation Pattern (Story 9.9)\n ============================================ */\n\n/* Energy Level Classes - Applied to body */\n\n/* Calm - Join screen (minimal, focused) */\nbody.energy-calm .btn-glow:hover {\n box-shadow: none; /* No glow on calm screens */\n}\n\nbody.energy-calm .wordmark-hero {\n text-shadow: none; /* No hero glow on calm screens */\n}\n\n/* Warmup - Lobby (building excitement) */\nbody.energy-warmup .player-card {\n animation: energy-slide-in 0.3s ease-out;\n}\n\nbody.energy-warmup .qr-container {\n animation: energy-pulse-subtle 3s ease-in-out infinite;\n}\n\n@keyframes energy-slide-in {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes energy-pulse-subtle {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.85; }\n}\n\n/* Party - Active gameplay (full effects) */\nbody.energy-party .album-cover {\n box-shadow: 0 0 60px rgba(255, 255, 255, 0.1);\n}\n\nbody.energy-party .submit-btn:not(:disabled) {\n box-shadow: var(--glow-primary);\n}\n\nbody.energy-party .year-display {\n text-shadow: 0 0 20px rgba(255, 45, 106, 0.3);\n}\n\n/* Screen Transitions */\n.view {\n animation: screen-fade-in 0.3s ease-out;\n}\n\n@keyframes screen-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Reduced motion - disable energy animations */\n@media (prefers-reduced-motion: reduce) {\n body.energy-warmup .player-card,\n body.energy-warmup .qr-container {\n animation: none;\n }\n .view {\n animation: none;\n }\n}\n\n/* ============================================\n Steal Power-up Styles (Story 15.3)\n ============================================ */\n\n/* Steal indicator now uses .stat-badge--steal in game header */\n\n/* Steal Button */\n.steal-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-xs);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n margin-top: var(--space-sm);\n background: linear-gradient(135deg, var(--color-purple-primary, #8b5cf6), var(--color-purple-secondary, #7c3aed));\n border: none;\n border-radius: var(--radius-lg);\n color: var(--color-text-white);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-bold);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n cursor: pointer;\n box-shadow: 0 0 20px rgba(139, 92, 246, 0.4);\n transition: all var(--transition-fast);\n}\n\n.steal-btn:hover:not(:disabled) {\n transform: scale(1.03);\n box-shadow: 0 0 30px rgba(139, 92, 246, 0.6);\n}\n\n.steal-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.steal-btn-icon {\n font-size: var(--font-size-lg);\n}\n\n/* Steal Modal */\n.steal-modal {\n position: fixed;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: var(--z-modal);\n}\n\n.steal-modal-backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n backdrop-filter: blur(4px);\n}\n\n.steal-modal-content {\n position: relative;\n background: var(--color-bg-card);\n border: 2px solid var(--color-purple-primary, #8b5cf6);\n border-radius: var(--radius-xl);\n padding: var(--space-lg);\n max-width: 320px;\n width: 90%;\n text-align: center;\n box-shadow: 0 0 40px rgba(139, 92, 246, 0.3);\n}\n\n.steal-modal-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n}\n\n.steal-modal-subtitle {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin-bottom: var(--space-md);\n}\n\n.steal-target-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n}\n\n.steal-target-btn {\n display: block;\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-surface);\n border: 1px solid var(--color-accent-secondary);\n border-radius: var(--radius-md);\n color: var(--color-text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.steal-target-btn:hover {\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n transform: scale(1.02);\n}\n\n.steal-no-targets {\n color: var(--color-text-muted);\n font-size: var(--font-size-sm);\n padding: var(--space-md);\n}\n\n.steal-modal-cancel {\n width: 100%;\n}\n\n/* Steal Confirmation Toast */\n.steal-confirmation {\n position: fixed;\n bottom: calc(var(--space-xl) + 60px);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n background: linear-gradient(135deg, var(--color-purple-primary, #8b5cf6), var(--color-purple-secondary, #7c3aed));\n color: var(--color-text-white);\n padding: var(--space-sm) var(--space-lg);\n border-radius: var(--radius-full);\n font-weight: var(--font-weight-semibold);\n box-shadow: 0 4px 20px rgba(139, 92, 246, 0.5);\n animation: steal-toast-in 0.3s ease-out;\n z-index: var(--z-tooltip);\n}\n\n@keyframes steal-toast-in {\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n}\n\n.steal-confirmation-icon {\n font-size: var(--font-size-lg);\n}\n\n/* Steal badge in reveal view */\n.steal-badge {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n background: rgba(139, 92, 246, 0.2);\n border: 1px solid var(--color-purple-primary, #8b5cf6);\n border-radius: var(--radius-full);\n padding: var(--space-xs) var(--space-sm);\n font-size: var(--font-size-xs);\n color: var(--color-purple-primary, #8b5cf6);\n margin-top: var(--space-xs);\n}\n\n.steal-badge-icon {\n font-size: 0.9em;\n}\n\n/* Victim variant - shows who was stolen from */\n.steal-badge-victim {\n background: rgba(239, 68, 68, 0.2);\n border-color: var(--color-error);\n color: var(--color-error);\n}\n\n/* Dark mode adjustments */\nbody.theme-dark .steal-modal-content {\n background: var(--color-bg-card);\n}\n\nbody.theme-dark .steal-target-btn {\n background: rgba(255, 255, 255, 0.05);\n border-color: var(--color-accent-secondary);\n}\n\nbody.theme-dark .steal-target-btn:hover {\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .stat-badge--steal {\n animation: none;\n }\n .steal-confirmation {\n animation: none;\n }\n}\n\n/* ============================================\n Intro Splash Modal (Issue #292)\n ============================================ */\n\n.intro-splash-modal {\n position: fixed;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: var(--z-modal);\n}\n\n.intro-splash-modal-backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n backdrop-filter: blur(4px);\n}\n\n.intro-splash-modal-content {\n position: relative;\n background: var(--color-bg-card);\n border: 2px solid var(--color-accent-primary, #1db954);\n border-radius: var(--radius-xl);\n padding: var(--space-lg);\n max-width: 400px;\n width: 90%;\n text-align: center;\n box-shadow: 0 0 40px rgba(29, 185, 84, 0.3);\n}\n\n.intro-splash-modal-emoji {\n font-size: 3rem;\n margin-bottom: var(--space-sm);\n}\n\n.intro-splash-modal-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n}\n\n.intro-splash-modal-desc {\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n margin-bottom: var(--space-md);\n}\n\n.intro-splash-modal-waiting {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.intro-splash-confirm-btn {\n width: 100%;\n margin-top: var(--space-sm);\n}\n\n/* ============================================\n Score Animations (Story 13.2)\n ============================================ */\n\n/* Tabular figures for score stability during animation */\n.score-animating {\n font-variant-numeric: tabular-nums;\n}\n\n/* Pop effect for big scores (20+ points) */\n@keyframes score-pop {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.3); }\n 100% { transform: scale(1); }\n}\n\n.score-pop {\n animation: score-pop 700ms ease-out;\n display: inline-block; /* Required for transform */\n}\n\n/* Shake effect for bet loss */\n@keyframes score-shake {\n 0%, 100% { transform: translateX(0); }\n 20% { transform: translateX(-5px); }\n 40% { transform: translateX(5px); }\n 60% { transform: translateX(-3px); }\n 80% { transform: translateX(3px); }\n}\n\n.score-shake {\n animation: score-shake 400ms ease-out;\n display: inline-block;\n}\n\n/* Red flash for bet loss */\n@keyframes score-flash-red {\n 0%, 100% { color: inherit; }\n 50% { color: var(--color-error); }\n}\n\n.score-flash-red {\n animation: score-flash-red 400ms ease-out;\n}\n\n/* Golden glow for bet wins */\n@keyframes score-glow-gold {\n 0%, 100% {\n text-shadow: 0 0 0 transparent;\n color: inherit;\n }\n 50% {\n text-shadow: 0 0 20px #ffd700, 0 0 40px #ffd700;\n color: #ffd700;\n }\n}\n\n.score-glow-gold {\n animation: score-glow-gold 800ms ease-out;\n display: inline-block;\n}\n\n/* Burst effect for streak milestones */\n@keyframes score-burst {\n 0% {\n transform: scale(1);\n text-shadow: 0 0 0 transparent;\n }\n 30% {\n transform: scale(1.4);\n text-shadow: 0 0 30px #ff6600;\n }\n 100% {\n transform: scale(1);\n text-shadow: 0 0 0 transparent;\n }\n}\n\n.score-burst {\n animation: score-burst 700ms ease-out;\n display: inline-block;\n}\n\n/* ============================================\n Floating Points Popup (Story 13.2)\n ============================================ */\n\n@keyframes popup-float {\n 0% {\n opacity: 0;\n transform: translate(-50%, 0);\n }\n 20% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translate(-50%, -30px);\n }\n}\n\n.points-popup {\n position: fixed;\n z-index: var(--z-toast);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-bold);\n color: var(--color-success);\n pointer-events: none;\n animation: popup-float 1000ms ease-out forwards;\n transform: translateX(-50%);\n}\n\n.points-popup--gold {\n color: #ffd700;\n text-shadow: 0 0 10px #ffd700;\n}\n\n.points-popup--streak {\n color: #ff6600;\n text-shadow: 0 0 10px #ff6600;\n font-size: var(--font-size-xl);\n}\n\n/* ============================================\n Leaderboard Slide Animations (Story 13.2)\n ============================================ */\n\n/* Enhanced climbing animation with green highlight */\n.leaderboard-entry--slide-up {\n animation: leaderboard-slide-up 500ms ease-out;\n}\n\n@keyframes leaderboard-slide-up {\n 0% {\n transform: translateY(10px);\n background: rgba(0, 255, 136, 0.3);\n }\n 100% {\n transform: translateY(0);\n background: transparent;\n }\n}\n\n/* Enhanced falling animation with opacity */\n.leaderboard-entry--slide-down {\n animation: leaderboard-slide-down 500ms ease-out;\n}\n\n@keyframes leaderboard-slide-down {\n 0% {\n transform: translateY(-10px);\n opacity: 0.6;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* ============================================\n Reduced Motion Support (Story 13.2)\n ============================================ */\n\n@media (prefers-reduced-motion: reduce) {\n .score-pop,\n .score-shake,\n .score-glow-gold,\n .score-burst,\n .score-flash-red {\n animation: none !important;\n }\n\n .points-popup {\n animation: none !important;\n display: none !important;\n }\n\n .leaderboard-entry--slide-up,\n .leaderboard-entry--slide-down {\n animation: none !important;\n }\n}\n\n/* ============================================\n Device Tier Performance Optimizations (Story 18.3)\n ============================================ */\n\n/* Low-end device optimizations - disable complex animations */\nbody.device-tier-low .leaderboard-entry--climbing,\nbody.device-tier-low .leaderboard-entry--falling,\nbody.device-tier-low .leaderboard-entry--slide-up,\nbody.device-tier-low .leaderboard-entry--slide-down {\n animation: none !important;\n}\n\nbody.device-tier-low .neon-glow,\nbody.device-tier-low .btn-glow:hover {\n box-shadow: none !important;\n}\n\nbody.device-tier-low .score-pop,\nbody.device-tier-low .score-shake,\nbody.device-tier-low .score-glow-gold,\nbody.device-tier-low .score-burst {\n animation: none !important;\n}\n\nbody.device-tier-low .points-popup {\n display: none !important;\n}\n\n/* Medium-tier device optimizations - simplify animations */\nbody.device-tier-medium .leaderboard-entry--climbing,\nbody.device-tier-medium .leaderboard-entry--falling {\n animation-duration: 0.2s !important;\n}\n\nbody.device-tier-medium .neon-glow {\n animation: none !important;\n}\n\nbody.device-tier-medium .score-pop,\nbody.device-tier-medium .score-shake,\nbody.device-tier-medium .score-glow-gold,\nbody.device-tier-medium .score-burst {\n animation-duration: 0.2s !important;\n}\n\n/* Tap-to-skip hint for reveal view (Story 18.3) */\n.reveal-skip-hint {\n position: absolute;\n bottom: var(--space-md);\n left: 50%;\n transform: translateX(-50%);\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n opacity: 0;\n animation: fadeInDelayed 0.3s ease-out 1s forwards;\n}\n\n@keyframes fadeInDelayed {\n to {\n opacity: 0.6;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .reveal-skip-hint {\n animation: none;\n opacity: 0.6;\n }\n}\n\nbody.device-tier-low .reveal-skip-hint {\n animation: none;\n opacity: 0.6;\n}\n\n/* ========================================\n Playlist Request Feature (Story 44)\n ======================================== */\n\n/* Request button in playlists section */\n.request-btn {\n margin-top: var(--space-md);\n gap: var(--space-xs);\n}\n\n/* Requests list */\n.requests-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n/* Individual request item */\n.request-item {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n padding: var(--space-md);\n background: var(--color-surface-raised);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n}\n\n.request-item-thumbnail {\n width: 40px;\n height: 40px;\n min-width: 40px;\n min-height: 40px;\n max-width: 40px;\n max-height: 40px;\n border-radius: var(--radius-sm);\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.request-item-thumbnail-placeholder {\n width: 40px;\n height: 40px;\n min-width: 40px;\n min-height: 40px;\n border-radius: var(--radius-sm);\n background: var(--color-surface);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.request-item-info {\n flex: 1;\n min-width: 0;\n}\n\n.request-item-name {\n font-weight: 600;\n font-size: var(--font-size-base);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.request-item-meta {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n/* Status badges */\n.request-status {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: 600;\n white-space: nowrap;\n}\n\n.request-status--pending {\n background: rgba(255, 193, 7, 0.15);\n color: #ffc107;\n}\n\n.request-status--ready {\n background: rgba(76, 175, 80, 0.15);\n color: #4caf50;\n}\n\n.request-status--installed {\n background: transparent;\n color: #4caf50;\n border: 1px solid #4caf50;\n}\n\n.request-status--declined {\n background: rgba(244, 67, 54, 0.15);\n color: #f44336;\n}\n\n/* Update button for ready status */\n.request-update-btn {\n font-size: var(--font-size-xs);\n padding: 6px 12px;\n white-space: nowrap;\n}\n\n/* Modal text input */\n.text-input {\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-base);\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n color: var(--color-text);\n transition: border-color 0.15s ease;\n}\n\n.text-input:focus {\n outline: none;\n border-color: var(--color-primary);\n}\n\n.text-input.input-error {\n border-color: var(--color-error);\n}\n\n/* Info box */\n.info-box {\n background: var(--color-surface-raised);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-top: var(--space-md);\n}\n\n.info-box-title {\n font-weight: 600;\n margin-bottom: var(--space-xs);\n color: var(--color-text-muted);\n}\n\n.info-box-list {\n margin: 0;\n padding-left: 0;\n list-style-position: inside;\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n.info-box-list li {\n margin-bottom: var(--space-xs);\n}\n\n.info-box-list li:last-child {\n margin-bottom: 0;\n}\n\n.info-box-note {\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 1px solid var(--color-border);\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n/* Success modal */\n.modal-content--success {\n text-align: center;\n}\n\n.success-icon {\n font-size: 3rem;\n margin-bottom: var(--space-sm);\n}\n\n.success-playlist-name {\n font-weight: 600;\n font-size: var(--font-size-lg);\n margin-bottom: var(--space-xs);\n}\n\n.success-estimate {\n color: var(--color-text-muted);\n font-size: var(--font-size-sm);\n}\n\n/* Loading state for submit button */\n.btn--loading {\n position: relative;\n color: transparent !important;\n pointer-events: none;\n}\n\n.btn--loading::after {\n content: '';\n position: absolute;\n width: 16px;\n height: 16px;\n top: 50%;\n left: 50%;\n margin-left: -8px;\n margin-top: -8px;\n border: 2px solid transparent;\n border-top-color: currentColor;\n border-radius: 50%;\n animation: spin 0.6s linear infinite;\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n\n/* ============================================\n Shareable Result Cards (Issue #120)\n ============================================ */\n\n.share-container {\n margin: 1.5rem 0;\n text-align: center;\n}\n\n.share-header {\n font-size: 1.2rem;\n font-weight: 700;\n margin-bottom: 1rem;\n color: var(--text-primary, #fff);\n}\n\n.share-card-preview {\n margin: 12px auto;\n max-width: 360px;\n width: 100%;\n border-radius: 16px;\n overflow: hidden;\n box-shadow: 0 12px 36px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 45, 106, 0.25);\n background: #0a0a12;\n}\n\n.share-card-image {\n display: block;\n width: 100%;\n height: auto;\n aspect-ratio: 1 / 1;\n}\n\n.share-buttons {\n display: flex;\n gap: 0.75rem;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.share-btn {\n padding: 0.6rem 1.2rem;\n border: none;\n border-radius: 8px;\n font-size: 0.95rem;\n font-weight: 600;\n cursor: pointer;\n background: var(--accent-color, #e94560);\n color: #fff;\n transition: opacity 0.2s, transform 0.1s;\n}\n\n.share-btn:hover {\n opacity: 0.9;\n}\n\n.share-btn:active {\n transform: scale(0.97);\n}\n\n.share-toast {\n margin-top: 0.75rem;\n padding: 0.4rem 1rem;\n background: var(--success-color, #4caf50);\n color: #fff;\n border-radius: 20px;\n display: inline-block;\n font-size: 0.85rem;\n font-weight: 600;\n animation: shareToastIn 0.3s ease;\n}\n\n@keyframes shareToastIn {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Admin share player tabs (Issue #208) */\n.admin-share-player-tabs {\n display: flex;\n flex-wrap: wrap;\n gap: 0.4rem;\n justify-content: center;\n margin-bottom: 0.75rem;\n}\n\n.admin-share-tab {\n padding: 0.3rem 0.85rem;\n border-radius: 20px;\n border: 1px solid var(--color-border-light);\n background: transparent;\n color: var(--color-text-secondary);\n font-size: var(--font-size-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.admin-share-tab:hover {\n border-color: var(--color-accent-brand);\n color: var(--color-accent-brand);\n}\n\n.admin-share-tab.active {\n background: var(--color-accent-brand);\n border-color: var(--color-accent-brand);\n color: #fff;\n font-weight: var(--font-weight-semibold);\n}\n\n@media (max-width: 480px) {\n .share-buttons {\n flex-direction: column;\n align-items: center;\n }\n .share-btn {\n width: 100%;\n max-width: 280px;\n }\n .share-card-preview {\n max-width: 320px;\n }\n}\n\n/* ============================================\n Skeleton Loading States (#240)\n ============================================ */\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.skeleton {\n background: linear-gradient(90deg, var(--color-bg-card) 25%, #3a3a4e 50%, var(--color-bg-card) 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: var(--radius-md);\n}\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n padding: var(--space-sm) 0;\n}\n\n/* Media player rows \u2014 match the height of a radio option */\n.skeleton-row {\n height: 48px;\n width: 100%;\n}\n\n/* Playlist cards \u2014 taller to match playlist card height */\n.skeleton-card {\n height: 64px;\n width: 100%;\n}\n\n/* ============================================\n Connection Status Indicator (#238)\n ============================================ */\n.player-header {\n position: relative;\n}\n\n.connection-indicator {\n position: absolute;\n top: 50%;\n right: var(--space-md);\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n/* Only visible when disconnected/reconnecting */\n.connection-indicator--disconnected {\n opacity: 1;\n}\n\n.connection-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--color-error, #e94560);\n animation: pulse-dot 1.2s infinite;\n}\n\n@keyframes pulse-dot {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.4; transform: scale(0.7); }\n}\n\n/* ============================================\n Party Lights (#331)\n ============================================ */\n\n.party-lights-picker {\n margin-top: 12px;\n}\n\n.party-lights-picker-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n font-size: 0.85rem;\n color: var(--text-secondary, #aaa);\n}\n\n.party-lights-count {\n font-weight: 500;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--accent, #ff00ff);\n cursor: pointer;\n font-size: 0.85rem;\n padding: 4px 8px;\n}\n\n.btn-link:hover {\n text-decoration: underline;\n}\n\n.party-lights-list {\n max-height: 240px;\n overflow-y: auto;\n border-radius: 8px;\n background: var(--card-bg, rgba(255,255,255,0.05));\n margin-bottom: 12px;\n}\n\n.party-light-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n cursor: pointer;\n border-bottom: 1px solid var(--border, rgba(255,255,255,0.08));\n min-height: 44px;\n}\n\n.party-light-item:last-child {\n border-bottom: none;\n}\n\n.party-light-item:hover {\n background: rgba(255,255,255,0.03);\n}\n\n.party-light-item input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n accent-color: var(--accent, #ff00ff);\n}\n\n.light-status {\n font-size: 0.75rem;\n flex-shrink: 0;\n}\n\n.light-name {\n flex: 1;\n font-size: 0.9rem;\n color: var(--text-primary, #fff);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.light-cap-badge {\n font-size: 0.7rem;\n padding: 2px 6px;\n border-radius: 4px;\n background: rgba(255,255,255,0.1);\n color: var(--text-secondary, #aaa);\n flex-shrink: 0;\n font-weight: 500;\n}\n\n/* ============================================\n Issue #550: WLED Presets & Light Mode UI\n ============================================ */\n\n.setting-row--vertical {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--space-sm, 8px);\n}\n\n.wled-presets-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: var(--space-xs, 4px) var(--space-sm, 8px);\n width: 100%;\n}\n\n.wled-preset-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-xs, 4px);\n font-size: 0.8rem;\n color: var(--text-secondary, #aaa);\n}\n\n.wled-preset-item .input-sm {\n width: 48px;\n padding: 2px 4px;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 4px;\n background: rgba(255,255,255,0.05);\n color: var(--text-primary, #fff);\n font-size: 0.8rem;\n text-align: center;\n}\n\n/* ============================================\n Issue #477: Admin Game Phase Views\n ============================================ */\n\n.admin-game-wrapper {\n max-width: 480px;\n margin: 0 auto;\n}\n\n.admin-phase-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: var(--space-md);\n}\n\n.round-badge {\n font-weight: 600;\n font-size: 1rem;\n}\n\n.timer-badge {\n font-size: 1.2rem;\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n min-width: 3em;\n text-align: center;\n}\n\n.timer-badge.timer-warning {\n color: var(--color-warning, #f59e0b);\n}\n\n.timer-badge.timer-critical {\n color: var(--color-danger, #ef4444);\n animation: pulse-critical 0.5s ease-in-out infinite alternate;\n}\n\n@keyframes pulse-critical {\n from { opacity: 1; }\n to { opacity: 0.5; }\n}\n\n.admin-song-card {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.admin-album-art {\n width: 64px;\n height: 64px;\n border-radius: var(--radius-sm);\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.admin-song-meta {\n min-width: 0;\n}\n\n.admin-song-title {\n font-weight: 600;\n font-size: 1rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.admin-song-artist {\n color: var(--text-secondary, #aaa);\n font-size: 0.9rem;\n}\n\n/* #653: Admin-only song details (below large album cover) */\n.admin-song-details {\n text-align: center;\n margin-bottom: var(--space-sm, 8px);\n}\n\n.admin-song-year {\n font-size: 0.95rem;\n color: var(--color-primary, #1db954);\n font-weight: 600;\n}\n\n.admin-song-funfact {\n font-size: 0.85rem;\n color: var(--text-secondary, #aaa);\n font-style: italic;\n margin-top: 4px;\n line-height: 1.3;\n}\n\n/* #660: Admin playing-mode banner */\n.admin-playing-banner {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n padding: var(--space-sm, 8px) var(--space-md, 16px);\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n border-bottom: 2px solid var(--color-primary, #1db954);\n font-size: 0.9rem;\n}\n\n.admin-playing-banner-icon {\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.admin-playing-banner-text {\n flex: 1;\n min-width: 0;\n}\n\n.admin-playing-banner-btn {\n flex-shrink: 0;\n font-size: 0.8rem;\n padding: 4px 10px;\n border-radius: var(--radius-sm, 8px);\n}\n\n/* #1012 follow-up: Idle-halt banner \u2014 shown on REVEAL when a round\n ended with zero guesses, so the screen doesn't look generically stuck. */\n.idle-halt-banner {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n margin: var(--space-md, 16px) auto;\n padding: var(--space-sm, 8px) var(--space-md, 16px);\n background: var(--bg-card, rgba(255, 255, 255, 0.06));\n border: 1px solid var(--color-warning, #f5a623);\n border-radius: var(--radius-md, 12px);\n color: var(--color-warning, #f5a623);\n font-size: 0.9rem;\n line-height: 1.35;\n max-width: 540px;\n}\n\n.idle-halt-icon {\n font-size: 1.2rem;\n flex-shrink: 0;\n}\n\n/* #805: Recovery banner shown when game pauses due to playback error. */\n.admin-pause-recovery {\n margin: var(--space-md, 16px);\n padding: var(--space-md, 16px) var(--space-lg, 20px);\n background: var(--bg-card, rgba(255, 255, 255, 0.06));\n border: 2px solid var(--color-warning, #f5a623);\n border-radius: var(--radius-md, 12px);\n}\n\n.admin-pause-recovery-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n margin-bottom: var(--space-sm, 8px);\n}\n\n.admin-pause-recovery-icon {\n font-size: 1.3rem;\n flex-shrink: 0;\n}\n\n.admin-pause-recovery-title {\n font-size: 1rem;\n color: var(--color-warning, #f5a623);\n}\n\n.admin-pause-recovery-message {\n font-size: 0.95rem;\n line-height: 1.4;\n margin: 0 0 var(--space-sm, 8px) 0;\n color: var(--text-primary, #ffffff);\n}\n\n.admin-pause-recovery-detail {\n font-size: 0.8rem;\n line-height: 1.3;\n margin: 0 0 var(--space-md, 16px) 0;\n color: var(--text-secondary, rgba(255, 255, 255, 0.6));\n font-family: var(--font-monospace, monospace);\n word-break: break-word;\n}\n\n.admin-pause-recovery-detail.hidden {\n display: none;\n}\n\n.admin-pause-recovery-actions {\n display: flex;\n gap: var(--space-sm, 8px);\n flex-wrap: wrap;\n}\n\n.admin-pause-recovery-actions .btn {\n flex: 1;\n min-width: 120px;\n}\n\n/* #660: Admin personal result card (reveal phase) */\n.admin-personal-result-card {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs, 4px);\n}\n\n.admin-personal-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--space-xs, 4px) 0;\n}\n\n.admin-personal-label {\n color: var(--text-secondary, #aaa);\n font-size: 0.9rem;\n}\n\n.admin-personal-value {\n font-weight: 600;\n font-size: 1rem;\n}\n\n.admin-personal-score {\n color: var(--color-primary, #1db954);\n font-size: 1.1rem;\n}\n\n/* Admin read-only challenge options */\n.artist-option--readonly {\n padding: 10px 14px;\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n border: 1px solid var(--color-border-dark, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius-md, 12px);\n text-align: center;\n font-size: 0.9rem;\n opacity: 0.8;\n}\n\n/* Admin intro splash confirm */\n.admin-intro-splash {\n text-align: center;\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n border-radius: var(--radius-md, 12px);\n border: 1px solid var(--color-primary, #1db954);\n}\n\n.intro-splash-info {\n font-size: 1.1rem;\n font-weight: 600;\n margin-bottom: var(--space-sm);\n}\n\n.intro-splash-icon {\n margin-right: 6px;\n}\n\n.btn-compact {\n padding: 8px 12px;\n font-size: 0.85rem;\n}\n\n.admin-player-panel {\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.admin-year-selector {\n text-align: center;\n margin-bottom: var(--space-md);\n}\n\n.admin-year-selector .year-display {\n display: block;\n font-size: 2.5rem;\n font-weight: 700;\n margin-bottom: var(--space-sm);\n font-variant-numeric: tabular-nums;\n}\n\n.admin-year-selector .year-slider {\n width: 100%;\n margin-bottom: var(--space-xs);\n}\n\n.year-range-labels {\n display: flex;\n justify-content: space-between;\n font-size: 0.75rem;\n color: var(--text-secondary, #aaa);\n}\n\n.last-round-banner {\n text-align: center;\n padding: var(--space-sm);\n background: var(--color-warning, #f59e0b);\n color: #000;\n border-radius: var(--radius-sm);\n font-weight: 600;\n margin-bottom: var(--space-md);\n}\n\n.submission-status {\n text-align: center;\n color: var(--text-secondary, #aaa);\n font-size: 0.9rem;\n margin-top: var(--space-sm);\n}\n\n.submission-count {\n margin-bottom: 6px;\n}\n\n.submission-players {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n justify-content: center;\n}\n\n.submission-player {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 0.8rem;\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n}\n\n.submission-player.is-submitted {\n color: var(--color-primary, #1db954);\n}\n\n.submission-player.is-waiting {\n opacity: 0.6;\n}\n\n/* Reveal */\n.reveal-year-display {\n font-size: 2.5rem;\n font-weight: 700;\n text-align: center;\n margin: var(--space-md) 0;\n color: var(--color-primary, #1db954);\n}\n\n.admin-personal-result {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.score-badge {\n font-weight: 700;\n color: var(--color-primary, #1db954);\n}\n\n/* Leaderboard */\n.admin-leaderboard-container {\n margin-bottom: var(--space-md);\n}\n\n.admin-leaderboard {\n width: 100%;\n border-collapse: collapse;\n}\n\n.admin-leaderboard th {\n text-align: left;\n font-weight: 600;\n padding: var(--space-xs) var(--space-sm);\n border-bottom: 1px solid var(--color-border-light);\n font-size: 0.85rem;\n color: var(--text-secondary, #aaa);\n}\n\n.admin-leaderboard td {\n padding: var(--space-xs) var(--space-sm);\n}\n\n.admin-leaderboard tr.admin-highlight td {\n font-weight: 600;\n color: var(--color-primary, #1db954);\n}\n\n/* End */\n.admin-winner-display {\n text-align: center;\n font-size: 1.3rem;\n font-weight: 600;\n padding: var(--space-lg) 0;\n}\n\n.winner-trophy {\n font-size: 2rem;\n}\n\n.admin-end-actions {\n display: flex;\n gap: var(--space-sm);\n justify-content: center;\n margin-top: var(--space-md);\n}\n\n/* ==========================================\n First-run wizard (DESIGN.md ## Patterns)\n ========================================== */\n\n/* Takeover: when active, hide the rest of the admin chrome */\nbody.wizard-active > .admin-header,\nbody.wizard-active > main.admin-content,\nbody.wizard-active > .pwa-ios-hint {\n display: none;\n}\n\n.wizard-takeover {\n position: fixed;\n inset: 0;\n z-index: var(--z-overlay, 1100);\n background: var(--color-bg-primary);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.wizard-takeover.hidden { display: none; }\n\n.wiz-bg {\n position: absolute;\n inset: 0;\n background:\n radial-gradient(ellipse at top, rgba(255, 45, 106, 0.18), transparent 55%),\n radial-gradient(ellipse at bottom right, rgba(0, 245, 255, 0.12), transparent 40%);\n pointer-events: none;\n}\n\n.wiz-top {\n padding: var(--space-md) var(--space-lg);\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-md);\n border-bottom: 1px solid var(--color-border-neon);\n position: relative;\n z-index: 1;\n}\n.wiz-step-count {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-xs);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-text-dim, #6b6b7a);\n flex: 1;\n text-align: center;\n}\n.wiz-skip {\n font-family: var(--font-display);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n background: none;\n border: none;\n font-weight: 500;\n cursor: pointer;\n padding: var(--space-xs) var(--space-sm);\n}\n.wiz-skip:hover { color: var(--color-text-white); }\n\n.wiz-progress {\n display: flex;\n gap: var(--space-xs);\n padding: var(--space-sm) var(--space-lg);\n position: relative;\n z-index: 1;\n}\n.wiz-seg {\n flex: 1;\n height: 3px;\n background: var(--color-dark-surface);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n.wiz-seg.filled {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n}\n.wiz-seg.active .wiz-seg-inner {\n height: 100%;\n width: 60%;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n border-radius: var(--radius-full);\n}\n\n.wiz-frame {\n flex: 1;\n overflow-y: auto;\n position: relative;\n z-index: 1;\n}\n.wiz-frame[hidden] { display: none; }\n\n.wiz-body {\n padding: var(--space-lg);\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n max-width: 720px;\n margin: 0 auto;\n}\n\n.wiz-eyebrow {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-accent-secondary);\n}\n.wiz-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-3xl);\n line-height: 1.15;\n letter-spacing: -0.01em;\n color: var(--color-text-white);\n}\n.wiz-sub {\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-base);\n line-height: 1.5;\n}\n.wiz-hint { font-size: var(--font-size-sm); margin-top: var(--space-xs); }\n.wiz-hint a { color: var(--color-accent-secondary); text-decoration: underline; }\n\n.wiz-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n/* Speaker / playlist rows */\n.wiz-row {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: var(--transition-fast);\n color: var(--color-text-white);\n text-align: left;\n width: 100%;\n font-family: var(--font-body);\n}\n.wiz-row:hover { background: var(--color-dark-surface-hover); }\n.wiz-row.selected {\n background: linear-gradient(90deg, rgba(255, 45, 106, 0.15), rgba(0, 245, 255, 0.05));\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 14px rgba(255, 45, 106, 0.25);\n}\n.wiz-row-avatar {\n width: 36px;\n height: 36px;\n border-radius: var(--radius-md);\n background: linear-gradient(135deg, var(--color-accent-primary), var(--color-accent-brand));\n flex-shrink: 0;\n display: grid;\n place-items: center;\n color: var(--color-bg-primary);\n}\n.wiz-row-avatar-icon {\n width: 20px;\n height: 20px;\n}\n.wiz-row-text { flex: 1; min-width: 0; }\n.wiz-row-name {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.wiz-row-sub {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n}\n.wiz-row-check {\n color: var(--color-success-neon);\n text-shadow: var(--glow-success);\n}\n\n/* Provider grid (Step 2) */\n.wiz-provider-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-sm);\n}\n.wiz-provider-chip {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n cursor: pointer;\n color: var(--color-text-white);\n transition: var(--transition-fast);\n}\n.wiz-provider-chip:hover { background: var(--color-dark-surface-hover); }\n.wiz-provider-chip.active {\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 14px rgba(255, 45, 106, 0.25);\n}\n.wiz-provider-chip.connected {\n border-color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.1);\n}\n\n/* Dimmed chip: provider not supported on the selected speaker (#772).\n Visible but obviously unavailable \u2014 clicking opens the explainer card. */\n.wiz-provider-chip {\n justify-content: space-between;\n}\n.wiz-provider-chip.disabled {\n opacity: 0.4;\n cursor: help;\n background: rgba(255, 255, 255, 0.02);\n}\n.wiz-provider-chip.disabled:hover {\n opacity: 0.55;\n background: rgba(255, 255, 255, 0.04);\n}\n.wiz-provider-chip .chip-lock {\n width: 14px;\n height: 14px;\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n/* Capability badge under the speaker platform label (Step 1, #772). */\n.wiz-row-sub .cap-dot {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: var(--color-text-dim);\n display: inline-block;\n margin: 0 6px;\n vertical-align: middle;\n}\n.wiz-row-sub .cap-badge {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n padding: 1px 6px;\n border-radius: var(--radius-sm);\n border: 1px solid;\n vertical-align: middle;\n /* #1319: the badge text itself never wraps \u2014 summaries keep it short, the\n accent cases (\"Spotify only\") are short by construction. */\n white-space: nowrap;\n}\n.wiz-row-sub .cap-badge.full {\n color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.08);\n border-color: rgba(57, 255, 20, 0.4);\n}\n.wiz-row-sub .cap-badge.partial {\n color: var(--color-warning-alt);\n background: rgba(255, 102, 0, 0.08);\n border-color: rgba(255, 102, 0, 0.4);\n}\n.wiz-row-sub .cap-badge.none {\n color: var(--color-error-neon);\n background: rgba(255, 0, 64, 0.08);\n border-color: rgba(255, 0, 64, 0.4);\n}\n/* #1319: multi-service capability is static info, not actionable \u2014 drop the\n orange/uppercase/pill chrome so the speaker name stays the hero. Muted,\n borderless, plain-case secondary text. The full list lives on the tooltip. */\n.wiz-row-sub .cap-badge.summary {\n color: var(--color-text-dim);\n background: none;\n border: none;\n padding: 0;\n text-transform: none;\n letter-spacing: 0;\n font-weight: 500;\n}\n\n/* Explainer card shown when user clicks a dimmed provider chip (#772). */\n.wiz-explainer {\n margin-top: var(--space-md);\n padding: var(--space-lg);\n border-radius: var(--radius-lg);\n background: linear-gradient(135deg, rgba(255, 102, 0, 0.06), rgba(0, 245, 255, 0.04));\n border: 1px solid rgba(255, 102, 0, 0.35);\n}\n.wiz-explainer[hidden] { display: none; }\n.wiz-explainer-title {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-md);\n margin: 0 0 var(--space-sm);\n}\n.wiz-explainer-title .icon { font-size: 18px; }\n.wiz-explainer-body {\n font-size: var(--font-size-base);\n line-height: 1.55;\n color: var(--color-text-neon-muted);\n margin: 0 0 var(--space-md);\n}\n.wiz-explainer-steps {\n margin: 0 0 var(--space-md);\n padding-left: var(--space-lg);\n font-size: var(--font-size-base);\n line-height: 1.75;\n color: var(--color-text-neon-muted);\n}\n.wiz-explainer-steps li strong { color: var(--color-text-white); }\n.wiz-explainer-actions {\n display: flex;\n gap: var(--space-sm);\n flex-wrap: wrap;\n}\n.wiz-explainer-footer {\n margin: var(--space-md) 0 0;\n padding-top: var(--space-sm);\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n font-size: var(--font-size-sm);\n color: var(--color-text-dim);\n font-style: italic;\n}\n\n/* Level-up cards (Step 4) */\n.wiz-lvl-card {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.wiz-lvl-card.on {\n background: rgba(0, 245, 255, 0.08);\n border-color: var(--color-accent-secondary);\n}\n.wiz-lvl-card.unavailable {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.wiz-lvl-text { flex: 1; }\n.wiz-lvl-title {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n color: var(--color-text-white);\n}\n.wiz-lvl-desc {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.4;\n}\n.wiz-lvl-toggle {\n width: 38px;\n height: 22px;\n background: var(--color-dark-surface-hover);\n border-radius: var(--radius-full);\n border: 1px solid var(--color-border-neon);\n position: relative;\n flex-shrink: 0;\n margin-top: 2px;\n}\n.wiz-lvl-toggle::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n background: var(--color-text-neon-muted);\n border-radius: var(--radius-full);\n transition: var(--transition-fast);\n}\n.wiz-lvl-card.on .wiz-lvl-toggle {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n}\n.wiz-lvl-card.on .wiz-lvl-toggle::after {\n left: 18px;\n background: var(--color-bg-primary);\n}\n\n/* Done screen */\n.wiz-done {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-lg);\n text-align: center;\n padding: var(--space-xl);\n position: relative;\n z-index: 1;\n}\n.wiz-done-badge {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-sm);\n letter-spacing: 0.14em;\n color: var(--color-success-neon);\n text-shadow: var(--glow-success);\n}\n.wiz-done-tag {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-xl);\n color: var(--color-text-white);\n}\n.wiz-done-summary {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n width: 100%;\n max-width: 380px;\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n}\n.wiz-done-line {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n gap: var(--space-lg);\n font-family: var(--font-display);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n}\n.wiz-done-line > span {\n letter-spacing: 0.08em;\n text-transform: uppercase;\n font-size: var(--font-size-xs);\n font-weight: 600;\n flex-shrink: 0;\n}\n.wiz-done-line strong {\n color: var(--color-text-white);\n font-weight: 600;\n text-align: right;\n word-break: break-word;\n}\n.wiz-done-demo {\n width: 100%;\n max-width: 400px;\n aspect-ratio: 16/9;\n border: 1px solid var(--color-accent-primary);\n border-radius: var(--radius-xl);\n background: var(--color-bg-primary);\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n box-shadow: 0 0 30px rgba(255, 45, 106, 0.3);\n}\n.wiz-done-demo-label {\n font-family: var(--font-display);\n font-size: var(--font-size-xs);\n font-weight: 600;\n color: var(--color-text-neon-muted);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n}\n.wiz-done-demo-year {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 64px;\n line-height: 0.9;\n color: var(--color-accent-primary);\n text-shadow: 0 0 24px rgba(255, 45, 106, 0.6);\n letter-spacing: -0.03em;\n}\n.wiz-done-demo-song {\n font-family: var(--font-display);\n font-size: var(--font-size-sm);\n font-weight: 600;\n color: var(--color-text-neon-muted);\n}\n\n/* CTA bar */\n.wiz-cta {\n padding: var(--space-md) var(--space-lg);\n display: flex;\n gap: var(--space-sm);\n border-top: 1px solid var(--color-border-neon);\n background: rgba(0, 0, 0, 0.3);\n position: relative;\n z-index: 1;\n}\n.wiz-cta .btn { flex: 1; }\n.wiz-cta .wiz-back { flex: 0 0 auto; min-width: 80px; }\n\n/* On step 3 the Playlist Hub renders its own CTA + detail sheet flush\n to the viewport bottom. wizard.js hides the legacy wiz-next/wiz-back\n buttons individually, but the wrapper itself stays visible \u2014 a ~33px\n tall empty band with padding + border + semi-opaque background pinned\n to the viewport bottom. Because `.wiz-cta` (z-1) is later in the DOM\n than `.wiz-frame` (z-1) at the same z-index inside `.wizard-takeover`,\n it paints on top of the wiz-frame subtree, including the playlist\n hub's `.plh-sheet-host`. (The host's z-50 only counts inside\n `.plh-root`'s `isolation: isolate` stacking context, not against\n wiz-cta.) The detail sheet's footer button at viewport bottom\n appeared clipped by the band. Drop the band on step 3 \u2014 the hub\n owns the chrome there. */\n.wiz-frame-playlist:not([hidden]) ~ .wiz-cta {\n display: none;\n}\n\n/* Finish-setup pill in admin header */\n.finish-setup-pill {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.1);\n border: 1px solid rgba(255, 45, 106, 0.4);\n border-radius: var(--radius-full);\n padding: var(--space-xs) var(--space-md);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.finish-setup-pill:hover {\n background: rgba(255, 45, 106, 0.2);\n box-shadow: var(--glow-primary);\n}\n.finish-setup-pill.hidden { display: none; }\n\n/* Reduced-motion: collapse glow pulses to a single static state */\n@media (prefers-reduced-motion: reduce) {\n .wizard-takeover,\n .wizard-takeover * {\n animation: none !important;\n transition: none !important;\n }\n}\n\n/* Wizard Step 3 \u2014 game-mode form fields */\n.wiz-field {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n}\n.wiz-field-label {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-xs);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.wiz-chip-group {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-xs);\n}\n.wiz-chip {\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-text-white);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.wiz-chip:hover { background: var(--color-dark-surface-hover); }\n.wiz-chip.active {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-primary);\n}\n\n/* Step 3 \u2014 \"Request new playlist\" CTA below the playlist list */\n.wiz-request-playlist {\n margin-top: var(--space-md);\n align-self: flex-start;\n}\n\n/* When wizard is active, lift modals above the takeover overlay */\nbody.wizard-active .modal { z-index: calc(var(--z-overlay) + 10); }\n\n.wiz-difficulty-hint {\n margin-top: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: rgba(0, 245, 255, 0.06);\n border-left: 2px solid var(--color-accent-secondary);\n border-radius: var(--radius-sm);\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-sm);\n line-height: 1.5;\n min-height: 1.5em;\n}\n\n/* #1475 \u2014 number field revealed by the \"Custom\" round-count chip */\n.wiz-rounds-custom {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n}\n\n.wiz-rounds-custom input {\n width: 6em;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-sm);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n}\n\n.wiz-rounds-custom input:focus {\n outline: none;\n border-color: var(--color-accent-primary);\n}\n\n.wiz-rounds-custom span {\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-sm);\n}\n\n/* Wizard Step 5 \u2014 expandable detail panels under level-up toggles */\n.wiz-lvl-card {\n flex-direction: column;\n align-items: stretch;\n padding: 0;\n}\n.wiz-lvl-head {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n cursor: pointer;\n user-select: none;\n}\n.wiz-lvl-card.unavailable .wiz-lvl-head { cursor: not-allowed; }\n.wiz-lvl-head:hover { background: rgba(255,255,255,0.02); }\n.wiz-lvl-card.on .wiz-lvl-head { border-bottom: 1px solid var(--color-border-neon); }\n\n.wiz-detail {\n padding: var(--space-md);\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n background: rgba(0,0,0,0.15);\n}\n.wiz-detail-checks {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n}\n.wiz-detail-check {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: 6px 8px;\n border-radius: var(--radius-md);\n cursor: pointer;\n}\n.wiz-detail-check:hover { background: rgba(255,255,255,0.03); }\n.wiz-detail-check input[type=\"checkbox\"] {\n accent-color: var(--color-accent-primary);\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n.wiz-detail-check-name {\n font-family: var(--font-display);\n font-weight: 500;\n font-size: var(--font-size-sm);\n color: var(--color-text-white);\n}\n.wiz-detail-empty {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n padding: var(--space-sm);\n background: var(--color-dark-surface);\n border: 1px dashed var(--color-border-neon);\n border-radius: var(--radius-md);\n text-align: center;\n}\n.wiz-detail-input {\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n color: var(--color-text-white);\n font-family: ui-monospace, monospace;\n font-size: var(--font-size-sm);\n}\n.wiz-detail-input:focus {\n outline: none;\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 0 3px rgba(0,245,255,0.15);\n}\n.wiz-field-hint {\n font-size: var(--font-size-xs);\n color: var(--color-text-dim);\n line-height: 1.4;\n}\n\n/* ==========================================\n Home view (post-wizard lobby landing)\n ========================================== */\n\n/* When body is in home-mode: show the home-view card, hide only the setup/config sections.\n Runtime views (#admin-playing-*, #admin-reveal-*, #admin-end-*) stay untouched \u2014\n home-mode is exited before any of those show anyway. */\n/* #1138 cleanup: #my-requests + #ha-entities selectors removed \u2014 those legacy\n flat sections were deleted from admin.html. */\nbody.home-mode #media-players,\nbody.home-mode #music-service,\nbody.home-mode #playlists,\nbody.home-mode #game-settings,\nbody.home-mode #party-lights,\nbody.home-mode #tts-settings,\nbody.home-mode .admin-content > .admin-actions {\n display: none !important;\n}\n/* Variant A \u2014 QR Hero aesthetic for the home-view.\n Centered stage, glowing hero card, dual CTA bar. QR + player chips render\n inline via BeatifyHome.renderSession once Start game creates the session. */\n.home-view { display: none; }\n.home-view.hidden { display: none !important; }\nbody.home-mode #home-view,\nbody.home-mode .home-view {\n display: flex;\n flex-direction: column;\n min-height: calc(100vh - 120px);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--space-md);\n}\n\n.home-stage {\n flex: 1;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-md);\n padding: var(--space-xl) var(--space-lg);\n text-align: center;\n}\n.home-stage-bg {\n position: absolute;\n inset: 0;\n pointer-events: none;\n background:\n radial-gradient(ellipse at center, rgba(255, 45, 106, 0.15), transparent 55%),\n radial-gradient(ellipse at bottom, rgba(0, 245, 255, 0.08), transparent 50%);\n}\n\n.home-eyebrow {\n position: relative;\n z-index: 1;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-sm);\n letter-spacing: 0.16em;\n text-transform: uppercase;\n color: var(--color-accent-secondary);\n}\n\n.home-headline {\n position: relative;\n z-index: 1;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n line-height: 0.95;\n letter-spacing: -0.02em;\n margin: 0;\n text-shadow: 0 0 40px rgba(255, 45, 106, 0.35);\n}\n.home-headline-sub {\n display: block;\n font-weight: 600;\n font-size: var(--font-size-xl);\n letter-spacing: 0.02em;\n text-shadow: none;\n color: var(--color-text-white);\n margin-top: 4px;\n}\n\n/* Hero card \u2014 visual placeholder for the QR that appears after Start */\n.home-hero-card {\n position: relative;\n z-index: 1;\n padding: var(--space-lg);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-accent-primary);\n border-radius: var(--radius-2xl);\n box-shadow: 0 0 32px rgba(255, 45, 106, 0.22);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n max-width: 280px;\n width: 100%;\n}\n.home-qr-loading {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n padding: var(--space-xl) 0;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n.home-qr-loading.hidden { display: none; }\n.home-qr-container {\n padding: 8px;\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n display: grid;\n place-items: center;\n min-width: 180px;\n min-height: 180px;\n}\n.home-qr-container:empty { display: none; }\n.home-qr-container img, .home-qr-container canvas {\n display: block;\n max-width: 180px;\n height: auto;\n}\n.home-hero-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n letter-spacing: -0.01em;\n}\n.home-hero-sub {\n font-size: var(--font-size-sm);\n color: var(--color-accent-secondary);\n font-family: ui-monospace, monospace;\n word-break: break-all;\n max-width: 260px;\n}\n\n/* Live player tiles \u2014 Jackbox-style grid. Host wears the pink-primary\n \"leader\" treatment (DESIGN.md); guests cycle through the brand neon\n palette (cyan \u2192 green \u2192 orange) so each player reads distinctly. */\n.home-players {\n position: relative;\n z-index: 1;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));\n gap: var(--space-sm);\n justify-items: center;\n width: 100%;\n max-width: 380px;\n margin-top: var(--space-lg);\n}\n.home-players:empty { display: none; }\n\n.home-player-tile {\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n padding: var(--space-sm);\n border-radius: var(--radius-lg);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n background: linear-gradient(135deg, var(--tile-from), var(--tile-to));\n border: 1.5px solid var(--tile-border);\n box-shadow: 0 0 14px var(--tile-glow);\n /* Guest default = cyan (c1). Variants override via custom props. */\n --tile-from: rgba(0, 245, 255, 0.32);\n --tile-to: rgba(0, 245, 255, 0.08);\n --tile-border: rgba(0, 245, 255, 0.7);\n --tile-glow: rgba(0, 245, 255, 0.35);\n}\n.home-player-tile-initial {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 28px;\n line-height: 1;\n color: var(--color-text-white);\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n}\n.home-player-tile-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n color: var(--color-text-white);\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0 2px;\n}\n/* Guest color variants cycle through brand neon palette (no purple \u2014\n reserved for analytics/steal per DESIGN.md). */\n.home-player-tile--c2 {\n --tile-from: rgba(57, 255, 20, 0.32);\n --tile-to: rgba(57, 255, 20, 0.08);\n --tile-border: rgba(57, 255, 20, 0.65);\n --tile-glow: rgba(57, 255, 20, 0.32);\n}\n.home-player-tile--c3 {\n --tile-from: rgba(255, 102, 0, 0.32);\n --tile-to: rgba(255, 102, 0, 0.08);\n --tile-border: rgba(255, 102, 0, 0.65);\n --tile-glow: rgba(255, 102, 0, 0.32);\n}\n.home-player-tile--c4 {\n --tile-from: rgba(0, 245, 255, 0.22);\n --tile-to: rgba(0, 245, 255, 0.04);\n --tile-border: rgba(0, 245, 255, 0.5);\n --tile-glow: rgba(0, 245, 255, 0.22);\n}\n/* Host tile \u2014 pink primary + glow-primary (DESIGN.md \"leader highlights\"). */\n.home-player-tile--host {\n --tile-from: rgba(255, 45, 106, 0.35);\n --tile-to: rgba(255, 45, 106, 0.08);\n --tile-border: rgba(255, 45, 106, 0.85);\n --tile-glow: rgba(255, 45, 106, 0.5);\n box-shadow: var(--glow-primary), 0 0 22px rgba(255, 45, 106, 0.35);\n}\n.home-player-tile-crown {\n position: absolute;\n top: -10px;\n right: -10px;\n font-size: 20px;\n line-height: 1;\n filter: drop-shadow(0 0 6px rgba(255, 45, 106, 0.8));\n pointer-events: none;\n}\n/* Empty-state: single full-width dashed pill (not a tile, to keep the\n \"no one here yet\" vibe distinct from \"someone is here\"). */\n.home-players-waiting {\n grid-column: 1 / -1;\n padding: var(--space-md);\n border-radius: var(--radius-full);\n border: 1px dashed var(--color-border-neon);\n background: transparent;\n color: var(--color-text-dim);\n font-family: var(--font-display);\n font-weight: 500;\n font-size: var(--font-size-sm);\n text-align: center;\n}\n\n.home-meta {\n position: relative;\n z-index: 1;\n font-family: var(--font-display);\n font-weight: 500;\n font-size: var(--font-size-xs);\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--color-text-dim);\n max-width: 320px;\n line-height: 1.6;\n}\n\n/* Sticky CTA bar at the bottom of the home card */\n.home-cta-bar {\n display: flex;\n gap: var(--space-sm);\n padding: var(--space-md) var(--space-lg);\n background: rgba(0, 0, 0, 0.3);\n border-top: 1px solid var(--color-border-neon);\n}\n.home-cta-edit {\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-sm);\n}\n.home-cta-start {\n flex: 1;\n padding: var(--space-md);\n font-size: var(--font-size-base);\n box-shadow: var(--glow-primary), 0 0 40px rgba(255, 45, 106, 0.25);\n}\n/* When Start game is demoted (admin hasn't joined yet), drop its glow so the eye\n lands on the prominent \"Join as player\" CTA instead. */\n.home-cta-start.btn-ghost { box-shadow: none; flex: 0 0 auto; }\n\n/* Prominent Join-as-player CTA \u2014 lives above the Back/Start row inside the\n home-stage column. Full-width + oversized so the admin's next step is\n unmissable (it's the single most important action on the home-view). */\n.home-cta-join {\n width: 100%;\n margin-top: var(--space-md);\n padding: var(--space-lg) var(--space-md);\n font-size: var(--font-size-xl);\n font-weight: 700;\n letter-spacing: 0.02em;\n border-radius: var(--radius-xl);\n box-shadow: var(--glow-primary), 0 0 48px rgba(255, 45, 106, 0.3);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n}\n.home-cta-join svg {\n width: 26px;\n height: 26px;\n stroke-width: 2.25;\n}\n.home-cta-join.hidden { display: none; }\n\n/* Wizard Step 4 \u2014 game mode cards (Artist Challenge / Intro Mode / Closest Wins) */\n.wiz-mode-cards {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n}\n.wiz-mode-card {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.wiz-mode-card:hover { background: var(--color-dark-surface-hover); }\n/* Issue #827: a mode card disabled by an unmet requirement (e.g. Sudden Death\n below the 3-player floor) is dimmed and non-interactive.\n Issue #1799: the dimming used to sit on the card itself, which also dimmed\n the line explaining WHY it is blocked \u2014 the one line that has to stay\n readable. Dim the card's own content instead and leave .wiz-mode-hint.gated\n at full contrast. */\n.wiz-mode-card.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n.wiz-mode-card.disabled .wiz-mode-icon,\n.wiz-mode-card.disabled .wiz-mode-title,\n.wiz-mode-card.disabled .wiz-lvl-toggle {\n opacity: 0.45;\n}\n/* Issue #1799: the gating requirement, shown in place of the mode hint. It is\n the only visible explanation on touch (no hover \u2192 no title tooltip). */\n.wiz-mode-hint.gated {\n color: var(--color-warning);\n font-weight: 600;\n}\n.wiz-mode-card.on {\n background: rgba(255, 45, 106, 0.08);\n border-color: var(--color-accent-primary);\n}\n.wiz-mode-icon {\n font-size: 22px;\n line-height: 1;\n flex-shrink: 0;\n margin-top: 2px;\n}\n.wiz-mode-body { flex: 1; min-width: 0; }\n.wiz-mode-title {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n color: var(--color-text-white);\n}\n.wiz-mode-hint {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.45;\n}\n.wiz-mode-card.on .wiz-lvl-toggle {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n}\n.wiz-mode-card.on .wiz-lvl-toggle::after {\n left: 18px;\n background: var(--color-bg-primary);\n}\n\n/* Wizard Step 4 \u2014 core game-mode selector (#1180).\n \"Pick your game\" split: two poster panels, each with its own accent\n (year = pink, title&artist = cyan). The chosen one lifts + glows and shows a\n \"Playing\" badge; the other dims. Shared .wiz-mode-* type rules are overridden\n only inside .wiz-coremode-card so the bonus-mode cards are unaffected. */\n.wiz-coremode-cards {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--space-sm);\n}\n.wiz-coremode-card {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 6px;\n padding: var(--space-md) var(--space-sm);\n background: var(--color-dark-surface);\n border: 1.5px solid var(--color-border-neon);\n border-radius: var(--radius-xl);\n cursor: pointer;\n overflow: hidden;\n transition: transform var(--transition-fast), box-shadow var(--transition-fast),\n background var(--transition-fast), border-color var(--transition-fast),\n opacity var(--transition-fast);\n}\n.wiz-coremode-card:hover { background: var(--color-dark-surface-hover); }\n.wiz-coremode-card .wiz-mode-icon {\n font-size: 32px;\n margin-top: 0;\n}\n.wiz-coremode-card .wiz-mode-body { flex: none; }\n.wiz-coremode-card .wiz-mode-title {\n font-weight: 900;\n letter-spacing: 0.02em;\n text-transform: uppercase;\n}\n.wiz-coremode-card .wiz-mode-hint { color: var(--color-text-dim); }\n\n/* Selected \u2014 accent fill + lift + glow, per mode. */\n.wiz-coremode-card.selected { transform: translateY(-2px); }\n.wiz-coremode-card--pink.selected {\n border-color: var(--color-accent-primary);\n background: radial-gradient(120% 100% at 50% 0%, rgba(255, 45, 106, 0.22), rgba(255, 45, 106, 0.04));\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.30);\n}\n.wiz-coremode-card--cyan.selected {\n border-color: var(--color-accent-secondary);\n background: radial-gradient(120% 100% at 50% 0%, rgba(0, 245, 255, 0.20), rgba(0, 245, 255, 0.03));\n box-shadow: 0 0 24px rgba(0, 245, 255, 0.28);\n}\n\n/* Unselected \u2014 dimmed, but lifts toward full on hover so it still feels pickable. */\n.wiz-coremode-card.dim { opacity: 0.5; }\n.wiz-coremode-card.dim:hover { opacity: 0.8; }\n\n/* \"Playing\" badge, top-right, tinted to the panel's accent. */\n.wiz-coremode-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 9px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n padding: 2px 7px;\n border-radius: var(--radius-full);\n}\n.wiz-coremode-card--pink .wiz-coremode-badge {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n}\n.wiz-coremode-card--cyan .wiz-coremode-badge {\n background: var(--color-accent-secondary);\n color: #04222a;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .wiz-coremode-card { transition: none; }\n .wiz-coremode-card.selected { transform: none; }\n}\n\n/* Home-view: Cast to TV link */\n.home-cast-link {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-accent-secondary);\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-accent-secondary);\n text-decoration: none;\n position: relative;\n z-index: 1;\n transition: var(--transition-fast);\n}\n.home-cast-link:hover {\n background: rgba(0, 245, 255, 0.08);\n box-shadow: var(--glow-secondary);\n}\n.home-cast-link.hidden { display: none; }\n\n/* Wizard Step 5: TTS test button */\n.wiz-detail-test {\n align-self: flex-start;\n margin-top: var(--space-xs);\n padding: var(--space-xs) var(--space-md);\n font-size: var(--font-size-xs);\n}\n.wiz-detail-test[disabled] { opacity: 0.5; cursor: not-allowed; }\n\n/* Wizard Step 5: WLED phase preset grid */\n.wiz-wled-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-xs);\n}\n.wiz-wled-row {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n.wiz-wled-phase {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 10px;\n letter-spacing: 0.1em;\n color: var(--color-text-dim);\n min-width: 72px;\n}\n.wiz-wled-input {\n width: 60px;\n padding: 4px 8px;\n text-align: center;\n font-family: ui-monospace, monospace;\n font-size: var(--font-size-sm);\n}\n\n\n/* Home-view utility row \u2014 Cast to TV + Print QR sit side-by-side */\n.home-utility-row {\n display: flex;\n gap: var(--space-sm);\n flex-wrap: wrap;\n justify-content: center;\n position: relative;\n z-index: 1;\n}\n.home-utility-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.home-utility-btn:hover {\n color: var(--color-text-white);\n border-color: var(--color-accent-secondary);\n}\n.home-utility-btn.hidden { display: none; }\n\n/* End game button \u2014 only visible when a LOBBY session exists. Red-neon tint. */\n.home-cta-end {\n border-color: rgba(255, 0, 64, 0.4);\n color: var(--color-error-neon);\n}\n.home-cta-end:hover {\n background: rgba(255, 0, 64, 0.1);\n box-shadow: 0 0 12px rgba(255, 0, 64, 0.3);\n}\n.home-cta-end.hidden { display: none; }\n\n/* Home-view unconfigured state \u2014 setup prompt hero */\n.home-hero-card--setup {\n border-color: var(--color-border-neon);\n box-shadow: none;\n gap: var(--space-md);\n}\n.home-setup-glyph {\n width: 56px;\n height: 56px;\n display: grid;\n place-items: center;\n color: var(--color-accent-secondary);\n text-shadow: 0 0 12px rgba(0, 245, 255, 0.4);\n}\n.home-setup-glyph svg { width: 100%; height: 100%; }\n.home-hero-sub--plain {\n color: var(--color-text-neon-muted);\n font-family: var(--font-body);\n text-align: center;\n font-size: var(--font-size-sm);\n line-height: 1.5;\n max-width: 280px;\n}\n\n/* Setup-mode CTA takes the full width of the bar */\n.home-cta-setup {\n flex: 1;\n padding: var(--space-md);\n font-size: var(--font-size-base);\n box-shadow: var(--glow-primary), 0 0 40px rgba(255, 45, 106, 0.25);\n}\n.home-cta-setup.hidden { display: none; }\n\n/* ==========================================================================\n Player Onboarding v2 (DESIGN.md \u00A7 Player onboarding \u2014 post-QR education)\n ========================================================================== */\n\n/* Hide the outer .player-header (wordmark + connection indicator) on the\n tour/ready screens so they run full-screen \u2014 the ready view has its own\n wordmark hero and the tour has its own step-progress header. */\nbody.is-learning-screen .player-header { display: none; }\n/* During active play (the guessing round + the reveal) the big wordmark is\n redundant chrome and just eats vertical space, so hide the outer header \u2014\n the game/reveal cards carry their own context. Branding stays on the\n join / lobby / end screens. */\nbody.is-ingame .player-header { display: none; }\n\n/* Tour view \u2014 full-screen takeover, dark stage + dual-radial glow */\n#tour-view.view:not(.hidden) {\n display: flex;\n flex-direction: column;\n}\n.tour-container {\n min-height: 100vh;\n padding: var(--space-xl) var(--space-md) var(--space-md);\n background:\n radial-gradient(circle at 50% 10%, rgba(255, 45, 106, 0.10), transparent 55%),\n radial-gradient(circle at 85% 90%, rgba(0, 245, 255, 0.08), transparent 55%),\n var(--color-bg-primary);\n display: flex;\n flex-direction: column;\n}\n\n/* Wizard-style progress header (matches admin first-run wizard pattern) */\n.tour-header-wiz {\n margin-bottom: var(--space-lg);\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n.tour-step-count {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 600;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.tour-step-count .of { color: var(--color-text-dim); font-weight: 500; }\n.tour-skip-link {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 500;\n color: var(--color-text-dim);\n background: transparent;\n border: 0;\n cursor: pointer;\n padding: var(--space-xs) var(--space-sm);\n transition: color var(--transition-fast);\n}\n.tour-skip-link:hover,\n.tour-skip-link:focus-visible {\n color: var(--color-text-neon-muted);\n outline: none;\n}\n.tour-wiz-progress {\n display: flex;\n gap: 4px;\n width: 100%;\n}\n.tour-wiz-seg {\n flex: 1;\n height: 3px;\n background: rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-full);\n overflow: hidden;\n position: relative;\n}\n.tour-wiz-seg.filled {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n}\n.tour-wiz-seg.active .tour-wiz-seg-inner {\n height: 100%;\n width: 60%;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n border-radius: var(--radius-full);\n}\n\n/* Tour card \u2014 one per step */\n.tour-card {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--space-md) 0;\n animation: tour-card-enter var(--transition-slow) ease-out;\n}\n@keyframes tour-card-enter {\n from { opacity: 0; transform: translateY(12px); }\n to { opacity: 1; transform: translateY(0); }\n}\n.tour-card.hidden { display: none; }\n@media (prefers-reduced-motion: reduce) {\n .tour-card { animation: none; }\n}\n\n.tour-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 2.5rem; /* ~40px \u2014 scales between 4xl and display */\n line-height: 1.0;\n text-align: center;\n color: var(--color-text-white);\n letter-spacing: -0.02em;\n margin-bottom: var(--space-sm);\n}\n.tour-caption {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: var(--font-size-lg);\n text-align: center;\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-xl);\n max-width: 320px;\n}\n\n.tour-preview {\n flex: 1;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n/* Preview: year slider (card 1) */\n.tour-preview-album {\n width: 88px; height: 88px;\n border-radius: var(--radius-lg);\n background: linear-gradient(135deg, #2a1b4a 0%, #1a1a24 100%);\n border: 1px solid rgba(255, 255, 255, 0.08);\n display: flex; align-items: center; justify-content: center;\n position: relative;\n overflow: hidden;\n}\n.tour-preview-album::after {\n content: '';\n position: absolute;\n width: 32px; height: 32px;\n border-radius: 50%;\n background: radial-gradient(circle, #0a0a12 28%, #2a2a3a 29%, #2a2a3a 62%, #0a0a12 63%);\n border: 1px solid rgba(255, 255, 255, 0.08);\n}\n.tour-preview-album::before {\n content: '\u266A';\n position: absolute;\n font-size: 26px;\n color: var(--color-accent-secondary);\n opacity: 0.75;\n z-index: 1;\n}\n.tour-year-display {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-md);\n}\n.tour-year-adjust {\n width: 38px; height: 38px;\n border-radius: 50%;\n border: 1.5px solid rgba(255, 255, 255, 0.25);\n background: transparent;\n color: rgba(255, 255, 255, 0.6);\n font-size: var(--font-size-xl);\n font-weight: 400;\n display: flex; align-items: center; justify-content: center;\n}\n.tour-year-big {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 4.25rem; /* ~68px \u2014 below year reveal's 56px per DESIGN.md rationale */\n color: var(--color-accent-secondary);\n text-shadow: 0 0 24px rgba(0, 245, 255, 0.6);\n line-height: 1;\n letter-spacing: -0.03em;\n}\n.tour-preview-slider {\n width: 100%;\n max-width: 320px;\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n}\n.tour-slider-label {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: rgba(255, 255, 255, 0.5);\n min-width: 34px;\n text-align: center;\n}\n.tour-slider-track {\n flex: 1;\n height: 4px;\n background: rgba(255, 255, 255, 0.15);\n border-radius: 2px;\n position: relative;\n}\n.tour-slider-thumb {\n position: absolute;\n top: 50%;\n left: 45.3%;\n transform: translate(-50%, -50%);\n width: 20px; height: 20px;\n border-radius: 50%;\n background: var(--color-accent-secondary);\n box-shadow: 0 0 16px rgba(0, 245, 255, 0.8);\n border: 2px solid var(--color-bg-primary);\n}\n\n/* Preview: bet (card 2) */\n.tour-bet-button {\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.12), rgba(255, 45, 106, 0.06));\n border: 2px solid var(--color-accent-primary);\n border-radius: var(--radius-xl);\n padding: var(--space-md) var(--space-lg);\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.35);\n}\n.tour-bet-button .tour-bet-dice {\n font-size: 30px;\n filter: drop-shadow(0 0 6px rgba(255, 45, 106, 0.6));\n}\n.tour-bet-button .tour-bet-label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n}\n.tour-bet-score {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-surface);\n border-radius: var(--radius-md);\n border: 1px solid rgba(255, 255, 255, 0.06);\n}\n.tour-bet-score-base {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-2xl);\n color: var(--color-text-neon-muted);\n}\n.tour-bet-score-op { color: var(--color-text-dim); font-size: var(--font-size-lg); }\n.tour-bet-score-multi {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-2xl);\n color: var(--color-accent-primary);\n}\n.tour-bet-score-final {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n color: var(--color-success-neon);\n text-shadow: 0 0 12px rgba(57, 255, 20, 0.5);\n}\n\n/* Preview: steal (card 3) */\n.tour-steal-button {\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.12), rgba(0, 245, 255, 0.04));\n border: 2px solid var(--color-accent-secondary);\n border-radius: var(--radius-xl);\n padding: var(--space-md) var(--space-lg);\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n box-shadow: 0 0 24px rgba(0, 245, 255, 0.4);\n}\n.tour-steal-button .tour-steal-ninja { font-size: 30px; }\n.tour-steal-button .tour-steal-label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n}\n.tour-steal-targets {\n display: flex;\n gap: var(--space-sm);\n align-items: center;\n}\n.tour-steal-target {\n background: var(--color-bg-surface);\n border-radius: var(--radius-md);\n padding: var(--space-sm) var(--space-md);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 500;\n color: var(--color-text-neon-muted);\n border: 1px solid rgba(255, 255, 255, 0.06);\n}\n.tour-steal-target.highlighted {\n color: var(--color-text-white);\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 12px rgba(0, 245, 255, 0.35);\n}\n.tour-hint {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: rgba(255, 255, 255, 0.4);\n text-align: center;\n font-style: italic;\n margin-top: var(--space-xs);\n}\n\n/* Preview: Title & Artist mode (card 5, #1180) */\n.tour-ta-fields {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n width: 100%;\n}\n.tour-ta-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 10px 14px;\n background: linear-gradient(180deg, rgba(255, 45, 106, 0.06), rgba(255, 255, 255, 0.02));\n border: 1px solid rgba(255, 45, 106, 0.22);\n border-radius: var(--radius-lg);\n text-align: left;\n}\n.tour-ta-field-label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.tour-ta-field-val {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: var(--font-size-md);\n color: var(--color-text-white);\n}\n\n/* Preview: artist (card 4) */\n.tour-artist-prompt {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-surface);\n border-radius: var(--radius-md);\n border: 1px solid rgba(255, 255, 255, 0.06);\n width: 100%;\n max-width: 320px;\n}\n.tour-artist-prompt .tour-artist-mic { font-size: var(--font-size-xl); }\n.tour-artist-prompt .tour-artist-who {\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n font-weight: 500;\n color: var(--color-text-white);\n}\n.tour-artist-prompt .tour-artist-bonus {\n margin-left: auto;\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 700;\n font-size: var(--font-size-sm);\n padding: 2px var(--space-sm);\n border-radius: var(--radius-full);\n}\n.tour-artist-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--space-sm);\n width: 100%;\n max-width: 320px;\n}\n.tour-artist-option {\n min-height: 48px;\n padding: var(--space-sm) var(--space-md);\n border: 2px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-md);\n background: var(--color-bg-surface);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: default;\n}\n.tour-artist-option.is-winner {\n background: var(--color-success);\n border-color: var(--color-success);\n color: var(--color-text-white);\n box-shadow: var(--glow-primary);\n}\n\n/* Tour footer: Skip + Next buttons */\n.tour-footer {\n margin-top: auto;\n padding-top: var(--space-md);\n display: flex;\n gap: var(--space-sm);\n align-items: stretch;\n}\n.btn-tour-skip {\n flex: 1;\n background: transparent;\n color: var(--color-text-neon-muted);\n border: 1.5px solid rgba(255, 255, 255, 0.15);\n border-radius: var(--radius-lg);\n padding: var(--space-md) var(--space-md);\n font-family: var(--font-body);\n font-weight: 600;\n font-size: var(--font-size-md);\n cursor: pointer;\n}\n.btn-tour-skip:hover,\n.btn-tour-skip:focus-visible {\n border-color: rgba(255, 255, 255, 0.3);\n color: var(--color-text-white);\n outline: none;\n}\n.btn-tour-next {\n flex: 2;\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n border: none;\n border-radius: var(--radius-lg);\n padding: var(--space-md) var(--space-lg);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n box-shadow: var(--glow-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n}\n.btn-tour-next .chev { opacity: 0.85; }\n\n/* Ready view \u2014 showtime transition between tour and lobby */\n#ready-view.view:not(.hidden) {\n display: flex;\n flex-direction: column;\n}\n.ready-container {\n min-height: 100vh;\n padding: var(--space-xl);\n background:\n radial-gradient(circle at 50% 30%, rgba(255, 45, 106, 0.10), transparent 55%),\n radial-gradient(circle at 85% 80%, rgba(0, 245, 255, 0.08), transparent 55%),\n var(--color-bg-primary);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--space-sm);\n}\n.ready-wordmark {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 5rem; /* ~80px \u2014 at hero scale */\n letter-spacing: -0.02em;\n margin-bottom: var(--space-sm);\n text-shadow: 0 0 48px rgba(255, 45, 106, 0.55);\n animation: ready-wordmark-in 0.5s ease-out;\n}\n.ready-wordmark .beat { color: var(--color-text-white); }\n.ready-wordmark .ify {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n color: transparent;\n}\n@keyframes ready-wordmark-in {\n from { opacity: 0; transform: translateY(16px); }\n to { opacity: 1; transform: translateY(0); }\n}\n.ready-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-3xl);\n color: var(--color-text-white);\n margin-bottom: var(--space-xs);\n animation: ready-fade-in 0.5s ease-out 0.1s both;\n}\n.ready-subtitle {\n font-family: var(--font-body);\n font-size: var(--font-size-md);\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-2xl);\n animation: ready-fade-in 0.5s ease-out 0.2s both;\n}\n@keyframes ready-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n.ready-waiting {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-md);\n animation: ready-fade-in 0.5s ease-out 0.3s both;\n}\n.ready-pulse {\n position: relative;\n width: 16px; height: 16px;\n border-radius: 50%;\n background: var(--color-accent-secondary);\n box-shadow: 0 0 12px rgba(0, 245, 255, 0.7);\n}\n.ready-pulse::before {\n content: '';\n position: absolute;\n inset: -8px;\n border-radius: 50%;\n border: 2px solid var(--color-accent-secondary);\n opacity: 0.6;\n animation: ready-pulse-ring 1.8s ease-out infinite;\n}\n@keyframes ready-pulse-ring {\n 0% { transform: scale(0.6); opacity: 0.8; }\n 100% { transform: scale(2.4); opacity: 0; }\n}\n@media (prefers-reduced-motion: reduce) {\n .ready-wordmark, .ready-name, .ready-subtitle, .ready-waiting { animation: none; }\n .ready-pulse::before { animation: none; opacity: 0; }\n}\n.ready-label {\n font-family: var(--font-body);\n font-size: var(--font-size-md);\n font-weight: 500;\n color: var(--color-text-white);\n}\n.ready-count {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: var(--color-text-dim);\n}\n\n/* Lobby: Replay-tour link */\n.replay-tour-link {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: 1px dashed rgba(255, 45, 106, 0.4);\n border-radius: var(--radius-md);\n color: var(--color-accent-primary);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 600;\n text-decoration: none;\n margin-bottom: var(--space-sm);\n cursor: pointer;\n width: 100%;\n transition: all var(--transition-fast);\n}\n.replay-tour-link:hover,\n.replay-tour-link:focus-visible {\n border-color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.05);\n outline: none;\n}\n.replay-tour-link .arrow { margin-left: auto; }\n\n/* Admin home-view: LEARNING player state */\n.home-player-tile--learning {\n border-style: dashed !important;\n opacity: 0.72;\n}\n.home-player-tile-tour {\n position: absolute;\n top: -6px;\n right: -6px;\n background: rgba(0, 245, 255, 0.1);\n color: var(--color-accent-secondary);\n font-family: var(--font-body);\n font-size: 9px;\n font-weight: 700;\n letter-spacing: 0.06em;\n padding: 2px 6px;\n border-radius: var(--radius-full);\n border: 1px solid rgba(0, 245, 255, 0.4);\n box-shadow: 0 0 8px rgba(0, 245, 255, 0.25);\n}\n.home-learning-warning {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-xs);\n padding: var(--space-sm) var(--space-md);\n margin-bottom: var(--space-sm);\n background: rgba(255, 102, 0, 0.08);\n border: 1px solid rgba(255, 102, 0, 0.25);\n border-radius: var(--radius-md);\n color: var(--color-warning-alt);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 500;\n text-align: center;\n}\n.home-learning-warning.hidden { display: none; }\n\n/* ==========================================================================\n Player lobby \u2014 tile grid (mirrors admin .home-player-tile)\n Jackbox-style tiles replace the legacy flat .player-card chips. Host wears\n pink + crown; guests cycle cyan \u2192 green \u2192 orange \u2192 dim-cyan in join order;\n current player gets a cyan \"YOU\" chip in the same top-right slot as the\n crown (they never collide \u2014 is_admin resolves to crown first).\n ========================================================================== */\n.player-tiles-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));\n gap: var(--space-sm);\n justify-items: center;\n width: 100%;\n}\n.player-tiles-grid:empty { display: none; }\n\n.player-tile {\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n padding: var(--space-sm);\n border-radius: var(--radius-lg);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n background: linear-gradient(135deg, var(--tile-from), var(--tile-to));\n border: 1.5px solid var(--tile-border);\n box-shadow: 0 0 14px var(--tile-glow);\n /* Guest default (c1) = cyan. Variants override via custom props. */\n --tile-from: rgba(0, 245, 255, 0.32);\n --tile-to: rgba(0, 245, 255, 0.08);\n --tile-border: rgba(0, 245, 255, 0.7);\n --tile-glow: rgba(0, 245, 255, 0.35);\n transition: box-shadow var(--transition-fast), border-color var(--transition-fast);\n}\n.player-tile-initial {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-3xl);\n line-height: 1;\n color: var(--color-text-white);\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n}\n.player-tile-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n color: var(--color-text-white);\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0 2px;\n}\n.player-tile--c2 {\n --tile-from: rgba(57, 255, 20, 0.32);\n --tile-to: rgba(57, 255, 20, 0.08);\n --tile-border: rgba(57, 255, 20, 0.65);\n --tile-glow: rgba(57, 255, 20, 0.32);\n}\n.player-tile--c3 {\n --tile-from: rgba(255, 102, 0, 0.32);\n --tile-to: rgba(255, 102, 0, 0.08);\n --tile-border: rgba(255, 102, 0, 0.65);\n --tile-glow: rgba(255, 102, 0, 0.32);\n}\n.player-tile--c4 {\n --tile-from: rgba(0, 245, 255, 0.22);\n --tile-to: rgba(0, 245, 255, 0.04);\n --tile-border: rgba(0, 245, 255, 0.5);\n --tile-glow: rgba(0, 245, 255, 0.22);\n}\n.player-tile--host {\n --tile-from: rgba(255, 45, 106, 0.35);\n --tile-to: rgba(255, 45, 106, 0.08);\n --tile-border: rgba(255, 45, 106, 0.85);\n --tile-glow: rgba(255, 45, 106, 0.5);\n box-shadow: var(--glow-primary), 0 0 22px rgba(255, 45, 106, 0.35);\n}\n\n/* Host marker \u2014 crown, top-right */\n.player-tile-crown {\n position: absolute;\n top: -10px;\n right: -10px;\n font-size: 20px;\n line-height: 1;\n filter: drop-shadow(0 0 6px rgba(255, 45, 106, 0.8));\n pointer-events: none;\n}\n\n/* Current-player marker \u2014 cyan YOU chip, top-right (only shows when NOT host) */\n.player-tile-you-chip {\n position: absolute;\n top: -10px;\n right: -10px;\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 9px;\n letter-spacing: 0.1em;\n padding: 3px 7px;\n border-radius: var(--radius-full);\n box-shadow: 0 0 12px rgba(0, 245, 255, 0.6);\n pointer-events: none;\n}\n\n/* Away badge \u2014 for disconnected players */\n.player-tile-away {\n position: absolute;\n bottom: -8px;\n left: 50%;\n transform: translateX(-50%);\n font-family: var(--font-body);\n font-size: 9px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--color-text-dim);\n background: var(--color-bg-primary);\n padding: 2px 6px;\n border-radius: var(--radius-full);\n border: 1px solid rgba(255, 255, 255, 0.12);\n pointer-events: none;\n}\n.player-tile--disconnected {\n opacity: 0.5;\n filter: grayscale(0.4);\n}\n\n/* New-join animation (carried over from .player-card.is-new) */\n.player-tile.is-new {\n animation: player-tile-pop var(--transition-slow) ease-out;\n}\n@keyframes player-tile-pop {\n 0% { transform: scale(0.6); opacity: 0; }\n 60% { transform: scale(1.08); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) {\n .player-tile.is-new { animation: none; }\n}\n\n/* ==========================================================================\n Round-reveal v2 \u2014 Duel layout + breakdown + stats sheets (DESIGN.md)\n ========================================================================== */\n\n/* Header v2: round count + difficulty badge + \u24D8 */\n.reveal-header-v2 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--space-md);\n gap: var(--space-sm);\n}\n.reveal-header-v2 .round-count {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n display: flex; align-items: center; gap: 4px;\n}\n.reveal-header-v2 .header-right {\n display: flex; align-items: center; gap: var(--space-sm);\n}\n/* Auto-advance countdown ring on the player reveal (mirrors admin #1048 /\n dashboard #1185). Cyan per DESIGN.md \u2014 timer = --color-accent-secondary. */\n.reveal-advance-pill {\n position: relative;\n width: 32px; height: 32px;\n flex-shrink: 0;\n display: inline-flex; align-items: center; justify-content: center;\n}\n.reveal-advance-pill.hidden { display: none; }\n.reveal-advance-svg {\n width: 100%; height: 100%;\n transform: rotate(-90deg);\n}\n.reveal-advance-bg {\n fill: none;\n stroke: rgba(255, 255, 255, 0.12);\n stroke-width: 5;\n}\n.reveal-advance-fg {\n fill: none;\n stroke: var(--color-accent-secondary);\n stroke-width: 5;\n stroke-linecap: round;\n transition: stroke-dashoffset 0.5s linear;\n filter: drop-shadow(var(--glow-secondary));\n}\n.reveal-advance-num {\n position: absolute; inset: 0;\n display: flex; align-items: center; justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 13px;\n color: var(--color-accent-secondary);\n}\n.info-btn {\n width: 28px; height: 28px;\n border-radius: 50%;\n border: 1px solid rgba(255, 255, 255, 0.14);\n background: var(--color-bg-surface);\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-base);\n font-weight: 700;\n font-family: var(--font-display);\n display: flex; align-items: center; justify-content: center;\n cursor: pointer;\n transition: color var(--transition-fast), border-color var(--transition-fast);\n padding: 0;\n}\n.info-btn:hover,\n.info-btn:focus-visible {\n color: var(--color-text-white);\n border-color: rgba(255, 255, 255, 0.3);\n outline: none;\n}\n\n/* Song strip */\n.song-strip {\n display: flex; align-items: center; gap: var(--space-sm);\n padding: var(--space-sm) var(--space-sm) var(--space-sm) var(--space-sm);\n background: rgba(255, 255, 255, 0.04);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.08);\n margin-bottom: var(--space-md);\n}\n.song-strip-cover {\n width: 56px; height: 56px;\n border-radius: var(--radius-md);\n object-fit: cover;\n flex-shrink: 0;\n background: linear-gradient(135deg, #ff6b9a, #6366f1);\n}\n.song-strip-info { flex: 1; min-width: 0; }\n.song-strip-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-md);\n color: var(--color-text-white);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.song-strip-artist {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n\n/* Chip row (bet / streak) */\n.chip-row {\n display: flex; gap: var(--space-xs);\n margin-bottom: var(--space-sm);\n flex-wrap: wrap;\n}\n.chip-row.hidden { display: none; }\n.chip-row .chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 10px;\n border-radius: var(--radius-full);\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 700;\n letter-spacing: 0.04em;\n}\n.chip-row .chip--bet-won {\n background: rgba(255, 45, 106, 0.12);\n border: 1px solid rgba(255, 45, 106, 0.5);\n color: var(--color-accent-primary);\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.2);\n}\n.chip-row .chip--bet-lost {\n background: rgba(255, 0, 64, 0.08);\n border: 1px solid rgba(255, 0, 64, 0.4);\n color: var(--color-error-neon);\n}\n.chip-row .chip--streak {\n background: rgba(255, 102, 0, 0.12);\n border: 1px solid rgba(255, 102, 0, 0.5);\n color: var(--color-warning-alt);\n}\n\n/* Duel */\n.duel {\n padding: var(--space-lg) var(--space-xs) var(--space-md);\n margin-bottom: var(--space-sm);\n}\n.duel-emotion {\n text-align: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-2xl);\n letter-spacing: 0.06em;\n margin-bottom: var(--space-md);\n min-height: 1.2em;\n transition: color var(--transition-normal);\n}\n.duel-emotion.hidden { visibility: hidden; }\n.duel-emotion--exact {\n color: var(--color-success-neon);\n text-shadow: 0 0 16px rgba(57, 255, 20, 0.55);\n}\n.duel-emotion--close {\n color: var(--color-success-neon);\n text-shadow: 0 0 14px rgba(57, 255, 20, 0.45);\n}\n.duel-emotion--wrong {\n color: var(--color-error-neon);\n text-shadow: 0 0 14px rgba(255, 0, 64, 0.45);\n}\n.duel-emotion--missed {\n color: var(--color-text-dim);\n text-shadow: none;\n}\n.duel-row {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: var(--space-sm);\n align-items: center;\n}\n.duel-side { text-align: center; min-width: 0; }\n.duel-label {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-dim);\n font-weight: 600;\n margin-bottom: var(--space-sm);\n}\n.duel-year {\n font-family: var(--font-display);\n font-weight: 900;\n /* Issue #1072: scale down on narrow viewports so a 4-digit year never overflows\n its 1fr track and pushes the duel-row past the screen edge. */\n font-size: clamp(40px, 12vw, 64px);\n line-height: 1;\n letter-spacing: -0.03em;\n}\n.duel-year.mine { color: var(--color-text-neon-muted); }\n.duel-year.correct {\n color: var(--color-accent-secondary);\n text-shadow: 0 0 24px rgba(0, 245, 255, 0.6);\n}\n.duel-gap {\n display: flex; flex-direction: column; align-items: center; justify-content: center;\n gap: 2px;\n min-width: 48px;\n}\n.duel-gap-x {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xl);\n color: var(--color-text-dim);\n opacity: 0.6;\n line-height: 1;\n}\n.duel-gap-n {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-2xl);\n color: var(--color-error-neon);\n text-shadow: 0 0 10px rgba(255, 0, 64, 0.35);\n line-height: 1;\n}\n.duel-gap--exact .duel-gap-n {\n color: var(--color-success-neon);\n text-shadow: 0 0 10px rgba(57, 255, 20, 0.5);\n}\n.duel-gap--close .duel-gap-n {\n color: var(--color-success-neon);\n text-shadow: 0 0 8px rgba(57, 255, 20, 0.35);\n}\n.duel-gap-unit {\n font-family: var(--font-body);\n font-size: 9px;\n color: var(--color-text-dim);\n text-transform: uppercase;\n letter-spacing: 0.1em;\n margin-top: 3px;\n}\n\n/* Score row */\n.score-row {\n display: flex; align-items: center; justify-content: space-between;\n padding: 14px 18px;\n background: var(--color-bg-surface);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(0, 245, 255, 0.25);\n box-shadow: 0 0 14px rgba(0, 245, 255, 0.12);\n margin-bottom: var(--space-md);\n gap: var(--space-sm);\n}\n.score-row-left {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n display: flex; flex-direction: column; gap: 3px;\n min-width: 0;\n}\n.score-row-subtitle {\n color: var(--color-text-white);\n font-size: var(--font-size-sm);\n font-weight: 700;\n letter-spacing: 0;\n text-transform: none;\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.score-row-right {\n display: flex; align-items: center; gap: var(--space-sm);\n flex-shrink: 0;\n}\n.score-row-pts {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 38px;\n color: var(--color-accent-secondary);\n text-shadow: 0 0 18px rgba(0, 245, 255, 0.5);\n line-height: 1;\n}\n\n/* Standings (compact list inside a card-section) */\n.standings-section .leaderboard-list {\n display: flex; flex-direction: column; gap: 6px;\n}\n\n/* ==========================================================================\n Bottom-sheet modal (used for points breakdown + round stats)\n ========================================================================== */\n.sheet-backdrop {\n position: fixed;\n inset: 0;\n z-index: 400;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n}\n.sheet-backdrop.hidden { display: none; }\n.sheet-dim {\n position: absolute; inset: 0;\n background: rgba(10, 10, 18, 0.6);\n backdrop-filter: blur(2px);\n animation: sheet-dim-in 200ms ease-out;\n}\n@keyframes sheet-dim-in { from { opacity: 0; } to { opacity: 1; } }\n.sheet {\n position: relative;\n z-index: 1;\n width: 100%;\n max-width: 520px;\n background: linear-gradient(180deg, #14141e, #0a0a12);\n border-top: 1px solid rgba(0, 245, 255, 0.25);\n border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;\n box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.5), 0 -4px 16px rgba(0, 245, 255, 0.1);\n padding: 14px 20px calc(28px + env(safe-area-inset-bottom, 0));\n max-height: 80vh;\n overflow-y: auto;\n animation: sheet-slide-up 320ms cubic-bezier(0.22, 0.8, 0.32, 1);\n}\n@keyframes sheet-slide-up {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n@media (prefers-reduced-motion: reduce) {\n .sheet-dim { animation: none; }\n .sheet { animation: none; }\n}\n.sheet-handle {\n width: 40px; height: 4px; border-radius: 2px;\n background: rgba(255, 255, 255, 0.2);\n margin: 0 auto 16px;\n}\n.sheet-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: var(--space-md);\n}\n.sheet-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-lg);\n display: flex; align-items: center; gap: 8px;\n color: var(--color-text-white);\n}\n.sheet-close {\n width: 32px; height: 32px; border-radius: 50%;\n background: rgba(255, 255, 255, 0.08);\n border: 0;\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-base);\n font-weight: 700;\n display: flex; align-items: center; justify-content: center;\n cursor: pointer;\n}\n.sheet-close:hover,\n.sheet-close:focus-visible {\n color: var(--color-text-white);\n background: rgba(255, 255, 255, 0.14);\n outline: none;\n}\n\n/* Points breakdown content */\n.breakdown-list {\n display: flex; flex-direction: column;\n margin-bottom: var(--space-md);\n}\n.breakdown-row {\n display: flex; align-items: center; justify-content: space-between;\n padding: 10px 0;\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n}\n.breakdown-row + .breakdown-row { border-top: 1px solid rgba(255, 255, 255, 0.05); }\n.breakdown-row .label {\n color: var(--color-text-neon-muted);\n display: flex; align-items: center; gap: 8px;\n}\n.breakdown-row .label .emoji { font-size: var(--font-size-md); }\n.breakdown-row .value {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-md);\n}\n.breakdown-row .value--positive { color: var(--color-success-neon); }\n.breakdown-row .value--multiplier { color: var(--color-accent-primary); }\n.breakdown-row .value--neutral { color: var(--color-text-white); }\n.breakdown-total {\n display: flex; align-items: center; justify-content: space-between;\n padding: var(--space-md);\n border-radius: var(--radius-lg);\n background: linear-gradient(90deg, rgba(0, 245, 255, 0.08), rgba(255, 45, 106, 0.05));\n border: 1px solid rgba(0, 245, 255, 0.3);\n}\n.breakdown-total .label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-md);\n color: var(--color-text-white);\n}\n.breakdown-total .value {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-3xl);\n color: var(--color-accent-secondary);\n text-shadow: 0 0 16px rgba(0, 245, 255, 0.5);\n}\n.breakdown-total--zero .value { color: var(--color-text-dim); text-shadow: none; }\n.breakdown-empty {\n text-align: center;\n padding: var(--space-md) 0;\n}\n.breakdown-empty-icon { font-size: 42px; margin-bottom: var(--space-sm); }\n.breakdown-empty-text {\n color: var(--color-text-neon-muted);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n margin-bottom: var(--space-md);\n}\n\n/* Round stats content */\n.difficulty-visual {\n display: flex; align-items: center; justify-content: space-between;\n padding: var(--space-md);\n background: rgba(255, 0, 64, 0.08);\n border: 1px solid rgba(255, 0, 64, 0.3);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n gap: var(--space-sm);\n}\n.difficulty-visual .left {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-sm);\n color: var(--color-error-neon);\n min-width: 0;\n}\n.difficulty-visual .left .sub {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 500;\n color: var(--color-text-neon-muted);\n margin-top: 3px;\n}\n.difficulty-visual .stars { font-size: var(--font-size-md); letter-spacing: 2px; white-space: nowrap; }\n.difficulty-visual .star-filled { color: var(--color-warning-alt); }\n.difficulty-visual .star-empty { color: rgba(255, 255, 255, 0.15); }\n\n.stats-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n.stats-card {\n padding: 12px 14px;\n background: rgba(255, 255, 255, 0.04);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-md);\n}\n.stats-card .lbl {\n font-family: var(--font-body);\n font-size: 10px;\n color: var(--color-text-dim);\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n.stats-card .val {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-2xl);\n margin-top: 4px;\n color: var(--color-text-white);\n}\n.stats-card .val.cyan { color: var(--color-accent-secondary); }\n.stats-card .val.success { color: var(--color-success-neon); }\n.stats-card .val.warn { color: var(--color-error-neon); }\n.stats-card .sub {\n font-family: var(--font-body);\n font-size: 10px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n}\n\n.furthest-list { display: flex; flex-direction: column; gap: 6px; }\n.furthest-row {\n display: flex; align-items: center; justify-content: space-between;\n padding: 10px 12px;\n background: rgba(255, 255, 255, 0.03);\n border-radius: var(--radius-md);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n}\n.furthest-row .name { font-weight: 600; color: var(--color-text-white); }\n.furthest-row .off {\n color: var(--color-error-neon);\n font-family: var(--font-display);\n font-weight: 700;\n}\n\n.stats-empty {\n text-align: center;\n color: var(--color-text-dim);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n padding: var(--space-md);\n}\n\n/* ==========================================================================\n Gameplay v3 \u2014 Arcade layout (DESIGN.md Variant D)\n Massive year \u00B7 tappable tiles \u00B7 neon timer \u00B7 3D buttons.\n Supersedes legacy .album-cover-container, .year-display, .slider-container,\n .bet-container, .submit-btn, .steal-btn, .submitted-confirmation, and the\n .game-sticky-bar + .game-header-compact header.\n ========================================================================== */\n\n.game-container--arcade {\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n/* Arcade header: pulse-orb album + \"Round N of M\" + neon timer */\n.arc-header {\n display: grid;\n grid-template-columns: auto 1fr auto;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n position: sticky;\n top: 0;\n z-index: 5;\n background: linear-gradient(180deg, rgba(10, 10, 18, 0.95), rgba(10, 10, 18, 0.82) 72%, transparent);\n backdrop-filter: blur(8px);\n margin-bottom: var(--space-md);\n}\n\n/* #817: floating mini-timer \u2014 always visible during PLAYING when the main\n neon timer scrolls out of view. Position-fixed so it works regardless of\n any sticky-positioning quirks on iOS Safari. Smaller and quieter than\n the main timer so it doesn't overwhelm the lower content (slider,\n challenges, submit button) once it's revealed. Syncing with the main\n timer + show/hide via IntersectionObserver lives in player-game.js. */\n.timer-float {\n position: fixed;\n top: max(env(safe-area-inset-top, 0px) + 8px, 8px);\n right: 12px;\n z-index: 100;\n width: 52px;\n height: 52px;\n border-radius: 50%;\n background: rgba(10, 10, 18, 0.78);\n border: 2px solid var(--color-accent-primary);\n box-shadow: 0 0 14px rgba(255, 45, 106, 0.45),\n inset 0 0 8px rgba(255, 45, 106, 0.25);\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n line-height: 1;\n color: var(--color-accent-primary);\n text-shadow: 0 0 8px rgba(255, 45, 106, 0.6);\n backdrop-filter: blur(8px);\n transition: opacity 0.2s ease-out, transform 0.2s ease-out;\n pointer-events: none;\n /* Default: hidden via .hidden override below. Becomes visible when\n JS adds .timer-float--visible (gated on the main timer being\n offscreen + game-view being active). */\n}\n.timer-float.hidden {\n opacity: 0;\n transform: scale(0.7);\n pointer-events: none;\n}\n.timer-float.timer-float--visible {\n opacity: 1;\n transform: scale(1);\n}\n.timer-float.timer-float--warn {\n border-color: var(--color-error-neon, #ff0040);\n color: var(--color-error-neon, #ff0040);\n box-shadow: 0 0 16px rgba(255, 0, 64, 0.6),\n inset 0 0 8px rgba(255, 0, 64, 0.3);\n animation: arc-urgency 0.8s ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .timer-float { transition: none; }\n .timer-float.timer-float--warn { animation: none; }\n}\n\n.arc-pulse-orb {\n width: 56px; height: 56px; border-radius: 50%;\n display: flex; align-items: center; justify-content: center;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #ff6b9a, #6366f1);\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.5);\n flex-shrink: 0;\n}\n.arc-pulse-orb::before {\n content: '';\n position: absolute; inset: -4px;\n border-radius: 50%;\n border: 2px solid rgba(255, 45, 106, 0.5);\n animation: arc-orb-pulse 1.4s ease-out infinite;\n pointer-events: none;\n}\n.arc-pulse-orb--steady::before { animation: none; opacity: 0; }\n@keyframes arc-orb-pulse {\n 0% { opacity: 0.8; transform: scale(1); }\n 100% { opacity: 0; transform: scale(1.25); }\n}\n@media (prefers-reduced-motion: reduce) {\n .arc-pulse-orb::before { animation: none; opacity: 0; }\n}\n.arc-pulse-orb-img {\n width: 100%; height: 100%;\n object-fit: cover;\n border-radius: 50%;\n z-index: 1;\n /* #850: blur cover during PLAYING so readable text on artwork (album titles,\n years, artist names) can't leak the year-guess answer. Colour/vibe is\n preserved. At REVEAL, the larger #reveal-album-cover (player.html:481) is\n rendered crisp \u2014 that element is unaffected by this rule. */\n filter: blur(12px);\n transform: scale(1.15);\n transition: filter 0.4s ease, transform 0.4s ease;\n}\n\n.arc-round-center {\n text-align: center;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 11px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n line-height: 1.3;\n overflow: hidden;\n}\n.arc-round-label { display: block; }\n.arc-round-big {\n display: block;\n font-size: 20px;\n color: var(--color-text-white);\n letter-spacing: 0;\n text-transform: none;\n margin-top: 2px;\n}\n.arc-round-sep {\n color: var(--color-text-dim);\n margin: 0 2px;\n font-weight: 500;\n}\n\n.timer-neon {\n width: 72px; height: 72px;\n border-radius: 50%;\n background: var(--color-bg-primary);\n border: 3px solid var(--color-accent-primary);\n box-shadow: var(--glow-primary), inset 0 0 12px rgba(255, 45, 106, 0.3);\n display: flex; align-items: center; justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 30px;\n color: var(--color-accent-primary);\n text-shadow: 0 0 10px rgba(255, 45, 106, 0.6);\n flex-shrink: 0;\n line-height: 1;\n}\n.timer-neon .timer { color: inherit; font-family: inherit; font-size: inherit; font-weight: inherit; }\n.timer-neon.timer-neon--warn {\n border-color: var(--color-error-neon);\n color: var(--color-error-neon);\n box-shadow: 0 0 20px rgba(255, 0, 64, 0.6), inset 0 0 12px rgba(255, 0, 64, 0.3);\n animation: arc-urgency 0.8s ease-in-out infinite;\n}\n@keyframes arc-urgency {\n 0%, 100% { transform: scale(1); }\n 50% { transform: scale(1.06); }\n}\n/* #1273 AC#3 \u2014 ghost-ring catch-up glow. Briefly applied while the countdown\n eases to the server's authoritative remaining-time (V1 Smooth Correct), so a\n drift correction reads as a deliberate glow pulse in the existing ring\n language rather than a jarring number jump. */\n.timer-neon.timer-neon--catchup {\n animation: timer-catchup-glow 0.4s ease-out;\n}\n@keyframes timer-catchup-glow {\n 0% { box-shadow: var(--glow-primary), inset 0 0 12px rgba(255, 45, 106, 0.3); }\n 45% { box-shadow: 0 0 26px rgba(0, 245, 255, 0.7), inset 0 0 16px rgba(0, 245, 255, 0.35); }\n 100% { box-shadow: var(--glow-primary), inset 0 0 12px rgba(255, 45, 106, 0.3); }\n}\n@media (prefers-reduced-motion: reduce) {\n .timer-neon.timer-neon--warn { animation: none; }\n .timer-neon.timer-neon--catchup { animation: none; }\n}\n\n/* Chip row \u2014 steal / closest-wins / intro / final (conditional) */\n.arc-chip-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n padding: 0 var(--space-md);\n margin-bottom: var(--space-md);\n}\n.arc-chip-row.hidden { display: none; }\n.arc-chip {\n display: inline-flex; align-items: center; gap: 5px;\n padding: 4px 10px;\n border-radius: var(--radius-full);\n font-family: var(--font-body);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.04em;\n}\n.arc-chip--steal {\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.08);\n border: 1px solid rgba(0, 245, 255, 0.4);\n}\n.arc-chip--closest-wins {\n color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.08);\n border: 1px solid rgba(57, 255, 20, 0.4);\n}\n.arc-chip--intro {\n color: var(--color-warning-alt);\n background: rgba(255, 102, 0, 0.12);\n border: 1px solid rgba(255, 102, 0, 0.5);\n}\n.arc-chip--final {\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.12);\n border: 1px solid rgba(255, 45, 106, 0.5);\n text-transform: uppercase;\n}\n\n/* Year XXL */\n.year-xxl {\n text-align: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: clamp(96px, 34vw, 128px);\n line-height: 1;\n letter-spacing: -0.04em;\n background: linear-gradient(180deg, var(--color-text-white) 0%, rgba(0, 245, 255, 0.85) 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n text-shadow: 0 0 32px rgba(0, 245, 255, 0.35);\n margin: 4px 0 var(--space-md);\n padding: 0 var(--space-md);\n max-width: 100%;\n}\n.year-xxl--locked {\n background: linear-gradient(180deg, var(--color-success-neon) 0%, rgba(57, 255, 20, 0.7) 100%);\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n text-shadow: 0 0 28px rgba(57, 255, 20, 0.45);\n}\n\n/* Submitted banner */\n.submitted-banner {\n margin: 0 var(--space-md) var(--space-sm);\n padding: 8px 14px;\n background: rgba(57, 255, 20, 0.08);\n border: 1px solid rgba(57, 255, 20, 0.4);\n border-radius: var(--radius-md);\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 14px;\n color: var(--color-success-neon);\n letter-spacing: 0.04em;\n display: flex; align-items: center; justify-content: center; gap: 6px;\n text-align: center;\n}\n.submitted-banner.hidden { display: none; }\n.submitted-banner .check {\n width: 18px; height: 18px; border-radius: 50%;\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n font-size: 11px; font-weight: 900;\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n\n/* Arcade slider */\n.slider-arcade-wrap {\n padding: 0 var(--space-md);\n margin-bottom: var(--space-md);\n position: relative;\n}\n.slider-arcade {\n padding: 10px;\n background: rgba(255, 255, 255, 0.04);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.08);\n display: flex; align-items: center; gap: 12px;\n}\n.slider-btn-year {\n width: 44px; height: 44px; border-radius: 50%;\n background: var(--color-bg-primary);\n border: 2px solid rgba(255, 255, 255, 0.15);\n color: var(--color-text-white);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 22px;\n line-height: 1;\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: center;\n cursor: pointer;\n transition: all var(--transition-fast);\n touch-action: manipulation;\n}\n.slider-btn-year:hover,\n.slider-btn-year:focus-visible {\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n outline: none;\n}\n.slider-btn-year:disabled {\n opacity: 0.4; cursor: not-allowed;\n}\n/* #851 coarse-step variant: smaller +5/-5 buttons next to the main +/-. */\n.slider-btn-year--coarse {\n position: relative;\n width: 36px; height: 36px;\n font-size: 13px;\n font-weight: 800;\n letter-spacing: -0.02em;\n}\n/* #1759: mid-round +/-5 buttons sit next to 44px fine-step siblings under time\n pressure; expand the hit target to 44px (visual stays 36px) so a mis-tap\n doesn't land on the fine button and cost points. */\n.slider-btn-year--coarse::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 44px;\n height: 44px;\n transform: translate(-50%, -50%);\n}\n.slider-arcade { gap: 8px; } /* tighten gap so 5 children fit on narrow screens */\n/* #2344: the track holds the input and the decade scale stacked, so the\n marks line up with the thumb's travel rather than with the box. */\n.slider-arcade-track { flex: 1; display: flex; flex-direction: column; align-items: stretch; gap: 4px; }\n.year-scale {\n position: relative;\n height: 13px;\n /* Reserve the thumb's half-width on both sides: a range thumb's centre\n never reaches the very edge, so a mark at 100% would sit past the\n furthest year the slider can actually select. */\n margin: 0 2px;\n pointer-events: none;\n}\n.year-scale span {\n position: absolute;\n top: 0;\n transform: translateX(-50%);\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--color-text-muted, rgba(255, 255, 255, 0.42));\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n user-select: none;\n}\n.slider-arcade.slider-arcade--locked .year-scale { opacity: 0.5; }\n.year-slider-arcade {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: 10px;\n background: linear-gradient(90deg,\n rgba(0, 245, 255, 0.15),\n rgba(255, 45, 106, 0.25),\n rgba(57, 255, 20, 0.15));\n border-radius: var(--radius-full);\n outline: none;\n cursor: pointer;\n}\n.year-slider-arcade::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 32px; height: 32px;\n border-radius: 50%;\n background: var(--color-accent-primary);\n border: 3px solid var(--color-bg-primary);\n box-shadow: var(--glow-primary);\n cursor: grab;\n transition: transform var(--transition-fast);\n}\n.year-slider-arcade::-webkit-slider-thumb:active { cursor: grabbing; transform: scale(1.05); }\n.year-slider-arcade::-moz-range-thumb {\n width: 32px; height: 32px;\n border-radius: 50%;\n background: var(--color-accent-primary);\n border: 3px solid var(--color-bg-primary);\n box-shadow: var(--glow-primary);\n cursor: grab;\n}\n\n/* Locked state for the slider (after submit) */\n.slider-arcade.slider-arcade--locked {\n opacity: 0.55;\n pointer-events: none;\n}\n.slider-arcade.slider-arcade--locked .year-slider-arcade::-webkit-slider-thumb {\n background: var(--color-success-neon);\n box-shadow: 0 0 16px rgba(57, 255, 20, 0.6);\n}\n.slider-arcade.slider-arcade--locked .year-slider-arcade::-moz-range-thumb {\n background: var(--color-success-neon);\n box-shadow: 0 0 16px rgba(57, 255, 20, 0.6);\n}\n.guess-lock-stamp {\n position: absolute;\n right: calc(var(--space-md) + 8px);\n top: -10px;\n padding: 3px 10px;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 10px;\n color: var(--color-success-neon);\n background: var(--color-bg-primary);\n border: 1px solid rgba(57, 255, 20, 0.4);\n border-radius: var(--radius-full);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n box-shadow: 0 0 8px rgba(57, 255, 20, 0.25);\n}\n.guess-lock-stamp.hidden { display: none; }\n\n/* Arcade tiles (artist + movie challenge).\n Wrapped in a subtle card container so the challenge reads as a distinct\n \"quiz card\" element. Outer wrapper has a thin border + soft bg; tiles\n themselves keep their 3D shadow treatment so they still pop. */\n.arc-tiles {\n padding: 12px 14px;\n margin: 0 var(--space-md) var(--space-md);\n background: linear-gradient(180deg, rgba(0, 245, 255, 0.04), rgba(255, 255, 255, 0.02));\n border: 1px solid rgba(0, 245, 255, 0.18);\n border-radius: var(--radius-lg);\n box-shadow: inset 0 0 12px rgba(0, 245, 255, 0.04);\n}\n.arc-tiles.hidden { display: none; }\n.arc-tiles-header {\n display: flex; align-items: center; justify-content: space-between;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n margin-bottom: 10px;\n gap: var(--space-sm);\n}\n.arc-tiles-header > span:first-child {\n display: flex; align-items: center; gap: 6px;\n min-width: 0;\n}\n.arc-tiles-bonus {\n background: rgba(57, 255, 20, 0.15);\n color: var(--color-success-neon);\n font-weight: 900;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n letter-spacing: 0.04em;\n flex-shrink: 0;\n}\n.arc-tiles-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n/* Re-style the existing .artist-option-btn / .movie-option-btn with arcade feel.\n These classes are generated by player-game.js \u2014 don't change the JS, just\n restyle the DOM they emit. */\n.arc-tiles-grid .artist-option-btn,\n.arc-tiles-grid .movie-option-btn {\n padding: 14px 10px;\n background: rgba(255, 255, 255, 0.05);\n border: 2px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-lg);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 15px;\n text-align: center;\n color: var(--color-text-white);\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n transition: transform var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);\n cursor: pointer;\n min-height: 56px;\n}\n.arc-tiles-grid .artist-option-btn:hover,\n.arc-tiles-grid .movie-option-btn:hover,\n.arc-tiles-grid .artist-option-btn:focus-visible,\n.arc-tiles-grid .movie-option-btn:focus-visible {\n border-color: rgba(0, 245, 255, 0.55);\n outline: none;\n}\n.arc-tiles-grid .artist-option-btn:active,\n.arc-tiles-grid .movie-option-btn:active {\n transform: translateY(1px);\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.3);\n}\n.arc-tiles-grid .artist-option-btn.is-loading {\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.2), rgba(0, 245, 255, 0.05));\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n animation: arc-tile-pulse 1s ease-in-out infinite;\n}\n@keyframes arc-tile-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } }\n.arc-tiles-grid .artist-option-btn.is-winner,\n.arc-tiles-grid .artist-option-btn.is-correct,\n.arc-tiles-grid .movie-option-btn.is-winner,\n.arc-tiles-grid .movie-option-btn.is-correct {\n background: linear-gradient(135deg, rgba(57, 255, 20, 0.25), rgba(57, 255, 20, 0.08));\n border-color: var(--color-success-neon);\n color: var(--color-success-neon);\n box-shadow: 0 0 20px rgba(57, 255, 20, 0.5), 0 4px 0 rgba(0, 0, 0, 0.3);\n}\n.arc-tiles-grid .artist-option-btn.is-wrong,\n.arc-tiles-grid .artist-option-btn.is-wrong.is-selected,\n.arc-tiles-grid .movie-option-btn.is-wrong {\n opacity: 0.5;\n border-style: dashed;\n}\n.arc-tiles-grid .artist-option-btn.is-disabled,\n.arc-tiles-grid .movie-option-btn.is-disabled {\n opacity: 0.6;\n cursor: not-allowed;\n box-shadow: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .arc-tiles-grid .artist-option-btn.is-loading { animation: none; }\n}\n\n/* No-bonus filler */\n.bonus-filler {\n padding: var(--space-md);\n margin: 0 var(--space-md) var(--space-md);\n background: rgba(255, 255, 255, 0.02);\n border: 1px dashed rgba(255, 255, 255, 0.1);\n border-radius: var(--radius-lg);\n text-align: center;\n font-family: var(--font-body);\n font-size: 12px;\n color: var(--color-text-dim);\n font-style: italic;\n display: flex; align-items: center; justify-content: center; gap: 6px;\n}\n.bonus-filler.hidden { display: none; }\n\n/* Actions row (bet + submit) */\n.arc-actions {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 10px;\n padding: 0 var(--space-md);\n margin-bottom: var(--space-md);\n}\n.bet-arc {\n width: 72px; height: 60px;\n background: transparent;\n border: 2px solid rgba(255, 45, 106, 0.5);\n color: var(--color-accent-primary);\n border-radius: var(--radius-lg);\n font-family: var(--font-display);\n font-weight: 700;\n display: flex; flex-direction: column; align-items: center; justify-content: center;\n gap: 2px;\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n.bet-arc .bet-icon { font-size: 22px; line-height: 1; }\n.bet-arc .bet-label { font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }\n.bet-arc.is-active {\n background: rgba(255, 45, 106, 0.15);\n box-shadow: var(--glow-primary), 0 4px 0 rgba(0, 0, 0, 0.3);\n}\n.bet-arc:active { transform: translateY(2px); box-shadow: 0 2px 0 rgba(0, 0, 0, 0.3); }\n.bet-arc:disabled { opacity: 0.55; cursor: not-allowed; }\n\n.submit-arc {\n background: linear-gradient(180deg, #ff4d82, var(--color-accent-primary));\n border: 0;\n color: var(--color-text-white);\n border-radius: var(--radius-lg);\n padding: 16px 20px;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 17px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n box-shadow: var(--glow-primary), 0 6px 0 rgba(180, 20, 60, 0.6);\n cursor: pointer;\n transition: transform var(--transition-fast);\n display: flex; align-items: center; justify-content: center; gap: 8px;\n}\n.submit-arc:active { transform: translateY(2px); box-shadow: var(--glow-primary), 0 4px 0 rgba(180, 20, 60, 0.6); }\n.submit-arc:disabled {\n background: rgba(255, 255, 255, 0.06);\n color: var(--color-text-neon-muted);\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n cursor: not-allowed;\n text-shadow: none;\n}\n.submit-arc.submit-arc--waiting {\n background: rgba(255, 255, 255, 0.05);\n color: var(--color-text-neon-muted);\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n text-shadow: none;\n}\n.submit-arc .waiting-dot {\n display: inline-block;\n width: 8px; height: 8px; border-radius: 50%;\n background: var(--color-accent-secondary);\n box-shadow: 0 0 8px rgba(0, 245, 255, 0.5);\n animation: arc-wait-pulse 1.2s ease-in-out infinite;\n}\n@keyframes arc-wait-pulse { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } }\n@media (prefers-reduced-motion: reduce) {\n .submit-arc .waiting-dot { animation: none; }\n}\n\n/* Steal full-width button */\n.steal-btn-full {\n margin: 0 var(--space-md) var(--space-md);\n background: rgba(0, 245, 255, 0.08);\n border: 2px solid var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n border-radius: var(--radius-lg);\n padding: 14px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n box-shadow: 0 0 16px rgba(0, 245, 255, 0.3), 0 4px 0 rgba(0, 0, 0, 0.3);\n display: flex; align-items: center; justify-content: center; gap: 8px;\n cursor: pointer;\n transition: transform var(--transition-fast);\n}\n.steal-btn-full.hidden { display: none; }\n.steal-btn-full:active { transform: translateY(2px); box-shadow: 0 0 16px rgba(0, 245, 255, 0.3), 0 2px 0 rgba(0, 0, 0, 0.3); }\n.steal-btn-full .steal-btn-icon { font-size: 18px; }\n\n/* #1665: Sabotage power-up \u2014 twin of the steal button, red-tinted. The flex row\n keeps a lone button full-width and puts them side-by-side when both are up. */\n.powerup-btn-row {\n display: flex;\n gap: var(--space-md);\n margin: 0 var(--space-md) var(--space-md);\n}\n.powerup-btn-row .steal-btn-full,\n.powerup-btn-row .sabotage-btn-full {\n flex: 1;\n margin: 0;\n}\n.sabotage-btn-full {\n background: rgba(255, 45, 85, 0.08);\n border: 2px solid var(--color-danger, #ff2d55);\n color: var(--color-danger, #ff2d55);\n border-radius: var(--radius-lg);\n padding: 14px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n box-shadow: 0 0 16px rgba(255, 45, 85, 0.3), 0 4px 0 rgba(0, 0, 0, 0.3);\n display: flex; align-items: center; justify-content: center; gap: 8px;\n cursor: pointer;\n transition: transform var(--transition-fast);\n}\n.sabotage-btn-full.hidden { display: none; }\n.sabotage-btn-full:active { transform: translateY(2px); box-shadow: 0 0 16px rgba(255, 45, 85, 0.3), 0 2px 0 rgba(0, 0, 0, 0.3); }\n.sabotage-btn-full .sabotage-btn-icon { font-size: 18px; }\n/* #1665: sabotage arc-chip + leaderboard badge + toasts + effect locks */\n.arc-chip--sabotage {\n color: var(--color-danger, #ff2d55);\n background: rgba(255, 45, 85, 0.08);\n border: 1px solid rgba(255, 45, 85, 0.4);\n}\n.player-badge--sabotage {\n top: -2px;\n left: 2px;\n background: linear-gradient(135deg, #ff2d55, #c1121f);\n}\n.sabotage-confirmation {\n background: linear-gradient(135deg, #ff2d55, #c1121f);\n box-shadow: 0 4px 20px rgba(255, 45, 85, 0.5);\n}\n.sabotaged-banner {\n background: linear-gradient(135deg, #ff2d55, #7c1020);\n box-shadow: 0 4px 20px rgba(255, 45, 85, 0.6);\n}\n.bet-arc--forced { opacity: 0.85; cursor: not-allowed; }\n.submit-arc--frozen { opacity: 0.6; filter: grayscale(0.4); }\n\n/* Submission strip (dots + count) */\n.arc-submission-strip {\n display: flex; align-items: center; justify-content: center; gap: 8px;\n padding: 8px var(--space-md) 12px;\n font-family: var(--font-body);\n font-size: 11px;\n color: var(--color-text-dim);\n font-weight: 600;\n}\n.arc-submission-dots {\n display: flex; align-items: center; gap: 6px;\n}\n.arc-submission-dots .player-indicator {\n /* existing class from renderSubmissionTracker \u2014 override to a small dot.\n The renderer emits a nested .player-avatar + .player-initials + .player-name\n + badges; we collapse ALL children to make the parent itself the dot. */\n width: 12px; height: 12px;\n min-width: 12px;\n padding: 0;\n background: rgba(255, 255, 255, 0.18);\n border: 0;\n border-radius: 50%;\n font-size: 0;\n color: transparent;\n transition: all var(--transition-normal);\n flex: 0 0 auto;\n overflow: hidden;\n display: block;\n}\n/* Collapse every child element \u2014 avatars, initials, names, badges \u2014 so the\n parent behaves as a solid dot. Without this the legacy .player-avatar\n width/height (~40px) leaks through. */\n.arc-submission-dots .player-indicator > * { display: none !important; }\n.arc-submission-dots .player-indicator.is-submitted {\n background: var(--color-success-neon);\n box-shadow: 0 0 6px rgba(57, 255, 20, 0.5);\n}\n.arc-submission-dots .player-indicator.is-current-player,\n.arc-submission-dots .player-indicator.is-current {\n background: var(--color-accent-secondary);\n box-shadow: 0 0 6px rgba(0, 245, 255, 0.5);\n}\n.arc-submission-dots .player-indicator.is-current-player.is-submitted {\n background: var(--color-success-neon);\n box-shadow: 0 0 8px rgba(57, 255, 20, 0.7);\n}\n.arc-submission-count { color: var(--color-text-dim); font-weight: 600; }\n\n/* Legacy \"Submitted!\" stamp \u2014 hidden in arcade but kept for any residual path */\n.submitted-confirmation.hidden { display: none; }\n\n/* Closest-wins ephemeral splash (rc30 parity) */\n.closest-wins-splash {\n position: fixed; inset: 0;\n z-index: 50;\n display: flex; align-items: center; justify-content: center;\n background: rgba(10, 10, 18, 0.7);\n backdrop-filter: blur(4px);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 40px;\n color: var(--color-success-neon);\n letter-spacing: 0.08em;\n gap: 12px;\n pointer-events: none;\n text-shadow: 0 0 32px rgba(57, 255, 20, 0.55);\n animation: closest-wins-splash-in 1.6s ease-out both;\n}\n.closest-wins-splash.hidden { display: none; }\n@keyframes closest-wins-splash-in {\n 0% { opacity: 0; transform: scale(0.8); }\n 20% { opacity: 1; transform: scale(1); }\n 80% { opacity: 1; transform: scale(1); }\n 100% { opacity: 0; transform: scale(1.05); }\n}\n\n/* sr-only helper (if not already in the stylesheet) */\n#round-indicator.sr-only {\n position: absolute;\n width: 1px; height: 1px; padding: 0; margin: -1px;\n overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;\n}\n\n/* ============================================\n #1076: Compact game-view layout for mobile.\n On 360-411 CSS-px phones the artist/movie challenge tiles\n and Submit button were rendering below the fold, so every\n round players had to scroll before they could vote. Scoped\n to body:has(#game-view:not(.hidden)) so it only fires while\n game-view is the active screen \u2014 lobby/reveal/end keep the\n original spacing. :has() degrades gracefully: browsers that\n don't support it fall back to the looser pre-fix layout.\n ============================================ */\nbody:has(#game-view:not(.hidden)) .player-header { display: none; }\nbody:has(#game-view:not(.hidden)) .player-container {\n padding-top: max(var(--space-xs), env(safe-area-inset-top));\n}\nbody:has(#game-view:not(.hidden)) .arc-header {\n margin-bottom: var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .year-xxl {\n font-size: clamp(72px, 26vw, 104px);\n margin: 2px 0 var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .slider-arcade-wrap {\n margin-bottom: var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .arc-tiles {\n padding: 10px 12px;\n margin: 0 var(--space-md) var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .arc-tiles-header {\n margin-bottom: 6px;\n}\nbody:has(#game-view:not(.hidden)) .arc-tiles-grid { gap: 8px; }\nbody:has(#game-view:not(.hidden)) .arc-tiles-grid .artist-option-btn,\nbody:has(#game-view:not(.hidden)) .arc-tiles-grid .movie-option-btn {\n min-height: 52px;\n padding: 12px 10px;\n}\nbody:has(#game-view:not(.hidden)) .arc-actions {\n margin-bottom: var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .bonus-filler {\n padding: var(--space-sm) var(--space-md);\n margin: 0 var(--space-md) var(--space-sm);\n}\n\n/* ============================================\n End-of-Game Podium v2 \u2014 Hero Winner (rc31)\n Scoped under body.theme-dark so player.html end-view\n is restyled from a 3-column stands layout into a\n poster-style hero for #1 + compact chips for #2/#3.\n DOM (player.html #494-522) is unchanged \u2014 existing\n IDs (podium-{N}-name / -score) keep their JS bindings.\n ============================================ */\n\nbody.theme-dark .podium {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-areas:\n \"hero hero\"\n \"second third\";\n gap: var(--space-md);\n align-items: stretch;\n justify-content: stretch;\n margin-bottom: var(--space-xl);\n padding: 0 var(--space-xs);\n}\n\n/* Winner hero \u2014 full-width poster, gradient wordmark name */\nbody.theme-dark .podium-place.podium-1 {\n grid-area: hero;\n width: 100%;\n padding: var(--space-lg) var(--space-md) var(--space-md);\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.14), rgba(0, 245, 255, 0.06));\n border: 1px solid rgba(255, 45, 106, 0.35);\n border-radius: var(--radius-xl);\n box-shadow: 0 0 40px rgba(255, 45, 106, 0.18);\n text-align: center;\n justify-content: center;\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-medal {\n font-size: 38px;\n margin-bottom: var(--space-xs);\n filter: drop-shadow(0 0 16px rgba(255, 45, 106, 0.6));\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-name {\n font-family: 'Outfit', sans-serif;\n font-weight: 900;\n line-height: 0.92;\n letter-spacing: -0.04em;\n margin: 0 0 var(--space-sm);\n max-width: 100%;\n white-space: normal;\n word-break: break-word;\n overflow: visible;\n text-overflow: clip;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n filter: drop-shadow(0 0 24px rgba(255, 45, 106, 0.3));\n font-size: clamp(40px, 14vw, 64px);\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-score {\n font-family: 'Inter', sans-serif;\n font-weight: 700;\n font-size: var(--font-size-3xl);\n color: var(--color-accent-secondary);\n font-variant-numeric: tabular-nums;\n text-shadow: 0 0 14px rgba(0, 245, 255, 0.5);\n margin-bottom: 0;\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-stand {\n display: none;\n}\n\n/* Runners-up chips \u2014 2nd + 3rd share the bottom row */\nbody.theme-dark .podium-place.podium-2,\nbody.theme-dark .podium-place.podium-3 {\n width: 100%;\n min-width: 0;\n padding: var(--space-md) var(--space-sm);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n display: grid;\n /* minmax(0, 1fr) lets the name column shrink below its intrinsic width\n so short chip columns can ellipsis gracefully without forcing \"No\u2026\". */\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-rows: auto;\n align-items: center;\n gap: var(--space-sm);\n text-align: left;\n}\n\nbody.theme-dark .podium-place.podium-2 {\n grid-area: second;\n border-color: rgba(0, 245, 255, 0.28);\n box-shadow: 0 0 18px rgba(0, 245, 255, 0.1);\n}\n\nbody.theme-dark .podium-place.podium-3 {\n grid-area: third;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-medal,\nbody.theme-dark .podium-place.podium-3 .podium-medal {\n font-size: 22px;\n margin: 0;\n line-height: 1;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-name,\nbody.theme-dark .podium-place.podium-3 .podium-name {\n font-family: 'Outfit', sans-serif;\n font-weight: 800;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-score,\nbody.theme-dark .podium-place.podium-3 .podium-score {\n font-family: 'Outfit', sans-serif;\n font-weight: 900;\n font-size: var(--font-size-lg);\n color: var(--color-accent-secondary);\n font-variant-numeric: tabular-nums;\n text-shadow: 0 0 8px rgba(0, 245, 255, 0.3);\n margin: 0;\n white-space: nowrap;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-stand,\nbody.theme-dark .podium-place.podium-3 .podium-stand {\n display: none;\n}\n\n/* Graceful collapse for 1/2-player games (JS toggles .hidden on empty slots).\n If #2 is hidden but #3 isn't, promote #3 to the 'second' slot so it\n doesn't look orphaned on the right. */\nbody.theme-dark .podium-place.podium-2.hidden ~ .podium-place.podium-3:not(.hidden) {\n grid-area: second;\n}\n\n/* \"Your Result\" card \u2014 celebratory pink-leaning treatment, larger rank. */\nbody.theme-dark .your-result {\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.10), rgba(0, 245, 255, 0.04));\n border: 1px solid rgba(255, 45, 106, 0.28);\n box-shadow: 0 0 28px rgba(255, 45, 106, 0.12);\n}\n\nbody.theme-dark .your-result-rank {\n font-family: 'Outfit', sans-serif;\n font-weight: 900;\n font-size: var(--font-size-4xl);\n letter-spacing: -0.03em;\n}\n\nbody.theme-dark .your-result-stats .stat-value {\n font-family: 'Outfit', sans-serif;\n font-weight: 800;\n}\n\n/* =====================================================================\n Playlist Hub (v3.3) \u2014 .plh-* namespace\n Replaces wizard step 3 playlist picker. Mobile-first 390px target.\n All tokens inherited from :root design system.\n ===================================================================== */\n\n.plh-root {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n height: 100%;\n background: var(--color-bg-primary);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-variant-numeric: tabular-nums;\n position: relative;\n isolation: isolate;\n overflow: hidden;\n}\n\n.plh-root::before {\n content: '';\n position: absolute;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background:\n radial-gradient(ellipse 70% 25% at 50% 0%, rgba(255, 45, 106, 0.12), transparent 60%),\n radial-gradient(ellipse 60% 30% at 30% 60%, rgba(0, 245, 255, 0.06), transparent 60%);\n}\n\n.plh-header {\n position: sticky;\n top: 0;\n z-index: 5;\n background: rgba(10, 10, 18, 0.82);\n backdrop-filter: blur(14px);\n -webkit-backdrop-filter: blur(14px);\n /* #821: tightened from 12px 18px 10px \u2192 8px 14px 6px so the playlist\n cards below get more vertical room above the fold. The header still\n has its blurred backdrop + bottom border for visual separation. */\n padding: 8px 14px 6px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.04);\n}\n\n.plh-titlebar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n /* #821: was 10px \u2014 tightened so chrome compresses and cards get more\n breathing room. */\n margin-bottom: 6px;\n}\n\n.plh-wordmark {\n font-family: var(--font-display);\n font-weight: 900;\n /* #821: was 24px \u2014 small reduction shifts visual focus to the cards\n below without losing branding presence. */\n font-size: 20px;\n letter-spacing: -0.02em;\n line-height: 1;\n background: linear-gradient(90deg, var(--color-accent-primary) 0%, var(--color-accent-secondary) 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n}\n\n.plh-search {\n position: relative;\n margin-bottom: 10px;\n}\n\n.plh-search input {\n width: 100%;\n height: 40px;\n padding: 0 38px 0 40px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 10px;\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.plh-search input:focus {\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 0 3px rgba(0, 245, 255, 0.15);\n}\n\n.plh-search input::placeholder {\n color: var(--color-text-neon-muted);\n opacity: 0.6;\n}\n\n.plh-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--color-accent-secondary);\n opacity: 0.75;\n}\n\n.plh-search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--color-dark-surface-hover);\n border: none;\n color: var(--color-text-neon-muted);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 13px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.plh-segmented {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 4px;\n padding: 4px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 10px;\n margin-bottom: 10px;\n}\n\n.plh-seg {\n background: transparent;\n border: none;\n padding: 8px 4px;\n cursor: pointer;\n border-radius: 7px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n align-items: center;\n line-height: 1.1;\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n letter-spacing: 0.04em;\n transition: background 0.15s, color 0.15s;\n}\n\n.plh-seg .plh-seg-num {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 15px;\n color: var(--color-text-neon-muted);\n}\n\n.plh-seg .plh-seg-label {\n font-size: 11px;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n}\n\n.plh-seg.active {\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.22), rgba(0, 245, 255, 0.14));\n color: var(--color-text-white);\n box-shadow: inset 0 0 0 1px rgba(255, 45, 106, 0.35), 0 0 18px rgba(255, 45, 106, 0.18);\n}\n\n.plh-seg.active .plh-seg-num { color: var(--color-accent-primary); }\n\n.plh-seg-community.active {\n background: linear-gradient(135deg, rgba(157, 78, 221, 0.25), rgba(255, 45, 106, 0.15));\n box-shadow: inset 0 0 0 1px rgba(157, 78, 221, 0.45), 0 0 18px rgba(157, 78, 221, 0.22);\n}\n\n.plh-seg-community.active .plh-seg-num { color: #c89af5; }\n\n.plh-seg-mine.active {\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.18), rgba(255, 45, 106, 0.1));\n box-shadow: inset 0 0 0 1px rgba(0, 245, 255, 0.4), 0 0 18px rgba(0, 245, 255, 0.18);\n}\n\n.plh-seg-mine.active .plh-seg-num { color: var(--color-accent-secondary); }\n\n.plh-chips {\n display: flex;\n gap: 7px;\n overflow-x: auto;\n padding: 0 0 6px;\n scrollbar-width: none;\n}\n\n.plh-chips::-webkit-scrollbar { display: none; }\n\n.plh-chip {\n flex-shrink: 0;\n padding: 7px 13px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 999px;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n white-space: nowrap;\n cursor: pointer;\n letter-spacing: 0.01em;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n}\n\n.plh-chip.active {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n border-color: transparent;\n font-weight: 700;\n box-shadow: 0 0 16px rgba(255, 45, 106, 0.45);\n}\n\n/* #1569 follow-up: the Playlists/Mix tab-panel wrappers must fill the hub's\n remaining height (under the sticky tab strip) so their inner .plh-body can\n scroll. Without this they size to content and overflow .plh-root\n (height:100%; overflow:hidden), clipping everything below the fold. */\n.plh-list-view,\n.plh-mix-view {\n flex: 1 1 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.plh-body {\n position: relative;\n z-index: 1;\n flex: 1;\n overflow-y: auto;\n padding: 14px 0 110px;\n}\n\n.plh-loading {\n padding: 40px 20px;\n text-align: center;\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n color: var(--color-text-neon-muted);\n}\n\n/* Section dividers \u2014 group related shelves under a prominent header.\n Currently used by the \"\uD83C\uDF0D By Country\" block in the Community tab so\n the per-language shelves read as one organized section instead of\n a scattered list. */\n.plh-section-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 18px 12px;\n margin: 4px 0 8px;\n border-bottom: 1px solid rgba(0, 245, 255, 0.12);\n}\n\n.plh-section-head-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n letter-spacing: -0.02em;\n color: var(--color-text-white);\n line-height: 1;\n}\n\n.plh-section-head-emoji {\n font-size: 22px;\n filter: drop-shadow(0 0 12px rgba(0, 245, 255, 0.3));\n}\n\n.plh-section-head-meta {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 10px;\n letter-spacing: 0.16em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n flex-shrink: 0;\n}\n\n/* Shelves */\n\n.plh-shelf {\n margin-bottom: 22px;\n}\n\n.plh-shelf-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n padding: 0 18px 10px;\n}\n\n.plh-shelf-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 18px;\n letter-spacing: -0.01em;\n color: var(--color-text-white);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.plh-shelf-see {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 12px;\n color: var(--color-accent-secondary);\n letter-spacing: 0.02em;\n cursor: pointer;\n background: transparent;\n border: none;\n padding: 0;\n}\n\n.plh-local-dot {\n display: inline-block;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: var(--color-success-neon);\n box-shadow: 0 0 8px var(--color-success-neon);\n margin-right: 8px;\n vertical-align: middle;\n}\n\n.plh-local-badge {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 9px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-success-neon);\n padding: 2px 7px;\n background: rgba(57, 255, 20, 0.12);\n border: 1px solid rgba(57, 255, 20, 0.4);\n border-radius: 999px;\n margin-left: 8px;\n vertical-align: middle;\n}\n\n/* Cards (horizontal scroll shelf) */\n\n.plh-cards {\n display: flex;\n gap: 12px;\n overflow-x: auto;\n padding: 0 18px 4px;\n scrollbar-width: none;\n}\n\n.plh-cards::-webkit-scrollbar { display: none; }\n\n.plh-card {\n flex-shrink: 0;\n /* #821: bumped from 136px \u2192 160px (~17% bigger area). Makes the\n playlist cards the visual centerpiece of the hub instead of feeling\n small relative to the surrounding chrome (header, search, stats,\n chips, action bar). Stays under 50% viewport width on the smallest\n phones (e.g. 375px) so two cards still fit side-by-side. */\n width: 160px;\n cursor: pointer;\n position: relative;\n background: transparent;\n border: none;\n padding: 0;\n text-align: left;\n color: inherit;\n font: inherit;\n}\n\n.plh-card .plh-cover {\n /* #821: matched to .plh-card width; keeps the 1:1 aspect ratio. */\n width: 160px;\n height: 160px;\n border-radius: 12px;\n position: relative;\n overflow: hidden;\n box-shadow: 0 10px 24px rgba(0, 0, 0, 0.5);\n isolation: isolate;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 10px;\n}\n\n.plh-card .plh-cover::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(180deg, transparent 55%, rgba(0, 0, 0, 0.45) 100%);\n pointer-events: none;\n z-index: 1;\n}\n\n.plh-cover-inner {\n position: relative;\n z-index: 2;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n height: 100%;\n}\n\n.plh-cover-glyph {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 42px;\n line-height: 0.9;\n letter-spacing: -0.04em;\n color: #fff;\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* When the glyph falls back to word-initials (e.g. \"GMS\") or a longer\n abbreviation, scale it down so it doesn't crowd the sub-title. */\n.plh-cover-glyph-long { font-size: 26px; letter-spacing: -0.02em; }\n\n.plh-cover-sub {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: rgba(255, 255, 255, 0.92);\n margin-top: 4px;\n line-height: 1.15;\n /* Two-line clamp so \"Top 100 Dutch Classics\" fits cleanly instead of\n showing \"Top 100 Dutch Classi\u2026\". */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n overflow-wrap: break-word;\n word-break: break-word;\n max-width: 100%;\n}\n\n.plh-cover-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 3px 8px;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n border-radius: 999px;\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 9px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-text-white);\n z-index: 3;\n}\n\n.plh-cover-badge-purple {\n background: rgba(157, 78, 221, 0.5);\n}\n\n.plh-card-meta { padding: 8px 2px 0; }\n\n.plh-card-name {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 13px;\n line-height: 1.25;\n color: var(--color-text-white);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.plh-card-sub {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n letter-spacing: 0.02em;\n}\n\n.plh-card-sub b { color: var(--color-accent-secondary); font-weight: 700; }\n\n.plh-card-local {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-success-neon);\n margin-top: 2px;\n letter-spacing: 0.02em;\n}\n\n.plh-card-local b { color: var(--color-success-neon); font-weight: 800; }\n\n.plh-card-local-when { color: var(--color-text-neon-muted); }\n.plh-card-local-when b { color: var(--color-accent-secondary); }\n\n/* rc3: replaces the faint corner circle (.plh-check) with a labeled pill.\n Unselected = pink \"+ Add\", selected = neon-green \"\u2713 Added\". Sits on the\n top-LEFT so it doesn't collide with cover-badge (which lives top-right on\n featured / community / recently-added cards). */\n.plh-pill {\n position: absolute;\n top: 8px;\n left: 8px;\n z-index: 4;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 5px 10px 5px 8px;\n border-radius: 999px;\n background: rgba(255, 45, 106, 0.92);\n color: var(--color-text-white);\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 10px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n cursor: pointer;\n border: 1px solid rgba(255, 255, 255, 0.12);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 14px rgba(255, 45, 106, 0.35);\n backdrop-filter: blur(6px);\n -webkit-backdrop-filter: blur(6px);\n transition: background 0.15s, color 0.15s, box-shadow 0.15s, filter 0.15s;\n}\n\n.plh-pill:hover { filter: brightness(1.1); }\n\n.plh-pill-label { line-height: 1; }\n\n.plh-card-selected .plh-pill {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n border-color: transparent;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 18px rgba(57, 255, 20, 0.55);\n}\n\n.plh-card-selected .plh-cover {\n box-shadow: 0 0 0 3px var(--color-success-neon), 0 10px 24px rgba(0, 0, 0, 0.5);\n}\n\n/* Legacy rc1/rc2 corner circle \u2014 kept as a no-op guard in case any stale\n cached markup survives the CACHE_VERSION bump. New markup uses .plh-pill. */\n.plh-check { display: none; }\n\n/* Featured shelf \u2014 bigger cards + gradient frame */\n\n.plh-featured .plh-card,\n.plh-featured .plh-card .plh-cover { width: 160px; }\n\n.plh-featured .plh-card .plh-cover {\n height: 200px;\n padding: 2px;\n background: linear-gradient(135deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6), 0 0 24px rgba(255, 45, 106, 0.25);\n}\n\n.plh-featured .plh-card .plh-cover::after {\n border-radius: 10px;\n margin: 2px;\n inset: 2px;\n}\n\n.plh-featured .plh-cover-inner { padding: 10px; }\n.plh-featured .plh-cover-glyph { font-size: 48px; }\n\n.plh-card-community .plh-cover {\n background: linear-gradient(135deg, #240046 0%, #7209b7 50%, #ff2d6a 100%);\n box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6), 0 0 28px rgba(157, 78, 221, 0.4);\n}\n\n/* Cover gradient tints */\n.plh-tint-pop { background: linear-gradient(135deg, #ff2d6a 0%, #ff6b9d 60%, #ff8c42 100%); }\n.plh-tint-rock { background: linear-gradient(135deg, #c1121f 0%, #ff4d1c 60%, #ff8c42 100%); }\n.plh-tint-hiphop { background: linear-gradient(135deg, #7209b7 0%, #b5179e 60%, #ff2d6a 100%); }\n.plh-tint-jazz { background: linear-gradient(135deg, #b08968 0%, #e6a855 60%, #ffc94a 100%); }\n.plh-tint-metal { background: linear-gradient(135deg, #1a0000 0%, #6a040f 60%, #c1121f 100%); }\n.plh-tint-eu { background: linear-gradient(135deg, #00b4d8 0%, #0077b6 60%, #03045e 100%); }\n.plh-tint-latin { background: linear-gradient(135deg, #ff6600 0%, #ffb703 60%, #fdd85d 100%); }\n.plh-tint-schlager { background: linear-gradient(135deg, #ff8fab 0%, #ffc2d1 60%, #fae0e4 100%); }\n.plh-tint-schlager .plh-cover-glyph,\n.plh-tint-schlager .plh-cover-sub { color: #2a0a1a; text-shadow: none; }\n.plh-tint-soul { background: linear-gradient(135deg, #6a0572 0%, #ab4287 60%, #fcbf49 100%); }\n.plh-tint-purple { background: linear-gradient(135deg, #240046 0%, #7209b7 50%, #ff2d6a 100%); }\n\n/* Community request banner */\n\n.plh-banner {\n margin: 0 18px 18px;\n padding: 14px 16px;\n border-radius: 14px;\n background: linear-gradient(135deg, rgba(157, 78, 221, 0.18), rgba(255, 45, 106, 0.1));\n border: 1px solid rgba(157, 78, 221, 0.35);\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n}\n\n.plh-banner-icon {\n width: 40px;\n height: 40px;\n border-radius: 10px;\n background: linear-gradient(135deg, #7209b7, var(--color-accent-primary));\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n flex-shrink: 0;\n box-shadow: 0 0 14px rgba(157, 78, 221, 0.5);\n}\n\n.plh-banner-body { flex: 1; min-width: 0; }\n\n.plh-banner-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 14px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-banner-sub {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.35;\n}\n\n.plh-banner-arrow {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n color: #c89af5;\n}\n\n/* Mine empty + populated */\n\n.plh-mine-empty { padding: 30px 24px; text-align: center; }\n\n.plh-empty-emoji { font-size: 64px; margin-bottom: 12px; filter: drop-shadow(0 0 24px rgba(0, 245, 255, 0.3)); }\n\n.plh-mine-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 26px;\n color: var(--color-text-white);\n margin: 0 0 8px;\n letter-spacing: -0.01em;\n line-height: 1.1;\n}\n\n.plh-mine-body {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 14px;\n color: var(--color-text-neon-muted);\n margin: 0 0 20px;\n line-height: 1.5;\n}\n\n.plh-mine-body b { color: var(--color-text-white); font-weight: 700; }\n\n.plh-request-cta {\n margin: 0 0 16px;\n padding: 20px;\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.1), rgba(255, 45, 106, 0.06));\n border: 1px solid rgba(0, 245, 255, 0.35);\n border-radius: 16px;\n text-align: left;\n}\n\n.plh-request-head {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 14px;\n}\n\n.plh-request-icon {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, var(--color-accent-secondary), #0077b6);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--color-bg-primary);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n box-shadow: 0 0 16px rgba(0, 245, 255, 0.5);\n}\n\n.plh-request-titles { flex: 1; min-width: 0; }\n\n.plh-request-t1 {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 16px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-request-t2 {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.35;\n}\n\n.plh-meanwhile {\n margin: 12px 0 0;\n padding: 14px 16px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 12px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n text-align: left;\n}\n\n.plh-meanwhile-icon {\n color: var(--color-accent-secondary);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.plh-meanwhile-body { flex: 1; min-width: 0; }\n\n.plh-meanwhile-t1 {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 13px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-meanwhile-t2 {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.35;\n}\n\n.plh-meanwhile-arrow {\n color: var(--color-text-neon-muted);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 20px;\n}\n\n.plh-mine-head { padding: 14px 18px 6px; display: flex; align-items: baseline; justify-content: space-between; }\n\n.plh-mine-count {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 13px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n\n.plh-mine-count b { color: var(--color-text-white); font-weight: 900; }\n\n.plh-new-request {\n margin: 10px 18px 18px;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px;\n background: linear-gradient(90deg, rgba(0, 245, 255, 0.1), rgba(255, 45, 106, 0.08));\n border: 1px dashed rgba(0, 245, 255, 0.4);\n border-radius: 12px;\n cursor: pointer;\n}\n\n.plh-new-plus {\n width: 36px;\n height: 36px;\n border-radius: 10px;\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 20px;\n box-shadow: 0 0 16px var(--color-accent-secondary);\n flex-shrink: 0;\n}\n\n.plh-new-t1 {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 14px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-new-t2 {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n}\n\n.plh-req-list {\n padding: 0 18px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.plh-req-card {\n padding: 14px 14px 14px 16px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.plh-req-card.plh-req-done { border-color: rgba(57, 255, 20, 0.35); background: linear-gradient(90deg, rgba(57, 255, 20, 0.06), transparent 75%); }\n.plh-req-card.plh-req-building { border-color: rgba(0, 245, 255, 0.4); background: linear-gradient(90deg, rgba(0, 245, 255, 0.06), transparent 75%); }\n.plh-req-card.plh-req-declined { border-color: rgba(255, 45, 106, 0.35); }\n\n.plh-req-row1 { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }\n\n.plh-req-body { min-width: 0; flex: 1; }\n\n.plh-req-name {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n color: var(--color-text-white);\n line-height: 1.2;\n letter-spacing: -0.01em;\n}\n\n.plh-req-desc {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11.5px;\n color: var(--color-text-neon-muted);\n margin-top: 3px;\n line-height: 1.45;\n word-break: break-all;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.plh-req-meta {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 10px;\n color: var(--color-text-light);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n margin-top: 4px;\n}\n\n.plh-req-meta b { color: var(--color-text-neon-muted); font-weight: 700; }\n\n.plh-req-link {\n color: var(--color-accent-secondary);\n font-weight: 700;\n text-transform: none;\n letter-spacing: 0.02em;\n text-decoration: none;\n}\n\n.plh-status-badge {\n flex-shrink: 0;\n padding: 4px 10px;\n border-radius: 999px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 10px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.plh-sb-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 6px currentColor; }\n\n.plh-status-badge.pending { background: rgba(245, 158, 11, 0.12); border: 1px solid rgba(245, 158, 11, 0.45); color: var(--color-warning); }\n.plh-status-badge.building { background: rgba(0, 245, 255, 0.12); border: 1px solid rgba(0, 245, 255, 0.45); color: var(--color-accent-secondary); }\n.plh-status-badge.done { background: rgba(57, 255, 20, 0.12); border: 1px solid rgba(57, 255, 20, 0.4); color: var(--color-success-neon); }\n.plh-status-badge.declined { background: rgba(255, 45, 106, 0.12); border: 1px solid rgba(255, 45, 106, 0.4); color: #ff7ca7; }\n\n.plh-progress { display: flex; gap: 3px; align-items: center; }\n\n.plh-seg-pill {\n flex: 1;\n height: 3px;\n border-radius: 2px;\n background: var(--color-border-neon);\n}\n\n.plh-seg-pill.filled-pending { background: var(--color-warning); box-shadow: 0 0 6px var(--color-warning); }\n.plh-seg-pill.filled-building { background: var(--color-accent-secondary); box-shadow: 0 0 6px var(--color-accent-secondary); }\n.plh-seg-pill.filled-done { background: var(--color-success-neon); box-shadow: 0 0 6px var(--color-success-neon); }\n.plh-seg-pill.filled-declined { background: var(--color-accent-primary); box-shadow: 0 0 6px var(--color-accent-primary); }\n\n.plh-steps-row {\n display: flex;\n justify-content: space-between;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 9px;\n color: var(--color-text-light);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n margin-top: -4px;\n}\n\n.plh-steps-row span.active { color: var(--color-text-white); font-weight: 800; }\n\n/* Empty state layout */\n\n.plh-empty {\n padding: 30px 28px;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.plh-empty-icon {\n width: 96px;\n height: 96px;\n border-radius: 26px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n font-size: 42px;\n position: relative;\n}\n\n.plh-empty-icon-search { background: radial-gradient(circle, rgba(0, 245, 255, 0.12), var(--color-bg-surface) 60%); }\n\n.plh-empty-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 24px;\n color: var(--color-text-white);\n margin: 0;\n letter-spacing: -0.01em;\n line-height: 1.15;\n}\n\n.plh-empty-body {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n color: var(--color-text-neon-muted);\n margin: 0;\n line-height: 1.55;\n max-width: 280px;\n}\n\n.plh-cyan { color: var(--color-accent-secondary); }\n\n.plh-action-stack {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n max-width: 280px;\n margin-top: 12px;\n}\n\n/* Buttons */\n\n.plh-btn {\n padding: 13px 16px;\n border-radius: 12px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 13px;\n letter-spacing: 0.04em;\n border: 1px solid var(--color-border-neon);\n background: var(--color-bg-surface);\n color: var(--color-text-white);\n cursor: pointer;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n text-transform: uppercase;\n transition: all 0.15s;\n font-family: var(--font-display);\n}\n\n.plh-btn:hover { border-color: var(--color-accent-secondary); }\n\n.plh-btn-primary {\n background: linear-gradient(90deg, var(--color-accent-primary), #ff5fa4);\n border-color: transparent;\n color: var(--color-text-white);\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.45);\n}\n\n.plh-btn-primary:hover { border-color: transparent; filter: brightness(1.1); }\n\n.plh-btn-cyan {\n background: linear-gradient(90deg, var(--color-accent-secondary), #0077b6);\n color: var(--color-bg-primary);\n border-color: transparent;\n box-shadow: 0 0 22px rgba(0, 245, 255, 0.45);\n}\n\n.plh-btn-cyan:hover { border-color: transparent; filter: brightness(1.1); }\n\n.plh-btn-neon {\n background: linear-gradient(90deg, var(--color-success-neon), #7bf1ff);\n color: var(--color-bg-primary);\n border-color: transparent;\n box-shadow: 0 0 24px rgba(57, 255, 20, 0.5);\n}\n\n.plh-btn-ghost {\n background: transparent;\n color: var(--color-text-neon-muted);\n}\n\n/* Detail sheet (bottom-sheet modal) */\n\n.plh-sheet-host {\n position: fixed;\n inset: 0;\n z-index: 50;\n pointer-events: none;\n display: none;\n}\n\n.plh-sheet-host.open {\n display: block;\n pointer-events: auto;\n}\n\n.plh-scrim {\n position: absolute;\n inset: 0;\n background: rgba(5, 5, 10, 0.72);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n}\n\n.plh-sheet {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(180deg, #14141e 0%, var(--color-bg-primary) 100%);\n border-top-left-radius: 28px;\n border-top-right-radius: 28px;\n box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.6);\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border-top: 1px solid rgba(255, 45, 106, 0.25);\n animation: plh-sheet-in 0.25s ease-out;\n}\n\n.plh-sheet-community { border-top-color: rgba(157, 78, 221, 0.4); }\n\n.plh-sheet::before {\n content: '';\n position: absolute;\n top: 10px;\n left: 50%;\n transform: translateX(-50%);\n width: 48px;\n height: 4px;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.2);\n}\n\n@keyframes plh-sheet-in {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n\n.plh-sheet-close {\n position: absolute;\n top: 18px;\n right: 18px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n color: var(--color-text-neon-muted);\n cursor: pointer;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 16px;\n line-height: 1;\n z-index: 5;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.plh-sheet-head { padding: 28px 20px 0; display: flex; gap: 14px; align-items: flex-start; flex-shrink: 0; }\n\n.plh-sheet-cover {\n width: 100px;\n height: 100px;\n border-radius: 14px;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 10px;\n box-shadow: 0 12px 30px rgba(0, 0, 0, 0.5);\n}\n\n.plh-sheet-cover-glyph {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 36px;\n line-height: 0.9;\n letter-spacing: -0.04em;\n color: #fff;\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n}\n\n.plh-sheet-cover-sub {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 11px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: rgba(255, 255, 255, 0.9);\n margin-top: 2px;\n}\n\n.plh-sheet-info { flex: 1; min-width: 0; }\n\n.plh-sheet-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n line-height: 1.1;\n letter-spacing: -0.02em;\n color: var(--color-text-white);\n margin: 0;\n}\n\n.plh-sheet-author {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n margin-top: 4px;\n}\n\n.plh-sheet-author b { color: var(--color-accent-secondary); font-weight: 700; }\n\n.plh-sheet-stats {\n display: flex;\n gap: 0;\n padding: 18px 20px 16px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.06);\n margin-top: 18px;\n flex-shrink: 0;\n}\n\n.plh-stat { flex: 1; text-align: center; position: relative; }\n\n.plh-stat + .plh-stat::before {\n content: '';\n position: absolute;\n left: 0;\n top: 6px;\n bottom: 6px;\n width: 1px;\n background: var(--color-border-neon);\n}\n\n.plh-stat-val {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n color: var(--color-text-white);\n letter-spacing: -0.02em;\n line-height: 1;\n}\n\n.plh-stat-val-cyan { color: var(--color-accent-secondary); }\n.plh-stat-val-pink { color: var(--color-accent-primary); }\n\n.plh-stat-lbl {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 9px;\n letter-spacing: 0.16em;\n text-transform: uppercase;\n color: var(--color-text-light);\n margin-top: 4px;\n}\n\n.plh-sheet-scroll {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px 20px;\n}\n\n.plh-sheet-sec-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 12px;\n letter-spacing: 0.18em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n margin: 0 0 10px;\n}\n\n.plh-sheet-desc {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n color: var(--color-text-neon-muted);\n line-height: 1.55;\n margin-bottom: 16px;\n padding: 14px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 12px;\n}\n\n.plh-sheet-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }\n\n.plh-sheet-tag {\n padding: 5px 10px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 6px;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 11px;\n color: var(--color-text-white);\n letter-spacing: 0.02em;\n}\n\n.plh-sheet-providers { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }\n\n.plh-sheet-provider {\n padding: 6px 10px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 8px;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n}\n\n.plh-sheet-provider b { color: var(--color-accent-secondary); font-weight: 800; }\n\n.plh-sheet-foot {\n padding: 14px 20px calc(14px + env(safe-area-inset-bottom, 0px)) 20px;\n background: rgba(10, 10, 18, 0.95);\n border-top: 1px solid var(--color-border-neon);\n display: flex;\n gap: 10px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.plh-sheet-foot .plh-btn { flex: 1; }\n\n/* Bottom CTA bar */\n\n/* #1625: the Mix tab reuses the sticky CTA bar (Back + \"Weiter \u2192\") so the setup\n wizard can advance from a built mix. It renders empty outside the wizard\n (no onContinue) \u2014 collapse it so no bare floating bar shows. */\n.plh-mix-cta:empty {\n display: none;\n}\n\n.plh-cta-bar {\n position: absolute;\n left: 12px;\n right: 12px;\n bottom: 12px;\n display: flex;\n gap: 8px;\n padding: 10px;\n background: rgba(10, 10, 18, 0.88);\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n border: 1px solid var(--color-border-neon);\n border-radius: 16px;\n box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6);\n align-items: center;\n z-index: 10;\n}\n\n/* Request-a-playlist FAB inside the CTA bar. rc1/rc2 used a\n near-transparent fill which made the envelope icon invisible against\n the dark sticky bar. rc3: solid cyan button with a dark icon so the\n affordance reads at a glance. */\n.plh-cta-fab {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, var(--color-accent-secondary) 0%, #0ea5c4 100%);\n border: none;\n color: var(--color-bg-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 0 18px rgba(0, 245, 255, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.25);\n flex-shrink: 0;\n transition: filter 0.15s;\n}\n\n.plh-cta-fab:hover { filter: brightness(1.1); }\n\n/* #1054: pin the FAB SVG stroke to a literal hex white. The earlier\n rc3 fix used var(--color-bg-primary), but some Safari/Webkit versions\n also fail to resolve CSS variables into the SVG `stroke` property,\n not just into inherited `currentColor`. A literal hex value bypasses\n the variable resolver entirely; white on cyan gives max contrast. */\n.plh-cta-fab svg {\n stroke: #ffffff;\n fill: none;\n}\n\n.plh-cta-back {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 0 12px;\n height: 44px;\n border-radius: 12px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n color: var(--color-text-white);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 13px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n cursor: pointer;\n transition: border-color 0.15s, background 0.15s;\n}\n\n.plh-cta-back:hover { border-color: var(--color-accent-secondary); }\n.plh-cta-back svg { opacity: 0.85; }\n\n.plh-cta-count {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 14px;\n color: var(--color-success-neon);\n padding: 0 8px;\n letter-spacing: 0.04em;\n text-shadow: 0 0 10px rgba(57, 255, 20, 0.5);\n}\n\n.plh-cta-start {\n flex: 1;\n background: linear-gradient(90deg, var(--color-accent-primary), #ff5fa4);\n border: none;\n border-radius: 12px;\n padding: 12px;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 14px;\n color: var(--color-text-white);\n cursor: pointer;\n letter-spacing: 0.02em;\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n/* Legacy count pill \u2014 v3.3.0-rc1 rendered it next to the Continue label.\n rc2 drops it (count already shown in the green pill on the left).\n Kept as a no-op class guard in case any stale cached markup shows up. */\n.plh-cta-start-count { display: none; }\n\n.plh-cta-start-label { font-family: var(--font-display); font-weight: 700; }\n.plh-cta-start-arrow { opacity: 0.9; flex-shrink: 0; }\n.plh-cta-count-empty { opacity: 0.5; }\n\n.plh-cta-count-btn {\n background: transparent;\n border: 1px solid rgba(57, 255, 20, 0.35);\n border-radius: 999px;\n cursor: pointer;\n transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;\n}\n.plh-cta-count-btn:hover,\n.plh-cta-count-btn:focus-visible {\n background: rgba(57, 255, 20, 0.12);\n border-color: rgba(57, 255, 20, 0.6);\n outline: none;\n}\n.plh-cta-count-btn:active { transform: scale(0.96); }\n\n.plh-cta-start-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n}\n\n/* Selected-playlists sheet (issue #1074) */\n.plh-sheet-selected { border-top-color: rgba(57, 255, 20, 0.35); }\n.plh-selected-head {\n padding: 28px 20px 12px;\n flex-shrink: 0;\n}\n.plh-selected-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 20px;\n color: var(--color-text-white);\n margin: 0 0 4px;\n letter-spacing: 0.01em;\n}\n.plh-selected-subtitle {\n font-size: 13px;\n color: var(--color-text-neon-muted);\n letter-spacing: 0.01em;\n}\n.plh-selected-scroll {\n overflow-y: auto;\n padding: 4px 16px 24px;\n flex: 1;\n min-height: 0;\n}\n.plh-selected-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 8px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.06);\n}\n.plh-selected-row:last-child { border-bottom: none; }\n.plh-selected-thumb {\n width: 44px;\n height: 44px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: rgba(255, 255, 255, 0.06);\n}\n.plh-selected-glyph { font-size: 20px; }\n.plh-selected-meta {\n flex: 1;\n min-width: 0;\n}\n.plh-selected-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 14px;\n color: var(--color-text-white);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.plh-selected-sub {\n font-size: 12px;\n color: var(--color-text-neon-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin-top: 2px;\n}\n.plh-selected-sub b { color: var(--color-text-white); font-weight: 700; }\n.plh-selected-remove {\n height: 32px;\n padding: 0 12px;\n border-radius: 16px;\n background: var(--color-bg-surface);\n border: 1px solid rgba(255, 45, 106, 0.35);\n color: #ff5fa4;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-shrink: 0;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.1s ease;\n}\n.plh-selected-remove:hover,\n.plh-selected-remove:focus-visible {\n background: rgba(255, 45, 106, 0.18);\n border-color: rgba(255, 45, 106, 0.65);\n color: #ff7ab3;\n outline: none;\n}\n.plh-selected-remove:active { transform: scale(0.94); }\n.plh-selected-remove-label { line-height: 1; }\n.plh-selected-empty {\n text-align: center;\n padding: 36px 20px;\n color: var(--color-text-neon-muted);\n}\n.plh-selected-empty-icon { font-size: 36px; margin-bottom: 8px; }\n.plh-selected-empty-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 14px;\n}\n\n/* Wider viewport: widen cards a touch, keep layout stable */\n\n@media (min-width: 720px) {\n .plh-cards { padding: 0 24px 4px; }\n .plh-header { padding: 16px 24px 12px; }\n .plh-shelf-head { padding: 0 24px 10px; }\n .plh-banner, .plh-new-request { margin-left: 24px; margin-right: 24px; }\n .plh-req-list { padding: 0 24px; }\n .plh-mine-head { padding: 14px 24px 6px; }\n}\n\n/* ------------------------------------------------------------------\n * Playlist Generator (#1052) \u2014 modal that bridges Spotify URL \u2192 LLM\n * prompt \u2192 validated bundled-format JSON. Lives under .plg-* namespace.\n * Built to match the dark playlist-hub look + admin tokens.\n * ------------------------------------------------------------------ */\n.plg-host {\n position: fixed;\n inset: 0;\n z-index: 9000;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n overflow: hidden;\n}\n.plg-scrim {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.72);\n backdrop-filter: blur(6px);\n -webkit-backdrop-filter: blur(6px);\n}\n.plg-modal {\n position: relative;\n z-index: 1;\n margin: 32px 16px;\n max-width: 880px;\n width: 100%;\n background: #0f1116;\n color: #f1f3f7;\n border-radius: 16px;\n border: 1px solid rgba(255, 255, 255, 0.08);\n box-shadow: 0 30px 60px rgba(0, 0, 0, 0.6);\n padding: 24px 24px 20px;\n max-height: calc(100vh - 64px);\n overflow-y: auto;\n font-family: var(--font-body, system-ui);\n}\n.plg-close {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.06);\n color: #f1f3f7;\n border: 0;\n font-size: 16px;\n cursor: pointer;\n}\n.plg-close:hover { background: rgba(255, 255, 255, 0.12); }\n.plg-title {\n margin: 0 0 4px;\n font-size: 20px;\n font-family: var(--font-display, system-ui);\n font-weight: 700;\n letter-spacing: 0.02em;\n}\n.plg-sub {\n margin: 0 0 18px;\n color: #d8dce5;\n font-size: 15px;\n line-height: 1.55;\n}\n/* Inline step-by-step guide accordion (#1286) */\n.plg-guide {\n margin: 0 0 18px;\n background: #14171f;\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 12px;\n overflow: hidden;\n}\n.plg-guide-toggle {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n box-sizing: border-box;\n padding: 12px 14px;\n background: transparent;\n border: 0;\n color: #f1f3f7;\n font: inherit;\n font-size: 14px;\n font-weight: 700;\n letter-spacing: 0.01em;\n cursor: pointer;\n text-align: left;\n}\n.plg-guide-toggle:hover { background: rgba(255, 255, 255, 0.03); }\n.plg-guide-chevron { color: #8a92a3; font-size: 13px; margin-left: 12px; }\n.plg-guide-body {\n padding: 4px 14px 14px;\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n}\n.plg-guide-steps {\n list-style: none;\n margin: 12px 0 14px;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.plg-guide-step {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n.plg-guide-num {\n flex: 0 0 auto;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: linear-gradient(180deg, #ff3a8c, #cf2e72);\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.plg-guide-text {\n color: #d8dce5;\n font-size: 13.5px;\n line-height: 1.5;\n}\n.plg-guide-text b { color: #f1f3f7; }\n.plg-guide-warn {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n background: rgba(255, 184, 0, 0.08);\n border: 1px solid rgba(255, 184, 0, 0.35);\n border-radius: 10px;\n padding: 10px 12px;\n}\n.plg-guide-warn-icon { flex: 0 0 auto; font-size: 14px; line-height: 1.5; }\n.plg-guide-warn-text {\n color: #f0d9a8;\n font-size: 12.5px;\n line-height: 1.55;\n}\n.plg-guide-warn-text b { color: #ffd66b; }\n.plg-label {\n display: block;\n margin: 14px 0 6px;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: #8a92a3;\n}\n.plg-input,\n.plg-textarea {\n width: 100%;\n box-sizing: border-box;\n background: #181b24;\n color: #f1f3f7;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 10px;\n padding: 10px 12px;\n font: inherit;\n font-size: 14px;\n outline: none;\n}\n.plg-input:focus,\n.plg-textarea:focus { border-color: #5cc8ff; }\n.plg-textarea {\n min-height: 200px;\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12.5px;\n line-height: 1.45;\n resize: vertical;\n}\n.plg-row {\n display: flex;\n gap: 10px;\n align-items: center;\n margin: 8px 0 0;\n flex-wrap: wrap;\n}\n.plg-hint {\n color: #8a92a3;\n font-size: 12px;\n}\n.plg-btn {\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n border-radius: 999px;\n padding: 9px 16px;\n font: inherit;\n font-size: 13px;\n font-weight: 600;\n border: 0;\n background: rgba(255, 255, 255, 0.08);\n color: #f1f3f7;\n}\n.plg-btn:disabled { cursor: not-allowed; opacity: 0.45; }\n.plg-btn-primary { background: linear-gradient(180deg, #ff3a8c, #cf2e72); color: #fff; }\n.plg-btn-secondary { background: rgba(255, 255, 255, 0.1); }\n.plg-btn-ghost { background: transparent; color: #aab0bd; }\n.plg-btn-success { background: linear-gradient(180deg, #2dd66f, #20b659); color: #04140a; }\n.plg-btn-disabled { background: rgba(255, 255, 255, 0.04); color: #5a606e; }\n.plg-actions {\n display: flex;\n gap: 10px;\n margin: 16px 0 0;\n flex-wrap: wrap;\n}\n.plg-results {\n margin-top: 16px;\n}\n.plg-verdict {\n padding: 10px 12px;\n border-radius: 10px;\n margin: 6px 0 12px;\n font-weight: 700;\n font-size: 13px;\n}\n.plg-verdict-ok { background: rgba(45, 214, 111, 0.16); color: #2dd66f; border: 1px solid rgba(45, 214, 111, 0.4); }\n.plg-verdict-bad { background: rgba(255, 80, 80, 0.14); color: #ff8a8a; border: 1px solid rgba(255, 80, 80, 0.4); }\n.plg-block {\n background: #14171f;\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 10px;\n padding: 10px 12px;\n margin: 8px 0;\n}\n.plg-block h4 { margin: 0 0 6px; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; color: #aab0bd; }\n.plg-block ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.5; }\n.plg-block-err { border-color: rgba(255, 80, 80, 0.4); }\n.plg-table-wrap { overflow-x: auto; }\n.plg-table { width: 100%; border-collapse: collapse; font-size: 11px; }\n.plg-table th, .plg-table td { padding: 4px 6px; text-align: center; }\n.plg-table th { color: #8a92a3; font-weight: 600; letter-spacing: 0.04em; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }\n.plg-row-idx { color: #aab0bd; text-align: left; font-weight: 700; }\n.plg-cell-ok { color: #2dd66f; }\n.plg-cell-bad { color: #ff8a8a; background: rgba(255, 80, 80, 0.06); }\n.plg-row-bad { background: rgba(255, 80, 80, 0.04); }\n.plg-row-details td { text-align: left; padding-left: 24px; }\n.plg-err-list { color: #ff8a8a; }\n.plg-warn-list { color: #ffd66b; }\n.plg-song-issue { padding: 8px 0; border-top: 1px solid rgba(255, 255, 255, 0.05); }\n.plg-song-issue:first-of-type { border-top: 0; padding-top: 4px; }\n.plg-song-issue-head { font-weight: 700; font-size: 12px; margin: 0 0 4px; color: #f1f3f7; letter-spacing: 0.02em; }\n.plg-song-issue ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.5; }\n.plg-err-item { color: #ff8a8a; }\n.plg-warn-item { color: #ffd66b; }\n.plg-results-actions { margin-top: 0 !important; margin-bottom: 6px; }\n.plg-hint-inline { font-style: italic; }\n.plg-error {\n background: rgba(255, 80, 80, 0.12);\n border: 1px solid rgba(255, 80, 80, 0.4);\n color: #ff8a8a;\n border-radius: 10px;\n padding: 12px;\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n}\n.plg-footer {\n margin-top: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n padding-top: 10px;\n color: #8a92a3;\n font-size: 12px;\n line-height: 1.5;\n}\n.plg-followup:empty { display: none; }\n.plg-banner {\n margin-top: 12px;\n padding: 10px 12px;\n border-radius: 10px;\n font-size: 13px;\n line-height: 1.5;\n}\n.plg-banner p { margin: 0 0 8px; }\n.plg-banner .plg-row { margin-top: 4px; flex-wrap: wrap; }\n.plg-banner-ok {\n background: rgba(45, 214, 111, 0.14);\n border: 1px solid rgba(45, 214, 111, 0.4);\n color: #c8f3d8;\n}\n.plg-banner-info {\n background: rgba(99, 102, 241, 0.14);\n border: 1px solid rgba(99, 102, 241, 0.4);\n color: #d6d8ff;\n}\n\n/* ============================================\n Title & Artist reveal (#1180)\n ============================================ */\n/* Crowd Court layout (#1180): truth + own result collapse into a compact\n header so the community voting below becomes the hero of the screen. */\n.ta-reveal-truth {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n justify-content: center;\n gap: 8px;\n font-family: var(--font-display, inherit);\n font-size: var(--font-size-md, 1rem);\n margin-bottom: var(--space-sm, 8px);\n}\n.ta-truth-title { font-weight: 800; }\n.ta-truth-sep { opacity: 0.4; }\n.ta-truth-artist {\n color: var(--color-text-neon-muted, #b3b3c2);\n font-family: var(--font-body, inherit);\n font-weight: 600;\n}\n\n.ta-reveal-own {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.07);\n border-radius: var(--radius-lg, 12px);\n}\n/* Emotional verdict banner above the own-result (#1180). */\n.ta-verdict {\n text-align: center;\n font-family: var(--font-display, inherit);\n font-weight: 900;\n font-size: var(--font-size-lg, 1.125rem);\n letter-spacing: 0.01em;\n padding: 8px 12px;\n margin-bottom: 4px;\n border-radius: var(--radius-md, 8px);\n}\n.ta-verdict--win {\n color: var(--color-success-neon, #39ff14);\n background: rgba(57, 255, 20, 0.14);\n box-shadow: inset 0 0 18px rgba(57, 255, 20, 0.12);\n text-shadow: 0 0 12px rgba(57, 255, 20, 0.5);\n}\n.ta-verdict--partial {\n color: var(--color-accent-secondary, #00f5ff);\n background: rgba(0, 245, 255, 0.1);\n}\n.ta-verdict--pending {\n color: var(--color-accent-secondary, #00f5ff);\n background: rgba(0, 245, 255, 0.07);\n font-weight: 700;\n font-style: italic;\n}\n.ta-verdict--miss {\n color: var(--color-text-neon-muted, #b3b3c2);\n background: rgba(255, 255, 255, 0.05);\n}\n.ta-own-row {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n}\n.ta-own-label {\n color: var(--color-text-dim, #6b6b7a);\n font-size: var(--font-size-sm, 0.875rem);\n min-width: 6em;\n}\n.ta-own-guess {\n font-weight: 600;\n flex: 1 1 auto;\n word-break: break-word;\n}\n.ta-own-row--none {\n color: var(--color-text-neon-muted, #b3b3c2);\n font-style: italic;\n}\n.ta-pill {\n font-size: 0.72rem;\n font-weight: 700;\n padding: 2px 10px;\n border-radius: var(--radius-full, 999px);\n white-space: nowrap;\n letter-spacing: 0.02em;\n}\n.ta-pill--exact,\n.ta-pill--fuzzy,\n.ta-pill--near-miss-accepted {\n background: rgba(46, 229, 157, 0.16);\n color: #2ee59d;\n}\n.ta-pill--near-miss {\n background: rgba(255, 180, 0, 0.16);\n color: #ffb400;\n}\n.ta-pill--wrong {\n background: rgba(255, 0, 64, 0.14);\n color: var(--color-error-neon, #ff0040);\n}\n.ta-pill--skipped {\n background: rgba(255, 255, 255, 0.08);\n color: var(--color-text-secondary, #b9b9c6);\n}\n\n/* ---- Crowd Court community voting (#1180) ---- */\n.ta-voting {\n margin-top: var(--space-lg, 24px);\n}\n.ta-voting.hidden { display: none; }\n.ta-voting-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: var(--space-md, 16px);\n}\n.ta-voting-header > span:not(.ta-voting-countdown) {\n font-family: var(--font-display, inherit);\n font-weight: 900;\n font-size: var(--font-size-sm, 0.875rem);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--color-text-white, #fff);\n}\n/* Countdown ring: hollow centre via a radial mask over a draining conic arc. */\n.ta-voting-countdown {\n flex-shrink: 0;\n width: 52px;\n height: 52px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n font-weight: 800;\n font-size: 18px;\n font-variant-numeric: tabular-nums;\n color: var(--color-accent-secondary, #00f5ff);\n background:\n radial-gradient(circle at center, var(--color-bg-primary, #0a0a12) 56%, transparent 57%),\n conic-gradient(var(--color-accent-secondary, #00f5ff) var(--ta-vote-progress, 360deg), rgba(255, 255, 255, 0.1) 0);\n box-shadow: var(--glow-secondary, 0 0 20px rgba(0, 245, 255, 0.5));\n}\n.ta-voting-countdown--closed {\n width: auto;\n height: auto;\n border-radius: var(--radius-full, 999px);\n padding: 4px 12px;\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: 700;\n color: var(--color-text-neon-muted, #b3b3c2);\n background: rgba(255, 255, 255, 0.08);\n box-shadow: none;\n}\n\n.ta-voting-cards {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.ta-vote-card {\n background: var(--color-bg-surface, rgba(255, 255, 255, 0.05));\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-lg, 12px);\n padding: 14px;\n}\n.ta-vote-card--mine {\n border-color: rgba(255, 45, 106, 0.45);\n box-shadow: inset 0 0 16px rgba(255, 45, 106, 0.07);\n}\n.ta-vote-card-head {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 10px;\n}\n.ta-vote-avatar {\n flex-shrink: 0;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: 13px;\n color: #fff;\n background: linear-gradient(135deg, var(--color-accent-primary, #ff2d6a), var(--color-neon-purple, #9d4edd));\n}\n.ta-vote-who {\n flex: 1;\n font-weight: 700;\n font-size: var(--font-size-md, 1rem);\n word-break: break-word;\n}\n.ta-vote-field {\n flex-shrink: 0;\n font-size: var(--font-size-xs, 0.625rem);\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-text-dim, #6b6b7a);\n background: rgba(255, 255, 255, 0.06);\n padding: 3px 8px;\n border-radius: var(--radius-full, 999px);\n}\n.ta-vote-guess {\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: var(--font-size-lg, 1.125rem);\n margin: 2px 0 12px;\n word-break: break-word;\n}\n.ta-vote-tally {\n display: flex;\n flex-direction: column;\n gap: 7px;\n margin-bottom: 12px;\n}\n.ta-tally-row {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n}\n.ta-tally-yes { color: var(--color-success-neon, #39ff14); min-width: 48px; }\n.ta-tally-no { color: var(--color-error-neon, #ff0040); min-width: 48px; }\n.ta-tally-track {\n flex: 1;\n height: 8px;\n border-radius: var(--radius-full, 999px);\n background: rgba(255, 255, 255, 0.07);\n overflow: hidden;\n}\n.ta-tally-fill {\n display: block;\n height: 100%;\n border-radius: var(--radius-full, 999px);\n transition: width var(--transition-normal, 300ms) ease-out;\n}\n.ta-tally-fill--yes {\n background: var(--color-success-neon, #39ff14);\n box-shadow: 0 0 10px rgba(57, 255, 20, 0.5);\n}\n.ta-tally-fill--no {\n background: var(--color-error-neon, #ff0040);\n box-shadow: 0 0 10px rgba(255, 0, 64, 0.45);\n}\n.ta-vote-actions {\n display: flex;\n gap: 10px;\n}\n.ta-vote-btn {\n position: relative;\n flex: 1;\n height: 48px;\n border: 1px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-lg, 12px);\n background: rgba(255, 255, 255, 0.05);\n font-size: 20px;\n cursor: pointer;\n transition: transform var(--transition-fast, 150ms),\n box-shadow var(--transition-fast, 150ms),\n opacity var(--transition-fast, 150ms),\n background var(--transition-fast, 150ms);\n}\n.ta-vote-btn--yes {\n background: rgba(57, 255, 20, 0.12);\n border-color: rgba(57, 255, 20, 0.4);\n color: var(--color-success-neon, #39ff14);\n}\n.ta-vote-btn--no {\n background: rgba(255, 0, 64, 0.1);\n border-color: rgba(255, 0, 64, 0.38);\n color: var(--color-error-neon, #ff0040);\n}\n/* Voted state: chosen button lights up + \u2713, the other dims but stays\n tappable (the server lets a player change their vote). */\n.ta-vote-btn.is-chosen { transform: translateY(-1px); }\n.ta-vote-btn--yes.is-chosen {\n background: rgba(57, 255, 20, 0.22);\n border-color: rgba(57, 255, 20, 0.6);\n box-shadow: var(--glow-success, 0 0 20px rgba(57, 255, 20, 0.5));\n}\n.ta-vote-btn--no.is-chosen {\n background: rgba(255, 0, 64, 0.2);\n border-color: rgba(255, 0, 64, 0.55);\n box-shadow: var(--glow-error, 0 0 20px rgba(255, 0, 64, 0.5));\n}\n.ta-vote-actions--voted .ta-vote-btn { opacity: 0.34; }\n.ta-vote-actions--voted .ta-vote-btn.is-chosen { opacity: 1; }\n.ta-vote-actions--voted .ta-vote-btn.is-chosen::after {\n content: \"\u2713\";\n position: absolute;\n top: 3px;\n right: 8px;\n font-size: 12px;\n font-weight: 800;\n}\n.ta-vote-btn--yes.is-chosen::after { color: var(--color-success-neon, #39ff14); }\n.ta-vote-btn--no.is-chosen::after { color: var(--color-error-neon, #ff0040); }\n.ta-voted-caption {\n margin-top: 8px;\n text-align: center;\n font-size: var(--font-size-sm, 0.875rem);\n color: var(--color-text-neon-muted, #b3b3c2);\n}\n.ta-vote-own-note {\n text-align: center;\n font-size: var(--font-size-sm, 0.875rem);\n font-style: italic;\n color: var(--color-accent-primary, #ff2d6a);\n opacity: 0.85;\n}\n.ta-override-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid rgba(255, 255, 255, 0.07);\n}\n.ta-override-label {\n margin-right: auto;\n font-size: var(--font-size-xs, 0.625rem);\n color: var(--color-text-dim, #6b6b7a);\n}\n.ta-override-btn {\n padding: 6px 14px;\n border-radius: var(--radius-md, 8px);\n border: 1px solid rgba(255, 255, 255, 0.14);\n background: rgba(255, 255, 255, 0.05);\n color: var(--color-text-white, #fff);\n font-weight: 700;\n font-size: var(--font-size-sm, 0.875rem);\n cursor: pointer;\n}\n.ta-override-btn--accept.is-chosen {\n border-color: var(--color-success-neon, #39ff14);\n color: var(--color-success-neon, #39ff14);\n}\n.ta-override-btn--reject.is-chosen {\n border-color: var(--color-error-neon, #ff0040);\n color: var(--color-error-neon, #ff0040);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ta-tally-fill,\n .ta-vote-btn { transition: none; }\n}\n\n/* ---- Resolution moment: \"Close calls \u2014 decided\" (#1180, #1243) ----\n Outcome cards render inside #ta-voting-cards, which already lays out a\n gapped column, so no extra wrapper is needed. */\n.ta-outcome-card {\n display: flex;\n align-items: center;\n gap: 10px;\n background: var(--color-bg-surface, rgba(255, 255, 255, 0.05));\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-lg, 12px);\n padding: 11px 13px;\n}\n.ta-outcome-card--accepted { border-color: rgba(57, 255, 20, 0.3); }\n.ta-outcome-card--rejected { opacity: 0.72; }\n.ta-outcome-avatar {\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: 12px;\n color: #fff;\n background: linear-gradient(135deg, var(--color-accent-primary, #ff2d6a), var(--color-neon-purple, #9d4edd));\n}\n.ta-outcome-main { flex: 1; min-width: 0; }\n.ta-outcome-who {\n font-weight: 700;\n font-size: var(--font-size-base, 0.875rem);\n}\n.ta-outcome-field { color: var(--color-text-dim, #6b6b7a); font-weight: 600; }\n.ta-outcome-guess {\n font-size: var(--font-size-sm, 0.875rem);\n color: var(--color-text-neon-muted, #b3b3c2);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ta-outcome-tally {\n font-size: var(--font-size-xs, 0.625rem);\n color: var(--color-text-dim, #6b6b7a);\n font-variant-numeric: tabular-nums;\n}\n.ta-outcome-verdict {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: var(--font-size-base, 0.875rem);\n padding: 5px 11px;\n border-radius: var(--radius-full, 999px);\n font-variant-numeric: tabular-nums;\n}\n.ta-outcome-verdict--accepted {\n background: rgba(57, 255, 20, 0.16);\n color: var(--color-success-neon, #39ff14);\n}\n.ta-outcome-verdict--rejected {\n background: rgba(255, 0, 64, 0.12);\n color: var(--color-error-neon, #ff0040);\n}\n\n/* Title & Artist guessing inputs (#1180) \u2014 primary-round input card.\n Echoes the .arc-tiles bonus card but with the pink (primary) accent, and\n stacks each label above a full-width input so the two fields align cleanly. */\n.ta-input-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px 14px;\n margin: 0 var(--space-md) var(--space-md);\n background: linear-gradient(180deg, rgba(255, 45, 106, 0.06), rgba(255, 255, 255, 0.02));\n border: 1px solid rgba(255, 45, 106, 0.22);\n border-radius: var(--radius-lg);\n box-shadow: inset 0 0 12px rgba(255, 45, 106, 0.05);\n}\n.ta-input-section.hidden { display: none; }\n.ta-input-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ta-input-label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.ta-input-points {\n margin-left: auto;\n flex-shrink: 0;\n background: rgba(57, 255, 20, 0.15);\n color: var(--color-success-neon);\n font-weight: 900;\n font-size: 11px;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n}\n.ta-text-input {\n width: 100%;\n box-sizing: border-box;\n padding: 12px 14px;\n background: rgba(255, 255, 255, 0.05);\n border: 2px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-lg);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: 16px;\n line-height: 1.3;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.ta-text-input::placeholder { color: var(--color-text-neon-muted); opacity: 0.55; }\n.ta-text-input:focus {\n outline: none;\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 0 3px rgba(255, 45, 106, 0.20);\n}\n.ta-input-ack {\n margin-top: 2px;\n text-align: center;\n font-family: var(--font-body);\n font-size: 12px;\n color: var(--color-success-neon);\n}\n.ta-input-ack.hidden { display: none; }\n\n/* ==========================================================================\n Spotlight Stage \u2014 player reveal skin\n --------------------------------------------------------------------------\n A frosted-glass reskin of the reveal view: the song's album art, blurred,\n acts as a \"stage\" behind the top of the screen; every panel floats on\n frosted glass; the duel is two facing tickets bridged by a delta pill.\n\n EVERYTHING here is scoped under #reveal-view on purpose. Several classes\n used on this screen (.card-section, .section-header, .info-btn, .chip,\n .leaderboard-list) are shared with the launcher, lobby, end and admin\n surfaces \u2014 scoping keeps those untouched. Source order + the #id give\n these rules the specificity to win over the base reveal styles above.\n ========================================================================== */\n\n/* Stage: own stacking context + clip the backdrop's blur bleed. */\n#reveal-view .reveal-container--duel {\n position: relative;\n overflow: hidden;\n isolation: isolate;\n}\n\n/* --- Album-art backdrop + scrim (scrolls with the content) --- */\n#reveal-view .reveal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 340px;\n z-index: 0;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n filter: blur(46px) saturate(1.15);\n transform: scale(1.15);\n transform-origin: top center;\n opacity: 0.5;\n pointer-events: none;\n /* Fade the art to nothing well before its box ends, so the blurred/scaled\n tail never reads as a hard bright band below the duel cards (the rc1\n #1462 regression mholzi flagged). The glow dissolves into the stage. */\n -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 28%, transparent 70%);\n mask-image: linear-gradient(to bottom, #000 0%, #000 28%, transparent 70%);\n}\n/* Synthetic fallback when album art is missing or its proxy URL has expired. */\n#reveal-view .reveal-backdrop--synthetic {\n background-image:\n radial-gradient(circle at 28% 22%, rgba(168, 32, 84, 0.95) 0%, rgba(168, 32, 84, 0) 42%),\n radial-gradient(circle at 78% 14%, rgba(96, 28, 150, 0.9) 0%, rgba(96, 28, 150, 0) 46%),\n radial-gradient(circle at 18% 82%, rgba(34, 40, 120, 0.9) 0%, rgba(34, 40, 120, 0) 50%),\n conic-gradient(from 210deg at 52% 48%,\n #1a1038 0deg, #4a1240 70deg, #7a1e3c 130deg,\n #2a1454 200deg, #131642 280deg, #1a1038 360deg);\n filter: blur(54px) saturate(1.25);\n}\n#reveal-view .reveal-scrim {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 380px;\n z-index: 0;\n pointer-events: none;\n background: linear-gradient(180deg,\n rgba(10, 10, 18, 0.78) 0%,\n rgba(10, 10, 18, 0.88) 55%,\n var(--color-bg-primary) 100%);\n}\n/* One cyan spotlight from the upper centre. */\n#reveal-view .reveal-scrim::after {\n content: '';\n position: absolute;\n inset: 0;\n background: radial-gradient(ellipse 320px 360px at 50% 24%,\n rgba(0, 245, 255, 0.13) 0%, rgba(0, 245, 255, 0) 62%);\n}\n/* Lift every real child above the backdrop/scrim \u2014 but NOT the confetti\n canvas, which must keep its own `position: fixed` (full-screen overlay).\n Without this exclusion the canvas drops into normal flow and adds a tall\n empty gap between the duel and the score row. */\n#reveal-view .reveal-container--duel > *:not(.reveal-backdrop):not(.reveal-scrim):not(.confetti-canvas) {\n position: relative;\n z-index: 1;\n}\n@media (prefers-reduced-motion: no-preference) {\n #reveal-view .reveal-backdrop {\n transition: background-image 0.4s ease;\n }\n}\n\n/* --- Frosted-glass recipe for the floating panels --- */\n#reveal-view .song-strip,\n#reveal-view .score-row,\n#reveal-view .card-section,\n#reveal-view .duel-ticket {\n background: rgba(255, 255, 255, 0.06);\n border: 1px solid rgba(255, 255, 255, 0.12);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);\n border-radius: var(--radius-lg);\n}\n/* Keep the glass on hover (base .card-section:hover changes the background). */\n#reveal-view .card-section:hover {\n background: rgba(255, 255, 255, 0.08);\n border-color: rgba(255, 255, 255, 0.16);\n}\n\n/* --- Top chrome floats, no panel (already borderless; just sits on top) --- */\n#reveal-view .reveal-header-v2 {\n margin-bottom: var(--space-sm);\n}\n\n/* --- Song identity strip --- */\n#reveal-view .song-strip {\n padding: var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm);\n}\n#reveal-view .song-strip-cover {\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);\n border: 1px solid rgba(255, 255, 255, 0.15);\n}\n\n/* --- Center stage: emotion headline + duel tickets --- */\n#reveal-view .duel-emotion {\n font-size: 30px;\n letter-spacing: 0.04em;\n margin-bottom: var(--space-sm);\n text-shadow: 0 4px 18px rgba(0, 0, 0, 0.6);\n}\n#reveal-view .duel {\n padding: var(--space-md) var(--space-xs) var(--space-lg);\n}\n#reveal-view .duel-tickets {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: stretch;\n gap: var(--space-md);\n padding-bottom: 20px;\n}\n#reveal-view .duel-ticket {\n flex: 1 1 0;\n max-width: 170px;\n padding: var(--space-md) var(--space-sm) var(--space-lg);\n text-align: center;\n}\n#reveal-view .duel-ticket--you {\n transform: rotate(-3deg) translateY(4px);\n border-color: rgba(255, 45, 106, 0.35);\n box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45), 0 0 24px rgba(255, 45, 106, 0.12);\n}\n#reveal-view .duel-ticket--truth {\n transform: rotate(3deg) translateY(4px);\n border-color: rgba(0, 245, 255, 0.4);\n box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45), 0 0 34px rgba(0, 245, 255, 0.18);\n}\n#reveal-view .duel-ticket .duel-label {\n padding-bottom: var(--space-sm);\n margin: 0 6px var(--space-sm);\n border-bottom: 1.5px dashed rgba(255, 255, 255, 0.18);\n}\n#reveal-view .duel-ticket .duel-year {\n font-size: clamp(40px, 13vw, 54px);\n}\n#reveal-view .duel-ticket--you .duel-year.mine {\n color: var(--color-accent-primary);\n text-shadow: 0 0 18px rgba(255, 45, 106, 0.45);\n}\n#reveal-view .duel-ticket--truth .duel-year.correct {\n color: var(--color-accent-secondary);\n text-shadow: 0 0 14px rgba(0, 245, 255, 0.9), 0 0 38px rgba(0, 245, 255, 0.45);\n}\n/* The gap becomes a delta pill overlapping the tickets' base. */\n#reveal-view .duel-gap {\n position: absolute;\n left: 50%;\n bottom: 0;\n transform: translateX(-50%);\n flex-direction: row;\n align-items: baseline;\n gap: 5px;\n min-width: 0;\n padding: 6px 16px;\n border-radius: var(--radius-full);\n background: rgba(255, 102, 0, 0.16);\n border: 1px solid rgba(255, 102, 0, 0.55);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5), 0 0 16px rgba(255, 102, 0, 0.2);\n white-space: nowrap;\n z-index: 3;\n}\n#reveal-view .duel-gap-x {\n font-size: var(--font-size-md);\n color: var(--color-warning-alt);\n opacity: 0.9;\n}\n#reveal-view .duel-gap-n {\n font-size: var(--font-size-lg);\n color: var(--color-warning-alt);\n text-shadow: none;\n}\n#reveal-view .duel-gap-unit {\n margin-top: 0;\n font-size: 10px;\n color: var(--color-warning-alt);\n}\n#reveal-view .duel-gap--exact {\n background: rgba(57, 255, 20, 0.16);\n border-color: rgba(57, 255, 20, 0.55);\n box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5), 0 0 16px rgba(57, 255, 20, 0.22);\n}\n#reveal-view .duel-gap--exact .duel-gap-x,\n#reveal-view .duel-gap--exact .duel-gap-n,\n#reveal-view .duel-gap--exact .duel-gap-unit {\n color: var(--color-success-neon);\n}\n#reveal-view .duel-gap--wrong {\n background: rgba(255, 0, 64, 0.14);\n border-color: rgba(255, 0, 64, 0.5);\n box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5), 0 0 16px rgba(255, 0, 64, 0.2);\n}\n#reveal-view .duel-gap--wrong .duel-gap-x,\n#reveal-view .duel-gap--wrong .duel-gap-n,\n#reveal-view .duel-gap--wrong .duel-gap-unit {\n color: var(--color-error-neon);\n}\n\n/* --- Score / points bar: green gain per DESIGN.md, glass surface --- */\n#reveal-view .score-row {\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);\n}\n#reveal-view .score-row-pts {\n color: var(--color-success-neon);\n text-shadow: 0 0 16px rgba(57, 255, 20, 0.5);\n font-size: 32px;\n}\n\n/* --- Title & Artist vote cards float as glass chips --- */\n#reveal-view .ta-vote-card,\n#reveal-view .ta-outcome-card {\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.1);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n}\n\n/* --- Footer: pink primary CTA, ghost-glass invite --- */\n#reveal-view .next-round-btn {\n background: linear-gradient(135deg, #ff2d6a 0%, #ff4f86 100%);\n border-radius: var(--radius-full);\n box-shadow: 0 8px 24px rgba(255, 45, 106, 0.45), 0 0 18px rgba(255, 45, 106, 0.3);\n}\n#reveal-view .next-round-btn:hover {\n background: linear-gradient(135deg, #ff4f86 0%, #ff2d6a 100%);\n}\n#reveal-view .next-round-btn.is-final {\n background: linear-gradient(135deg, #39ff14 0%, #00f5ff 100%);\n color: var(--color-bg-primary);\n}\n#reveal-view .invite-btn {\n background: rgba(255, 255, 255, 0.06);\n border: 1px solid rgba(255, 255, 255, 0.18);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n border-radius: var(--radius-full);\n}\n/* Equalise the two footer buttons \u2014 same box metrics + equal width, so\n \"Spieler einladen\" and \"N\u00E4chste Runde\" match (only their colour differs). */\n#reveal-view .reveal-admin-buttons { align-items: stretch; }\n#reveal-view .reveal-admin-buttons .invite-btn,\n#reveal-view .reveal-admin-buttons .next-round-btn {\n flex: 1 1 0;\n min-width: 0;\n max-width: 260px;\n min-height: 56px;\n padding: 12px 20px;\n font-size: var(--font-size-md);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n text-align: center;\n}\n\n/* ==========================================================================\n Reveal standings \u2014 \"Round-Delta Ledger\" (design-shotgun A)\n --------------------------------------------------------------------------\n Replaces the plain leaderboard list inside the reveal's Standings card with\n rows that fuse the overall standing (rank + movement + big total) with this\n round's outcome (guessed year, streak/steal/bet chips, +round delta). Own\n `rstand-` prefix + `#reveal-view` scope so the shared `.leaderboard-entry`\n styling (used by the in-game leaderboard + dashboard) is untouched.\n Rendered by renderRevealStandings() in player-reveal.js.\n ========================================================================== */\n#reveal-view #reveal-leaderboard-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n /* The reveal standings show every player (taper-dim lower ranks), so undo\n the shared .leaderboard-list scroll box (max-height:200px; overflow:auto)\n the in-game lazy leaderboard uses \u2014 otherwise rows 4+ get clipped. */\n max-height: none;\n overflow: visible;\n}\n#reveal-view .rstand-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 12px;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.06);\n}\n#reveal-view .rstand-row--you {\n border: 1px solid var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.06);\n box-shadow: 0 0 16px rgba(255, 45, 106, 0.22);\n}\n/* Taper-dim lower ranks (matches the Arcade taper grammar). */\n#reveal-view .rstand-row--taper1 { opacity: 0.85; }\n#reveal-view .rstand-row--taper2 { opacity: 0.68; }\n\n#reveal-view .rstand-rankcell {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 26px;\n flex-shrink: 0;\n}\n#reveal-view .rstand-rank {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 20px;\n line-height: 1;\n color: var(--color-text-white);\n}\n#reveal-view .rstand-row--taper1 .rstand-rank,\n#reveal-view .rstand-row--taper2 .rstand-rank { font-size: 18px; }\n#reveal-view .rstand-move {\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n margin-top: 3px;\n}\n#reveal-view .rstand-move--up { color: var(--color-success-neon); }\n#reveal-view .rstand-move--down { color: var(--color-error-neon); }\n#reveal-view .rstand-move--flat { color: var(--color-text-neon-muted); }\n\n#reveal-view .rstand-avatar {\n width: 34px;\n height: 34px;\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n color: var(--color-text-white);\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);\n border: 1px solid rgba(255, 255, 255, 0.15);\n}\n\n#reveal-view .rstand-ident { flex: 1; min-width: 0; }\n#reveal-view .rstand-name {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 15px;\n line-height: 1.1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--color-text-white);\n}\n#reveal-view .rstand-you {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 9px;\n letter-spacing: 0.06em;\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.15);\n border: 1px solid rgba(255, 45, 106, 0.4);\n border-radius: 6px;\n padding: 2px 5px;\n line-height: 1;\n flex-shrink: 0;\n}\n#reveal-view .rstand-guess {\n font-size: 11px;\n font-weight: 500;\n color: var(--color-text-neon-muted);\n line-height: 1.2;\n margin-top: 3px;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n#reveal-view .rstand-guess .rstand-exact { color: var(--color-success-neon); font-weight: 600; }\n#reveal-view .rstand-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 5px;\n margin-top: 5px;\n}\n#reveal-view .rstand-chip {\n font-size: 10px;\n font-weight: 600;\n color: var(--color-text-neon-muted);\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 999px;\n padding: 2px 7px;\n line-height: 1.4;\n white-space: nowrap;\n}\n#reveal-view .rstand-chip--fire { color: var(--color-warning-alt); border-color: rgba(255, 102, 0, 0.3); background: rgba(255, 102, 0, 0.08); }\n#reveal-view .rstand-chip--steal { color: var(--color-success-neon); border-color: rgba(57, 255, 20, 0.28); background: rgba(57, 255, 20, 0.07); }\n\n#reveal-view .rstand-score {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n flex-shrink: 0;\n margin-left: 4px;\n}\n#reveal-view .rstand-total {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n line-height: 1;\n color: var(--color-text-white);\n letter-spacing: -0.01em;\n}\n#reveal-view .rstand-row--taper1 .rstand-total { font-size: 20px; }\n#reveal-view .rstand-row--taper2 .rstand-total { font-size: 19px; }\n#reveal-view .rstand-delta {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 12px;\n line-height: 1;\n margin-top: 4px;\n color: var(--color-success-neon);\n}\n#reveal-view .rstand-delta--zero { color: var(--color-text-neon-muted); }\n\n/* ==========================================================================\n Reveal artist-result + fun-fact (design-shotgun B: inline artist chip +\n badges-first fun fact)\n --------------------------------------------------------------------------\n The artist-challenge result folds into the song-strip card as a slim inline\n row (no standalone card). The fun-fact card leads with the chart/cert/award\n badges as prominent tiles, then a trimmed (2-line) prose hook. Scoped under\n #reveal-view. renderArtistReveal still drives #artist-reveal-* element ids.\n ========================================================================== */\n/* Song strip becomes a column: main identity row + optional artist row. */\n#reveal-view .song-strip {\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: 0;\n overflow: hidden;\n}\n#reveal-view .song-strip-main {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm);\n}\n/* Inline artist-challenge result row (relocated #artist-reveal-section). */\n#reveal-view .artist-guess-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 9px var(--space-md) 9px var(--space-sm);\n border-top: 1px solid rgba(255, 255, 255, 0.08);\n}\n#reveal-view .artist-guess-row.hidden { display: none; }\n#reveal-view .artist-guess-ic { font-size: 14px; flex-shrink: 0; }\n#reveal-view .artist-guess-name {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 14px;\n color: var(--color-text-white);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n#reveal-view .artist-reveal-winner {\n margin-left: auto;\n flex-shrink: 0;\n font-family: var(--font-body);\n font-size: 11px;\n font-weight: 700;\n padding: 3px 10px;\n border-radius: var(--radius-full);\n white-space: nowrap;\n}\n#reveal-view .artist-reveal-winner.hidden { display: none; }\n#reveal-view .artist-reveal-winner.is-you,\n#reveal-view .artist-reveal-winner.is-other {\n color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.12);\n border: 1px solid rgba(57, 255, 20, 0.4);\n}\n#reveal-view .artist-reveal-winner.is-you {\n box-shadow: 0 0 12px rgba(57, 255, 20, 0.2);\n}\n#reveal-view .artist-reveal-winner.artist-reveal-no-winner {\n color: var(--color-text-neon-muted);\n background: rgba(255, 255, 255, 0.06);\n border: 1px solid rgba(255, 255, 255, 0.12);\n}\n\n/* Fun fact: badges as prominent tiles first, prose trimmed below. */\n#reveal-view #fun-fact-container .section-content-padded {\n display: flex;\n flex-direction: column;\n gap: 11px;\n}\n#reveal-view .song-rich-info .song-badges-row {\n display: flex;\n gap: 8px;\n}\n#reveal-view .song-rich-info .song-badge {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 11px 6px;\n border-radius: 12px;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.1);\n font-family: var(--font-body);\n font-size: 11px;\n font-weight: 700;\n line-height: 1.2;\n text-align: center;\n white-space: normal;\n}\n#reveal-view .song-rich-info .song-badge .song-badge-icon { font-size: 20px; }\n#reveal-view .song-rich-info .song-badges-more {\n flex: 0 0 auto;\n align-self: center;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n}\n#reveal-view #fun-fact .fun-fact-text,\n#reveal-view .fun-fact-text {\n font-size: 12px;\n line-height: 1.4;\n color: var(--color-text-neon-muted);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* ==========================================================================\n Smart Playlist Mixer \u2014 \"Mix\" tab (#1538, design option 1 \"chip-cloud\")\n Reuses the Beatify dark look (bg #0a0a12, pink #ff2d6a, cyan #00f5ff,\n indigo #6366f1). Tokens: --color-accent-primary/secondary/brand,\n --color-surface-dark, --color-border-neon, --color-text-neon-muted.\n ========================================================================== */\n\n/* Playlist / Mix tab strip (sits above the playlist panels). */\n.playlist-tabs {\n display: flex;\n gap: var(--space-lg);\n border-bottom: 1px solid var(--color-border-neon);\n margin-bottom: var(--space-md);\n}\n\n.playlist-tab {\n appearance: none;\n background: none;\n border: none;\n padding: 10px 2px;\n margin-bottom: -1px;\n font: inherit;\n font-weight: 700;\n font-size: 0.95rem;\n color: var(--color-text-neon-muted);\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: color var(--transition-fast), border-color var(--transition-fast);\n}\n\n.playlist-tab:hover {\n color: var(--color-text-white);\n}\n\n.playlist-tab.active {\n color: var(--color-accent-secondary);\n border-bottom-color: var(--color-accent-secondary);\n}\n\n.playlist-panel.hidden {\n display: none;\n}\n\n/* Mix card */\n.mix-card {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n padding: var(--space-lg);\n}\n\n.mix-card-head {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n}\n\n.mix-card-icon {\n font-size: 1.25rem;\n}\n\n.mix-card-title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 800;\n color: var(--color-text-white);\n}\n\n.mix-card-sub {\n margin: 6px 0 var(--space-lg);\n color: var(--color-text-neon-muted);\n font-size: 0.9rem;\n}\n\n/* Chip-cloud rows (Decade / Style / Region / Special) */\n.mix-chip-cloud {\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n}\n\n.mix-chip-row {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mix-chip-rowlabel {\n font-size: 0.7rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n\n.mix-chip-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.mix-chip {\n appearance: none;\n padding: 6px 14px;\n border-radius: var(--radius-full);\n border: 1px solid var(--color-border-neon);\n background: rgba(255, 255, 255, 0.04);\n color: var(--color-text-neon-muted);\n font: inherit;\n font-size: 0.85rem;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.mix-chip:hover {\n border-color: rgba(255, 255, 255, 0.3);\n color: var(--color-text-white);\n}\n\n/* Active accents per category, matching the option-1 mockup. */\n.mix-chip-group[data-accent=\"cyan\"] .mix-chip.active {\n background: rgba(0, 245, 255, 0.15);\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n}\n\n.mix-chip-group[data-accent=\"pink\"] .mix-chip.active {\n background: rgba(255, 45, 106, 0.15);\n border-color: var(--color-accent-primary);\n color: var(--color-accent-primary);\n}\n\n.mix-chip-group[data-accent=\"indigo\"] .mix-chip.active {\n background: rgba(99, 102, 241, 0.18);\n border-color: var(--color-accent-brand);\n color: #a5b4fc;\n}\n\n.mix-empty {\n color: var(--color-text-neon-muted);\n font-size: 0.9rem;\n margin: 0;\n}\n\n.mix-divider {\n height: 1px;\n background: var(--color-border-neon);\n margin: var(--space-lg) 0;\n}\n\n/* Target-count segmented control (30 / 50 / 100) */\n.mix-count-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-md);\n flex-wrap: wrap;\n}\n\n.mix-count-label {\n font-size: 0.7rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n\n.mix-segmented {\n display: inline-flex;\n padding: 4px;\n gap: 4px;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-border-neon);\n border-radius: 10px;\n}\n\n.mix-seg {\n appearance: none;\n min-width: 56px;\n padding: 8px 14px;\n border: none;\n border-radius: 7px;\n background: transparent;\n color: var(--color-text-neon-muted);\n font: inherit;\n font-weight: 700;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.mix-seg:hover {\n color: var(--color-text-white);\n}\n\n.mix-seg.active {\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n box-shadow: 0 0 14px rgba(99, 102, 241, 0.5);\n}\n\n/* Live preview line */\n.mix-preview {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: var(--space-md) 0 var(--space-lg);\n padding: 12px 16px;\n border-radius: var(--radius-md);\n background: rgba(0, 245, 255, 0.06);\n border: 1px solid rgba(0, 245, 255, 0.15);\n color: var(--color-text-white);\n font-size: 0.9rem;\n}\n\n.mix-preview-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #1ed760;\n box-shadow: 0 0 8px rgba(30, 215, 96, 0.8);\n flex-shrink: 0;\n}\n\n/* Actions row */\n.mix-actions {\n display: flex;\n align-items: center;\n gap: var(--space-lg);\n flex-wrap: wrap;\n}\n\n.mix-actions .btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n}\n\n.mix-save-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.9rem;\n color: var(--color-text-neon-muted);\n cursor: pointer;\n}\n\n#mix-error {\n margin-top: var(--space-md);\n}\n/* #2294: the server's own reason under the translated headline. Inline-block\n with display:block because #mix-error is a

and cannot hold a

. */\n.mix-error-detail {\n display: block;\n margin-top: var(--space-xs);\n font-size: var(--font-size-sm);\n line-height: 1.35;\n color: var(--color-text-light);\n word-break: break-word;\n}\n\n/* Tracklist preview (#1586) */\n.mix-tracklist-row {\n margin: var(--space-sm) 0;\n}\n\n.mix-tracklist-row .btn-sm {\n font-size: 0.85rem;\n padding: 6px 12px;\n}\n\n.mix-tracklist {\n margin: var(--space-sm) 0 var(--space-md);\n max-height: 280px;\n overflow-y: auto;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 245, 255, 0.15);\n background: rgba(0, 245, 255, 0.04);\n}\n\n.mix-tracklist.hidden {\n display: none;\n}\n\n.mix-tracklist-head {\n margin: 0;\n padding: 10px 14px;\n font-size: 0.8rem;\n font-weight: 600;\n letter-spacing: 0.02em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n border-bottom: 1px solid rgba(0, 245, 255, 0.12);\n position: sticky;\n top: 0;\n background: rgba(10, 12, 24, 0.92);\n}\n\n.mix-tracklist-empty {\n margin: 0;\n padding: 14px;\n font-size: 0.9rem;\n color: var(--color-text-neon-muted);\n}\n\n.mix-track-list {\n list-style: none;\n margin: 0;\n padding: 4px 0;\n counter-reset: mix-track;\n}\n\n.mix-track {\n display: flex;\n align-items: baseline;\n gap: 8px;\n padding: 6px 14px;\n font-size: 0.88rem;\n color: var(--color-text-white);\n}\n\n.mix-track::before {\n counter-increment: mix-track;\n content: counter(mix-track);\n flex-shrink: 0;\n min-width: 1.8em;\n text-align: right;\n font-variant-numeric: tabular-nums;\n color: var(--color-text-neon-muted);\n opacity: 0.7;\n}\n\n.mix-track-title {\n font-weight: 500;\n}\n\n.mix-track-artist {\n color: var(--color-text-neon-muted);\n}\n\n.mix-track-artist::before {\n content: \"\u2014 \";\n}\n\n.mix-track-year {\n margin-left: auto;\n flex-shrink: 0;\n color: var(--color-text-neon-muted);\n font-variant-numeric: tabular-nums;\n opacity: 0.7;\n}\n\n/* ==========================================================================\n #1663 item 1 \u2014 Non-blocking notices (Toast + Inline Banner)\n Replaces the old blocking alert(). Neon top-toast for transient notices,\n inline panel-banner for setup/validation errors. Dark-neon tokens only.\n ========================================================================== */\n\n/* --- Neon Top-Toast (Variant A): top-center, auto-dismiss, glowing bar --- */\n.beatify-toast-container {\n position: fixed;\n top: var(--space-md);\n left: 50%;\n transform: translateX(-50%);\n z-index: var(--z-toast);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n width: min(92vw, 440px);\n pointer-events: none; /* let taps fall through the gaps; toasts re-enable */\n}\n\n.beatify-toast {\n pointer-events: auto;\n width: 100%;\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n position: relative;\n overflow: hidden;\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-lg);\n background: rgba(20, 20, 34, 0.96);\n border: 1px solid var(--color-error-neon);\n box-shadow: 0 0 20px rgba(255, 0, 64, 0.45), 0 8px 32px rgba(0, 0, 0, 0.45);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n /* Enter/leave transition (gated under reduced-motion below). */\n opacity: 0;\n transform: translateY(-12px);\n transition: opacity var(--transition-normal), transform var(--transition-normal);\n}\n.beatify-toast--in { opacity: 1; transform: translateY(0); }\n.beatify-toast--leaving { opacity: 0; transform: translateY(-12px); }\n\n.beatify-toast--info {\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 20px rgba(0, 245, 255, 0.4), 0 8px 32px rgba(0, 0, 0, 0.45);\n}\n.beatify-toast--success {\n border-color: var(--color-success-neon);\n box-shadow: 0 0 20px rgba(57, 255, 20, 0.4), 0 8px 32px rgba(0, 0, 0, 0.45);\n}\n\n.beatify-toast-body {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n flex: 1 1 auto;\n min-width: 0;\n}\n.beatify-toast-icon { font-size: var(--font-size-lg); line-height: 1.3; flex-shrink: 0; }\n.beatify-toast-text { line-height: 1.35; word-break: break-word; }\n\n.beatify-toast-close {\n flex-shrink: 0;\n background: none;\n border: none;\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-xl);\n line-height: 1;\n cursor: pointer;\n padding: 0 var(--space-xs);\n transition: color var(--transition-fast);\n}\n.beatify-toast-close:hover { color: var(--color-text-white); }\n\n/* Glowing progress bar that drains over the auto-dismiss window. */\n.beatify-toast-progress {\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n width: 100%;\n transform-origin: left center;\n background: var(--color-error-neon);\n box-shadow: 0 0 8px var(--color-error-neon);\n animation: beatify-toast-drain linear forwards;\n}\n.beatify-toast--info .beatify-toast-progress {\n background: var(--color-accent-secondary);\n box-shadow: 0 0 8px var(--color-accent-secondary);\n}\n.beatify-toast--success .beatify-toast-progress {\n background: var(--color-success-neon);\n box-shadow: 0 0 8px var(--color-success-neon);\n}\n@keyframes beatify-toast-drain {\n from { transform: scaleX(1); }\n to { transform: scaleX(0); }\n}\n\n/* --- Inline Panel-Banner (Variant C): docked above the primary action --- */\n.beatify-banner {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-lg);\n background: rgba(255, 0, 64, 0.08);\n border: 1px solid var(--color-error-neon);\n box-shadow: inset 0 0 16px rgba(255, 0, 64, 0.12);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n text-align: left;\n}\n.beatify-banner--warning {\n background: rgba(245, 158, 11, 0.1);\n border-color: var(--color-warning);\n box-shadow: inset 0 0 16px rgba(245, 158, 11, 0.12);\n}\n.beatify-banner--info {\n background: rgba(0, 245, 255, 0.08);\n border-color: var(--color-accent-secondary);\n box-shadow: inset 0 0 16px rgba(0, 245, 255, 0.12);\n}\n.beatify-banner-icon { font-size: var(--font-size-lg); line-height: 1.2; flex-shrink: 0; }\n.beatify-banner-content { flex: 1 1 auto; min-width: 0; }\n.beatify-banner-title {\n font-family: var(--font-display);\n font-weight: var(--font-weight-bold);\n margin-bottom: 2px;\n color: var(--color-error-neon);\n}\n.beatify-banner--warning .beatify-banner-title { color: var(--color-warning); }\n.beatify-banner--info .beatify-banner-title { color: var(--color-accent-secondary); }\n.beatify-banner-text { line-height: 1.4; color: var(--color-text-neon-muted); word-break: break-word; }\n/* #2294: the server's own reason, under the translated headline. Dimmer and\n smaller so it reads as a detail rather than a competing message. */\n.beatify-banner-detail {\n margin-top: var(--space-xs);\n font-size: var(--font-size-sm);\n line-height: 1.35;\n color: var(--color-text-light);\n word-break: break-word;\n}\n.beatify-banner-action {\n margin-top: var(--space-xs);\n background: none;\n border: 1px solid currentColor;\n border-radius: var(--radius-sm);\n color: var(--color-error-neon);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n line-height: 1.2;\n padding: 6px var(--space-sm);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.beatify-banner-action:hover { background: var(--color-error-neon); color: var(--color-bg-primary); }\n.beatify-banner--warning .beatify-banner-action { color: var(--color-warning); }\n.beatify-banner--warning .beatify-banner-action:hover { background: var(--color-warning); }\n.beatify-banner--info .beatify-banner-action { color: var(--color-accent-secondary); }\n.beatify-banner--info .beatify-banner-action:hover { background: var(--color-accent-secondary); }\n.beatify-banner-close {\n flex-shrink: 0;\n background: none;\n border: none;\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-xl);\n line-height: 1;\n cursor: pointer;\n padding: 0 var(--space-xs);\n transition: color var(--transition-fast);\n}\n.beatify-banner-close:hover { color: var(--color-text-white); }\n\n@media (prefers-reduced-motion: reduce) {\n .beatify-toast { transition: none; opacity: 1; transform: none; }\n .beatify-toast-progress { animation: none; }\n}\n\n/* ==========================================================================\n #1663 item 2 \u2014 Steal modal Mini-Leaderboard-Row (Variant B)\n Each steal target becomes a rank + name + score row; the overall leader\n (rank 1) gets a crown + glow. Extends the existing .steal-target-btn.\n ========================================================================== */\n.steal-target-row {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n text-align: left;\n}\n.steal-target-rank {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-full);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n font-family: var(--font-display);\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n}\n.steal-target-name {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-weight-semibold);\n}\n.steal-target-score {\n flex-shrink: 0;\n font-family: var(--font-display);\n font-weight: var(--font-weight-bold);\n font-variant-numeric: tabular-nums;\n color: var(--color-accent-secondary);\n text-shadow: 0 0 8px rgba(0, 245, 255, 0.5);\n}\n.steal-target-crown { flex-shrink: 0; font-size: var(--font-size-md); line-height: 1; }\n.steal-target-row--leader {\n border-color: var(--color-warning);\n box-shadow: 0 0 14px rgba(245, 158, 11, 0.35), inset 0 0 10px rgba(245, 158, 11, 0.12);\n}\n.steal-target-row--leader .steal-target-rank {\n border-color: var(--color-warning);\n color: var(--color-warning);\n box-shadow: 0 0 8px rgba(245, 158, 11, 0.4);\n}\n.steal-target-row--leader .steal-target-score {\n color: var(--color-warning);\n text-shadow: 0 0 8px rgba(245, 158, 11, 0.5);\n}\n\n/* ==========================================================================\n #1663 item 3 \u2014 A11y: Icon+Text accuracy chips on the reveal dot-axis legend\n Glyph + word per state (\u25CE exact / \u2248 near / \u2715 off); colour is reinforcement.\n ========================================================================== */\n.dotaxis-legend-acc {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n margin-left: 4px;\n padding: 1px 6px;\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n border: 1px solid currentColor;\n white-space: nowrap;\n}\n.dotaxis-legend-acc-glyph { font-size: 0.95em; line-height: 1; }\n.dotaxis-legend-acc--exact { color: var(--color-accent-secondary); }\n.dotaxis-legend-acc--near { color: var(--color-warning); }\n.dotaxis-legend-acc--off { color: var(--color-text-neon-muted); }\n\n/* Lobby away chip: glyph + word (A11y \u2014 not colour/border alone). */\n.player-tile-away { display: inline-flex; align-items: center; gap: 3px; }\n.player-tile-away-glyph { font-size: 0.9em; line-height: 1; }\n\n/* ==========================================================================\n #1663 item 4 \u2014 Depleting Ring-Countdown (Variant C)\n SVG ring inside the arcade neon timer that drains cyan\u2192red as time runs out,\n mirroring the reveal auto-advance ring. Additive to the existing frame; the\n number's warning/critical classes (arc-urgency) are untouched.\n ========================================================================== */\n.timer-neon { position: relative; }\n.timer-neon-ring {\n position: absolute;\n inset: 3px; /* sit just inside the neon frame */\n width: calc(100% - 6px);\n height: calc(100% - 6px);\n transform: rotate(-90deg); /* start the drain from 12 o'clock */\n pointer-events: none;\n}\n.timer-neon-ring-bg {\n fill: none;\n stroke: rgba(255, 255, 255, 0.12);\n stroke-width: 4;\n}\n.timer-neon-ring-fg {\n fill: none;\n stroke: var(--color-accent-secondary);\n stroke-width: 4;\n stroke-linecap: round;\n filter: drop-shadow(0 0 6px rgba(0, 245, 255, 0.6));\n transition: stroke-dashoffset 1s linear, stroke var(--transition-normal);\n}\n.timer-neon--warn .timer-neon-ring-fg,\n.timer-neon-ring--warn .timer-neon-ring-fg {\n stroke: var(--color-warning);\n filter: drop-shadow(0 0 6px rgba(245, 158, 11, 0.7));\n}\n.timer-neon-ring--critical .timer-neon-ring-fg {\n stroke: var(--color-error-neon);\n filter: drop-shadow(0 0 7px rgba(255, 0, 64, 0.8));\n}\n@media (prefers-reduced-motion: reduce) {\n /* Opt-out: keep the numeric+colour cue, drop the animated drain. */\n .timer-neon-ring-fg { transition: none; }\n/* =====================================================================\n Sudden Death mode (Issue #827)\n ===================================================================== */\n\n/* --- Admin reveal: elimination + final arc chips --- */\n.arc-chip--elim {\n color: var(--color-error-neon);\n background: rgba(255, 0, 64, 0.12);\n border: 1px solid rgba(255, 0, 64, 0.5);\n text-transform: uppercase;\n}\n\n/* --- Admin control-bar live toggle (S7-A) --- */\n.sd-live-toggle {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 5px 10px;\n border-radius: var(--radius-md);\n background: var(--color-bg-surface);\n border: 1px solid rgba(255, 255, 255, 0.12);\n font-family: var(--font-body);\n font-size: 12px;\n font-weight: 600;\n color: var(--color-text-white);\n cursor: pointer;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.sd-live-toggle:disabled { opacity: 0.4; cursor: not-allowed; }\n.sd-live-toggle.is-on {\n border-color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.08);\n box-shadow: var(--glow-primary);\n}\n.sd-live-toggle__switch {\n position: relative;\n width: 30px; height: 17px;\n border-radius: var(--radius-full);\n background: rgba(255, 255, 255, 0.15);\n flex: none;\n}\n.sd-live-toggle.is-on .sd-live-toggle__switch {\n background: var(--color-accent-primary);\n}\n.sd-live-toggle__switch::after {\n content: \"\"; position: absolute;\n width: 13px; height: 13px; border-radius: 50%;\n background: #fff; top: 2px; left: 2px;\n transition: left var(--transition-fast);\n}\n.sd-live-toggle.is-on .sd-live-toggle__switch::after { left: 15px; }\n\n/* --- Player eliminated view (S2-A Stark Blackout) --- */\n.eliminated-view {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--space-sm);\n min-height: 60vh;\n padding: var(--space-xl) var(--space-md);\n}\n.eliminated-orb {\n width: 120px; height: 120px;\n border-radius: var(--radius-full);\n overflow: hidden;\n filter: grayscale(1) brightness(0.5);\n display: flex; align-items: center; justify-content: center;\n background: linear-gradient(135deg, #2a2540, #16131f);\n margin-bottom: var(--space-md);\n position: relative;\n}\n.eliminated-orb img { width: 100%; height: 100%; object-fit: cover; }\n.eliminated-skull { font-size: 46px; position: absolute; }\n.eliminated-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n color: var(--color-text-white);\n letter-spacing: -0.02em;\n}\n.eliminated-sub { color: var(--color-text-neon-muted); font-size: var(--font-size-base); }\n.eliminated-hint { color: var(--color-text-dim); font-size: var(--font-size-sm); margin-top: var(--space-md); }\n\n/* --- Player leaderboard cut line (S3-A) --- */\n.cut-line {\n position: relative;\n height: 0;\n border-top: 2px solid var(--color-accent-primary);\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.7);\n margin: var(--space-md) 0;\n}\n.cut-line__label {\n position: absolute;\n top: -9px; left: 50%;\n transform: translateX(-50%);\n background: var(--color-bg-primary);\n padding: 0 10px;\n font-family: var(--font-body);\n font-size: 9px;\n font-weight: 700;\n letter-spacing: 0.15em;\n color: var(--color-accent-primary);\n}\n.player-indicator.is-eliminated,\n.leaderboard-entry.is-eliminated { opacity: 0.45; }\n.player-out-badge {\n font-size: 10px;\n font-weight: 700;\n color: var(--color-text-dim);\n letter-spacing: 0.04em;\n}\n\n/* --- Spectator TV: full-bleed \"OUT\" takeover (S4-C) --- */\n.sd-out-overlay {\n position: fixed;\n inset: 0;\n z-index: 900;\n display: none;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: rgba(6, 6, 12, 0.96);\n}\n.sd-out-overlay.show { display: flex; animation: sd-out-in var(--transition-slow) ease-out; }\n.sd-out__word {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: clamp(120px, 26vw, 360px);\n line-height: 0.85;\n color: var(--color-error-neon);\n text-shadow: 0 0 40px rgba(255, 0, 64, 0.7);\n}\n.sd-out__name {\n display: flex; align-items: center; gap: 14px;\n margin-top: var(--space-md);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n color: var(--color-text-white);\n}\n.sd-out__skull { font-size: 40px; }\n@keyframes sd-out-in {\n from { opacity: 0; transform: scale(0.85); }\n to { opacity: 1; transform: scale(1); }\n}\n\n/* --- Spectator TV: FINAL banner (S5-C arena) --- */\n.sd-final-banner {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 18px;\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 900;\n letter-spacing: 0.06em;\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.12);\n border: 1px solid rgba(255, 45, 106, 0.5);\n box-shadow: 0 0 16px rgba(255, 45, 106, 0.3);\n}\n\n/* --- END: Last One Standing superlative + trophy hero (S6-C) --- */\n.superlative-card--last_one_standing {\n box-shadow: 0 0 18px rgba(255, 45, 106, 0.3);\n border-color: rgba(255, 45, 106, 0.4);\n}\n.sd-last-standing {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n text-align: center;\n margin-bottom: var(--space-lg);\n}\n.sd-last-standing__trophy { font-size: 40px; }\n.sd-last-standing__headline {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-hero);\n letter-spacing: -0.02em;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n text-shadow: 0 0 40px rgba(255, 45, 106, 0.5);\n}\n.sd-last-standing__winner {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: var(--font-size-xl);\n color: var(--color-text-white);\n}\n/* #2105: the line that explains a points win \u2014 deliberately quiet, it is\n context for the name above it, not a second headline. */\n.sd-last-standing__sub {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .sd-out-overlay.show { animation: none; }\n}\n"], - "mappings": "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", + "sourcesContent": ["/* Beatify - Mobile-first styles */\n\n/* ==========================================\n Design System Tokens (Story 9.1)\n ========================================== */\n\n:root {\n /* Color Tokens - Background */\n --color-bg-primary: #0a0a12;\n --color-bg-surface: rgba(255, 255, 255, 0.05);\n --color-bg-light: #f5f5f5;\n --color-bg-white: #ffffff;\n --color-bg-card: #f9fafb;\n --color-bg-card-alt: #f3f4f6;\n\n /* Color Tokens - Accent */\n --color-accent-primary: #ff2d6a;\n --color-accent-secondary: #00f5ff;\n --color-accent-brand: #6366f1;\n --color-accent-brand-hover: #4f46e5;\n --color-accent-blue: #3b82f6;\n --color-accent-blue-hover: #2563eb;\n\n /* Color Tokens - Semantic */\n --color-success: #10b981;\n --color-success-hover: #059669;\n --color-success-light: #d1fae5;\n --color-success-alt: #22c55e;\n --color-success-neon: #39ff14;\n --color-warning: #f59e0b;\n --color-warning-dark: #d97706;\n --color-warning-light: #fef3c7;\n --color-warning-alt: #ff6600;\n --color-error: #ef4444;\n --color-error-dark: #dc2626;\n --color-error-light: #fee2e2;\n --color-error-neon: #ff0040;\n\n /* Purple colors for steal power-up (Story 15.3) */\n --color-purple-primary: #8b5cf6;\n --color-purple-secondary: #7c3aed;\n --color-neon-purple: #9d4edd; /* Analytics accent color */\n\n /* Color Tokens - Badge Backgrounds (Story 14.1) */\n --color-success-bg: rgba(16, 185, 129, 0.15);\n --color-accent-brand-bg: rgba(99, 102, 241, 0.15);\n --color-error-bg: rgba(239, 68, 68, 0.15);\n\n /* Color Tokens - Text */\n --color-text-primary: #1f2937;\n --color-text-secondary: #374151;\n --color-text-muted: #6b7280;\n --color-text-light: #9ca3af;\n --color-text-white: #ffffff;\n --color-text-dark: #1a1a1a;\n --color-text-heading: #444444;\n --color-text-neon-muted: #b3b3c2;\n\n /* Color Tokens - Border */\n --color-border-light: #e5e7eb;\n --color-border-medium: #d1d5db;\n --color-border-dark: #333333;\n --color-border-neon: rgba(255, 255, 255, 0.1);\n\n /* Dark Theme Surface Colors */\n --color-dark-surface: rgba(255, 255, 255, 0.05);\n --color-dark-surface-hover: rgba(255, 255, 255, 0.08);\n --color-dark-card: rgba(255, 255, 255, 0.03);\n --color-surface-dark: #1a1a2e; /* Card background in dark mode */\n\n /* Spacing Tokens */\n --space-xs: 4px;\n --space-sm: 8px;\n --space-md: 16px;\n --space-lg: 24px;\n --space-xl: 32px;\n --space-2xl: 48px;\n\n /* Typography Tokens */\n --font-display: 'Outfit', system-ui, sans-serif;\n --font-body: 'Inter', system-ui, sans-serif;\n --font-system: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n --font-mono: monospace;\n\n --font-size-xs: 10px;\n --font-size-sm: 12px;\n --font-size-base: 14px;\n --font-size-md: 16px;\n --font-size-lg: 18px;\n --font-size-xl: 20px;\n --font-size-2xl: 24px;\n --font-size-3xl: 28px;\n --font-size-4xl: 32px;\n --font-size-year: 56px;\n --font-size-timer: 64px;\n --font-size-hero: 72px;\n\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n\n /* Effect Tokens - Glow */\n --glow-primary: 0 0 20px var(--color-accent-primary);\n --glow-secondary: 0 0 20px var(--color-accent-secondary);\n --glow-success: 0 0 20px var(--color-success-neon);\n --glow-warning: 0 0 20px var(--color-warning);\n --glow-error: 0 0 20px var(--color-error);\n\n /* Effect Tokens - Shadow */\n --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.1);\n --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);\n --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.1);\n --shadow-xl: 0 8px 32px rgba(0, 0, 0, 0.15);\n\n /* Border Radius Tokens */\n --radius-sm: 4px;\n --radius-md: 8px;\n --radius-lg: 12px;\n --radius-xl: 16px;\n --radius-2xl: 20px;\n --radius-full: 9999px;\n\n /* Transition Tokens */\n --transition-fast: 150ms ease;\n --transition-normal: 300ms ease;\n --transition-slow: 500ms ease;\n\n /* Z-Index Tokens */\n --z-control-bar: 100;\n --z-reaction-bar: 101; /* Story 18.9: Above control bar */\n --z-modal: 1000;\n --z-overlay: 1100;\n --z-toast: 1200; /* #1663 item 1: neon top-toast \u2014 above overlays/modals */\n}\n\n/* ==========================================\n Base Styles\n ========================================== */\n\n/* Base reset */\n* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nbody {\n font-family: var(--font-system);\n background: var(--color-bg-light);\n color: var(--color-text-secondary);\n line-height: 1.5;\n padding: var(--space-sm);\n min-height: 100vh;\n /* #865: lock iOS overscroll-bounce so the admin lobby (and any other\n short view) doesn't drag freely in all directions when the user\n touches the background. */\n overscroll-behavior: none;\n}\n\n/* ==========================================\n Brand Identity (Story 9.8)\n ========================================== */\n\n/* Wordmark styles */\n.wordmark {\n font-family: 'Outfit', var(--font-system);\n font-weight: 900;\n font-size: var(--font-size-hero);\n letter-spacing: -0.02em;\n line-height: 1;\n}\n\n.wordmark-beat {\n color: var(--color-text-white);\n}\n\n/* Light theme wordmark (admin page) */\nbody:not(.theme-dark) .wordmark-beat {\n color: var(--color-text-primary);\n}\n\n.wordmark-gradient {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n color: transparent;\n}\n\n.wordmark-hero {\n text-shadow: 0 0 40px rgba(255, 45, 106, 0.5);\n}\n\n/* Logo pulse animation for loading state */\n.logo-loading {\n animation: logo-pulse 2s ease-in-out infinite;\n}\n\n@keyframes logo-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.7; }\n}\n\n/* Reduced motion support for logo */\n@media (prefers-reduced-motion: reduce) {\n .logo-loading {\n animation: none;\n }\n}\n\n/* ============================================================\n Cold-start vinyl loader (#1287)\n Animated vinyl disc + hype copy bridging the ~10-15s\n Music-Assistant speaker-connect before round 1. Shared by\n player.html (#starting-view) and dashboard.html\n (#dashboard-starting).\n ============================================================ */\n/* Outer: full-height column box that centers its single inner row both axes.\n Mirrors the proven .dashboard-centered pattern (no explicit width \u2192 stretches\n via the parent's align-items:stretch) so the group is always viewport-centered\n on the TV/dashboard and the phone. */\n.vinyl-starting {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 24px;\n box-sizing: border-box;\n}\n\n/* Inner: the disc-beside-copy row. Caps its own width and centers itself; wraps\n to stacked (disc over copy) on narrow phones. */\n.vinyl-row {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n gap: clamp(20px, 5vw, 56px);\n max-width: 100%;\n}\n\n.vinyl-loader {\n flex: 0 0 auto;\n width: clamp(130px, 28vw, 260px);\n height: clamp(130px, 28vw, 260px);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n /* Soft pink/cyan glow halo behind the disc */\n background: radial-gradient(circle at center,\n rgba(255, 45, 106, 0.18) 0%,\n rgba(99, 102, 241, 0.10) 45%,\n transparent 70%);\n}\n\n.vinyl-disc {\n position: relative;\n width: 78%;\n height: 78%;\n border-radius: 50%;\n /* Conic gradient = the spinning record */\n background: conic-gradient(from 0deg,\n var(--color-accent-primary),\n var(--color-accent-brand),\n var(--color-accent-secondary),\n var(--color-accent-brand),\n var(--color-accent-primary));\n box-shadow:\n 0 0 40px rgba(255, 45, 106, 0.35),\n 0 0 80px rgba(0, 245, 255, 0.18),\n inset 0 0 30px rgba(0, 0, 0, 0.45);\n animation: vinyl-spin 3s linear infinite;\n}\n\n.vinyl-ring {\n position: absolute;\n top: 18%;\n left: 18%;\n width: 64%;\n height: 64%;\n border-radius: 50%;\n border: 1.5px dashed rgba(255, 255, 255, 0.25);\n}\n\n.vinyl-hole {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 14%;\n height: 14%;\n border-radius: 50%;\n background: var(--color-bg-primary);\n transform: translate(-50%, -50%);\n box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.4);\n}\n\n.vinyl-copy {\n /* min-width:0 + width:min(100%,460px) keeps the copy inside its flex line\n on every surface: beside the disc on landscape (TV/dashboard) and on its\n own line when wrapped on a narrow phone \u2014 the text re-wraps, it never\n overflows the viewport. */\n flex: 1 1 280px;\n min-width: 0;\n width: min(100%, 460px);\n max-width: 460px;\n text-align: left;\n}\n\n.vinyl-copy .vinyl-headline,\n.vinyl-copy .vinyl-sub,\n.vinyl-copy .wordmark-hero {\n overflow-wrap: break-word;\n}\n\n.vinyl-copy .wordmark-hero {\n font-size: clamp(2rem, 5vw, 3.25rem);\n margin: 0 0 0.5em;\n}\n\n.vinyl-headline {\n font-size: clamp(1.5rem, 4vw, 2.5rem);\n font-weight: 800;\n color: var(--color-text-white);\n margin: 0 0 0.4em;\n}\n\n.vinyl-sub {\n font-size: clamp(0.95rem, 2.2vw, 1.2rem);\n line-height: 1.5;\n color: var(--color-text-muted);\n margin: 0 0 1.2em;\n}\n\n.vinyl-dots {\n display: flex;\n gap: 12px;\n}\n\n.vinyl-dots span {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: var(--color-accent-primary);\n opacity: 0.3;\n animation: vinyl-dot-pulse 1.4s ease-in-out infinite;\n}\n\n.vinyl-dots span:nth-child(2) {\n animation-delay: 0.2s;\n}\n\n.vinyl-dots span:nth-child(3) {\n animation-delay: 0.4s;\n}\n\n@keyframes vinyl-spin {\n to { transform: rotate(360deg); }\n}\n\n@keyframes vinyl-dot-pulse {\n 0%, 100% { opacity: 0.3; transform: scale(1); }\n 40% { opacity: 1; transform: scale(1.25); }\n}\n\n/* Narrow / portrait (phone player): the row wraps to stacked, so center the\n copy under the disc and center the pulse dots \u2014 left-alignment only reads well\n in the landscape side-by-side layout. */\n@media (max-width: 640px) {\n .vinyl-copy { text-align: center; }\n .vinyl-dots { justify-content: center; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .vinyl-disc { animation: none; }\n .vinyl-dots span { animation: none; opacity: 0.7; }\n}\n\n/* Header */\nheader {\n margin-bottom: var(--space-lg);\n}\n\nheader h1 {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-dark);\n}\n\n/* Admin Header with Analytics Icon (Story 19.13) */\n.admin-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-md, 16px);\n}\n\n.admin-header h1 {\n margin: 0;\n}\n\n/* Player Header (centered, no analytics icon) */\n.player-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--space-md) var(--space-md) 0;\n}\n\n.player-header h1 {\n margin: 0;\n}\n\n/* Admin Main Content - Centered Layout (Story 19.13) */\n/* Scoped to admin-content to avoid affecting dashboard */\nbody.theme-dark main.admin-content {\n max-width: 800px;\n margin: 0 auto;\n padding: var(--space-md, 16px);\n}\n\n/* Analytics Icon Link (Story 19.13) */\n.analytics-icon-link {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n text-decoration: none;\n font-size: 1.5rem;\n transition: background-color 0.2s ease, transform 0.2s ease;\n}\n\nbody.theme-dark .analytics-icon-link {\n background: rgba(0, 245, 255, 0.1);\n}\n\nbody.theme-dark .analytics-icon-link:hover,\nbody.theme-dark .analytics-icon-link:focus {\n background: rgba(0, 245, 255, 0.2);\n transform: scale(1.1);\n outline: none;\n}\n\n/* Admin Header Actions wrapper (#226) */\n.admin-header-actions {\n display: flex;\n align-items: center;\n gap: var(--space-xs, 8px);\n}\n\n/* PWA Install Button (#226) */\n.pwa-install-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: none;\n background: rgba(0, 245, 255, 0.1);\n font-size: 1.5rem;\n cursor: pointer;\n transition: background-color 0.2s ease, transform 0.2s ease;\n padding: 0;\n}\n\n.pwa-install-btn:hover,\n.pwa-install-btn:focus {\n background: rgba(0, 245, 255, 0.2);\n transform: scale(1.1);\n outline: none;\n}\n\n/* Reset button (#777 follow-up \u2014 emergency escape hatch).\n Same 44px icon-button shape as the analytics + PWA install buttons,\n but neon-pink to signal \"destructive, last resort\". Stays subtle at\n rest so it doesn't read as a primary action. */\n.reset-icon-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: none;\n background: rgba(255, 45, 106, 0.1);\n color: var(--color-text-white);\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0;\n transition: background-color 0.2s ease, transform 0.2s ease;\n}\n.reset-icon-btn:hover,\n.reset-icon-btn:focus {\n background: rgba(255, 45, 106, 0.25);\n transform: scale(1.1);\n outline: none;\n}\n\n/* PWA iOS Hint Modal (#226) */\n.pwa-ios-hint {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1000;\n display: flex;\n justify-content: center;\n padding: var(--space-md, 16px);\n animation: slideUp 0.3s ease;\n}\n\n.pwa-ios-hint.hidden {\n display: none;\n}\n\n.pwa-ios-hint-content {\n position: relative;\n background: var(--color-bg-elevated, #2a2a3e);\n border-radius: var(--radius-lg, 12px);\n padding: var(--space-md, 16px) var(--space-lg, 24px);\n color: var(--color-text, #fff);\n text-align: center;\n max-width: 340px;\n box-shadow: 0 -2px 20px rgba(0, 0, 0, 0.3);\n}\n\n.pwa-ios-hint-close {\n position: absolute;\n top: 8px;\n right: 12px;\n background: none;\n border: none;\n color: var(--color-text, #fff);\n font-size: 1.4rem;\n cursor: pointer;\n opacity: 0.6;\n}\n\n.pwa-ios-hint-close:hover {\n opacity: 1;\n}\n\n.pwa-ios-share-icon {\n font-size: 1.2rem;\n}\n\n@keyframes slideUp {\n from { transform: translateY(100%); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n\n/* Sections */\n.status-section,\n.card-section {\n background: var(--color-bg-white);\n border-radius: var(--radius-lg);\n padding: var(--space-sm) var(--space-md);\n margin-bottom: var(--space-md);\n box-shadow: var(--shadow-sm);\n border: 1px solid transparent;\n transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.card-section:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n\n/* Section Headers with Icons (Story 19.13) */\n.card-section .section-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n margin-bottom: var(--space-sm);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-heading);\n}\n\n.card-section .section-icon {\n font-size: 1.25rem;\n}\n\n.status-section h2,\n.card-section h2:not(.section-header) {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--space-sm);\n color: var(--color-text-heading);\n}\n\n/* Status indicators */\n.status-connected {\n color: var(--color-success-alt);\n font-weight: var(--font-weight-medium);\n}\n\n.status-error {\n color: var(--color-error);\n font-weight: var(--font-weight-medium);\n}\n\n.status-warning {\n color: var(--color-warning);\n font-weight: var(--font-weight-medium);\n}\n\n/* List items */\n.list-item {\n padding: var(--space-sm);\n border-bottom: 1px solid var(--color-border-light);\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--space-sm);\n transition: background-color 0.2s ease;\n}\n\n.list-item:last-child {\n border-bottom: none;\n}\n\n/* Dark mode list items (Story 19.13) */\nbody.theme-dark .list-item {\n border-bottom-color: var(--surface-border, #333);\n}\n\nbody.theme-dark .list-item:hover {\n background: rgba(157, 78, 221, 0.1);\n}\n\n.list-item .name {\n font-weight: var(--font-weight-medium);\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-item .meta {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n flex-shrink: 0;\n}\n\n.list-item.is-invalid {\n background: var(--color-error-light);\n border-left: 3px solid var(--color-error);\n}\n\n/* Disabled playlist (no songs for selected provider) */\n.playlist-item.is-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.playlist-item.is-disabled .checkbox-label {\n cursor: not-allowed;\n}\n\n.playlist-item.is-disabled .playlist-checkbox {\n cursor: not-allowed;\n}\n\n/* Playlist selection (Story 2.1) */\n.playlist-item.is-selectable {\n cursor: pointer;\n}\n\n/* Selected state for both playlists and media players */\n.playlist-item.is-selected,\n.media-player-item.is-selected {\n background: #eff6ff;\n border-left: 3px solid var(--color-accent-blue);\n}\n\n/* Dark mode selected state - neon styling (Story 19.13) */\nbody.theme-dark .playlist-item.is-selected,\nbody.theme-dark .media-player-item.is-selected {\n background: rgba(0, 245, 255, 0.1);\n border-left: 3px solid var(--color-accent-secondary);\n}\n\n/* Seasonal playlist suggestion chip (#1539, design option 2) \u2014\n highlighted first tile inside the playlist list. */\n.seasonal-suggestion {\n position: relative;\n margin-bottom: 12px;\n padding: 14px 16px;\n border-radius: 14px;\n background:\n linear-gradient(135deg, rgba(255, 45, 106, 0.14) 0%, rgba(99, 102, 241, 0.14) 100%),\n #12121c;\n border: 1px solid rgba(255, 45, 106, 0.45);\n box-shadow: 0 0 0 1px rgba(0, 245, 255, 0.08), 0 6px 18px rgba(0, 0, 0, 0.35);\n}\n\n.seasonal-suggestion__badge {\n display: inline-block;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-accent-secondary, #00f5ff);\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid rgba(0, 245, 255, 0.3);\n border-radius: 999px;\n padding: 3px 10px;\n margin-bottom: 10px;\n}\n\n.seasonal-suggestion__title {\n font-size: 16px;\n font-weight: 700;\n color: #fff;\n margin-bottom: 4px;\n}\n\n.seasonal-suggestion__reason {\n font-size: 13px;\n line-height: 1.4;\n color: rgba(255, 255, 255, 0.72);\n margin-bottom: 12px;\n}\n\n.seasonal-suggestion__add {\n /* inherits .btn .btn-primary; just ensure it sits inline-block at the bottom */\n display: inline-block;\n}\n\n.seasonal-suggestion__dismiss {\n position: absolute;\n top: 8px;\n right: 10px;\n width: 28px;\n height: 28px;\n line-height: 1;\n font-size: 20px;\n color: rgba(255, 255, 255, 0.6);\n background: transparent;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n}\n\n/* #1759: 44px tap target (visual stays 28px) so dismissing the banner doesn't\n risk hitting the banner CTA underneath. */\n.seasonal-suggestion__dismiss::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 44px;\n height: 44px;\n transform: translate(-50%, -50%);\n}\n\n.seasonal-suggestion__dismiss:hover {\n color: #fff;\n background: rgba(255, 255, 255, 0.08);\n}\n\n/* Light theme fallback (admin defaults to dark, but keep it legible if not). */\nbody:not(.theme-dark) .seasonal-suggestion {\n background:\n linear-gradient(135deg, rgba(255, 45, 106, 0.08) 0%, rgba(99, 102, 241, 0.08) 100%),\n #fff;\n border: 1px solid rgba(255, 45, 106, 0.35);\n box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);\n}\n\nbody:not(.theme-dark) .seasonal-suggestion__title {\n color: #111;\n}\n\nbody:not(.theme-dark) .seasonal-suggestion__reason {\n color: #555;\n}\n\nbody:not(.theme-dark) .seasonal-suggestion__dismiss {\n color: #888;\n}\n\n/* Hide native checkbox, use row selection state */\n.playlist-checkbox {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n cursor: pointer;\n padding-left: var(--space-xs);\n}\n\n.playlist-name {\n font-weight: var(--font-weight-medium);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.selection-summary {\n padding: var(--space-sm) var(--space-md);\n background: #f0fdf4;\n border-radius: var(--radius-md);\n margin-top: var(--space-sm);\n font-weight: var(--font-weight-medium);\n color: #166534;\n}\n\n/* Selection summary counts - neon styling (Story 19.13) */\n.selection-summary #selected-count,\n.selection-summary #total-songs {\n font-family: 'Outfit', sans-serif;\n font-weight: 700;\n}\n\n/* Dark mode selection summary */\nbody.theme-dark .selection-summary {\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid var(--color-accent-secondary);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .selection-summary #selected-count,\nbody.theme-dark .selection-summary #total-songs {\n color: var(--color-accent-secondary);\n font-size: 1.1em;\n}\n\n/* Media player selection (Story 2.2) */\n.media-player-item.is-selectable {\n cursor: pointer;\n}\n\n/* Hide native radio, use row selection state */\n.media-player-radio {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n}\n\n.radio-label {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n cursor: pointer;\n padding-left: var(--space-xs);\n}\n\n.player-name {\n font-weight: var(--font-weight-medium);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* State indicators */\n.state-dot {\n display: inline-block;\n width: var(--space-sm);\n height: var(--space-sm);\n border-radius: 50%;\n margin-right: 6px;\n}\n\n.state-dot.state-playing {\n background: var(--color-success-alt);\n}\n\n.state-dot.state-idle,\n.state-dot.state-paused,\n.state-dot.state-off {\n background: var(--color-text-light);\n}\n\n/* Buttons - Touch-friendly minimum 44x44px */\nbutton,\n.btn {\n min-width: 44px;\n min-height: 44px;\n padding: var(--space-sm) var(--space-lg);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n border: none;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background-color var(--transition-fast), opacity var(--transition-fast);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n touch-action: manipulation;\n}\n\n.form-input {\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-sm);\n border: 1px solid var(--color-border-subtle);\n border-radius: var(--radius-md);\n background: var(--color-bg-secondary);\n color: var(--color-text-primary);\n margin-bottom: var(--space-sm);\n box-sizing: border-box;\n}\n\nbody.theme-dark .form-input {\n color: #e2e8f0;\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.15);\n}\n\n.btn-primary {\n background: var(--color-accent-primary);\n color: #fff;\n}\n\n.btn-primary:hover {\n background: #e0245c;\n}\n\n.btn-primary:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n opacity: 0.55;\n}\n\nbody.theme-dark .btn-primary {\n color: #fff;\n}\n\n.btn-secondary {\n background: var(--color-border-light);\n color: var(--color-text-secondary);\n}\n\n.btn-secondary:hover {\n background: var(--color-border-medium);\n}\n\n.btn-ghost {\n background: transparent;\n color: var(--color-accent-primary);\n border: 1.5px solid var(--color-accent-primary);\n}\n\n.btn-ghost:hover {\n background: rgba(255, 45, 106, 0.08);\n}\n\n.btn-ghost:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.btn-outline {\n background: transparent;\n color: var(--color-text-secondary);\n border: 1.5px solid var(--color-border-medium);\n}\n\n.btn-outline:hover {\n background: var(--color-border-light);\n border-color: var(--color-text-secondary);\n}\n\n.btn-outline:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.btn-danger {\n background: #dc2626;\n color: #fff;\n}\n\n.btn-danger:hover {\n background: #b91c1c;\n}\n\n/* Links */\na {\n color: var(--color-accent-blue);\n text-decoration: none;\n}\n\na:hover {\n text-decoration: underline;\n}\n\n/* Empty state */\n.empty-state {\n text-align: center;\n padding: var(--space-lg);\n color: var(--color-text-muted);\n}\n\n.empty-state p {\n margin-bottom: var(--space-sm);\n}\n\n/* Footer */\nfooter {\n margin-top: var(--space-lg);\n text-align: center;\n color: var(--color-text-light);\n font-size: var(--font-size-sm);\n}\n\n/* Utility classes */\n.hidden {\n display: none !important;\n}\n\n/* ==========================================\n Neon Party Mode Theme (Story 9.2)\n ========================================== */\n\n/* Dark theme body - applied to player page */\nbody.theme-dark {\n background: var(--color-bg-primary);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .player-container {\n background: var(--color-bg-primary);\n}\n\n/* Admin page cards in dark mode - neon styling (Story 19.13) */\nbody.theme-dark .card-section {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n color: var(--color-text-white);\n}\n\n/* Consistent spacing for admin content sections */\n.admin-content .card-section {\n margin-bottom: var(--space-md);\n}\n\nbody.theme-dark .card-section:hover {\n box-shadow: 0 4px 20px rgba(157, 78, 221, 0.3);\n}\n\nbody.theme-dark .card-section h2,\nbody.theme-dark .card-section .section-header {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .card-section p,\nbody.theme-dark .card-section .name,\nbody.theme-dark .card-section .player-name,\nbody.theme-dark .card-section .playlist-name,\nbody.theme-dark .card-section .list-item,\nbody.theme-dark .card-section .radio-label,\nbody.theme-dark .card-section .checkbox-label,\nbody.theme-dark .card-section strong,\nbody.theme-dark .card-section span {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .card-section .meta {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .game-info {\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-neon-purple);\n border-radius: var(--radius-md);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .game-info p,\nbody.theme-dark .game-info strong,\nbody.theme-dark .game-info span {\n color: var(--color-text-white);\n}\n\n/* Ensure button text stays white in dark mode (override card-section span rule) */\nbody.theme-dark .btn-primary span,\nbody.theme-dark .btn-secondary span {\n color: inherit;\n}\n\n/* Badge colors are explicitly set per badge type - no dark mode override needed */\n\n/* Inactive selector buttons need dark text on light backgrounds (Story 19.13) */\nbody.theme-dark .lang-btn:not(.lang-btn--active),\nbody.theme-dark .timer-btn:not(.timer-btn--active),\nbody.theme-dark .difficulty-btn:not(.difficulty-btn--active) {\n color: var(--color-text-primary, #1a1a2e);\n}\n\nbody.theme-dark .lang-btn:not(.lang-btn--active) span,\nbody.theme-dark .timer-btn:not(.timer-btn--active) span,\nbody.theme-dark .difficulty-btn:not(.difficulty-btn--active) span {\n color: var(--color-text-primary, #1a1a2e);\n}\n\n/* Language Selector (Story 12.4) */\n.language-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.lang-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-xs);\n padding: var(--space-sm) var(--space-lg);\n border: 2px solid var(--color-border-medium);\n border-radius: var(--radius-md);\n background: var(--color-bg-white);\n color: var(--color-text-primary);\n font-size: var(--font-size-base);\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.lang-btn:hover {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.lang-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.lang-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.lang-flag {\n font-size: 1.25em;\n}\n\n.lang-name {\n font-weight: 600;\n}\n\n/* Timer Selector (Story 13.1) */\n.timer-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.timer-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2xs);\n padding: var(--space-sm) var(--space-md);\n min-width: 90px;\n border: 2px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n background: var(--color-bg-card);\n color: var(--color-text-secondary);\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.timer-btn:hover {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.timer-btn:focus {\n outline: none;\n border-color: var(--color-accent-brand);\n box-shadow: 0 0 0 3px rgba(30, 215, 96, 0.3);\n}\n\n.timer-btn:focus-visible {\n outline: 2px solid var(--color-accent-brand);\n outline-offset: 2px;\n}\n\n.timer-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: var(--color-border-neon);\n background: var(--color-bg-card);\n}\n\n.timer-btn:disabled:hover {\n border-color: var(--color-border-neon);\n background: var(--color-bg-card);\n}\n\n.timer-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.timer-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.timer-icon {\n font-size: 1.5em;\n}\n\n.timer-label {\n font-weight: 600;\n font-size: 0.875rem;\n}\n\n.timer-value {\n font-size: 0.75rem;\n opacity: 0.8;\n}\n\n.timer-btn--active .timer-value {\n opacity: 1;\n}\n\n/* Difficulty Selector (Story 14.1) */\n.difficulty-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.difficulty-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2xs);\n padding: var(--space-sm) var(--space-md);\n min-width: 90px;\n border: 2px solid var(--color-border-light);\n border-radius: var(--radius-md);\n background: var(--color-bg-card);\n color: var(--color-text-secondary);\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.difficulty-btn:hover {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.difficulty-btn:focus {\n outline: none;\n border-color: var(--color-accent-brand);\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.3);\n}\n\n.difficulty-btn:focus-visible {\n outline: 2px solid var(--color-accent-brand);\n outline-offset: 2px;\n}\n\n.difficulty-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.difficulty-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.difficulty-icon {\n font-size: 1.5em;\n}\n\n.difficulty-label {\n font-weight: 600;\n font-size: 0.875rem;\n}\n\n.difficulty-description {\n text-align: center;\n font-size: 0.8125rem;\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n line-height: 1.5;\n max-width: 400px;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* Artist Challenge Toggle (Story 20.7) */\n.toggle-option {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n cursor: pointer;\n padding: var(--space-sm) 0;\n}\n\n.toggle-option input[type=\"checkbox\"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-switch {\n position: relative;\n width: 48px;\n height: 26px;\n background: var(--color-border);\n border-radius: 13px;\n transition: background 0.2s ease;\n flex-shrink: 0;\n}\n\n.toggle-switch::after {\n content: '';\n position: absolute;\n top: 3px;\n left: 3px;\n width: 20px;\n height: 20px;\n background: white;\n border-radius: 50%;\n transition: transform 0.2s ease;\n}\n\n.toggle-option input:checked + .toggle-switch {\n background: var(--color-success);\n}\n\n.toggle-option input:checked + .toggle-switch::after {\n transform: translateX(22px);\n}\n\n.toggle-option input:focus-visible + .toggle-switch {\n outline: 2px solid var(--color-accent-primary);\n outline-offset: 2px;\n}\n\n.toggle-label {\n font-size: var(--font-size-md);\n font-weight: 500;\n color: var(--color-text);\n}\n\n.option-description {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin: var(--space-xs) 0 0 0;\n padding-left: calc(48px + var(--space-md));\n}\n\n/* Dark mode toggle */\nbody.theme-dark .toggle-switch {\n background: var(--color-dark-border, #333);\n}\n\n/* Provider Selector (Story 17.2) */\n.provider-selector {\n display: flex;\n justify-content: center;\n gap: var(--space-sm);\n}\n\n.provider-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2xs);\n padding: var(--space-sm) var(--space-md);\n min-width: 100px;\n border: 2px solid var(--color-border-light);\n border-radius: var(--radius-md);\n background: var(--color-bg-card);\n color: var(--color-text-secondary);\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.provider-btn:hover:not(.provider-btn--disabled) {\n border-color: var(--color-accent-brand);\n background: var(--color-bg-card-alt);\n}\n\n.provider-btn:focus {\n outline: none;\n border-color: var(--color-accent-brand);\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.3);\n}\n\n.provider-btn:focus-visible {\n outline: 2px solid var(--color-accent-brand);\n outline-offset: 2px;\n}\n\n.provider-btn--active {\n border-color: var(--color-accent-brand);\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n}\n\n.provider-btn--active:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.provider-icon {\n font-size: 1.5em;\n}\n\n.provider-label {\n font-weight: 600;\n font-size: 0.875rem;\n}\n\n/* Playlist coverage warning (Story 17.2) */\n.playlist-coverage {\n font-size: 0.75rem;\n color: var(--color-text-muted);\n}\n\n.playlist-coverage--warning {\n color: var(--color-warning);\n}\n\n.playlist-coverage--none {\n color: var(--color-error);\n}\n\n/* Playlist Filter Bar (Issue #70) */\n.playlist-filter-bar {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 0.75rem 0;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid var(--color-border);\n}\n\n/* Dropdown filters container */\n.filter-dropdowns {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.filter-dropdown {\n padding: 0.5rem 2rem 0.5rem 0.75rem;\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md, 6px);\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--color-text-primary, #333);\n cursor: pointer;\n transition: all 0.15s ease;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M2 4l4 4 4-4'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n min-width: 120px;\n}\n\n.filter-dropdown:hover {\n border-color: var(--color-primary, #6c5ce7);\n}\n\n.filter-dropdown:focus {\n outline: none;\n border-color: var(--color-primary, #6c5ce7);\n box-shadow: 0 0 0 2px rgba(108, 92, 231, 0.2);\n}\n\n/* Dropdown with active selection */\n.filter-dropdown:not([value=\"\"]):has(option:checked:not([value=\"\"])) {\n border-color: var(--color-primary, #6c5ce7);\n background-color: rgba(108, 92, 231, 0.08);\n}\n\n/* Filter summary */\n.filter-summary {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.8125rem;\n}\n\n.filter-summary-text {\n color: var(--color-text-secondary, #666);\n}\n\n.filter-clear {\n padding: 0.25rem 0.5rem;\n background: transparent;\n border: 1px solid var(--color-border);\n border-radius: var(--radius-sm, 4px);\n font-size: 0.75rem;\n color: var(--color-text-secondary, #666);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.filter-clear:hover {\n background: var(--color-error, #e74c3c);\n border-color: var(--color-error, #e74c3c);\n color: white;\n}\n\n/* Dark theme */\nbody.theme-dark .filter-dropdown {\n background-color: rgba(255, 255, 255, 0.08);\n border-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.85);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M2 4l4 4 4-4'/%3E%3C/svg%3E\");\n}\n\nbody.theme-dark .filter-dropdown:hover,\nbody.theme-dark .filter-dropdown:focus {\n border-color: rgba(108, 92, 231, 0.6);\n}\n\nbody.theme-dark .filter-summary-text {\n color: rgba(255, 255, 255, 0.6);\n}\n\nbody.theme-dark .filter-clear {\n border-color: rgba(255, 255, 255, 0.2);\n color: rgba(255, 255, 255, 0.6);\n}\n\n/* Legacy filter-tag styles (kept for backwards compatibility) */\n.filter-tag {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.4375rem 0.875rem;\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-full);\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--color-text-primary, #333);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.filter-tag .filter-count {\n font-size: 0.6875rem;\n opacity: 0.8;\n}\n\n/* Playlist Tags Display */\n.playlist-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n margin-top: 0.375rem;\n}\n\n.playlist-tag {\n display: inline-block;\n padding: 0.1875rem 0.5rem;\n background: var(--color-primary-light, #e8e4f8);\n border: 1px solid var(--color-primary-border, #c9bff2);\n border-radius: var(--radius-full);\n font-size: 0.6875rem;\n font-weight: 500;\n color: var(--color-primary-dark, #5b4cad);\n max-width: 6rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.playlist-tag--more {\n background: transparent;\n border-color: var(--color-primary-border, #c9bff2);\n color: var(--color-text-secondary, #666);\n font-style: italic;\n}\n\nbody.theme-dark .playlist-tag {\n background: rgba(108, 92, 231, 0.2);\n border-color: rgba(108, 92, 231, 0.4);\n color: #b8acf6;\n}\n\nbody.theme-dark .playlist-tag--more {\n background: transparent;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* Difficulty Badge (Story 14.1) */\n.difficulty-badge {\n display: inline-block;\n padding: 0.125rem 0.5rem;\n border-radius: var(--radius-full);\n font-size: 0.75rem;\n font-weight: 600;\n margin-left: var(--space-xs);\n}\n\n.difficulty-badge--easy {\n background: var(--color-success-bg);\n color: var(--color-success);\n border: 1px solid var(--color-success);\n}\n\n.difficulty-badge--normal {\n background: var(--color-accent-brand-bg);\n color: var(--color-accent-brand);\n border: 1px solid var(--color-accent-brand);\n}\n\n.difficulty-badge--hard {\n background: var(--color-error-bg);\n color: var(--color-error);\n border: 1px solid var(--color-error);\n}\n\n/* Supported players hint below media player list */\n.supported-players-hint {\n font-size: 0.75rem;\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 1px solid var(--color-border-light);\n}\n\n.supported-players-hint a {\n color: var(--color-accent-primary);\n text-decoration: none;\n}\n\n.supported-players-hint a:hover {\n text-decoration: underline;\n}\n\nbody.theme-dark .supported-players-hint {\n color: var(--color-text-neon-muted);\n border-top-color: var(--color-border-neon);\n}\n\n/* Player info container - holds name and platform badge */\n.player-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n/* Platform badge on each player item */\n.platform-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 0.625rem;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n background: rgba(128, 128, 128, 0.15);\n color: var(--color-text-muted);\n}\n\n.platform-badge--music_assistant {\n background: rgba(76, 175, 80, 0.15);\n color: #4caf50;\n}\n\n.platform-badge--sonos {\n background: rgba(255, 152, 0, 0.15);\n color: #ff9800;\n}\n\n.platform-badge--alexa_media,\n.platform-badge--alexa {\n background: rgba(0, 168, 225, 0.15);\n color: #00a8e1;\n}\n\nbody.theme-dark .platform-badge {\n background: rgba(255, 255, 255, 0.08);\n}\n\nbody.theme-dark .platform-badge--music_assistant {\n background: rgba(76, 175, 80, 0.2);\n color: #81c784;\n}\n\nbody.theme-dark .platform-badge--sonos {\n background: rgba(255, 152, 0, 0.2);\n color: #ffb74d;\n}\n\nbody.theme-dark .platform-badge--alexa_media,\nbody.theme-dark .platform-badge--alexa {\n background: rgba(0, 168, 225, 0.2);\n color: #4fc3f7;\n}\n\n/* No compatible players message */\n.no-players-message {\n text-align: center;\n padding: var(--space-lg);\n}\n\n.no-players-message h3 {\n font-size: 1.125rem;\n margin-bottom: var(--space-sm);\n}\n\n.no-players-message p {\n font-size: 0.875rem;\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.no-players-message .button-group {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n margin-top: var(--space-md);\n}\n\n/* Provider chips section */\n.provider-chips {\n justify-content: flex-start;\n}\n\n.provider-chips .chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.provider-icon {\n font-size: 1rem;\n}\n\n/* Warning box styling */\n.warning-box {\n background: var(--color-warning-bg);\n border: 1px solid var(--color-warning);\n border-radius: var(--radius-sm);\n padding: var(--space-sm);\n margin-top: var(--space-sm);\n font-size: 0.875rem;\n}\n\n.warning-box p {\n margin: 0 0 var(--space-xs) 0;\n}\n\n.warning-box p:last-child {\n margin-bottom: 0;\n}\n\n.warning-caveat {\n font-size: 0.8125rem;\n opacity: 0.85;\n}\n\n/* Provider hint text */\n#provider-hint {\n font-size: 0.8125rem;\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n}\n\nbody.theme-dark #provider-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Disabled chip state (for provider/feature chips) */\n.chip--disabled,\n.provider-btn--disabled {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* Hint text styling */\n.hint-text {\n font-size: 0.75rem;\n color: var(--color-text-muted);\n margin: var(--space-xs) 0 0 calc(var(--space-md) + 24px);\n font-style: italic;\n}\n\nbody.theme-dark .hint-text {\n color: var(--color-text-neon-muted);\n}\n\n/* Modal content in dark mode needs dark text on light backgrounds */\nbody.theme-dark .modal-content {\n color: var(--color-text-primary);\n}\n\nbody.theme-dark .modal-content h2,\nbody.theme-dark .modal-content p {\n color: var(--color-text-primary);\n}\n\n/* Input fields inside modals need dark text on light background */\nbody.theme-dark .modal-content .name-input {\n background: var(--color-bg-white);\n border-color: var(--color-border-medium);\n color: var(--color-text-primary);\n}\n\nbody.theme-dark .modal-content .name-input::placeholder {\n color: var(--color-text-muted);\n}\n\nbody.theme-dark .modal-content .name-input:focus {\n border-color: var(--color-accent-blue);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n/* Card component classes */\n.card {\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n padding: var(--space-md);\n border: 1px solid var(--color-border-neon);\n}\n\n.card-glass {\n background: var(--color-dark-surface);\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n}\n\n/* Neon Primary Button */\n.btn-neon {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n border: none;\n border-radius: var(--radius-md);\n padding: var(--space-md) var(--space-lg);\n font-weight: var(--font-weight-semibold);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.btn-neon:hover {\n background: #ff4080;\n}\n\n.btn-neon:active {\n transform: scale(0.98);\n}\n\n/* Glow effect for buttons */\n.btn-glow {\n transition: box-shadow var(--transition-fast), transform var(--transition-fast);\n}\n\n.btn-glow:hover {\n box-shadow: var(--glow-primary);\n}\n\n.btn-glow:active {\n transform: scale(0.98);\n box-shadow: var(--glow-primary);\n}\n\n/* Secondary glow (cyan) */\n.btn-glow-secondary:hover {\n box-shadow: var(--glow-secondary);\n}\n\n/* Success glow */\n.btn-glow-success:hover {\n box-shadow: var(--glow-success);\n}\n\n/* Text glow utilities */\n.text-glow {\n text-shadow: 0 0 10px var(--color-accent-primary),\n 0 0 20px var(--color-accent-primary),\n 0 0 30px var(--color-accent-primary);\n}\n\n.text-glow-cyan {\n text-shadow: 0 0 10px var(--color-accent-secondary),\n 0 0 20px var(--color-accent-secondary),\n 0 0 30px var(--color-accent-secondary);\n}\n\n.text-glow-success {\n text-shadow: 0 0 10px var(--color-success-neon),\n 0 0 20px var(--color-success-neon),\n 0 0 30px var(--color-success-neon);\n}\n\n/* Dark theme text utilities */\n.text-neon-white {\n color: var(--color-text-white);\n}\n\n.text-neon-muted {\n color: var(--color-text-neon-muted);\n}\n\n.text-neon-primary {\n color: var(--color-accent-primary);\n}\n\n.text-neon-secondary {\n color: var(--color-accent-secondary);\n}\n\n/* Dark theme overrides for player views */\nbody.theme-dark .player-container h1,\nbody.theme-dark .lobby-header h1,\nbody.theme-dark .game-container h1,\nbody.theme-dark .reveal-container h1,\nbody.theme-dark .end-container h1 {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .player-container p,\nbody.theme-dark .hint,\nbody.theme-dark .player-count {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .join-form > p {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme player cards */\nbody.theme-dark .player-card {\n background: var(--color-dark-surface);\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .player-card--you {\n background: rgba(255, 45, 106, 0.1);\n border-color: var(--color-accent-primary);\n}\n\nbody.theme-dark .player-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .you-badge {\n color: var(--color-accent-primary);\n}\n\n/* Dark theme form inputs */\nbody.theme-dark .name-input {\n background: var(--color-dark-surface);\n border-color: var(--color-border-neon);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .name-input:focus {\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 0 3px rgba(255, 45, 106, 0.2);\n}\n\nbody.theme-dark .name-input::placeholder {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme join button */\nbody.theme-dark .join-btn {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .join-btn:hover {\n box-shadow: var(--glow-primary);\n}\n\n/* Dark theme QR area */\nbody.theme-dark .qr-share-area {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .qr-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme - QR collapsible (Story 18.8) */\nbody.theme-dark .qr-share-header {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .qr-share-chevron {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme lobby status */\nbody.theme-dark .lobby-status {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme game container */\nbody.theme-dark .game-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .round-indicator-text {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .timer {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .timer--warning {\n color: var(--color-warning);\n text-shadow: 0 0 10px var(--color-warning);\n animation: timer-pulse-subtle 1s ease-in-out infinite;\n}\n\nbody.theme-dark .timer--critical {\n color: var(--color-error-neon);\n text-shadow: 0 0 15px var(--color-error-neon);\n animation: timer-pulse-intense 0.5s ease-in-out infinite;\n}\n\n/* Dark theme submission tracker - inherits from base styles */\n\nbody.theme-dark .player-avatar {\n background: var(--color-dark-surface-hover);\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .player-indicator.is-submitted .player-avatar {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-success);\n}\n\n/* Dark theme year selector */\nbody.theme-dark #selected-year {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .slider-label {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .year-slider {\n background: var(--color-dark-surface);\n}\n\nbody.theme-dark .year-slider::-webkit-slider-thumb {\n background: var(--color-accent-primary);\n box-shadow: var(--glow-primary);\n}\n\nbody.theme-dark .year-slider::-moz-range-thumb {\n background: var(--color-accent-primary);\n box-shadow: var(--glow-primary);\n}\n\n/* Dark theme submit button */\nbody.theme-dark .submit-btn {\n background: var(--color-accent-primary);\n}\n\nbody.theme-dark .submit-btn:hover {\n box-shadow: var(--glow-primary);\n}\n\n/* Dark theme submitted confirmation */\nbody.theme-dark .submitted-confirmation {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-success);\n}\n\n/* Dark theme reveal container */\nbody.theme-dark .reveal-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .reveal-round-info {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .correct-year-label {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .correct-year {\n color: var(--color-success-neon);\n text-shadow: 0 0 10px var(--color-success-neon),\n 0 0 20px var(--color-success-neon);\n}\n\nbody.theme-dark .song-title {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .song-artist {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme fun fact */\nbody.theme-dark .fun-fact-container {\n background: rgba(255, 102, 0, 0.15);\n border: 1px solid rgba(255, 102, 0, 0.3);\n}\n\nbody.theme-dark .fun-fact-text {\n color: var(--color-warning);\n}\n\n/* Dark theme reveal emotion (Story 9.4) */\nbody.theme-dark .reveal-emotion--exact {\n color: var(--color-success-neon);\n text-shadow: 0 0 20px var(--color-success-neon), 0 0 40px var(--color-success-neon);\n}\n\nbody.theme-dark .reveal-emotion--close {\n color: var(--color-warning);\n text-shadow: 0 0 15px var(--color-warning);\n}\n\nbody.theme-dark .reveal-emotion--wrong {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .reveal-emotion--missed {\n color: var(--color-text-neon-muted);\n opacity: 0.6;\n}\n\n/* Dark theme personal result */\nbody.theme-dark .personal-result {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .result-header {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .result-label {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .result-value {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .result-score {\n color: var(--color-accent-secondary);\n text-shadow: 0 0 10px var(--color-accent-secondary);\n}\n\n/* Dark theme leaderboard */\nbody.theme-dark .leaderboard {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n box-shadow: none;\n}\n\nbody.theme-dark .leaderboard-header {\n background: var(--color-dark-card);\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .leaderboard-title {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .leaderboard-entry {\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .leaderboard-entry.is-current {\n background: rgba(255, 45, 106, 0.1);\n border-left-color: var(--color-accent-primary);\n}\n\nbody.theme-dark .entry-rank {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .entry-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .entry-score {\n color: var(--color-accent-secondary);\n}\n\n/* Dark theme leaderboard animations (Story 9.5) */\nbody.theme-dark .leaderboard-entry--climbing {\n animation: leaderboard-climb-dark 400ms ease-out;\n}\n\nbody.theme-dark .leaderboard-entry--falling {\n animation: leaderboard-fall-dark 400ms ease-out;\n}\n\n@keyframes leaderboard-climb-dark {\n 0% { transform: translateY(10px); opacity: 0.7; background: rgba(0, 255, 136, 0.15); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\n@keyframes leaderboard-fall-dark {\n 0% { transform: translateY(-10px); opacity: 0.7; background: rgba(255, 45, 106, 0.15); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\nbody.theme-dark .rank-up {\n color: var(--color-success-neon);\n text-shadow: 0 0 5px var(--color-success-neon);\n}\n\nbody.theme-dark .rank-down {\n color: var(--color-error-neon);\n text-shadow: 0 0 5px var(--color-error-neon);\n}\n\nbody.theme-dark .streak-indicator {\n color: var(--color-warning);\n}\n\nbody.theme-dark .streak-indicator--hot {\n text-shadow: 0 0 10px var(--color-warning), 0 0 20px var(--color-warning);\n}\n\nbody.theme-dark .leaderboard-separator {\n color: var(--color-text-neon-muted);\n border-color: var(--color-border-neon);\n}\n\n/* Dark theme top 3 styling (Story 9.5) */\nbody.theme-dark .leaderboard-entry.is-top-1 {\n background: linear-gradient(90deg, rgba(255, 215, 0, 0.15), rgba(255, 215, 0, 0.05));\n}\n\nbody.theme-dark .leaderboard-entry.is-top-1 .entry-rank {\n color: #ffd700;\n text-shadow: 0 0 10px rgba(255, 215, 0, 0.5);\n}\n\nbody.theme-dark .leaderboard-entry.is-top-2 {\n background: linear-gradient(90deg, rgba(192, 192, 192, 0.15), rgba(192, 192, 192, 0.05));\n}\n\nbody.theme-dark .leaderboard-entry.is-top-2 .entry-rank {\n color: #c0c0c0;\n text-shadow: 0 0 10px rgba(192, 192, 192, 0.5);\n}\n\nbody.theme-dark .leaderboard-entry.is-top-3 {\n background: linear-gradient(90deg, rgba(205, 127, 50, 0.15), rgba(205, 127, 50, 0.05));\n}\n\nbody.theme-dark .leaderboard-entry.is-top-3 .entry-rank {\n color: #cd7f32;\n text-shadow: 0 0 10px rgba(205, 127, 50, 0.5);\n}\n\n/* Dark theme end container */\nbody.theme-dark .end-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .end-title {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .end-subtitle {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .your-result {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .your-result-header {\n color: var(--color-accent-primary);\n}\n\nbody.theme-dark .your-result-rank {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .your-result-score {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .stat-value {\n color: var(--color-accent-secondary);\n}\n\nbody.theme-dark .stat-label {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme podium */\nbody.theme-dark .podium-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .podium-score {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme final leaderboard */\nbody.theme-dark .final-leaderboard {\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n box-shadow: none;\n}\n\nbody.theme-dark .final-leaderboard-header {\n background: var(--color-dark-card);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .final-entry {\n border-color: var(--color-border-neon);\n}\n\nbody.theme-dark .final-entry.is-current {\n background: rgba(255, 45, 106, 0.1);\n}\n\nbody.theme-dark .final-rank {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .final-name {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .final-score {\n color: var(--color-accent-secondary);\n}\n\n/* Dark theme new game button */\nbody.theme-dark .new-game-btn {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-success);\n}\n\nbody.theme-dark .new-game-btn:hover {\n background: #4dff1f;\n}\n\n/* Dark theme end player message */\nbody.theme-dark .end-player-message {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .rejoin-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme paused view */\nbody.theme-dark .paused-container {\n background: var(--color-bg-primary);\n}\n\nbody.theme-dark .paused-container h1 {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .paused-container > p {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .paused-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme connection lost view */\nbody.theme-dark .connection-lost-container h1 {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .connection-lost-container > p {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .connection-lost-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* Dark theme modal */\nbody.theme-dark .qr-modal-content {\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n}\n\nbody.theme-dark .qr-modal-label {\n color: var(--color-text-white);\n}\n\n/* ==========================================\n Lobby Section (Story 2.3)\n ========================================== */\n\n.qr-print-area {\n text-align: center;\n padding: var(--space-lg) 0;\n}\n\n.qr-container {\n display: inline-block;\n padding: var(--space-md);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n box-shadow: var(--shadow-md);\n}\n\n#qr-code {\n display: inline-block;\n}\n\n#qr-code img {\n display: block;\n}\n\n.qr-instruction {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n margin-top: var(--space-md);\n}\n\n.join-url {\n font-family: var(--font-mono);\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n word-break: break-all;\n user-select: all;\n cursor: text;\n}\n\n.lobby-controls {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--space-sm);\n margin: var(--space-md) 0;\n}\n\n/* Dashboard button styling (Story 16.4) */\n.btn-dashboard {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.player-list {\n margin-top: var(--space-md);\n border-top: 1px solid var(--color-border-light);\n padding-top: var(--space-md);\n}\n\n.game-controls-bar {\n display: flex;\n gap: var(--space-sm);\n justify-content: center;\n margin-top: var(--space-md);\n padding-top: var(--space-md);\n border-top: 1px solid var(--color-border-light);\n}\n\n/* Game Info Card (Story 2.3) */\n.game-info {\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.game-info p {\n margin-bottom: var(--space-sm);\n}\n\n.game-info p:last-child {\n margin-bottom: 0;\n}\n\n/* Print Styles (Story 2.3) */\n@media print {\n body * {\n visibility: hidden;\n }\n\n .qr-print-area,\n .qr-print-area * {\n visibility: visible;\n }\n\n .qr-print-area {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n }\n\n #qr-code {\n width: 400px !important;\n height: 400px !important;\n }\n\n #qr-code img,\n #qr-code canvas {\n width: 400px !important;\n height: 400px !important;\n }\n\n .qr-instruction {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n margin-top: var(--space-xl);\n }\n\n .join-url {\n font-size: var(--font-size-base);\n font-family: var(--font-mono);\n margin-top: var(--space-sm);\n }\n\n .no-print {\n display: none !important;\n }\n}\n\n/* ==========================================\n Player Page Styles (Story 2.4)\n ========================================== */\n\n.player-container {\n max-width: 500px;\n margin: 0 auto;\n /* Edge-to-edge layout with safe area support (Story 9.6) */\n padding-top: max(var(--space-md), env(safe-area-inset-top));\n padding-bottom: max(var(--space-md), env(safe-area-inset-bottom));\n padding-left: max(var(--space-sm), env(safe-area-inset-left));\n padding-right: max(var(--space-sm), env(safe-area-inset-right));\n text-align: center;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n}\n\n/* Tablet breakpoint - center content (Story 9.6) */\n@media (min-width: 768px) {\n .player-container {\n max-width: 480px;\n margin-left: auto;\n margin-right: auto;\n padding-left: var(--space-lg);\n padding-right: var(--space-lg);\n }\n}\n\n.view {\n display: block;\n overflow-x: hidden;\n}\n\n.view.hidden {\n display: none;\n}\n\n.error-icon {\n font-size: var(--font-size-timer);\n margin-bottom: var(--space-md);\n}\n\n.player-container h1 {\n margin-bottom: var(--space-sm);\n color: var(--color-text-primary);\n}\n\n.player-container p {\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.hint {\n font-size: var(--font-size-base);\n color: var(--color-text-light);\n}\n\n.coming-soon {\n font-style: italic;\n color: var(--color-text-muted);\n}\n\n.spinner {\n width: 40px;\n height: 40px;\n margin: 0 auto var(--space-md);\n border: 4px solid var(--color-bg-card-alt);\n border-top: 4px solid var(--color-accent-blue);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* ==========================================\n Responsive QR Sizing (Story 2.4)\n ========================================== */\n\n/* Mobile default - minimum 250px */\n#qr-code {\n max-width: 100%;\n}\n\n#qr-code img,\n#qr-code canvas {\n max-width: 100%;\n height: auto;\n}\n\n/* Tablet (481-768px): 280px QR code */\n@media (min-width: 481px) and (max-width: 768px) {\n .qr-container {\n padding: var(--space-xl);\n }\n}\n\n/* Desktop (>768px): 350px QR code */\n@media (min-width: 769px) {\n .qr-container {\n padding: var(--space-lg);\n }\n}\n\n/* ==========================================\n Join Form Styles (Story 3.1)\n ========================================== */\n\n.join-form {\n max-width: 400px;\n margin: 0 auto;\n padding: var(--space-lg);\n text-align: center;\n}\n\n.join-form h1 {\n margin-bottom: var(--space-sm);\n font-size: var(--font-size-2xl);\n}\n\n.join-form > p {\n margin-bottom: var(--space-lg);\n color: var(--color-text-muted);\n}\n\n.form-group {\n margin-bottom: var(--space-md);\n}\n\n.name-input {\n width: 100%;\n padding: 14px var(--space-md);\n font-size: var(--font-size-lg);\n border: 2px solid var(--color-border-medium);\n border-radius: var(--radius-md);\n min-height: 48px;\n box-sizing: border-box;\n}\n\n.name-input:focus {\n border-color: var(--color-accent-blue);\n outline: none;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.join-btn {\n width: 100%;\n min-height: 48px;\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n}\n\n.validation-msg {\n margin-top: var(--space-sm);\n font-size: var(--font-size-base);\n color: var(--color-error);\n text-align: left;\n}\n\n/* ==========================================\n Lobby Styles (Story 3.3)\n ========================================== */\n\n.lobby-container {\n max-width: 500px;\n margin: 0 auto;\n padding: var(--space-lg) var(--space-md);\n}\n\n.lobby-header {\n text-align: center;\n margin-bottom: var(--space-lg);\n}\n\n.lobby-header h1 {\n font-size: var(--font-size-2xl);\n margin-bottom: var(--space-sm);\n color: var(--color-text-primary);\n}\n\n.player-count {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* Player List */\n.player-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n margin-bottom: var(--space-lg);\n}\n\n.player-card {\n display: flex;\n align-items: center;\n padding: var(--space-sm) var(--space-md);\n min-height: 48px;\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border-light);\n transition: all var(--transition-normal);\n}\n\n.player-card--you {\n background: #eff6ff;\n border-color: var(--color-accent-blue);\n}\n\n.player-card--disconnected {\n opacity: 0.5;\n filter: grayscale(0.3);\n transition: opacity 0.3s ease, filter 0.3s ease;\n}\n\n.away-badge {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n font-style: italic;\n margin-left: var(--space-xs);\n}\n\n.player-name {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-size: var(--font-size-md);\n color: var(--color-text-primary);\n}\n\n.you-badge {\n font-size: var(--font-size-sm);\n color: var(--color-accent-blue);\n font-weight: var(--font-weight-medium);\n}\n\n/* New player animation */\n.player-card.is-new {\n animation: playerJoin var(--transition-slow) ease-out;\n background: #ecfdf5;\n border-color: var(--color-success);\n}\n\n@keyframes playerJoin {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Story 18.2: Virtual scrolling for player lists */\n.player-list--virtual {\n position: relative;\n overflow-y: auto;\n max-height: 320px;\n -webkit-overflow-scrolling: touch;\n contain: layout style paint;\n}\n\n.player-list--virtual .virtual-spacer-top,\n.player-list--virtual .virtual-spacer-bottom {\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.player-list--virtual .virtual-content-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n.player-list--virtual .player-card {\n flex-shrink: 0;\n height: 52px;\n box-sizing: border-box;\n}\n\n/* QR Share Area (Story 3.4) */\n.qr-share-area {\n text-align: center;\n padding: var(--space-lg) var(--space-md);\n background: var(--color-bg-card);\n border-radius: var(--radius-lg);\n margin-bottom: var(--space-md);\n}\n\n.qr-icon {\n font-size: var(--font-size-xl);\n}\n\n.qr-container {\n display: inline-block;\n padding: var(--space-sm);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n box-shadow: var(--shadow-md);\n cursor: pointer;\n min-width: 150px;\n min-height: 150px;\n transition: transform var(--transition-fast);\n}\n\n.qr-container:hover,\n.qr-container:focus {\n transform: scale(1.02);\n outline: 2px solid var(--color-accent-blue);\n outline-offset: 2px;\n}\n\n.qr-container img {\n display: block;\n width: 100%;\n height: auto;\n}\n\n.qr-hint {\n margin-top: var(--space-sm);\n font-size: 13px;\n color: var(--color-text-muted);\n}\n\n/* QR Share Section - Collapsible (Story 18.8) */\n.qr-collapsible {\n /* Override base qr-share-area padding for collapsible */\n padding: 0;\n}\n\n.qr-share-header {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n cursor: pointer;\n user-select: none;\n list-style: none; /* Remove default marker */\n font-size: var(--font-size-md);\n font-weight: 600;\n color: var(--color-text-primary);\n min-height: 44px; /* Touch target */\n}\n\n.qr-share-header::-webkit-details-marker {\n display: none; /* Hide Safari default marker */\n}\n\n.qr-share-chevron {\n margin-left: var(--space-sm);\n transition: transform var(--transition-normal);\n font-size: 0.8rem;\n color: var(--color-text-muted);\n}\n\n.qr-collapsible[open] .qr-share-chevron {\n transform: rotate(180deg);\n}\n\n.qr-share-content {\n padding: 0 var(--space-md) var(--space-lg);\n animation: qrSlideDown var(--transition-normal) ease-out;\n}\n\n@keyframes qrSlideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Collapsed state - just show header */\n.qr-collapsible:not([open]) {\n padding-bottom: 0;\n}\n\n.qr-collapsible:not([open]) .qr-share-header {\n padding-bottom: var(--space-md);\n}\n\n/* Reduced motion preference */\n@media (prefers-reduced-motion: reduce) {\n .qr-share-chevron {\n transition: none;\n }\n .qr-share-content {\n animation: none;\n }\n}\n\n/* Dashboard Hint (Story 16.4) */\n.dashboard-hint-container {\n margin-top: var(--space-md);\n text-align: center;\n}\n\n.dashboard-hint-text {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-xs);\n font-size: var(--font-size-sm);\n color: #ffffff;\n background: var(--color-surface-dark);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n margin: 0;\n}\n\n.dashboard-hint-label {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n color: white;\n}\n\n.dashboard-hint-icon {\n font-size: var(--font-size-base);\n}\n\n.dashboard-hint-url {\n font-family: monospace;\n color: var(--color-accent-secondary);\n font-size: var(--font-size-sm);\n}\n\n/* QR Modal (Story 3.4) */\n.qr-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.qr-modal.hidden {\n display: none;\n}\n\n.qr-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.75);\n}\n\n.qr-modal-content {\n position: relative;\n background: var(--color-bg-white);\n padding: var(--space-xl) var(--space-lg);\n border-radius: var(--radius-xl);\n text-align: center;\n max-width: 90vw;\n max-height: 90vh;\n animation: modalFadeIn var(--transition-fast);\n}\n\n@keyframes modalFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.qr-modal-code {\n display: inline-block;\n padding: var(--space-md);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n min-width: 250px;\n}\n\n.qr-modal-code img {\n display: block;\n width: 100%;\n max-width: 80vw;\n height: auto;\n}\n\n.qr-modal-label {\n margin: var(--space-md) 0;\n font-size: var(--font-size-lg);\n color: var(--color-text-primary);\n}\n\n.qr-modal-close {\n min-width: 120px;\n min-height: 48px;\n}\n\n/* Screen reader only */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n/* Lobby Status */\n.lobby-status {\n text-align: center;\n padding: var(--space-md);\n color: var(--color-text-muted);\n}\n\n/* How to Play Section (Story 18.7) */\n.how-to-play {\n margin: var(--space-md) 0;\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border-light);\n}\n\n.how-to-play-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n cursor: pointer;\n user-select: none;\n list-style: none;\n font-weight: 600;\n color: var(--color-text-primary);\n min-height: 44px;\n}\n\n.how-to-play-header::-webkit-details-marker {\n display: none;\n}\n\n.how-to-play-icon {\n font-size: 1.2rem;\n}\n\n.how-to-play-chevron {\n margin-left: auto;\n transition: transform var(--transition-normal);\n font-size: 0.8rem;\n color: var(--color-text-secondary);\n}\n\n.how-to-play[open] .how-to-play-chevron {\n transform: rotate(180deg);\n}\n\n.how-to-play-content {\n padding: 0 var(--space-md) var(--space-md);\n animation: howToPlaySlideDown var(--transition-normal) ease-out;\n}\n\n.how-to-play-steps {\n margin: 0;\n padding: 0;\n list-style: none;\n color: var(--color-text-secondary);\n font-size: 0.9rem;\n line-height: 1.6;\n counter-reset: step-counter;\n}\n\n.how-to-play-steps li {\n margin-bottom: var(--space-sm);\n padding-left: var(--space-lg);\n position: relative;\n counter-increment: step-counter;\n}\n\n.how-to-play-steps li::before {\n content: counter(step-counter) \".\";\n position: absolute;\n left: 0;\n width: var(--space-md);\n text-align: right;\n font-weight: 600;\n color: var(--color-text-primary);\n}\n\n.how-to-play-steps li:last-child {\n margin-bottom: 0;\n}\n\n@keyframes howToPlaySlideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Leave Game Container (Story 11.5, Story 18.6) */\n.leave-game-container {\n text-align: center;\n padding: var(--space-md);\n /* Story 18.6: Sticky positioning for mobile */\n position: sticky;\n bottom: 0;\n background: linear-gradient(to top, var(--color-bg-card), transparent);\n z-index: var(--z-controls, 10);\n}\n\n.leave-game-container.hidden {\n display: none;\n}\n\n/* Story 18.6: Remove gradient background in dark theme (matching admin-controls) */\nbody.theme-dark .leave-game-container {\n background: transparent;\n}\n\n.btn-leave {\n opacity: 0.7;\n transition: opacity 0.2s ease;\n}\n\n.btn-leave:hover {\n opacity: 1;\n}\n\n/* Admin Controls (Story 3.5) */\n.admin-controls {\n padding: var(--space-lg) var(--space-md);\n text-align: center;\n background: linear-gradient(to top, var(--color-bg-card), transparent);\n position: sticky;\n bottom: 0;\n}\n\n.admin-controls.hidden {\n display: none;\n}\n\n/* Story 9.10: Remove gradient background in dark theme */\nbody.theme-dark .admin-controls {\n background: transparent;\n}\n\n.btn-large {\n min-height: 56px;\n font-size: var(--font-size-xl);\n padding: var(--space-md) var(--space-xl);\n}\n\n.btn-full-width {\n width: 100%;\n}\n\n/* .btn-icon margin removed - .btn already uses flexbox gap for spacing */\n\n.admin-hint {\n margin-top: var(--space-sm);\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n}\n\n/* Admin page modal and actions */\n.admin-lobby-actions {\n text-align: center;\n margin-top: var(--space-lg);\n}\n\n/* Admin badge styling (Story 16.8) */\n.admin-badge {\n font-size: var(--font-size-sm);\n color: var(--color-warning);\n margin-left: var(--space-xs);\n}\n\n/* Player count styling for admin lobby (legacy - kept for backwards compat) */\n.lobby-player-count-container {\n text-align: center;\n margin-bottom: var(--space-md);\n}\n\n/* =====================================================\n Admin Lobby - Analytics Layout (Story 2.3 restructure)\n ===================================================== */\n\n/* Lobby Stats Grid - 2 column layout like analytics */\n.lobby-stats-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-md);\n margin-bottom: var(--space-lg);\n}\n\n/* Clickable stat card (dashboard link) */\n.stat-card--clickable {\n display: block;\n text-decoration: none;\n cursor: pointer;\n margin-bottom: var(--space-lg);\n}\n\n.stat-card--clickable:hover {\n border-color: var(--color-accent-secondary);\n}\n\n.dashboard-hint-card {\n background: rgba(0, 245, 255, 0.05);\n border-color: var(--color-accent-secondary);\n}\n\n/* QR Section - centered card with consistent styling */\n.qr-section {\n text-align: center;\n padding: var(--space-xl) var(--space-lg);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-lg);\n}\n\n.qr-section .qr-container {\n display: inline-block;\n padding: var(--space-md);\n background: #ffffff;\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n}\n\n.qr-hint {\n font-size: 1rem;\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-sm);\n}\n\n.qr-url-display {\n font-family: 'Outfit', sans-serif;\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--color-accent-secondary);\n word-break: break-all;\n}\n\n/* Player List Section - consistent with analytics sections */\n.player-list-section {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-lg);\n}\n\n.section-subheader {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-size: 1rem;\n font-weight: 600;\n color: var(--color-text-white);\n margin-bottom: var(--space-md);\n}\n\n.section-subheader .section-icon {\n font-size: 1.25rem;\n}\n\n/* Player Cards Grid - responsive grid layout */\n.player-cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: var(--space-sm);\n}\n\n/* Player card in grid layout */\n.player-cards-grid .player-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--space-md);\n min-height: 80px;\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n text-align: center;\n transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.player-cards-grid .player-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(157, 78, 221, 0.2);\n}\n\n.player-cards-grid .player-card.is-new {\n background: rgba(57, 255, 20, 0.1);\n border-color: var(--color-success-neon);\n animation: playerCardJoin 0.5s ease-out;\n}\n\n@keyframes playerCardJoin {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.player-cards-grid .player-card--disconnected {\n opacity: 0.5;\n filter: grayscale(0.3);\n}\n\n.player-cards-grid .player-name {\n font-size: var(--font-size-md);\n font-weight: 600;\n color: var(--color-text-white);\n margin-bottom: var(--space-xs);\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n flex-wrap: wrap;\n justify-content: center;\n}\n\n.player-cards-grid .admin-badge {\n font-size: 1rem;\n}\n\n.player-cards-grid .away-badge {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n display: block;\n width: 100%;\n}\n\n/* Kick player button for disconnected players (#659) */\n.kick-player-btn {\n position: relative;\n background: none;\n border: 1px solid var(--color-border-dark);\n color: var(--color-text-muted);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n font-size: 1rem;\n line-height: 1;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: var(--space-xs);\n padding: 0;\n transition: all 0.15s ease;\n}\n\n/* #1759: expand the tap target to the 44px iOS/Android guideline without\n growing the 24px visual, so it's reliably hittable inside the tappable row. */\n.kick-player-btn::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 44px;\n height: 44px;\n transform: translate(-50%, -50%);\n}\n\n.kick-player-btn:hover {\n background: var(--color-error);\n color: white;\n border-color: var(--color-error);\n}\n\n/* Lobby Actions */\n.lobby-actions {\n margin-top: var(--space-lg);\n padding-top: var(--space-md);\n border-top: 1px solid var(--color-border-dark);\n}\n\n/* =====================================================\n Mobile-Optimized Compact Lobby Layout\n ===================================================== */\n\n/* Compact header with inline badges */\n.lobby-header-compact {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n text-align: left;\n}\n\n.section-header--inline {\n margin-bottom: 0;\n flex: 1;\n min-width: 120px;\n text-align: left;\n}\n\n/* Stat Badge Bar */\n.stat-badge-bar {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n}\n\n.stat-badge {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-sm);\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n font-size: 0.875rem;\n}\n\n.stat-badge-icon {\n font-size: 1rem;\n}\n\n.stat-badge-value {\n font-weight: 600;\n color: var(--color-accent-secondary);\n}\n\n.stat-badge--status .stat-badge-value {\n color: var(--color-text-white);\n}\n\n/* Compact QR Section */\n.qr-section--compact {\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.qr-section--compact .qr-container {\n padding: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n\n.qr-section--compact #qr-code {\n width: 180px !important;\n height: 180px !important;\n}\n\n.qr-section--compact #qr-code img,\n.qr-section--compact #qr-code canvas {\n width: 180px !important;\n height: 180px !important;\n}\n\n.qr-section--compact .qr-hint {\n font-size: 0.875rem;\n margin-bottom: var(--space-xs);\n}\n\n.qr-url-display--compact {\n font-size: 0.75rem;\n margin-bottom: var(--space-sm);\n}\n\n/* Inline Dashboard Link */\n.dashboard-link {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-sm);\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid var(--color-accent-secondary);\n border-radius: var(--radius-md);\n color: var(--color-accent-secondary);\n text-decoration: none;\n font-size: 0.875rem;\n transition: all 0.2s ease;\n}\n\n.dashboard-link:hover {\n background: rgba(0, 245, 255, 0.2);\n}\n\n.dashboard-link-arrow {\n opacity: 0.7;\n}\n\n/* Compact Player List */\n.player-list-section--compact {\n padding: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n\n.section-subheader--compact {\n font-size: 0.875rem;\n margin-bottom: var(--space-sm);\n}\n\n/* Inline Empty State */\n.empty-state-inline {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n color: var(--color-text-neon-muted);\n font-size: 0.875rem;\n text-align: center;\n}\n\n/* Sticky Lobby Actions */\n.lobby-actions--sticky {\n position: sticky;\n bottom: 0;\n margin: 0 calc(-1 * var(--space-md));\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-primary);\n border-top: 1px solid var(--color-border-dark);\n z-index: 10;\n display: flex;\n flex-direction: column;\n gap: var(--space-sm, 8px);\n}\n\n/* Desktop: Keep larger layout */\n@media (min-width: 481px) {\n .qr-section--compact #qr-code,\n .qr-section--compact #qr-code img,\n .qr-section--compact #qr-code canvas {\n width: 240px !important;\n height: 240px !important;\n }\n\n .qr-section--compact {\n padding: var(--space-lg);\n }\n\n .lobby-actions--sticky {\n position: relative;\n margin: var(--space-lg) 0 0 0;\n padding: var(--space-md) 0 0 0;\n background: transparent;\n }\n}\n\n/* =====================================================\n Lobby View - Shared Styles (Admin & Player)\n ===================================================== */\n\n/* Lobby Wordmark Header (without analytics icon) */\n.lobby-wordmark-header {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--space-md) var(--space-md) var(--space-sm);\n padding-top: env(safe-area-inset-top, 16px);\n}\n\n.lobby-wordmark-header .wordmark {\n font-size: 2rem;\n}\n\n/* Compact Lobby Container */\n.lobby-container--compact {\n flex: 1;\n padding: 0 var(--space-sm) var(--space-2xl);\n max-width: 500px;\n margin: 0 auto;\n width: 100%;\n}\n\n/* Lobby sections use the same collapsible pattern */\n.lobby-container--compact .section-collapsible {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n overflow: hidden;\n}\n\n.lobby-container--compact .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.lobby-container--compact .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.lobby-container--compact .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-text-neon-muted);\n padding: 2px 8px;\n background: rgba(255, 255, 255, 0.05);\n border-radius: var(--radius-sm);\n}\n\n.lobby-container--compact .section-toggle {\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n margin-left: var(--space-sm);\n}\n\n/* Push toggle to right when no summary present (toggle is 3rd child) */\n.lobby-container--compact .section-header-collapsible > .section-toggle:nth-child(3) {\n margin-left: auto;\n}\n\n.lobby-container--compact .section-collapsible:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n.lobby-container--compact .section-content {\n padding: 0 var(--space-md) var(--space-md);\n}\n\n.lobby-container--compact .section-collapsible.collapsed .section-content {\n display: none;\n}\n\n/* Compact Status (for non-admin players) */\n.lobby-status-compact {\n text-align: center;\n padding: var(--space-md);\n color: var(--color-text-neon-muted);\n font-size: 0.875rem;\n}\n\n/* Compact How to Play Steps */\n.how-to-play-steps-compact {\n list-style: decimal;\n padding-left: var(--space-lg);\n margin: 0;\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n}\n\n.how-to-play-steps-compact li {\n padding: var(--space-xs) 0;\n}\n\n/* Stat Badge for Difficulty */\n.stat-badge--difficulty {\n font-size: 0.75rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.stat-badge--difficulty:empty {\n display: none;\n}\n\n/* =====================================================\n Admin Page - Collapsible Sections & Compact Controls\n ===================================================== */\n\n/* Collapsible sections for admin (reuse analytics pattern) */\n.admin-content .section-collapsible {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n overflow: hidden;\n}\n\n.admin-content .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.admin-content .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.admin-content .section-header-collapsible .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.1);\n padding: 2px 8px;\n border-radius: var(--radius-sm);\n}\n\n.admin-content .section-header-collapsible .section-toggle {\n margin-left: var(--space-sm);\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n}\n\n.admin-content .section-collapsible:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n.admin-content .section-collapsible .section-content {\n padding: 0 var(--space-md) var(--space-md);\n}\n\n.admin-content .section-collapsible.collapsed .section-content {\n display: none;\n}\n\n/* Setting rows - compact horizontal layout */\n.setting-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--space-xs) 0;\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n.setting-row:last-child {\n border-bottom: none;\n}\n\n.setting-group {\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n padding-bottom: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n\n.setting-group:last-child {\n border-bottom: none;\n}\n\n.setting-group .setting-row {\n border-bottom: none;\n}\n\n.tts-group-title {\n font-size: 0.7rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-text-muted);\n margin: 0 0 var(--space-xs) 0;\n opacity: 0.8;\n}\n\n.setting-hint {\n font-size: 0.7rem;\n color: var(--color-text-muted);\n margin: 0 0 var(--space-xs) calc(var(--space-xs) + 24px);\n line-height: 1.3;\n opacity: 0.75;\n}\n\nbody.theme-dark .setting-hint {\n color: var(--color-text-neon-muted);\n}\n\n/* #1138 cleanup: .ha-entity-list rules removed with the legacy flat\n #ha-entities info section (deleted from admin.html). */\n\n.setting-label {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n font-size: 0.875rem;\n color: var(--color-text-white);\n}\n\n.setting-icon {\n font-size: 0.875rem;\n}\n\n/* Chip group - compact inline buttons */\n.chip-group {\n display: flex;\n gap: 4px;\n}\n\n.chip {\n padding: 4px 10px;\n font-size: 0.75rem;\n font-weight: 500;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-sm);\n color: var(--color-text-neon-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chip:hover {\n background: rgba(255, 255, 255, 0.1);\n color: var(--color-text-white);\n}\n\n.chip.chip--active {\n background: rgba(0, 245, 255, 0.2);\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n}\n\n/* Compact toggle switch */\n.toggle-compact {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.toggle-compact input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-switch-compact {\n width: 36px;\n height: 20px;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 10px;\n position: relative;\n transition: background 0.2s ease;\n}\n\n.toggle-switch-compact::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n background: var(--color-text-neon-muted);\n border-radius: 50%;\n transition: all 0.2s ease;\n}\n\n.toggle-compact input:checked + .toggle-switch-compact {\n background: rgba(0, 245, 255, 0.3);\n}\n\n.toggle-compact input:checked + .toggle-switch-compact::after {\n left: 18px;\n background: var(--color-accent-secondary);\n}\n\n/* Admin actions - sticky footer */\n.admin-actions {\n position: sticky;\n bottom: 0;\n background: var(--color-bg-primary);\n padding: var(--space-sm) 0;\n margin-top: var(--space-sm);\n}\n\n.admin-actions .status-error {\n margin-bottom: var(--space-xs);\n font-size: 0.875rem;\n}\n\n/* Modal styles */\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.modal.hidden {\n display: none;\n}\n\n.modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n}\n\n.modal-content {\n position: relative;\n background: var(--color-bg-white);\n padding: var(--space-lg);\n border-radius: var(--radius-lg);\n max-width: 400px;\n width: 90%;\n animation: modalFadeIn var(--transition-fast);\n}\n\n.modal-content h2 {\n margin-bottom: var(--space-sm);\n font-size: var(--font-size-xl);\n}\n\n.modal-content p {\n margin-bottom: var(--space-md);\n color: var(--color-text-muted);\n}\n\n.modal-actions {\n display: flex;\n gap: var(--space-sm);\n margin-top: var(--space-lg);\n}\n\n.modal-actions .btn {\n flex: 1;\n}\n\n/* Game placeholder (Epic 4 prep) */\n.game-placeholder {\n text-align: center;\n padding: var(--space-2xl) var(--space-lg);\n}\n\n.game-placeholder h1 {\n font-size: var(--font-size-3xl);\n margin-bottom: var(--space-md);\n color: var(--color-text-primary);\n}\n\n.game-placeholder p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* Reveal placeholder (Story 3.6 / Epic 4 prep) */\n.reveal-placeholder {\n text-align: center;\n padding: var(--space-2xl) var(--space-lg);\n}\n\n.reveal-placeholder h1 {\n font-size: var(--font-size-4xl);\n margin-bottom: var(--space-md);\n color: var(--color-text-primary);\n}\n\n.reveal-placeholder p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* End View (Story 3.6) */\n.end-container {\n text-align: center;\n padding: var(--space-2xl) var(--space-lg);\n}\n\n.end-icon {\n font-size: var(--font-size-timer);\n margin-bottom: var(--space-md);\n}\n\n.end-container h1 {\n font-size: var(--font-size-3xl);\n margin-bottom: var(--space-sm);\n color: var(--color-text-primary);\n}\n\n.end-message {\n font-size: var(--font-size-lg);\n color: #4b5563;\n margin-bottom: var(--space-sm);\n}\n\n/* ==========================================\n Game View Styles (Story 4.2)\n ========================================== */\n\n/* Game View Container */\n.game-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n /* Edge-to-edge with minimal padding (Story 9.6) */\n padding: var(--space-sm);\n padding-bottom: max(var(--space-md), env(safe-area-inset-bottom));\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Sticky bar: Round info + Timer always visible (Issue #654) */\n.game-sticky-bar {\n position: sticky;\n top: 0;\n z-index: 50;\n width: 100%;\n padding: var(--space-xs) var(--space-sm);\n background: var(--color-bg-light);\n border-bottom: 1px solid var(--color-border-light);\n}\n\nbody.theme-dark .game-sticky-bar {\n background: var(--color-bg-primary);\n border-bottom-color: var(--color-border-dark);\n}\n\n.game-sticky-bar .timer-container {\n margin-bottom: 0;\n}\n\n.game-sticky-bar .timer {\n font-size: 2rem;\n}\n\n/* Game Header - Compact (matches lobby header pattern) */\n.game-header-compact {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-bottom: var(--space-sm);\n padding: 0 var(--space-xs);\n}\n\n.game-header-left {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.game-header-left .section-icon {\n font-size: 1rem;\n}\n\n.round-indicator-text {\n font-size: var(--font-size-sm);\n font-weight: 600;\n color: var(--color-text-white);\n}\n\n/* Steal badge styling */\n.stat-badge--steal {\n background: linear-gradient(135deg, var(--color-purple-primary), var(--color-purple-secondary, #9333ea));\n animation: steal-badge-pulse 2s ease-in-out infinite;\n}\n\n@keyframes steal-badge-pulse {\n 0%, 100% {\n box-shadow: 0 0 8px rgba(147, 51, 234, 0.5);\n }\n 50% {\n box-shadow: 0 0 12px rgba(147, 51, 234, 0.8);\n }\n}\n\n/* Last Round Banner - Inline */\n.last-round-banner {\n background: linear-gradient(135deg, var(--color-warning), var(--color-warning-dark));\n color: var(--color-text-white);\n padding: var(--space-xs) var(--space-md);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--space-sm);\n text-align: center;\n width: 100%;\n animation: pulse 2s infinite;\n}\n\n/* Intro Round Badge (Issue #23) */\n.intro-badge {\n display: inline-flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-lg);\n background: linear-gradient(135deg, #ffd700, #ff6b00);\n color: #000;\n border-radius: var(--radius-pill);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-bold);\n text-transform: uppercase;\n letter-spacing: 1px;\n animation: intro-pulse 1.5s ease-in-out infinite;\n margin-bottom: var(--space-md);\n box-shadow: 0 0 20px rgba(255, 215, 0, 0.5), 0 0 40px rgba(255, 107, 0, 0.3);\n}\n\n/* Intro Splash Overlay */\n.intro-splash {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.85);\n animation: intro-splash-in 0.3s ease-out, intro-splash-out 0.5s ease-in 1.5s forwards;\n pointer-events: none;\n}\n\n.intro-splash-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n animation: intro-splash-scale 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n.intro-splash-icon {\n font-size: 80px;\n filter: drop-shadow(0 0 30px rgba(255, 215, 0, 0.8));\n}\n\n.intro-splash-text {\n font-size: 36px;\n font-weight: 900;\n text-transform: uppercase;\n letter-spacing: 4px;\n background: linear-gradient(135deg, #ffd700, #ff6b00);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n text-shadow: none;\n}\n\n.intro-splash-hint {\n font-size: 18px;\n color: rgba(255, 255, 255, 0.7);\n letter-spacing: 1px;\n}\n\n@keyframes intro-splash-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes intro-splash-out {\n from { opacity: 1; }\n to { opacity: 0; visibility: hidden; }\n}\n\n@keyframes intro-splash-scale {\n from { transform: scale(0.5); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n.intro-badge-icon {\n font-size: var(--font-size-md);\n}\n\n.intro-badge--large {\n font-size: var(--font-size-lg);\n padding: var(--space-sm) var(--space-lg);\n margin-left: var(--space-md);\n}\n\n.intro-badge--large .intro-badge-icon {\n font-size: var(--font-size-xl);\n}\n\n.intro-badge--stopped {\n background: linear-gradient(135deg, #666, #444);\n color: var(--color-text-white);\n animation: none;\n}\n\n@keyframes intro-pulse {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.05); opacity: 0.9; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .intro-badge {\n animation: none;\n }\n}\n\n/* Issue #442: Closest Wins badge */\n.closest-wins-badge {\n background: linear-gradient(135deg, #00c6ff, #0072ff);\n box-shadow: 0 0 20px rgba(0, 198, 255, 0.5), 0 0 40px rgba(0, 114, 255, 0.3);\n}\n\n/* Issue #442: Highlight closest winner in result cards */\n.result-card.is-closest-winner {\n border: 2px solid #00c6ff;\n box-shadow: 0 0 12px rgba(0, 198, 255, 0.4);\n}\n\n.closest-winner-badge {\n margin-left: var(--space-sm);\n font-size: var(--font-size-sm);\n}\n\n/* Album Cover (compact, matches reveal size) */\n.album-cover-container {\n position: relative;\n width: 150px;\n height: 150px;\n margin-bottom: var(--space-md);\n}\n\n.album-cover {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg);\n filter: blur(20px);\n}\n\n/* Responsive album cover */\n@media (max-width: 360px) {\n .album-cover-container {\n width: 120px;\n height: 120px;\n }\n}\n\n@media (min-width: 768px) {\n .album-cover-container {\n width: 180px;\n height: 180px;\n }\n}\n\n.album-loading {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-bg-card-alt);\n border-radius: var(--radius-xl);\n}\n\n.loading-spinner {\n width: 40px;\n height: 40px;\n border: 4px solid var(--color-border-light);\n border-top-color: var(--color-accent-brand);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n/* Timer */\n.timer-container {\n margin-bottom: var(--space-lg);\n}\n\n.timer {\n font-size: var(--font-size-timer);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n font-variant-numeric: tabular-nums;\n transition: color var(--transition-normal);\n}\n\n.timer--warning {\n color: var(--color-warning);\n animation: timer-pulse-subtle 1s ease-in-out infinite;\n}\n\n.timer--critical {\n color: var(--color-error);\n animation: timer-pulse-intense 0.5s ease-in-out infinite;\n}\n\n/* Timer animations */\n@keyframes timer-pulse-subtle {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.8; }\n}\n\n@keyframes timer-pulse-intense {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.9; transform: scale(1.05); }\n}\n\n/* Reduced motion support for timer */\n@media (prefers-reduced-motion: reduce) {\n .timer--warning,\n .timer--critical {\n animation: none;\n }\n}\n\n/* Submission Tracker (Story 4.4) - Aligned with analytics style */\n.submission-tracker {\n width: 100%;\n margin-bottom: var(--space-md);\n padding: var(--space-sm);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n}\n\n/* Player Indicators Row */\n.submitted-players {\n display: flex;\n gap: var(--space-sm);\n overflow-x: auto;\n padding: var(--space-xs) 0;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none; /* Firefox */\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.submitted-players::-webkit-scrollbar {\n display: none; /* Chrome, Safari */\n}\n\n/* Player Indicator */\n.player-indicator {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 48px;\n flex-shrink: 0;\n position: relative;\n}\n\n/* Player badges for bet and steal */\n.player-badge {\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n z-index: 1;\n}\n\n/* Bet badge - upper right */\n.player-badge--bet {\n top: -2px;\n right: 2px;\n background: var(--color-warning);\n}\n\n/* Steal badge - upper left */\n.player-badge--steal {\n top: -2px;\n left: 2px;\n background: linear-gradient(135deg, var(--color-purple-primary), var(--color-purple-secondary, #9333ea));\n}\n\n.player-avatar {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--color-border-light);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n border: 2px solid transparent;\n transition: all var(--transition-normal);\n}\n\n.player-indicator.is-submitted .player-avatar {\n background: var(--color-success);\n color: var(--color-text-white);\n border-color: var(--color-success-hover);\n animation: submitted-pulse var(--transition-slow) ease-out;\n}\n\n.player-indicator.is-submitted .player-initials {\n display: none;\n}\n\n.player-indicator.is-submitted .player-avatar::after {\n content: '\u2713';\n font-size: var(--font-size-md);\n}\n\n@keyframes submitted-pulse {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.2); }\n 100% { transform: scale(1); }\n}\n\n.player-indicator .player-name {\n font-size: var(--font-size-xs);\n color: var(--color-text-muted);\n max-width: 48px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: center;\n margin-top: var(--space-xs);\n}\n\n/* Current Player Highlight */\n.player-indicator.is-current-player .player-avatar {\n border-color: var(--color-accent-brand);\n}\n\n.player-indicator.is-current-player .player-name {\n font-weight: var(--font-weight-semibold);\n color: var(--color-accent-brand);\n}\n\n/* Disconnected player indicator (Story 11.4) */\n.player-indicator--disconnected {\n opacity: 0.4;\n}\n\n/* All Submitted State */\n.submission-tracker.all-submitted {\n border-color: var(--color-success);\n background: rgba(16, 185, 129, 0.1);\n}\n\n/* Artist Challenge (Story 20.5) - Uses card-section base */\n.artist-challenge {\n width: 100%;\n}\n\n.artist-challenge .section-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n flex-wrap: wrap;\n}\n\n/* Bonus badge in header */\n.stat-badge--bonus {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 700;\n margin-left: auto;\n}\n\n/* Artist options grid */\n.artist-options-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: 1fr;\n gap: var(--space-sm);\n}\n\n@media (max-width: 320px) {\n .artist-options-grid {\n grid-template-columns: 1fr;\n }\n}\n\n.artist-option-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 72px;\n padding: var(--space-sm) var(--space-md);\n border: 2px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n color: var(--color-text);\n font-size: var(--font-size-md);\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.artist-option-btn:active {\n transform: scale(0.98);\n}\n\n.artist-option-btn.is-loading {\n animation: artistPulse 1s infinite;\n}\n\n@keyframes artistPulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n}\n\n.artist-option-btn.is-correct,\n.artist-option-btn.is-winner {\n background: var(--color-success);\n border-color: var(--color-success);\n color: white;\n}\n\n.artist-option-btn.is-winner {\n box-shadow: var(--glow-primary);\n}\n\n.artist-option-btn.is-wrong {\n animation: artistWrongFlash 0.5s ease;\n}\n\n.artist-option-btn.is-wrong.is-selected {\n background: var(--color-error);\n border-color: var(--color-error);\n color: white;\n animation: none;\n opacity: 0.8;\n}\n\n@keyframes artistWrongFlash {\n 0%, 100% { background: var(--color-surface); }\n 50% { background: rgba(239, 68, 68, 0.3); }\n}\n\n.artist-option-btn.is-disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.artist-points-badge {\n position: absolute;\n right: var(--space-sm);\n font-size: var(--font-size-sm);\n font-weight: 700;\n color: white;\n background: rgba(0, 0, 0, 0.2);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.artist-result {\n margin-top: var(--space-md);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n text-align: center;\n font-weight: 500;\n}\n\n.artist-result.is-winner {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n}\n\n.artist-result.is-late {\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n color: var(--color-text-muted);\n}\n\n/* Dark mode - artist-challenge inherits from card-section */\nbody.theme-dark .artist-option-btn {\n background: rgba(255, 255, 255, 0.05);\n border-color: var(--color-border-neon);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .artist-option-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .artist-option-btn.is-loading {\n animation: none;\n opacity: 0.7;\n }\n\n .artist-option-btn.is-wrong {\n animation: none;\n opacity: 0.5;\n }\n}\n\n/* Artist Reveal Section (Story 20.6) */\n.artist-reveal-section {\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n border-radius: var(--radius-lg);\n}\n\n/* Center the artist name and winner content, not the header */\n.artist-reveal-section .section-content-padded {\n text-align: center;\n}\n\n.artist-reveal-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: var(--space-xs);\n}\n\n.artist-reveal-name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n color: var(--color-text);\n margin-bottom: var(--space-sm);\n}\n\n.artist-reveal-winner {\n font-size: var(--font-size-md);\n padding: var(--space-xs) var(--space-md);\n border-radius: var(--radius-md);\n display: inline-block;\n}\n\n.artist-reveal-winner.is-you {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 600;\n}\n\n.artist-reveal-winner.is-other {\n color: var(--color-text-muted);\n}\n\n.artist-reveal-no-winner {\n color: var(--color-text-muted);\n font-style: italic;\n}\n\n/* Dark mode */\nbody.theme-dark .artist-reveal-section {\n background: var(--color-dark-surface-alt, #16213e);\n}\n\n/* Artist Bonus Row in Score Breakdown (Story 20.6) */\n.artist-bonus-row .result-value {\n color: var(--color-success);\n font-weight: 600;\n}\n\n/* Artist Badge on Player Cards (Story 20.6) */\n.player-card-artist-badge {\n font-size: var(--font-size-xs);\n color: var(--color-success);\n background: rgba(34, 197, 94, 0.1);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n margin-left: var(--space-xs);\n}\n\n/* ============================================\n Movie Challenge (Issue #28) - Uses card-section base\n ============================================ */\n.movie-challenge {\n width: 100%;\n}\n\n.movie-challenge .section-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n flex-wrap: wrap;\n}\n\n/* Movie options grid - 1 column default (titles are longer) */\n.movie-options-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: var(--space-sm);\n}\n\n@media (min-width: 480px) {\n .movie-options-grid {\n grid-template-columns: 1fr 1fr;\n }\n}\n\n.movie-option-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 44px;\n padding: var(--space-sm) var(--space-md);\n border: 2px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n color: var(--color-text);\n font-size: var(--font-size-md);\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n text-align: center;\n}\n\n.movie-option-btn:active {\n transform: scale(0.98);\n}\n\n.movie-option-btn.is-loading {\n animation: moviePulse 1s infinite;\n}\n\n@keyframes moviePulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n}\n\n.movie-option-btn.is-correct,\n.movie-option-btn.is-winner {\n background: var(--color-success);\n border-color: var(--color-success);\n color: white;\n}\n\n.movie-option-btn.is-winner {\n box-shadow: var(--glow-primary);\n}\n\n.movie-option-btn.is-wrong {\n animation: movieWrongFlash 0.5s ease;\n}\n\n.movie-option-btn.is-wrong.is-selected {\n background: var(--color-error);\n border-color: var(--color-error);\n color: white;\n animation: none;\n opacity: 0.8;\n}\n\n@keyframes movieWrongFlash {\n 0%, 100% { background: var(--color-surface); }\n 50% { background: rgba(239, 68, 68, 0.3); }\n}\n\n.movie-option-btn.is-disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.movie-rank-badge {\n position: absolute;\n right: var(--space-sm);\n font-size: var(--font-size-sm);\n font-weight: 700;\n color: white;\n background: rgba(0, 0, 0, 0.2);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.movie-result {\n margin-top: var(--space-md);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n text-align: center;\n font-weight: 500;\n}\n\n.movie-result.is-winner {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n}\n\n.movie-result.is-late {\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n color: var(--color-text-muted);\n}\n\n/* Dark mode - movie-challenge inherits from card-section */\nbody.theme-dark .movie-option-btn {\n background: rgba(255, 255, 255, 0.05);\n border-color: var(--color-border-neon);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .movie-option-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .movie-option-btn.is-loading {\n animation: none;\n opacity: 0.7;\n }\n\n .movie-option-btn.is-wrong {\n animation: none;\n opacity: 0.5;\n }\n}\n\n/* Movie Reveal Section (Issue #28) */\n.movie-reveal-section {\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n background: var(--color-surface-alt, rgba(255, 255, 255, 0.05));\n border-radius: var(--radius-lg);\n}\n\n.movie-reveal-section .section-content-padded {\n text-align: center;\n}\n\n.movie-reveal-name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n color: var(--color-text);\n margin-bottom: var(--space-sm);\n}\n\n.movie-reveal-winners {\n margin-top: var(--space-sm);\n}\n\n.movie-reveal-winners-title {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: var(--space-xs);\n}\n\n.movie-reveal-winner-entry {\n font-size: var(--font-size-md);\n padding: var(--space-xs) var(--space-md);\n border-radius: var(--radius-md);\n display: inline-block;\n margin: 2px 4px;\n}\n\n.movie-reveal-winner-entry.is-you {\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 600;\n}\n\n.movie-reveal-winner-entry.is-other {\n color: var(--color-text-muted);\n}\n\n.movie-reveal-no-winner {\n color: var(--color-text-muted);\n font-style: italic;\n font-size: var(--font-size-md);\n padding: var(--space-xs) var(--space-md);\n}\n\n/* Dark mode */\nbody.theme-dark .movie-reveal-section {\n background: var(--color-dark-surface-alt, #16213e);\n}\n\n/* Year Selector (Story 4.3) - Uses card-section base */\n.year-selector-section {\n width: 100%;\n /* Safe area for submit button (Story 9.6) */\n padding-bottom: max(var(--space-md), env(safe-area-inset-bottom));\n}\n\n.year-selector {\n width: 100%;\n}\n\n.year-display {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n}\n\n/* +/- buttons for precise year adjustment (Issue #662) */\n.year-adjust-btn {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n border: 2px solid var(--color-border-dark);\n background: transparent;\n color: var(--color-text-white);\n font-size: 1.5rem;\n font-weight: bold;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n -webkit-tap-highlight-color: transparent;\n touch-action: manipulation;\n user-select: none;\n flex-shrink: 0;\n}\n\n.year-adjust-btn:active {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n transform: scale(0.95);\n}\n\n.year-adjust-btn:disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n\n#selected-year {\n font-size: var(--font-size-year);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n font-variant-numeric: tabular-nums;\n}\n\n/* Slider Container */\n.slider-container {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-bottom: var(--space-lg);\n}\n\n.slider-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n min-width: 40px;\n}\n\n.slider-label--min {\n text-align: right;\n}\n\n.slider-label--max {\n text-align: left;\n}\n\n/* Custom Range Slider */\n.year-slider {\n -webkit-appearance: none;\n appearance: none;\n flex: 1;\n height: var(--space-sm);\n background: var(--color-border-light);\n border-radius: var(--radius-sm);\n outline: none;\n}\n\n.year-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 44px;\n height: 44px;\n background: var(--color-accent-brand);\n border-radius: 50%;\n cursor: pointer;\n border: 4px solid var(--color-bg-white);\n box-shadow: var(--shadow-md);\n transition: transform 0.1s ease;\n}\n\n.year-slider::-webkit-slider-thumb:active {\n transform: scale(1.1);\n}\n\n.year-slider::-moz-range-thumb {\n width: 44px;\n height: 44px;\n background: var(--color-accent-brand);\n border-radius: 50%;\n cursor: pointer;\n border: 4px solid var(--color-bg-white);\n box-shadow: var(--shadow-md);\n}\n\n/* Submit Button */\n.submit-btn {\n width: 100%;\n padding: var(--space-lg) var(--space-lg);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n background: var(--color-accent-brand);\n border: none;\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n min-height: 56px;\n}\n\n.submit-btn:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.submit-btn:active {\n transform: scale(0.98);\n}\n\n.submit-btn:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n transform: none;\n}\n\n.submit-btn.is-loading {\n color: transparent;\n position: relative;\n}\n\n.submit-btn.is-loading::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n border: 3px solid var(--color-bg-white);\n border-top-color: transparent;\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n left: 50%;\n top: 50%;\n margin-left: -12px;\n margin-top: -12px;\n}\n\n.submit-btn.is-error {\n background: var(--color-error);\n}\n\n/* Submitted Confirmation */\n.submitted-confirmation {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n background: var(--color-success);\n color: var(--color-text-white);\n border-radius: var(--radius-lg);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n}\n\n.submitted-confirmation .checkmark {\n font-size: var(--font-size-2xl);\n}\n\n/* Submitted state for slider */\n.year-selector.is-submitted .year-slider {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.year-selector.is-submitted #selected-year {\n color: var(--color-text-muted);\n}\n\n/* Responsive adjustments for Game View */\n@media (max-width: 360px) {\n .album-cover-container {\n max-width: 250px;\n }\n\n .timer {\n font-size: var(--font-size-2xl);\n }\n}\n\n@media (min-width: 768px) {\n .album-cover-container {\n max-width: 350px;\n }\n\n .timer {\n font-size: var(--font-size-hero);\n }\n}\n\n/* Tablet+ breakpoint (min-width for mobile-first) */\n@media (min-width: 768px) {\n body {\n max-width: 800px;\n margin: 0 auto;\n padding: var(--space-lg);\n }\n\n header h1 {\n font-size: var(--font-size-4xl);\n }\n\n .status-section h2,\n .card-section h2 {\n font-size: var(--font-size-lg);\n }\n\n .card-section {\n padding: var(--space-md) var(--space-lg);\n }\n}\n\n/* ============================================\n Reveal View (Story 4.6)\n ============================================ */\n\n.reveal-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--space-lg);\n width: 100%;\n margin: 0 auto;\n text-align: center;\n}\n\n/* Compact Reveal Container */\n.reveal-container--compact {\n padding: var(--space-md);\n gap: var(--space-sm);\n align-items: stretch;\n}\n\n/* Duel Reveal Container (round-reveal v2) \u2014 same stretch/padding behavior as\n --compact so every card-section has the same width. Default .reveal-container\n uses align-items:center which makes cards size to their content. */\n.reveal-container--duel {\n padding: var(--space-md);\n gap: var(--space-sm);\n align-items: stretch;\n text-align: left;\n}\n\n/* Compact Header Bar */\n.reveal-header-compact {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--space-xs) 0;\n margin-bottom: var(--space-xs);\n}\n\n.reveal-header-left {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.reveal-header-compact .section-icon {\n font-size: 1rem;\n}\n\n.reveal-header-compact .round-indicator-text {\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n}\n\n/* Song Hero - Album + Info side by side */\n.reveal-song-hero {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n padding: var(--space-sm);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n}\n\n.reveal-album-cover-compact {\n width: 80px;\n height: 80px;\n object-fit: cover;\n border-radius: var(--radius-md);\n flex-shrink: 0;\n}\n\n.reveal-song-info {\n flex: 1;\n min-width: 0;\n text-align: left;\n}\n\n.reveal-song-info .song-title {\n font-size: 1rem;\n font-weight: 600;\n color: var(--color-text-white);\n margin-bottom: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.reveal-song-info .song-artist {\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Year Section with Emotion */\n.reveal-year-section {\n text-align: center;\n padding: var(--space-sm) 0;\n}\n\n.reveal-emotion-inline {\n font-size: 1.25rem;\n font-weight: 700;\n margin-bottom: var(--space-xs);\n animation: reveal-emotion-entrance 0.5s ease-out;\n}\n\n.reveal-year-section .correct-year-label {\n font-size: 0.75rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-xs);\n}\n\n.reveal-year-section .correct-year {\n font-size: 3rem;\n}\n\n/* Personal Result - Compact */\n.personal-result-compact {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: rgba(0, 245, 255, 0.1);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n}\n\n.result-content-inline {\n font-size: 0.875rem;\n color: var(--color-text-white);\n}\n\n/* Artist Reveal - Compact */\n.artist-reveal-compact {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n}\n\n.artist-reveal-icon {\n font-size: 1rem;\n}\n\n.artist-reveal-name-inline {\n font-weight: 600;\n color: var(--color-accent-secondary);\n}\n\n.artist-reveal-winner-inline {\n font-size: 0.75rem;\n color: var(--color-text-neon-muted);\n}\n\n.artist-reveal-winner-inline::before {\n content: \"\u2022\";\n margin-right: var(--space-xs);\n}\n\n/* Fun Fact Card Section */\n.fun-fact-section {\n text-align: left;\n}\n\n.fun-fact-section .fun-fact-text {\n font-size: 0.875rem;\n color: var(--color-text-white);\n line-height: 1.5;\n margin-bottom: var(--space-sm);\n}\n\n.fun-fact-section .song-rich-info {\n font-size: 0.75rem;\n color: var(--color-text-neon-muted);\n}\n\n/* Consistent section content padding */\n.section-content-padded {\n padding: 0 var(--space-md) var(--space-md);\n}\n\n/* Remove side padding when inside card-section (card already has padding) */\n.card-section .section-content-padded {\n padding: 0 0 var(--space-sm);\n}\n\n/* All Guesses Card Section */\n.guesses-section {\n text-align: left;\n}\n\n.reveal-results-grid {\n width: 100%;\n}\n\n/* Personal Result Card Section */\n.personal-result-section {\n text-align: left;\n}\n\n.personal-result-section .result-row {\n display: flex;\n justify-content: space-between;\n padding: var(--space-xs) 0;\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n.personal-result-section .result-row:last-child {\n border-bottom: none;\n}\n\n/* Artist Reveal Card Section */\n.artist-reveal-section {\n text-align: left;\n}\n\n.artist-reveal-section .artist-reveal-name {\n font-size: 1.25rem;\n font-weight: 700;\n color: var(--color-accent-secondary);\n margin-bottom: var(--space-xs);\n}\n\n.artist-reveal-section .artist-reveal-winner {\n font-size: 0.875rem;\n color: var(--color-text-neon-muted);\n}\n\n/* Round Analytics Card Section */\n.round-analytics-section {\n width: 100%;\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n overflow: hidden;\n text-align: left;\n}\n\n.round-analytics-section .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.round-analytics-section .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.round-analytics-section .section-header-collapsible .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.1);\n padding: 2px 8px;\n border-radius: var(--radius-sm);\n}\n\n.round-analytics-section .section-header-collapsible .section-toggle {\n margin-left: var(--space-sm);\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n}\n\n.round-analytics-section .section-content {\n padding: 0 var(--space-md) var(--space-sm);\n}\n\n.round-analytics-section.collapsed .section-content {\n display: none;\n}\n\n.round-analytics-section:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n/* Legacy styles preserved */\n.reveal-round-info {\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n margin-bottom: var(--space-md);\n}\n\n/* Album Cover (smaller for reveal) - legacy */\n.reveal-album {\n margin-bottom: var(--space-lg);\n}\n\n.reveal-album-cover {\n width: 150px;\n height: 150px;\n object-fit: cover;\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg);\n}\n\n/* Correct Year */\n.correct-year-container {\n margin-bottom: var(--space-md);\n}\n\n.correct-year-label {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.correct-year {\n font-size: var(--font-size-hero);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-success);\n font-variant-numeric: tabular-nums;\n animation: reveal-pop var(--transition-slow) ease-out;\n}\n\n@keyframes reveal-pop {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 70% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n/* Song Info */\n.song-info {\n margin-bottom: var(--space-md);\n}\n\n.song-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n}\n\n.song-artist {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n}\n\n/* Fun Fact + Rich Song Info Container */\n.fun-fact-container {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n background: var(--color-warning-light);\n padding: var(--space-md);\n border-radius: var(--radius-lg);\n margin-bottom: var(--space-lg);\n text-align: left;\n max-width: 100%;\n}\n\n.fun-fact-header {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n}\n\n.fun-fact-icon {\n font-size: var(--font-size-xl);\n flex-shrink: 0;\n}\n\n.fun-fact-text {\n font-size: var(--font-size-base);\n color: #92400e;\n line-height: 1.4;\n}\n\n/* Hide fun fact header when no fun fact text */\n.fun-fact-header:empty,\n.fun-fact-text:empty {\n display: none;\n}\n\n/* ============================================\n Rich Song Info (Story 14.3) - inside fun fact box\n ============================================ */\n\n.song-rich-info {\n text-align: left;\n}\n\n.song-rich-info:empty {\n display: none;\n}\n\n/* ============================================\n Song Info Badges - Unified Design\n All badges centered with consistent styling\n ============================================ */\n\n/* Shared badge container - centers all badge rows */\n.song-badges-row {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 1px solid rgba(120, 53, 15, 0.15);\n}\n\n.song-badges-row:first-child {\n border-top: none;\n padding-top: 0;\n}\n\n/* Base badge style - shared by all badge types */\n.song-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n border-radius: 20px;\n border: 1px solid;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n white-space: nowrap;\n}\n\n.song-badge-icon {\n font-size: 14px;\n line-height: 1;\n}\n\n/* Chart position badge - blue theme */\n.song-badge--chart {\n background: linear-gradient(135deg, #dbeafe, #bfdbfe);\n color: #1e40af;\n border-color: #93c5fd;\n}\n\n.song-badge--chart .chart-weeks {\n font-weight: normal;\n opacity: 0.8;\n font-size: 11px;\n}\n\n/* Certification badges */\n.song-badge--platinum {\n background: linear-gradient(135deg, #f1f5f9, #e2e8f0);\n color: #475569;\n border-color: #cbd5e1;\n}\n\n.song-badge--gold {\n background: linear-gradient(135deg, #fef3c7, #fde68a);\n color: #92400e;\n border-color: #fcd34d;\n}\n\n.song-badge--diamond {\n background: linear-gradient(135deg, #e0f2fe, #bae6fd);\n color: #0369a1;\n border-color: #7dd3fc;\n}\n\n/* Award badges - warm orange/amber theme */\n.song-badge--award {\n background: linear-gradient(135deg, #ffedd5, #fed7aa);\n color: #9a3412;\n border-color: #fdba74;\n}\n\n/* Special award variants */\n.song-badge--grammy {\n background: linear-gradient(135deg, #fef3c7, #fde68a);\n color: #78350f;\n border-color: #f59e0b;\n}\n\n.song-badge--eurovision {\n background: linear-gradient(135deg, #ede9fe, #ddd6fe);\n color: #5b21b6;\n border-color: #a78bfa;\n}\n\n.song-badge--oscar,\n.song-badge--academy {\n background: linear-gradient(135deg, #fef3c7, #fde68a);\n color: #78350f;\n border-color: #f59e0b;\n}\n\n.song-badge--halloffame {\n background: linear-gradient(135deg, #dbeafe, #bfdbfe);\n color: #1e40af;\n border-color: #60a5fa;\n}\n\n/* More awards indicator */\n.song-badges-more {\n font-size: var(--font-size-xs);\n color: #78350f;\n font-style: italic;\n opacity: 0.8;\n}\n\n/* ============================================\n Song Difficulty Rating (Story 15.1)\n ============================================ */\n\n.song-difficulty {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n justify-content: center;\n margin-top: var(--space-sm);\n opacity: 0;\n animation: fadeIn 0.5s ease-out forwards;\n animation-delay: 0.3s;\n}\n\n.difficulty-stars {\n font-size: 1.2rem;\n letter-spacing: 0.1em;\n}\n\n/* Easy (1-star): green glow */\n.difficulty-1 {\n color: var(--color-success-neon);\n text-shadow: 0 0 10px var(--color-success-neon);\n}\n\n/* Medium (2-star): yellow */\n.difficulty-2 {\n color: var(--color-warning);\n text-shadow: 0 0 10px var(--color-warning);\n}\n\n/* Hard (3-star): orange */\n.difficulty-3 {\n color: var(--color-warning-alt);\n text-shadow: 0 0 10px var(--color-warning-alt);\n}\n\n/* Extreme (4-star): red/pink neon */\n.difficulty-4 {\n color: var(--color-accent-primary);\n text-shadow: 0 0 10px var(--color-accent-primary);\n}\n\n.difficulty-label {\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: var(--font-size-sm);\n}\n\n.difficulty-accuracy {\n font-size: 0.85em;\n opacity: 0.7;\n}\n\n/* ============================================\n Superlatives / Fun Awards (Story 15.2)\n ============================================ */\n\n.superlatives-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--space-md);\n margin: var(--space-lg) 0;\n padding: 0 var(--space-md);\n}\n\n.superlative-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--space-md);\n min-width: 120px;\n max-width: 160px;\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.1);\n opacity: 0;\n animation: superlativeSlideIn 0.5s ease-out forwards;\n}\n\n@keyframes superlativeSlideIn {\n from {\n opacity: 0;\n transform: translateY(20px) scale(0.9);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n.superlative-emoji {\n font-size: 2rem;\n margin-bottom: var(--space-xs);\n}\n\n.superlative-title {\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: var(--font-size-xs);\n color: var(--color-accent-secondary);\n text-align: center;\n margin-bottom: var(--space-xs);\n}\n\n.superlative-player {\n font-weight: bold;\n font-size: var(--font-size-base);\n color: var(--color-dark-text-primary);\n text-align: center;\n margin-bottom: var(--space-xs);\n}\n\n.superlative-value {\n font-size: var(--font-size-sm);\n color: var(--color-dark-text-secondary);\n text-align: center;\n}\n\n/* Card-specific accent colors */\n.superlative-card--speed_demon {\n border-color: var(--color-warning);\n box-shadow: 0 0 15px rgba(245, 158, 11, 0.2);\n}\n\n.superlative-card--lucky_streak {\n border-color: var(--color-error);\n box-shadow: 0 0 15px rgba(239, 68, 68, 0.2);\n}\n\n.superlative-card--risk_taker {\n border-color: var(--color-purple-primary);\n box-shadow: 0 0 15px rgba(139, 92, 246, 0.2);\n}\n\n.superlative-card--clutch_player {\n border-color: var(--color-success-neon);\n box-shadow: 0 0 15px rgba(57, 255, 20, 0.2);\n}\n\n.superlative-card--close_calls {\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 15px rgba(0, 245, 255, 0.2);\n}\n\n/* ============================================\n Game Highlights Reel (Issue #75)\n ============================================ */\n\n.highlights-container {\n width: 100%;\n margin-top: var(--space-lg);\n margin-bottom: var(--space-lg);\n}\n\n.highlights-header {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n text-align: center;\n margin-bottom: var(--space-md);\n}\n\n.highlights-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n.highlight-card {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.1);\n opacity: 0;\n animation: highlightFadeIn 0.5s ease-out forwards;\n}\n\n@keyframes highlightFadeIn {\n from {\n opacity: 0;\n transform: translateX(-20px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n.highlight-emoji {\n font-size: 1.8rem;\n flex-shrink: 0;\n width: 48px;\n text-align: center;\n}\n\n.highlight-content {\n flex: 1;\n min-width: 0;\n}\n\n.highlight-text {\n font-size: var(--font-size-base);\n color: var(--color-dark-text-primary);\n line-height: 1.4;\n}\n\n.highlight-round {\n font-size: var(--font-size-xs);\n color: var(--color-dark-text-secondary);\n margin-top: var(--space-xs);\n}\n\n/* Mobile responsive */\n@media (max-width: 480px) {\n .highlight-card {\n padding: var(--space-sm);\n gap: var(--space-sm);\n }\n\n .highlight-emoji {\n font-size: 1.4rem;\n width: 36px;\n }\n\n .highlight-text {\n font-size: var(--font-size-sm);\n }\n}\n\n/* ============================================\n Round Analytics (Story 13.3)\n ============================================ */\n\n.round-analytics {\n width: 100%;\n margin-top: var(--space-lg);\n margin-bottom: var(--space-lg);\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border-radius: var(--radius-lg);\n text-align: center;\n}\n\n.analytics-title {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n margin-bottom: var(--space-md);\n}\n\n/* Analytics stats - single row layout */\n.analytics-stats-row {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: var(--space-lg);\n margin-bottom: var(--space-xs);\n}\n\n.stat-primary {\n text-align: left;\n}\n\n.stat-primary .stat-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n display: block;\n margin-bottom: var(--space-xs);\n}\n\n.stat-primary .stat-value {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-secondary);\n}\n\n.stat-secondary {\n text-align: right;\n}\n\n.stat-secondary .stat-value {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-success);\n}\n\n.stat-secondary .stat-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n display: block;\n}\n\n.stat-comparison-line {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-md);\n}\n\n/* Histogram */\n.analytics-histogram {\n margin-bottom: var(--space-lg);\n}\n\n.histogram-title {\n font-size: var(--font-size-base);\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-sm);\n}\n\n/* #1178: per-player dot-axis (replaces aggregated histogram on phone reveal).\n Each player's guess is a colored dot at the exact year on a horizontal axis;\n the correct year is marked by a vertical cyan line. */\n.dotaxis-wrap {\n margin: 14px 0 16px;\n}\n.dotaxis-axis {\n position: relative;\n height: 88px;\n margin: 0 14px;\n}\n.dotaxis-line {\n position: absolute;\n left: 0; right: 0;\n top: 52px;\n height: 2px;\n background: rgba(255, 255, 255, 0.12);\n border-radius: 2px;\n}\n.dotaxis-tick {\n position: absolute;\n top: 48px;\n width: 1px;\n height: 10px;\n background: rgba(255, 255, 255, 0.18);\n}\n.dotaxis-tick-label {\n position: absolute;\n top: 64px;\n font-size: 9px;\n color: rgba(255, 255, 255, 0.5);\n transform: translateX(-50%);\n letter-spacing: 0.3px;\n font-weight: 500;\n}\n.dotaxis-marker {\n position: absolute;\n top: 4px;\n bottom: 18px;\n width: 2px;\n background: linear-gradient(180deg, transparent, var(--color-cyan, #00d4ff) 30%, var(--color-cyan, #00d4ff) 80%, transparent);\n box-shadow: 0 0 8px var(--color-cyan, #00d4ff), 0 0 16px rgba(0, 212, 255, 0.6);\n}\n.dotaxis-marker-label {\n position: absolute;\n top: -4px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--color-cyan, #00d4ff);\n color: #0a0a0e;\n font-family: var(--font-family-display, 'Outfit', sans-serif);\n font-weight: 900;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n box-shadow: 0 0 14px rgba(0, 212, 255, 0.6);\n white-space: nowrap;\n}\n.dotaxis-dot {\n position: absolute;\n top: 39px;\n width: 26px;\n height: 26px;\n border-radius: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-family-display, 'Outfit', sans-serif);\n font-weight: 900;\n font-size: 12px;\n color: #fff;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 4px 10px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n.dotaxis-dot--c1 { background: linear-gradient(135deg, #ff6ec7, #d846a7); }\n.dotaxis-dot--c2 { background: linear-gradient(135deg, #6e3bff, #4a25c8); }\n.dotaxis-dot--c3 { background: linear-gradient(135deg, #ffd60a, #e6b800); color: #1a1a22; text-shadow: none; }\n.dotaxis-dot--c4 { background: linear-gradient(135deg, #00d4ff, #008abf); }\n.dotaxis-dot--correct {\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 0 18px currentColor, 0 4px 10px rgba(0, 0, 0, 0.4);\n}\n.dotaxis-dot--me {\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 0 0 5px rgba(255, 159, 67, 0.6), 0 4px 10px rgba(0, 0, 0, 0.4);\n}\n.dotaxis-dot--correct.dotaxis-dot--me {\n box-shadow: 0 0 0 3px var(--color-bg-primary, #0d0d12), 0 0 0 5px rgba(255, 159, 67, 0.6), 0 0 22px currentColor, 0 4px 10px rgba(0, 0, 0, 0.4);\n}\n.dotaxis-score {\n position: absolute;\n top: 12px;\n transform: translateX(-50%);\n font-family: var(--font-family-display, 'Outfit', sans-serif);\n font-weight: 800;\n font-size: 11px;\n padding: 2px 6px;\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.08);\n white-space: nowrap;\n}\n.dotaxis-score--pos {\n background: rgba(0, 212, 255, 0.18);\n color: var(--color-cyan, #00d4ff);\n}\n.dotaxis-score--zero {\n color: rgba(255, 255, 255, 0.35);\n}\n.dotaxis-legend {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 8px 14px;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.75);\n margin-top: 4px;\n}\n.dotaxis-legend-entry {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.dotaxis-legend-dot {\n display: inline-block;\n width: 11px;\n height: 11px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.dotaxis-legend-medal {\n font-size: 13px;\n line-height: 1;\n}\n.dotaxis-legend-me {\n color: rgba(255, 159, 67, 1);\n font-weight: 700;\n font-size: 10px;\n margin-left: 2px;\n letter-spacing: 0.3px;\n}\n\n.histogram-bars {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n height: 120px;\n gap: var(--space-xs);\n padding: 0 var(--space-xs);\n}\n\n.histogram-bar-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n animation: histogram-fade-in 0.3s ease forwards;\n opacity: 0;\n}\n\n.histogram-bar {\n width: 100%;\n max-width: 40px;\n background: linear-gradient(180deg, var(--color-accent-primary), var(--color-accent-brand));\n border-radius: var(--radius-sm) var(--radius-sm) 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n transition: height 0.5s ease;\n min-height: 0;\n}\n\n.histogram-bar.is-correct {\n background: linear-gradient(180deg, var(--color-success-neon), var(--color-success));\n box-shadow: var(--glow-success);\n}\n\n.bar-count {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-white);\n padding-top: var(--space-xs);\n}\n\n.histogram-label {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: var(--space-xs);\n}\n\n@keyframes histogram-fade-in {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Achievements */\n.analytics-achievements {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n text-align: left;\n}\n\n.achievement-item {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-size: var(--font-size-sm);\n color: var(--color-text-white);\n}\n\n.achievement-emoji {\n font-size: var(--font-size-lg);\n}\n\n.achievement-label {\n color: var(--color-text-neon-muted);\n}\n\n.achievement-names {\n font-weight: var(--font-weight-semibold);\n}\n\n.achievement-value {\n color: var(--color-text-neon-muted);\n}\n\n/* Empty state */\n.analytics-empty {\n text-align: center;\n color: var(--color-text-neon-muted);\n padding: var(--space-lg);\n font-style: italic;\n}\n\n/* Reduced motion support (AC6) */\n@media (prefers-reduced-motion: reduce) {\n .histogram-bar-wrapper {\n animation: none;\n opacity: 1;\n }\n\n .histogram-bar {\n transition: none;\n }\n}\n\n/* Reveal Emotion (Story 9.4) */\n.reveal-emotion {\n text-align: center;\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n margin-bottom: var(--space-md);\n animation: reveal-emotion-entrance 0.5s ease-out;\n}\n\n.reveal-emotion--exact {\n color: var(--color-success);\n text-shadow: 0 0 20px var(--color-success);\n}\n\n.reveal-emotion--close {\n color: var(--color-warning);\n animation: reveal-emotion-entrance 0.5s ease-out, reveal-shake 0.5s ease-in-out 0.5s;\n}\n\n.reveal-emotion--wrong {\n color: var(--color-text-muted);\n}\n\n.reveal-emotion--missed {\n color: var(--color-text-muted);\n opacity: 0.7;\n}\n\n.reveal-emotion-subtitle {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n margin-top: var(--space-xs);\n opacity: 0.8;\n}\n\n@keyframes reveal-emotion-entrance {\n 0% { opacity: 0; transform: scale(0.8); }\n 50% { transform: scale(1.1); }\n 100% { opacity: 1; transform: scale(1); }\n}\n\n@keyframes reveal-shake {\n 0%, 100% { transform: translateX(0); }\n 20%, 60% { transform: translateX(-5px); }\n 40%, 80% { transform: translateX(5px); }\n}\n\n/* Confetti Canvas (Story 9.4, Story 14.5) */\n.confetti-canvas {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: var(--z-modal);\n}\n\n/* canvas-confetti library creates canvas dynamically at body level - ensure non-blocking (AC6) */\n/* M2 fix: Scoped to body > canvas to avoid affecting other fixed canvases */\nbody > canvas[style*=\"position: fixed\"] {\n pointer-events: none !important;\n}\n\n/* Score breakdown fade-in delay (Story 9.4) */\n.personal-result.is-delayed {\n opacity: 0;\n animation: fade-in-delay 0.5s ease-out 1s forwards;\n}\n\n@keyframes fade-in-delay {\n to { opacity: 1; }\n}\n\n/* Reduced motion support for reveal */\n@media (prefers-reduced-motion: reduce) {\n .reveal-emotion,\n .reveal-emotion--close {\n animation: none;\n }\n .personal-result.is-delayed {\n opacity: 1;\n animation: none;\n }\n}\n\n/* Personal Result */\n.personal-result {\n width: 100%;\n background: var(--color-bg-card-alt);\n padding: var(--space-md);\n border-radius: var(--radius-lg);\n margin-bottom: var(--space-lg);\n}\n\n.result-header {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.result-content {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n.result-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.result-label {\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n}\n\n.result-value {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.result-value.is-exact {\n color: var(--color-success);\n}\n\n.result-value.is-close {\n color: var(--color-warning);\n}\n\n.result-value.is-far {\n color: var(--color-error);\n}\n\n/* Speed bonus indicator (Story 5.1) */\n.result-value.is-bonus {\n color: var(--color-warning);\n font-weight: var(--font-weight-bold);\n}\n\n.result-score {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-brand);\n margin-top: var(--space-sm);\n}\n\n.result-missed {\n font-size: var(--font-size-md);\n color: var(--color-error);\n font-weight: var(--font-weight-semibold);\n}\n\n/* Streak bonus styling (Story 5.2) */\n.result-value.is-streak {\n color: var(--color-error);\n font-weight: var(--font-weight-bold);\n}\n\n.streak-bonus-row {\n background: linear-gradient(90deg, var(--color-warning-light), #fde68a);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n margin: var(--space-sm) 0;\n color: #1a1a1a;\n}\n\n.result-total {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-success);\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 2px dashed var(--color-border-light);\n}\n\n/* Leaderboard streak indicator (Story 5.2) */\n.streak-indicator {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n font-size: var(--font-size-sm);\n color: var(--color-warning);\n font-weight: var(--font-weight-semibold);\n}\n\n.streak-indicator::before {\n content: \"\\01F525\";\n}\n\n/* Bet toggle (Story 5.3) */\n.bet-container {\n margin-bottom: var(--space-md);\n /* Fix Safari desktop click issue - establish stacking context */\n position: relative;\n z-index: 1;\n}\n\n.bet-toggle {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-xl);\n background: var(--color-bg-card-alt);\n border: 2px solid var(--color-border-medium);\n border-radius: var(--radius-lg);\n cursor: pointer;\n /* Fix Safari: use specific properties instead of 'all' */\n transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n width: 100%;\n justify-content: center;\n /* Fix Safari desktop click handling */\n -webkit-tap-highlight-color: transparent;\n -webkit-user-select: none;\n user-select: none;\n touch-action: manipulation;\n}\n\n.bet-toggle:hover {\n border-color: var(--color-text-light);\n}\n\n.bet-toggle.is-active {\n background: var(--color-warning-light);\n border-color: var(--color-warning);\n color: #92400e;\n}\n\n.bet-toggle.is-active .bet-icon {\n animation: dice-shake var(--transition-slow) ease;\n}\n\n@keyframes dice-shake {\n 0%, 100% { transform: rotate(0deg); }\n 25% { transform: rotate(-10deg); }\n 75% { transform: rotate(10deg); }\n}\n\n/* Dark theme bet toggle (Story 9.10) */\nbody.theme-dark .bet-toggle {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: var(--color-text-white);\n}\n\nbody.theme-dark .bet-toggle.is-active {\n background: var(--color-warning);\n border-color: var(--color-warning);\n color: var(--color-text-primary);\n}\n\n/* Bet outcomes */\n.bet-won-row {\n background: linear-gradient(90deg, var(--color-success-light), #a7f3d0);\n padding: var(--space-sm) var(--space-sm);\n border-radius: var(--radius-md);\n margin: var(--space-sm) 0;\n}\n\n/* Bet rows have light backgrounds - need dark text even in dark mode */\n.bet-won-row .result-label,\nbody.theme-dark .bet-won-row .result-label {\n color: #166534;\n}\n\n.result-value.is-bet-won,\nbody.theme-dark .result-value.is-bet-won {\n color: #166534;\n font-weight: var(--font-weight-bold);\n}\n\n.bet-lost-row {\n background: linear-gradient(90deg, var(--color-error-light), #fecaca);\n padding: var(--space-sm) var(--space-sm);\n border-radius: var(--radius-md);\n margin: var(--space-sm) 0;\n}\n\n/* Bet rows have light backgrounds - need dark text even in dark mode */\n.bet-lost-row .result-label,\nbody.theme-dark .bet-lost-row .result-label {\n color: #991b1b;\n}\n\n.result-value.is-bet-lost,\nbody.theme-dark .result-value.is-bet-lost {\n color: #991b1b;\n font-weight: var(--font-weight-bold);\n}\n\n/* Missed round styling (Story 5.4) */\n.result-missed-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n}\n\n.result-missed-icon {\n font-size: var(--font-size-2xl);\n}\n\n.result-missed-text {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n}\n\n.streak-broken {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-error-light);\n border-radius: var(--radius-md);\n}\n\n.streak-broken-icon {\n font-size: var(--font-size-xl);\n}\n\n.streak-broken-text {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-error-dark);\n}\n\n/* Streak-Shield (#1666) \u2014 the counterpart to .streak-broken above. Same\n shape on purpose: both explain what just happened to a streak, so they\n should read as one pair rather than two unrelated notices. Success colours\n because the run survived. */\n.streak-shield-used {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-success-light);\n border-radius: var(--radius-md);\n}\n\n.streak-shield-icon {\n font-size: var(--font-size-xl);\n}\n\n.streak-shield-text {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-success-hover);\n}\n\n.result-score.is-zero {\n color: var(--color-text-light);\n font-size: var(--font-size-2xl);\n}\n\n/* ============================================\n Leaderboard (Story 5.5)\n ============================================ */\n\n/* Game view leaderboard - uses collapsible section pattern */\n.leaderboard-section {\n width: 100%;\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.leaderboard-section .section-header-collapsible {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: none;\n color: var(--color-text-white);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n text-align: left;\n}\n\n.leaderboard-section .section-header-collapsible .section-icon {\n font-size: 1rem;\n}\n\n.leaderboard-section .section-header-collapsible .section-summary {\n margin-left: auto;\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.1);\n padding: 2px 8px;\n border-radius: var(--radius-sm);\n}\n\n.leaderboard-section .section-header-collapsible .section-toggle {\n margin-left: var(--space-sm);\n font-size: 0.625rem;\n color: var(--color-text-neon-muted);\n transition: transform 0.2s ease;\n}\n\n.leaderboard-section .section-content {\n padding: 0;\n}\n\n.leaderboard-section .leaderboard-list {\n max-height: 200px;\n overflow-y: auto;\n}\n\n.leaderboard-section.collapsed .section-content {\n display: none;\n}\n\n.leaderboard-section:not(.collapsed) .section-toggle {\n transform: rotate(180deg);\n}\n\n/* Leaderboard container (legacy) */\n.leaderboard {\n background: var(--color-bg-white);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md);\n overflow: hidden;\n width: 100%;\n margin-bottom: var(--space-md);\n}\n\n.leaderboard.is-compact .leaderboard-list {\n max-height: 120px;\n}\n\n.leaderboard.is-expanded .leaderboard-list {\n max-height: 400px;\n}\n\n.leaderboard.is-prominent {\n margin-top: var(--space-md);\n}\n\n.leaderboard.is-prominent .leaderboard-list {\n max-height: 280px;\n}\n\n.leaderboard-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-card-alt);\n border-bottom: 1px solid var(--color-border-light);\n}\n\n.leaderboard-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-secondary);\n}\n\n.leaderboard-toggle {\n background: none;\n border: none;\n cursor: pointer;\n padding: var(--space-xs);\n min-width: auto;\n min-height: auto;\n color: var(--color-text-muted);\n}\n\n.leaderboard-list {\n max-height: 200px;\n overflow-y: auto;\n /* Story 18.1: CSS containment for scroll performance (layout style paint, not strict/size) */\n contain: layout style paint;\n will-change: transform;\n}\n\n/* Story 18.1: Spacer elements for lazy loading virtual scroll */\n.leaderboard-spacer-top,\n.leaderboard-spacer-bottom {\n flex-shrink: 0;\n pointer-events: none;\n}\n\n/* Story 18.1: Sentinel elements for IntersectionObserver */\n.leaderboard-sentinel {\n flex-shrink: 0;\n pointer-events: none;\n visibility: hidden;\n}\n\n/* Leaderboard entries */\n.leaderboard-entry {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: 10px var(--space-md);\n border-bottom: 1px solid var(--color-bg-card-alt);\n transition: background var(--transition-fast);\n /* Story 18.1: CSS containment for layout isolation */\n contain: content;\n height: 48px;\n box-sizing: border-box;\n}\n\n.leaderboard-entry:last-child {\n border-bottom: none;\n}\n\n.leaderboard-entry.is-current {\n background: #eff6ff;\n border-left: 3px solid var(--color-accent-blue);\n}\n\n/* Top 3 styling */\n.leaderboard-entry.is-top-1 {\n background: linear-gradient(90deg, var(--color-warning-light), #fde68a);\n}\n\n.leaderboard-entry.is-top-1 .entry-rank {\n color: #b45309;\n font-weight: var(--font-weight-bold);\n}\n\n.leaderboard-entry.is-top-2 {\n background: linear-gradient(90deg, var(--color-bg-card-alt), var(--color-border-light));\n}\n\n.leaderboard-entry.is-top-2 .entry-rank {\n color: var(--color-text-muted);\n font-weight: var(--font-weight-bold);\n}\n\n.leaderboard-entry.is-top-3 {\n background: linear-gradient(90deg, #fed7aa, #fdba74);\n}\n\n.leaderboard-entry.is-top-3 .entry-rank {\n color: #c2410c;\n font-weight: var(--font-weight-bold);\n}\n\n.entry-rank {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n min-width: 28px;\n}\n\n.entry-name {\n flex: 1;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.entry-meta {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n\n.entry-score {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-brand);\n min-width: 40px;\n text-align: right;\n}\n\n/* Rank change indicators */\n.rank-up {\n font-size: var(--font-size-xs);\n color: var(--color-success);\n font-weight: var(--font-weight-semibold);\n}\n\n.rank-down {\n font-size: var(--font-size-xs);\n color: var(--color-error);\n font-weight: var(--font-weight-semibold);\n}\n\n/* Rank change animations (Story 9.5) */\n.leaderboard-entry--climbing {\n animation: leaderboard-climb 400ms ease-out;\n}\n\n.leaderboard-entry--falling {\n animation: leaderboard-fall 400ms ease-out;\n}\n\n/* Disconnected player in leaderboard (Story 11.4) */\n.leaderboard-entry--disconnected {\n opacity: 0.5;\n transition: opacity 0.3s ease;\n}\n\n@keyframes leaderboard-climb {\n 0% { transform: translateY(10px); opacity: 0.7; background: rgba(0, 255, 136, 0.2); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\n@keyframes leaderboard-fall {\n 0% { transform: translateY(-10px); opacity: 0.7; background: rgba(255, 0, 64, 0.2); }\n 100% { transform: translateY(0); opacity: 1; background: transparent; }\n}\n\n/* Streak indicators (Story 9.5) */\n.streak-indicator {\n font-size: var(--font-size-xs);\n color: var(--color-warning);\n}\n\n.streak-indicator--hot {\n text-shadow: 0 0 8px var(--color-warning);\n animation: streak-pulse 1s ease-in-out infinite;\n}\n\n@keyframes streak-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.7; }\n}\n\n/* Leaderboard separator (Story 9.5) */\n.leaderboard-separator {\n text-align: center;\n padding: var(--space-xs) var(--space-md);\n color: var(--color-text-muted);\n font-size: var(--font-size-sm);\n border-bottom: 1px solid var(--color-bg-card-alt);\n}\n\n/* Reduced motion support for leaderboard */\n@media (prefers-reduced-motion: reduce) {\n .leaderboard-entry--climbing,\n .leaderboard-entry--falling {\n animation: none;\n }\n .streak-indicator--hot {\n animation: none;\n }\n}\n\n/* Quick you indicator */\n.leaderboard-you {\n position: sticky;\n bottom: 0;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-accent-blue);\n color: var(--color-text-white);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n text-align: center;\n}\n\n/* ============================================\n Final Leaderboard / End View (Story 5.6)\n ============================================ */\n\n/* End view container */\n.end-container {\n padding: var(--space-lg);\n max-width: 480px;\n margin: 0 auto;\n text-align: center;\n}\n\n.end-header {\n margin-bottom: var(--space-lg);\n}\n\n.end-title {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-sm);\n}\n\n.end-subtitle {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin: 0;\n}\n\n/* Podium */\n.podium {\n display: flex;\n justify-content: center;\n align-items: flex-end;\n gap: var(--space-sm);\n margin-bottom: var(--space-xl);\n}\n\n.podium-place {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100px;\n}\n\n.podium-medal {\n font-size: var(--font-size-4xl);\n margin-bottom: var(--space-sm);\n}\n\n.podium-name {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.podium-score {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.podium-stand {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-text-white);\n border-radius: var(--radius-md) var(--radius-md) 0 0;\n}\n\n.podium-1 .podium-stand {\n height: 80px;\n background: linear-gradient(180deg, #fbbf24, var(--color-warning-dark));\n}\n\n.podium-2 .podium-stand {\n height: 60px;\n background: linear-gradient(180deg, var(--color-text-light), var(--color-text-muted));\n}\n\n.podium-3 .podium-stand {\n height: 40px;\n background: linear-gradient(180deg, #fb923c, #c2410c);\n}\n\n/* Your result */\n.your-result {\n background: #eff6ff;\n border-radius: var(--radius-xl);\n padding: var(--space-lg);\n margin-bottom: var(--space-lg);\n}\n\n.your-result-header {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-accent-blue);\n margin-bottom: var(--space-sm);\n}\n\n.your-result-rank {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-extrabold);\n color: var(--color-text-primary);\n}\n\n.your-result-score {\n font-size: var(--font-size-lg);\n color: var(--color-text-muted);\n margin-bottom: var(--space-md);\n}\n\n.your-result-stats {\n display: flex;\n justify-content: center;\n gap: var(--space-lg);\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.stat-value {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-accent-brand);\n}\n\n.stat-label {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n/* Final leaderboard */\n.final-leaderboard {\n background: var(--color-bg-white);\n border-radius: var(--radius-lg);\n overflow: hidden;\n margin-bottom: var(--space-lg);\n box-shadow: var(--shadow-md);\n}\n\n.final-leaderboard-header {\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-card-alt);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-secondary);\n text-align: left;\n}\n\n.final-leaderboard-list {\n max-height: 200px;\n overflow-y: auto;\n}\n\n.final-entry {\n display: flex;\n align-items: center;\n padding: 10px var(--space-md);\n border-bottom: 1px solid var(--color-bg-card-alt);\n}\n\n.final-entry:last-child {\n border-bottom: none;\n}\n\n.final-entry.is-current {\n background: #eff6ff;\n}\n\n/* Disconnected player in final leaderboard (Story 11.4) */\n.final-entry--disconnected {\n opacity: 0.5;\n}\n\n.final-rank {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-muted);\n width: 32px;\n}\n\n.final-name {\n flex: 1;\n font-size: var(--font-size-base);\n color: var(--color-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.final-score {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-accent-brand);\n}\n\n/* Admin controls for end */\n.end-admin-controls {\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.new-game-btn {\n width: 100%;\n padding: var(--space-md) var(--space-xl);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n background: var(--color-success);\n border: none;\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: background var(--transition-fast);\n min-width: auto;\n min-height: auto;\n}\n\n.new-game-btn:hover {\n background: var(--color-success-hover);\n}\n\n.new-game-btn:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n}\n\n/* Player message */\n.end-player-message {\n color: var(--color-text-muted);\n}\n\n.end-player-message p {\n margin: 0 0 var(--space-sm) 0;\n}\n\n.end-hint {\n font-size: var(--font-size-base);\n}\n\n.rejoin-hint {\n font-size: var(--font-size-base);\n color: var(--color-text-muted);\n margin-top: var(--space-sm);\n}\n\n/* Admin Controls */\n.reveal-report-row {\n display: flex;\n justify-content: center;\n margin-top: var(--space-md);\n}\n\n.reveal-report-btn {\n background: none;\n border: none;\n padding: var(--space-xs) var(--space-sm);\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n cursor: pointer;\n border-radius: var(--radius-sm);\n transition: color 0.15s ease, opacity 0.15s ease;\n opacity: 0.7;\n}\n\n.reveal-report-btn:hover {\n color: var(--color-text-neon-muted);\n opacity: 1;\n}\n\n.reveal-report-btn:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n.reveal-admin-controls {\n margin-top: var(--space-md);\n}\n\n.next-round-btn {\n padding: var(--space-md) var(--space-xl);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-white);\n background: var(--color-accent-brand);\n border: none;\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.next-round-btn:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.next-round-btn:disabled {\n background: var(--color-text-light);\n cursor: not-allowed;\n}\n\n.next-round-btn.is-final {\n background: var(--color-success);\n}\n\n.next-round-btn.is-final:hover {\n background: var(--color-success-hover);\n}\n\n/* Reveal Admin Buttons Layout (Story 16.5) */\n.reveal-admin-buttons {\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n align-items: center;\n}\n\n@media (min-width: 480px) {\n .reveal-admin-buttons {\n flex-direction: row;\n justify-content: center;\n }\n}\n\n/* Invite Button (Story 16.5) */\n.invite-btn {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-lg);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-white);\n background: var(--color-bg-tertiary);\n border: 1px solid var(--color-border-subtle);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n min-height: 44px;\n min-width: 44px;\n}\n\n.invite-btn:hover {\n background: var(--color-bg-secondary);\n border-color: var(--color-border-neon);\n}\n\n.invite-btn:active {\n transform: scale(0.98);\n}\n\n.invite-btn-icon {\n font-size: var(--font-size-lg);\n}\n\n.invite-btn-label {\n white-space: nowrap;\n}\n\n/* Invite Modal (Story 16.5) */\n.invite-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.invite-modal.hidden {\n display: none;\n}\n\n.invite-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n}\n\n.invite-modal-content {\n position: relative;\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n padding: var(--space-lg);\n border-radius: var(--radius-xl);\n text-align: center;\n max-width: 90vw;\n max-height: 90vh;\n overflow-y: auto;\n animation: modalFadeIn var(--transition-normal) ease-out;\n}\n\n@keyframes modalFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.invite-modal-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-white);\n margin: 0 0 var(--space-xs);\n}\n\n.invite-modal-hint {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin: 0 0 var(--space-md);\n}\n\n.invite-modal-code {\n display: inline-block;\n padding: var(--space-md);\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-md);\n}\n\n.invite-modal-code img {\n display: block;\n width: 200px;\n height: 200px;\n}\n\n@media (min-width: 480px) {\n .invite-modal-code img {\n width: 256px;\n height: 256px;\n }\n}\n\n.invite-modal-url-container {\n display: flex;\n gap: var(--space-xs);\n margin-bottom: var(--space-sm);\n max-width: 100%;\n}\n\n.invite-modal-url {\n flex: 1;\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-sm);\n font-family: var(--font-family-mono);\n color: var(--color-text-primary);\n background: var(--color-bg-secondary);\n border: 1px solid var(--color-border-subtle);\n border-radius: var(--radius-md);\n min-width: 0;\n text-overflow: ellipsis;\n}\n\nbody.theme-dark .invite-modal-url {\n color: #e2e8f0;\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.15);\n}\n\n.invite-copy-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--space-sm);\n min-width: 44px;\n min-height: 44px;\n background: var(--color-accent-brand);\n border: none;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.invite-copy-btn:hover {\n background: var(--color-accent-brand-hover);\n}\n\n.invite-copy-btn:active {\n transform: scale(0.95);\n}\n\n.invite-copy-icon {\n font-size: var(--font-size-lg);\n}\n\n.invite-copy-feedback {\n font-size: var(--font-size-sm);\n color: var(--color-success);\n margin: 0 0 var(--space-md);\n animation: fadeInOut 2s ease-in-out;\n}\n\n.invite-copy-feedback.hidden {\n display: none;\n}\n\n@keyframes fadeInOut {\n 0%, 100% { opacity: 0; }\n 10%, 80% { opacity: 1; }\n}\n\n.invite-modal-close {\n min-width: 120px;\n min-height: 48px;\n}\n\n/* ============================================\n Player Result Cards (Story 9.10)\n ============================================ */\n\n.reveal-results-cards {\n margin-top: var(--space-lg);\n width: 100%;\n overflow: visible;\n}\n\n.results-cards-header {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-secondary);\n margin-bottom: var(--space-sm);\n text-align: center;\n}\n\n/* Horizontal row with overflow scroll (#355) */\n.results-cards-scroll {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: var(--space-sm);\n width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n padding-bottom: var(--space-xs);\n -webkit-overflow-scrolling: touch;\n}\n\n.results-cards-scroll::-webkit-scrollbar {\n height: 3px;\n}\n\n.results-cards-scroll::-webkit-scrollbar-thumb {\n background: var(--color-border-light);\n border-radius: 2px;\n}\n\n.result-card {\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-sm);\n text-align: center;\n border: 2px solid var(--color-border-light);\n transition: all var(--transition-fast);\n flex: 1 1 140px;\n min-width: 140px;\n max-width: 220px;\n box-sizing: border-box;\n}\n\n.result-card.is-current {\n border-color: var(--color-accent-brand);\n background: rgba(99, 102, 241, 0.1);\n}\n\n/* Score-based classes per AC #13 (Code Review fix) */\n.result-card.is-score-high {\n border-color: var(--color-success);\n background: rgba(16, 185, 129, 0.1);\n}\n\n.result-card.is-score-medium {\n border-color: var(--color-warning);\n background: rgba(245, 158, 11, 0.1);\n}\n\n.result-card.is-score-zero {\n opacity: 0.6;\n}\n\n.card-name {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 2px;\n}\n\n.card-guess {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n}\n\n.card-accuracy {\n font-size: var(--font-size-xs);\n color: var(--color-text-muted);\n}\n\n.result-card.is-score-high .card-accuracy {\n color: var(--color-success);\n font-weight: var(--font-weight-semibold);\n}\n\n.card-score {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--color-success);\n margin-top: 2px;\n}\n\n.card-bet {\n margin-left: 4px;\n}\n\n/* Dark theme result cards */\nbody.theme-dark .result-card {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\nbody.theme-dark .result-card.is-current {\n border-color: var(--color-accent-neon);\n background: rgba(0, 245, 255, 0.1);\n}\n\n/* Dark theme score-based classes (Code Review fix) */\nbody.theme-dark .result-card.is-score-high {\n border-color: var(--color-success-neon);\n background: rgba(0, 255, 136, 0.1);\n}\n\nbody.theme-dark .result-card.is-score-medium {\n border-color: var(--color-warning);\n background: rgba(245, 158, 11, 0.15);\n}\n\nbody.theme-dark .card-name,\nbody.theme-dark .card-guess {\n color: var(--color-text-white);\n}\n\nbody.theme-dark .card-accuracy {\n color: var(--color-text-neon-muted);\n}\n\nbody.theme-dark .result-card.is-score-high .card-accuracy {\n color: var(--color-success-neon);\n}\n\nbody.theme-dark .card-score {\n color: var(--color-success-neon);\n}\n\n/* ============================================\n Admin Control Bar (Story 6.1)\n ============================================ */\n\n.admin-control-bar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n justify-content: space-around;\n align-items: center;\n padding: var(--space-sm) var(--space-sm);\n padding-bottom: calc(var(--space-sm) + env(safe-area-inset-bottom));\n background: rgba(0, 0, 0, 0.9);\n border-top: 1px solid var(--color-border-dark);\n z-index: var(--z-control-bar);\n}\n\n.admin-control-bar.hidden {\n display: none;\n}\n\n.control-btn {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-width: 44px;\n min-height: 44px;\n padding: var(--space-sm) var(--space-sm);\n background: #2a2a2a;\n border: none;\n border-radius: var(--radius-md);\n color: var(--color-text-white);\n cursor: pointer;\n transition: background var(--transition-fast), opacity var(--transition-fast);\n}\n\n.control-btn:hover:not(.is-disabled) {\n background: #3a3a3a;\n}\n\n.control-btn:active:not(.is-disabled) {\n background: #4a4a4a;\n}\n\n.control-btn.is-disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.control-btn--danger {\n background: #7f1d1d;\n}\n\n.control-btn--danger:hover:not(.is-disabled) {\n background: #991b1b;\n}\n\n.control-btn.is-stopped {\n background: var(--color-text-secondary);\n opacity: 0.7;\n}\n\n.control-btn.is-stopped .control-icon {\n color: var(--color-success);\n}\n\n/* Volume indicator popup (Story 6.4) */\n.volume-indicator {\n position: absolute;\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(0, 0, 0, 0.9);\n color: var(--color-text-white);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--space-sm);\n opacity: 0;\n transition: opacity var(--transition-normal);\n pointer-events: none;\n white-space: nowrap;\n}\n\n.volume-indicator.is-visible {\n opacity: 1;\n}\n\n/* Volume button at limit (Story 6.4) */\n.control-btn.is-at-limit {\n opacity: 0.5;\n}\n\n.control-btn.is-at-limit:active {\n transform: none;\n}\n\n.control-icon {\n font-size: var(--font-size-xl);\n line-height: 1;\n}\n\n/* #1048: REVEAL auto-advance countdown \u2014 replaces the icon in the Next\n button with the remaining seconds while the auto-advance timer runs.\n Tabular numerals so 30 \u2192 29 \u2192 28 doesn't shift the layout. */\n.control-icon.is-countdown {\n font-variant-numeric: tabular-nums;\n font-weight: 700;\n min-width: 1.5em;\n text-align: center;\n}\n\n.control-label {\n font-size: var(--font-size-xs);\n margin-top: 2px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Ensure game-view content doesn't get covered by control bar (M3 fix: conditional) */\n/* 80px admin bar + 60px reaction bar = 140px total clearance */\n.has-control-bar .game-container {\n padding-bottom: 140px;\n}\n\n.has-control-bar .reveal-container {\n padding-bottom: 140px;\n}\n\n.has-control-bar .end-container {\n padding-bottom: 140px;\n}\n\n/* ============================================\n Live Reactions Bar (Story 18.9)\n ============================================ */\n\n.reaction-bar {\n position: fixed;\n bottom: 0; /* Default: at bottom for regular players */\n left: 0;\n right: 0;\n display: flex;\n justify-content: center;\n padding: var(--space-sm);\n padding-bottom: calc(var(--space-sm) + env(safe-area-inset-bottom));\n z-index: var(--z-reaction-bar);\n pointer-events: none; /* Allow clicks through the bar */\n}\n\n/* When admin control bar is visible, position reaction bar above it */\nmain:has(.admin-control-bar:not(.hidden)) .reaction-bar {\n bottom: 70px;\n}\n\n.reaction-bar.hidden {\n display: none;\n}\n\n.reaction-bar-container {\n display: flex;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: rgba(0, 0, 0, 0.6);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n pointer-events: auto; /* Restore clicks on container */\n}\n\n.reaction-btn {\n font-size: 1.5rem;\n padding: var(--space-sm);\n min-width: 44px;\n min-height: 44px;\n background: rgba(30, 30, 40, 0.5);\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: transform var(--transition-fast), background var(--transition-fast);\n}\n\n.reaction-btn:hover {\n background: rgba(50, 50, 60, 0.7);\n}\n\n.reaction-btn:active {\n transform: scale(0.9);\n}\n\n/* #1757: used-state feedback. Once a reaction is spent this phase the whole bar\n is disabled; the chosen emoji stays lit so the player sees what they sent. */\n.reaction-btn:disabled {\n cursor: default;\n opacity: 0.45;\n}\n\n.reaction-btn.is-used {\n opacity: 1;\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 12px var(--color-accent-primary);\n}\n\n/* Neon glow effect on tap */\n@media (hover: none) {\n .reaction-btn:active {\n box-shadow: 0 0 15px var(--color-accent-primary);\n }\n}\n\n/* Accessibility: Respect reduced motion preference */\n@media (prefers-reduced-motion: reduce) {\n .reaction-btn {\n transition: none;\n }\n\n .reaction-btn:active {\n transform: none;\n }\n}\n\n/* Floating Reactions Display (Story 18.9) */\n.reaction-container {\n position: fixed;\n bottom: 120px; /* Above reaction bar */\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 99; /* Below reaction bar */\n}\n\n/* When admin control bar visible, adjust position */\nmain:has(.admin-control-bar:not(.hidden)) .reaction-container {\n bottom: 180px;\n}\n\n.reaction-bubble {\n position: absolute;\n font-size: 1rem;\n font-weight: 600;\n color: var(--color-text-white);\n text-shadow: 0 0 8px var(--color-accent-primary);\n animation: reaction-float 3s ease-out forwards;\n white-space: nowrap;\n}\n\n@keyframes reaction-float {\n 0% {\n opacity: 1;\n transform: translateY(0);\n }\n 70% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translateY(calc(-50vh + 60px));\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .reaction-bubble {\n animation: none;\n opacity: 1;\n }\n}\n\n/* ============================================\n Paused View (Story 7-1)\n ============================================ */\n\n.paused-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--space-2xl) var(--space-lg);\n min-height: 60vh;\n text-align: center;\n}\n\n.paused-icon {\n font-size: var(--font-size-hero);\n margin-bottom: var(--space-lg);\n animation: pause-pulse 2s infinite;\n}\n\n@keyframes pause-pulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.6; transform: scale(0.95); }\n}\n\n.paused-container h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-md);\n}\n\n.paused-container > p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.paused-spinner {\n margin: var(--space-xl) 0;\n}\n\n.paused-hint {\n font-size: var(--font-size-base);\n color: var(--color-text-light);\n}\n\n/* ============================================\n Reconnecting Overlay (Story 7-3)\n ============================================ */\n\n.reconnecting-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: var(--z-overlay);\n}\n\n.reconnecting-overlay.hidden {\n display: none;\n}\n\n.reconnecting-content {\n text-align: center;\n color: var(--color-text-white);\n}\n\n.reconnecting-spinner .spinner {\n border-top-color: var(--color-text-white);\n width: 48px;\n height: 48px;\n margin: 0 auto var(--space-md);\n}\n\n.reconnect-status {\n font-size: var(--font-size-md);\n color: var(--color-border-light);\n}\n\n/* ============================================\n Connection Lost View (Story 7-4)\n ============================================ */\n\n.connection-lost-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--space-2xl) var(--space-lg);\n min-height: 60vh;\n text-align: center;\n}\n\n.connection-lost-icon {\n font-size: var(--font-size-hero);\n margin-bottom: var(--space-lg);\n}\n\n.connection-lost-container h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-md);\n}\n\n.connection-lost-container > p {\n font-size: var(--font-size-md);\n color: var(--color-text-muted);\n margin-bottom: var(--space-lg);\n}\n\n.connection-lost-hint {\n font-size: var(--font-size-base);\n color: var(--color-text-light);\n margin-top: var(--space-md);\n}\n\n/* Responsive adjustments for Reveal View */\n@media (max-width: 360px) {\n .correct-year {\n font-size: var(--font-size-year);\n }\n\n .reveal-album-cover {\n width: 120px;\n height: 120px;\n }\n}\n\n@media (min-width: 768px) {\n .reveal-album-cover {\n width: 180px;\n height: 180px;\n }\n\n .correct-year {\n font-size: 84px;\n }\n}\n\n/* ============================================\n Accessibility & Reduced Motion (Story 9.7)\n ============================================ */\n\n/* Focus indicators for keyboard navigation */\n:focus-visible {\n outline: 2px solid var(--color-accent-primary);\n outline-offset: 2px;\n}\n\nbody.theme-dark :focus-visible {\n outline-color: var(--color-accent-primary);\n box-shadow: 0 0 0 4px rgba(255, 45, 106, 0.3);\n}\n\n/* Remove default outline for mouse users */\n:focus:not(:focus-visible) {\n outline: none;\n}\n\n/* Global reduced motion - disables all animations */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Day Mode fallback for prefers-color-scheme: light */\n@media (prefers-color-scheme: light) {\n body:not(.theme-dark) {\n --color-bg-primary: #ffffff;\n --color-bg-surface: #f5f5f7;\n --color-bg-card: #ffffff;\n --color-bg-card-alt: #f8fafc;\n --color-text-primary: #1a1a1a;\n --color-text-muted: #666666;\n --color-text-light: #999999;\n --color-border-light: #e5e7eb;\n /* Accents remain vibrant */\n }\n}\n\n/* Screen reader only utility */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Skip link for keyboard users */\n.skip-link {\n position: absolute;\n top: -40px;\n left: 0;\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n padding: var(--space-sm) var(--space-md);\n z-index: var(--z-modal);\n transition: top var(--transition-fast);\n}\n\n.skip-link:focus {\n top: 0;\n}\n\n/* ============================================\n Energy Escalation Pattern (Story 9.9)\n ============================================ */\n\n/* Energy Level Classes - Applied to body */\n\n/* Calm - Join screen (minimal, focused) */\nbody.energy-calm .btn-glow:hover {\n box-shadow: none; /* No glow on calm screens */\n}\n\nbody.energy-calm .wordmark-hero {\n text-shadow: none; /* No hero glow on calm screens */\n}\n\n/* Warmup - Lobby (building excitement) */\nbody.energy-warmup .player-card {\n animation: energy-slide-in 0.3s ease-out;\n}\n\nbody.energy-warmup .qr-container {\n animation: energy-pulse-subtle 3s ease-in-out infinite;\n}\n\n@keyframes energy-slide-in {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes energy-pulse-subtle {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.85; }\n}\n\n/* Party - Active gameplay (full effects) */\nbody.energy-party .album-cover {\n box-shadow: 0 0 60px rgba(255, 255, 255, 0.1);\n}\n\nbody.energy-party .submit-btn:not(:disabled) {\n box-shadow: var(--glow-primary);\n}\n\nbody.energy-party .year-display {\n text-shadow: 0 0 20px rgba(255, 45, 106, 0.3);\n}\n\n/* Screen Transitions */\n.view {\n animation: screen-fade-in 0.3s ease-out;\n}\n\n@keyframes screen-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Reduced motion - disable energy animations */\n@media (prefers-reduced-motion: reduce) {\n body.energy-warmup .player-card,\n body.energy-warmup .qr-container {\n animation: none;\n }\n .view {\n animation: none;\n }\n}\n\n/* ============================================\n Steal Power-up Styles (Story 15.3)\n ============================================ */\n\n/* Steal indicator now uses .stat-badge--steal in game header */\n\n/* Steal Button */\n.steal-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-xs);\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n margin-top: var(--space-sm);\n background: linear-gradient(135deg, var(--color-purple-primary, #8b5cf6), var(--color-purple-secondary, #7c3aed));\n border: none;\n border-radius: var(--radius-lg);\n color: var(--color-text-white);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-bold);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n cursor: pointer;\n box-shadow: 0 0 20px rgba(139, 92, 246, 0.4);\n transition: all var(--transition-fast);\n}\n\n.steal-btn:hover:not(:disabled) {\n transform: scale(1.03);\n box-shadow: 0 0 30px rgba(139, 92, 246, 0.6);\n}\n\n.steal-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.steal-btn-icon {\n font-size: var(--font-size-lg);\n}\n\n/* Steal Modal */\n.steal-modal {\n position: fixed;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: var(--z-modal);\n}\n\n.steal-modal-backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n backdrop-filter: blur(4px);\n}\n\n.steal-modal-content {\n position: relative;\n background: var(--color-bg-card);\n border: 2px solid var(--color-purple-primary, #8b5cf6);\n border-radius: var(--radius-xl);\n padding: var(--space-lg);\n max-width: 320px;\n width: 90%;\n text-align: center;\n box-shadow: 0 0 40px rgba(139, 92, 246, 0.3);\n}\n\n.steal-modal-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n}\n\n.steal-modal-subtitle {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin-bottom: var(--space-md);\n}\n\n.steal-target-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n}\n\n.steal-target-btn {\n display: block;\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-surface);\n border: 1px solid var(--color-accent-secondary);\n border-radius: var(--radius-md);\n color: var(--color-text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.steal-target-btn:hover {\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n transform: scale(1.02);\n}\n\n.steal-no-targets {\n color: var(--color-text-muted);\n font-size: var(--font-size-sm);\n padding: var(--space-md);\n}\n\n.steal-modal-cancel {\n width: 100%;\n}\n\n/* Steal Confirmation Toast */\n.steal-confirmation {\n position: fixed;\n bottom: calc(var(--space-xl) + 60px);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n background: linear-gradient(135deg, var(--color-purple-primary, #8b5cf6), var(--color-purple-secondary, #7c3aed));\n color: var(--color-text-white);\n padding: var(--space-sm) var(--space-lg);\n border-radius: var(--radius-full);\n font-weight: var(--font-weight-semibold);\n box-shadow: 0 4px 20px rgba(139, 92, 246, 0.5);\n animation: steal-toast-in 0.3s ease-out;\n z-index: var(--z-tooltip);\n}\n\n@keyframes steal-toast-in {\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n}\n\n.steal-confirmation-icon {\n font-size: var(--font-size-lg);\n}\n\n/* Steal badge in reveal view */\n.steal-badge {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n background: rgba(139, 92, 246, 0.2);\n border: 1px solid var(--color-purple-primary, #8b5cf6);\n border-radius: var(--radius-full);\n padding: var(--space-xs) var(--space-sm);\n font-size: var(--font-size-xs);\n color: var(--color-purple-primary, #8b5cf6);\n margin-top: var(--space-xs);\n}\n\n.steal-badge-icon {\n font-size: 0.9em;\n}\n\n/* Victim variant - shows who was stolen from */\n.steal-badge-victim {\n background: rgba(239, 68, 68, 0.2);\n border-color: var(--color-error);\n color: var(--color-error);\n}\n\n/* Dark mode adjustments */\nbody.theme-dark .steal-modal-content {\n background: var(--color-bg-card);\n}\n\nbody.theme-dark .steal-target-btn {\n background: rgba(255, 255, 255, 0.05);\n border-color: var(--color-accent-secondary);\n}\n\nbody.theme-dark .steal-target-btn:hover {\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .stat-badge--steal {\n animation: none;\n }\n .steal-confirmation {\n animation: none;\n }\n}\n\n/* ============================================\n Intro Splash Modal (Issue #292)\n ============================================ */\n\n.intro-splash-modal {\n position: fixed;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: var(--z-modal);\n}\n\n.intro-splash-modal-backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n backdrop-filter: blur(4px);\n}\n\n.intro-splash-modal-content {\n position: relative;\n background: var(--color-bg-card);\n border: 2px solid var(--color-accent-primary, #1db954);\n border-radius: var(--radius-xl);\n padding: var(--space-lg);\n max-width: 400px;\n width: 90%;\n text-align: center;\n box-shadow: 0 0 40px rgba(29, 185, 84, 0.3);\n}\n\n.intro-splash-modal-emoji {\n font-size: 3rem;\n margin-bottom: var(--space-sm);\n}\n\n.intro-splash-modal-title {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n margin-bottom: var(--space-xs);\n}\n\n.intro-splash-modal-desc {\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n margin-bottom: var(--space-md);\n}\n\n.intro-splash-modal-waiting {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n margin-bottom: var(--space-sm);\n}\n\n.intro-splash-confirm-btn {\n width: 100%;\n margin-top: var(--space-sm);\n}\n\n/* ============================================\n Score Animations (Story 13.2)\n ============================================ */\n\n/* Tabular figures for score stability during animation */\n.score-animating {\n font-variant-numeric: tabular-nums;\n}\n\n/* Pop effect for big scores (20+ points) */\n@keyframes score-pop {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.3); }\n 100% { transform: scale(1); }\n}\n\n.score-pop {\n animation: score-pop 700ms ease-out;\n display: inline-block; /* Required for transform */\n}\n\n/* Shake effect for bet loss */\n@keyframes score-shake {\n 0%, 100% { transform: translateX(0); }\n 20% { transform: translateX(-5px); }\n 40% { transform: translateX(5px); }\n 60% { transform: translateX(-3px); }\n 80% { transform: translateX(3px); }\n}\n\n.score-shake {\n animation: score-shake 400ms ease-out;\n display: inline-block;\n}\n\n/* Red flash for bet loss */\n@keyframes score-flash-red {\n 0%, 100% { color: inherit; }\n 50% { color: var(--color-error); }\n}\n\n.score-flash-red {\n animation: score-flash-red 400ms ease-out;\n}\n\n/* Golden glow for bet wins */\n@keyframes score-glow-gold {\n 0%, 100% {\n text-shadow: 0 0 0 transparent;\n color: inherit;\n }\n 50% {\n text-shadow: 0 0 20px #ffd700, 0 0 40px #ffd700;\n color: #ffd700;\n }\n}\n\n.score-glow-gold {\n animation: score-glow-gold 800ms ease-out;\n display: inline-block;\n}\n\n/* Burst effect for streak milestones */\n@keyframes score-burst {\n 0% {\n transform: scale(1);\n text-shadow: 0 0 0 transparent;\n }\n 30% {\n transform: scale(1.4);\n text-shadow: 0 0 30px #ff6600;\n }\n 100% {\n transform: scale(1);\n text-shadow: 0 0 0 transparent;\n }\n}\n\n.score-burst {\n animation: score-burst 700ms ease-out;\n display: inline-block;\n}\n\n/* ============================================\n Floating Points Popup (Story 13.2)\n ============================================ */\n\n@keyframes popup-float {\n 0% {\n opacity: 0;\n transform: translate(-50%, 0);\n }\n 20% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translate(-50%, -30px);\n }\n}\n\n.points-popup {\n position: fixed;\n z-index: var(--z-toast);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-bold);\n color: var(--color-success);\n pointer-events: none;\n animation: popup-float 1000ms ease-out forwards;\n transform: translateX(-50%);\n}\n\n.points-popup--gold {\n color: #ffd700;\n text-shadow: 0 0 10px #ffd700;\n}\n\n.points-popup--streak {\n color: #ff6600;\n text-shadow: 0 0 10px #ff6600;\n font-size: var(--font-size-xl);\n}\n\n/* ============================================\n Leaderboard Slide Animations (Story 13.2)\n ============================================ */\n\n/* Enhanced climbing animation with green highlight */\n.leaderboard-entry--slide-up {\n animation: leaderboard-slide-up 500ms ease-out;\n}\n\n@keyframes leaderboard-slide-up {\n 0% {\n transform: translateY(10px);\n background: rgba(0, 255, 136, 0.3);\n }\n 100% {\n transform: translateY(0);\n background: transparent;\n }\n}\n\n/* Enhanced falling animation with opacity */\n.leaderboard-entry--slide-down {\n animation: leaderboard-slide-down 500ms ease-out;\n}\n\n@keyframes leaderboard-slide-down {\n 0% {\n transform: translateY(-10px);\n opacity: 0.6;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* ============================================\n Reduced Motion Support (Story 13.2)\n ============================================ */\n\n@media (prefers-reduced-motion: reduce) {\n .score-pop,\n .score-shake,\n .score-glow-gold,\n .score-burst,\n .score-flash-red {\n animation: none !important;\n }\n\n .points-popup {\n animation: none !important;\n display: none !important;\n }\n\n .leaderboard-entry--slide-up,\n .leaderboard-entry--slide-down {\n animation: none !important;\n }\n}\n\n/* ============================================\n Device Tier Performance Optimizations (Story 18.3)\n ============================================ */\n\n/* Low-end device optimizations - disable complex animations */\nbody.device-tier-low .leaderboard-entry--climbing,\nbody.device-tier-low .leaderboard-entry--falling,\nbody.device-tier-low .leaderboard-entry--slide-up,\nbody.device-tier-low .leaderboard-entry--slide-down {\n animation: none !important;\n}\n\nbody.device-tier-low .neon-glow,\nbody.device-tier-low .btn-glow:hover {\n box-shadow: none !important;\n}\n\nbody.device-tier-low .score-pop,\nbody.device-tier-low .score-shake,\nbody.device-tier-low .score-glow-gold,\nbody.device-tier-low .score-burst {\n animation: none !important;\n}\n\nbody.device-tier-low .points-popup {\n display: none !important;\n}\n\n/* Medium-tier device optimizations - simplify animations */\nbody.device-tier-medium .leaderboard-entry--climbing,\nbody.device-tier-medium .leaderboard-entry--falling {\n animation-duration: 0.2s !important;\n}\n\nbody.device-tier-medium .neon-glow {\n animation: none !important;\n}\n\nbody.device-tier-medium .score-pop,\nbody.device-tier-medium .score-shake,\nbody.device-tier-medium .score-glow-gold,\nbody.device-tier-medium .score-burst {\n animation-duration: 0.2s !important;\n}\n\n/* Tap-to-skip hint for reveal view (Story 18.3) */\n.reveal-skip-hint {\n position: absolute;\n bottom: var(--space-md);\n left: 50%;\n transform: translateX(-50%);\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n opacity: 0;\n animation: fadeInDelayed 0.3s ease-out 1s forwards;\n}\n\n@keyframes fadeInDelayed {\n to {\n opacity: 0.6;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .reveal-skip-hint {\n animation: none;\n opacity: 0.6;\n }\n}\n\nbody.device-tier-low .reveal-skip-hint {\n animation: none;\n opacity: 0.6;\n}\n\n/* ========================================\n Playlist Request Feature (Story 44)\n ======================================== */\n\n/* Request button in playlists section */\n.request-btn {\n margin-top: var(--space-md);\n gap: var(--space-xs);\n}\n\n/* Requests list */\n.requests-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n/* Individual request item */\n.request-item {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n padding: var(--space-md);\n background: var(--color-surface-raised);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n}\n\n.request-item-thumbnail {\n width: 40px;\n height: 40px;\n min-width: 40px;\n min-height: 40px;\n max-width: 40px;\n max-height: 40px;\n border-radius: var(--radius-sm);\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.request-item-thumbnail-placeholder {\n width: 40px;\n height: 40px;\n min-width: 40px;\n min-height: 40px;\n border-radius: var(--radius-sm);\n background: var(--color-surface);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.request-item-info {\n flex: 1;\n min-width: 0;\n}\n\n.request-item-name {\n font-weight: 600;\n font-size: var(--font-size-base);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.request-item-meta {\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n/* Status badges */\n.request-status {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: 600;\n white-space: nowrap;\n}\n\n.request-status--pending {\n background: rgba(255, 193, 7, 0.15);\n color: #ffc107;\n}\n\n.request-status--ready {\n background: rgba(76, 175, 80, 0.15);\n color: #4caf50;\n}\n\n.request-status--installed {\n background: transparent;\n color: #4caf50;\n border: 1px solid #4caf50;\n}\n\n.request-status--declined {\n background: rgba(244, 67, 54, 0.15);\n color: #f44336;\n}\n\n/* Update button for ready status */\n.request-update-btn {\n font-size: var(--font-size-xs);\n padding: 6px 12px;\n white-space: nowrap;\n}\n\n/* Modal text input */\n.text-input {\n width: 100%;\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-base);\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n color: var(--color-text);\n transition: border-color 0.15s ease;\n}\n\n.text-input:focus {\n outline: none;\n border-color: var(--color-primary);\n}\n\n.text-input.input-error {\n border-color: var(--color-error);\n}\n\n/* Info box */\n.info-box {\n background: var(--color-surface-raised);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-top: var(--space-md);\n}\n\n.info-box-title {\n font-weight: 600;\n margin-bottom: var(--space-xs);\n color: var(--color-text-muted);\n}\n\n.info-box-list {\n margin: 0;\n padding-left: 0;\n list-style-position: inside;\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n.info-box-list li {\n margin-bottom: var(--space-xs);\n}\n\n.info-box-list li:last-child {\n margin-bottom: 0;\n}\n\n.info-box-note {\n margin-top: var(--space-sm);\n padding-top: var(--space-sm);\n border-top: 1px solid var(--color-border);\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n/* Success modal */\n.modal-content--success {\n text-align: center;\n}\n\n.success-icon {\n font-size: 3rem;\n margin-bottom: var(--space-sm);\n}\n\n.success-playlist-name {\n font-weight: 600;\n font-size: var(--font-size-lg);\n margin-bottom: var(--space-xs);\n}\n\n.success-estimate {\n color: var(--color-text-muted);\n font-size: var(--font-size-sm);\n}\n\n/* Loading state for submit button */\n.btn--loading {\n position: relative;\n color: transparent !important;\n pointer-events: none;\n}\n\n.btn--loading::after {\n content: '';\n position: absolute;\n width: 16px;\n height: 16px;\n top: 50%;\n left: 50%;\n margin-left: -8px;\n margin-top: -8px;\n border: 2px solid transparent;\n border-top-color: currentColor;\n border-radius: 50%;\n animation: spin 0.6s linear infinite;\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n\n/* ============================================\n Shareable Result Cards (Issue #120)\n ============================================ */\n\n.share-container {\n margin: 1.5rem 0;\n text-align: center;\n}\n\n.share-header {\n font-size: 1.2rem;\n font-weight: 700;\n margin-bottom: 1rem;\n color: var(--text-primary, #fff);\n}\n\n.share-card-preview {\n margin: 12px auto;\n max-width: 360px;\n width: 100%;\n border-radius: 16px;\n overflow: hidden;\n box-shadow: 0 12px 36px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 45, 106, 0.25);\n background: #0a0a12;\n}\n\n.share-card-image {\n display: block;\n width: 100%;\n height: auto;\n aspect-ratio: 1 / 1;\n}\n\n.share-buttons {\n display: flex;\n gap: 0.75rem;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.share-btn {\n padding: 0.6rem 1.2rem;\n border: none;\n border-radius: 8px;\n font-size: 0.95rem;\n font-weight: 600;\n cursor: pointer;\n background: var(--accent-color, #e94560);\n color: #fff;\n transition: opacity 0.2s, transform 0.1s;\n}\n\n.share-btn:hover {\n opacity: 0.9;\n}\n\n.share-btn:active {\n transform: scale(0.97);\n}\n\n.share-toast {\n margin-top: 0.75rem;\n padding: 0.4rem 1rem;\n background: var(--success-color, #4caf50);\n color: #fff;\n border-radius: 20px;\n display: inline-block;\n font-size: 0.85rem;\n font-weight: 600;\n animation: shareToastIn 0.3s ease;\n}\n\n@keyframes shareToastIn {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Admin share player tabs (Issue #208) */\n.admin-share-player-tabs {\n display: flex;\n flex-wrap: wrap;\n gap: 0.4rem;\n justify-content: center;\n margin-bottom: 0.75rem;\n}\n\n.admin-share-tab {\n padding: 0.3rem 0.85rem;\n border-radius: 20px;\n border: 1px solid var(--color-border-light);\n background: transparent;\n color: var(--color-text-secondary);\n font-size: var(--font-size-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.admin-share-tab:hover {\n border-color: var(--color-accent-brand);\n color: var(--color-accent-brand);\n}\n\n.admin-share-tab.active {\n background: var(--color-accent-brand);\n border-color: var(--color-accent-brand);\n color: #fff;\n font-weight: var(--font-weight-semibold);\n}\n\n@media (max-width: 480px) {\n .share-buttons {\n flex-direction: column;\n align-items: center;\n }\n .share-btn {\n width: 100%;\n max-width: 280px;\n }\n .share-card-preview {\n max-width: 320px;\n }\n}\n\n/* ============================================\n Skeleton Loading States (#240)\n ============================================ */\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.skeleton {\n background: linear-gradient(90deg, var(--color-bg-card) 25%, #3a3a4e 50%, var(--color-bg-card) 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: var(--radius-md);\n}\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n padding: var(--space-sm) 0;\n}\n\n/* Media player rows \u2014 match the height of a radio option */\n.skeleton-row {\n height: 48px;\n width: 100%;\n}\n\n/* Playlist cards \u2014 taller to match playlist card height */\n.skeleton-card {\n height: 64px;\n width: 100%;\n}\n\n/* ============================================\n Connection Status Indicator (#238)\n ============================================ */\n.player-header {\n position: relative;\n}\n\n.connection-indicator {\n position: absolute;\n top: 50%;\n right: var(--space-md);\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n/* Only visible when disconnected/reconnecting */\n.connection-indicator--disconnected {\n opacity: 1;\n}\n\n.connection-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--color-error, #e94560);\n animation: pulse-dot 1.2s infinite;\n}\n\n@keyframes pulse-dot {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.4; transform: scale(0.7); }\n}\n\n/* ============================================\n Party Lights (#331)\n ============================================ */\n\n.party-lights-picker {\n margin-top: 12px;\n}\n\n.party-lights-picker-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n font-size: 0.85rem;\n color: var(--text-secondary, #aaa);\n}\n\n.party-lights-count {\n font-weight: 500;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--accent, #ff00ff);\n cursor: pointer;\n font-size: 0.85rem;\n padding: 4px 8px;\n}\n\n.btn-link:hover {\n text-decoration: underline;\n}\n\n.party-lights-list {\n max-height: 240px;\n overflow-y: auto;\n border-radius: 8px;\n background: var(--card-bg, rgba(255,255,255,0.05));\n margin-bottom: 12px;\n}\n\n.party-light-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n cursor: pointer;\n border-bottom: 1px solid var(--border, rgba(255,255,255,0.08));\n min-height: 44px;\n}\n\n.party-light-item:last-child {\n border-bottom: none;\n}\n\n.party-light-item:hover {\n background: rgba(255,255,255,0.03);\n}\n\n.party-light-item input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n accent-color: var(--accent, #ff00ff);\n}\n\n.light-status {\n font-size: 0.75rem;\n flex-shrink: 0;\n}\n\n.light-name {\n flex: 1;\n font-size: 0.9rem;\n color: var(--text-primary, #fff);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.light-cap-badge {\n font-size: 0.7rem;\n padding: 2px 6px;\n border-radius: 4px;\n background: rgba(255,255,255,0.1);\n color: var(--text-secondary, #aaa);\n flex-shrink: 0;\n font-weight: 500;\n}\n\n/* ============================================\n Issue #550: WLED Presets & Light Mode UI\n ============================================ */\n\n.setting-row--vertical {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--space-sm, 8px);\n}\n\n.wled-presets-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: var(--space-xs, 4px) var(--space-sm, 8px);\n width: 100%;\n}\n\n.wled-preset-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-xs, 4px);\n font-size: 0.8rem;\n color: var(--text-secondary, #aaa);\n}\n\n.wled-preset-item .input-sm {\n width: 48px;\n padding: 2px 4px;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 4px;\n background: rgba(255,255,255,0.05);\n color: var(--text-primary, #fff);\n font-size: 0.8rem;\n text-align: center;\n}\n\n/* ============================================\n Issue #477: Admin Game Phase Views\n ============================================ */\n\n.admin-game-wrapper {\n max-width: 480px;\n margin: 0 auto;\n}\n\n.admin-phase-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: var(--space-md);\n}\n\n.round-badge {\n font-weight: 600;\n font-size: 1rem;\n}\n\n.timer-badge {\n font-size: 1.2rem;\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n min-width: 3em;\n text-align: center;\n}\n\n.timer-badge.timer-warning {\n color: var(--color-warning, #f59e0b);\n}\n\n.timer-badge.timer-critical {\n color: var(--color-danger, #ef4444);\n animation: pulse-critical 0.5s ease-in-out infinite alternate;\n}\n\n@keyframes pulse-critical {\n from { opacity: 1; }\n to { opacity: 0.5; }\n}\n\n.admin-song-card {\n display: flex;\n align-items: center;\n gap: var(--space-md);\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.admin-album-art {\n width: 64px;\n height: 64px;\n border-radius: var(--radius-sm);\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.admin-song-meta {\n min-width: 0;\n}\n\n.admin-song-title {\n font-weight: 600;\n font-size: 1rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.admin-song-artist {\n color: var(--text-secondary, #aaa);\n font-size: 0.9rem;\n}\n\n/* #653: Admin-only song details (below large album cover) */\n.admin-song-details {\n text-align: center;\n margin-bottom: var(--space-sm, 8px);\n}\n\n.admin-song-year {\n font-size: 0.95rem;\n color: var(--color-primary, #1db954);\n font-weight: 600;\n}\n\n.admin-song-funfact {\n font-size: 0.85rem;\n color: var(--text-secondary, #aaa);\n font-style: italic;\n margin-top: 4px;\n line-height: 1.3;\n}\n\n/* #660: Admin playing-mode banner */\n.admin-playing-banner {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n padding: var(--space-sm, 8px) var(--space-md, 16px);\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n border-bottom: 2px solid var(--color-primary, #1db954);\n font-size: 0.9rem;\n}\n\n.admin-playing-banner-icon {\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.admin-playing-banner-text {\n flex: 1;\n min-width: 0;\n}\n\n.admin-playing-banner-btn {\n flex-shrink: 0;\n font-size: 0.8rem;\n padding: 4px 10px;\n border-radius: var(--radius-sm, 8px);\n}\n\n/* #1012 follow-up: Idle-halt banner \u2014 shown on REVEAL when a round\n ended with zero guesses, so the screen doesn't look generically stuck. */\n.idle-halt-banner {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n margin: var(--space-md, 16px) auto;\n padding: var(--space-sm, 8px) var(--space-md, 16px);\n background: var(--bg-card, rgba(255, 255, 255, 0.06));\n border: 1px solid var(--color-warning, #f5a623);\n border-radius: var(--radius-md, 12px);\n color: var(--color-warning, #f5a623);\n font-size: 0.9rem;\n line-height: 1.35;\n max-width: 540px;\n}\n\n.idle-halt-icon {\n font-size: 1.2rem;\n flex-shrink: 0;\n}\n\n/* #805: Recovery banner shown when game pauses due to playback error. */\n.admin-pause-recovery {\n margin: var(--space-md, 16px);\n padding: var(--space-md, 16px) var(--space-lg, 20px);\n background: var(--bg-card, rgba(255, 255, 255, 0.06));\n border: 2px solid var(--color-warning, #f5a623);\n border-radius: var(--radius-md, 12px);\n}\n\n.admin-pause-recovery-header {\n display: flex;\n align-items: center;\n gap: var(--space-sm, 8px);\n margin-bottom: var(--space-sm, 8px);\n}\n\n.admin-pause-recovery-icon {\n font-size: 1.3rem;\n flex-shrink: 0;\n}\n\n.admin-pause-recovery-title {\n font-size: 1rem;\n color: var(--color-warning, #f5a623);\n}\n\n.admin-pause-recovery-message {\n font-size: 0.95rem;\n line-height: 1.4;\n margin: 0 0 var(--space-sm, 8px) 0;\n color: var(--text-primary, #ffffff);\n}\n\n.admin-pause-recovery-detail {\n font-size: 0.8rem;\n line-height: 1.3;\n margin: 0 0 var(--space-md, 16px) 0;\n color: var(--text-secondary, rgba(255, 255, 255, 0.6));\n font-family: var(--font-monospace, monospace);\n word-break: break-word;\n}\n\n.admin-pause-recovery-detail.hidden {\n display: none;\n}\n\n.admin-pause-recovery-actions {\n display: flex;\n gap: var(--space-sm, 8px);\n flex-wrap: wrap;\n}\n\n.admin-pause-recovery-actions .btn {\n flex: 1;\n min-width: 120px;\n}\n\n/* #660: Admin personal result card (reveal phase) */\n.admin-personal-result-card {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs, 4px);\n}\n\n.admin-personal-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--space-xs, 4px) 0;\n}\n\n.admin-personal-label {\n color: var(--text-secondary, #aaa);\n font-size: 0.9rem;\n}\n\n.admin-personal-value {\n font-weight: 600;\n font-size: 1rem;\n}\n\n.admin-personal-score {\n color: var(--color-primary, #1db954);\n font-size: 1.1rem;\n}\n\n/* Admin read-only challenge options */\n.artist-option--readonly {\n padding: 10px 14px;\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n border: 1px solid var(--color-border-dark, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius-md, 12px);\n text-align: center;\n font-size: 0.9rem;\n opacity: 0.8;\n}\n\n/* Admin intro splash confirm */\n.admin-intro-splash {\n text-align: center;\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n border-radius: var(--radius-md, 12px);\n border: 1px solid var(--color-primary, #1db954);\n}\n\n.intro-splash-info {\n font-size: 1.1rem;\n font-weight: 600;\n margin-bottom: var(--space-sm);\n}\n\n.intro-splash-icon {\n margin-right: 6px;\n}\n\n.btn-compact {\n padding: 8px 12px;\n font-size: 0.85rem;\n}\n\n.admin-player-panel {\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.admin-year-selector {\n text-align: center;\n margin-bottom: var(--space-md);\n}\n\n.admin-year-selector .year-display {\n display: block;\n font-size: 2.5rem;\n font-weight: 700;\n margin-bottom: var(--space-sm);\n font-variant-numeric: tabular-nums;\n}\n\n.admin-year-selector .year-slider {\n width: 100%;\n margin-bottom: var(--space-xs);\n}\n\n.year-range-labels {\n display: flex;\n justify-content: space-between;\n font-size: 0.75rem;\n color: var(--text-secondary, #aaa);\n}\n\n.last-round-banner {\n text-align: center;\n padding: var(--space-sm);\n background: var(--color-warning, #f59e0b);\n color: #000;\n border-radius: var(--radius-sm);\n font-weight: 600;\n margin-bottom: var(--space-md);\n}\n\n.submission-status {\n text-align: center;\n color: var(--text-secondary, #aaa);\n font-size: 0.9rem;\n margin-top: var(--space-sm);\n}\n\n.submission-count {\n margin-bottom: 6px;\n}\n\n.submission-players {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n justify-content: center;\n}\n\n.submission-player {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 0.8rem;\n background: var(--bg-card, rgba(255, 255, 255, 0.05));\n}\n\n.submission-player.is-submitted {\n color: var(--color-primary, #1db954);\n}\n\n.submission-player.is-waiting {\n opacity: 0.6;\n}\n\n/* Reveal */\n.reveal-year-display {\n font-size: 2.5rem;\n font-weight: 700;\n text-align: center;\n margin: var(--space-md) 0;\n color: var(--color-primary, #1db954);\n}\n\n.admin-personal-result {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--color-bg-card);\n border-radius: var(--radius-md);\n padding: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n.score-badge {\n font-weight: 700;\n color: var(--color-primary, #1db954);\n}\n\n/* Leaderboard */\n.admin-leaderboard-container {\n margin-bottom: var(--space-md);\n}\n\n.admin-leaderboard {\n width: 100%;\n border-collapse: collapse;\n}\n\n.admin-leaderboard th {\n text-align: left;\n font-weight: 600;\n padding: var(--space-xs) var(--space-sm);\n border-bottom: 1px solid var(--color-border-light);\n font-size: 0.85rem;\n color: var(--text-secondary, #aaa);\n}\n\n.admin-leaderboard td {\n padding: var(--space-xs) var(--space-sm);\n}\n\n.admin-leaderboard tr.admin-highlight td {\n font-weight: 600;\n color: var(--color-primary, #1db954);\n}\n\n/* End */\n.admin-winner-display {\n text-align: center;\n font-size: 1.3rem;\n font-weight: 600;\n padding: var(--space-lg) 0;\n}\n\n.winner-trophy {\n font-size: 2rem;\n}\n\n.admin-end-actions {\n display: flex;\n gap: var(--space-sm);\n justify-content: center;\n margin-top: var(--space-md);\n}\n\n/* ==========================================\n First-run wizard (DESIGN.md ## Patterns)\n ========================================== */\n\n/* Takeover: when active, hide the rest of the admin chrome */\nbody.wizard-active > .admin-header,\nbody.wizard-active > main.admin-content,\nbody.wizard-active > .pwa-ios-hint {\n display: none;\n}\n\n.wizard-takeover {\n position: fixed;\n inset: 0;\n z-index: var(--z-overlay, 1100);\n background: var(--color-bg-primary);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.wizard-takeover.hidden { display: none; }\n\n.wiz-bg {\n position: absolute;\n inset: 0;\n background:\n radial-gradient(ellipse at top, rgba(255, 45, 106, 0.18), transparent 55%),\n radial-gradient(ellipse at bottom right, rgba(0, 245, 255, 0.12), transparent 40%);\n pointer-events: none;\n}\n\n.wiz-top {\n padding: var(--space-md) var(--space-lg);\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-md);\n border-bottom: 1px solid var(--color-border-neon);\n position: relative;\n z-index: 1;\n}\n.wiz-step-count {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-xs);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-text-dim, #6b6b7a);\n flex: 1;\n text-align: center;\n}\n.wiz-skip {\n font-family: var(--font-display);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n background: none;\n border: none;\n font-weight: 500;\n cursor: pointer;\n padding: var(--space-xs) var(--space-sm);\n}\n.wiz-skip:hover { color: var(--color-text-white); }\n\n.wiz-progress {\n display: flex;\n gap: var(--space-xs);\n padding: var(--space-sm) var(--space-lg);\n position: relative;\n z-index: 1;\n}\n.wiz-seg {\n flex: 1;\n height: 3px;\n background: var(--color-dark-surface);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n.wiz-seg.filled {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n}\n.wiz-seg.active .wiz-seg-inner {\n height: 100%;\n width: 60%;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n border-radius: var(--radius-full);\n}\n\n.wiz-frame {\n flex: 1;\n overflow-y: auto;\n position: relative;\n z-index: 1;\n}\n.wiz-frame[hidden] { display: none; }\n\n.wiz-body {\n padding: var(--space-lg);\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n max-width: 720px;\n margin: 0 auto;\n}\n\n.wiz-eyebrow {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-accent-secondary);\n}\n.wiz-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-3xl);\n line-height: 1.15;\n letter-spacing: -0.01em;\n color: var(--color-text-white);\n}\n.wiz-sub {\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-base);\n line-height: 1.5;\n}\n.wiz-hint { font-size: var(--font-size-sm); margin-top: var(--space-xs); }\n.wiz-hint a { color: var(--color-accent-secondary); text-decoration: underline; }\n\n.wiz-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n\n/* Speaker / playlist rows */\n.wiz-row {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: var(--transition-fast);\n color: var(--color-text-white);\n text-align: left;\n width: 100%;\n font-family: var(--font-body);\n}\n.wiz-row:hover { background: var(--color-dark-surface-hover); }\n.wiz-row.selected {\n background: linear-gradient(90deg, rgba(255, 45, 106, 0.15), rgba(0, 245, 255, 0.05));\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 14px rgba(255, 45, 106, 0.25);\n}\n.wiz-row-avatar {\n width: 36px;\n height: 36px;\n border-radius: var(--radius-md);\n background: linear-gradient(135deg, var(--color-accent-primary), var(--color-accent-brand));\n flex-shrink: 0;\n display: grid;\n place-items: center;\n color: var(--color-bg-primary);\n}\n.wiz-row-avatar-icon {\n width: 20px;\n height: 20px;\n}\n.wiz-row-text { flex: 1; min-width: 0; }\n.wiz-row-name {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.wiz-row-sub {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n}\n.wiz-row-check {\n color: var(--color-success-neon);\n text-shadow: var(--glow-success);\n}\n\n/* Provider grid (Step 2) */\n.wiz-provider-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-sm);\n}\n.wiz-provider-chip {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n cursor: pointer;\n color: var(--color-text-white);\n transition: var(--transition-fast);\n}\n.wiz-provider-chip:hover { background: var(--color-dark-surface-hover); }\n.wiz-provider-chip.active {\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 14px rgba(255, 45, 106, 0.25);\n}\n.wiz-provider-chip.connected {\n border-color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.1);\n}\n\n/* Dimmed chip: provider not supported on the selected speaker (#772).\n Visible but obviously unavailable \u2014 clicking opens the explainer card. */\n.wiz-provider-chip {\n justify-content: space-between;\n}\n.wiz-provider-chip.disabled {\n opacity: 0.4;\n cursor: help;\n background: rgba(255, 255, 255, 0.02);\n}\n.wiz-provider-chip.disabled:hover {\n opacity: 0.55;\n background: rgba(255, 255, 255, 0.04);\n}\n.wiz-provider-chip .chip-lock {\n width: 14px;\n height: 14px;\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n/* Capability badge under the speaker platform label (Step 1, #772). */\n.wiz-row-sub .cap-dot {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: var(--color-text-dim);\n display: inline-block;\n margin: 0 6px;\n vertical-align: middle;\n}\n.wiz-row-sub .cap-badge {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n padding: 1px 6px;\n border-radius: var(--radius-sm);\n border: 1px solid;\n vertical-align: middle;\n /* #1319: the badge text itself never wraps \u2014 summaries keep it short, the\n accent cases (\"Spotify only\") are short by construction. */\n white-space: nowrap;\n}\n.wiz-row-sub .cap-badge.full {\n color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.08);\n border-color: rgba(57, 255, 20, 0.4);\n}\n.wiz-row-sub .cap-badge.partial {\n color: var(--color-warning-alt);\n background: rgba(255, 102, 0, 0.08);\n border-color: rgba(255, 102, 0, 0.4);\n}\n.wiz-row-sub .cap-badge.none {\n color: var(--color-error-neon);\n background: rgba(255, 0, 64, 0.08);\n border-color: rgba(255, 0, 64, 0.4);\n}\n/* #1319: multi-service capability is static info, not actionable \u2014 drop the\n orange/uppercase/pill chrome so the speaker name stays the hero. Muted,\n borderless, plain-case secondary text. The full list lives on the tooltip. */\n.wiz-row-sub .cap-badge.summary {\n color: var(--color-text-dim);\n background: none;\n border: none;\n padding: 0;\n text-transform: none;\n letter-spacing: 0;\n font-weight: 500;\n}\n\n/* Explainer card shown when user clicks a dimmed provider chip (#772). */\n.wiz-explainer {\n margin-top: var(--space-md);\n padding: var(--space-lg);\n border-radius: var(--radius-lg);\n background: linear-gradient(135deg, rgba(255, 102, 0, 0.06), rgba(0, 245, 255, 0.04));\n border: 1px solid rgba(255, 102, 0, 0.35);\n}\n.wiz-explainer[hidden] { display: none; }\n.wiz-explainer-title {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-md);\n margin: 0 0 var(--space-sm);\n}\n.wiz-explainer-title .icon { font-size: 18px; }\n.wiz-explainer-body {\n font-size: var(--font-size-base);\n line-height: 1.55;\n color: var(--color-text-neon-muted);\n margin: 0 0 var(--space-md);\n}\n.wiz-explainer-steps {\n margin: 0 0 var(--space-md);\n padding-left: var(--space-lg);\n font-size: var(--font-size-base);\n line-height: 1.75;\n color: var(--color-text-neon-muted);\n}\n.wiz-explainer-steps li strong { color: var(--color-text-white); }\n.wiz-explainer-actions {\n display: flex;\n gap: var(--space-sm);\n flex-wrap: wrap;\n}\n.wiz-explainer-footer {\n margin: var(--space-md) 0 0;\n padding-top: var(--space-sm);\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n font-size: var(--font-size-sm);\n color: var(--color-text-dim);\n font-style: italic;\n}\n\n/* Level-up cards (Step 4) */\n.wiz-lvl-card {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.wiz-lvl-card.on {\n background: rgba(0, 245, 255, 0.08);\n border-color: var(--color-accent-secondary);\n}\n.wiz-lvl-card.unavailable {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.wiz-lvl-text { flex: 1; }\n.wiz-lvl-title {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n color: var(--color-text-white);\n}\n.wiz-lvl-desc {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.4;\n}\n.wiz-lvl-toggle {\n width: 38px;\n height: 22px;\n background: var(--color-dark-surface-hover);\n border-radius: var(--radius-full);\n border: 1px solid var(--color-border-neon);\n position: relative;\n flex-shrink: 0;\n margin-top: 2px;\n}\n.wiz-lvl-toggle::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n background: var(--color-text-neon-muted);\n border-radius: var(--radius-full);\n transition: var(--transition-fast);\n}\n.wiz-lvl-card.on .wiz-lvl-toggle {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n}\n.wiz-lvl-card.on .wiz-lvl-toggle::after {\n left: 18px;\n background: var(--color-bg-primary);\n}\n\n/* Done screen */\n.wiz-done {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-lg);\n text-align: center;\n padding: var(--space-xl);\n position: relative;\n z-index: 1;\n}\n.wiz-done-badge {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-sm);\n letter-spacing: 0.14em;\n color: var(--color-success-neon);\n text-shadow: var(--glow-success);\n}\n.wiz-done-tag {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-xl);\n color: var(--color-text-white);\n}\n.wiz-done-summary {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n width: 100%;\n max-width: 380px;\n padding: var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n}\n.wiz-done-line {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n gap: var(--space-lg);\n font-family: var(--font-display);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n}\n.wiz-done-line > span {\n letter-spacing: 0.08em;\n text-transform: uppercase;\n font-size: var(--font-size-xs);\n font-weight: 600;\n flex-shrink: 0;\n}\n.wiz-done-line strong {\n color: var(--color-text-white);\n font-weight: 600;\n text-align: right;\n word-break: break-word;\n}\n.wiz-done-demo {\n width: 100%;\n max-width: 400px;\n aspect-ratio: 16/9;\n border: 1px solid var(--color-accent-primary);\n border-radius: var(--radius-xl);\n background: var(--color-bg-primary);\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n box-shadow: 0 0 30px rgba(255, 45, 106, 0.3);\n}\n.wiz-done-demo-label {\n font-family: var(--font-display);\n font-size: var(--font-size-xs);\n font-weight: 600;\n color: var(--color-text-neon-muted);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n}\n.wiz-done-demo-year {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 64px;\n line-height: 0.9;\n color: var(--color-accent-primary);\n text-shadow: 0 0 24px rgba(255, 45, 106, 0.6);\n letter-spacing: -0.03em;\n}\n.wiz-done-demo-song {\n font-family: var(--font-display);\n font-size: var(--font-size-sm);\n font-weight: 600;\n color: var(--color-text-neon-muted);\n}\n\n/* CTA bar */\n.wiz-cta {\n padding: var(--space-md) var(--space-lg);\n display: flex;\n gap: var(--space-sm);\n border-top: 1px solid var(--color-border-neon);\n background: rgba(0, 0, 0, 0.3);\n position: relative;\n z-index: 1;\n}\n.wiz-cta .btn { flex: 1; }\n.wiz-cta .wiz-back { flex: 0 0 auto; min-width: 80px; }\n\n/* On step 3 the Playlist Hub renders its own CTA + detail sheet flush\n to the viewport bottom. wizard.js hides the legacy wiz-next/wiz-back\n buttons individually, but the wrapper itself stays visible \u2014 a ~33px\n tall empty band with padding + border + semi-opaque background pinned\n to the viewport bottom. Because `.wiz-cta` (z-1) is later in the DOM\n than `.wiz-frame` (z-1) at the same z-index inside `.wizard-takeover`,\n it paints on top of the wiz-frame subtree, including the playlist\n hub's `.plh-sheet-host`. (The host's z-50 only counts inside\n `.plh-root`'s `isolation: isolate` stacking context, not against\n wiz-cta.) The detail sheet's footer button at viewport bottom\n appeared clipped by the band. Drop the band on step 3 \u2014 the hub\n owns the chrome there. */\n.wiz-frame-playlist:not([hidden]) ~ .wiz-cta {\n display: none;\n}\n\n/* Finish-setup pill in admin header */\n.finish-setup-pill {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.1);\n border: 1px solid rgba(255, 45, 106, 0.4);\n border-radius: var(--radius-full);\n padding: var(--space-xs) var(--space-md);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.finish-setup-pill:hover {\n background: rgba(255, 45, 106, 0.2);\n box-shadow: var(--glow-primary);\n}\n.finish-setup-pill.hidden { display: none; }\n\n/* Reduced-motion: collapse glow pulses to a single static state */\n@media (prefers-reduced-motion: reduce) {\n .wizard-takeover,\n .wizard-takeover * {\n animation: none !important;\n transition: none !important;\n }\n}\n\n/* Wizard Step 3 \u2014 game-mode form fields */\n.wiz-field {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n}\n.wiz-field-label {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-xs);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.wiz-chip-group {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-xs);\n}\n.wiz-chip {\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-text-white);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.wiz-chip:hover { background: var(--color-dark-surface-hover); }\n.wiz-chip.active {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n color: var(--color-bg-primary);\n box-shadow: var(--glow-primary);\n}\n\n/* Step 3 \u2014 \"Request new playlist\" CTA below the playlist list */\n.wiz-request-playlist {\n margin-top: var(--space-md);\n align-self: flex-start;\n}\n\n/* When wizard is active, lift modals above the takeover overlay */\nbody.wizard-active .modal { z-index: calc(var(--z-overlay) + 10); }\n\n.wiz-difficulty-hint {\n margin-top: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: rgba(0, 245, 255, 0.06);\n border-left: 2px solid var(--color-accent-secondary);\n border-radius: var(--radius-sm);\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-sm);\n line-height: 1.5;\n min-height: 1.5em;\n}\n\n/* #1475 \u2014 number field revealed by the \"Custom\" round-count chip */\n.wiz-rounds-custom {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n margin-top: var(--space-sm);\n}\n\n.wiz-rounds-custom input {\n width: 6em;\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-sm);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n}\n\n.wiz-rounds-custom input:focus {\n outline: none;\n border-color: var(--color-accent-primary);\n}\n\n.wiz-rounds-custom span {\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-sm);\n}\n\n/* Wizard Step 5 \u2014 expandable detail panels under level-up toggles */\n.wiz-lvl-card {\n flex-direction: column;\n align-items: stretch;\n padding: 0;\n}\n.wiz-lvl-head {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n cursor: pointer;\n user-select: none;\n}\n.wiz-lvl-card.unavailable .wiz-lvl-head { cursor: not-allowed; }\n.wiz-lvl-head:hover { background: rgba(255,255,255,0.02); }\n.wiz-lvl-card.on .wiz-lvl-head { border-bottom: 1px solid var(--color-border-neon); }\n\n.wiz-detail {\n padding: var(--space-md);\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n background: rgba(0,0,0,0.15);\n}\n.wiz-detail-checks {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n}\n.wiz-detail-check {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: 6px 8px;\n border-radius: var(--radius-md);\n cursor: pointer;\n}\n.wiz-detail-check:hover { background: rgba(255,255,255,0.03); }\n.wiz-detail-check input[type=\"checkbox\"] {\n accent-color: var(--color-accent-primary);\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n.wiz-detail-check-name {\n font-family: var(--font-display);\n font-weight: 500;\n font-size: var(--font-size-sm);\n color: var(--color-text-white);\n}\n.wiz-detail-empty {\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n padding: var(--space-sm);\n background: var(--color-dark-surface);\n border: 1px dashed var(--color-border-neon);\n border-radius: var(--radius-md);\n text-align: center;\n}\n.wiz-detail-input {\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-md);\n color: var(--color-text-white);\n font-family: ui-monospace, monospace;\n font-size: var(--font-size-sm);\n}\n.wiz-detail-input:focus {\n outline: none;\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 0 3px rgba(0,245,255,0.15);\n}\n.wiz-field-hint {\n font-size: var(--font-size-xs);\n color: var(--color-text-dim);\n line-height: 1.4;\n}\n\n/* ==========================================\n Home view (post-wizard lobby landing)\n ========================================== */\n\n/* When body is in home-mode: show the home-view card, hide only the setup/config sections.\n Runtime views (#admin-playing-*, #admin-reveal-*, #admin-end-*) stay untouched \u2014\n home-mode is exited before any of those show anyway. */\n/* #1138 cleanup: #my-requests + #ha-entities selectors removed \u2014 those legacy\n flat sections were deleted from admin.html. */\nbody.home-mode #media-players,\nbody.home-mode #music-service,\nbody.home-mode #playlists,\nbody.home-mode #game-settings,\nbody.home-mode #party-lights,\nbody.home-mode #tts-settings,\nbody.home-mode .admin-content > .admin-actions {\n display: none !important;\n}\n/* Variant A \u2014 QR Hero aesthetic for the home-view.\n Centered stage, glowing hero card, dual CTA bar. QR + player chips render\n inline via BeatifyHome.renderSession once Start game creates the session. */\n.home-view { display: none; }\n.home-view.hidden { display: none !important; }\nbody.home-mode #home-view,\nbody.home-mode .home-view {\n display: flex;\n flex-direction: column;\n min-height: calc(100vh - 120px);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--space-md);\n}\n\n.home-stage {\n flex: 1;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-md);\n padding: var(--space-xl) var(--space-lg);\n text-align: center;\n}\n.home-stage-bg {\n position: absolute;\n inset: 0;\n pointer-events: none;\n background:\n radial-gradient(ellipse at center, rgba(255, 45, 106, 0.15), transparent 55%),\n radial-gradient(ellipse at bottom, rgba(0, 245, 255, 0.08), transparent 50%);\n}\n\n.home-eyebrow {\n position: relative;\n z-index: 1;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-sm);\n letter-spacing: 0.16em;\n text-transform: uppercase;\n color: var(--color-accent-secondary);\n}\n\n.home-headline {\n position: relative;\n z-index: 1;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n line-height: 0.95;\n letter-spacing: -0.02em;\n margin: 0;\n text-shadow: 0 0 40px rgba(255, 45, 106, 0.35);\n}\n.home-headline-sub {\n display: block;\n font-weight: 600;\n font-size: var(--font-size-xl);\n letter-spacing: 0.02em;\n text-shadow: none;\n color: var(--color-text-white);\n margin-top: 4px;\n}\n\n/* Hero card \u2014 visual placeholder for the QR that appears after Start */\n.home-hero-card {\n position: relative;\n z-index: 1;\n padding: var(--space-lg);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-accent-primary);\n border-radius: var(--radius-2xl);\n box-shadow: 0 0 32px rgba(255, 45, 106, 0.22);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n max-width: 280px;\n width: 100%;\n}\n.home-qr-loading {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n padding: var(--space-xl) 0;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n.home-qr-loading.hidden { display: none; }\n.home-qr-container {\n padding: 8px;\n background: var(--color-bg-white);\n border-radius: var(--radius-md);\n display: grid;\n place-items: center;\n min-width: 180px;\n min-height: 180px;\n}\n.home-qr-container:empty { display: none; }\n.home-qr-container img, .home-qr-container canvas {\n display: block;\n max-width: 180px;\n height: auto;\n}\n.home-hero-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n letter-spacing: -0.01em;\n}\n.home-hero-sub {\n font-size: var(--font-size-sm);\n color: var(--color-accent-secondary);\n font-family: ui-monospace, monospace;\n word-break: break-all;\n max-width: 260px;\n}\n\n/* Live player tiles \u2014 Jackbox-style grid. Host wears the pink-primary\n \"leader\" treatment (DESIGN.md); guests cycle through the brand neon\n palette (cyan \u2192 green \u2192 orange) so each player reads distinctly. */\n.home-players {\n position: relative;\n z-index: 1;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));\n gap: var(--space-sm);\n justify-items: center;\n width: 100%;\n max-width: 380px;\n margin-top: var(--space-lg);\n}\n.home-players:empty { display: none; }\n\n.home-player-tile {\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n padding: var(--space-sm);\n border-radius: var(--radius-lg);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n background: linear-gradient(135deg, var(--tile-from), var(--tile-to));\n border: 1.5px solid var(--tile-border);\n box-shadow: 0 0 14px var(--tile-glow);\n /* Guest default = cyan (c1). Variants override via custom props. */\n --tile-from: rgba(0, 245, 255, 0.32);\n --tile-to: rgba(0, 245, 255, 0.08);\n --tile-border: rgba(0, 245, 255, 0.7);\n --tile-glow: rgba(0, 245, 255, 0.35);\n}\n.home-player-tile-initial {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 28px;\n line-height: 1;\n color: var(--color-text-white);\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n}\n.home-player-tile-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n color: var(--color-text-white);\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0 2px;\n}\n/* Guest color variants cycle through brand neon palette (no purple \u2014\n reserved for analytics/steal per DESIGN.md). */\n.home-player-tile--c2 {\n --tile-from: rgba(57, 255, 20, 0.32);\n --tile-to: rgba(57, 255, 20, 0.08);\n --tile-border: rgba(57, 255, 20, 0.65);\n --tile-glow: rgba(57, 255, 20, 0.32);\n}\n.home-player-tile--c3 {\n --tile-from: rgba(255, 102, 0, 0.32);\n --tile-to: rgba(255, 102, 0, 0.08);\n --tile-border: rgba(255, 102, 0, 0.65);\n --tile-glow: rgba(255, 102, 0, 0.32);\n}\n.home-player-tile--c4 {\n --tile-from: rgba(0, 245, 255, 0.22);\n --tile-to: rgba(0, 245, 255, 0.04);\n --tile-border: rgba(0, 245, 255, 0.5);\n --tile-glow: rgba(0, 245, 255, 0.22);\n}\n/* Host tile \u2014 pink primary + glow-primary (DESIGN.md \"leader highlights\"). */\n.home-player-tile--host {\n --tile-from: rgba(255, 45, 106, 0.35);\n --tile-to: rgba(255, 45, 106, 0.08);\n --tile-border: rgba(255, 45, 106, 0.85);\n --tile-glow: rgba(255, 45, 106, 0.5);\n box-shadow: var(--glow-primary), 0 0 22px rgba(255, 45, 106, 0.35);\n}\n.home-player-tile-crown {\n position: absolute;\n top: -10px;\n right: -10px;\n font-size: 20px;\n line-height: 1;\n filter: drop-shadow(0 0 6px rgba(255, 45, 106, 0.8));\n pointer-events: none;\n}\n/* Empty-state: single full-width dashed pill (not a tile, to keep the\n \"no one here yet\" vibe distinct from \"someone is here\"). */\n.home-players-waiting {\n grid-column: 1 / -1;\n padding: var(--space-md);\n border-radius: var(--radius-full);\n border: 1px dashed var(--color-border-neon);\n background: transparent;\n color: var(--color-text-dim);\n font-family: var(--font-display);\n font-weight: 500;\n font-size: var(--font-size-sm);\n text-align: center;\n}\n\n.home-meta {\n position: relative;\n z-index: 1;\n font-family: var(--font-display);\n font-weight: 500;\n font-size: var(--font-size-xs);\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--color-text-dim);\n max-width: 320px;\n line-height: 1.6;\n}\n\n/* Sticky CTA bar at the bottom of the home card */\n.home-cta-bar {\n display: flex;\n /* #2365: lets the guard on `.beatify-banner` actually take effect, and on\n a narrow phone lets the buttons themselves wrap rather than squeeze. */\n flex-wrap: wrap;\n gap: var(--space-sm);\n padding: var(--space-md) var(--space-lg);\n background: rgba(0, 0, 0, 0.3);\n border-top: 1px solid var(--color-border-neon);\n}\n.home-cta-edit {\n padding: var(--space-sm) var(--space-md);\n font-size: var(--font-size-sm);\n}\n.home-cta-start {\n flex: 1;\n padding: var(--space-md);\n font-size: var(--font-size-base);\n box-shadow: var(--glow-primary), 0 0 40px rgba(255, 45, 106, 0.25);\n}\n/* When Start game is demoted (admin hasn't joined yet), drop its glow so the eye\n lands on the prominent \"Join as player\" CTA instead. */\n.home-cta-start.btn-ghost { box-shadow: none; flex: 0 0 auto; }\n\n/* Prominent Join-as-player CTA \u2014 lives above the Back/Start row inside the\n home-stage column. Full-width + oversized so the admin's next step is\n unmissable (it's the single most important action on the home-view). */\n.home-cta-join {\n width: 100%;\n margin-top: var(--space-md);\n padding: var(--space-lg) var(--space-md);\n font-size: var(--font-size-xl);\n font-weight: 700;\n letter-spacing: 0.02em;\n border-radius: var(--radius-xl);\n box-shadow: var(--glow-primary), 0 0 48px rgba(255, 45, 106, 0.3);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n}\n.home-cta-join svg {\n width: 26px;\n height: 26px;\n stroke-width: 2.25;\n}\n.home-cta-join.hidden { display: none; }\n\n/* Wizard Step 4 \u2014 game mode cards (Artist Challenge / Intro Mode / Closest Wins) */\n.wiz-mode-cards {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n}\n.wiz-mode-card {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.wiz-mode-card:hover { background: var(--color-dark-surface-hover); }\n/* Issue #827: a mode card disabled by an unmet requirement (e.g. Sudden Death\n below the 3-player floor) is dimmed and non-interactive.\n Issue #1799: the dimming used to sit on the card itself, which also dimmed\n the line explaining WHY it is blocked \u2014 the one line that has to stay\n readable. Dim the card's own content instead and leave .wiz-mode-hint.gated\n at full contrast. */\n.wiz-mode-card.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n.wiz-mode-card.disabled .wiz-mode-icon,\n.wiz-mode-card.disabled .wiz-mode-title,\n.wiz-mode-card.disabled .wiz-lvl-toggle {\n opacity: 0.45;\n}\n/* Issue #1799: the gating requirement, shown in place of the mode hint. It is\n the only visible explanation on touch (no hover \u2192 no title tooltip). */\n.wiz-mode-hint.gated {\n color: var(--color-warning);\n font-weight: 600;\n}\n.wiz-mode-card.on {\n background: rgba(255, 45, 106, 0.08);\n border-color: var(--color-accent-primary);\n}\n.wiz-mode-icon {\n font-size: 22px;\n line-height: 1;\n flex-shrink: 0;\n margin-top: 2px;\n}\n.wiz-mode-body { flex: 1; min-width: 0; }\n.wiz-mode-title {\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-base);\n color: var(--color-text-white);\n}\n.wiz-mode-hint {\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.45;\n}\n.wiz-mode-card.on .wiz-lvl-toggle {\n background: var(--color-accent-primary);\n border-color: var(--color-accent-primary);\n}\n.wiz-mode-card.on .wiz-lvl-toggle::after {\n left: 18px;\n background: var(--color-bg-primary);\n}\n\n/* Wizard Step 4 \u2014 core game-mode selector (#1180).\n \"Pick your game\" split: two poster panels, each with its own accent\n (year = pink, title&artist = cyan). The chosen one lifts + glows and shows a\n \"Playing\" badge; the other dims. Shared .wiz-mode-* type rules are overridden\n only inside .wiz-coremode-card so the bonus-mode cards are unaffected. */\n.wiz-coremode-cards {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--space-sm);\n}\n.wiz-coremode-card {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 6px;\n padding: var(--space-md) var(--space-sm);\n background: var(--color-dark-surface);\n border: 1.5px solid var(--color-border-neon);\n border-radius: var(--radius-xl);\n cursor: pointer;\n overflow: hidden;\n transition: transform var(--transition-fast), box-shadow var(--transition-fast),\n background var(--transition-fast), border-color var(--transition-fast),\n opacity var(--transition-fast);\n}\n.wiz-coremode-card:hover { background: var(--color-dark-surface-hover); }\n.wiz-coremode-card .wiz-mode-icon {\n font-size: 32px;\n margin-top: 0;\n}\n.wiz-coremode-card .wiz-mode-body { flex: none; }\n.wiz-coremode-card .wiz-mode-title {\n font-weight: 900;\n letter-spacing: 0.02em;\n text-transform: uppercase;\n}\n.wiz-coremode-card .wiz-mode-hint { color: var(--color-text-dim); }\n\n/* Selected \u2014 accent fill + lift + glow, per mode. */\n.wiz-coremode-card.selected { transform: translateY(-2px); }\n.wiz-coremode-card--pink.selected {\n border-color: var(--color-accent-primary);\n background: radial-gradient(120% 100% at 50% 0%, rgba(255, 45, 106, 0.22), rgba(255, 45, 106, 0.04));\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.30);\n}\n.wiz-coremode-card--cyan.selected {\n border-color: var(--color-accent-secondary);\n background: radial-gradient(120% 100% at 50% 0%, rgba(0, 245, 255, 0.20), rgba(0, 245, 255, 0.03));\n box-shadow: 0 0 24px rgba(0, 245, 255, 0.28);\n}\n\n/* Unselected \u2014 dimmed, but lifts toward full on hover so it still feels pickable. */\n.wiz-coremode-card.dim { opacity: 0.5; }\n.wiz-coremode-card.dim:hover { opacity: 0.8; }\n\n/* \"Playing\" badge, top-right, tinted to the panel's accent. */\n.wiz-coremode-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 9px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n padding: 2px 7px;\n border-radius: var(--radius-full);\n}\n.wiz-coremode-card--pink .wiz-coremode-badge {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n}\n.wiz-coremode-card--cyan .wiz-coremode-badge {\n background: var(--color-accent-secondary);\n color: #04222a;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .wiz-coremode-card { transition: none; }\n .wiz-coremode-card.selected { transform: none; }\n}\n\n/* Home-view: Cast to TV link */\n.home-cast-link {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-accent-secondary);\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-accent-secondary);\n text-decoration: none;\n position: relative;\n z-index: 1;\n transition: var(--transition-fast);\n}\n.home-cast-link:hover {\n background: rgba(0, 245, 255, 0.08);\n box-shadow: var(--glow-secondary);\n}\n.home-cast-link.hidden { display: none; }\n\n/* Wizard Step 5: TTS test button */\n.wiz-detail-test {\n align-self: flex-start;\n margin-top: var(--space-xs);\n padding: var(--space-xs) var(--space-md);\n font-size: var(--font-size-xs);\n}\n.wiz-detail-test[disabled] { opacity: 0.5; cursor: not-allowed; }\n\n/* Wizard Step 5: WLED phase preset grid */\n.wiz-wled-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-xs);\n}\n.wiz-wled-row {\n display: flex;\n align-items: center;\n gap: var(--space-xs);\n}\n.wiz-wled-phase {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 10px;\n letter-spacing: 0.1em;\n color: var(--color-text-dim);\n min-width: 72px;\n}\n.wiz-wled-input {\n width: 60px;\n padding: 4px 8px;\n text-align: center;\n font-family: ui-monospace, monospace;\n font-size: var(--font-size-sm);\n}\n\n\n/* Home-view utility row \u2014 Cast to TV + Print QR sit side-by-side */\n.home-utility-row {\n display: flex;\n gap: var(--space-sm);\n flex-wrap: wrap;\n justify-content: center;\n position: relative;\n z-index: 1;\n}\n.home-utility-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--space-xs);\n padding: var(--space-xs) var(--space-md);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 600;\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n cursor: pointer;\n transition: var(--transition-fast);\n}\n.home-utility-btn:hover {\n color: var(--color-text-white);\n border-color: var(--color-accent-secondary);\n}\n.home-utility-btn.hidden { display: none; }\n\n/* End game button \u2014 only visible when a LOBBY session exists. Red-neon tint. */\n.home-cta-end {\n border-color: rgba(255, 0, 64, 0.4);\n color: var(--color-error-neon);\n}\n.home-cta-end:hover {\n background: rgba(255, 0, 64, 0.1);\n box-shadow: 0 0 12px rgba(255, 0, 64, 0.3);\n}\n.home-cta-end.hidden { display: none; }\n\n/* Home-view unconfigured state \u2014 setup prompt hero */\n.home-hero-card--setup {\n border-color: var(--color-border-neon);\n box-shadow: none;\n gap: var(--space-md);\n}\n.home-setup-glyph {\n width: 56px;\n height: 56px;\n display: grid;\n place-items: center;\n color: var(--color-accent-secondary);\n text-shadow: 0 0 12px rgba(0, 245, 255, 0.4);\n}\n.home-setup-glyph svg { width: 100%; height: 100%; }\n.home-hero-sub--plain {\n color: var(--color-text-neon-muted);\n font-family: var(--font-body);\n text-align: center;\n font-size: var(--font-size-sm);\n line-height: 1.5;\n max-width: 280px;\n}\n\n/* Setup-mode CTA takes the full width of the bar */\n.home-cta-setup {\n flex: 1;\n padding: var(--space-md);\n font-size: var(--font-size-base);\n box-shadow: var(--glow-primary), 0 0 40px rgba(255, 45, 106, 0.25);\n}\n.home-cta-setup.hidden { display: none; }\n\n/* ==========================================================================\n Player Onboarding v2 (DESIGN.md \u00A7 Player onboarding \u2014 post-QR education)\n ========================================================================== */\n\n/* Hide the outer .player-header (wordmark + connection indicator) on the\n tour/ready screens so they run full-screen \u2014 the ready view has its own\n wordmark hero and the tour has its own step-progress header. */\nbody.is-learning-screen .player-header { display: none; }\n/* During active play (the guessing round + the reveal) the big wordmark is\n redundant chrome and just eats vertical space, so hide the outer header \u2014\n the game/reveal cards carry their own context. Branding stays on the\n join / lobby / end screens. */\nbody.is-ingame .player-header { display: none; }\n\n/* Tour view \u2014 full-screen takeover, dark stage + dual-radial glow */\n#tour-view.view:not(.hidden) {\n display: flex;\n flex-direction: column;\n}\n.tour-container {\n min-height: 100vh;\n padding: var(--space-xl) var(--space-md) var(--space-md);\n background:\n radial-gradient(circle at 50% 10%, rgba(255, 45, 106, 0.10), transparent 55%),\n radial-gradient(circle at 85% 90%, rgba(0, 245, 255, 0.08), transparent 55%),\n var(--color-bg-primary);\n display: flex;\n flex-direction: column;\n}\n\n/* Wizard-style progress header (matches admin first-run wizard pattern) */\n.tour-header-wiz {\n margin-bottom: var(--space-lg);\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n}\n.tour-step-count {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 600;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.tour-step-count .of { color: var(--color-text-dim); font-weight: 500; }\n.tour-skip-link {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 500;\n color: var(--color-text-dim);\n background: transparent;\n border: 0;\n cursor: pointer;\n padding: var(--space-xs) var(--space-sm);\n transition: color var(--transition-fast);\n}\n.tour-skip-link:hover,\n.tour-skip-link:focus-visible {\n color: var(--color-text-neon-muted);\n outline: none;\n}\n.tour-wiz-progress {\n display: flex;\n gap: 4px;\n width: 100%;\n}\n.tour-wiz-seg {\n flex: 1;\n height: 3px;\n background: rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-full);\n overflow: hidden;\n position: relative;\n}\n.tour-wiz-seg.filled {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n}\n.tour-wiz-seg.active .tour-wiz-seg-inner {\n height: 100%;\n width: 60%;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.5);\n border-radius: var(--radius-full);\n}\n\n/* Tour card \u2014 one per step */\n.tour-card {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--space-md) 0;\n animation: tour-card-enter var(--transition-slow) ease-out;\n}\n@keyframes tour-card-enter {\n from { opacity: 0; transform: translateY(12px); }\n to { opacity: 1; transform: translateY(0); }\n}\n.tour-card.hidden { display: none; }\n@media (prefers-reduced-motion: reduce) {\n .tour-card { animation: none; }\n}\n\n.tour-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 2.5rem; /* ~40px \u2014 scales between 4xl and display */\n line-height: 1.0;\n text-align: center;\n color: var(--color-text-white);\n letter-spacing: -0.02em;\n margin-bottom: var(--space-sm);\n}\n.tour-caption {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: var(--font-size-lg);\n text-align: center;\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-xl);\n max-width: 320px;\n}\n\n.tour-preview {\n flex: 1;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-md);\n margin-bottom: var(--space-md);\n}\n\n/* Preview: year slider (card 1) */\n.tour-preview-album {\n width: 88px; height: 88px;\n border-radius: var(--radius-lg);\n background: linear-gradient(135deg, #2a1b4a 0%, #1a1a24 100%);\n border: 1px solid rgba(255, 255, 255, 0.08);\n display: flex; align-items: center; justify-content: center;\n position: relative;\n overflow: hidden;\n}\n.tour-preview-album::after {\n content: '';\n position: absolute;\n width: 32px; height: 32px;\n border-radius: 50%;\n background: radial-gradient(circle, #0a0a12 28%, #2a2a3a 29%, #2a2a3a 62%, #0a0a12 63%);\n border: 1px solid rgba(255, 255, 255, 0.08);\n}\n.tour-preview-album::before {\n content: '\u266A';\n position: absolute;\n font-size: 26px;\n color: var(--color-accent-secondary);\n opacity: 0.75;\n z-index: 1;\n}\n.tour-year-display {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-md);\n}\n.tour-year-adjust {\n width: 38px; height: 38px;\n border-radius: 50%;\n border: 1.5px solid rgba(255, 255, 255, 0.25);\n background: transparent;\n color: rgba(255, 255, 255, 0.6);\n font-size: var(--font-size-xl);\n font-weight: 400;\n display: flex; align-items: center; justify-content: center;\n}\n.tour-year-big {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 4.25rem; /* ~68px \u2014 below year reveal's 56px per DESIGN.md rationale */\n color: var(--color-accent-secondary);\n text-shadow: 0 0 24px rgba(0, 245, 255, 0.6);\n line-height: 1;\n letter-spacing: -0.03em;\n}\n.tour-preview-slider {\n width: 100%;\n max-width: 320px;\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n}\n.tour-slider-label {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: rgba(255, 255, 255, 0.5);\n min-width: 34px;\n text-align: center;\n}\n.tour-slider-track {\n flex: 1;\n height: 4px;\n background: rgba(255, 255, 255, 0.15);\n border-radius: 2px;\n position: relative;\n}\n.tour-slider-thumb {\n position: absolute;\n top: 50%;\n left: 45.3%;\n transform: translate(-50%, -50%);\n width: 20px; height: 20px;\n border-radius: 50%;\n background: var(--color-accent-secondary);\n box-shadow: 0 0 16px rgba(0, 245, 255, 0.8);\n border: 2px solid var(--color-bg-primary);\n}\n\n/* Preview: bet (card 2) */\n.tour-bet-button {\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.12), rgba(255, 45, 106, 0.06));\n border: 2px solid var(--color-accent-primary);\n border-radius: var(--radius-xl);\n padding: var(--space-md) var(--space-lg);\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.35);\n}\n.tour-bet-button .tour-bet-dice {\n font-size: 30px;\n filter: drop-shadow(0 0 6px rgba(255, 45, 106, 0.6));\n}\n.tour-bet-button .tour-bet-label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n}\n.tour-bet-score {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-surface);\n border-radius: var(--radius-md);\n border: 1px solid rgba(255, 255, 255, 0.06);\n}\n.tour-bet-score-base {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-2xl);\n color: var(--color-text-neon-muted);\n}\n.tour-bet-score-op { color: var(--color-text-dim); font-size: var(--font-size-lg); }\n.tour-bet-score-multi {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-2xl);\n color: var(--color-accent-primary);\n}\n.tour-bet-score-final {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n color: var(--color-success-neon);\n text-shadow: 0 0 12px rgba(57, 255, 20, 0.5);\n}\n\n/* Preview: steal (card 3) */\n.tour-steal-button {\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.12), rgba(0, 245, 255, 0.04));\n border: 2px solid var(--color-accent-secondary);\n border-radius: var(--radius-xl);\n padding: var(--space-md) var(--space-lg);\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n box-shadow: 0 0 24px rgba(0, 245, 255, 0.4);\n}\n.tour-steal-button .tour-steal-ninja { font-size: 30px; }\n.tour-steal-button .tour-steal-label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n}\n.tour-steal-targets {\n display: flex;\n gap: var(--space-sm);\n align-items: center;\n}\n.tour-steal-target {\n background: var(--color-bg-surface);\n border-radius: var(--radius-md);\n padding: var(--space-sm) var(--space-md);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 500;\n color: var(--color-text-neon-muted);\n border: 1px solid rgba(255, 255, 255, 0.06);\n}\n.tour-steal-target.highlighted {\n color: var(--color-text-white);\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 12px rgba(0, 245, 255, 0.35);\n}\n.tour-hint {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: rgba(255, 255, 255, 0.4);\n text-align: center;\n font-style: italic;\n margin-top: var(--space-xs);\n}\n\n/* Preview: Title & Artist mode (card 5, #1180) */\n.tour-ta-fields {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n width: 100%;\n}\n.tour-ta-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 10px 14px;\n background: linear-gradient(180deg, rgba(255, 45, 106, 0.06), rgba(255, 255, 255, 0.02));\n border: 1px solid rgba(255, 45, 106, 0.22);\n border-radius: var(--radius-lg);\n text-align: left;\n}\n.tour-ta-field-label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.tour-ta-field-val {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: var(--font-size-md);\n color: var(--color-text-white);\n}\n\n/* Preview: artist (card 4) */\n.tour-artist-prompt {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: var(--color-bg-surface);\n border-radius: var(--radius-md);\n border: 1px solid rgba(255, 255, 255, 0.06);\n width: 100%;\n max-width: 320px;\n}\n.tour-artist-prompt .tour-artist-mic { font-size: var(--font-size-xl); }\n.tour-artist-prompt .tour-artist-who {\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n font-weight: 500;\n color: var(--color-text-white);\n}\n.tour-artist-prompt .tour-artist-bonus {\n margin-left: auto;\n background: rgba(34, 197, 94, 0.15);\n color: var(--color-success);\n font-weight: 700;\n font-size: var(--font-size-sm);\n padding: 2px var(--space-sm);\n border-radius: var(--radius-full);\n}\n.tour-artist-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--space-sm);\n width: 100%;\n max-width: 320px;\n}\n.tour-artist-option {\n min-height: 48px;\n padding: var(--space-sm) var(--space-md);\n border: 2px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-md);\n background: var(--color-bg-surface);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: default;\n}\n.tour-artist-option.is-winner {\n background: var(--color-success);\n border-color: var(--color-success);\n color: var(--color-text-white);\n box-shadow: var(--glow-primary);\n}\n\n/* Tour footer: Skip + Next buttons */\n.tour-footer {\n margin-top: auto;\n padding-top: var(--space-md);\n display: flex;\n gap: var(--space-sm);\n align-items: stretch;\n}\n.btn-tour-skip {\n flex: 1;\n background: transparent;\n color: var(--color-text-neon-muted);\n border: 1.5px solid rgba(255, 255, 255, 0.15);\n border-radius: var(--radius-lg);\n padding: var(--space-md) var(--space-md);\n font-family: var(--font-body);\n font-weight: 600;\n font-size: var(--font-size-md);\n cursor: pointer;\n}\n.btn-tour-skip:hover,\n.btn-tour-skip:focus-visible {\n border-color: rgba(255, 255, 255, 0.3);\n color: var(--color-text-white);\n outline: none;\n}\n.btn-tour-next {\n flex: 2;\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n border: none;\n border-radius: var(--radius-lg);\n padding: var(--space-md) var(--space-lg);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-lg);\n box-shadow: var(--glow-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n}\n.btn-tour-next .chev { opacity: 0.85; }\n\n/* Ready view \u2014 showtime transition between tour and lobby */\n#ready-view.view:not(.hidden) {\n display: flex;\n flex-direction: column;\n}\n.ready-container {\n min-height: 100vh;\n padding: var(--space-xl);\n background:\n radial-gradient(circle at 50% 30%, rgba(255, 45, 106, 0.10), transparent 55%),\n radial-gradient(circle at 85% 80%, rgba(0, 245, 255, 0.08), transparent 55%),\n var(--color-bg-primary);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--space-sm);\n}\n.ready-wordmark {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 5rem; /* ~80px \u2014 at hero scale */\n letter-spacing: -0.02em;\n margin-bottom: var(--space-sm);\n text-shadow: 0 0 48px rgba(255, 45, 106, 0.55);\n animation: ready-wordmark-in 0.5s ease-out;\n}\n.ready-wordmark .beat { color: var(--color-text-white); }\n.ready-wordmark .ify {\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n color: transparent;\n}\n@keyframes ready-wordmark-in {\n from { opacity: 0; transform: translateY(16px); }\n to { opacity: 1; transform: translateY(0); }\n}\n.ready-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-3xl);\n color: var(--color-text-white);\n margin-bottom: var(--space-xs);\n animation: ready-fade-in 0.5s ease-out 0.1s both;\n}\n.ready-subtitle {\n font-family: var(--font-body);\n font-size: var(--font-size-md);\n color: var(--color-text-neon-muted);\n margin-bottom: var(--space-2xl);\n animation: ready-fade-in 0.5s ease-out 0.2s both;\n}\n@keyframes ready-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n.ready-waiting {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-md);\n animation: ready-fade-in 0.5s ease-out 0.3s both;\n}\n.ready-pulse {\n position: relative;\n width: 16px; height: 16px;\n border-radius: 50%;\n background: var(--color-accent-secondary);\n box-shadow: 0 0 12px rgba(0, 245, 255, 0.7);\n}\n.ready-pulse::before {\n content: '';\n position: absolute;\n inset: -8px;\n border-radius: 50%;\n border: 2px solid var(--color-accent-secondary);\n opacity: 0.6;\n animation: ready-pulse-ring 1.8s ease-out infinite;\n}\n@keyframes ready-pulse-ring {\n 0% { transform: scale(0.6); opacity: 0.8; }\n 100% { transform: scale(2.4); opacity: 0; }\n}\n@media (prefers-reduced-motion: reduce) {\n .ready-wordmark, .ready-name, .ready-subtitle, .ready-waiting { animation: none; }\n .ready-pulse::before { animation: none; opacity: 0; }\n}\n.ready-label {\n font-family: var(--font-body);\n font-size: var(--font-size-md);\n font-weight: 500;\n color: var(--color-text-white);\n}\n.ready-count {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: var(--color-text-dim);\n}\n\n/* Lobby: Replay-tour link */\n.replay-tour-link {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n background: transparent;\n border: 1px dashed rgba(255, 45, 106, 0.4);\n border-radius: var(--radius-md);\n color: var(--color-accent-primary);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 600;\n text-decoration: none;\n margin-bottom: var(--space-sm);\n cursor: pointer;\n width: 100%;\n transition: all var(--transition-fast);\n}\n.replay-tour-link:hover,\n.replay-tour-link:focus-visible {\n border-color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.05);\n outline: none;\n}\n.replay-tour-link .arrow { margin-left: auto; }\n\n/* Admin home-view: LEARNING player state */\n.home-player-tile--learning {\n border-style: dashed !important;\n opacity: 0.72;\n}\n.home-player-tile-tour {\n position: absolute;\n top: -6px;\n right: -6px;\n background: rgba(0, 245, 255, 0.1);\n color: var(--color-accent-secondary);\n font-family: var(--font-body);\n font-size: 9px;\n font-weight: 700;\n letter-spacing: 0.06em;\n padding: 2px 6px;\n border-radius: var(--radius-full);\n border: 1px solid rgba(0, 245, 255, 0.4);\n box-shadow: 0 0 8px rgba(0, 245, 255, 0.25);\n}\n.home-learning-warning {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-xs);\n padding: var(--space-sm) var(--space-md);\n margin-bottom: var(--space-sm);\n background: rgba(255, 102, 0, 0.08);\n border: 1px solid rgba(255, 102, 0, 0.25);\n border-radius: var(--radius-md);\n color: var(--color-warning-alt);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n font-weight: 500;\n text-align: center;\n}\n.home-learning-warning.hidden { display: none; }\n\n/* ==========================================================================\n Player lobby \u2014 tile grid (mirrors admin .home-player-tile)\n Jackbox-style tiles replace the legacy flat .player-card chips. Host wears\n pink + crown; guests cycle cyan \u2192 green \u2192 orange \u2192 dim-cyan in join order;\n current player gets a cyan \"YOU\" chip in the same top-right slot as the\n crown (they never collide \u2014 is_admin resolves to crown first).\n ========================================================================== */\n.player-tiles-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));\n gap: var(--space-sm);\n justify-items: center;\n width: 100%;\n}\n.player-tiles-grid:empty { display: none; }\n\n.player-tile {\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n padding: var(--space-sm);\n border-radius: var(--radius-lg);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n background: linear-gradient(135deg, var(--tile-from), var(--tile-to));\n border: 1.5px solid var(--tile-border);\n box-shadow: 0 0 14px var(--tile-glow);\n /* Guest default (c1) = cyan. Variants override via custom props. */\n --tile-from: rgba(0, 245, 255, 0.32);\n --tile-to: rgba(0, 245, 255, 0.08);\n --tile-border: rgba(0, 245, 255, 0.7);\n --tile-glow: rgba(0, 245, 255, 0.35);\n transition: box-shadow var(--transition-fast), border-color var(--transition-fast);\n}\n.player-tile-initial {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-3xl);\n line-height: 1;\n color: var(--color-text-white);\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n}\n.player-tile-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xs);\n color: var(--color-text-white);\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0 2px;\n}\n.player-tile--c2 {\n --tile-from: rgba(57, 255, 20, 0.32);\n --tile-to: rgba(57, 255, 20, 0.08);\n --tile-border: rgba(57, 255, 20, 0.65);\n --tile-glow: rgba(57, 255, 20, 0.32);\n}\n.player-tile--c3 {\n --tile-from: rgba(255, 102, 0, 0.32);\n --tile-to: rgba(255, 102, 0, 0.08);\n --tile-border: rgba(255, 102, 0, 0.65);\n --tile-glow: rgba(255, 102, 0, 0.32);\n}\n.player-tile--c4 {\n --tile-from: rgba(0, 245, 255, 0.22);\n --tile-to: rgba(0, 245, 255, 0.04);\n --tile-border: rgba(0, 245, 255, 0.5);\n --tile-glow: rgba(0, 245, 255, 0.22);\n}\n.player-tile--host {\n --tile-from: rgba(255, 45, 106, 0.35);\n --tile-to: rgba(255, 45, 106, 0.08);\n --tile-border: rgba(255, 45, 106, 0.85);\n --tile-glow: rgba(255, 45, 106, 0.5);\n box-shadow: var(--glow-primary), 0 0 22px rgba(255, 45, 106, 0.35);\n}\n\n/* Host marker \u2014 crown, top-right */\n.player-tile-crown {\n position: absolute;\n top: -10px;\n right: -10px;\n font-size: 20px;\n line-height: 1;\n filter: drop-shadow(0 0 6px rgba(255, 45, 106, 0.8));\n pointer-events: none;\n}\n\n/* Current-player marker \u2014 cyan YOU chip, top-right (only shows when NOT host) */\n.player-tile-you-chip {\n position: absolute;\n top: -10px;\n right: -10px;\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 9px;\n letter-spacing: 0.1em;\n padding: 3px 7px;\n border-radius: var(--radius-full);\n box-shadow: 0 0 12px rgba(0, 245, 255, 0.6);\n pointer-events: none;\n}\n\n/* Away badge \u2014 for disconnected players */\n.player-tile-away {\n position: absolute;\n bottom: -8px;\n left: 50%;\n transform: translateX(-50%);\n font-family: var(--font-body);\n font-size: 9px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--color-text-dim);\n background: var(--color-bg-primary);\n padding: 2px 6px;\n border-radius: var(--radius-full);\n border: 1px solid rgba(255, 255, 255, 0.12);\n pointer-events: none;\n}\n.player-tile--disconnected {\n opacity: 0.5;\n filter: grayscale(0.4);\n}\n\n/* New-join animation (carried over from .player-card.is-new) */\n.player-tile.is-new {\n animation: player-tile-pop var(--transition-slow) ease-out;\n}\n@keyframes player-tile-pop {\n 0% { transform: scale(0.6); opacity: 0; }\n 60% { transform: scale(1.08); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) {\n .player-tile.is-new { animation: none; }\n}\n\n/* ==========================================================================\n Round-reveal v2 \u2014 Duel layout + breakdown + stats sheets (DESIGN.md)\n ========================================================================== */\n\n/* Header v2: round count + difficulty badge + \u24D8 */\n.reveal-header-v2 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--space-md);\n gap: var(--space-sm);\n}\n.reveal-header-v2 .round-count {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n display: flex; align-items: center; gap: 4px;\n}\n.reveal-header-v2 .header-right {\n display: flex; align-items: center; gap: var(--space-sm);\n}\n/* Auto-advance countdown ring on the player reveal (mirrors admin #1048 /\n dashboard #1185). Cyan per DESIGN.md \u2014 timer = --color-accent-secondary. */\n.reveal-advance-pill {\n position: relative;\n width: 32px; height: 32px;\n flex-shrink: 0;\n display: inline-flex; align-items: center; justify-content: center;\n}\n.reveal-advance-pill.hidden { display: none; }\n.reveal-advance-svg {\n width: 100%; height: 100%;\n transform: rotate(-90deg);\n}\n.reveal-advance-bg {\n fill: none;\n stroke: rgba(255, 255, 255, 0.12);\n stroke-width: 5;\n}\n.reveal-advance-fg {\n fill: none;\n stroke: var(--color-accent-secondary);\n stroke-width: 5;\n stroke-linecap: round;\n transition: stroke-dashoffset 0.5s linear;\n filter: drop-shadow(var(--glow-secondary));\n}\n.reveal-advance-num {\n position: absolute; inset: 0;\n display: flex; align-items: center; justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 13px;\n color: var(--color-accent-secondary);\n}\n.info-btn {\n width: 28px; height: 28px;\n border-radius: 50%;\n border: 1px solid rgba(255, 255, 255, 0.14);\n background: var(--color-bg-surface);\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-base);\n font-weight: 700;\n font-family: var(--font-display);\n display: flex; align-items: center; justify-content: center;\n cursor: pointer;\n transition: color var(--transition-fast), border-color var(--transition-fast);\n padding: 0;\n}\n.info-btn:hover,\n.info-btn:focus-visible {\n color: var(--color-text-white);\n border-color: rgba(255, 255, 255, 0.3);\n outline: none;\n}\n\n/* Song strip */\n.song-strip {\n display: flex; align-items: center; gap: var(--space-sm);\n padding: var(--space-sm) var(--space-sm) var(--space-sm) var(--space-sm);\n background: rgba(255, 255, 255, 0.04);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.08);\n margin-bottom: var(--space-md);\n}\n.song-strip-cover {\n width: 56px; height: 56px;\n border-radius: var(--radius-md);\n object-fit: cover;\n flex-shrink: 0;\n background: linear-gradient(135deg, #ff6b9a, #6366f1);\n}\n.song-strip-info { flex: 1; min-width: 0; }\n.song-strip-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-md);\n color: var(--color-text-white);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.song-strip-artist {\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n\n/* Chip row (bet / streak) */\n.chip-row {\n display: flex; gap: var(--space-xs);\n margin-bottom: var(--space-sm);\n flex-wrap: wrap;\n}\n.chip-row.hidden { display: none; }\n.chip-row .chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 10px;\n border-radius: var(--radius-full);\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 700;\n letter-spacing: 0.04em;\n}\n.chip-row .chip--bet-won {\n background: rgba(255, 45, 106, 0.12);\n border: 1px solid rgba(255, 45, 106, 0.5);\n color: var(--color-accent-primary);\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.2);\n}\n.chip-row .chip--bet-lost {\n background: rgba(255, 0, 64, 0.08);\n border: 1px solid rgba(255, 0, 64, 0.4);\n color: var(--color-error-neon);\n}\n.chip-row .chip--streak {\n background: rgba(255, 102, 0, 0.12);\n border: 1px solid rgba(255, 102, 0, 0.5);\n color: var(--color-warning-alt);\n}\n\n/* Duel */\n.duel {\n padding: var(--space-lg) var(--space-xs) var(--space-md);\n margin-bottom: var(--space-sm);\n}\n.duel-emotion {\n text-align: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-2xl);\n letter-spacing: 0.06em;\n margin-bottom: var(--space-md);\n min-height: 1.2em;\n transition: color var(--transition-normal);\n}\n.duel-emotion.hidden { visibility: hidden; }\n.duel-emotion--exact {\n color: var(--color-success-neon);\n text-shadow: 0 0 16px rgba(57, 255, 20, 0.55);\n}\n.duel-emotion--close {\n color: var(--color-success-neon);\n text-shadow: 0 0 14px rgba(57, 255, 20, 0.45);\n}\n.duel-emotion--wrong {\n color: var(--color-error-neon);\n text-shadow: 0 0 14px rgba(255, 0, 64, 0.45);\n}\n.duel-emotion--missed {\n color: var(--color-text-dim);\n text-shadow: none;\n}\n.duel-row {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: var(--space-sm);\n align-items: center;\n}\n.duel-side { text-align: center; min-width: 0; }\n.duel-label {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-dim);\n font-weight: 600;\n margin-bottom: var(--space-sm);\n}\n.duel-year {\n font-family: var(--font-display);\n font-weight: 900;\n /* Issue #1072: scale down on narrow viewports so a 4-digit year never overflows\n its 1fr track and pushes the duel-row past the screen edge. */\n font-size: clamp(40px, 12vw, 64px);\n line-height: 1;\n letter-spacing: -0.03em;\n}\n.duel-year.mine { color: var(--color-text-neon-muted); }\n.duel-year.correct {\n color: var(--color-accent-secondary);\n text-shadow: 0 0 24px rgba(0, 245, 255, 0.6);\n}\n.duel-gap {\n display: flex; flex-direction: column; align-items: center; justify-content: center;\n gap: 2px;\n min-width: 48px;\n}\n.duel-gap-x {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-xl);\n color: var(--color-text-dim);\n opacity: 0.6;\n line-height: 1;\n}\n.duel-gap-n {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-2xl);\n color: var(--color-error-neon);\n text-shadow: 0 0 10px rgba(255, 0, 64, 0.35);\n line-height: 1;\n}\n.duel-gap--exact .duel-gap-n {\n color: var(--color-success-neon);\n text-shadow: 0 0 10px rgba(57, 255, 20, 0.5);\n}\n.duel-gap--close .duel-gap-n {\n color: var(--color-success-neon);\n text-shadow: 0 0 8px rgba(57, 255, 20, 0.35);\n}\n.duel-gap-unit {\n font-family: var(--font-body);\n font-size: 9px;\n color: var(--color-text-dim);\n text-transform: uppercase;\n letter-spacing: 0.1em;\n margin-top: 3px;\n}\n\n/* Score row */\n.score-row {\n display: flex; align-items: center; justify-content: space-between;\n padding: 14px 18px;\n background: var(--color-bg-surface);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(0, 245, 255, 0.25);\n box-shadow: 0 0 14px rgba(0, 245, 255, 0.12);\n margin-bottom: var(--space-md);\n gap: var(--space-sm);\n}\n.score-row-left {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n color: var(--color-text-neon-muted);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n display: flex; flex-direction: column; gap: 3px;\n min-width: 0;\n}\n.score-row-subtitle {\n color: var(--color-text-white);\n font-size: var(--font-size-sm);\n font-weight: 700;\n letter-spacing: 0;\n text-transform: none;\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.score-row-right {\n display: flex; align-items: center; gap: var(--space-sm);\n flex-shrink: 0;\n}\n.score-row-pts {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 38px;\n color: var(--color-accent-secondary);\n text-shadow: 0 0 18px rgba(0, 245, 255, 0.5);\n line-height: 1;\n}\n\n/* Standings (compact list inside a card-section) */\n.standings-section .leaderboard-list {\n display: flex; flex-direction: column; gap: 6px;\n}\n\n/* ==========================================================================\n Bottom-sheet modal (used for points breakdown + round stats)\n ========================================================================== */\n.sheet-backdrop {\n position: fixed;\n inset: 0;\n z-index: 400;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n}\n.sheet-backdrop.hidden { display: none; }\n.sheet-dim {\n position: absolute; inset: 0;\n background: rgba(10, 10, 18, 0.6);\n backdrop-filter: blur(2px);\n animation: sheet-dim-in 200ms ease-out;\n}\n@keyframes sheet-dim-in { from { opacity: 0; } to { opacity: 1; } }\n.sheet {\n position: relative;\n z-index: 1;\n width: 100%;\n max-width: 520px;\n background: linear-gradient(180deg, #14141e, #0a0a12);\n border-top: 1px solid rgba(0, 245, 255, 0.25);\n border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;\n box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.5), 0 -4px 16px rgba(0, 245, 255, 0.1);\n padding: 14px 20px calc(28px + env(safe-area-inset-bottom, 0));\n max-height: 80vh;\n overflow-y: auto;\n animation: sheet-slide-up 320ms cubic-bezier(0.22, 0.8, 0.32, 1);\n}\n@keyframes sheet-slide-up {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n@media (prefers-reduced-motion: reduce) {\n .sheet-dim { animation: none; }\n .sheet { animation: none; }\n}\n.sheet-handle {\n width: 40px; height: 4px; border-radius: 2px;\n background: rgba(255, 255, 255, 0.2);\n margin: 0 auto 16px;\n}\n.sheet-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: var(--space-md);\n}\n.sheet-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-lg);\n display: flex; align-items: center; gap: 8px;\n color: var(--color-text-white);\n}\n.sheet-close {\n width: 32px; height: 32px; border-radius: 50%;\n background: rgba(255, 255, 255, 0.08);\n border: 0;\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-base);\n font-weight: 700;\n display: flex; align-items: center; justify-content: center;\n cursor: pointer;\n}\n.sheet-close:hover,\n.sheet-close:focus-visible {\n color: var(--color-text-white);\n background: rgba(255, 255, 255, 0.14);\n outline: none;\n}\n\n/* Points breakdown content */\n.breakdown-list {\n display: flex; flex-direction: column;\n margin-bottom: var(--space-md);\n}\n.breakdown-row {\n display: flex; align-items: center; justify-content: space-between;\n padding: 10px 0;\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n}\n.breakdown-row + .breakdown-row { border-top: 1px solid rgba(255, 255, 255, 0.05); }\n.breakdown-row .label {\n color: var(--color-text-neon-muted);\n display: flex; align-items: center; gap: 8px;\n}\n.breakdown-row .label .emoji { font-size: var(--font-size-md); }\n.breakdown-row .value {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-md);\n}\n.breakdown-row .value--positive { color: var(--color-success-neon); }\n.breakdown-row .value--multiplier { color: var(--color-accent-primary); }\n.breakdown-row .value--neutral { color: var(--color-text-white); }\n.breakdown-total {\n display: flex; align-items: center; justify-content: space-between;\n padding: var(--space-md);\n border-radius: var(--radius-lg);\n background: linear-gradient(90deg, rgba(0, 245, 255, 0.08), rgba(255, 45, 106, 0.05));\n border: 1px solid rgba(0, 245, 255, 0.3);\n}\n.breakdown-total .label {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: var(--font-size-md);\n color: var(--color-text-white);\n}\n.breakdown-total .value {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-3xl);\n color: var(--color-accent-secondary);\n text-shadow: 0 0 16px rgba(0, 245, 255, 0.5);\n}\n.breakdown-total--zero .value { color: var(--color-text-dim); text-shadow: none; }\n.breakdown-empty {\n text-align: center;\n padding: var(--space-md) 0;\n}\n.breakdown-empty-icon { font-size: 42px; margin-bottom: var(--space-sm); }\n.breakdown-empty-text {\n color: var(--color-text-neon-muted);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n margin-bottom: var(--space-md);\n}\n\n/* Round stats content */\n.difficulty-visual {\n display: flex; align-items: center; justify-content: space-between;\n padding: var(--space-md);\n background: rgba(255, 0, 64, 0.08);\n border: 1px solid rgba(255, 0, 64, 0.3);\n border-radius: var(--radius-md);\n margin-bottom: var(--space-sm);\n gap: var(--space-sm);\n}\n.difficulty-visual .left {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-sm);\n color: var(--color-error-neon);\n min-width: 0;\n}\n.difficulty-visual .left .sub {\n font-family: var(--font-body);\n font-size: var(--font-size-xs);\n font-weight: 500;\n color: var(--color-text-neon-muted);\n margin-top: 3px;\n}\n.difficulty-visual .stars { font-size: var(--font-size-md); letter-spacing: 2px; white-space: nowrap; }\n.difficulty-visual .star-filled { color: var(--color-warning-alt); }\n.difficulty-visual .star-empty { color: rgba(255, 255, 255, 0.15); }\n\n.stats-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--space-sm);\n margin-bottom: var(--space-sm);\n}\n.stats-card {\n padding: 12px 14px;\n background: rgba(255, 255, 255, 0.04);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-md);\n}\n.stats-card .lbl {\n font-family: var(--font-body);\n font-size: 10px;\n color: var(--color-text-dim);\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n.stats-card .val {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: var(--font-size-2xl);\n margin-top: 4px;\n color: var(--color-text-white);\n}\n.stats-card .val.cyan { color: var(--color-accent-secondary); }\n.stats-card .val.success { color: var(--color-success-neon); }\n.stats-card .val.warn { color: var(--color-error-neon); }\n.stats-card .sub {\n font-family: var(--font-body);\n font-size: 10px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n}\n\n.furthest-list { display: flex; flex-direction: column; gap: 6px; }\n.furthest-row {\n display: flex; align-items: center; justify-content: space-between;\n padding: 10px 12px;\n background: rgba(255, 255, 255, 0.03);\n border-radius: var(--radius-md);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n}\n.furthest-row .name { font-weight: 600; color: var(--color-text-white); }\n.furthest-row .off {\n color: var(--color-error-neon);\n font-family: var(--font-display);\n font-weight: 700;\n}\n\n.stats-empty {\n text-align: center;\n color: var(--color-text-dim);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n padding: var(--space-md);\n}\n\n/* ==========================================================================\n Gameplay v3 \u2014 Arcade layout (DESIGN.md Variant D)\n Massive year \u00B7 tappable tiles \u00B7 neon timer \u00B7 3D buttons.\n Supersedes legacy .album-cover-container, .year-display, .slider-container,\n .bet-container, .submit-btn, .steal-btn, .submitted-confirmation, and the\n .game-sticky-bar + .game-header-compact header.\n ========================================================================== */\n\n.game-container--arcade {\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n/* Arcade header: pulse-orb album + \"Round N of M\" + neon timer */\n.arc-header {\n display: grid;\n grid-template-columns: auto 1fr auto;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md);\n position: sticky;\n top: 0;\n z-index: 5;\n background: linear-gradient(180deg, rgba(10, 10, 18, 0.95), rgba(10, 10, 18, 0.82) 72%, transparent);\n backdrop-filter: blur(8px);\n margin-bottom: var(--space-md);\n}\n\n/* #817: floating mini-timer \u2014 always visible during PLAYING when the main\n neon timer scrolls out of view. Position-fixed so it works regardless of\n any sticky-positioning quirks on iOS Safari. Smaller and quieter than\n the main timer so it doesn't overwhelm the lower content (slider,\n challenges, submit button) once it's revealed. Syncing with the main\n timer + show/hide via IntersectionObserver lives in player-game.js. */\n.timer-float {\n position: fixed;\n top: max(env(safe-area-inset-top, 0px) + 8px, 8px);\n right: 12px;\n z-index: 100;\n width: 52px;\n height: 52px;\n border-radius: 50%;\n background: rgba(10, 10, 18, 0.78);\n border: 2px solid var(--color-accent-primary);\n box-shadow: 0 0 14px rgba(255, 45, 106, 0.45),\n inset 0 0 8px rgba(255, 45, 106, 0.25);\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n line-height: 1;\n color: var(--color-accent-primary);\n text-shadow: 0 0 8px rgba(255, 45, 106, 0.6);\n backdrop-filter: blur(8px);\n transition: opacity 0.2s ease-out, transform 0.2s ease-out;\n pointer-events: none;\n /* Default: hidden via .hidden override below. Becomes visible when\n JS adds .timer-float--visible (gated on the main timer being\n offscreen + game-view being active). */\n}\n.timer-float.hidden {\n opacity: 0;\n transform: scale(0.7);\n pointer-events: none;\n}\n.timer-float.timer-float--visible {\n opacity: 1;\n transform: scale(1);\n}\n.timer-float.timer-float--warn {\n border-color: var(--color-error-neon, #ff0040);\n color: var(--color-error-neon, #ff0040);\n box-shadow: 0 0 16px rgba(255, 0, 64, 0.6),\n inset 0 0 8px rgba(255, 0, 64, 0.3);\n animation: arc-urgency 0.8s ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .timer-float { transition: none; }\n .timer-float.timer-float--warn { animation: none; }\n}\n\n.arc-pulse-orb {\n width: 56px; height: 56px; border-radius: 50%;\n display: flex; align-items: center; justify-content: center;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #ff6b9a, #6366f1);\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.5);\n flex-shrink: 0;\n}\n.arc-pulse-orb::before {\n content: '';\n position: absolute; inset: -4px;\n border-radius: 50%;\n border: 2px solid rgba(255, 45, 106, 0.5);\n animation: arc-orb-pulse 1.4s ease-out infinite;\n pointer-events: none;\n}\n.arc-pulse-orb--steady::before { animation: none; opacity: 0; }\n@keyframes arc-orb-pulse {\n 0% { opacity: 0.8; transform: scale(1); }\n 100% { opacity: 0; transform: scale(1.25); }\n}\n@media (prefers-reduced-motion: reduce) {\n .arc-pulse-orb::before { animation: none; opacity: 0; }\n}\n.arc-pulse-orb-img {\n width: 100%; height: 100%;\n object-fit: cover;\n border-radius: 50%;\n z-index: 1;\n /* #850: blur cover during PLAYING so readable text on artwork (album titles,\n years, artist names) can't leak the year-guess answer. Colour/vibe is\n preserved. At REVEAL, the larger #reveal-album-cover (player.html:481) is\n rendered crisp \u2014 that element is unaffected by this rule. */\n filter: blur(12px);\n transform: scale(1.15);\n transition: filter 0.4s ease, transform 0.4s ease;\n}\n\n.arc-round-center {\n text-align: center;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 11px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n line-height: 1.3;\n overflow: hidden;\n}\n.arc-round-label { display: block; }\n.arc-round-big {\n display: block;\n font-size: 20px;\n color: var(--color-text-white);\n letter-spacing: 0;\n text-transform: none;\n margin-top: 2px;\n}\n.arc-round-sep {\n color: var(--color-text-dim);\n margin: 0 2px;\n font-weight: 500;\n}\n\n.timer-neon {\n width: 72px; height: 72px;\n border-radius: 50%;\n background: var(--color-bg-primary);\n border: 3px solid var(--color-accent-primary);\n box-shadow: var(--glow-primary), inset 0 0 12px rgba(255, 45, 106, 0.3);\n display: flex; align-items: center; justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 30px;\n color: var(--color-accent-primary);\n text-shadow: 0 0 10px rgba(255, 45, 106, 0.6);\n flex-shrink: 0;\n line-height: 1;\n}\n.timer-neon .timer { color: inherit; font-family: inherit; font-size: inherit; font-weight: inherit; }\n.timer-neon.timer-neon--warn {\n border-color: var(--color-error-neon);\n color: var(--color-error-neon);\n box-shadow: 0 0 20px rgba(255, 0, 64, 0.6), inset 0 0 12px rgba(255, 0, 64, 0.3);\n animation: arc-urgency 0.8s ease-in-out infinite;\n}\n@keyframes arc-urgency {\n 0%, 100% { transform: scale(1); }\n 50% { transform: scale(1.06); }\n}\n/* #1273 AC#3 \u2014 ghost-ring catch-up glow. Briefly applied while the countdown\n eases to the server's authoritative remaining-time (V1 Smooth Correct), so a\n drift correction reads as a deliberate glow pulse in the existing ring\n language rather than a jarring number jump. */\n.timer-neon.timer-neon--catchup {\n animation: timer-catchup-glow 0.4s ease-out;\n}\n@keyframes timer-catchup-glow {\n 0% { box-shadow: var(--glow-primary), inset 0 0 12px rgba(255, 45, 106, 0.3); }\n 45% { box-shadow: 0 0 26px rgba(0, 245, 255, 0.7), inset 0 0 16px rgba(0, 245, 255, 0.35); }\n 100% { box-shadow: var(--glow-primary), inset 0 0 12px rgba(255, 45, 106, 0.3); }\n}\n@media (prefers-reduced-motion: reduce) {\n .timer-neon.timer-neon--warn { animation: none; }\n .timer-neon.timer-neon--catchup { animation: none; }\n}\n\n/* Chip row \u2014 steal / closest-wins / intro / final (conditional) */\n.arc-chip-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n padding: 0 var(--space-md);\n margin-bottom: var(--space-md);\n}\n.arc-chip-row.hidden { display: none; }\n.arc-chip {\n display: inline-flex; align-items: center; gap: 5px;\n padding: 4px 10px;\n border-radius: var(--radius-full);\n font-family: var(--font-body);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.04em;\n}\n.arc-chip--steal {\n color: var(--color-accent-secondary);\n background: rgba(0, 245, 255, 0.08);\n border: 1px solid rgba(0, 245, 255, 0.4);\n}\n.arc-chip--closest-wins {\n color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.08);\n border: 1px solid rgba(57, 255, 20, 0.4);\n}\n.arc-chip--intro {\n color: var(--color-warning-alt);\n background: rgba(255, 102, 0, 0.12);\n border: 1px solid rgba(255, 102, 0, 0.5);\n}\n.arc-chip--final {\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.12);\n border: 1px solid rgba(255, 45, 106, 0.5);\n text-transform: uppercase;\n}\n\n/* Year XXL */\n.year-xxl {\n text-align: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: clamp(96px, 34vw, 128px);\n line-height: 1;\n letter-spacing: -0.04em;\n background: linear-gradient(180deg, var(--color-text-white) 0%, rgba(0, 245, 255, 0.85) 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n text-shadow: 0 0 32px rgba(0, 245, 255, 0.35);\n margin: 4px 0 var(--space-md);\n padding: 0 var(--space-md);\n max-width: 100%;\n}\n.year-xxl--locked {\n background: linear-gradient(180deg, var(--color-success-neon) 0%, rgba(57, 255, 20, 0.7) 100%);\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n text-shadow: 0 0 28px rgba(57, 255, 20, 0.45);\n}\n\n/* Submitted banner */\n.submitted-banner {\n margin: 0 var(--space-md) var(--space-sm);\n padding: 8px 14px;\n background: rgba(57, 255, 20, 0.08);\n border: 1px solid rgba(57, 255, 20, 0.4);\n border-radius: var(--radius-md);\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 14px;\n color: var(--color-success-neon);\n letter-spacing: 0.04em;\n display: flex; align-items: center; justify-content: center; gap: 6px;\n text-align: center;\n}\n.submitted-banner.hidden { display: none; }\n.submitted-banner .check {\n width: 18px; height: 18px; border-radius: 50%;\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n font-size: 11px; font-weight: 900;\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n\n/* Arcade slider */\n.slider-arcade-wrap {\n padding: 0 var(--space-md);\n margin-bottom: var(--space-md);\n position: relative;\n}\n.slider-arcade {\n padding: 10px;\n background: rgba(255, 255, 255, 0.04);\n border-radius: var(--radius-lg);\n border: 1px solid rgba(255, 255, 255, 0.08);\n display: flex; align-items: center; gap: 12px;\n}\n.slider-btn-year {\n width: 44px; height: 44px; border-radius: 50%;\n background: var(--color-bg-primary);\n border: 2px solid rgba(255, 255, 255, 0.15);\n color: var(--color-text-white);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 22px;\n line-height: 1;\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: center;\n cursor: pointer;\n transition: all var(--transition-fast);\n touch-action: manipulation;\n}\n.slider-btn-year:hover,\n.slider-btn-year:focus-visible {\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n outline: none;\n}\n.slider-btn-year:disabled {\n opacity: 0.4; cursor: not-allowed;\n}\n/* #851 coarse-step variant: smaller +5/-5 buttons next to the main +/-. */\n.slider-btn-year--coarse {\n position: relative;\n width: 36px; height: 36px;\n font-size: 13px;\n font-weight: 800;\n letter-spacing: -0.02em;\n}\n/* #1759: mid-round +/-5 buttons sit next to 44px fine-step siblings under time\n pressure; expand the hit target to 44px (visual stays 36px) so a mis-tap\n doesn't land on the fine button and cost points. */\n.slider-btn-year--coarse::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 44px;\n height: 44px;\n transform: translate(-50%, -50%);\n}\n.slider-arcade { gap: 8px; } /* tighten gap so 5 children fit on narrow screens */\n/* #2344: the track holds the input and the decade scale stacked, so the\n marks line up with the thumb's travel rather than with the box. */\n.slider-arcade-track { flex: 1; display: flex; flex-direction: column; align-items: stretch; gap: 4px; }\n.year-scale {\n position: relative;\n height: 13px;\n /* Reserve the thumb's half-width on both sides: a range thumb's centre\n never reaches the very edge, so a mark at 100% would sit past the\n furthest year the slider can actually select. */\n margin: 0 2px;\n pointer-events: none;\n}\n.year-scale span {\n position: absolute;\n top: 0;\n transform: translateX(-50%);\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--color-text-muted, rgba(255, 255, 255, 0.42));\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n user-select: none;\n}\n.slider-arcade.slider-arcade--locked .year-scale { opacity: 0.5; }\n.year-slider-arcade {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: 10px;\n background: linear-gradient(90deg,\n rgba(0, 245, 255, 0.15),\n rgba(255, 45, 106, 0.25),\n rgba(57, 255, 20, 0.15));\n border-radius: var(--radius-full);\n outline: none;\n cursor: pointer;\n}\n.year-slider-arcade::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 32px; height: 32px;\n border-radius: 50%;\n background: var(--color-accent-primary);\n border: 3px solid var(--color-bg-primary);\n box-shadow: var(--glow-primary);\n cursor: grab;\n transition: transform var(--transition-fast);\n}\n.year-slider-arcade::-webkit-slider-thumb:active { cursor: grabbing; transform: scale(1.05); }\n.year-slider-arcade::-moz-range-thumb {\n width: 32px; height: 32px;\n border-radius: 50%;\n background: var(--color-accent-primary);\n border: 3px solid var(--color-bg-primary);\n box-shadow: var(--glow-primary);\n cursor: grab;\n}\n\n/* Locked state for the slider (after submit) */\n.slider-arcade.slider-arcade--locked {\n opacity: 0.55;\n pointer-events: none;\n}\n.slider-arcade.slider-arcade--locked .year-slider-arcade::-webkit-slider-thumb {\n background: var(--color-success-neon);\n box-shadow: 0 0 16px rgba(57, 255, 20, 0.6);\n}\n.slider-arcade.slider-arcade--locked .year-slider-arcade::-moz-range-thumb {\n background: var(--color-success-neon);\n box-shadow: 0 0 16px rgba(57, 255, 20, 0.6);\n}\n.guess-lock-stamp {\n position: absolute;\n right: calc(var(--space-md) + 8px);\n top: -10px;\n padding: 3px 10px;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 10px;\n color: var(--color-success-neon);\n background: var(--color-bg-primary);\n border: 1px solid rgba(57, 255, 20, 0.4);\n border-radius: var(--radius-full);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n box-shadow: 0 0 8px rgba(57, 255, 20, 0.25);\n}\n.guess-lock-stamp.hidden { display: none; }\n\n/* Arcade tiles (artist + movie challenge).\n Wrapped in a subtle card container so the challenge reads as a distinct\n \"quiz card\" element. Outer wrapper has a thin border + soft bg; tiles\n themselves keep their 3D shadow treatment so they still pop. */\n.arc-tiles {\n padding: 12px 14px;\n margin: 0 var(--space-md) var(--space-md);\n background: linear-gradient(180deg, rgba(0, 245, 255, 0.04), rgba(255, 255, 255, 0.02));\n border: 1px solid rgba(0, 245, 255, 0.18);\n border-radius: var(--radius-lg);\n box-shadow: inset 0 0 12px rgba(0, 245, 255, 0.04);\n}\n.arc-tiles.hidden { display: none; }\n.arc-tiles-header {\n display: flex; align-items: center; justify-content: space-between;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n margin-bottom: 10px;\n gap: var(--space-sm);\n}\n.arc-tiles-header > span:first-child {\n display: flex; align-items: center; gap: 6px;\n min-width: 0;\n}\n.arc-tiles-bonus {\n background: rgba(57, 255, 20, 0.15);\n color: var(--color-success-neon);\n font-weight: 900;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n letter-spacing: 0.04em;\n flex-shrink: 0;\n}\n.arc-tiles-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n/* Re-style the existing .artist-option-btn / .movie-option-btn with arcade feel.\n These classes are generated by player-game.js \u2014 don't change the JS, just\n restyle the DOM they emit. */\n.arc-tiles-grid .artist-option-btn,\n.arc-tiles-grid .movie-option-btn {\n padding: 14px 10px;\n background: rgba(255, 255, 255, 0.05);\n border: 2px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-lg);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 15px;\n text-align: center;\n color: var(--color-text-white);\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n transition: transform var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);\n cursor: pointer;\n min-height: 56px;\n}\n.arc-tiles-grid .artist-option-btn:hover,\n.arc-tiles-grid .movie-option-btn:hover,\n.arc-tiles-grid .artist-option-btn:focus-visible,\n.arc-tiles-grid .movie-option-btn:focus-visible {\n border-color: rgba(0, 245, 255, 0.55);\n outline: none;\n}\n.arc-tiles-grid .artist-option-btn:active,\n.arc-tiles-grid .movie-option-btn:active {\n transform: translateY(1px);\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.3);\n}\n.arc-tiles-grid .artist-option-btn.is-loading {\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.2), rgba(0, 245, 255, 0.05));\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n animation: arc-tile-pulse 1s ease-in-out infinite;\n}\n@keyframes arc-tile-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } }\n.arc-tiles-grid .artist-option-btn.is-winner,\n.arc-tiles-grid .artist-option-btn.is-correct,\n.arc-tiles-grid .movie-option-btn.is-winner,\n.arc-tiles-grid .movie-option-btn.is-correct {\n background: linear-gradient(135deg, rgba(57, 255, 20, 0.25), rgba(57, 255, 20, 0.08));\n border-color: var(--color-success-neon);\n color: var(--color-success-neon);\n box-shadow: 0 0 20px rgba(57, 255, 20, 0.5), 0 4px 0 rgba(0, 0, 0, 0.3);\n}\n.arc-tiles-grid .artist-option-btn.is-wrong,\n.arc-tiles-grid .artist-option-btn.is-wrong.is-selected,\n.arc-tiles-grid .movie-option-btn.is-wrong {\n opacity: 0.5;\n border-style: dashed;\n}\n.arc-tiles-grid .artist-option-btn.is-disabled,\n.arc-tiles-grid .movie-option-btn.is-disabled {\n opacity: 0.6;\n cursor: not-allowed;\n box-shadow: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .arc-tiles-grid .artist-option-btn.is-loading { animation: none; }\n}\n\n/* No-bonus filler */\n.bonus-filler {\n padding: var(--space-md);\n margin: 0 var(--space-md) var(--space-md);\n background: rgba(255, 255, 255, 0.02);\n border: 1px dashed rgba(255, 255, 255, 0.1);\n border-radius: var(--radius-lg);\n text-align: center;\n font-family: var(--font-body);\n font-size: 12px;\n color: var(--color-text-dim);\n font-style: italic;\n display: flex; align-items: center; justify-content: center; gap: 6px;\n}\n.bonus-filler.hidden { display: none; }\n\n/* Actions row (bet + submit) */\n.arc-actions {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 10px;\n padding: 0 var(--space-md);\n margin-bottom: var(--space-md);\n}\n.bet-arc {\n width: 72px; height: 60px;\n background: transparent;\n border: 2px solid rgba(255, 45, 106, 0.5);\n color: var(--color-accent-primary);\n border-radius: var(--radius-lg);\n font-family: var(--font-display);\n font-weight: 700;\n display: flex; flex-direction: column; align-items: center; justify-content: center;\n gap: 2px;\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n.bet-arc .bet-icon { font-size: 22px; line-height: 1; }\n.bet-arc .bet-label { font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }\n.bet-arc.is-active {\n background: rgba(255, 45, 106, 0.15);\n box-shadow: var(--glow-primary), 0 4px 0 rgba(0, 0, 0, 0.3);\n}\n.bet-arc:active { transform: translateY(2px); box-shadow: 0 2px 0 rgba(0, 0, 0, 0.3); }\n.bet-arc:disabled { opacity: 0.55; cursor: not-allowed; }\n\n.submit-arc {\n background: linear-gradient(180deg, #ff4d82, var(--color-accent-primary));\n border: 0;\n color: var(--color-text-white);\n border-radius: var(--radius-lg);\n padding: 16px 20px;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 17px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n box-shadow: var(--glow-primary), 0 6px 0 rgba(180, 20, 60, 0.6);\n cursor: pointer;\n transition: transform var(--transition-fast);\n display: flex; align-items: center; justify-content: center; gap: 8px;\n}\n.submit-arc:active { transform: translateY(2px); box-shadow: var(--glow-primary), 0 4px 0 rgba(180, 20, 60, 0.6); }\n.submit-arc:disabled {\n background: rgba(255, 255, 255, 0.06);\n color: var(--color-text-neon-muted);\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n cursor: not-allowed;\n text-shadow: none;\n}\n.submit-arc.submit-arc--waiting {\n background: rgba(255, 255, 255, 0.05);\n color: var(--color-text-neon-muted);\n box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);\n text-shadow: none;\n}\n.submit-arc .waiting-dot {\n display: inline-block;\n width: 8px; height: 8px; border-radius: 50%;\n background: var(--color-accent-secondary);\n box-shadow: 0 0 8px rgba(0, 245, 255, 0.5);\n animation: arc-wait-pulse 1.2s ease-in-out infinite;\n}\n@keyframes arc-wait-pulse { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } }\n@media (prefers-reduced-motion: reduce) {\n .submit-arc .waiting-dot { animation: none; }\n}\n\n/* Steal full-width button */\n.steal-btn-full {\n margin: 0 var(--space-md) var(--space-md);\n background: rgba(0, 245, 255, 0.08);\n border: 2px solid var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n border-radius: var(--radius-lg);\n padding: 14px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n box-shadow: 0 0 16px rgba(0, 245, 255, 0.3), 0 4px 0 rgba(0, 0, 0, 0.3);\n display: flex; align-items: center; justify-content: center; gap: 8px;\n cursor: pointer;\n transition: transform var(--transition-fast);\n}\n.steal-btn-full.hidden { display: none; }\n.steal-btn-full:active { transform: translateY(2px); box-shadow: 0 0 16px rgba(0, 245, 255, 0.3), 0 2px 0 rgba(0, 0, 0, 0.3); }\n.steal-btn-full .steal-btn-icon { font-size: 18px; }\n\n/* #1665: Sabotage power-up \u2014 twin of the steal button, red-tinted. The flex row\n keeps a lone button full-width and puts them side-by-side when both are up. */\n.powerup-btn-row {\n display: flex;\n gap: var(--space-md);\n margin: 0 var(--space-md) var(--space-md);\n}\n.powerup-btn-row .steal-btn-full,\n.powerup-btn-row .sabotage-btn-full {\n flex: 1;\n margin: 0;\n}\n.sabotage-btn-full {\n background: rgba(255, 45, 85, 0.08);\n border: 2px solid var(--color-danger, #ff2d55);\n color: var(--color-danger, #ff2d55);\n border-radius: var(--radius-lg);\n padding: 14px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n box-shadow: 0 0 16px rgba(255, 45, 85, 0.3), 0 4px 0 rgba(0, 0, 0, 0.3);\n display: flex; align-items: center; justify-content: center; gap: 8px;\n cursor: pointer;\n transition: transform var(--transition-fast);\n}\n.sabotage-btn-full.hidden { display: none; }\n.sabotage-btn-full:active { transform: translateY(2px); box-shadow: 0 0 16px rgba(255, 45, 85, 0.3), 0 2px 0 rgba(0, 0, 0, 0.3); }\n.sabotage-btn-full .sabotage-btn-icon { font-size: 18px; }\n/* #1665: sabotage arc-chip + leaderboard badge + toasts + effect locks */\n.arc-chip--sabotage {\n color: var(--color-danger, #ff2d55);\n background: rgba(255, 45, 85, 0.08);\n border: 1px solid rgba(255, 45, 85, 0.4);\n}\n.player-badge--sabotage {\n top: -2px;\n left: 2px;\n background: linear-gradient(135deg, #ff2d55, #c1121f);\n}\n.sabotage-confirmation {\n background: linear-gradient(135deg, #ff2d55, #c1121f);\n box-shadow: 0 4px 20px rgba(255, 45, 85, 0.5);\n}\n.sabotaged-banner {\n background: linear-gradient(135deg, #ff2d55, #7c1020);\n box-shadow: 0 4px 20px rgba(255, 45, 85, 0.6);\n}\n.bet-arc--forced { opacity: 0.85; cursor: not-allowed; }\n.submit-arc--frozen { opacity: 0.6; filter: grayscale(0.4); }\n\n/* Submission strip (dots + count) */\n.arc-submission-strip {\n display: flex; align-items: center; justify-content: center; gap: 8px;\n padding: 8px var(--space-md) 12px;\n font-family: var(--font-body);\n font-size: 11px;\n color: var(--color-text-dim);\n font-weight: 600;\n}\n.arc-submission-dots {\n display: flex; align-items: center; gap: 6px;\n}\n.arc-submission-dots .player-indicator {\n /* existing class from renderSubmissionTracker \u2014 override to a small dot.\n The renderer emits a nested .player-avatar + .player-initials + .player-name\n + badges; we collapse ALL children to make the parent itself the dot. */\n width: 12px; height: 12px;\n min-width: 12px;\n padding: 0;\n background: rgba(255, 255, 255, 0.18);\n border: 0;\n border-radius: 50%;\n font-size: 0;\n color: transparent;\n transition: all var(--transition-normal);\n flex: 0 0 auto;\n overflow: hidden;\n display: block;\n}\n/* Collapse every child element \u2014 avatars, initials, names, badges \u2014 so the\n parent behaves as a solid dot. Without this the legacy .player-avatar\n width/height (~40px) leaks through. */\n.arc-submission-dots .player-indicator > * { display: none !important; }\n.arc-submission-dots .player-indicator.is-submitted {\n background: var(--color-success-neon);\n box-shadow: 0 0 6px rgba(57, 255, 20, 0.5);\n}\n.arc-submission-dots .player-indicator.is-current-player,\n.arc-submission-dots .player-indicator.is-current {\n background: var(--color-accent-secondary);\n box-shadow: 0 0 6px rgba(0, 245, 255, 0.5);\n}\n.arc-submission-dots .player-indicator.is-current-player.is-submitted {\n background: var(--color-success-neon);\n box-shadow: 0 0 8px rgba(57, 255, 20, 0.7);\n}\n.arc-submission-count { color: var(--color-text-dim); font-weight: 600; }\n\n/* Legacy \"Submitted!\" stamp \u2014 hidden in arcade but kept for any residual path */\n.submitted-confirmation.hidden { display: none; }\n\n/* Closest-wins ephemeral splash (rc30 parity) */\n.closest-wins-splash {\n position: fixed; inset: 0;\n z-index: 50;\n display: flex; align-items: center; justify-content: center;\n background: rgba(10, 10, 18, 0.7);\n backdrop-filter: blur(4px);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 40px;\n color: var(--color-success-neon);\n letter-spacing: 0.08em;\n gap: 12px;\n pointer-events: none;\n text-shadow: 0 0 32px rgba(57, 255, 20, 0.55);\n animation: closest-wins-splash-in 1.6s ease-out both;\n}\n.closest-wins-splash.hidden { display: none; }\n@keyframes closest-wins-splash-in {\n 0% { opacity: 0; transform: scale(0.8); }\n 20% { opacity: 1; transform: scale(1); }\n 80% { opacity: 1; transform: scale(1); }\n 100% { opacity: 0; transform: scale(1.05); }\n}\n\n/* sr-only helper (if not already in the stylesheet) */\n#round-indicator.sr-only {\n position: absolute;\n width: 1px; height: 1px; padding: 0; margin: -1px;\n overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;\n}\n\n/* ============================================\n #1076: Compact game-view layout for mobile.\n On 360-411 CSS-px phones the artist/movie challenge tiles\n and Submit button were rendering below the fold, so every\n round players had to scroll before they could vote. Scoped\n to body:has(#game-view:not(.hidden)) so it only fires while\n game-view is the active screen \u2014 lobby/reveal/end keep the\n original spacing. :has() degrades gracefully: browsers that\n don't support it fall back to the looser pre-fix layout.\n ============================================ */\nbody:has(#game-view:not(.hidden)) .player-header { display: none; }\nbody:has(#game-view:not(.hidden)) .player-container {\n padding-top: max(var(--space-xs), env(safe-area-inset-top));\n}\nbody:has(#game-view:not(.hidden)) .arc-header {\n margin-bottom: var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .year-xxl {\n font-size: clamp(72px, 26vw, 104px);\n margin: 2px 0 var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .slider-arcade-wrap {\n margin-bottom: var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .arc-tiles {\n padding: 10px 12px;\n margin: 0 var(--space-md) var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .arc-tiles-header {\n margin-bottom: 6px;\n}\nbody:has(#game-view:not(.hidden)) .arc-tiles-grid { gap: 8px; }\nbody:has(#game-view:not(.hidden)) .arc-tiles-grid .artist-option-btn,\nbody:has(#game-view:not(.hidden)) .arc-tiles-grid .movie-option-btn {\n min-height: 52px;\n padding: 12px 10px;\n}\nbody:has(#game-view:not(.hidden)) .arc-actions {\n margin-bottom: var(--space-sm);\n}\nbody:has(#game-view:not(.hidden)) .bonus-filler {\n padding: var(--space-sm) var(--space-md);\n margin: 0 var(--space-md) var(--space-sm);\n}\n\n/* ============================================\n End-of-Game Podium v2 \u2014 Hero Winner (rc31)\n Scoped under body.theme-dark so player.html end-view\n is restyled from a 3-column stands layout into a\n poster-style hero for #1 + compact chips for #2/#3.\n DOM (player.html #494-522) is unchanged \u2014 existing\n IDs (podium-{N}-name / -score) keep their JS bindings.\n ============================================ */\n\nbody.theme-dark .podium {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-areas:\n \"hero hero\"\n \"second third\";\n gap: var(--space-md);\n align-items: stretch;\n justify-content: stretch;\n margin-bottom: var(--space-xl);\n padding: 0 var(--space-xs);\n}\n\n/* Winner hero \u2014 full-width poster, gradient wordmark name */\nbody.theme-dark .podium-place.podium-1 {\n grid-area: hero;\n width: 100%;\n padding: var(--space-lg) var(--space-md) var(--space-md);\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.14), rgba(0, 245, 255, 0.06));\n border: 1px solid rgba(255, 45, 106, 0.35);\n border-radius: var(--radius-xl);\n box-shadow: 0 0 40px rgba(255, 45, 106, 0.18);\n text-align: center;\n justify-content: center;\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-medal {\n font-size: 38px;\n margin-bottom: var(--space-xs);\n filter: drop-shadow(0 0 16px rgba(255, 45, 106, 0.6));\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-name {\n font-family: 'Outfit', sans-serif;\n font-weight: 900;\n line-height: 0.92;\n letter-spacing: -0.04em;\n margin: 0 0 var(--space-sm);\n max-width: 100%;\n white-space: normal;\n word-break: break-word;\n overflow: visible;\n text-overflow: clip;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n filter: drop-shadow(0 0 24px rgba(255, 45, 106, 0.3));\n font-size: clamp(40px, 14vw, 64px);\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-score {\n font-family: 'Inter', sans-serif;\n font-weight: 700;\n font-size: var(--font-size-3xl);\n color: var(--color-accent-secondary);\n font-variant-numeric: tabular-nums;\n text-shadow: 0 0 14px rgba(0, 245, 255, 0.5);\n margin-bottom: 0;\n}\n\nbody.theme-dark .podium-place.podium-1 .podium-stand {\n display: none;\n}\n\n/* Runners-up chips \u2014 2nd + 3rd share the bottom row */\nbody.theme-dark .podium-place.podium-2,\nbody.theme-dark .podium-place.podium-3 {\n width: 100%;\n min-width: 0;\n padding: var(--space-md) var(--space-sm);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n display: grid;\n /* minmax(0, 1fr) lets the name column shrink below its intrinsic width\n so short chip columns can ellipsis gracefully without forcing \"No\u2026\". */\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-rows: auto;\n align-items: center;\n gap: var(--space-sm);\n text-align: left;\n}\n\nbody.theme-dark .podium-place.podium-2 {\n grid-area: second;\n border-color: rgba(0, 245, 255, 0.28);\n box-shadow: 0 0 18px rgba(0, 245, 255, 0.1);\n}\n\nbody.theme-dark .podium-place.podium-3 {\n grid-area: third;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-medal,\nbody.theme-dark .podium-place.podium-3 .podium-medal {\n font-size: 22px;\n margin: 0;\n line-height: 1;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-name,\nbody.theme-dark .podium-place.podium-3 .podium-name {\n font-family: 'Outfit', sans-serif;\n font-weight: 800;\n font-size: var(--font-size-lg);\n color: var(--color-text-white);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-score,\nbody.theme-dark .podium-place.podium-3 .podium-score {\n font-family: 'Outfit', sans-serif;\n font-weight: 900;\n font-size: var(--font-size-lg);\n color: var(--color-accent-secondary);\n font-variant-numeric: tabular-nums;\n text-shadow: 0 0 8px rgba(0, 245, 255, 0.3);\n margin: 0;\n white-space: nowrap;\n}\n\nbody.theme-dark .podium-place.podium-2 .podium-stand,\nbody.theme-dark .podium-place.podium-3 .podium-stand {\n display: none;\n}\n\n/* Graceful collapse for 1/2-player games (JS toggles .hidden on empty slots).\n If #2 is hidden but #3 isn't, promote #3 to the 'second' slot so it\n doesn't look orphaned on the right. */\nbody.theme-dark .podium-place.podium-2.hidden ~ .podium-place.podium-3:not(.hidden) {\n grid-area: second;\n}\n\n/* \"Your Result\" card \u2014 celebratory pink-leaning treatment, larger rank. */\nbody.theme-dark .your-result {\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.10), rgba(0, 245, 255, 0.04));\n border: 1px solid rgba(255, 45, 106, 0.28);\n box-shadow: 0 0 28px rgba(255, 45, 106, 0.12);\n}\n\nbody.theme-dark .your-result-rank {\n font-family: 'Outfit', sans-serif;\n font-weight: 900;\n font-size: var(--font-size-4xl);\n letter-spacing: -0.03em;\n}\n\nbody.theme-dark .your-result-stats .stat-value {\n font-family: 'Outfit', sans-serif;\n font-weight: 800;\n}\n\n/* =====================================================================\n Playlist Hub (v3.3) \u2014 .plh-* namespace\n Replaces wizard step 3 playlist picker. Mobile-first 390px target.\n All tokens inherited from :root design system.\n ===================================================================== */\n\n.plh-root {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n height: 100%;\n background: var(--color-bg-primary);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-variant-numeric: tabular-nums;\n position: relative;\n isolation: isolate;\n overflow: hidden;\n}\n\n.plh-root::before {\n content: '';\n position: absolute;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background:\n radial-gradient(ellipse 70% 25% at 50% 0%, rgba(255, 45, 106, 0.12), transparent 60%),\n radial-gradient(ellipse 60% 30% at 30% 60%, rgba(0, 245, 255, 0.06), transparent 60%);\n}\n\n.plh-header {\n position: sticky;\n top: 0;\n z-index: 5;\n background: rgba(10, 10, 18, 0.82);\n backdrop-filter: blur(14px);\n -webkit-backdrop-filter: blur(14px);\n /* #821: tightened from 12px 18px 10px \u2192 8px 14px 6px so the playlist\n cards below get more vertical room above the fold. The header still\n has its blurred backdrop + bottom border for visual separation. */\n padding: 8px 14px 6px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.04);\n}\n\n.plh-titlebar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n /* #821: was 10px \u2014 tightened so chrome compresses and cards get more\n breathing room. */\n margin-bottom: 6px;\n}\n\n.plh-wordmark {\n font-family: var(--font-display);\n font-weight: 900;\n /* #821: was 24px \u2014 small reduction shifts visual focus to the cards\n below without losing branding presence. */\n font-size: 20px;\n letter-spacing: -0.02em;\n line-height: 1;\n background: linear-gradient(90deg, var(--color-accent-primary) 0%, var(--color-accent-secondary) 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n}\n\n.plh-search {\n position: relative;\n margin-bottom: 10px;\n}\n\n.plh-search input {\n width: 100%;\n height: 40px;\n padding: 0 38px 0 40px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 10px;\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.plh-search input:focus {\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 0 3px rgba(0, 245, 255, 0.15);\n}\n\n.plh-search input::placeholder {\n color: var(--color-text-neon-muted);\n opacity: 0.6;\n}\n\n.plh-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--color-accent-secondary);\n opacity: 0.75;\n}\n\n.plh-search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--color-dark-surface-hover);\n border: none;\n color: var(--color-text-neon-muted);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 13px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.plh-segmented {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 4px;\n padding: 4px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 10px;\n margin-bottom: 10px;\n}\n\n.plh-seg {\n background: transparent;\n border: none;\n padding: 8px 4px;\n cursor: pointer;\n border-radius: 7px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n align-items: center;\n line-height: 1.1;\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n letter-spacing: 0.04em;\n transition: background 0.15s, color 0.15s;\n}\n\n.plh-seg .plh-seg-num {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 15px;\n color: var(--color-text-neon-muted);\n}\n\n.plh-seg .plh-seg-label {\n font-size: 11px;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n}\n\n.plh-seg.active {\n background: linear-gradient(135deg, rgba(255, 45, 106, 0.22), rgba(0, 245, 255, 0.14));\n color: var(--color-text-white);\n box-shadow: inset 0 0 0 1px rgba(255, 45, 106, 0.35), 0 0 18px rgba(255, 45, 106, 0.18);\n}\n\n.plh-seg.active .plh-seg-num { color: var(--color-accent-primary); }\n\n.plh-seg-community.active {\n background: linear-gradient(135deg, rgba(157, 78, 221, 0.25), rgba(255, 45, 106, 0.15));\n box-shadow: inset 0 0 0 1px rgba(157, 78, 221, 0.45), 0 0 18px rgba(157, 78, 221, 0.22);\n}\n\n.plh-seg-community.active .plh-seg-num { color: #c89af5; }\n\n.plh-seg-mine.active {\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.18), rgba(255, 45, 106, 0.1));\n box-shadow: inset 0 0 0 1px rgba(0, 245, 255, 0.4), 0 0 18px rgba(0, 245, 255, 0.18);\n}\n\n.plh-seg-mine.active .plh-seg-num { color: var(--color-accent-secondary); }\n\n.plh-chips {\n display: flex;\n gap: 7px;\n overflow-x: auto;\n padding: 0 0 6px;\n scrollbar-width: none;\n}\n\n.plh-chips::-webkit-scrollbar { display: none; }\n\n.plh-chip {\n flex-shrink: 0;\n padding: 7px 13px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 999px;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n white-space: nowrap;\n cursor: pointer;\n letter-spacing: 0.01em;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n}\n\n.plh-chip.active {\n background: var(--color-accent-primary);\n color: var(--color-text-white);\n border-color: transparent;\n font-weight: 700;\n box-shadow: 0 0 16px rgba(255, 45, 106, 0.45);\n}\n\n/* #1569 follow-up: the Playlists/Mix tab-panel wrappers must fill the hub's\n remaining height (under the sticky tab strip) so their inner .plh-body can\n scroll. Without this they size to content and overflow .plh-root\n (height:100%; overflow:hidden), clipping everything below the fold. */\n.plh-list-view,\n.plh-mix-view {\n flex: 1 1 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.plh-body {\n position: relative;\n z-index: 1;\n flex: 1;\n overflow-y: auto;\n padding: 14px 0 110px;\n}\n\n.plh-loading {\n padding: 40px 20px;\n text-align: center;\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n color: var(--color-text-neon-muted);\n}\n\n/* Section dividers \u2014 group related shelves under a prominent header.\n Currently used by the \"\uD83C\uDF0D By Country\" block in the Community tab so\n the per-language shelves read as one organized section instead of\n a scattered list. */\n.plh-section-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 18px 12px;\n margin: 4px 0 8px;\n border-bottom: 1px solid rgba(0, 245, 255, 0.12);\n}\n\n.plh-section-head-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n letter-spacing: -0.02em;\n color: var(--color-text-white);\n line-height: 1;\n}\n\n.plh-section-head-emoji {\n font-size: 22px;\n filter: drop-shadow(0 0 12px rgba(0, 245, 255, 0.3));\n}\n\n.plh-section-head-meta {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 10px;\n letter-spacing: 0.16em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n flex-shrink: 0;\n}\n\n/* Shelves */\n\n.plh-shelf {\n margin-bottom: 22px;\n}\n\n.plh-shelf-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n padding: 0 18px 10px;\n}\n\n.plh-shelf-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 18px;\n letter-spacing: -0.01em;\n color: var(--color-text-white);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.plh-shelf-see {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 12px;\n color: var(--color-accent-secondary);\n letter-spacing: 0.02em;\n cursor: pointer;\n background: transparent;\n border: none;\n padding: 0;\n}\n\n.plh-local-dot {\n display: inline-block;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: var(--color-success-neon);\n box-shadow: 0 0 8px var(--color-success-neon);\n margin-right: 8px;\n vertical-align: middle;\n}\n\n.plh-local-badge {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 9px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-success-neon);\n padding: 2px 7px;\n background: rgba(57, 255, 20, 0.12);\n border: 1px solid rgba(57, 255, 20, 0.4);\n border-radius: 999px;\n margin-left: 8px;\n vertical-align: middle;\n}\n\n/* Cards (horizontal scroll shelf) */\n\n.plh-cards {\n display: flex;\n gap: 12px;\n overflow-x: auto;\n padding: 0 18px 4px;\n scrollbar-width: none;\n}\n\n.plh-cards::-webkit-scrollbar { display: none; }\n\n.plh-card {\n flex-shrink: 0;\n /* #821: bumped from 136px \u2192 160px (~17% bigger area). Makes the\n playlist cards the visual centerpiece of the hub instead of feeling\n small relative to the surrounding chrome (header, search, stats,\n chips, action bar). Stays under 50% viewport width on the smallest\n phones (e.g. 375px) so two cards still fit side-by-side. */\n width: 160px;\n cursor: pointer;\n position: relative;\n background: transparent;\n border: none;\n padding: 0;\n text-align: left;\n color: inherit;\n font: inherit;\n}\n\n.plh-card .plh-cover {\n /* #821: matched to .plh-card width; keeps the 1:1 aspect ratio. */\n width: 160px;\n height: 160px;\n border-radius: 12px;\n position: relative;\n overflow: hidden;\n box-shadow: 0 10px 24px rgba(0, 0, 0, 0.5);\n isolation: isolate;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 10px;\n}\n\n.plh-card .plh-cover::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(180deg, transparent 55%, rgba(0, 0, 0, 0.45) 100%);\n pointer-events: none;\n z-index: 1;\n}\n\n.plh-cover-inner {\n position: relative;\n z-index: 2;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n height: 100%;\n}\n\n.plh-cover-glyph {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 42px;\n line-height: 0.9;\n letter-spacing: -0.04em;\n color: #fff;\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* When the glyph falls back to word-initials (e.g. \"GMS\") or a longer\n abbreviation, scale it down so it doesn't crowd the sub-title. */\n.plh-cover-glyph-long { font-size: 26px; letter-spacing: -0.02em; }\n\n.plh-cover-sub {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: rgba(255, 255, 255, 0.92);\n margin-top: 4px;\n line-height: 1.15;\n /* Two-line clamp so \"Top 100 Dutch Classics\" fits cleanly instead of\n showing \"Top 100 Dutch Classi\u2026\". */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n overflow-wrap: break-word;\n word-break: break-word;\n max-width: 100%;\n}\n\n.plh-cover-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 3px 8px;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n border-radius: 999px;\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 9px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-text-white);\n z-index: 3;\n}\n\n.plh-cover-badge-purple {\n background: rgba(157, 78, 221, 0.5);\n}\n\n.plh-card-meta { padding: 8px 2px 0; }\n\n.plh-card-name {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 13px;\n line-height: 1.25;\n color: var(--color-text-white);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.plh-card-sub {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n letter-spacing: 0.02em;\n}\n\n.plh-card-sub b { color: var(--color-accent-secondary); font-weight: 700; }\n\n.plh-card-local {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-success-neon);\n margin-top: 2px;\n letter-spacing: 0.02em;\n}\n\n.plh-card-local b { color: var(--color-success-neon); font-weight: 800; }\n\n.plh-card-local-when { color: var(--color-text-neon-muted); }\n.plh-card-local-when b { color: var(--color-accent-secondary); }\n\n/* rc3: replaces the faint corner circle (.plh-check) with a labeled pill.\n Unselected = pink \"+ Add\", selected = neon-green \"\u2713 Added\". Sits on the\n top-LEFT so it doesn't collide with cover-badge (which lives top-right on\n featured / community / recently-added cards). */\n.plh-pill {\n position: absolute;\n top: 8px;\n left: 8px;\n z-index: 4;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 5px 10px 5px 8px;\n border-radius: 999px;\n background: rgba(255, 45, 106, 0.92);\n color: var(--color-text-white);\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 10px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n cursor: pointer;\n border: 1px solid rgba(255, 255, 255, 0.12);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 14px rgba(255, 45, 106, 0.35);\n backdrop-filter: blur(6px);\n -webkit-backdrop-filter: blur(6px);\n transition: background 0.15s, color 0.15s, box-shadow 0.15s, filter 0.15s;\n}\n\n.plh-pill:hover { filter: brightness(1.1); }\n\n.plh-pill-label { line-height: 1; }\n\n.plh-card-selected .plh-pill {\n background: var(--color-success-neon);\n color: var(--color-bg-primary);\n border-color: transparent;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 18px rgba(57, 255, 20, 0.55);\n}\n\n.plh-card-selected .plh-cover {\n box-shadow: 0 0 0 3px var(--color-success-neon), 0 10px 24px rgba(0, 0, 0, 0.5);\n}\n\n/* Legacy rc1/rc2 corner circle \u2014 kept as a no-op guard in case any stale\n cached markup survives the CACHE_VERSION bump. New markup uses .plh-pill. */\n.plh-check { display: none; }\n\n/* Featured shelf \u2014 bigger cards + gradient frame */\n\n.plh-featured .plh-card,\n.plh-featured .plh-card .plh-cover { width: 160px; }\n\n.plh-featured .plh-card .plh-cover {\n height: 200px;\n padding: 2px;\n background: linear-gradient(135deg, var(--color-accent-primary), var(--color-accent-secondary));\n box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6), 0 0 24px rgba(255, 45, 106, 0.25);\n}\n\n.plh-featured .plh-card .plh-cover::after {\n border-radius: 10px;\n margin: 2px;\n inset: 2px;\n}\n\n.plh-featured .plh-cover-inner { padding: 10px; }\n.plh-featured .plh-cover-glyph { font-size: 48px; }\n\n.plh-card-community .plh-cover {\n background: linear-gradient(135deg, #240046 0%, #7209b7 50%, #ff2d6a 100%);\n box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6), 0 0 28px rgba(157, 78, 221, 0.4);\n}\n\n/* Cover gradient tints */\n.plh-tint-pop { background: linear-gradient(135deg, #ff2d6a 0%, #ff6b9d 60%, #ff8c42 100%); }\n.plh-tint-rock { background: linear-gradient(135deg, #c1121f 0%, #ff4d1c 60%, #ff8c42 100%); }\n.plh-tint-hiphop { background: linear-gradient(135deg, #7209b7 0%, #b5179e 60%, #ff2d6a 100%); }\n.plh-tint-jazz { background: linear-gradient(135deg, #b08968 0%, #e6a855 60%, #ffc94a 100%); }\n.plh-tint-metal { background: linear-gradient(135deg, #1a0000 0%, #6a040f 60%, #c1121f 100%); }\n.plh-tint-eu { background: linear-gradient(135deg, #00b4d8 0%, #0077b6 60%, #03045e 100%); }\n.plh-tint-latin { background: linear-gradient(135deg, #ff6600 0%, #ffb703 60%, #fdd85d 100%); }\n.plh-tint-schlager { background: linear-gradient(135deg, #ff8fab 0%, #ffc2d1 60%, #fae0e4 100%); }\n.plh-tint-schlager .plh-cover-glyph,\n.plh-tint-schlager .plh-cover-sub { color: #2a0a1a; text-shadow: none; }\n.plh-tint-soul { background: linear-gradient(135deg, #6a0572 0%, #ab4287 60%, #fcbf49 100%); }\n.plh-tint-purple { background: linear-gradient(135deg, #240046 0%, #7209b7 50%, #ff2d6a 100%); }\n\n/* Community request banner */\n\n.plh-banner {\n margin: 0 18px 18px;\n padding: 14px 16px;\n border-radius: 14px;\n background: linear-gradient(135deg, rgba(157, 78, 221, 0.18), rgba(255, 45, 106, 0.1));\n border: 1px solid rgba(157, 78, 221, 0.35);\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n}\n\n.plh-banner-icon {\n width: 40px;\n height: 40px;\n border-radius: 10px;\n background: linear-gradient(135deg, #7209b7, var(--color-accent-primary));\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n flex-shrink: 0;\n box-shadow: 0 0 14px rgba(157, 78, 221, 0.5);\n}\n\n.plh-banner-body { flex: 1; min-width: 0; }\n\n.plh-banner-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 14px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-banner-sub {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.35;\n}\n\n.plh-banner-arrow {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n color: #c89af5;\n}\n\n/* Mine empty + populated */\n\n.plh-mine-empty { padding: 30px 24px; text-align: center; }\n\n.plh-empty-emoji { font-size: 64px; margin-bottom: 12px; filter: drop-shadow(0 0 24px rgba(0, 245, 255, 0.3)); }\n\n.plh-mine-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 26px;\n color: var(--color-text-white);\n margin: 0 0 8px;\n letter-spacing: -0.01em;\n line-height: 1.1;\n}\n\n.plh-mine-body {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 14px;\n color: var(--color-text-neon-muted);\n margin: 0 0 20px;\n line-height: 1.5;\n}\n\n.plh-mine-body b { color: var(--color-text-white); font-weight: 700; }\n\n.plh-request-cta {\n margin: 0 0 16px;\n padding: 20px;\n background: linear-gradient(135deg, rgba(0, 245, 255, 0.1), rgba(255, 45, 106, 0.06));\n border: 1px solid rgba(0, 245, 255, 0.35);\n border-radius: 16px;\n text-align: left;\n}\n\n.plh-request-head {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 14px;\n}\n\n.plh-request-icon {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, var(--color-accent-secondary), #0077b6);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--color-bg-primary);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n box-shadow: 0 0 16px rgba(0, 245, 255, 0.5);\n}\n\n.plh-request-titles { flex: 1; min-width: 0; }\n\n.plh-request-t1 {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 16px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-request-t2 {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.35;\n}\n\n.plh-meanwhile {\n margin: 12px 0 0;\n padding: 14px 16px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 12px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n text-align: left;\n}\n\n.plh-meanwhile-icon {\n color: var(--color-accent-secondary);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.plh-meanwhile-body { flex: 1; min-width: 0; }\n\n.plh-meanwhile-t1 {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 13px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-meanwhile-t2 {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n line-height: 1.35;\n}\n\n.plh-meanwhile-arrow {\n color: var(--color-text-neon-muted);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 20px;\n}\n\n.plh-mine-head { padding: 14px 18px 6px; display: flex; align-items: baseline; justify-content: space-between; }\n\n.plh-mine-count {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 13px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n\n.plh-mine-count b { color: var(--color-text-white); font-weight: 900; }\n\n.plh-new-request {\n margin: 10px 18px 18px;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px;\n background: linear-gradient(90deg, rgba(0, 245, 255, 0.1), rgba(255, 45, 106, 0.08));\n border: 1px dashed rgba(0, 245, 255, 0.4);\n border-radius: 12px;\n cursor: pointer;\n}\n\n.plh-new-plus {\n width: 36px;\n height: 36px;\n border-radius: 10px;\n background: var(--color-accent-secondary);\n color: var(--color-bg-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 20px;\n box-shadow: 0 0 16px var(--color-accent-secondary);\n flex-shrink: 0;\n}\n\n.plh-new-t1 {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 14px;\n color: var(--color-text-white);\n line-height: 1.2;\n}\n\n.plh-new-t2 {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n margin-top: 2px;\n}\n\n.plh-req-list {\n padding: 0 18px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.plh-req-card {\n padding: 14px 14px 14px 16px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.plh-req-card.plh-req-done { border-color: rgba(57, 255, 20, 0.35); background: linear-gradient(90deg, rgba(57, 255, 20, 0.06), transparent 75%); }\n.plh-req-card.plh-req-building { border-color: rgba(0, 245, 255, 0.4); background: linear-gradient(90deg, rgba(0, 245, 255, 0.06), transparent 75%); }\n.plh-req-card.plh-req-declined { border-color: rgba(255, 45, 106, 0.35); }\n\n.plh-req-row1 { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }\n\n.plh-req-body { min-width: 0; flex: 1; }\n\n.plh-req-name {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n color: var(--color-text-white);\n line-height: 1.2;\n letter-spacing: -0.01em;\n}\n\n.plh-req-desc {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 11.5px;\n color: var(--color-text-neon-muted);\n margin-top: 3px;\n line-height: 1.45;\n word-break: break-all;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.plh-req-meta {\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 10px;\n color: var(--color-text-light);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n margin-top: 4px;\n}\n\n.plh-req-meta b { color: var(--color-text-neon-muted); font-weight: 700; }\n\n.plh-req-link {\n color: var(--color-accent-secondary);\n font-weight: 700;\n text-transform: none;\n letter-spacing: 0.02em;\n text-decoration: none;\n}\n\n.plh-status-badge {\n flex-shrink: 0;\n padding: 4px 10px;\n border-radius: 999px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 10px;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.plh-sb-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 6px currentColor; }\n\n.plh-status-badge.pending { background: rgba(245, 158, 11, 0.12); border: 1px solid rgba(245, 158, 11, 0.45); color: var(--color-warning); }\n.plh-status-badge.building { background: rgba(0, 245, 255, 0.12); border: 1px solid rgba(0, 245, 255, 0.45); color: var(--color-accent-secondary); }\n.plh-status-badge.done { background: rgba(57, 255, 20, 0.12); border: 1px solid rgba(57, 255, 20, 0.4); color: var(--color-success-neon); }\n.plh-status-badge.declined { background: rgba(255, 45, 106, 0.12); border: 1px solid rgba(255, 45, 106, 0.4); color: #ff7ca7; }\n\n.plh-progress { display: flex; gap: 3px; align-items: center; }\n\n.plh-seg-pill {\n flex: 1;\n height: 3px;\n border-radius: 2px;\n background: var(--color-border-neon);\n}\n\n.plh-seg-pill.filled-pending { background: var(--color-warning); box-shadow: 0 0 6px var(--color-warning); }\n.plh-seg-pill.filled-building { background: var(--color-accent-secondary); box-shadow: 0 0 6px var(--color-accent-secondary); }\n.plh-seg-pill.filled-done { background: var(--color-success-neon); box-shadow: 0 0 6px var(--color-success-neon); }\n.plh-seg-pill.filled-declined { background: var(--color-accent-primary); box-shadow: 0 0 6px var(--color-accent-primary); }\n\n.plh-steps-row {\n display: flex;\n justify-content: space-between;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 9px;\n color: var(--color-text-light);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n margin-top: -4px;\n}\n\n.plh-steps-row span.active { color: var(--color-text-white); font-weight: 800; }\n\n/* Empty state layout */\n\n.plh-empty {\n padding: 30px 28px;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.plh-empty-icon {\n width: 96px;\n height: 96px;\n border-radius: 26px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n font-size: 42px;\n position: relative;\n}\n\n.plh-empty-icon-search { background: radial-gradient(circle, rgba(0, 245, 255, 0.12), var(--color-bg-surface) 60%); }\n\n.plh-empty-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 24px;\n color: var(--color-text-white);\n margin: 0;\n letter-spacing: -0.01em;\n line-height: 1.15;\n}\n\n.plh-empty-body {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n color: var(--color-text-neon-muted);\n margin: 0;\n line-height: 1.55;\n max-width: 280px;\n}\n\n.plh-cyan { color: var(--color-accent-secondary); }\n\n.plh-action-stack {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n max-width: 280px;\n margin-top: 12px;\n}\n\n/* Buttons */\n\n.plh-btn {\n padding: 13px 16px;\n border-radius: 12px;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 13px;\n letter-spacing: 0.04em;\n border: 1px solid var(--color-border-neon);\n background: var(--color-bg-surface);\n color: var(--color-text-white);\n cursor: pointer;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n text-transform: uppercase;\n transition: all 0.15s;\n font-family: var(--font-display);\n}\n\n.plh-btn:hover { border-color: var(--color-accent-secondary); }\n\n.plh-btn-primary {\n background: linear-gradient(90deg, var(--color-accent-primary), #ff5fa4);\n border-color: transparent;\n color: var(--color-text-white);\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.45);\n}\n\n.plh-btn-primary:hover { border-color: transparent; filter: brightness(1.1); }\n\n.plh-btn-cyan {\n background: linear-gradient(90deg, var(--color-accent-secondary), #0077b6);\n color: var(--color-bg-primary);\n border-color: transparent;\n box-shadow: 0 0 22px rgba(0, 245, 255, 0.45);\n}\n\n.plh-btn-cyan:hover { border-color: transparent; filter: brightness(1.1); }\n\n.plh-btn-neon {\n background: linear-gradient(90deg, var(--color-success-neon), #7bf1ff);\n color: var(--color-bg-primary);\n border-color: transparent;\n box-shadow: 0 0 24px rgba(57, 255, 20, 0.5);\n}\n\n.plh-btn-ghost {\n background: transparent;\n color: var(--color-text-neon-muted);\n}\n\n/* Detail sheet (bottom-sheet modal) */\n\n.plh-sheet-host {\n position: fixed;\n inset: 0;\n z-index: 50;\n pointer-events: none;\n display: none;\n}\n\n.plh-sheet-host.open {\n display: block;\n pointer-events: auto;\n}\n\n.plh-scrim {\n position: absolute;\n inset: 0;\n background: rgba(5, 5, 10, 0.72);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n}\n\n.plh-sheet {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(180deg, #14141e 0%, var(--color-bg-primary) 100%);\n border-top-left-radius: 28px;\n border-top-right-radius: 28px;\n box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.6);\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border-top: 1px solid rgba(255, 45, 106, 0.25);\n animation: plh-sheet-in 0.25s ease-out;\n}\n\n.plh-sheet-community { border-top-color: rgba(157, 78, 221, 0.4); }\n\n.plh-sheet::before {\n content: '';\n position: absolute;\n top: 10px;\n left: 50%;\n transform: translateX(-50%);\n width: 48px;\n height: 4px;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.2);\n}\n\n@keyframes plh-sheet-in {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n\n.plh-sheet-close {\n position: absolute;\n top: 18px;\n right: 18px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n color: var(--color-text-neon-muted);\n cursor: pointer;\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 16px;\n line-height: 1;\n z-index: 5;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.plh-sheet-head { padding: 28px 20px 0; display: flex; gap: 14px; align-items: flex-start; flex-shrink: 0; }\n\n.plh-sheet-cover {\n width: 100px;\n height: 100px;\n border-radius: 14px;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 10px;\n box-shadow: 0 12px 30px rgba(0, 0, 0, 0.5);\n}\n\n.plh-sheet-cover-glyph {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 36px;\n line-height: 0.9;\n letter-spacing: -0.04em;\n color: #fff;\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n}\n\n.plh-sheet-cover-sub {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 11px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: rgba(255, 255, 255, 0.9);\n margin-top: 2px;\n}\n\n.plh-sheet-info { flex: 1; min-width: 0; }\n\n.plh-sheet-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n line-height: 1.1;\n letter-spacing: -0.02em;\n color: var(--color-text-white);\n margin: 0;\n}\n\n.plh-sheet-author {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 12px;\n color: var(--color-text-neon-muted);\n margin-top: 4px;\n}\n\n.plh-sheet-author b { color: var(--color-accent-secondary); font-weight: 700; }\n\n.plh-sheet-stats {\n display: flex;\n gap: 0;\n padding: 18px 20px 16px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.06);\n margin-top: 18px;\n flex-shrink: 0;\n}\n\n.plh-stat { flex: 1; text-align: center; position: relative; }\n\n.plh-stat + .plh-stat::before {\n content: '';\n position: absolute;\n left: 0;\n top: 6px;\n bottom: 6px;\n width: 1px;\n background: var(--color-border-neon);\n}\n\n.plh-stat-val {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n color: var(--color-text-white);\n letter-spacing: -0.02em;\n line-height: 1;\n}\n\n.plh-stat-val-cyan { color: var(--color-accent-secondary); }\n.plh-stat-val-pink { color: var(--color-accent-primary); }\n\n.plh-stat-lbl {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 9px;\n letter-spacing: 0.16em;\n text-transform: uppercase;\n color: var(--color-text-light);\n margin-top: 4px;\n}\n\n.plh-sheet-scroll {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px 20px;\n}\n\n.plh-sheet-sec-title {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 12px;\n letter-spacing: 0.18em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n margin: 0 0 10px;\n}\n\n.plh-sheet-desc {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: 13px;\n color: var(--color-text-neon-muted);\n line-height: 1.55;\n margin-bottom: 16px;\n padding: 14px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 12px;\n}\n\n.plh-sheet-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }\n\n.plh-sheet-tag {\n padding: 5px 10px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 6px;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 11px;\n color: var(--color-text-white);\n letter-spacing: 0.02em;\n}\n\n.plh-sheet-providers { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }\n\n.plh-sheet-provider {\n padding: 6px 10px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n border-radius: 8px;\n font-family: var(--font-body);\n font-weight: 600;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n}\n\n.plh-sheet-provider b { color: var(--color-accent-secondary); font-weight: 800; }\n\n.plh-sheet-foot {\n padding: 14px 20px calc(14px + env(safe-area-inset-bottom, 0px)) 20px;\n background: rgba(10, 10, 18, 0.95);\n border-top: 1px solid var(--color-border-neon);\n display: flex;\n gap: 10px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.plh-sheet-foot .plh-btn { flex: 1; }\n\n/* Bottom CTA bar */\n\n/* #1625: the Mix tab reuses the sticky CTA bar (Back + \"Weiter \u2192\") so the setup\n wizard can advance from a built mix. It renders empty outside the wizard\n (no onContinue) \u2014 collapse it so no bare floating bar shows. */\n.plh-mix-cta:empty {\n display: none;\n}\n\n.plh-cta-bar {\n position: absolute;\n left: 12px;\n right: 12px;\n bottom: 12px;\n display: flex;\n gap: 8px;\n padding: 10px;\n background: rgba(10, 10, 18, 0.88);\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n border: 1px solid var(--color-border-neon);\n border-radius: 16px;\n box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6);\n align-items: center;\n z-index: 10;\n}\n\n/* Request-a-playlist FAB inside the CTA bar. rc1/rc2 used a\n near-transparent fill which made the envelope icon invisible against\n the dark sticky bar. rc3: solid cyan button with a dark icon so the\n affordance reads at a glance. */\n.plh-cta-fab {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, var(--color-accent-secondary) 0%, #0ea5c4 100%);\n border: none;\n color: var(--color-bg-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 0 18px rgba(0, 245, 255, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.25);\n flex-shrink: 0;\n transition: filter 0.15s;\n}\n\n.plh-cta-fab:hover { filter: brightness(1.1); }\n\n/* #1054: pin the FAB SVG stroke to a literal hex white. The earlier\n rc3 fix used var(--color-bg-primary), but some Safari/Webkit versions\n also fail to resolve CSS variables into the SVG `stroke` property,\n not just into inherited `currentColor`. A literal hex value bypasses\n the variable resolver entirely; white on cyan gives max contrast. */\n.plh-cta-fab svg {\n stroke: #ffffff;\n fill: none;\n}\n\n.plh-cta-back {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 0 12px;\n height: 44px;\n border-radius: 12px;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-neon);\n color: var(--color-text-white);\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 13px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n cursor: pointer;\n transition: border-color 0.15s, background 0.15s;\n}\n\n.plh-cta-back:hover { border-color: var(--color-accent-secondary); }\n.plh-cta-back svg { opacity: 0.85; }\n\n.plh-cta-count {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 14px;\n color: var(--color-success-neon);\n padding: 0 8px;\n letter-spacing: 0.04em;\n text-shadow: 0 0 10px rgba(57, 255, 20, 0.5);\n}\n\n.plh-cta-start {\n flex: 1;\n background: linear-gradient(90deg, var(--color-accent-primary), #ff5fa4);\n border: none;\n border-radius: 12px;\n padding: 12px;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 14px;\n color: var(--color-text-white);\n cursor: pointer;\n letter-spacing: 0.02em;\n box-shadow: 0 0 24px rgba(255, 45, 106, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n/* Legacy count pill \u2014 v3.3.0-rc1 rendered it next to the Continue label.\n rc2 drops it (count already shown in the green pill on the left).\n Kept as a no-op class guard in case any stale cached markup shows up. */\n.plh-cta-start-count { display: none; }\n\n.plh-cta-start-label { font-family: var(--font-display); font-weight: 700; }\n.plh-cta-start-arrow { opacity: 0.9; flex-shrink: 0; }\n.plh-cta-count-empty { opacity: 0.5; }\n\n.plh-cta-count-btn {\n background: transparent;\n border: 1px solid rgba(57, 255, 20, 0.35);\n border-radius: 999px;\n cursor: pointer;\n transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;\n}\n.plh-cta-count-btn:hover,\n.plh-cta-count-btn:focus-visible {\n background: rgba(57, 255, 20, 0.12);\n border-color: rgba(57, 255, 20, 0.6);\n outline: none;\n}\n.plh-cta-count-btn:active { transform: scale(0.96); }\n\n.plh-cta-start-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n}\n\n/* Selected-playlists sheet (issue #1074) */\n.plh-sheet-selected { border-top-color: rgba(57, 255, 20, 0.35); }\n.plh-selected-head {\n padding: 28px 20px 12px;\n flex-shrink: 0;\n}\n.plh-selected-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 20px;\n color: var(--color-text-white);\n margin: 0 0 4px;\n letter-spacing: 0.01em;\n}\n.plh-selected-subtitle {\n font-size: 13px;\n color: var(--color-text-neon-muted);\n letter-spacing: 0.01em;\n}\n.plh-selected-scroll {\n overflow-y: auto;\n padding: 4px 16px 24px;\n flex: 1;\n min-height: 0;\n}\n.plh-selected-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 8px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.06);\n}\n.plh-selected-row:last-child { border-bottom: none; }\n.plh-selected-thumb {\n width: 44px;\n height: 44px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: rgba(255, 255, 255, 0.06);\n}\n.plh-selected-glyph { font-size: 20px; }\n.plh-selected-meta {\n flex: 1;\n min-width: 0;\n}\n.plh-selected-name {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 14px;\n color: var(--color-text-white);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.plh-selected-sub {\n font-size: 12px;\n color: var(--color-text-neon-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin-top: 2px;\n}\n.plh-selected-sub b { color: var(--color-text-white); font-weight: 700; }\n.plh-selected-remove {\n height: 32px;\n padding: 0 12px;\n border-radius: 16px;\n background: var(--color-bg-surface);\n border: 1px solid rgba(255, 45, 106, 0.35);\n color: #ff5fa4;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-shrink: 0;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.1s ease;\n}\n.plh-selected-remove:hover,\n.plh-selected-remove:focus-visible {\n background: rgba(255, 45, 106, 0.18);\n border-color: rgba(255, 45, 106, 0.65);\n color: #ff7ab3;\n outline: none;\n}\n.plh-selected-remove:active { transform: scale(0.94); }\n.plh-selected-remove-label { line-height: 1; }\n.plh-selected-empty {\n text-align: center;\n padding: 36px 20px;\n color: var(--color-text-neon-muted);\n}\n.plh-selected-empty-icon { font-size: 36px; margin-bottom: 8px; }\n.plh-selected-empty-title {\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 14px;\n}\n\n/* Wider viewport: widen cards a touch, keep layout stable */\n\n@media (min-width: 720px) {\n .plh-cards { padding: 0 24px 4px; }\n .plh-header { padding: 16px 24px 12px; }\n .plh-shelf-head { padding: 0 24px 10px; }\n .plh-banner, .plh-new-request { margin-left: 24px; margin-right: 24px; }\n .plh-req-list { padding: 0 24px; }\n .plh-mine-head { padding: 14px 24px 6px; }\n}\n\n/* ------------------------------------------------------------------\n * Playlist Generator (#1052) \u2014 modal that bridges Spotify URL \u2192 LLM\n * prompt \u2192 validated bundled-format JSON. Lives under .plg-* namespace.\n * Built to match the dark playlist-hub look + admin tokens.\n * ------------------------------------------------------------------ */\n.plg-host {\n position: fixed;\n inset: 0;\n z-index: 9000;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n overflow: hidden;\n}\n.plg-scrim {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.72);\n backdrop-filter: blur(6px);\n -webkit-backdrop-filter: blur(6px);\n}\n.plg-modal {\n position: relative;\n z-index: 1;\n margin: 32px 16px;\n max-width: 880px;\n width: 100%;\n background: #0f1116;\n color: #f1f3f7;\n border-radius: 16px;\n border: 1px solid rgba(255, 255, 255, 0.08);\n box-shadow: 0 30px 60px rgba(0, 0, 0, 0.6);\n padding: 24px 24px 20px;\n max-height: calc(100vh - 64px);\n overflow-y: auto;\n font-family: var(--font-body, system-ui);\n}\n.plg-close {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.06);\n color: #f1f3f7;\n border: 0;\n font-size: 16px;\n cursor: pointer;\n}\n.plg-close:hover { background: rgba(255, 255, 255, 0.12); }\n.plg-title {\n margin: 0 0 4px;\n font-size: 20px;\n font-family: var(--font-display, system-ui);\n font-weight: 700;\n letter-spacing: 0.02em;\n}\n.plg-sub {\n margin: 0 0 18px;\n color: #d8dce5;\n font-size: 15px;\n line-height: 1.55;\n}\n/* Inline step-by-step guide accordion (#1286) */\n.plg-guide {\n margin: 0 0 18px;\n background: #14171f;\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 12px;\n overflow: hidden;\n}\n.plg-guide-toggle {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n box-sizing: border-box;\n padding: 12px 14px;\n background: transparent;\n border: 0;\n color: #f1f3f7;\n font: inherit;\n font-size: 14px;\n font-weight: 700;\n letter-spacing: 0.01em;\n cursor: pointer;\n text-align: left;\n}\n.plg-guide-toggle:hover { background: rgba(255, 255, 255, 0.03); }\n.plg-guide-chevron { color: #8a92a3; font-size: 13px; margin-left: 12px; }\n.plg-guide-body {\n padding: 4px 14px 14px;\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n}\n.plg-guide-steps {\n list-style: none;\n margin: 12px 0 14px;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.plg-guide-step {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n.plg-guide-num {\n flex: 0 0 auto;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: linear-gradient(180deg, #ff3a8c, #cf2e72);\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.plg-guide-text {\n color: #d8dce5;\n font-size: 13.5px;\n line-height: 1.5;\n}\n.plg-guide-text b { color: #f1f3f7; }\n.plg-guide-warn {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n background: rgba(255, 184, 0, 0.08);\n border: 1px solid rgba(255, 184, 0, 0.35);\n border-radius: 10px;\n padding: 10px 12px;\n}\n.plg-guide-warn-icon { flex: 0 0 auto; font-size: 14px; line-height: 1.5; }\n.plg-guide-warn-text {\n color: #f0d9a8;\n font-size: 12.5px;\n line-height: 1.55;\n}\n.plg-guide-warn-text b { color: #ffd66b; }\n.plg-label {\n display: block;\n margin: 14px 0 6px;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: #8a92a3;\n}\n.plg-input,\n.plg-textarea {\n width: 100%;\n box-sizing: border-box;\n background: #181b24;\n color: #f1f3f7;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 10px;\n padding: 10px 12px;\n font: inherit;\n font-size: 14px;\n outline: none;\n}\n.plg-input:focus,\n.plg-textarea:focus { border-color: #5cc8ff; }\n.plg-textarea {\n min-height: 200px;\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12.5px;\n line-height: 1.45;\n resize: vertical;\n}\n.plg-row {\n display: flex;\n gap: 10px;\n align-items: center;\n margin: 8px 0 0;\n flex-wrap: wrap;\n}\n.plg-hint {\n color: #8a92a3;\n font-size: 12px;\n}\n.plg-btn {\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n border-radius: 999px;\n padding: 9px 16px;\n font: inherit;\n font-size: 13px;\n font-weight: 600;\n border: 0;\n background: rgba(255, 255, 255, 0.08);\n color: #f1f3f7;\n}\n.plg-btn:disabled { cursor: not-allowed; opacity: 0.45; }\n.plg-btn-primary { background: linear-gradient(180deg, #ff3a8c, #cf2e72); color: #fff; }\n.plg-btn-secondary { background: rgba(255, 255, 255, 0.1); }\n.plg-btn-ghost { background: transparent; color: #aab0bd; }\n.plg-btn-success { background: linear-gradient(180deg, #2dd66f, #20b659); color: #04140a; }\n.plg-btn-disabled { background: rgba(255, 255, 255, 0.04); color: #5a606e; }\n.plg-actions {\n display: flex;\n gap: 10px;\n margin: 16px 0 0;\n flex-wrap: wrap;\n}\n.plg-results {\n margin-top: 16px;\n}\n.plg-verdict {\n padding: 10px 12px;\n border-radius: 10px;\n margin: 6px 0 12px;\n font-weight: 700;\n font-size: 13px;\n}\n.plg-verdict-ok { background: rgba(45, 214, 111, 0.16); color: #2dd66f; border: 1px solid rgba(45, 214, 111, 0.4); }\n.plg-verdict-bad { background: rgba(255, 80, 80, 0.14); color: #ff8a8a; border: 1px solid rgba(255, 80, 80, 0.4); }\n.plg-block {\n background: #14171f;\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 10px;\n padding: 10px 12px;\n margin: 8px 0;\n}\n.plg-block h4 { margin: 0 0 6px; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; color: #aab0bd; }\n.plg-block ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.5; }\n.plg-block-err { border-color: rgba(255, 80, 80, 0.4); }\n.plg-table-wrap { overflow-x: auto; }\n.plg-table { width: 100%; border-collapse: collapse; font-size: 11px; }\n.plg-table th, .plg-table td { padding: 4px 6px; text-align: center; }\n.plg-table th { color: #8a92a3; font-weight: 600; letter-spacing: 0.04em; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }\n.plg-row-idx { color: #aab0bd; text-align: left; font-weight: 700; }\n.plg-cell-ok { color: #2dd66f; }\n.plg-cell-bad { color: #ff8a8a; background: rgba(255, 80, 80, 0.06); }\n.plg-row-bad { background: rgba(255, 80, 80, 0.04); }\n.plg-row-details td { text-align: left; padding-left: 24px; }\n.plg-err-list { color: #ff8a8a; }\n.plg-warn-list { color: #ffd66b; }\n.plg-song-issue { padding: 8px 0; border-top: 1px solid rgba(255, 255, 255, 0.05); }\n.plg-song-issue:first-of-type { border-top: 0; padding-top: 4px; }\n.plg-song-issue-head { font-weight: 700; font-size: 12px; margin: 0 0 4px; color: #f1f3f7; letter-spacing: 0.02em; }\n.plg-song-issue ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.5; }\n.plg-err-item { color: #ff8a8a; }\n.plg-warn-item { color: #ffd66b; }\n.plg-results-actions { margin-top: 0 !important; margin-bottom: 6px; }\n.plg-hint-inline { font-style: italic; }\n.plg-error {\n background: rgba(255, 80, 80, 0.12);\n border: 1px solid rgba(255, 80, 80, 0.4);\n color: #ff8a8a;\n border-radius: 10px;\n padding: 12px;\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n}\n.plg-footer {\n margin-top: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n padding-top: 10px;\n color: #8a92a3;\n font-size: 12px;\n line-height: 1.5;\n}\n.plg-followup:empty { display: none; }\n.plg-banner {\n margin-top: 12px;\n padding: 10px 12px;\n border-radius: 10px;\n font-size: 13px;\n line-height: 1.5;\n}\n.plg-banner p { margin: 0 0 8px; }\n.plg-banner .plg-row { margin-top: 4px; flex-wrap: wrap; }\n.plg-banner-ok {\n background: rgba(45, 214, 111, 0.14);\n border: 1px solid rgba(45, 214, 111, 0.4);\n color: #c8f3d8;\n}\n.plg-banner-info {\n background: rgba(99, 102, 241, 0.14);\n border: 1px solid rgba(99, 102, 241, 0.4);\n color: #d6d8ff;\n}\n\n/* ============================================\n Title & Artist reveal (#1180)\n ============================================ */\n/* Crowd Court layout (#1180): truth + own result collapse into a compact\n header so the community voting below becomes the hero of the screen. */\n.ta-reveal-truth {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n justify-content: center;\n gap: 8px;\n font-family: var(--font-display, inherit);\n font-size: var(--font-size-md, 1rem);\n margin-bottom: var(--space-sm, 8px);\n}\n.ta-truth-title { font-weight: 800; }\n.ta-truth-sep { opacity: 0.4; }\n.ta-truth-artist {\n color: var(--color-text-neon-muted, #b3b3c2);\n font-family: var(--font-body, inherit);\n font-weight: 600;\n}\n\n.ta-reveal-own {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.07);\n border-radius: var(--radius-lg, 12px);\n}\n/* Emotional verdict banner above the own-result (#1180). */\n.ta-verdict {\n text-align: center;\n font-family: var(--font-display, inherit);\n font-weight: 900;\n font-size: var(--font-size-lg, 1.125rem);\n letter-spacing: 0.01em;\n padding: 8px 12px;\n margin-bottom: 4px;\n border-radius: var(--radius-md, 8px);\n}\n.ta-verdict--win {\n color: var(--color-success-neon, #39ff14);\n background: rgba(57, 255, 20, 0.14);\n box-shadow: inset 0 0 18px rgba(57, 255, 20, 0.12);\n text-shadow: 0 0 12px rgba(57, 255, 20, 0.5);\n}\n.ta-verdict--partial {\n color: var(--color-accent-secondary, #00f5ff);\n background: rgba(0, 245, 255, 0.1);\n}\n.ta-verdict--pending {\n color: var(--color-accent-secondary, #00f5ff);\n background: rgba(0, 245, 255, 0.07);\n font-weight: 700;\n font-style: italic;\n}\n.ta-verdict--miss {\n color: var(--color-text-neon-muted, #b3b3c2);\n background: rgba(255, 255, 255, 0.05);\n}\n.ta-own-row {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n}\n.ta-own-label {\n color: var(--color-text-dim, #6b6b7a);\n font-size: var(--font-size-sm, 0.875rem);\n min-width: 6em;\n}\n.ta-own-guess {\n font-weight: 600;\n flex: 1 1 auto;\n word-break: break-word;\n}\n.ta-own-row--none {\n color: var(--color-text-neon-muted, #b3b3c2);\n font-style: italic;\n}\n.ta-pill {\n font-size: 0.72rem;\n font-weight: 700;\n padding: 2px 10px;\n border-radius: var(--radius-full, 999px);\n white-space: nowrap;\n letter-spacing: 0.02em;\n}\n.ta-pill--exact,\n.ta-pill--fuzzy,\n.ta-pill--near-miss-accepted {\n background: rgba(46, 229, 157, 0.16);\n color: #2ee59d;\n}\n.ta-pill--near-miss {\n background: rgba(255, 180, 0, 0.16);\n color: #ffb400;\n}\n.ta-pill--wrong {\n background: rgba(255, 0, 64, 0.14);\n color: var(--color-error-neon, #ff0040);\n}\n.ta-pill--skipped {\n background: rgba(255, 255, 255, 0.08);\n color: var(--color-text-secondary, #b9b9c6);\n}\n\n/* ---- Crowd Court community voting (#1180) ---- */\n.ta-voting {\n margin-top: var(--space-lg, 24px);\n}\n.ta-voting.hidden { display: none; }\n.ta-voting-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: var(--space-md, 16px);\n}\n.ta-voting-header > span:not(.ta-voting-countdown) {\n font-family: var(--font-display, inherit);\n font-weight: 900;\n font-size: var(--font-size-sm, 0.875rem);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--color-text-white, #fff);\n}\n/* Countdown ring: hollow centre via a radial mask over a draining conic arc. */\n.ta-voting-countdown {\n flex-shrink: 0;\n width: 52px;\n height: 52px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n font-weight: 800;\n font-size: 18px;\n font-variant-numeric: tabular-nums;\n color: var(--color-accent-secondary, #00f5ff);\n background:\n radial-gradient(circle at center, var(--color-bg-primary, #0a0a12) 56%, transparent 57%),\n conic-gradient(var(--color-accent-secondary, #00f5ff) var(--ta-vote-progress, 360deg), rgba(255, 255, 255, 0.1) 0);\n box-shadow: var(--glow-secondary, 0 0 20px rgba(0, 245, 255, 0.5));\n}\n.ta-voting-countdown--closed {\n width: auto;\n height: auto;\n border-radius: var(--radius-full, 999px);\n padding: 4px 12px;\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: 700;\n color: var(--color-text-neon-muted, #b3b3c2);\n background: rgba(255, 255, 255, 0.08);\n box-shadow: none;\n}\n\n.ta-voting-cards {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.ta-vote-card {\n background: var(--color-bg-surface, rgba(255, 255, 255, 0.05));\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-lg, 12px);\n padding: 14px;\n}\n.ta-vote-card--mine {\n border-color: rgba(255, 45, 106, 0.45);\n box-shadow: inset 0 0 16px rgba(255, 45, 106, 0.07);\n}\n.ta-vote-card-head {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 10px;\n}\n.ta-vote-avatar {\n flex-shrink: 0;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: 13px;\n color: #fff;\n background: linear-gradient(135deg, var(--color-accent-primary, #ff2d6a), var(--color-neon-purple, #9d4edd));\n}\n.ta-vote-who {\n flex: 1;\n font-weight: 700;\n font-size: var(--font-size-md, 1rem);\n word-break: break-word;\n}\n.ta-vote-field {\n flex-shrink: 0;\n font-size: var(--font-size-xs, 0.625rem);\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-text-dim, #6b6b7a);\n background: rgba(255, 255, 255, 0.06);\n padding: 3px 8px;\n border-radius: var(--radius-full, 999px);\n}\n.ta-vote-guess {\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: var(--font-size-lg, 1.125rem);\n margin: 2px 0 12px;\n word-break: break-word;\n}\n.ta-vote-tally {\n display: flex;\n flex-direction: column;\n gap: 7px;\n margin-bottom: 12px;\n}\n.ta-tally-row {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n}\n.ta-tally-yes { color: var(--color-success-neon, #39ff14); min-width: 48px; }\n.ta-tally-no { color: var(--color-error-neon, #ff0040); min-width: 48px; }\n.ta-tally-track {\n flex: 1;\n height: 8px;\n border-radius: var(--radius-full, 999px);\n background: rgba(255, 255, 255, 0.07);\n overflow: hidden;\n}\n.ta-tally-fill {\n display: block;\n height: 100%;\n border-radius: var(--radius-full, 999px);\n transition: width var(--transition-normal, 300ms) ease-out;\n}\n.ta-tally-fill--yes {\n background: var(--color-success-neon, #39ff14);\n box-shadow: 0 0 10px rgba(57, 255, 20, 0.5);\n}\n.ta-tally-fill--no {\n background: var(--color-error-neon, #ff0040);\n box-shadow: 0 0 10px rgba(255, 0, 64, 0.45);\n}\n.ta-vote-actions {\n display: flex;\n gap: 10px;\n}\n.ta-vote-btn {\n position: relative;\n flex: 1;\n height: 48px;\n border: 1px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-lg, 12px);\n background: rgba(255, 255, 255, 0.05);\n font-size: 20px;\n cursor: pointer;\n transition: transform var(--transition-fast, 150ms),\n box-shadow var(--transition-fast, 150ms),\n opacity var(--transition-fast, 150ms),\n background var(--transition-fast, 150ms);\n}\n.ta-vote-btn--yes {\n background: rgba(57, 255, 20, 0.12);\n border-color: rgba(57, 255, 20, 0.4);\n color: var(--color-success-neon, #39ff14);\n}\n.ta-vote-btn--no {\n background: rgba(255, 0, 64, 0.1);\n border-color: rgba(255, 0, 64, 0.38);\n color: var(--color-error-neon, #ff0040);\n}\n/* Voted state: chosen button lights up + \u2713, the other dims but stays\n tappable (the server lets a player change their vote). */\n.ta-vote-btn.is-chosen { transform: translateY(-1px); }\n.ta-vote-btn--yes.is-chosen {\n background: rgba(57, 255, 20, 0.22);\n border-color: rgba(57, 255, 20, 0.6);\n box-shadow: var(--glow-success, 0 0 20px rgba(57, 255, 20, 0.5));\n}\n.ta-vote-btn--no.is-chosen {\n background: rgba(255, 0, 64, 0.2);\n border-color: rgba(255, 0, 64, 0.55);\n box-shadow: var(--glow-error, 0 0 20px rgba(255, 0, 64, 0.5));\n}\n.ta-vote-actions--voted .ta-vote-btn { opacity: 0.34; }\n.ta-vote-actions--voted .ta-vote-btn.is-chosen { opacity: 1; }\n.ta-vote-actions--voted .ta-vote-btn.is-chosen::after {\n content: \"\u2713\";\n position: absolute;\n top: 3px;\n right: 8px;\n font-size: 12px;\n font-weight: 800;\n}\n.ta-vote-btn--yes.is-chosen::after { color: var(--color-success-neon, #39ff14); }\n.ta-vote-btn--no.is-chosen::after { color: var(--color-error-neon, #ff0040); }\n.ta-voted-caption {\n margin-top: 8px;\n text-align: center;\n font-size: var(--font-size-sm, 0.875rem);\n color: var(--color-text-neon-muted, #b3b3c2);\n}\n.ta-vote-own-note {\n text-align: center;\n font-size: var(--font-size-sm, 0.875rem);\n font-style: italic;\n color: var(--color-accent-primary, #ff2d6a);\n opacity: 0.85;\n}\n.ta-override-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid rgba(255, 255, 255, 0.07);\n}\n.ta-override-label {\n margin-right: auto;\n font-size: var(--font-size-xs, 0.625rem);\n color: var(--color-text-dim, #6b6b7a);\n}\n.ta-override-btn {\n padding: 6px 14px;\n border-radius: var(--radius-md, 8px);\n border: 1px solid rgba(255, 255, 255, 0.14);\n background: rgba(255, 255, 255, 0.05);\n color: var(--color-text-white, #fff);\n font-weight: 700;\n font-size: var(--font-size-sm, 0.875rem);\n cursor: pointer;\n}\n.ta-override-btn--accept.is-chosen {\n border-color: var(--color-success-neon, #39ff14);\n color: var(--color-success-neon, #39ff14);\n}\n.ta-override-btn--reject.is-chosen {\n border-color: var(--color-error-neon, #ff0040);\n color: var(--color-error-neon, #ff0040);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ta-tally-fill,\n .ta-vote-btn { transition: none; }\n}\n\n/* ---- Resolution moment: \"Close calls \u2014 decided\" (#1180, #1243) ----\n Outcome cards render inside #ta-voting-cards, which already lays out a\n gapped column, so no extra wrapper is needed. */\n.ta-outcome-card {\n display: flex;\n align-items: center;\n gap: 10px;\n background: var(--color-bg-surface, rgba(255, 255, 255, 0.05));\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: var(--radius-lg, 12px);\n padding: 11px 13px;\n}\n.ta-outcome-card--accepted { border-color: rgba(57, 255, 20, 0.3); }\n.ta-outcome-card--rejected { opacity: 0.72; }\n.ta-outcome-avatar {\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: 12px;\n color: #fff;\n background: linear-gradient(135deg, var(--color-accent-primary, #ff2d6a), var(--color-neon-purple, #9d4edd));\n}\n.ta-outcome-main { flex: 1; min-width: 0; }\n.ta-outcome-who {\n font-weight: 700;\n font-size: var(--font-size-base, 0.875rem);\n}\n.ta-outcome-field { color: var(--color-text-dim, #6b6b7a); font-weight: 600; }\n.ta-outcome-guess {\n font-size: var(--font-size-sm, 0.875rem);\n color: var(--color-text-neon-muted, #b3b3c2);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ta-outcome-tally {\n font-size: var(--font-size-xs, 0.625rem);\n color: var(--color-text-dim, #6b6b7a);\n font-variant-numeric: tabular-nums;\n}\n.ta-outcome-verdict {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n font-family: var(--font-display, inherit);\n font-weight: 800;\n font-size: var(--font-size-base, 0.875rem);\n padding: 5px 11px;\n border-radius: var(--radius-full, 999px);\n font-variant-numeric: tabular-nums;\n}\n.ta-outcome-verdict--accepted {\n background: rgba(57, 255, 20, 0.16);\n color: var(--color-success-neon, #39ff14);\n}\n.ta-outcome-verdict--rejected {\n background: rgba(255, 0, 64, 0.12);\n color: var(--color-error-neon, #ff0040);\n}\n\n/* Title & Artist guessing inputs (#1180) \u2014 primary-round input card.\n Echoes the .arc-tiles bonus card but with the pink (primary) accent, and\n stacks each label above a full-width input so the two fields align cleanly. */\n.ta-input-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px 14px;\n margin: 0 var(--space-md) var(--space-md);\n background: linear-gradient(180deg, rgba(255, 45, 106, 0.06), rgba(255, 255, 255, 0.02));\n border: 1px solid rgba(255, 45, 106, 0.22);\n border-radius: var(--radius-lg);\n box-shadow: inset 0 0 12px rgba(255, 45, 106, 0.05);\n}\n.ta-input-section.hidden { display: none; }\n.ta-input-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ta-input-label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-family: var(--font-display);\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n.ta-input-points {\n margin-left: auto;\n flex-shrink: 0;\n background: rgba(57, 255, 20, 0.15);\n color: var(--color-success-neon);\n font-weight: 900;\n font-size: 11px;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n}\n.ta-text-input {\n width: 100%;\n box-sizing: border-box;\n padding: 12px 14px;\n background: rgba(255, 255, 255, 0.05);\n border: 2px solid rgba(255, 255, 255, 0.12);\n border-radius: var(--radius-lg);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: 16px;\n line-height: 1.3;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.ta-text-input::placeholder { color: var(--color-text-neon-muted); opacity: 0.55; }\n.ta-text-input:focus {\n outline: none;\n border-color: var(--color-accent-primary);\n box-shadow: 0 0 0 3px rgba(255, 45, 106, 0.20);\n}\n.ta-input-ack {\n margin-top: 2px;\n text-align: center;\n font-family: var(--font-body);\n font-size: 12px;\n color: var(--color-success-neon);\n}\n.ta-input-ack.hidden { display: none; }\n\n/* ==========================================================================\n Spotlight Stage \u2014 player reveal skin\n --------------------------------------------------------------------------\n A frosted-glass reskin of the reveal view: the song's album art, blurred,\n acts as a \"stage\" behind the top of the screen; every panel floats on\n frosted glass; the duel is two facing tickets bridged by a delta pill.\n\n EVERYTHING here is scoped under #reveal-view on purpose. Several classes\n used on this screen (.card-section, .section-header, .info-btn, .chip,\n .leaderboard-list) are shared with the launcher, lobby, end and admin\n surfaces \u2014 scoping keeps those untouched. Source order + the #id give\n these rules the specificity to win over the base reveal styles above.\n ========================================================================== */\n\n/* Stage: own stacking context + clip the backdrop's blur bleed. */\n#reveal-view .reveal-container--duel {\n position: relative;\n overflow: hidden;\n isolation: isolate;\n}\n\n/* --- Album-art backdrop + scrim (scrolls with the content) --- */\n#reveal-view .reveal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 340px;\n z-index: 0;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n filter: blur(46px) saturate(1.15);\n transform: scale(1.15);\n transform-origin: top center;\n opacity: 0.5;\n pointer-events: none;\n /* Fade the art to nothing well before its box ends, so the blurred/scaled\n tail never reads as a hard bright band below the duel cards (the rc1\n #1462 regression mholzi flagged). The glow dissolves into the stage. */\n -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 28%, transparent 70%);\n mask-image: linear-gradient(to bottom, #000 0%, #000 28%, transparent 70%);\n}\n/* Synthetic fallback when album art is missing or its proxy URL has expired. */\n#reveal-view .reveal-backdrop--synthetic {\n background-image:\n radial-gradient(circle at 28% 22%, rgba(168, 32, 84, 0.95) 0%, rgba(168, 32, 84, 0) 42%),\n radial-gradient(circle at 78% 14%, rgba(96, 28, 150, 0.9) 0%, rgba(96, 28, 150, 0) 46%),\n radial-gradient(circle at 18% 82%, rgba(34, 40, 120, 0.9) 0%, rgba(34, 40, 120, 0) 50%),\n conic-gradient(from 210deg at 52% 48%,\n #1a1038 0deg, #4a1240 70deg, #7a1e3c 130deg,\n #2a1454 200deg, #131642 280deg, #1a1038 360deg);\n filter: blur(54px) saturate(1.25);\n}\n#reveal-view .reveal-scrim {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 380px;\n z-index: 0;\n pointer-events: none;\n background: linear-gradient(180deg,\n rgba(10, 10, 18, 0.78) 0%,\n rgba(10, 10, 18, 0.88) 55%,\n var(--color-bg-primary) 100%);\n}\n/* One cyan spotlight from the upper centre. */\n#reveal-view .reveal-scrim::after {\n content: '';\n position: absolute;\n inset: 0;\n background: radial-gradient(ellipse 320px 360px at 50% 24%,\n rgba(0, 245, 255, 0.13) 0%, rgba(0, 245, 255, 0) 62%);\n}\n/* Lift every real child above the backdrop/scrim \u2014 but NOT the confetti\n canvas, which must keep its own `position: fixed` (full-screen overlay).\n Without this exclusion the canvas drops into normal flow and adds a tall\n empty gap between the duel and the score row. */\n#reveal-view .reveal-container--duel > *:not(.reveal-backdrop):not(.reveal-scrim):not(.confetti-canvas) {\n position: relative;\n z-index: 1;\n}\n@media (prefers-reduced-motion: no-preference) {\n #reveal-view .reveal-backdrop {\n transition: background-image 0.4s ease;\n }\n}\n\n/* --- Frosted-glass recipe for the floating panels --- */\n#reveal-view .song-strip,\n#reveal-view .score-row,\n#reveal-view .card-section,\n#reveal-view .duel-ticket {\n background: rgba(255, 255, 255, 0.06);\n border: 1px solid rgba(255, 255, 255, 0.12);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);\n border-radius: var(--radius-lg);\n}\n/* Keep the glass on hover (base .card-section:hover changes the background). */\n#reveal-view .card-section:hover {\n background: rgba(255, 255, 255, 0.08);\n border-color: rgba(255, 255, 255, 0.16);\n}\n\n/* --- Top chrome floats, no panel (already borderless; just sits on top) --- */\n#reveal-view .reveal-header-v2 {\n margin-bottom: var(--space-sm);\n}\n\n/* --- Song identity strip --- */\n#reveal-view .song-strip {\n padding: var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm);\n}\n#reveal-view .song-strip-cover {\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);\n border: 1px solid rgba(255, 255, 255, 0.15);\n}\n\n/* --- Center stage: emotion headline + duel tickets --- */\n#reveal-view .duel-emotion {\n font-size: 30px;\n letter-spacing: 0.04em;\n margin-bottom: var(--space-sm);\n text-shadow: 0 4px 18px rgba(0, 0, 0, 0.6);\n}\n#reveal-view .duel {\n padding: var(--space-md) var(--space-xs) var(--space-lg);\n}\n#reveal-view .duel-tickets {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: stretch;\n gap: var(--space-md);\n padding-bottom: 20px;\n}\n#reveal-view .duel-ticket {\n flex: 1 1 0;\n max-width: 170px;\n padding: var(--space-md) var(--space-sm) var(--space-lg);\n text-align: center;\n}\n#reveal-view .duel-ticket--you {\n transform: rotate(-3deg) translateY(4px);\n border-color: rgba(255, 45, 106, 0.35);\n box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45), 0 0 24px rgba(255, 45, 106, 0.12);\n}\n#reveal-view .duel-ticket--truth {\n transform: rotate(3deg) translateY(4px);\n border-color: rgba(0, 245, 255, 0.4);\n box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45), 0 0 34px rgba(0, 245, 255, 0.18);\n}\n#reveal-view .duel-ticket .duel-label {\n padding-bottom: var(--space-sm);\n margin: 0 6px var(--space-sm);\n border-bottom: 1.5px dashed rgba(255, 255, 255, 0.18);\n}\n#reveal-view .duel-ticket .duel-year {\n font-size: clamp(40px, 13vw, 54px);\n}\n#reveal-view .duel-ticket--you .duel-year.mine {\n color: var(--color-accent-primary);\n text-shadow: 0 0 18px rgba(255, 45, 106, 0.45);\n}\n#reveal-view .duel-ticket--truth .duel-year.correct {\n color: var(--color-accent-secondary);\n text-shadow: 0 0 14px rgba(0, 245, 255, 0.9), 0 0 38px rgba(0, 245, 255, 0.45);\n}\n/* The gap becomes a delta pill overlapping the tickets' base. */\n#reveal-view .duel-gap {\n position: absolute;\n left: 50%;\n bottom: 0;\n transform: translateX(-50%);\n flex-direction: row;\n align-items: baseline;\n gap: 5px;\n min-width: 0;\n padding: 6px 16px;\n border-radius: var(--radius-full);\n background: rgba(255, 102, 0, 0.16);\n border: 1px solid rgba(255, 102, 0, 0.55);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5), 0 0 16px rgba(255, 102, 0, 0.2);\n white-space: nowrap;\n z-index: 3;\n}\n#reveal-view .duel-gap-x {\n font-size: var(--font-size-md);\n color: var(--color-warning-alt);\n opacity: 0.9;\n}\n#reveal-view .duel-gap-n {\n font-size: var(--font-size-lg);\n color: var(--color-warning-alt);\n text-shadow: none;\n}\n#reveal-view .duel-gap-unit {\n margin-top: 0;\n font-size: 10px;\n color: var(--color-warning-alt);\n}\n#reveal-view .duel-gap--exact {\n background: rgba(57, 255, 20, 0.16);\n border-color: rgba(57, 255, 20, 0.55);\n box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5), 0 0 16px rgba(57, 255, 20, 0.22);\n}\n#reveal-view .duel-gap--exact .duel-gap-x,\n#reveal-view .duel-gap--exact .duel-gap-n,\n#reveal-view .duel-gap--exact .duel-gap-unit {\n color: var(--color-success-neon);\n}\n#reveal-view .duel-gap--wrong {\n background: rgba(255, 0, 64, 0.14);\n border-color: rgba(255, 0, 64, 0.5);\n box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5), 0 0 16px rgba(255, 0, 64, 0.2);\n}\n#reveal-view .duel-gap--wrong .duel-gap-x,\n#reveal-view .duel-gap--wrong .duel-gap-n,\n#reveal-view .duel-gap--wrong .duel-gap-unit {\n color: var(--color-error-neon);\n}\n\n/* --- Score / points bar: green gain per DESIGN.md, glass surface --- */\n#reveal-view .score-row {\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);\n}\n#reveal-view .score-row-pts {\n color: var(--color-success-neon);\n text-shadow: 0 0 16px rgba(57, 255, 20, 0.5);\n font-size: 32px;\n}\n\n/* --- Title & Artist vote cards float as glass chips --- */\n#reveal-view .ta-vote-card,\n#reveal-view .ta-outcome-card {\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.1);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n}\n\n/* --- Footer: pink primary CTA, ghost-glass invite --- */\n#reveal-view .next-round-btn {\n background: linear-gradient(135deg, #ff2d6a 0%, #ff4f86 100%);\n border-radius: var(--radius-full);\n box-shadow: 0 8px 24px rgba(255, 45, 106, 0.45), 0 0 18px rgba(255, 45, 106, 0.3);\n}\n#reveal-view .next-round-btn:hover {\n background: linear-gradient(135deg, #ff4f86 0%, #ff2d6a 100%);\n}\n#reveal-view .next-round-btn.is-final {\n background: linear-gradient(135deg, #39ff14 0%, #00f5ff 100%);\n color: var(--color-bg-primary);\n}\n#reveal-view .invite-btn {\n background: rgba(255, 255, 255, 0.06);\n border: 1px solid rgba(255, 255, 255, 0.18);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n border-radius: var(--radius-full);\n}\n/* Equalise the two footer buttons \u2014 same box metrics + equal width, so\n \"Spieler einladen\" and \"N\u00E4chste Runde\" match (only their colour differs). */\n#reveal-view .reveal-admin-buttons { align-items: stretch; }\n#reveal-view .reveal-admin-buttons .invite-btn,\n#reveal-view .reveal-admin-buttons .next-round-btn {\n flex: 1 1 0;\n min-width: 0;\n max-width: 260px;\n min-height: 56px;\n padding: 12px 20px;\n font-size: var(--font-size-md);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-sm);\n text-align: center;\n}\n\n/* ==========================================================================\n Reveal standings \u2014 \"Round-Delta Ledger\" (design-shotgun A)\n --------------------------------------------------------------------------\n Replaces the plain leaderboard list inside the reveal's Standings card with\n rows that fuse the overall standing (rank + movement + big total) with this\n round's outcome (guessed year, streak/steal/bet chips, +round delta). Own\n `rstand-` prefix + `#reveal-view` scope so the shared `.leaderboard-entry`\n styling (used by the in-game leaderboard + dashboard) is untouched.\n Rendered by renderRevealStandings() in player-reveal.js.\n ========================================================================== */\n#reveal-view #reveal-leaderboard-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n /* The reveal standings show every player (taper-dim lower ranks), so undo\n the shared .leaderboard-list scroll box (max-height:200px; overflow:auto)\n the in-game lazy leaderboard uses \u2014 otherwise rows 4+ get clipped. */\n max-height: none;\n overflow: visible;\n}\n#reveal-view .rstand-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 12px;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.06);\n}\n#reveal-view .rstand-row--you {\n border: 1px solid var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.06);\n box-shadow: 0 0 16px rgba(255, 45, 106, 0.22);\n}\n/* Taper-dim lower ranks (matches the Arcade taper grammar). */\n#reveal-view .rstand-row--taper1 { opacity: 0.85; }\n#reveal-view .rstand-row--taper2 { opacity: 0.68; }\n\n#reveal-view .rstand-rankcell {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 26px;\n flex-shrink: 0;\n}\n#reveal-view .rstand-rank {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 20px;\n line-height: 1;\n color: var(--color-text-white);\n}\n#reveal-view .rstand-row--taper1 .rstand-rank,\n#reveal-view .rstand-row--taper2 .rstand-rank { font-size: 18px; }\n#reveal-view .rstand-move {\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n margin-top: 3px;\n}\n#reveal-view .rstand-move--up { color: var(--color-success-neon); }\n#reveal-view .rstand-move--down { color: var(--color-error-neon); }\n#reveal-view .rstand-move--flat { color: var(--color-text-neon-muted); }\n\n#reveal-view .rstand-avatar {\n width: 34px;\n height: 34px;\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 15px;\n color: var(--color-text-white);\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);\n border: 1px solid rgba(255, 255, 255, 0.15);\n}\n\n#reveal-view .rstand-ident { flex: 1; min-width: 0; }\n#reveal-view .rstand-name {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 15px;\n line-height: 1.1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--color-text-white);\n}\n#reveal-view .rstand-you {\n font-family: var(--font-display);\n font-weight: 800;\n font-size: 9px;\n letter-spacing: 0.06em;\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.15);\n border: 1px solid rgba(255, 45, 106, 0.4);\n border-radius: 6px;\n padding: 2px 5px;\n line-height: 1;\n flex-shrink: 0;\n}\n#reveal-view .rstand-guess {\n font-size: 11px;\n font-weight: 500;\n color: var(--color-text-neon-muted);\n line-height: 1.2;\n margin-top: 3px;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n#reveal-view .rstand-guess .rstand-exact { color: var(--color-success-neon); font-weight: 600; }\n#reveal-view .rstand-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 5px;\n margin-top: 5px;\n}\n#reveal-view .rstand-chip {\n font-size: 10px;\n font-weight: 600;\n color: var(--color-text-neon-muted);\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 999px;\n padding: 2px 7px;\n line-height: 1.4;\n white-space: nowrap;\n}\n#reveal-view .rstand-chip--fire { color: var(--color-warning-alt); border-color: rgba(255, 102, 0, 0.3); background: rgba(255, 102, 0, 0.08); }\n#reveal-view .rstand-chip--steal { color: var(--color-success-neon); border-color: rgba(57, 255, 20, 0.28); background: rgba(57, 255, 20, 0.07); }\n\n#reveal-view .rstand-score {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n flex-shrink: 0;\n margin-left: 4px;\n}\n#reveal-view .rstand-total {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: 22px;\n line-height: 1;\n color: var(--color-text-white);\n letter-spacing: -0.01em;\n}\n#reveal-view .rstand-row--taper1 .rstand-total { font-size: 20px; }\n#reveal-view .rstand-row--taper2 .rstand-total { font-size: 19px; }\n#reveal-view .rstand-delta {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 12px;\n line-height: 1;\n margin-top: 4px;\n color: var(--color-success-neon);\n}\n#reveal-view .rstand-delta--zero { color: var(--color-text-neon-muted); }\n\n/* ==========================================================================\n Reveal artist-result + fun-fact (design-shotgun B: inline artist chip +\n badges-first fun fact)\n --------------------------------------------------------------------------\n The artist-challenge result folds into the song-strip card as a slim inline\n row (no standalone card). The fun-fact card leads with the chart/cert/award\n badges as prominent tiles, then a trimmed (2-line) prose hook. Scoped under\n #reveal-view. renderArtistReveal still drives #artist-reveal-* element ids.\n ========================================================================== */\n/* Song strip becomes a column: main identity row + optional artist row. */\n#reveal-view .song-strip {\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: 0;\n overflow: hidden;\n}\n#reveal-view .song-strip-main {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n padding: var(--space-sm) var(--space-md) var(--space-sm) var(--space-sm);\n}\n/* Inline artist-challenge result row (relocated #artist-reveal-section). */\n#reveal-view .artist-guess-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 9px var(--space-md) 9px var(--space-sm);\n border-top: 1px solid rgba(255, 255, 255, 0.08);\n}\n#reveal-view .artist-guess-row.hidden { display: none; }\n#reveal-view .artist-guess-ic { font-size: 14px; flex-shrink: 0; }\n#reveal-view .artist-guess-name {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: 14px;\n color: var(--color-text-white);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n#reveal-view .artist-reveal-winner {\n margin-left: auto;\n flex-shrink: 0;\n font-family: var(--font-body);\n font-size: 11px;\n font-weight: 700;\n padding: 3px 10px;\n border-radius: var(--radius-full);\n white-space: nowrap;\n}\n#reveal-view .artist-reveal-winner.hidden { display: none; }\n#reveal-view .artist-reveal-winner.is-you,\n#reveal-view .artist-reveal-winner.is-other {\n color: var(--color-success-neon);\n background: rgba(57, 255, 20, 0.12);\n border: 1px solid rgba(57, 255, 20, 0.4);\n}\n#reveal-view .artist-reveal-winner.is-you {\n box-shadow: 0 0 12px rgba(57, 255, 20, 0.2);\n}\n#reveal-view .artist-reveal-winner.artist-reveal-no-winner {\n color: var(--color-text-neon-muted);\n background: rgba(255, 255, 255, 0.06);\n border: 1px solid rgba(255, 255, 255, 0.12);\n}\n\n/* Fun fact: badges as prominent tiles first, prose trimmed below. */\n#reveal-view #fun-fact-container .section-content-padded {\n display: flex;\n flex-direction: column;\n gap: 11px;\n}\n#reveal-view .song-rich-info .song-badges-row {\n display: flex;\n gap: 8px;\n}\n#reveal-view .song-rich-info .song-badge {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 11px 6px;\n border-radius: 12px;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.1);\n font-family: var(--font-body);\n font-size: 11px;\n font-weight: 700;\n line-height: 1.2;\n text-align: center;\n white-space: normal;\n}\n#reveal-view .song-rich-info .song-badge .song-badge-icon { font-size: 20px; }\n#reveal-view .song-rich-info .song-badges-more {\n flex: 0 0 auto;\n align-self: center;\n font-size: 11px;\n color: var(--color-text-neon-muted);\n}\n#reveal-view #fun-fact .fun-fact-text,\n#reveal-view .fun-fact-text {\n font-size: 12px;\n line-height: 1.4;\n color: var(--color-text-neon-muted);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* ==========================================================================\n Smart Playlist Mixer \u2014 \"Mix\" tab (#1538, design option 1 \"chip-cloud\")\n Reuses the Beatify dark look (bg #0a0a12, pink #ff2d6a, cyan #00f5ff,\n indigo #6366f1). Tokens: --color-accent-primary/secondary/brand,\n --color-surface-dark, --color-border-neon, --color-text-neon-muted.\n ========================================================================== */\n\n/* Playlist / Mix tab strip (sits above the playlist panels). */\n.playlist-tabs {\n display: flex;\n gap: var(--space-lg);\n border-bottom: 1px solid var(--color-border-neon);\n margin-bottom: var(--space-md);\n}\n\n.playlist-tab {\n appearance: none;\n background: none;\n border: none;\n padding: 10px 2px;\n margin-bottom: -1px;\n font: inherit;\n font-weight: 700;\n font-size: 0.95rem;\n color: var(--color-text-neon-muted);\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: color var(--transition-fast), border-color var(--transition-fast);\n}\n\n.playlist-tab:hover {\n color: var(--color-text-white);\n}\n\n.playlist-tab.active {\n color: var(--color-accent-secondary);\n border-bottom-color: var(--color-accent-secondary);\n}\n\n.playlist-panel.hidden {\n display: none;\n}\n\n/* Mix card */\n.mix-card {\n background: var(--color-surface-dark);\n border: 1px solid var(--color-border-neon);\n border-radius: var(--radius-lg);\n padding: var(--space-lg);\n}\n\n.mix-card-head {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n}\n\n.mix-card-icon {\n font-size: 1.25rem;\n}\n\n.mix-card-title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 800;\n color: var(--color-text-white);\n}\n\n.mix-card-sub {\n margin: 6px 0 var(--space-lg);\n color: var(--color-text-neon-muted);\n font-size: 0.9rem;\n}\n\n/* Chip-cloud rows (Decade / Style / Region / Special) */\n.mix-chip-cloud {\n display: flex;\n flex-direction: column;\n gap: var(--space-md);\n}\n\n.mix-chip-row {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mix-chip-rowlabel {\n font-size: 0.7rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n\n.mix-chip-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.mix-chip {\n appearance: none;\n padding: 6px 14px;\n border-radius: var(--radius-full);\n border: 1px solid var(--color-border-neon);\n background: rgba(255, 255, 255, 0.04);\n color: var(--color-text-neon-muted);\n font: inherit;\n font-size: 0.85rem;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.mix-chip:hover {\n border-color: rgba(255, 255, 255, 0.3);\n color: var(--color-text-white);\n}\n\n/* Active accents per category, matching the option-1 mockup. */\n.mix-chip-group[data-accent=\"cyan\"] .mix-chip.active {\n background: rgba(0, 245, 255, 0.15);\n border-color: var(--color-accent-secondary);\n color: var(--color-accent-secondary);\n}\n\n.mix-chip-group[data-accent=\"pink\"] .mix-chip.active {\n background: rgba(255, 45, 106, 0.15);\n border-color: var(--color-accent-primary);\n color: var(--color-accent-primary);\n}\n\n.mix-chip-group[data-accent=\"indigo\"] .mix-chip.active {\n background: rgba(99, 102, 241, 0.18);\n border-color: var(--color-accent-brand);\n color: #a5b4fc;\n}\n\n.mix-empty {\n color: var(--color-text-neon-muted);\n font-size: 0.9rem;\n margin: 0;\n}\n\n.mix-divider {\n height: 1px;\n background: var(--color-border-neon);\n margin: var(--space-lg) 0;\n}\n\n/* Target-count segmented control (30 / 50 / 100) */\n.mix-count-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-md);\n flex-wrap: wrap;\n}\n\n.mix-count-label {\n font-size: 0.7rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n}\n\n.mix-segmented {\n display: inline-flex;\n padding: 4px;\n gap: 4px;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--color-border-neon);\n border-radius: 10px;\n}\n\n.mix-seg {\n appearance: none;\n min-width: 56px;\n padding: 8px 14px;\n border: none;\n border-radius: 7px;\n background: transparent;\n color: var(--color-text-neon-muted);\n font: inherit;\n font-weight: 700;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.mix-seg:hover {\n color: var(--color-text-white);\n}\n\n.mix-seg.active {\n background: var(--color-accent-brand);\n color: var(--color-text-white);\n box-shadow: 0 0 14px rgba(99, 102, 241, 0.5);\n}\n\n/* Live preview line */\n.mix-preview {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: var(--space-md) 0 var(--space-lg);\n padding: 12px 16px;\n border-radius: var(--radius-md);\n background: rgba(0, 245, 255, 0.06);\n border: 1px solid rgba(0, 245, 255, 0.15);\n color: var(--color-text-white);\n font-size: 0.9rem;\n}\n\n.mix-preview-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #1ed760;\n box-shadow: 0 0 8px rgba(30, 215, 96, 0.8);\n flex-shrink: 0;\n}\n\n/* Actions row */\n.mix-actions {\n display: flex;\n align-items: center;\n gap: var(--space-lg);\n flex-wrap: wrap;\n}\n\n.mix-actions .btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n}\n\n.mix-save-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.9rem;\n color: var(--color-text-neon-muted);\n cursor: pointer;\n}\n\n#mix-error {\n margin-top: var(--space-md);\n}\n/* #2294: the server's own reason under the translated headline. Inline-block\n with display:block because #mix-error is a

and cannot hold a

. */\n.mix-error-detail {\n display: block;\n margin-top: var(--space-xs);\n font-size: var(--font-size-sm);\n line-height: 1.35;\n color: var(--color-text-light);\n word-break: break-word;\n}\n\n/* Tracklist preview (#1586) */\n.mix-tracklist-row {\n margin: var(--space-sm) 0;\n}\n\n.mix-tracklist-row .btn-sm {\n font-size: 0.85rem;\n padding: 6px 12px;\n}\n\n.mix-tracklist {\n margin: var(--space-sm) 0 var(--space-md);\n max-height: 280px;\n overflow-y: auto;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 245, 255, 0.15);\n background: rgba(0, 245, 255, 0.04);\n}\n\n.mix-tracklist.hidden {\n display: none;\n}\n\n.mix-tracklist-head {\n margin: 0;\n padding: 10px 14px;\n font-size: 0.8rem;\n font-weight: 600;\n letter-spacing: 0.02em;\n text-transform: uppercase;\n color: var(--color-text-neon-muted);\n border-bottom: 1px solid rgba(0, 245, 255, 0.12);\n position: sticky;\n top: 0;\n background: rgba(10, 12, 24, 0.92);\n}\n\n.mix-tracklist-empty {\n margin: 0;\n padding: 14px;\n font-size: 0.9rem;\n color: var(--color-text-neon-muted);\n}\n\n.mix-track-list {\n list-style: none;\n margin: 0;\n padding: 4px 0;\n counter-reset: mix-track;\n}\n\n.mix-track {\n display: flex;\n align-items: baseline;\n gap: 8px;\n padding: 6px 14px;\n font-size: 0.88rem;\n color: var(--color-text-white);\n}\n\n.mix-track::before {\n counter-increment: mix-track;\n content: counter(mix-track);\n flex-shrink: 0;\n min-width: 1.8em;\n text-align: right;\n font-variant-numeric: tabular-nums;\n color: var(--color-text-neon-muted);\n opacity: 0.7;\n}\n\n.mix-track-title {\n font-weight: 500;\n}\n\n.mix-track-artist {\n color: var(--color-text-neon-muted);\n}\n\n.mix-track-artist::before {\n content: \"\u2014 \";\n}\n\n.mix-track-year {\n margin-left: auto;\n flex-shrink: 0;\n color: var(--color-text-neon-muted);\n font-variant-numeric: tabular-nums;\n opacity: 0.7;\n}\n\n/* ==========================================================================\n #1663 item 1 \u2014 Non-blocking notices (Toast + Inline Banner)\n Replaces the old blocking alert(). Neon top-toast for transient notices,\n inline panel-banner for setup/validation errors. Dark-neon tokens only.\n ========================================================================== */\n\n/* --- Neon Top-Toast (Variant A): top-center, auto-dismiss, glowing bar --- */\n.beatify-toast-container {\n position: fixed;\n top: var(--space-md);\n left: 50%;\n transform: translateX(-50%);\n z-index: var(--z-toast);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n width: min(92vw, 440px);\n pointer-events: none; /* let taps fall through the gaps; toasts re-enable */\n}\n\n.beatify-toast {\n pointer-events: auto;\n width: 100%;\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n position: relative;\n overflow: hidden;\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-lg);\n background: rgba(20, 20, 34, 0.96);\n border: 1px solid var(--color-error-neon);\n box-shadow: 0 0 20px rgba(255, 0, 64, 0.45), 0 8px 32px rgba(0, 0, 0, 0.45);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n /* Enter/leave transition (gated under reduced-motion below). */\n opacity: 0;\n transform: translateY(-12px);\n transition: opacity var(--transition-normal), transform var(--transition-normal);\n}\n.beatify-toast--in { opacity: 1; transform: translateY(0); }\n.beatify-toast--leaving { opacity: 0; transform: translateY(-12px); }\n\n.beatify-toast--info {\n border-color: var(--color-accent-secondary);\n box-shadow: 0 0 20px rgba(0, 245, 255, 0.4), 0 8px 32px rgba(0, 0, 0, 0.45);\n}\n.beatify-toast--success {\n border-color: var(--color-success-neon);\n box-shadow: 0 0 20px rgba(57, 255, 20, 0.4), 0 8px 32px rgba(0, 0, 0, 0.45);\n}\n\n.beatify-toast-body {\n display: flex;\n align-items: flex-start;\n gap: var(--space-sm);\n flex: 1 1 auto;\n min-width: 0;\n}\n.beatify-toast-icon { font-size: var(--font-size-lg); line-height: 1.3; flex-shrink: 0; }\n.beatify-toast-text { line-height: 1.35; word-break: break-word; }\n\n.beatify-toast-close {\n flex-shrink: 0;\n background: none;\n border: none;\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-xl);\n line-height: 1;\n cursor: pointer;\n padding: 0 var(--space-xs);\n transition: color var(--transition-fast);\n}\n.beatify-toast-close:hover { color: var(--color-text-white); }\n\n/* Glowing progress bar that drains over the auto-dismiss window. */\n.beatify-toast-progress {\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n width: 100%;\n transform-origin: left center;\n background: var(--color-error-neon);\n box-shadow: 0 0 8px var(--color-error-neon);\n animation: beatify-toast-drain linear forwards;\n}\n.beatify-toast--info .beatify-toast-progress {\n background: var(--color-accent-secondary);\n box-shadow: 0 0 8px var(--color-accent-secondary);\n}\n.beatify-toast--success .beatify-toast-progress {\n background: var(--color-success-neon);\n box-shadow: 0 0 8px var(--color-success-neon);\n}\n@keyframes beatify-toast-drain {\n from { transform: scaleX(1); }\n to { transform: scaleX(0); }\n}\n\n/* --- Inline Panel-Banner (Variant C): docked above the primary action --- */\n.beatify-banner {\n display: flex;\n /* #2365: a guard, not a layout. The banner is a block that fills the width\n of whatever it sits above; it is never meant to share a line. Should a\n future call site anchor it inside a flex row again, this makes it claim\n its own line there instead of being shrunk to one character per line.\n Outside a flex parent `flex-basis` has no effect, so this costs nothing\n in the normal case. Paired with `flex-wrap` on `.home-cta-bar` \u2014 a basis\n of 100% only wins a line of its own if the row is allowed to wrap. */\n flex-basis: 100%;\n align-items: flex-start;\n gap: var(--space-sm);\n margin-bottom: var(--space-md);\n padding: var(--space-sm) var(--space-md);\n border-radius: var(--radius-lg);\n background: rgba(255, 0, 64, 0.08);\n border: 1px solid var(--color-error-neon);\n box-shadow: inset 0 0 16px rgba(255, 0, 64, 0.12);\n color: var(--color-text-white);\n font-family: var(--font-body);\n font-size: var(--font-size-base);\n text-align: left;\n}\n.beatify-banner--warning {\n background: rgba(245, 158, 11, 0.1);\n border-color: var(--color-warning);\n box-shadow: inset 0 0 16px rgba(245, 158, 11, 0.12);\n}\n.beatify-banner--info {\n background: rgba(0, 245, 255, 0.08);\n border-color: var(--color-accent-secondary);\n box-shadow: inset 0 0 16px rgba(0, 245, 255, 0.12);\n}\n.beatify-banner-icon { font-size: var(--font-size-lg); line-height: 1.2; flex-shrink: 0; }\n.beatify-banner-content { flex: 1 1 auto; min-width: 0; }\n.beatify-banner-title {\n font-family: var(--font-display);\n font-weight: var(--font-weight-bold);\n margin-bottom: 2px;\n color: var(--color-error-neon);\n}\n.beatify-banner--warning .beatify-banner-title { color: var(--color-warning); }\n.beatify-banner--info .beatify-banner-title { color: var(--color-accent-secondary); }\n.beatify-banner-text { line-height: 1.4; color: var(--color-text-neon-muted); word-break: break-word; }\n/* #2294: the server's own reason, under the translated headline. Dimmer and\n smaller so it reads as a detail rather than a competing message. */\n.beatify-banner-detail {\n margin-top: var(--space-xs);\n font-size: var(--font-size-sm);\n line-height: 1.35;\n color: var(--color-text-light);\n word-break: break-word;\n}\n.beatify-banner-action {\n margin-top: var(--space-xs);\n background: none;\n border: 1px solid currentColor;\n border-radius: var(--radius-sm);\n color: var(--color-error-neon);\n font-family: var(--font-body);\n font-size: var(--font-size-sm);\n line-height: 1.2;\n padding: 6px var(--space-sm);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.beatify-banner-action:hover { background: var(--color-error-neon); color: var(--color-bg-primary); }\n.beatify-banner--warning .beatify-banner-action { color: var(--color-warning); }\n.beatify-banner--warning .beatify-banner-action:hover { background: var(--color-warning); }\n.beatify-banner--info .beatify-banner-action { color: var(--color-accent-secondary); }\n.beatify-banner--info .beatify-banner-action:hover { background: var(--color-accent-secondary); }\n.beatify-banner-close {\n flex-shrink: 0;\n background: none;\n border: none;\n color: var(--color-text-neon-muted);\n font-size: var(--font-size-xl);\n line-height: 1;\n cursor: pointer;\n padding: 0 var(--space-xs);\n transition: color var(--transition-fast);\n}\n.beatify-banner-close:hover { color: var(--color-text-white); }\n\n@media (prefers-reduced-motion: reduce) {\n .beatify-toast { transition: none; opacity: 1; transform: none; }\n .beatify-toast-progress { animation: none; }\n}\n\n/* ==========================================================================\n #1663 item 2 \u2014 Steal modal Mini-Leaderboard-Row (Variant B)\n Each steal target becomes a rank + name + score row; the overall leader\n (rank 1) gets a crown + glow. Extends the existing .steal-target-btn.\n ========================================================================== */\n.steal-target-row {\n display: flex;\n align-items: center;\n gap: var(--space-sm);\n text-align: left;\n}\n.steal-target-rank {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-full);\n background: var(--color-dark-surface);\n border: 1px solid var(--color-border-neon);\n font-family: var(--font-display);\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n}\n.steal-target-name {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-weight-semibold);\n}\n.steal-target-score {\n flex-shrink: 0;\n font-family: var(--font-display);\n font-weight: var(--font-weight-bold);\n font-variant-numeric: tabular-nums;\n color: var(--color-accent-secondary);\n text-shadow: 0 0 8px rgba(0, 245, 255, 0.5);\n}\n.steal-target-crown { flex-shrink: 0; font-size: var(--font-size-md); line-height: 1; }\n.steal-target-row--leader {\n border-color: var(--color-warning);\n box-shadow: 0 0 14px rgba(245, 158, 11, 0.35), inset 0 0 10px rgba(245, 158, 11, 0.12);\n}\n.steal-target-row--leader .steal-target-rank {\n border-color: var(--color-warning);\n color: var(--color-warning);\n box-shadow: 0 0 8px rgba(245, 158, 11, 0.4);\n}\n.steal-target-row--leader .steal-target-score {\n color: var(--color-warning);\n text-shadow: 0 0 8px rgba(245, 158, 11, 0.5);\n}\n\n/* ==========================================================================\n #1663 item 3 \u2014 A11y: Icon+Text accuracy chips on the reveal dot-axis legend\n Glyph + word per state (\u25CE exact / \u2248 near / \u2715 off); colour is reinforcement.\n ========================================================================== */\n.dotaxis-legend-acc {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n margin-left: 4px;\n padding: 1px 6px;\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n border: 1px solid currentColor;\n white-space: nowrap;\n}\n.dotaxis-legend-acc-glyph { font-size: 0.95em; line-height: 1; }\n.dotaxis-legend-acc--exact { color: var(--color-accent-secondary); }\n.dotaxis-legend-acc--near { color: var(--color-warning); }\n.dotaxis-legend-acc--off { color: var(--color-text-neon-muted); }\n\n/* Lobby away chip: glyph + word (A11y \u2014 not colour/border alone). */\n.player-tile-away { display: inline-flex; align-items: center; gap: 3px; }\n.player-tile-away-glyph { font-size: 0.9em; line-height: 1; }\n\n/* ==========================================================================\n #1663 item 4 \u2014 Depleting Ring-Countdown (Variant C)\n SVG ring inside the arcade neon timer that drains cyan\u2192red as time runs out,\n mirroring the reveal auto-advance ring. Additive to the existing frame; the\n number's warning/critical classes (arc-urgency) are untouched.\n ========================================================================== */\n.timer-neon { position: relative; }\n.timer-neon-ring {\n position: absolute;\n inset: 3px; /* sit just inside the neon frame */\n width: calc(100% - 6px);\n height: calc(100% - 6px);\n transform: rotate(-90deg); /* start the drain from 12 o'clock */\n pointer-events: none;\n}\n.timer-neon-ring-bg {\n fill: none;\n stroke: rgba(255, 255, 255, 0.12);\n stroke-width: 4;\n}\n.timer-neon-ring-fg {\n fill: none;\n stroke: var(--color-accent-secondary);\n stroke-width: 4;\n stroke-linecap: round;\n filter: drop-shadow(0 0 6px rgba(0, 245, 255, 0.6));\n transition: stroke-dashoffset 1s linear, stroke var(--transition-normal);\n}\n.timer-neon--warn .timer-neon-ring-fg,\n.timer-neon-ring--warn .timer-neon-ring-fg {\n stroke: var(--color-warning);\n filter: drop-shadow(0 0 6px rgba(245, 158, 11, 0.7));\n}\n.timer-neon-ring--critical .timer-neon-ring-fg {\n stroke: var(--color-error-neon);\n filter: drop-shadow(0 0 7px rgba(255, 0, 64, 0.8));\n}\n@media (prefers-reduced-motion: reduce) {\n /* Opt-out: keep the numeric+colour cue, drop the animated drain. */\n .timer-neon-ring-fg { transition: none; }\n/* =====================================================================\n Sudden Death mode (Issue #827)\n ===================================================================== */\n\n/* --- Admin reveal: elimination + final arc chips --- */\n.arc-chip--elim {\n color: var(--color-error-neon);\n background: rgba(255, 0, 64, 0.12);\n border: 1px solid rgba(255, 0, 64, 0.5);\n text-transform: uppercase;\n}\n\n/* --- Admin control-bar live toggle (S7-A) --- */\n.sd-live-toggle {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 5px 10px;\n border-radius: var(--radius-md);\n background: var(--color-bg-surface);\n border: 1px solid rgba(255, 255, 255, 0.12);\n font-family: var(--font-body);\n font-size: 12px;\n font-weight: 600;\n color: var(--color-text-white);\n cursor: pointer;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.sd-live-toggle:disabled { opacity: 0.4; cursor: not-allowed; }\n.sd-live-toggle.is-on {\n border-color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.08);\n box-shadow: var(--glow-primary);\n}\n.sd-live-toggle__switch {\n position: relative;\n width: 30px; height: 17px;\n border-radius: var(--radius-full);\n background: rgba(255, 255, 255, 0.15);\n flex: none;\n}\n.sd-live-toggle.is-on .sd-live-toggle__switch {\n background: var(--color-accent-primary);\n}\n.sd-live-toggle__switch::after {\n content: \"\"; position: absolute;\n width: 13px; height: 13px; border-radius: 50%;\n background: #fff; top: 2px; left: 2px;\n transition: left var(--transition-fast);\n}\n.sd-live-toggle.is-on .sd-live-toggle__switch::after { left: 15px; }\n\n/* --- Player eliminated view (S2-A Stark Blackout) --- */\n.eliminated-view {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--space-sm);\n min-height: 60vh;\n padding: var(--space-xl) var(--space-md);\n}\n.eliminated-orb {\n width: 120px; height: 120px;\n border-radius: var(--radius-full);\n overflow: hidden;\n filter: grayscale(1) brightness(0.5);\n display: flex; align-items: center; justify-content: center;\n background: linear-gradient(135deg, #2a2540, #16131f);\n margin-bottom: var(--space-md);\n position: relative;\n}\n.eliminated-orb img { width: 100%; height: 100%; object-fit: cover; }\n.eliminated-skull { font-size: 46px; position: absolute; }\n.eliminated-title {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n color: var(--color-text-white);\n letter-spacing: -0.02em;\n}\n.eliminated-sub { color: var(--color-text-neon-muted); font-size: var(--font-size-base); }\n.eliminated-hint { color: var(--color-text-dim); font-size: var(--font-size-sm); margin-top: var(--space-md); }\n\n/* --- Player leaderboard cut line (S3-A) --- */\n.cut-line {\n position: relative;\n height: 0;\n border-top: 2px solid var(--color-accent-primary);\n box-shadow: 0 0 12px rgba(255, 45, 106, 0.7);\n margin: var(--space-md) 0;\n}\n.cut-line__label {\n position: absolute;\n top: -9px; left: 50%;\n transform: translateX(-50%);\n background: var(--color-bg-primary);\n padding: 0 10px;\n font-family: var(--font-body);\n font-size: 9px;\n font-weight: 700;\n letter-spacing: 0.15em;\n color: var(--color-accent-primary);\n}\n.player-indicator.is-eliminated,\n.leaderboard-entry.is-eliminated { opacity: 0.45; }\n.player-out-badge {\n font-size: 10px;\n font-weight: 700;\n color: var(--color-text-dim);\n letter-spacing: 0.04em;\n}\n\n/* --- Spectator TV: full-bleed \"OUT\" takeover (S4-C) --- */\n.sd-out-overlay {\n position: fixed;\n inset: 0;\n z-index: 900;\n display: none;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: rgba(6, 6, 12, 0.96);\n}\n.sd-out-overlay.show { display: flex; animation: sd-out-in var(--transition-slow) ease-out; }\n.sd-out__word {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: clamp(120px, 26vw, 360px);\n line-height: 0.85;\n color: var(--color-error-neon);\n text-shadow: 0 0 40px rgba(255, 0, 64, 0.7);\n}\n.sd-out__name {\n display: flex; align-items: center; gap: 14px;\n margin-top: var(--space-md);\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-4xl);\n color: var(--color-text-white);\n}\n.sd-out__skull { font-size: 40px; }\n@keyframes sd-out-in {\n from { opacity: 0; transform: scale(0.85); }\n to { opacity: 1; transform: scale(1); }\n}\n\n/* --- Spectator TV: FINAL banner (S5-C arena) --- */\n.sd-final-banner {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 18px;\n border-radius: var(--radius-full);\n font-family: var(--font-display);\n font-weight: 900;\n letter-spacing: 0.06em;\n color: var(--color-accent-primary);\n background: rgba(255, 45, 106, 0.12);\n border: 1px solid rgba(255, 45, 106, 0.5);\n box-shadow: 0 0 16px rgba(255, 45, 106, 0.3);\n}\n\n/* --- END: Last One Standing superlative + trophy hero (S6-C) --- */\n.superlative-card--last_one_standing {\n box-shadow: 0 0 18px rgba(255, 45, 106, 0.3);\n border-color: rgba(255, 45, 106, 0.4);\n}\n.sd-last-standing {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-sm);\n text-align: center;\n margin-bottom: var(--space-lg);\n}\n.sd-last-standing__trophy { font-size: 40px; }\n.sd-last-standing__headline {\n font-family: var(--font-display);\n font-weight: 900;\n font-size: var(--font-size-hero);\n letter-spacing: -0.02em;\n background: linear-gradient(90deg, var(--color-accent-primary), var(--color-accent-secondary));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n text-shadow: 0 0 40px rgba(255, 45, 106, 0.5);\n}\n.sd-last-standing__winner {\n font-family: var(--font-body);\n font-weight: 700;\n font-size: var(--font-size-xl);\n color: var(--color-text-white);\n}\n/* #2105: the line that explains a points win \u2014 deliberately quiet, it is\n context for the name above it, not a second headline. */\n.sd-last-standing__sub {\n font-family: var(--font-body);\n font-weight: 500;\n font-size: var(--font-size-sm);\n color: var(--color-text-neon-muted);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .sd-out-overlay.show { animation: none; }\n}\n"], + "mappings": "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", "names": [] } diff --git a/custom_components/beatify/www/js/__tests__/banner-anchor-2365.test.js b/custom_components/beatify/www/js/__tests__/banner-anchor-2365.test.js new file mode 100644 index 00000000..699fe1f9 --- /dev/null +++ b/custom_components/beatify/www/js/__tests__/banner-anchor-2365.test.js @@ -0,0 +1,58 @@ +/** + * #2365 — the start-failure banner must dock above the footer, not inside it. + * + * Reported from a phone on v4.3.1-rc1: pressing Start with no players joined + * rendered "Start nicht möglich" as a narrow column between the two footer + * buttons, wrapping mid-word — `beitrete` / `n`, `scanne` / `n`. + * + * The banner was fine. The anchor was wrong. `showBanner` inserts its node + * *before the anchor, inside the anchor's parent*, so anchoring on the Start + * button placed the banner **into** `.home-cta-bar` — a flex row in which + * `.home-cta-start` takes the free space via `flex: 1`, leaving the banner at + * its min-content width. + * + * The bar for these tests: would they have failed on the evening of the + * report? The first one would. + */ +import { describe, it, expect } from 'vitest'; +import { bannerAnchorFor } from '../admin/util.js'; + +/** Minimal stand-in for the Start button; `closest` is the only call made. */ +function startButton(barOrNull) { + return { + id: 'home-start-game', + closest(selector) { + return selector === '.home-cta-bar' ? barOrNull : null; + }, + }; +} + +describe('#2365 bannerAnchorFor', () => { + it('returns the footer row, not the button inside it', () => { + const bar = { className: 'home-cta-bar' }; + const btn = startButton(bar); + // The regression: this used to be the button, which put the banner in + // the flex row and squeezed it to one character per line. + expect(bannerAnchorFor(btn)).toBe(bar); + expect(bannerAnchorFor(btn)).not.toBe(btn); + }); + + it('falls back to the button when the markup has no footer row', () => { + // A banner in the wrong box still beats no banner at all. + const btn = startButton(null); + expect(bannerAnchorFor(btn)).toBe(btn); + }); + + it('falls back to the button when the element has no closest()', () => { + // Older test doubles and very old engines; must not throw. + const btn = { id: 'home-start-game' }; + expect(bannerAnchorFor(btn)).toBe(btn); + }); + + it('returns null when there is no button', () => { + // showSetupError reads this to decide on the toast fallback, so the + // null must survive rather than become a truthy stand-in. + expect(bannerAnchorFor(null)).toBe(null); + expect(bannerAnchorFor(undefined)).toBe(null); + }); +}); diff --git a/custom_components/beatify/www/js/admin.js b/custom_components/beatify/www/js/admin.js index 4dc33d2a..637c7095 100644 --- a/custom_components/beatify/www/js/admin.js +++ b/custom_components/beatify/www/js/admin.js @@ -54,6 +54,7 @@ import { adminHasVisibleView, createRenderCoalescer, adminStateEqual, + bannerAnchorFor, } from './admin/util.js'; // #1279 Schritt 3/6: REST/WS hub layer. The admin WS connection lifecycle + @@ -1780,7 +1781,8 @@ function showError(message) { * rendered as a button in the banner (#2269). */ function showSetupError(message, action, detail) { - var anchor = document.getElementById('home-start-game'); + // #2365: dock above the footer row, not inside it — see bannerAnchorFor. + var anchor = bannerAnchorFor(document.getElementById('home-start-game')); if (!anchor) { // No start button in view (e.g. mid-game) — fall back to a toast. The // toast has no second slot, so the detail is appended inline (#2294). diff --git a/custom_components/beatify/www/js/admin.min.js b/custom_components/beatify/www/js/admin.min.js index 602292f3..cfa89d2f 100644 --- a/custom_components/beatify/www/js/admin.min.js +++ b/custom_components/beatify/www/js/admin.min.js @@ -1,6 +1,6 @@ -var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags:["all"],selectedMediaPlayer:null,mediaPlayerDocsUrl:"",mediaPlayers:[],mediaPlayerTwinRemap:{},activeFilters:{decade:"",style:"",region:"",special:""},currentView:"setup",currentGame:null,cachedQRUrl:null,setupComplete:!1,selectedLanguage:"en",selectedDuration:45,revealAutoAdvance:0,selectedDifficulty:"normal",selectedProvider:"spotify",hasMusicAssistant:!1,artistChallengeEnabled:!0,movieQuizEnabled:!0,introModeEnabled:!1,closestWinsModeEnabled:!1,titleArtistModeEnabled:!1,rampupOrderEnabled:!1,finaleDoubleEnabled:!1,finaleTiebreakerEnabled:!1,comebackTokenEnabled:!1,difficultyBetScalingEnabled:!1,sabotageEnabled:!1,previousLobbyPlayers:[],adminPlayerName:null,adminSessionId:null,isPlaying:!1};function F(e,t){let a=window.BeatifyI18n;if(a&&typeof a.t=="function"){let n=a.t(e);if(n&&n!==e)return n}return t}function ot(e,t){return(window.BeatifyAuth&&window.BeatifyAuth.fetch||fetch)(e,t)}function Xa(e,t,a){let n=(e.tracks||[]).map(s=>`${s.artist} \u2014 ${s.title} (${s.year}, ${s.fame})`),i=e.truncated?` +var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags:["all"],selectedMediaPlayer:null,mediaPlayerDocsUrl:"",mediaPlayers:[],mediaPlayerTwinRemap:{},activeFilters:{decade:"",style:"",region:"",special:""},currentView:"setup",currentGame:null,cachedQRUrl:null,setupComplete:!1,selectedLanguage:"en",selectedDuration:45,revealAutoAdvance:0,selectedDifficulty:"normal",selectedProvider:"spotify",hasMusicAssistant:!1,artistChallengeEnabled:!0,movieQuizEnabled:!0,introModeEnabled:!1,closestWinsModeEnabled:!1,titleArtistModeEnabled:!1,rampupOrderEnabled:!1,finaleDoubleEnabled:!1,finaleTiebreakerEnabled:!1,comebackTokenEnabled:!1,difficultyBetScalingEnabled:!1,sabotageEnabled:!1,previousLobbyPlayers:[],adminPlayerName:null,adminSessionId:null,isPlaying:!1};function j(e,t){let a=window.BeatifyI18n;if(a&&typeof a.t=="function"){let n=a.t(e);if(n&&n!==e)return n}return t}function ot(e,t){return(window.BeatifyAuth&&window.BeatifyAuth.fetch||fetch)(e,t)}function Za(e,t,a){let n=(e.tracks||[]).map(s=>`${s.artist} \u2014 ${s.title} (${s.year}, ${s.fame})`),i=e.truncated?` (Note: this is the most popular subset of a larger library.)`:"";return["You are curating a party playlist for a music year-guessing game.",`Pick up to ${a} songs strictly FROM THE LIBRARY LIST below that best fit this theme:`,`THEME: ${t}`,"","Rules:","- Only pick songs that appear in the list. Do not invent songs.",'- Prefer a spread of decades and mostly well-known ("mainstream"/"known") songs unless the theme says otherwise.',"- Answer with ONLY a JSON object, no prose, in exactly this shape:",' {"songs": [{"artist": "...", "title": "..."}]}',"- Copy artist and title EXACTLY as written in the list.","",`LIBRARY LIST (${n.length} songs):${i}`,...n].join(` -`)}function Za(e){if(typeof e!="string")return[];let t=e.trim(),a=t.match(/```(?:json)?\s*([\s\S]*?)```/i);if(a&&(t=a[1].trim()),!t.startsWith("{")&&!t.startsWith("[")){let n=t.indexOf("{"),i=t.lastIndexOf("}"),s=t.indexOf("["),o=t.lastIndexOf("]");s>=0&&o>s&&(n<0||s=0&&i>n&&(t=t.slice(n,i+1))}try{let n=JSON.parse(t),i=Array.isArray(n)?n:n.songs;return Array.isArray(i)?i.filter(s=>s&&typeof s=="object").map(s=>({artist:String(s.artist||""),title:String(s.title||"")})).filter(s=>s.artist&&s.title):[]}catch{return[]}}var be=null,Te=null;function en(){if(be)return be;let e=document.createElement("div");if(e.id="library-ai-modal",e.className="library-ai-modal hidden",e.innerHTML=` +`)}function en(e){if(typeof e!="string")return[];let t=e.trim(),a=t.match(/```(?:json)?\s*([\s\S]*?)```/i);if(a&&(t=a[1].trim()),!t.startsWith("{")&&!t.startsWith("[")){let n=t.indexOf("{"),i=t.lastIndexOf("}"),s=t.indexOf("["),o=t.lastIndexOf("]");s>=0&&o>s&&(n<0||s=0&&i>n&&(t=t.slice(n,i+1))}try{let n=JSON.parse(t),i=Array.isArray(n)?n:n.songs;return Array.isArray(i)?i.filter(s=>s&&typeof s=="object").map(s=>({artist:String(s.artist||""),title:String(s.title||"")})).filter(s=>s.artist&&s.title):[]}catch{return[]}}var be=null,Te=null;function tn(){if(be)return be;let e=document.createElement("div");if(e.id="library-ai-modal",e.className="library-ai-modal hidden",e.innerHTML=`
`,document.body.appendChild(e),window.BeatifyI18n&&typeof window.BeatifyI18n.apply=="function")try{window.BeatifyI18n.apply(e)}catch{}let t=a=>e.querySelector(`[data-ai="${a}"]`);return e.addEventListener("click",a=>{a.target.closest('[data-ai="close"]')&&jt()}),document.addEventListener("keydown",a=>{a.key==="Escape"&&!e.classList.contains("hidden")&&jt()}),t("copy").addEventListener("click",async()=>{let a=t("copy-status"),n=(t("theme").value||"").trim()||"a fun, varied party mix",i=parseInt(t("count").value,10)||30;try{let s=await ot("/beatify/api/library-pool/export?limit=2000"),o=await s.json().catch(()=>({}));if(!s.ok){a.textContent=o.message||F("admin.libraryAi.needScan","Scan your library first."),a.classList.remove("hidden");return}let l=Xa(o,n,i);await navigator.clipboard.writeText(l),a.textContent=F("admin.libraryAi.copied","Prompt copied \u2014 paste it into your AI, then paste the answer below."),a.classList.remove("hidden")}catch{a.textContent=F("admin.libraryAi.copyFailed","Could not copy \u2014 is the page allowed to use the clipboard?"),a.classList.remove("hidden")}}),t("resolve").addEventListener("click",async()=>{let a=t("result"),n=t("save");Te=null,n.disabled=!0;let i=Za(t("paste").value);if(!i.length){a.innerHTML=`

${F("admin.libraryAi.parseFail","Couldn't read any songs from that answer \u2014 expected JSON like")} {"songs":[{"artist":"\u2026","title":"\u2026"}]}

`,a.classList.remove("hidden");return}let s=(t("name").value||"").trim()||F("admin.libraryAi.defaultName","AI Mix");try{let o=await ot("/beatify/api/library-playlists/resolve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s,picks:i})}),l=await o.json().catch(()=>({}));if(!o.ok){a.innerHTML=`

${l.message||"Resolve failed"}

`,a.classList.remove("hidden");return}let d=l.unmatched||[],c=l.matched||0,u=`

${F("admin.libraryAi.matched","Matched in your library: ")}${c}

`;if(d.length){u+=`

${F("admin.libraryAi.unmatched","Not found (skipped): ")}${d.length}

    `;for(let m of d.slice(0,12))u+=`
  • ${Ot(m.artist)} \u2014 ${Ot(m.title)}
  • `;d.length>12&&(u+="
  • \u2026
  • "),u+="
"}a.innerHTML=u,a.classList.remove("hidden"),c>0&&l.playlist&&(Te=l.playlist,n.disabled=!1)}catch{a.innerHTML=`

${F("admin.libraryAi.resolveFailed","Could not check the songs \u2014 is Home Assistant reachable?")}

`,a.classList.remove("hidden")}}),t("save").addEventListener("click",async()=>{if(!Te)return;let a=t("result"),n=t("save");n.disabled=!0;try{let i=await ot("/beatify/api/playlists/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({playlist:Te})}),s=await i.json().catch(()=>({}));if(i.ok){if(a.innerHTML=`

${F("admin.libraryAi.saved","Saved! Find it under Playlists \u2192 Mine.")}

`,typeof window.loadPlaylists=="function")try{window.loadPlaylists()}catch{}}else a.innerHTML=`

${s.message||"Save failed"}

`,n.disabled=!1}catch{a.innerHTML='

Save failed

',n.disabled=!1}}),be=e,e}function Ot(e){return String(e||"").replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function jt(){be&&be.classList.add("hidden")}function Ft(){let e=en();e.classList.remove("hidden"),e.querySelector('[data-ai="name"]')?.focus()}var tn=2e3;function R(e,t){return(window.BeatifyAuth&&window.BeatifyAuth.fetch||fetch)(e,t)}function g(e,t){let a=window.BeatifyI18n;if(a&&typeof a.t=="function"){let n=a.t(e);if(n&&n!==e)return n}return t}function Me(){return{popularity_percent:r.libraryPopPercent,size:r.librarySize,year_gate:r.libraryYearGate,genres:r.libraryGenres||[]}}var se=[];function an(e){return` +
`,document.body.appendChild(e),window.BeatifyI18n&&typeof window.BeatifyI18n.apply=="function")try{window.BeatifyI18n.apply(e)}catch{}let t=a=>e.querySelector(`[data-ai="${a}"]`);return e.addEventListener("click",a=>{a.target.closest('[data-ai="close"]')&&Ft()}),document.addEventListener("keydown",a=>{a.key==="Escape"&&!e.classList.contains("hidden")&&Ft()}),t("copy").addEventListener("click",async()=>{let a=t("copy-status"),n=(t("theme").value||"").trim()||"a fun, varied party mix",i=parseInt(t("count").value,10)||30;try{let s=await ot("/beatify/api/library-pool/export?limit=2000"),o=await s.json().catch(()=>({}));if(!s.ok){a.textContent=o.message||j("admin.libraryAi.needScan","Scan your library first."),a.classList.remove("hidden");return}let l=Za(o,n,i);await navigator.clipboard.writeText(l),a.textContent=j("admin.libraryAi.copied","Prompt copied \u2014 paste it into your AI, then paste the answer below."),a.classList.remove("hidden")}catch{a.textContent=j("admin.libraryAi.copyFailed","Could not copy \u2014 is the page allowed to use the clipboard?"),a.classList.remove("hidden")}}),t("resolve").addEventListener("click",async()=>{let a=t("result"),n=t("save");Te=null,n.disabled=!0;let i=en(t("paste").value);if(!i.length){a.innerHTML=`

${j("admin.libraryAi.parseFail","Couldn't read any songs from that answer \u2014 expected JSON like")} {"songs":[{"artist":"\u2026","title":"\u2026"}]}

`,a.classList.remove("hidden");return}let s=(t("name").value||"").trim()||j("admin.libraryAi.defaultName","AI Mix");try{let o=await ot("/beatify/api/library-playlists/resolve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s,picks:i})}),l=await o.json().catch(()=>({}));if(!o.ok){a.innerHTML=`

${l.message||"Resolve failed"}

`,a.classList.remove("hidden");return}let d=l.unmatched||[],c=l.matched||0,u=`

${j("admin.libraryAi.matched","Matched in your library: ")}${c}

`;if(d.length){u+=`

${j("admin.libraryAi.unmatched","Not found (skipped): ")}${d.length}

    `;for(let m of d.slice(0,12))u+=`
  • ${Ot(m.artist)} \u2014 ${Ot(m.title)}
  • `;d.length>12&&(u+="
  • \u2026
  • "),u+="
"}a.innerHTML=u,a.classList.remove("hidden"),c>0&&l.playlist&&(Te=l.playlist,n.disabled=!1)}catch{a.innerHTML=`

${j("admin.libraryAi.resolveFailed","Could not check the songs \u2014 is Home Assistant reachable?")}

`,a.classList.remove("hidden")}}),t("save").addEventListener("click",async()=>{if(!Te)return;let a=t("result"),n=t("save");n.disabled=!0;try{let i=await ot("/beatify/api/playlists/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({playlist:Te})}),s=await i.json().catch(()=>({}));if(i.ok){if(a.innerHTML=`

${j("admin.libraryAi.saved","Saved! Find it under Playlists \u2192 Mine.")}

`,typeof window.loadPlaylists=="function")try{window.loadPlaylists()}catch{}}else a.innerHTML=`

${s.message||"Save failed"}

`,n.disabled=!1}catch{a.innerHTML='

Save failed

',n.disabled=!1}}),be=e,e}function Ot(e){return String(e||"").replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function Ft(){be&&be.classList.add("hidden")}function jt(){let e=tn();e.classList.remove("hidden"),e.querySelector('[data-ai="name"]')?.focus()}var an=2e3;function R(e,t){return(window.BeatifyAuth&&window.BeatifyAuth.fetch||fetch)(e,t)}function g(e,t){let a=window.BeatifyI18n;if(a&&typeof a.t=="function"){let n=a.t(e);if(n&&n!==e)return n}return t}function Me(){return{popularity_percent:r.libraryPopPercent,size:r.librarySize,year_gate:r.libraryYearGate,genres:r.libraryGenres||[]}}var se=[];function nn(e){return`
Game settings
@@ -168,7 +168,7 @@ var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags:

-
`}function nn(e,t={}){let a=t.mode||"admin",n=t.onChanged||null;if(e.classList.add("library-settings"),e.innerHTML=an(a),window.BeatifyI18n&&typeof window.BeatifyI18n.apply=="function")try{window.BeatifyI18n.apply(e)}catch{}let i=y=>e.querySelector(`[data-lib="${y}"]`),s={root:e,pollTimer:null,mode:a},o=i("pop-range"),l=i("pop-value"),d=i("size"),c=i("year-gate"),u=i("scan-size");function m(y){return g("admin.library.topPercent","Top {p}%").replace("{p}",String(y))}let f=101;function p(){o&&(o.value=String(f-r.libraryPopPercent)),l&&(l.textContent=m(r.libraryPopPercent)),d&&(d.value=String(r.librarySize)),c&&(c.value=r.libraryYearGate),u&&(u.value=String(r.libraryScanSize)),mt(s)}return o?.addEventListener("input",function(){let y=parseInt(this.value,10);r.libraryPopPercent=Number.isFinite(y)?f-y:50,l&&(l.textContent=m(r.libraryPopPercent)),ft()}),o?.addEventListener("change",function(){he(s),n&&n()}),e.querySelector('[data-lib="genres"]')?.addEventListener("click",y=>{let b=y.target.closest("[data-genre]");if(!b)return;let h=b.getAttribute("data-genre"),k=new Set(r.libraryGenres||[]);k.has(h)?k.delete(h):k.add(h),r.libraryGenres=Array.from(k),b.classList.toggle("genre-chip--on",k.has(h)),he(s),n&&n()}),d?.addEventListener("change",function(){r.librarySize=parseInt(this.value,10)||30,he(s),n&&n()}),c?.addEventListener("change",function(){r.libraryYearGate=this.value,he(s),n&&n()}),u?.addEventListener("change",function(){r.libraryScanSize=parseInt(this.value,10),Number.isNaN(r.libraryScanSize)&&(r.libraryScanSize=2500),he(s),n&&n()}),i("scan-btn")?.addEventListener("click",async()=>{let y=i("scan-btn");y&&(y.disabled=!0);try{let b=await R("/beatify/api/library-pool/build",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({use_musicbrainz:!0,year_fallback:r.libraryYearGate!=="strict",target_size:r.libraryScanSize})});if(!b.ok&&b.status!==409){let h=await b.json().catch(()=>({}));V(s,h.message||g("admin.library.scanFailed","Scan could not start"))}}catch{V(s,g("admin.library.scanFailed","Scan could not start"))}ut(s)}),i("refresh-btn")?.addEventListener("click",async()=>{let y=i("refresh-btn");y&&(y.disabled=!0);try{let b=await R("/beatify/api/library-pool/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"});if(!b.ok&&b.status!==409){let h=await b.json().catch(()=>({}));V(s,h.message||g("admin.library.refreshFailed","Refresh could not start")),y&&(y.disabled=!1)}}catch{y&&(y.disabled=!1)}ut(s)}),a==="admin"&&(e.querySelector('[data-lib="save-mix"]')?.addEventListener("click",async()=>{let y=e.querySelector('[data-lib="save-mix"]');y&&(y.disabled=!0);try{let b=await R("/beatify/api/library-playlists/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Me())}),h=await b.json().catch(()=>({}));if(b.ok&&h.saved){if(ct(s,g("admin.library.mixSaved","Saved as playlist: ")+h.name+` (${h.songs})`),typeof window.loadPlaylists=="function")try{window.loadPlaylists()}catch{}}else ct(s,h.message||g("admin.library.mixSaveFailed","Could not save mix"))}catch{ct(s,g("admin.library.mixSaveFailed","Could not save mix"))}y&&(y.disabled=!1)}),e.querySelector('[data-lib="ai-create"]')?.addEventListener("click",()=>{Ft()})),s.refresh=()=>Pe(s),s.syncControls=p,s.destroy=()=>{Gt(s);let y=se.indexOf(s);y>=0&&se.splice(y,1),e.innerHTML=""},se.push(s),p(),sn(s),rn(s),ln(s).finally(()=>Pe(s)),s}var lt=null,dt=null;function rn(e){let t=e.root,a=t.querySelector('[data-lib="recent-btn"]'),n=t.querySelector('[data-lib="recent-list"]');if(!a||!n)return;let i=s=>{if(!s.length){n.innerHTML=`

${g("admin.library.recentEmpty","No games played yet.")}

`;return}n.innerHTML=s.map((o,l)=>` +
`}function rn(e,t={}){let a=t.mode||"admin",n=t.onChanged||null;if(e.classList.add("library-settings"),e.innerHTML=nn(a),window.BeatifyI18n&&typeof window.BeatifyI18n.apply=="function")try{window.BeatifyI18n.apply(e)}catch{}let i=y=>e.querySelector(`[data-lib="${y}"]`),s={root:e,pollTimer:null,mode:a},o=i("pop-range"),l=i("pop-value"),d=i("size"),c=i("year-gate"),u=i("scan-size");function m(y){return g("admin.library.topPercent","Top {p}%").replace("{p}",String(y))}let f=101;function p(){o&&(o.value=String(f-r.libraryPopPercent)),l&&(l.textContent=m(r.libraryPopPercent)),d&&(d.value=String(r.librarySize)),c&&(c.value=r.libraryYearGate),u&&(u.value=String(r.libraryScanSize)),mt(s)}return o?.addEventListener("input",function(){let y=parseInt(this.value,10);r.libraryPopPercent=Number.isFinite(y)?f-y:50,l&&(l.textContent=m(r.libraryPopPercent)),ft()}),o?.addEventListener("change",function(){he(s),n&&n()}),e.querySelector('[data-lib="genres"]')?.addEventListener("click",y=>{let b=y.target.closest("[data-genre]");if(!b)return;let h=b.getAttribute("data-genre"),k=new Set(r.libraryGenres||[]);k.has(h)?k.delete(h):k.add(h),r.libraryGenres=Array.from(k),b.classList.toggle("genre-chip--on",k.has(h)),he(s),n&&n()}),d?.addEventListener("change",function(){r.librarySize=parseInt(this.value,10)||30,he(s),n&&n()}),c?.addEventListener("change",function(){r.libraryYearGate=this.value,he(s),n&&n()}),u?.addEventListener("change",function(){r.libraryScanSize=parseInt(this.value,10),Number.isNaN(r.libraryScanSize)&&(r.libraryScanSize=2500),he(s),n&&n()}),i("scan-btn")?.addEventListener("click",async()=>{let y=i("scan-btn");y&&(y.disabled=!0);try{let b=await R("/beatify/api/library-pool/build",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({use_musicbrainz:!0,year_fallback:r.libraryYearGate!=="strict",target_size:r.libraryScanSize})});if(!b.ok&&b.status!==409){let h=await b.json().catch(()=>({}));V(s,h.message||g("admin.library.scanFailed","Scan could not start"))}}catch{V(s,g("admin.library.scanFailed","Scan could not start"))}ut(s)}),i("refresh-btn")?.addEventListener("click",async()=>{let y=i("refresh-btn");y&&(y.disabled=!0);try{let b=await R("/beatify/api/library-pool/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"});if(!b.ok&&b.status!==409){let h=await b.json().catch(()=>({}));V(s,h.message||g("admin.library.refreshFailed","Refresh could not start")),y&&(y.disabled=!1)}}catch{y&&(y.disabled=!1)}ut(s)}),a==="admin"&&(e.querySelector('[data-lib="save-mix"]')?.addEventListener("click",async()=>{let y=e.querySelector('[data-lib="save-mix"]');y&&(y.disabled=!0);try{let b=await R("/beatify/api/library-playlists/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Me())}),h=await b.json().catch(()=>({}));if(b.ok&&h.saved){if(ct(s,g("admin.library.mixSaved","Saved as playlist: ")+h.name+` (${h.songs})`),typeof window.loadPlaylists=="function")try{window.loadPlaylists()}catch{}}else ct(s,h.message||g("admin.library.mixSaveFailed","Could not save mix"))}catch{ct(s,g("admin.library.mixSaveFailed","Could not save mix"))}y&&(y.disabled=!1)}),e.querySelector('[data-lib="ai-create"]')?.addEventListener("click",()=>{jt()})),s.refresh=()=>Pe(s),s.syncControls=p,s.destroy=()=>{Gt(s);let y=se.indexOf(s);y>=0&&se.splice(y,1),e.innerHTML=""},se.push(s),p(),on(s),sn(s),dn(s).finally(()=>Pe(s)),s}var lt=null,dt=null;function sn(e){let t=e.root,a=t.querySelector('[data-lib="recent-btn"]'),n=t.querySelector('[data-lib="recent-list"]');if(!a||!n)return;let i=s=>{if(!s.length){n.innerHTML=`

${g("admin.library.recentEmpty","No games played yet.")}

`;return}n.innerHTML=s.map((o,l)=>` `).join(""),n.querySelectorAll("[data-recent]").forEach(o=>{o.addEventListener("click",()=>{let l=s[Number(o.dataset.recent)];l&&window.BeatifyCrateDiggerFix&&window.BeatifyCrateDiggerFix.open(l)})})};a.addEventListener("click",async()=>{if(!n.classList.contains("hidden")){n.classList.add("hidden");return}n.classList.remove("hidden"),n.innerHTML=`

${g("admin.library.recentLoading","Loading\u2026")}

`;try{let l=await(await R("/beatify/api/library-pool/recent")).json().catch(()=>({}));i(l&&l.songs||[])}catch{n.innerHTML=`

${g("admin.library.recentFailed","Could not load recent songs.")}

`}})}function sn(e){let t=e.root,a=t.querySelector('[data-lib="backup-btn"]'),n=t.querySelector('[data-lib="restore-btn"]'),i=t.querySelector('[data-lib="restore-file"]'),s=t.querySelector('[data-lib="backup-status"]'),o=(l,d)=>{s&&(s.textContent=l||"",s.classList.toggle("library-backup-status--error",!!d))};a&&a.addEventListener("click",async()=>{a.disabled=!0,o(g("admin.library.backupWorking","Preparing backup\u2026"));try{let l=await R("/beatify/api/library-pool/backup");if(!l.ok){let b="";try{b=(await l.json()).error||""}catch{}o(b||g("admin.library.backupFailed","Backup failed."),!0);return}let d=await l.blob(),u=(l.headers.get("Content-Disposition")||"").match(/filename="?([^"]+)"?/),m=u&&u[1]||"beatify-library-backup.json.gz",f=URL.createObjectURL(d),p=document.createElement("a");p.href=f,p.download=m,document.body.appendChild(p),p.click(),p.remove(),setTimeout(()=>URL.revokeObjectURL(f),3e4);let y=l.headers.get("X-Beatify-Songs");o(g("admin.library.backupDone","Backup downloaded ({n} songs).").replace("{n}",Number(y||0).toLocaleString()))}catch{o(g("admin.library.backupFailed","Backup failed."),!0)}finally{a.disabled=!1}}),n&&i&&(n.addEventListener("click",()=>i.click()),i.addEventListener("change",async()=>{let l=i.files&&i.files[0];if(i.value="",!l)return;let d=window.confirm(g("admin.library.restoreMergeAsk","Merge this backup into your current library?"));if(!(!d&&!window.confirm(g("admin.library.restoreReplaceConfirm","Replace your current scanned library with this backup? Your current pool is saved aside first.")))){n.disabled=!0,o(g("admin.library.restoreWorking","Restoring\u2026"));try{let c=await R("/beatify/api/library-pool/restore?mode="+(d?"merge":"replace"),{method:"POST",body:l}),u={};try{u=await c.json()}catch{}if(!c.ok){o(u.error||g("admin.library.restoreFailed","Restore failed."),!0);return}let m=u.stats||{},f=g("admin.library.restoreDone","Restored: {total} songs ({added} new, {improved} improved).").replace("{total}",Number(m.total||0).toLocaleString()).replace("{added}",Number(m.added||0).toLocaleString()).replace("{improved}",Number(m.improved||0).toLocaleString());u.foreign_source&&(f+=" "+g("admin.library.restoreForeign","Note: this backup came from a different Music Assistant server, so some songs may need a rescan to play.")),o(f),Pe(e)}catch{o(g("admin.library.restoreFailed","Restore failed."),!0)}finally{n.disabled=!1}}}))}function ft(){dt&&clearTimeout(dt),dt=setTimeout(async()=>{try{let e=new URLSearchParams({pop:String(r.libraryPopPercent),genres:(r.libraryGenres||[]).join(","),gate:r.libraryYearGate}),t=await R("/beatify/api/library-pool/preview?"+e.toString());if(!t.ok)return;let a=await t.json(),n=Number(a.eligible??0),i=n<(r.librarySize||30);se.forEach(s=>{let o=s.root.querySelector('[data-lib="match-count"]');if(!o)return;let l=g("admin.library.matchCount","{n} songs match these settings").replace("{n}",n.toLocaleString());i&&(l+=" \u2014 "+g("admin.library.matchLow","not enough for a full game; the rest will come from related genres and the most popular matches")),o.textContent=l,o.classList.toggle("library-match-count--low",i)})}catch{}},350)}function on(){ft(),lt&&clearTimeout(lt),lt=setTimeout(async()=>{try{await R("/beatify/api/library-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({popularity_percent:r.libraryPopPercent,size:r.librarySize,year_gate:r.libraryYearGate,scan_size:r.libraryScanSize,genres:r.libraryGenres||[]})})}catch{}},400)}async function ln(e){try{let t=await R("/beatify/api/library-settings");if(!t.ok)return;let a=await t.json();Number.isFinite(a.popularity_percent)&&(r.libraryPopPercent=a.popularity_percent),Number.isFinite(a.size)&&(r.librarySize=a.size),typeof a.year_gate=="string"&&a.year_gate&&(r.libraryYearGate=a.year_gate),Number.isFinite(a.scan_size)&&(r.libraryScanSize=a.scan_size),Array.isArray(a.genres)&&(r.libraryGenres=a.genres),se.forEach(n=>{try{n.syncControls()}catch{}}),ft()}catch{}}function he(e){on();for(let t of se)t!==e&&t.syncControls&&t.syncControls()}async function Pe(e){try{let t=await R("/beatify/api/library-pool");if(!t.ok)return;let a=await t.json();pn(e,a.provider_version),dn(e,a),un(e,a.refresh),a.building||a.refresh&&a.refresh.running?ut(e):Gt(e)}catch{}}function ut(e){e.pollTimer||(e.pollTimer=setInterval(()=>Pe(e),tn))}function Gt(e){e.pollTimer&&(clearInterval(e.pollTimer),e.pollTimer=null)}function V(e,t){let a=e.root.querySelector('[data-lib="status-text"]');a&&(a.textContent=t)}function ct(e,t){let a=e.root.querySelector('[data-lib="toast"]');a&&(a.textContent=t,a.classList.remove("hidden"),setTimeout(()=>a.classList.add("hidden"),6e3))}function dn(e,t){let a=e.root;t.stats&&(mn(e,t),fn(e,t.stats&&t.stats.genres||[]));let n=a.querySelector('[data-lib="spinner"]'),i=a.querySelector('[data-lib="progress"]'),s=a.querySelector('[data-lib="bar"]'),o=a.querySelector('[data-lib="progress-label"]'),l=a.querySelector('[data-lib="scan-btn"]'),d=a.querySelector('[data-lib="scan-btn-label"]');if(t.building){n?.classList.remove("hidden"),i?.classList.remove("hidden"),l&&(l.disabled=!0);let p=t.progress&&t.progress.done||0,y=t.progress&&t.progress.total||0,b=t.progress&&t.progress.phase||"";if(b==="enumerate"||y===0&&p>0){n?.classList.remove("hidden"),i?.classList.remove("hidden"),l&&(l.disabled=!0),s&&(s.style.width="2%"),o&&(o.textContent=g("admin.library.reading","Reading your library\u2026")+` ${p.toLocaleString()} `+g("admin.library.songsFound","songs found")),V(e,g("admin.library.statusScanning","Scanning your library in the background \u2014 you can continue."));return}let h=y>0?Math.round(p/y*100):0;s&&(s.style.width=h+"%");let k=Date.now(),Y=`${b}|${y}`;(e._etaPhase!==Y||p<(e._etaDone||0))&&(e._etaPhase=Y,e._etaT0=k,e._etaD0=p),e._etaDone=p;let xe="",ie=(k-e._etaT0)/1e3,pe=p-e._etaD0;if(y>p&&ie>=20&&pe>=10){let ge=pe/ie,re=Math.round((y-p)/ge),X=Math.floor(re/3600),J=Math.round(re%3600/60);xe=" \xB7 ~"+(X>0?`${X}h ${J}m`:`${J} min`)+" "+g("admin.library.left","left")}o&&(o.textContent=y>0?g("admin.library.scanning","Scanning\u2026")+` ${p}/${y} (${h}%)${xe}`:g("admin.library.scanningStart","Starting scan\u2026")),V(e,g("admin.library.statusScanning","Scanning your library in the background \u2014 you can continue."));return}if(n?.classList.add("hidden"),i?.classList.add("hidden"),l&&(l.disabled=!1),t.error){V(e,g("admin.library.statusError","Last scan failed: ")+t.error),d&&(d.textContent=g("admin.library.scanBtn","Scan library"));return}if(!t.built){V(e,g("admin.library.statusEmpty","Your library hasn\u2019t been scanned yet \u2014 start a scan to play from your own music.")),d&&(d.textContent=g("admin.library.scanBtn","Scan library"));return}let c=t.stats||{},u=c.usable||0,m=c.total||0,f=g("admin.library.statusReady","Library ready: {usable} of {total} songs game-ready (verified years).");V(e,f.replace("{usable}",String(u)).replace("{total}",String(m))),d&&(d.textContent=g("admin.library.rescanBtn","Rescan"))}function cn(e){return typeof e=="number"?e.toLocaleString():"\u2014"}function un(e,t){let a=e.root.querySelector('[data-lib="refresh-row"]'),n=e.root.querySelector('[data-lib="refresh-status"]'),i=e.root.querySelector('[data-lib="refresh-btn"]');if(!a||!t)return;let s=t.backlog||0;if(t.running){a.classList.remove("hidden"),i&&(i.disabled=!0);let o=t.progress||{},l=o.done||0,d=o.total||0,c=d>0?Math.round(l/d*100):0;n&&(n.textContent=d>0?g("admin.library.refreshing","Improving songs\u2026")+` ${l.toLocaleString()}/${d.toLocaleString()} (${c}%)`:g("admin.library.refreshing","Improving songs\u2026"));return}s>0?(a.classList.remove("hidden"),i&&(i.disabled=!1),n&&(n.textContent=g("admin.library.refreshBacklog","{n} songs can be improved").replace("{n}",s.toLocaleString()))):a.classList.add("hidden")}function mn(e,t){let a=e.root.querySelector('[data-lib="stats"]');if(!a)return;let n=t.stats||{},i=[["admin.library.stLibraryTotal","Songs in your library",t.library_total],["admin.library.stPrepared","Prepared (scanned)",n.total],["admin.library.stStrict","Verified years (strict)",n.verified_strict],["admin.library.stBalanced",'Usable at "Balanced"',n.verified_balanced],["admin.library.stTags",'Usable at "Relaxed"',n.verified_tags],["admin.library.stScored","With popularity data",n.scored],["admin.library.stGenres","With genre tags",n.genre_coverage]],s="";for(let[l,d,c]of i)s+=`
${g(l,d)}${cn(c)}
`;if(t.built_at){let l=new Date(t.built_at*1e3).toLocaleString();s+=`
${g("admin.library.stBuiltAt","Last scan finished")}${l}
`}let o=t.last_generate;if(o&&o.ts){let l;if(o.skipped_playlists)l=g("admin.library.lgPlaylists","{n} saved playlist(s) \u2014 settings not applied").replace("{n}",String(o.skipped_playlists));else{let c=[];Number.isFinite(o.pop_percent)&&c.push(g("admin.library.topPercent","Top {p}%").replace("{p}",String(o.pop_percent))),o.genres&&o.genres.length&&c.push(o.genres.join(", ")),c.push(`${o.eligible??"\u2014"} \u2192 ${o.chosen??"\u2014"}`),o.genres_expanded&&o.genres_expanded.length&&c.push(g("admin.library.lgExpanded","+ related: {g}").replace("{g}",o.genres_expanded.join(", "))),o.widened&&c.push(g("admin.library.lgWidened","expanded to best available")),l=c.join(" \xB7 ")}let d=new Date(o.ts*1e3).toLocaleTimeString();s+=`
${g("admin.library.stLastGame","Last game generated")}${ve(l)} (${d})
`}a.innerHTML=s,a.classList.remove("hidden")}var zt="";function fn(e,t){let a=e.root.querySelector('[data-lib="genres"]');if(!a)return;let n=JSON.stringify(t.map(i=>i.name));if(n===zt&&a.querySelector("[data-genre]")){mt(e);return}if(zt=n,!t.length){a.innerHTML=`${g("admin.library.genresNone","No genre tags found yet \u2014 rescan once with v0.6+ to collect them from Plex/Jellyfin.")}`;return}a.innerHTML=t.map(i=>``).join(""),mt(e)}function mt(e){let t=new Set(r.libraryGenres||[]);e.root.querySelectorAll("[data-genre]").forEach(a=>{a.classList.toggle("genre-chip--on",t.has(a.getAttribute("data-genre")))})}function ve(e){return String(e).replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function yn(e){return ve(e)}function pn(e,t){if(!t)return;let a=e.root.querySelector('[data-lib="provider-version"]');a&&(a.textContent="Crate Digger engine v"+t+" \xB7 by DMW")}var oe=null;function Wt(e){let t=document.getElementById("library-settings");t&&(oe||(oe=nn(t,{mode:"admin",onChanged:e})),yt())}function Ut(){oe&&oe.syncControls()}function yt(){let e=document.getElementById("library-settings");if(!e)return;let t=r.selectedProvider==="ma_library";e.classList.toggle("hidden",!t),t&&oe&&oe.refresh()}var w=null,S={uri:null,songTitle:"",songArtist:"",current:null,candidates:[],busy:!1};function B(e,t){return window.BeatifyI18n&&window.BeatifyI18n.t(e)||t}function E(e){return String(e??"").replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function Yt(e,t){return window.BeatifyAuth?window.BeatifyAuth.fetch(e,t):fetch(e,t)}function gn(){return w||(w=document.createElement("div"),w.className="cd-fix-overlay hidden",w.setAttribute("role","dialog"),w.setAttribute("aria-modal","true"),w.innerHTML=` + `).join(""),n.querySelectorAll("[data-recent]").forEach(o=>{o.addEventListener("click",()=>{let l=s[Number(o.dataset.recent)];l&&window.BeatifyCrateDiggerFix&&window.BeatifyCrateDiggerFix.open(l)})})};a.addEventListener("click",async()=>{if(!n.classList.contains("hidden")){n.classList.add("hidden");return}n.classList.remove("hidden"),n.innerHTML=`

${g("admin.library.recentLoading","Loading\u2026")}

`;try{let l=await(await R("/beatify/api/library-pool/recent")).json().catch(()=>({}));i(l&&l.songs||[])}catch{n.innerHTML=`

${g("admin.library.recentFailed","Could not load recent songs.")}

`}})}function on(e){let t=e.root,a=t.querySelector('[data-lib="backup-btn"]'),n=t.querySelector('[data-lib="restore-btn"]'),i=t.querySelector('[data-lib="restore-file"]'),s=t.querySelector('[data-lib="backup-status"]'),o=(l,d)=>{s&&(s.textContent=l||"",s.classList.toggle("library-backup-status--error",!!d))};a&&a.addEventListener("click",async()=>{a.disabled=!0,o(g("admin.library.backupWorking","Preparing backup\u2026"));try{let l=await R("/beatify/api/library-pool/backup");if(!l.ok){let b="";try{b=(await l.json()).error||""}catch{}o(b||g("admin.library.backupFailed","Backup failed."),!0);return}let d=await l.blob(),u=(l.headers.get("Content-Disposition")||"").match(/filename="?([^"]+)"?/),m=u&&u[1]||"beatify-library-backup.json.gz",f=URL.createObjectURL(d),p=document.createElement("a");p.href=f,p.download=m,document.body.appendChild(p),p.click(),p.remove(),setTimeout(()=>URL.revokeObjectURL(f),3e4);let y=l.headers.get("X-Beatify-Songs");o(g("admin.library.backupDone","Backup downloaded ({n} songs).").replace("{n}",Number(y||0).toLocaleString()))}catch{o(g("admin.library.backupFailed","Backup failed."),!0)}finally{a.disabled=!1}}),n&&i&&(n.addEventListener("click",()=>i.click()),i.addEventListener("change",async()=>{let l=i.files&&i.files[0];if(i.value="",!l)return;let d=window.confirm(g("admin.library.restoreMergeAsk","Merge this backup into your current library?"));if(!(!d&&!window.confirm(g("admin.library.restoreReplaceConfirm","Replace your current scanned library with this backup? Your current pool is saved aside first.")))){n.disabled=!0,o(g("admin.library.restoreWorking","Restoring\u2026"));try{let c=await R("/beatify/api/library-pool/restore?mode="+(d?"merge":"replace"),{method:"POST",body:l}),u={};try{u=await c.json()}catch{}if(!c.ok){o(u.error||g("admin.library.restoreFailed","Restore failed."),!0);return}let m=u.stats||{},f=g("admin.library.restoreDone","Restored: {total} songs ({added} new, {improved} improved).").replace("{total}",Number(m.total||0).toLocaleString()).replace("{added}",Number(m.added||0).toLocaleString()).replace("{improved}",Number(m.improved||0).toLocaleString());u.foreign_source&&(f+=" "+g("admin.library.restoreForeign","Note: this backup came from a different Music Assistant server, so some songs may need a rescan to play.")),o(f),Pe(e)}catch{o(g("admin.library.restoreFailed","Restore failed."),!0)}finally{n.disabled=!1}}}))}function ft(){dt&&clearTimeout(dt),dt=setTimeout(async()=>{try{let e=new URLSearchParams({pop:String(r.libraryPopPercent),genres:(r.libraryGenres||[]).join(","),gate:r.libraryYearGate}),t=await R("/beatify/api/library-pool/preview?"+e.toString());if(!t.ok)return;let a=await t.json(),n=Number(a.eligible??0),i=n<(r.librarySize||30);se.forEach(s=>{let o=s.root.querySelector('[data-lib="match-count"]');if(!o)return;let l=g("admin.library.matchCount","{n} songs match these settings").replace("{n}",n.toLocaleString());i&&(l+=" \u2014 "+g("admin.library.matchLow","not enough for a full game; the rest will come from related genres and the most popular matches")),o.textContent=l,o.classList.toggle("library-match-count--low",i)})}catch{}},350)}function ln(){ft(),lt&&clearTimeout(lt),lt=setTimeout(async()=>{try{await R("/beatify/api/library-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({popularity_percent:r.libraryPopPercent,size:r.librarySize,year_gate:r.libraryYearGate,scan_size:r.libraryScanSize,genres:r.libraryGenres||[]})})}catch{}},400)}async function dn(e){try{let t=await R("/beatify/api/library-settings");if(!t.ok)return;let a=await t.json();Number.isFinite(a.popularity_percent)&&(r.libraryPopPercent=a.popularity_percent),Number.isFinite(a.size)&&(r.librarySize=a.size),typeof a.year_gate=="string"&&a.year_gate&&(r.libraryYearGate=a.year_gate),Number.isFinite(a.scan_size)&&(r.libraryScanSize=a.scan_size),Array.isArray(a.genres)&&(r.libraryGenres=a.genres),se.forEach(n=>{try{n.syncControls()}catch{}}),ft()}catch{}}function he(e){ln();for(let t of se)t!==e&&t.syncControls&&t.syncControls()}async function Pe(e){try{let t=await R("/beatify/api/library-pool");if(!t.ok)return;let a=await t.json();gn(e,a.provider_version),cn(e,a),mn(e,a.refresh),a.building||a.refresh&&a.refresh.running?ut(e):Gt(e)}catch{}}function ut(e){e.pollTimer||(e.pollTimer=setInterval(()=>Pe(e),an))}function Gt(e){e.pollTimer&&(clearInterval(e.pollTimer),e.pollTimer=null)}function V(e,t){let a=e.root.querySelector('[data-lib="status-text"]');a&&(a.textContent=t)}function ct(e,t){let a=e.root.querySelector('[data-lib="toast"]');a&&(a.textContent=t,a.classList.remove("hidden"),setTimeout(()=>a.classList.add("hidden"),6e3))}function cn(e,t){let a=e.root;t.stats&&(fn(e,t),yn(e,t.stats&&t.stats.genres||[]));let n=a.querySelector('[data-lib="spinner"]'),i=a.querySelector('[data-lib="progress"]'),s=a.querySelector('[data-lib="bar"]'),o=a.querySelector('[data-lib="progress-label"]'),l=a.querySelector('[data-lib="scan-btn"]'),d=a.querySelector('[data-lib="scan-btn-label"]');if(t.building){n?.classList.remove("hidden"),i?.classList.remove("hidden"),l&&(l.disabled=!0);let p=t.progress&&t.progress.done||0,y=t.progress&&t.progress.total||0,b=t.progress&&t.progress.phase||"";if(b==="enumerate"||y===0&&p>0){n?.classList.remove("hidden"),i?.classList.remove("hidden"),l&&(l.disabled=!0),s&&(s.style.width="2%"),o&&(o.textContent=g("admin.library.reading","Reading your library\u2026")+` ${p.toLocaleString()} `+g("admin.library.songsFound","songs found")),V(e,g("admin.library.statusScanning","Scanning your library in the background \u2014 you can continue."));return}let h=y>0?Math.round(p/y*100):0;s&&(s.style.width=h+"%");let k=Date.now(),Y=`${b}|${y}`;(e._etaPhase!==Y||p<(e._etaDone||0))&&(e._etaPhase=Y,e._etaT0=k,e._etaD0=p),e._etaDone=p;let xe="",ie=(k-e._etaT0)/1e3,pe=p-e._etaD0;if(y>p&&ie>=20&&pe>=10){let ge=pe/ie,re=Math.round((y-p)/ge),X=Math.floor(re/3600),J=Math.round(re%3600/60);xe=" \xB7 ~"+(X>0?`${X}h ${J}m`:`${J} min`)+" "+g("admin.library.left","left")}o&&(o.textContent=y>0?g("admin.library.scanning","Scanning\u2026")+` ${p}/${y} (${h}%)${xe}`:g("admin.library.scanningStart","Starting scan\u2026")),V(e,g("admin.library.statusScanning","Scanning your library in the background \u2014 you can continue."));return}if(n?.classList.add("hidden"),i?.classList.add("hidden"),l&&(l.disabled=!1),t.error){V(e,g("admin.library.statusError","Last scan failed: ")+t.error),d&&(d.textContent=g("admin.library.scanBtn","Scan library"));return}if(!t.built){V(e,g("admin.library.statusEmpty","Your library hasn\u2019t been scanned yet \u2014 start a scan to play from your own music.")),d&&(d.textContent=g("admin.library.scanBtn","Scan library"));return}let c=t.stats||{},u=c.usable||0,m=c.total||0,f=g("admin.library.statusReady","Library ready: {usable} of {total} songs game-ready (verified years).");V(e,f.replace("{usable}",String(u)).replace("{total}",String(m))),d&&(d.textContent=g("admin.library.rescanBtn","Rescan"))}function un(e){return typeof e=="number"?e.toLocaleString():"\u2014"}function mn(e,t){let a=e.root.querySelector('[data-lib="refresh-row"]'),n=e.root.querySelector('[data-lib="refresh-status"]'),i=e.root.querySelector('[data-lib="refresh-btn"]');if(!a||!t)return;let s=t.backlog||0;if(t.running){a.classList.remove("hidden"),i&&(i.disabled=!0);let o=t.progress||{},l=o.done||0,d=o.total||0,c=d>0?Math.round(l/d*100):0;n&&(n.textContent=d>0?g("admin.library.refreshing","Improving songs\u2026")+` ${l.toLocaleString()}/${d.toLocaleString()} (${c}%)`:g("admin.library.refreshing","Improving songs\u2026"));return}s>0?(a.classList.remove("hidden"),i&&(i.disabled=!1),n&&(n.textContent=g("admin.library.refreshBacklog","{n} songs can be improved").replace("{n}",s.toLocaleString()))):a.classList.add("hidden")}function fn(e,t){let a=e.root.querySelector('[data-lib="stats"]');if(!a)return;let n=t.stats||{},i=[["admin.library.stLibraryTotal","Songs in your library",t.library_total],["admin.library.stPrepared","Prepared (scanned)",n.total],["admin.library.stStrict","Verified years (strict)",n.verified_strict],["admin.library.stBalanced",'Usable at "Balanced"',n.verified_balanced],["admin.library.stTags",'Usable at "Relaxed"',n.verified_tags],["admin.library.stScored","With popularity data",n.scored],["admin.library.stGenres","With genre tags",n.genre_coverage]],s="";for(let[l,d,c]of i)s+=`
${g(l,d)}${un(c)}
`;if(t.built_at){let l=new Date(t.built_at*1e3).toLocaleString();s+=`
${g("admin.library.stBuiltAt","Last scan finished")}${l}
`}let o=t.last_generate;if(o&&o.ts){let l;if(o.skipped_playlists)l=g("admin.library.lgPlaylists","{n} saved playlist(s) \u2014 settings not applied").replace("{n}",String(o.skipped_playlists));else{let c=[];Number.isFinite(o.pop_percent)&&c.push(g("admin.library.topPercent","Top {p}%").replace("{p}",String(o.pop_percent))),o.genres&&o.genres.length&&c.push(o.genres.join(", ")),c.push(`${o.eligible??"\u2014"} \u2192 ${o.chosen??"\u2014"}`),o.genres_expanded&&o.genres_expanded.length&&c.push(g("admin.library.lgExpanded","+ related: {g}").replace("{g}",o.genres_expanded.join(", "))),o.widened&&c.push(g("admin.library.lgWidened","expanded to best available")),l=c.join(" \xB7 ")}let d=new Date(o.ts*1e3).toLocaleTimeString();s+=`
${g("admin.library.stLastGame","Last game generated")}${ve(l)} (${d})
`}a.innerHTML=s,a.classList.remove("hidden")}var zt="";function yn(e,t){let a=e.root.querySelector('[data-lib="genres"]');if(!a)return;let n=JSON.stringify(t.map(i=>i.name));if(n===zt&&a.querySelector("[data-genre]")){mt(e);return}if(zt=n,!t.length){a.innerHTML=`${g("admin.library.genresNone","No genre tags found yet \u2014 rescan once with v0.6+ to collect them from Plex/Jellyfin.")}`;return}a.innerHTML=t.map(i=>``).join(""),mt(e)}function mt(e){let t=new Set(r.libraryGenres||[]);e.root.querySelectorAll("[data-genre]").forEach(a=>{a.classList.toggle("genre-chip--on",t.has(a.getAttribute("data-genre")))})}function ve(e){return String(e).replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function pn(e){return ve(e)}function gn(e,t){if(!t)return;let a=e.root.querySelector('[data-lib="provider-version"]');a&&(a.textContent="Crate Digger engine v"+t+" \xB7 by DMW")}var oe=null;function Wt(e){let t=document.getElementById("library-settings");t&&(oe||(oe=rn(t,{mode:"admin",onChanged:e})),yt())}function Ut(){oe&&oe.syncControls()}function yt(){let e=document.getElementById("library-settings");if(!e)return;let t=r.selectedProvider==="ma_library";e.classList.toggle("hidden",!t),t&&oe&&oe.refresh()}var w=null,S={uri:null,songTitle:"",songArtist:"",current:null,candidates:[],busy:!1};function B(e,t){return window.BeatifyI18n&&window.BeatifyI18n.t(e)||t}function E(e){return String(e??"").replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function Yt(e,t){return window.BeatifyAuth?window.BeatifyAuth.fetch(e,t):fetch(e,t)}function bn(){return w||(w=document.createElement("div"),w.className="cd-fix-overlay hidden",w.setAttribute("role","dialog"),w.setAttribute("aria-modal","true"),w.innerHTML=`

${E(B("admin.library.fixTitle","Fix this song"))}

@@ -205,7 +205,7 @@ var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags:

- `,document.body.appendChild(w),w.addEventListener("click",e=>{(e.target===w||e.target.closest('[data-cd="close"]'))&&pt()}),w.querySelector('[data-cd="search"]').addEventListener("click",()=>Vt()),w.querySelector('[data-cd="save"]').addEventListener("click",()=>Qt({})),document.addEventListener("keydown",e=>{e.key==="Escape"&&w&&!w.classList.contains("hidden")&&pt()}),w)}function H(e,t){let a=w&&w.querySelector('[data-cd="status"]');a&&(a.textContent=e||"",a.classList.toggle("cd-fix-status--error",!!t))}function pt(){w&&w.classList.add("hidden"),S={uri:null,songTitle:"",songArtist:"",current:null,candidates:[],busy:!1}}function Jt(){let e=w.querySelector('[data-cd="current"]'),t=S.current||{},a=t.year_source?B("admin.library.fixSourceLabel","source: {s}").replace("{s}",t.year_source):"",n=`${E(t.artist)} \u2014 ${E(t.title)}`;if(t.album&&(n+=`
${E(t.album)}`),n+=`
${E(B("admin.library.fixCurrentYear","Currently"))}: ${E(t.year||"\u2014")}`,a&&(n+=` (${E(a)})`),t.corrected&&(n+=`
${E(B("admin.library.fixAlready","You already corrected this song."))}`),t.original_title||t.original_artist){let i=`${t.original_artist||t.artist} \u2014 ${t.original_title||t.title}`;n+=`
${E(B("admin.library.fixWasTagged","Tagged as"))}: ${E(i)}`}e.innerHTML=n}function bn(){let e=w.querySelector('[data-cd="results"]');if(!S.candidates.length){e.innerHTML=`

${E(B("admin.library.fixNoMatches","No matches found. Try correcting the artist or title, or set the year yourself."))}

`;return}e.innerHTML=S.candidates.map((t,a)=>` + `,document.body.appendChild(w),w.addEventListener("click",e=>{(e.target===w||e.target.closest('[data-cd="close"]'))&&pt()}),w.querySelector('[data-cd="search"]').addEventListener("click",()=>Vt()),w.querySelector('[data-cd="save"]').addEventListener("click",()=>Qt({})),document.addEventListener("keydown",e=>{e.key==="Escape"&&w&&!w.classList.contains("hidden")&&pt()}),w)}function H(e,t){let a=w&&w.querySelector('[data-cd="status"]');a&&(a.textContent=e||"",a.classList.toggle("cd-fix-status--error",!!t))}function pt(){w&&w.classList.add("hidden"),S={uri:null,songTitle:"",songArtist:"",current:null,candidates:[],busy:!1}}function Jt(){let e=w.querySelector('[data-cd="current"]'),t=S.current||{},a=t.year_source?B("admin.library.fixSourceLabel","source: {s}").replace("{s}",t.year_source):"",n=`${E(t.artist)} \u2014 ${E(t.title)}`;if(t.album&&(n+=`
${E(t.album)}`),n+=`
${E(B("admin.library.fixCurrentYear","Currently"))}: ${E(t.year||"\u2014")}`,a&&(n+=` (${E(a)})`),t.corrected&&(n+=`
${E(B("admin.library.fixAlready","You already corrected this song."))}`),t.original_title||t.original_artist){let i=`${t.original_artist||t.artist} \u2014 ${t.original_title||t.title}`;n+=`
${E(B("admin.library.fixWasTagged","Tagged as"))}: ${E(i)}`}e.innerHTML=n}function hn(){let e=w.querySelector('[data-cd="results"]');if(!S.candidates.length){e.innerHTML=`

${E(B("admin.library.fixNoMatches","No matches found. Try correcting the artist or title, or set the year yourself."))}

`;return}e.innerHTML=S.candidates.map((t,a)=>` `).join(""),e.querySelectorAll("[data-cd-pick]").forEach(t=>{t.addEventListener("click",()=>{let a=S.candidates[Number(t.dataset.cdPick)];a&&Qt({year:a.year,title:a.title,artist:a.artist})})})}async function Vt(){if(!S.busy){S.busy=!0,H(B("admin.library.fixSearching","Searching MusicBrainz\u2026"));try{let e=await Yt("/beatify/api/library-pool/lookup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({uri:S.uri,song_title:S.songTitle,song_artist:S.songArtist,artist:w.querySelector('[data-cd="artist"]').value,title:w.querySelector('[data-cd="title"]').value})}),t=await e.json().catch(()=>({}));if(!e.ok){H(t.error||B("admin.library.fixFailed","Lookup failed."),!0);return}S.current=t.current||S.current,S.candidates=t.candidates||[],Jt(),bn(),H("")}catch{H(B("admin.library.fixFailed","Lookup failed."),!0)}finally{S.busy=!1}}}async function Qt({year:e,title:t,artist:a}){if(S.busy)return;let n=w.querySelector('[data-cd="year"]').value,i={uri:S.uri,song_title:S.songTitle,song_artist:S.songArtist};if(e!=null?i.year=e:n!==""&&(i.year=Number(n)),t&&(i.title=t),a&&(i.artist=a),i.year==null&&!i.title&&!i.artist){H(B("admin.library.fixNothing","Pick a match or enter a year first."),!0);return}S.busy=!0,H(B("admin.library.fixSaving","Saving\u2026"));try{let s=await Yt("/beatify/api/library-pool/correct",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)}),o=await s.json().catch(()=>({}));if(!s.ok){H(o.error||B("admin.library.fixFailed","Could not save."),!0);return}H(B("admin.library.fixSaved","Saved \u2014 future games will use your correction.")),setTimeout(pt,1200)}catch{H(B("admin.library.fixFailed","Could not save."),!0)}finally{S.busy=!1}}function hn(e){if(!e||!e.uri&&!e.title)return;let t=gn();S={uri:e.uri||null,songTitle:e.title||"",songArtist:e.artist||"",current:e,candidates:[],busy:!1},t.querySelector('[data-cd="artist"]').value=e.artist||"",t.querySelector('[data-cd="title"]').value=e.title||"",t.querySelector('[data-cd="year"]').value="",t.querySelector('[data-cd="results"]').innerHTML="",Jt(),H(""),t.classList.remove("hidden"),Vt()}typeof window<"u"&&(window.BeatifyCrateDiggerFix={open:hn});var M="beatify_last_player",x="beatify_game_settings",Kt={music_assistant:{icon:"\u{1F3B5}",label:"Music Assistant",recommended:!0},sonos:{icon:"\u{1F50A}",label:"Sonos"},alexa_media:{icon:"\u{1F4E2}",label:"Alexa"},alexa:{icon:"\u{1F4E2}",label:"Alexa"}},$e={decade:{label:"Decade",tags:["1960s","1970s","1980s","1990s","2000s"]},style:{label:"Style",tags:["rock","pop","ballads","electronic","eurodance","yacht-rock","soft-rock","pop-punk","schlager","party","britpop","british-invasion","classic-rock","dance","disco","funk","hip-hop","latin","merengue","motown","r&b","salsa","soul"]},region:{label:"Region",tags:["international","german","dutch","spanish"]},special:{label:"Special",tags:["movies","soundtrack","eurovision","carnival","classics","contest","mixed","one-hit","top-hits"]}};function gt(e,t){let a={playerAdopted:null,settingsSeeded:!1};if(!e||typeof e!="object"||!t)return a;try{let n=e.last_player||null;n&&t.getItem(M)!==n&&(t.setItem(M,n),a.playerAdopted=n),e.game_settings&&!t.getItem(x)&&(t.setItem(x,JSON.stringify(e.game_settings)),a.settingsSeeded=!0)}catch{}return a}function bt(e,t){if(!e)return"\u{1F50A} no speaker";let a=(t||[]).find(n=>n&&n.entity_id===e);return`\u{1F50A} ${a&&a.friendly_name||e}`}var ht=[];function q(e,t){ht.push({modalId:e,close:t})}function vn(e=document){for(let t=ht.length-1;t>=0;t--){let a=ht[t],n=e.getElementById(a.modalId);if(n&&!n.classList.contains("hidden"))return a.close(),!0}return!1}function Xt(e=document){e.addEventListener("keydown",function(t){t.key==="Escape"&&vn(e)})}function Zt(e){e=e||{};let t=e.doc||document,a=e.setTimeout||setTimeout,n=e.clearTimeout||clearTimeout,i=Object.create(null);function s(c,u){c.forEach(function(m){let f=t.getElementById(m);f&&(f.disabled=u)})}function o(c){let u=i[c];u&&(n(u.timer),s(u.buttonIds,!1),delete i[c])}function l(){Object.keys(i).forEach(o)}function d(c,u,m,f){return i[c]||!m()?!1:(s(u,!0),i[c]={buttonIds:u,timer:a(function(){o(c)},f)},!0)}return{run:d,release:o,releaseAll:l,_activeKeys:function(){return Object.keys(i)}}}var ea="beatify-toast-container",wn=4e3;function ta(e,t){try{if(window.BeatifyI18n&&typeof window.BeatifyI18n.t=="function"){var a=window.BeatifyI18n.t(e);if(a&&a!==e)return a}}catch{}return t}function En(){var e=document.getElementById(ea);return e||(e=document.createElement("div"),e.id=ea,e.className="beatify-toast-container",e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","false"),document.body.appendChild(e)),e}function le(e,t){if(t=t||{},!e)return null;var a=En(),n=typeof t.duration=="number"?t.duration:wn,i=t.type||"error",s=document.createElement("div");s.className="beatify-toast beatify-toast--"+i,s.setAttribute("role","status");var o=document.createElement("div");if(o.className="beatify-toast-body",t.icon!==null){var l=document.createElement("span");l.className="beatify-toast-icon",l.setAttribute("aria-hidden","true"),l.textContent=t.icon||(i==="success"?"\u2705":i==="info"?"\u2139\uFE0F":"\u26A0\uFE0F"),o.appendChild(l)}var d=document.createElement("span");d.className="beatify-toast-text",d.textContent=String(e),o.appendChild(d),s.appendChild(o);var c=document.createElement("button");if(c.type="button",c.className="beatify-toast-close",c.setAttribute("aria-label",ta("common.close","Dismiss")),c.textContent="\xD7",s.appendChild(c),n>0){var u=document.createElement("div");u.className="beatify-toast-progress",u.style.animationDuration=n+"ms",s.appendChild(u)}a.appendChild(s),typeof requestAnimationFrame=="function"?requestAnimationFrame(function(){s.classList.add("beatify-toast--in")}):s.classList.add("beatify-toast--in");var m=!1,f=null;function p(){m||(m=!0,f&&clearTimeout(f),s.classList.remove("beatify-toast--in"),s.classList.add("beatify-toast--leaving"),setTimeout(function(){s.parentNode&&s.parentNode.removeChild(s)},280))}return c.addEventListener("click",p),n>0&&(f=setTimeout(p,n)),s}function vt(e,t){if(t=t||{},!e)return null;var a=t.anchor;typeof a=="string"&&(a=document.getElementById(a));var n=t.parent;if(typeof n=="string"&&(n=document.getElementById(n)),n||(n=a?a.parentNode:null),!n)return null;var i=t.id||"beatify-banner",s=document.getElementById(i);s&&s.parentNode&&s.parentNode.removeChild(s);var o=document.createElement("div");o.id=i,o.className="beatify-banner beatify-banner--"+(t.type||"error"),o.setAttribute("role","alert");var l=document.createElement("span");l.className="beatify-banner-icon",l.setAttribute("aria-hidden","true"),l.textContent=t.icon||"\u26D4",o.appendChild(l);var d=document.createElement("div");if(d.className="beatify-banner-content",t.title){var c=document.createElement("div");c.className="beatify-banner-title",c.textContent=String(t.title),d.appendChild(c)}var u=document.createElement("div");if(u.className="beatify-banner-text",u.textContent=String(e),d.appendChild(u),t.detail&&String(t.detail)!==String(e)){var m=document.createElement("div");m.className="beatify-banner-detail",m.textContent=String(t.detail),d.appendChild(m)}if(t.action&&t.action.label&&typeof t.action.onClick=="function"){var f=document.createElement("button");f.type="button",f.className="beatify-banner-action",f.textContent=String(t.action.label),f.addEventListener("click",function(){o.parentNode&&o.parentNode.removeChild(o),t.action.onClick()}),d.appendChild(f)}if(o.appendChild(d),t.dismissible!==!1){var p=document.createElement("button");p.type="button",p.className="beatify-banner-close",p.setAttribute("aria-label",ta("common.close","Dismiss")),p.textContent="\xD7",p.addEventListener("click",function(){o.parentNode&&o.parentNode.removeChild(o)}),o.appendChild(p)}return a&&a.parentNode===n?n.insertBefore(o,a):n.appendChild(o),o}function wt(e){var t=document.getElementById(e||"beatify-banner");t&&t.parentNode&&t.parentNode.removeChild(t)}try{window.BeatifyNotify={showToast:le,showBanner:vt,clearBanner:wt}}catch{}var ia=()=>null;function ra(e){ia=typeof e=="function"?e:()=>null}function Re(){try{var e=ia()?.game_id;if(e){var t=localStorage.getItem("beatify_admin_token_"+e);if(t)return t}return localStorage.getItem("beatify_admin_token")}catch{return null}}function de(e,t){try{t&&localStorage.setItem("beatify_admin_token_"+t,e),localStorage.setItem("beatify_admin_token",e),sessionStorage.removeItem("beatify_admin_token")}catch{}}function Et(){var e=Re(),t={"Content-Type":"application/json"};return e&&(t.Authorization="Bearer "+e),t}function sa(e){let t={};return e.forEach(a=>{let n=a.platform||"unknown";t[n]||(t[n]=[]),t[n].push(a)}),t}function I(e,t){let a=typeof window<"u"&&window.BeatifyI18n;if(a&&typeof a.t=="function"){let n=a.t(e);if(typeof n=="string"&&n&&n!==e)return n}return t}var aa={pending:"\u23F3 Pending",ready:"\u2705 Ready",installed:"\u2713 Installed",declined:"\u274C Declined"},_n={pending:"admin.requestStatusPending",ready:"admin.requestStatusReady",installed:"admin.requestStatusInstalled",declined:"admin.requestStatusDeclined"};function oa(e){let t=_n[e.status],a=t?I(t,aa[e.status]):aa[e.status]||e.status,n=z(e.playlist_name||e.name||"Untitled request"),i=e.relative_time||"",s=e.status==="ready"&&e.update_available?`Update to v${z(e.release_version||"")}`:"";return` + `).join(""),e.querySelectorAll("[data-cd-pick]").forEach(t=>{t.addEventListener("click",()=>{let a=S.candidates[Number(t.dataset.cdPick)];a&&Qt({year:a.year,title:a.title,artist:a.artist})})})}async function Vt(){if(!S.busy){S.busy=!0,H(B("admin.library.fixSearching","Searching MusicBrainz\u2026"));try{let e=await Yt("/beatify/api/library-pool/lookup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({uri:S.uri,song_title:S.songTitle,song_artist:S.songArtist,artist:w.querySelector('[data-cd="artist"]').value,title:w.querySelector('[data-cd="title"]').value})}),t=await e.json().catch(()=>({}));if(!e.ok){H(t.error||B("admin.library.fixFailed","Lookup failed."),!0);return}S.current=t.current||S.current,S.candidates=t.candidates||[],Jt(),hn(),H("")}catch{H(B("admin.library.fixFailed","Lookup failed."),!0)}finally{S.busy=!1}}}async function Qt({year:e,title:t,artist:a}){if(S.busy)return;let n=w.querySelector('[data-cd="year"]').value,i={uri:S.uri,song_title:S.songTitle,song_artist:S.songArtist};if(e!=null?i.year=e:n!==""&&(i.year=Number(n)),t&&(i.title=t),a&&(i.artist=a),i.year==null&&!i.title&&!i.artist){H(B("admin.library.fixNothing","Pick a match or enter a year first."),!0);return}S.busy=!0,H(B("admin.library.fixSaving","Saving\u2026"));try{let s=await Yt("/beatify/api/library-pool/correct",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)}),o=await s.json().catch(()=>({}));if(!s.ok){H(o.error||B("admin.library.fixFailed","Could not save."),!0);return}H(B("admin.library.fixSaved","Saved \u2014 future games will use your correction.")),setTimeout(pt,1200)}catch{H(B("admin.library.fixFailed","Could not save."),!0)}finally{S.busy=!1}}function vn(e){if(!e||!e.uri&&!e.title)return;let t=bn();S={uri:e.uri||null,songTitle:e.title||"",songArtist:e.artist||"",current:e,candidates:[],busy:!1},t.querySelector('[data-cd="artist"]').value=e.artist||"",t.querySelector('[data-cd="title"]').value=e.title||"",t.querySelector('[data-cd="year"]').value="",t.querySelector('[data-cd="results"]').innerHTML="",Jt(),H(""),t.classList.remove("hidden"),Vt()}typeof window<"u"&&(window.BeatifyCrateDiggerFix={open:vn});var M="beatify_last_player",x="beatify_game_settings",Kt={music_assistant:{icon:"\u{1F3B5}",label:"Music Assistant",recommended:!0},sonos:{icon:"\u{1F50A}",label:"Sonos"},alexa_media:{icon:"\u{1F4E2}",label:"Alexa"},alexa:{icon:"\u{1F4E2}",label:"Alexa"}},$e={decade:{label:"Decade",tags:["1960s","1970s","1980s","1990s","2000s"]},style:{label:"Style",tags:["rock","pop","ballads","electronic","eurodance","yacht-rock","soft-rock","pop-punk","schlager","party","britpop","british-invasion","classic-rock","dance","disco","funk","hip-hop","latin","merengue","motown","r&b","salsa","soul"]},region:{label:"Region",tags:["international","german","dutch","spanish"]},special:{label:"Special",tags:["movies","soundtrack","eurovision","carnival","classics","contest","mixed","one-hit","top-hits"]}};function gt(e,t){let a={playerAdopted:null,settingsSeeded:!1};if(!e||typeof e!="object"||!t)return a;try{let n=e.last_player||null;n&&t.getItem(M)!==n&&(t.setItem(M,n),a.playerAdopted=n),e.game_settings&&!t.getItem(x)&&(t.setItem(x,JSON.stringify(e.game_settings)),a.settingsSeeded=!0)}catch{}return a}function bt(e,t){if(!e)return"\u{1F50A} no speaker";let a=(t||[]).find(n=>n&&n.entity_id===e);return`\u{1F50A} ${a&&a.friendly_name||e}`}var ht=[];function q(e,t){ht.push({modalId:e,close:t})}function wn(e=document){for(let t=ht.length-1;t>=0;t--){let a=ht[t],n=e.getElementById(a.modalId);if(n&&!n.classList.contains("hidden"))return a.close(),!0}return!1}function Xt(e=document){e.addEventListener("keydown",function(t){t.key==="Escape"&&wn(e)})}function Zt(e){e=e||{};let t=e.doc||document,a=e.setTimeout||setTimeout,n=e.clearTimeout||clearTimeout,i=Object.create(null);function s(c,u){c.forEach(function(m){let f=t.getElementById(m);f&&(f.disabled=u)})}function o(c){let u=i[c];u&&(n(u.timer),s(u.buttonIds,!1),delete i[c])}function l(){Object.keys(i).forEach(o)}function d(c,u,m,f){return i[c]||!m()?!1:(s(u,!0),i[c]={buttonIds:u,timer:a(function(){o(c)},f)},!0)}return{run:d,release:o,releaseAll:l,_activeKeys:function(){return Object.keys(i)}}}var ea="beatify-toast-container",En=4e3;function ta(e,t){try{if(window.BeatifyI18n&&typeof window.BeatifyI18n.t=="function"){var a=window.BeatifyI18n.t(e);if(a&&a!==e)return a}}catch{}return t}function _n(){var e=document.getElementById(ea);return e||(e=document.createElement("div"),e.id=ea,e.className="beatify-toast-container",e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","false"),document.body.appendChild(e)),e}function le(e,t){if(t=t||{},!e)return null;var a=_n(),n=typeof t.duration=="number"?t.duration:En,i=t.type||"error",s=document.createElement("div");s.className="beatify-toast beatify-toast--"+i,s.setAttribute("role","status");var o=document.createElement("div");if(o.className="beatify-toast-body",t.icon!==null){var l=document.createElement("span");l.className="beatify-toast-icon",l.setAttribute("aria-hidden","true"),l.textContent=t.icon||(i==="success"?"\u2705":i==="info"?"\u2139\uFE0F":"\u26A0\uFE0F"),o.appendChild(l)}var d=document.createElement("span");d.className="beatify-toast-text",d.textContent=String(e),o.appendChild(d),s.appendChild(o);var c=document.createElement("button");if(c.type="button",c.className="beatify-toast-close",c.setAttribute("aria-label",ta("common.close","Dismiss")),c.textContent="\xD7",s.appendChild(c),n>0){var u=document.createElement("div");u.className="beatify-toast-progress",u.style.animationDuration=n+"ms",s.appendChild(u)}a.appendChild(s),typeof requestAnimationFrame=="function"?requestAnimationFrame(function(){s.classList.add("beatify-toast--in")}):s.classList.add("beatify-toast--in");var m=!1,f=null;function p(){m||(m=!0,f&&clearTimeout(f),s.classList.remove("beatify-toast--in"),s.classList.add("beatify-toast--leaving"),setTimeout(function(){s.parentNode&&s.parentNode.removeChild(s)},280))}return c.addEventListener("click",p),n>0&&(f=setTimeout(p,n)),s}function vt(e,t){if(t=t||{},!e)return null;var a=t.anchor;typeof a=="string"&&(a=document.getElementById(a));var n=t.parent;if(typeof n=="string"&&(n=document.getElementById(n)),n||(n=a?a.parentNode:null),!n)return null;var i=t.id||"beatify-banner",s=document.getElementById(i);s&&s.parentNode&&s.parentNode.removeChild(s);var o=document.createElement("div");o.id=i,o.className="beatify-banner beatify-banner--"+(t.type||"error"),o.setAttribute("role","alert");var l=document.createElement("span");l.className="beatify-banner-icon",l.setAttribute("aria-hidden","true"),l.textContent=t.icon||"\u26D4",o.appendChild(l);var d=document.createElement("div");if(d.className="beatify-banner-content",t.title){var c=document.createElement("div");c.className="beatify-banner-title",c.textContent=String(t.title),d.appendChild(c)}var u=document.createElement("div");if(u.className="beatify-banner-text",u.textContent=String(e),d.appendChild(u),t.detail&&String(t.detail)!==String(e)){var m=document.createElement("div");m.className="beatify-banner-detail",m.textContent=String(t.detail),d.appendChild(m)}if(t.action&&t.action.label&&typeof t.action.onClick=="function"){var f=document.createElement("button");f.type="button",f.className="beatify-banner-action",f.textContent=String(t.action.label),f.addEventListener("click",function(){o.parentNode&&o.parentNode.removeChild(o),t.action.onClick()}),d.appendChild(f)}if(o.appendChild(d),t.dismissible!==!1){var p=document.createElement("button");p.type="button",p.className="beatify-banner-close",p.setAttribute("aria-label",ta("common.close","Dismiss")),p.textContent="\xD7",p.addEventListener("click",function(){o.parentNode&&o.parentNode.removeChild(o)}),o.appendChild(p)}return a&&a.parentNode===n?n.insertBefore(o,a):n.appendChild(o),o}function wt(e){var t=document.getElementById(e||"beatify-banner");t&&t.parentNode&&t.parentNode.removeChild(t)}try{window.BeatifyNotify={showToast:le,showBanner:vt,clearBanner:wt}}catch{}var ia=()=>null;function ra(e){ia=typeof e=="function"?e:()=>null}function Re(){try{var e=ia()?.game_id;if(e){var t=localStorage.getItem("beatify_admin_token_"+e);if(t)return t}return localStorage.getItem("beatify_admin_token")}catch{return null}}function de(e,t){try{t&&localStorage.setItem("beatify_admin_token_"+t,e),localStorage.setItem("beatify_admin_token",e),sessionStorage.removeItem("beatify_admin_token")}catch{}}function Et(){var e=Re(),t={"Content-Type":"application/json"};return e&&(t.Authorization="Bearer "+e),t}function sa(e){let t={};return e.forEach(a=>{let n=a.platform||"unknown";t[n]||(t[n]=[]),t[n].push(a)}),t}function I(e,t){let a=typeof window<"u"&&window.BeatifyI18n;if(a&&typeof a.t=="function"){let n=a.t(e);if(typeof n=="string"&&n&&n!==e)return n}return t}var aa={pending:"\u23F3 Pending",ready:"\u2705 Ready",installed:"\u2713 Installed",declined:"\u274C Declined"},Sn={pending:"admin.requestStatusPending",ready:"admin.requestStatusReady",installed:"admin.requestStatusInstalled",declined:"admin.requestStatusDeclined"};function oa(e){let t=Sn[e.status],a=t?I(t,aa[e.status]):aa[e.status]||e.status,n=z(e.playlist_name||e.name||"Untitled request"),i=e.relative_time||"",s=e.status==="ready"&&e.update_available?`Update to v${z(e.release_version||"")}`:"";return`
${e.thumbnail_url?``:'
\u{1F3B5}
'}
@@ -223,7 +223,7 @@ var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags: ${a} ${s}
- `}function we(e,t,a){var n=e||{},i=typeof n.message=="string"?n.message:"",s={message:i||a||"Failed to start game",detail:""};if(!n.code||typeof t!="function")return s;var o="errors."+String(n.code).toUpperCase(),l;try{l=t(o,n)}catch{return s}return!l||l===o||/\{[a-z_]+\}/i.test(l)||(s.message=l,i&&i!==l&&(s.detail=i)),s}function z(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function _t(e,t){return typeof e=="function"&&e(),typeof t=="function"?t():void 0}var Sn=15,Bn=60;function St(e){let t=typeof e=="string"&&e.trim()!==""?Number(e):e;if(typeof t!="number"||!Number.isFinite(t))return null;let a=Math.round(t);return aBn?null:a}function la(e){let t=e&&e.selectedDuration,a=e&&e.currentGame,n=a&&typeof a=="object"?a.round_duration:void 0;if(typeof n!="number"||!Number.isFinite(n))return`${t}s`;let i=Math.round(n);return typeof t!="number"||i===t?`${i}s`:`${i}s \u2192 ${t}s next`}function Bt(e){let t=e&&e.body;if(!t)return!1;let a=n=>{let i=e.getElementById(n);return!!i&&!i.classList.contains("hidden")};return t.classList.contains("wizard-active")&&a("wizard-root")||t.classList.contains("home-mode")&&a("home-view")?!0:["admin-playing-section","admin-reveal-section","admin-end-section"].some(a)}function da(e,t){if(!e||!t||typeof t!="object")return;t.language&&(e.selectedLanguage=t.language);let a=St(t.duration);a!==null&&(e.selectedDuration=a),typeof t.revealAutoAdvance=="number"&&(e.revealAutoAdvance=t.revealAutoAdvance),t.difficulty&&(e.selectedDifficulty=t.difficulty),t.provider&&(e.selectedProvider=t.provider),typeof t.artistChallenge=="boolean"&&(e.artistChallengeEnabled=t.artistChallenge),typeof t.movieQuiz=="boolean"&&(e.movieQuizEnabled=t.movieQuiz),typeof t.introMode=="boolean"&&(e.introModeEnabled=t.introMode),typeof t.closestWinsMode=="boolean"&&(e.closestWinsModeEnabled=t.closestWinsMode),typeof t.titleArtistMode=="boolean"&&(e.titleArtistModeEnabled=t.titleArtistMode),typeof t.rampupOrder=="boolean"&&(e.rampupOrderEnabled=t.rampupOrder),typeof t.finaleDouble=="boolean"&&(e.finaleDoubleEnabled=t.finaleDouble),typeof t.finaleTiebreaker=="boolean"&&(e.finaleTiebreakerEnabled=t.finaleTiebreaker),typeof t.comebackToken=="boolean"&&(e.comebackTokenEnabled=t.comebackToken)}var Ne=["deadline","reveal_started_at"];function na(e){if(!e||typeof e!="object")return e;let t=!1;for(let n=0;n{},getCurrentGame:()=>null,getCurrentView:()=>null,setIsPlaying:()=>{},setAdminPlayerName:()=>{},setAdminSessionId:()=>{},getAdminPlayerName:()=>null,handleAdminStateUpdate:()=>{},startLobbyPolling:()=>{},stopLobbyPolling:()=>{},showError:()=>{},showSpeakerSetupError:()=>{},resetHomeStartButton:()=>{}};function ma(e){v={...v,...e||{}}}var _=null,Z=0,qe=!1,Ee=0,Lt=!1,De=!1;function P(){return!!_&&_.readyState===WebSocket.OPEN}function ce(e){return P()?(e&&e.action==="start_game"&&(De=!0),_.send(JSON.stringify(e)),!0):!1}function fa(){_&&(_.close(),_=null)}function ya(){Z=0}async function G(){if(!Lt&&!(_&&(_.readyState===WebSocket.OPEN||_.readyState===WebSocket.CONNECTING))){Lt=!0;try{var e=await BeatifyAuth.getAccessToken();if(!e&&!BeatifyAuth.isCompanionBypassMode()||_&&(_.readyState===WebSocket.OPEN||_.readyState===WebSocket.CONNECTING))return;var t=kn(window.location);try{_=new WebSocket(t)}catch(n){console.error("[Admin WS] Failed to create WebSocket:",n);return}var a=_;a.onopen=function(){a===_&&(v.debug("[Admin WS] Connected, sending admin_connect (token: len="+(e?e.length:0)+", prefix="+(e?e.slice(0,12):"null")+", recoveryAttempt="+Ee+"/"+He+")"),Z=0,a.send(JSON.stringify({type:"admin_connect",ha_token:e})))},a.onmessage=function(n){if(a===_)try{var i=JSON.parse(n.data);An(i)}catch(s){console.warn("[Admin WS] Skipping malformed message:",s,"| raw:",typeof n.data=="string"?n.data.slice(0,200):n.data);try{v.showError(BeatifyI18n.t("admin.connectionDisrupted")||"Connection disrupted \u2014 please reload the page.")}catch{}}},a.onclose=function(){if(a===_&&(v.debug("[Admin WS] Disconnected"),_=null,v.getCurrentView()==="lobby"&&v.startLobbyPolling(),!qe&&Z=He){if(BeatifyAuth.isCompanionBypassMode()){console.warn("[Admin WS] Auth recovery exhausted in Companion bypass mode \u2014 Beatify was reached over a non-local address; OAuth re-login would hit the Invalid-redirect-URI screen. Surfacing local-network hint.");var n=window.BeatifyI18n&&BeatifyI18n.t("admin.companionLocalNetworkRequired")||"Beatify admin requires local network access from the Companion app \u2014 open Beatify in an external browser, or connect to your home Wi-Fi.";try{v.showError(n)}catch{}break}console.warn("[Admin WS] Auth recovery exhausted after "+He+" attempts; HA rejected every bridge-supplied token. Forcing re-login.");var i=window.BeatifyI18n&&BeatifyI18n.t("admin.wsAuthFailed")||"Home Assistant rejected the access token. Re-authenticating\u2026";try{v.showError(i)}catch{}BeatifyAuth.logout(),BeatifyAuth.login();break}qe=!0,Ee++,console.warn("[Admin WS] UNAUTHORIZED \u2014 recovery attempt "+Ee+"/"+He+" (server message: "+(e.message||"")+")");var s=_;_=null;try{s?.close()}catch{}BeatifyAuth.handleServerRejection().then(function(l){qe=!1,l&&(Z=0,G())})}else if(e.code==="NAME_TAKEN"||e.code==="NAME_INVALID"){v.showError(e.message),v.setIsPlaying(!1),v.setAdminPlayerName(null);var o=document.getElementById("admin-join-btn");o&&(o.disabled=!1,o.textContent=window.BeatifyI18n&&BeatifyI18n.t("admin.join")||"Join")}else De?(De=!1,v.resetHomeStartButton(),e.code==="MEDIA_PLAYER_UNAVAILABLE"?v.showSpeakerSetupError(e.message):v.showError(e.message)):console.warn("[Admin WS] Command error:",e.code,e.message);break;default:break}}function ee(e){return P()?(_.send(JSON.stringify(e)),!0):(v.showError(BeatifyI18n.t("admin.connectionLost")||"Connection lost \u2014 reconnecting..."),Z=0,G(),!1)}function je(e){let t=typeof window<"u"?window:globalThis,a=t&&t.BeatifyUtils;return a&&typeof a.escapeHtml=="function"?a.escapeHtml(e):e==null?"":String(e)}function Oe(e,t){let a=typeof window<"u"?window:globalThis,n=a&&a.BeatifyI18n;return n&&typeof n.t=="function"?n.t(e,t):e}function pa(e){var t=document.getElementById("admin-submitted-players");!t||!e||(t.innerHTML=e.map(function(a){var n=(a.name||"?").split(/\s+/).map(function(l){return l[0]}).join("").substring(0,2).toUpperCase(),i=["player-indicator",!a.eliminated&&a.submitted?"is-submitted":"",a.eliminated?"is-eliminated":"",a.connected===!1?"player-indicator--disconnected":""].filter(Boolean).join(" "),s="";!a.eliminated&&a.steal_used&&(s+='\u{1F977}'),!a.eliminated&&a.bet&&(s+='\u{1F3B2}');var o=a.eliminated?'\u{1F480}':''+je(n)+"";return'
'+s+'
'+o+'
'+je(a.name)+"
"}).join(""))}function Fe(e,t){var a=t?[t]:["admin-playing-leaderboard-list","admin-reveal-leaderboard"];if(e){var n="";e.forEach(function(i){var s=i.rank<=3?"is-top-"+i.rank:"",o=i.connected===!1?"leaderboard-entry--disconnected":"",l=i.eliminated?"is-eliminated":"",d=i.eliminated?"\u{1F480} ":"",c=i.connected===!1?'(away)':"",u="";if(i.streak>=2){var m=i.streak>=5?"streak-indicator--hot":"";u='\u{1F525}'+i.streak+""}var f="";i.rank_change>0?f='\u25B2'+i.rank_change+"":i.rank_change<0&&(f='\u25BC'+Math.abs(i.rank_change)+""),n+='
#'+i.rank+''+d+je(i.name)+c+''+i.score+"
"}),a.forEach(function(i){var s=document.getElementById(i);s&&(s.innerHTML=n)}),e.length>0&&["admin-playing-leaderboard-summary","admin-reveal-leaderboard-summary"].forEach(function(i){var s=document.getElementById(i);s&&(s.textContent=e[0].name+" \u2014 "+e[0].score)})}}function ga(e,t,a){var n=document.getElementById("admin-reveal-guesses");if(n){if(!e||e.length===0){n.innerHTML="";return}var i=null;t&&e.forEach(function(l){!l.missed_round&&l.years_off!=null&&(i===null||l.years_off';s.forEach(function(l){var d=l.missed_round===!0,c=l.years_off||0,u=l.round_score||0,m=d?"is-score-zero":u>=10?"is-score-high":u>=1?"is-score-medium":"is-score-zero",f=t&&!d&&i!==null&&c===i,p=f?" is-closest-winner":"",y=d?"\u2014":l.guess||"n/a",b=d?Oe("reveal.noGuessShort")||"Missed":c===0?Oe("reveal.exact")||"Exact!":Oe("reveal.shortOff",{years:c})||c+" off",h=l.bet?'\u{1F3B2}':"",k=f?'\u{1F3AF}':"",Y=l.artist_bonus>0?'\u{1F3A4} +'+l.artist_bonus+"":"";o+='
'+je(l.name)+h+k+'
'+y+'
'+b+'
+'+u+Y+"
"}),o+="
",n.innerHTML=o}}function ba(e){if(!e)return"";var t={spotify:"admin.pauseRecovery.providerSpotify",apple_music:"admin.pauseRecovery.providerAppleMusic",youtube_music:"admin.pauseRecovery.providerYouTubeMusic",tidal:"admin.pauseRecovery.providerTidal",deezer:"admin.pauseRecovery.providerDeezer"},a={spotify:"Spotify",apple_music:"Apple Music",youtube_music:"YouTube Music",tidal:"Tidal",deezer:"Deezer"},n=t[e];return n&&(Oe(n)||a[e])||""}var Cn=()=>window.BeatifyUtils||{},It=[{id:"carnival",filename:"koelner-karneval.json",emoji:"\u{1F3AD}",start:"01-20",end:"02-20",reasonKey:"admin.seasonalReasonCarnival",reason:"Carnival season is here \u2014 K\xF6lsche hits for Weiberfastnacht & Rosenmontag."},{id:"eurovision",filename:"eurovision-winners.json",emoji:"\u{1F3A4}",start:"04-25",end:"05-20",reasonKey:"admin.seasonalReasonEurovision",reason:"Eurovision time \u2014 play the winners from 1956 to today."},{id:"worldcup",filename:"world-cup-anthems.json",emoji:"\u26BD",start:"06-11",end:"07-19",reasonKey:"admin.seasonalReasonWorldCup",reason:"World Cup fever \u2014 anthems for every match-day party."},{id:"summer",filename:"summer-party-anthems.json",emoji:"\u2600\uFE0F",start:"06-01",end:"08-31",reasonKey:"admin.seasonalReasonSummer",reason:"Summer is on \u2014 100 anthems for the garden party."}];function ha(e){let t=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${t}-${a}`}function Tn(e,t,a){return t<=a?e>=t&&e<=a:e>=t||e<=a}function Pn(e,t){let a=t.getFullYear(),n=ha(t);return e.start>e.end&&n<=e.end?String(a-1):String(a)}function va(e,t){return`beatify_seasonal_dismissed_${e.id}_${Pn(e,t)}`}function Mn(e,t){try{return localStorage.getItem(va(e,t))==="1"}catch{return!1}}function wa(e,t){try{localStorage.setItem(va(e,t),"1")}catch{}}function Ea(e,t=new Date){if(!Array.isArray(e)||e.length===0)return null;let a=ha(t);for(let n of It){if(!Tn(a,n.start,n.end)||Mn(n,t))continue;let i=e.find(s=>s&&s.filename===n.filename&&s.is_valid);if(i&&!r.selectedPlaylists.some(s=>s.path===i.path))return{occasion:n,playlist:i}}return null}function kt(e,t=new Date){let a=Ea(e,t);if(!a)return"";let{occasion:n,playlist:i}=a,s=Cn().escapeHtml||(c=>c),o=I("admin.seasonalBadge","Suggestion of the season"),l=I("admin.seasonalDismiss","Dismiss seasonal suggestion"),d=I("admin.seasonalAdd","Add");return` + `}function we(e,t,a){var n=e||{},i=typeof n.message=="string"?n.message:"",s={message:i||a||"Failed to start game",detail:""};if(!n.code||typeof t!="function")return s;var o="errors."+String(n.code).toUpperCase(),l;try{l=t(o,n)}catch{return s}return!l||l===o||/\{[a-z_]+\}/i.test(l)||(s.message=l,i&&i!==l&&(s.detail=i)),s}function z(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function _t(e,t){return typeof e=="function"&&e(),typeof t=="function"?t():void 0}var Bn=15,Ln=60;function St(e){let t=typeof e=="string"&&e.trim()!==""?Number(e):e;if(typeof t!="number"||!Number.isFinite(t))return null;let a=Math.round(t);return aLn?null:a}function la(e){let t=e&&e.selectedDuration,a=e&&e.currentGame,n=a&&typeof a=="object"?a.round_duration:void 0;if(typeof n!="number"||!Number.isFinite(n))return`${t}s`;let i=Math.round(n);return typeof t!="number"||i===t?`${i}s`:`${i}s \u2192 ${t}s next`}function Bt(e){let t=e&&e.body;if(!t)return!1;let a=n=>{let i=e.getElementById(n);return!!i&&!i.classList.contains("hidden")};return t.classList.contains("wizard-active")&&a("wizard-root")||t.classList.contains("home-mode")&&a("home-view")?!0:["admin-playing-section","admin-reveal-section","admin-end-section"].some(a)}function da(e,t){if(!e||!t||typeof t!="object")return;t.language&&(e.selectedLanguage=t.language);let a=St(t.duration);a!==null&&(e.selectedDuration=a),typeof t.revealAutoAdvance=="number"&&(e.revealAutoAdvance=t.revealAutoAdvance),t.difficulty&&(e.selectedDifficulty=t.difficulty),t.provider&&(e.selectedProvider=t.provider),typeof t.artistChallenge=="boolean"&&(e.artistChallengeEnabled=t.artistChallenge),typeof t.movieQuiz=="boolean"&&(e.movieQuizEnabled=t.movieQuiz),typeof t.introMode=="boolean"&&(e.introModeEnabled=t.introMode),typeof t.closestWinsMode=="boolean"&&(e.closestWinsModeEnabled=t.closestWinsMode),typeof t.titleArtistMode=="boolean"&&(e.titleArtistModeEnabled=t.titleArtistMode),typeof t.rampupOrder=="boolean"&&(e.rampupOrderEnabled=t.rampupOrder),typeof t.finaleDouble=="boolean"&&(e.finaleDoubleEnabled=t.finaleDouble),typeof t.finaleTiebreaker=="boolean"&&(e.finaleTiebreakerEnabled=t.finaleTiebreaker),typeof t.comebackToken=="boolean"&&(e.comebackTokenEnabled=t.comebackToken)}var Ne=["deadline","reveal_started_at"];function na(e){if(!e||typeof e!="object")return e;let t=!1;for(let n=0;n{},getCurrentGame:()=>null,getCurrentView:()=>null,setIsPlaying:()=>{},setAdminPlayerName:()=>{},setAdminSessionId:()=>{},getAdminPlayerName:()=>null,handleAdminStateUpdate:()=>{},startLobbyPolling:()=>{},stopLobbyPolling:()=>{},showError:()=>{},showSpeakerSetupError:()=>{},resetHomeStartButton:()=>{}};function fa(e){v={...v,...e||{}}}var _=null,Z=0,qe=!1,Ee=0,Lt=!1,De=!1;function P(){return!!_&&_.readyState===WebSocket.OPEN}function ce(e){return P()?(e&&e.action==="start_game"&&(De=!0),_.send(JSON.stringify(e)),!0):!1}function ya(){_&&(_.close(),_=null)}function pa(){Z=0}async function G(){if(!Lt&&!(_&&(_.readyState===WebSocket.OPEN||_.readyState===WebSocket.CONNECTING))){Lt=!0;try{var e=await BeatifyAuth.getAccessToken();if(!e&&!BeatifyAuth.isCompanionBypassMode()||_&&(_.readyState===WebSocket.OPEN||_.readyState===WebSocket.CONNECTING))return;var t=xn(window.location);try{_=new WebSocket(t)}catch(n){console.error("[Admin WS] Failed to create WebSocket:",n);return}var a=_;a.onopen=function(){a===_&&(v.debug("[Admin WS] Connected, sending admin_connect (token: len="+(e?e.length:0)+", prefix="+(e?e.slice(0,12):"null")+", recoveryAttempt="+Ee+"/"+He+")"),Z=0,a.send(JSON.stringify({type:"admin_connect",ha_token:e})))},a.onmessage=function(n){if(a===_)try{var i=JSON.parse(n.data);Cn(i)}catch(s){console.warn("[Admin WS] Skipping malformed message:",s,"| raw:",typeof n.data=="string"?n.data.slice(0,200):n.data);try{v.showError(BeatifyI18n.t("admin.connectionDisrupted")||"Connection disrupted \u2014 please reload the page.")}catch{}}},a.onclose=function(){if(a===_&&(v.debug("[Admin WS] Disconnected"),_=null,v.getCurrentView()==="lobby"&&v.startLobbyPolling(),!qe&&Z=He){if(BeatifyAuth.isCompanionBypassMode()){console.warn("[Admin WS] Auth recovery exhausted in Companion bypass mode \u2014 Beatify was reached over a non-local address; OAuth re-login would hit the Invalid-redirect-URI screen. Surfacing local-network hint.");var n=window.BeatifyI18n&&BeatifyI18n.t("admin.companionLocalNetworkRequired")||"Beatify admin requires local network access from the Companion app \u2014 open Beatify in an external browser, or connect to your home Wi-Fi.";try{v.showError(n)}catch{}break}console.warn("[Admin WS] Auth recovery exhausted after "+He+" attempts; HA rejected every bridge-supplied token. Forcing re-login.");var i=window.BeatifyI18n&&BeatifyI18n.t("admin.wsAuthFailed")||"Home Assistant rejected the access token. Re-authenticating\u2026";try{v.showError(i)}catch{}BeatifyAuth.logout(),BeatifyAuth.login();break}qe=!0,Ee++,console.warn("[Admin WS] UNAUTHORIZED \u2014 recovery attempt "+Ee+"/"+He+" (server message: "+(e.message||"")+")");var s=_;_=null;try{s?.close()}catch{}BeatifyAuth.handleServerRejection().then(function(l){qe=!1,l&&(Z=0,G())})}else if(e.code==="NAME_TAKEN"||e.code==="NAME_INVALID"){v.showError(e.message),v.setIsPlaying(!1),v.setAdminPlayerName(null);var o=document.getElementById("admin-join-btn");o&&(o.disabled=!1,o.textContent=window.BeatifyI18n&&BeatifyI18n.t("admin.join")||"Join")}else De?(De=!1,v.resetHomeStartButton(),e.code==="MEDIA_PLAYER_UNAVAILABLE"?v.showSpeakerSetupError(e.message):v.showError(e.message)):console.warn("[Admin WS] Command error:",e.code,e.message);break;default:break}}function ee(e){return P()?(_.send(JSON.stringify(e)),!0):(v.showError(BeatifyI18n.t("admin.connectionLost")||"Connection lost \u2014 reconnecting..."),Z=0,G(),!1)}function Fe(e){let t=typeof window<"u"?window:globalThis,a=t&&t.BeatifyUtils;return a&&typeof a.escapeHtml=="function"?a.escapeHtml(e):e==null?"":String(e)}function Oe(e,t){let a=typeof window<"u"?window:globalThis,n=a&&a.BeatifyI18n;return n&&typeof n.t=="function"?n.t(e,t):e}function ga(e){var t=document.getElementById("admin-submitted-players");!t||!e||(t.innerHTML=e.map(function(a){var n=(a.name||"?").split(/\s+/).map(function(l){return l[0]}).join("").substring(0,2).toUpperCase(),i=["player-indicator",!a.eliminated&&a.submitted?"is-submitted":"",a.eliminated?"is-eliminated":"",a.connected===!1?"player-indicator--disconnected":""].filter(Boolean).join(" "),s="";!a.eliminated&&a.steal_used&&(s+='\u{1F977}'),!a.eliminated&&a.bet&&(s+='\u{1F3B2}');var o=a.eliminated?'\u{1F480}':''+Fe(n)+"";return'
'+s+'
'+o+'
'+Fe(a.name)+"
"}).join(""))}function je(e,t){var a=t?[t]:["admin-playing-leaderboard-list","admin-reveal-leaderboard"];if(e){var n="";e.forEach(function(i){var s=i.rank<=3?"is-top-"+i.rank:"",o=i.connected===!1?"leaderboard-entry--disconnected":"",l=i.eliminated?"is-eliminated":"",d=i.eliminated?"\u{1F480} ":"",c=i.connected===!1?'(away)':"",u="";if(i.streak>=2){var m=i.streak>=5?"streak-indicator--hot":"";u='\u{1F525}'+i.streak+""}var f="";i.rank_change>0?f='\u25B2'+i.rank_change+"":i.rank_change<0&&(f='\u25BC'+Math.abs(i.rank_change)+""),n+='
#'+i.rank+''+d+Fe(i.name)+c+''+i.score+"
"}),a.forEach(function(i){var s=document.getElementById(i);s&&(s.innerHTML=n)}),e.length>0&&["admin-playing-leaderboard-summary","admin-reveal-leaderboard-summary"].forEach(function(i){var s=document.getElementById(i);s&&(s.textContent=e[0].name+" \u2014 "+e[0].score)})}}function ba(e,t,a){var n=document.getElementById("admin-reveal-guesses");if(n){if(!e||e.length===0){n.innerHTML="";return}var i=null;t&&e.forEach(function(l){!l.missed_round&&l.years_off!=null&&(i===null||l.years_off';s.forEach(function(l){var d=l.missed_round===!0,c=l.years_off||0,u=l.round_score||0,m=d?"is-score-zero":u>=10?"is-score-high":u>=1?"is-score-medium":"is-score-zero",f=t&&!d&&i!==null&&c===i,p=f?" is-closest-winner":"",y=d?"\u2014":l.guess||"n/a",b=d?Oe("reveal.noGuessShort")||"Missed":c===0?Oe("reveal.exact")||"Exact!":Oe("reveal.shortOff",{years:c})||c+" off",h=l.bet?'\u{1F3B2}':"",k=f?'\u{1F3AF}':"",Y=l.artist_bonus>0?'\u{1F3A4} +'+l.artist_bonus+"":"";o+='
'+Fe(l.name)+h+k+'
'+y+'
'+b+'
+'+u+Y+"
"}),o+="",n.innerHTML=o}}function ha(e){if(!e)return"";var t={spotify:"admin.pauseRecovery.providerSpotify",apple_music:"admin.pauseRecovery.providerAppleMusic",youtube_music:"admin.pauseRecovery.providerYouTubeMusic",tidal:"admin.pauseRecovery.providerTidal",deezer:"admin.pauseRecovery.providerDeezer"},a={spotify:"Spotify",apple_music:"Apple Music",youtube_music:"YouTube Music",tidal:"Tidal",deezer:"Deezer"},n=t[e];return n&&(Oe(n)||a[e])||""}var Tn=()=>window.BeatifyUtils||{},It=[{id:"carnival",filename:"koelner-karneval.json",emoji:"\u{1F3AD}",start:"01-20",end:"02-20",reasonKey:"admin.seasonalReasonCarnival",reason:"Carnival season is here \u2014 K\xF6lsche hits for Weiberfastnacht & Rosenmontag."},{id:"eurovision",filename:"eurovision-winners.json",emoji:"\u{1F3A4}",start:"04-25",end:"05-20",reasonKey:"admin.seasonalReasonEurovision",reason:"Eurovision time \u2014 play the winners from 1956 to today."},{id:"worldcup",filename:"world-cup-anthems.json",emoji:"\u26BD",start:"06-11",end:"07-19",reasonKey:"admin.seasonalReasonWorldCup",reason:"World Cup fever \u2014 anthems for every match-day party."},{id:"summer",filename:"summer-party-anthems.json",emoji:"\u2600\uFE0F",start:"06-01",end:"08-31",reasonKey:"admin.seasonalReasonSummer",reason:"Summer is on \u2014 100 anthems for the garden party."}];function va(e){let t=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${t}-${a}`}function Pn(e,t,a){return t<=a?e>=t&&e<=a:e>=t||e<=a}function Mn(e,t){let a=t.getFullYear(),n=va(t);return e.start>e.end&&n<=e.end?String(a-1):String(a)}function wa(e,t){return`beatify_seasonal_dismissed_${e.id}_${Mn(e,t)}`}function $n(e,t){try{return localStorage.getItem(wa(e,t))==="1"}catch{return!1}}function Ea(e,t){try{localStorage.setItem(wa(e,t),"1")}catch{}}function _a(e,t=new Date){if(!Array.isArray(e)||e.length===0)return null;let a=va(t);for(let n of It){if(!Pn(a,n.start,n.end)||$n(n,t))continue;let i=e.find(s=>s&&s.filename===n.filename&&s.is_valid);if(i&&!r.selectedPlaylists.some(s=>s.path===i.path))return{occasion:n,playlist:i}}return null}function kt(e,t=new Date){let a=_a(e,t);if(!a)return"";let{occasion:n,playlist:i}=a,s=Tn().escapeHtml||(c=>c),o=I("admin.seasonalBadge","Suggestion of the season"),l=I("admin.seasonalDismiss","Dismiss seasonal suggestion"),d=I("admin.seasonalAdd","Add");return`
${s(n.emoji)} ${s(o)}
@@ -233,7 +233,7 @@ var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags:
${s(I(n.reasonKey,n.reason))}
- `}function _a(e,t,a=new Date){let n=e?.querySelector(".seasonal-suggestion");if(!n)return;let i=n.dataset.occasion,s=It.find(c=>c.id===i),o=n.dataset.playlistPath;n.querySelector(".seasonal-suggestion__add")?.addEventListener("click",()=>{let c=e.querySelector(`.playlist-checkbox[data-path="${CSS.escape(o)}"]`);c&&!c.disabled&&(c.checked=!0,t(c),c.closest(".playlist-item")?.classList.add("is-selected")),n.remove()}),n.querySelector(".seasonal-suggestion__dismiss")?.addEventListener("click",()=>{s&&wa(s,a),n.remove()})}function $n(e,t,a=new Date){let n=e?.querySelector(".seasonal-suggestion");if(!n)return;let i=n.dataset.occasion,s=It.find(c=>c.id===i),o=n.dataset.playlistPath;n.querySelector(".seasonal-suggestion__add")?.addEventListener("click",()=>{o&&typeof t=="function"&&t(o),n.remove()}),n.querySelector(".seasonal-suggestion__dismiss")?.addEventListener("click",()=>{s&&wa(s,a),n.remove()})}typeof window<"u"&&(window.BeatifySeasonal={pickSeasonalSuggestion:Ea,seasonalSuggestionHtml:kt,wireSeasonalSuggestionHub:$n});var D=window.BeatifyUtils||{};function Sa(e,t){let a=e.song_count||0;switch(t){case"spotify":return e.spotify_count||a;case"apple_music":return e.apple_music_count||0;case"youtube_music":return e.youtube_music_count||0;case"tidal":return e.tidal_count||0;case"deezer":return e.deezer_count||0;case"amazon_music":return e.amazon_music_count||a;default:return a}}function Nn(e){let t=r.selectedProvider,a=n=>{let i=r.playlistData.find(o=>o&&o.path===n);if(!i||!i.is_valid)return;let s=Sa(i,t);s>0&&!r.selectedPlaylists.some(o=>o.path===n)&&r.selectedPlaylists.push({path:n,songCount:s})};if(e.forEach(n=>a(n.path)),r.selectedPlaylists.length===0)try{let n=localStorage.getItem(x),i=n?JSON.parse(n):null;(Array.isArray(i?.selectedPlaylists)?i.selectedPlaylists.map(o=>typeof o=="string"?o:o.path).filter(Boolean):[]).forEach(o=>a(o))}catch(n){console.warn("[Beatify] restore saved playlists failed:",n)}}function ue(e,t,a=!1){let n=document.getElementById("playlists-list");n?.removeAttribute("data-i18n"),n?.removeAttribute("aria-busy"),n?.classList.remove("skeleton-list");let i=a?[...r.selectedPlaylists]:[];if(r.selectedPlaylists=[],r.playlistData=e||[],!n){Nn(i),At(),Q();return}Rn(r.playlistData);let s=r.playlistData;!r.activeFilterTags.includes("all")&&r.activeFilterTags.length>0&&(s=r.playlistData.filter(d=>{let c=d.tags||[];return r.activeFilterTags.every(u=>c.includes(u))}));let o=r.playlistData.some(d=>d.is_valid);if(!r.playlistData||r.playlistData.length===0){let d=r.playlistDocsUrl?`${I("admin.howToCreatePlaylists","How to create playlists")}`:"";n.innerHTML=` + `}function Sa(e,t,a=new Date){let n=e?.querySelector(".seasonal-suggestion");if(!n)return;let i=n.dataset.occasion,s=It.find(c=>c.id===i),o=n.dataset.playlistPath;n.querySelector(".seasonal-suggestion__add")?.addEventListener("click",()=>{let c=e.querySelector(`.playlist-checkbox[data-path="${CSS.escape(o)}"]`);c&&!c.disabled&&(c.checked=!0,t(c),c.closest(".playlist-item")?.classList.add("is-selected")),n.remove()}),n.querySelector(".seasonal-suggestion__dismiss")?.addEventListener("click",()=>{s&&Ea(s,a),n.remove()})}function Nn(e,t,a=new Date){let n=e?.querySelector(".seasonal-suggestion");if(!n)return;let i=n.dataset.occasion,s=It.find(c=>c.id===i),o=n.dataset.playlistPath;n.querySelector(".seasonal-suggestion__add")?.addEventListener("click",()=>{o&&typeof t=="function"&&t(o),n.remove()}),n.querySelector(".seasonal-suggestion__dismiss")?.addEventListener("click",()=>{s&&Ea(s,a),n.remove()})}typeof window<"u"&&(window.BeatifySeasonal={pickSeasonalSuggestion:_a,seasonalSuggestionHtml:kt,wireSeasonalSuggestionHub:Nn});var D=window.BeatifyUtils||{};function Ba(e,t){let a=e.song_count||0;switch(t){case"spotify":return e.spotify_count||a;case"apple_music":return e.apple_music_count||0;case"youtube_music":return e.youtube_music_count||0;case"tidal":return e.tidal_count||0;case"deezer":return e.deezer_count||0;case"amazon_music":return e.amazon_music_count||a;default:return a}}function Rn(e){let t=r.selectedProvider,a=n=>{let i=r.playlistData.find(o=>o&&o.path===n);if(!i||!i.is_valid)return;let s=Ba(i,t);s>0&&!r.selectedPlaylists.some(o=>o.path===n)&&r.selectedPlaylists.push({path:n,songCount:s})};if(e.forEach(n=>a(n.path)),r.selectedPlaylists.length===0)try{let n=localStorage.getItem(x),i=n?JSON.parse(n):null;(Array.isArray(i?.selectedPlaylists)?i.selectedPlaylists.map(o=>typeof o=="string"?o:o.path).filter(Boolean):[]).forEach(o=>a(o))}catch(n){console.warn("[Beatify] restore saved playlists failed:",n)}}function ue(e,t,a=!1){let n=document.getElementById("playlists-list");n?.removeAttribute("data-i18n"),n?.removeAttribute("aria-busy"),n?.classList.remove("skeleton-list");let i=a?[...r.selectedPlaylists]:[];if(r.selectedPlaylists=[],r.playlistData=e||[],!n){Rn(i),At(),Q();return}Hn(r.playlistData);let s=r.playlistData;!r.activeFilterTags.includes("all")&&r.activeFilterTags.length>0&&(s=r.playlistData.filter(d=>{let c=d.tags||[];return r.activeFilterTags.every(u=>c.includes(u))}));let o=r.playlistData.some(d=>d.is_valid);if(!r.playlistData||r.playlistData.length===0){let d=r.playlistDocsUrl?`${I("admin.howToCreatePlaylists","How to create playlists")}`:"";n.innerHTML=`

${I("admin.noPlaylistsFoundHint","No playlists found. Add playlist JSON files to:")}

${D.escapeHtml(t)}

@@ -244,7 +244,7 @@ var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags:

${I("admin.noPlaylistsMatchFilter","No playlists match the selected filter.")}

- `;return}let l=kt(s);if(n.innerHTML=l+s.map(d=>{if(d.is_valid){let c=d.song_count||0,u=Sa(d,r.selectedProvider),m=u===0,f=m?"is-disabled":"",p=m?"disabled":"",y="";return u${u}/${c}`),` + `;return}let l=kt(s);if(n.innerHTML=l+s.map(d=>{if(d.is_valid){let c=d.song_count||0,u=Ba(d,r.selectedProvider),m=u===0,f=m?"is-disabled":"",p=m?"disabled":"",y="";return u${u}/${c}`),`
@@ -264,7 +264,7 @@ var r={selectedPlaylists:[],playlistData:[],playlistDocsUrl:"",activeFilterTags: ${D.escapeHtml(d.name)} Invalid: ${D.escapeHtml(c)}
- `}}).join(""),n.querySelectorAll(".playlist-checkbox").forEach(d=>{d.addEventListener("change",function(){xt(this)})}),n.querySelectorAll(".playlist-item.is-selectable").forEach(d=>{d.addEventListener("click",function(c){if(c.target.classList.contains("playlist-checkbox")||c.target.closest(".checkbox-label"))return;let u=d.querySelector(".playlist-checkbox");u&&(u.checked=!u.checked,xt(u))})}),_a(n,xt),a&&i.length>0&&i.forEach(d=>{let c=n.querySelector(`.playlist-checkbox[data-path="${CSS.escape(d.path)}"]`);if(c&&!c.disabled){c.checked=!0;let u=parseInt(c.dataset.providerCount,10)||0,m=c.closest(".playlist-item");u>0&&(r.selectedPlaylists.push({path:d.path,songCount:u}),m?.classList.add("is-selected"))}}),o?document.getElementById("start-game")?.classList.remove("hidden"):document.getElementById("start-game")?.classList.add("hidden"),r.selectedPlaylists.length===0)try{let d=localStorage.getItem(x),c=d?JSON.parse(d):null;(Array.isArray(c?.selectedPlaylists)?c.selectedPlaylists.map(m=>typeof m=="string"?m:m.path).filter(Boolean):[]).forEach(m=>{let f=n.querySelector(`.playlist-checkbox[data-path="${CSS.escape(m)}"]`);if(f&&!f.disabled){f.checked=!0;let p=parseInt(f.dataset.providerCount,10)||0;p>0&&!r.selectedPlaylists.some(y=>y.path===m)&&(r.selectedPlaylists.push({path:m,songCount:p}),f.closest(".playlist-item")?.classList.add("is-selected"))}})}catch(d){console.warn("[Beatify] restore saved playlists failed:",d)}At(),Q()}function xt(e){let t=e.dataset.path,a=parseInt(e.dataset.providerCount,10)||0,n=e.closest(".playlist-item");e.checked?(r.selectedPlaylists.some(i=>i.path===t)||r.selectedPlaylists.push({path:t,songCount:a}),n.classList.add("is-selected")):(r.selectedPlaylists=r.selectedPlaylists.filter(i=>i.path!==t),n.classList.remove("is-selected")),At(),Q()}function Rn(e){let t=document.getElementById("playlist-filter-bar");if(!t)return;let a=new Set;if(e.forEach(o=>{(o.tags||[]).forEach(l=>a.add(l))}),a.size===0){t.classList.add("hidden");return}let n=o=>o.charAt(0).toUpperCase()+o.slice(1),i='
';Object.entries($e).forEach(([o,l])=>{let d=l.tags.filter(u=>a.has(u));if(d.length===0)return;let c=r.activeFilters[o]||"";i+=` + `}}).join(""),n.querySelectorAll(".playlist-checkbox").forEach(d=>{d.addEventListener("change",function(){xt(this)})}),n.querySelectorAll(".playlist-item.is-selectable").forEach(d=>{d.addEventListener("click",function(c){if(c.target.classList.contains("playlist-checkbox")||c.target.closest(".checkbox-label"))return;let u=d.querySelector(".playlist-checkbox");u&&(u.checked=!u.checked,xt(u))})}),Sa(n,xt),a&&i.length>0&&i.forEach(d=>{let c=n.querySelector(`.playlist-checkbox[data-path="${CSS.escape(d.path)}"]`);if(c&&!c.disabled){c.checked=!0;let u=parseInt(c.dataset.providerCount,10)||0,m=c.closest(".playlist-item");u>0&&(r.selectedPlaylists.push({path:d.path,songCount:u}),m?.classList.add("is-selected"))}}),o?document.getElementById("start-game")?.classList.remove("hidden"):document.getElementById("start-game")?.classList.add("hidden"),r.selectedPlaylists.length===0)try{let d=localStorage.getItem(x),c=d?JSON.parse(d):null;(Array.isArray(c?.selectedPlaylists)?c.selectedPlaylists.map(m=>typeof m=="string"?m:m.path).filter(Boolean):[]).forEach(m=>{let f=n.querySelector(`.playlist-checkbox[data-path="${CSS.escape(m)}"]`);if(f&&!f.disabled){f.checked=!0;let p=parseInt(f.dataset.providerCount,10)||0;p>0&&!r.selectedPlaylists.some(y=>y.path===m)&&(r.selectedPlaylists.push({path:m,songCount:p}),f.closest(".playlist-item")?.classList.add("is-selected"))}})}catch(d){console.warn("[Beatify] restore saved playlists failed:",d)}At(),Q()}function xt(e){let t=e.dataset.path,a=parseInt(e.dataset.providerCount,10)||0,n=e.closest(".playlist-item");e.checked?(r.selectedPlaylists.some(i=>i.path===t)||r.selectedPlaylists.push({path:t,songCount:a}),n.classList.add("is-selected")):(r.selectedPlaylists=r.selectedPlaylists.filter(i=>i.path!==t),n.classList.remove("is-selected")),At(),Q()}function Hn(e){let t=document.getElementById("playlist-filter-bar");if(!t)return;let a=new Set;if(e.forEach(o=>{(o.tags||[]).forEach(l=>a.add(l))}),a.size===0){t.classList.add("hidden");return}let n=o=>o.charAt(0).toUpperCase()+o.slice(1),i='
';Object.entries($e).forEach(([o,l])=>{let d=l.tags.filter(u=>a.has(u));if(d.length===0)return;let c=r.activeFilters[o]||"";i+=`