:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-base:#0c0c18;--bg-secondary:#0f0f23;--bg-surface:#13132a;--bg-elevated:#1a1a3e;--bg-card:#181838;--bg-hover:#1f1f4a;--bg-input:#10102a;--surface-subtle:#161632;--bg-accent:#3b3578;--accent-primary:#7c6aef;--accent-primary-hover:#9384f7;--accent-secondary:#22d3ee;--accent-gradient:linear-gradient(135deg, #6366f1, #a855f7);--accent-gradient-hover:linear-gradient(135deg, #818cf8, #c084fc);--accent-glow:#6366f140;--accent-gold:#fbbf24;--accent-gold-dim:#fbbf2426;--color-success:#34d399;--color-warning:#fbbf24;--color-danger:#f87171;--color-danger-bg:#f871711a;--color-info:#60a5fa;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-secondary-on-accent:#b8c4d6;--text-tertiary:#64748b;--text-muted:#475469;--text-on-accent:#fff;--border-subtle:#ffffff0f;--border-default:#ffffff1a;--border-strong:#ffffff29;--border-accent:#6366f166;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 32px #00000080;--shadow-glow:0 0 20px #6366f126;--shadow-card:0 2px 8px #0000004d, 0 0 0 1px var(--border-subtle);--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"SF Mono", "Fira Code", "Consolas", monospace;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-xxl:4rem;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--mobile-nav-height:0px;--glass-surface:#1a1a3eb8;--glass-surface-solid:#1a1a3e;--glass-border:#ffffff29;--glass-blur:12px;--glass-shadow:0 4px 16px #0006;--board-light-color:#f0d9b5;--board-dark-color:#b58863}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);background:var(--bg-base);color:var(--text-primary);min-height:100dvh;line-height:1.6;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(80% 60% at 50% -20%,#6366f114,#0000),radial-gradient(60% 40% at 80% 100%,#a855f70d,#0000);position:fixed;inset:0}#root{z-index:1;position:relative}a{color:var(--accent-primary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--accent-primary-hover)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}::-webkit-scrollbar-corner{background:0 0}::selection{color:var(--text-primary);background:#6366f14d}[data-tooltip-bubble]{opacity:0;transition:opacity .12s}[data-tooltip-host]:hover [data-tooltip-bubble],[data-tooltip-host]:focus-within [data-tooltip-bubble]{opacity:1}.btn{justify-content:center;align-items:center;gap:var(--space-sm);font-family:var(--font-family);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-base), transform var(--transition-fast);white-space:nowrap;border:none;font-size:.875rem;font-weight:600;line-height:1;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled,.join-code-button:disabled{opacity:.4;cursor:not-allowed}.game-over-content{padding:var(--space-2xl) var(--space-3xl);text-align:center}.game-over-content h2{margin-bottom:var(--space-sm);letter-spacing:-.02em;font-size:1.75rem;font-weight:800}.game-over-content p{color:var(--accent-gold);margin-bottom:var(--space-xl);text-transform:capitalize;font-size:1.2rem;font-weight:600}.game-over-content button,.confirm-dialog-confirm,.join-code-button,.confirm-dialog-cancel,.email-verification-actions button,.feature-request-actions button,.profile-setup-actions button{padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:.95rem}.game-over-content button,.confirm-dialog-confirm,.join-code-button,.rules-button,.lobby-join-button{background:var(--accent-gradient);color:var(--text-on-accent);transition:all var(--transition-base);border:none;font-weight:600}.game-over-content button{font-size:1rem}.game-over-content button:hover{background:var(--accent-gradient-hover);transform:translateY(-1px);box-shadow:0 4px 16px #6366f14d}.game-over-actions{gap:var(--space-md);flex-wrap:wrap;justify-content:center;display:flex}.game-over-actions button:disabled,.email-verification-passkey-btn:disabled,.prompt-banner-primary:disabled,.pwa-install-overlay-install:disabled,.notification-toggle-disabled,.toggle-button:disabled{opacity:.5;cursor:not-allowed}.game-over-player-results,.email-verification-code-entry p{margin-bottom:var(--space-lg)}.game-over-player-result{margin-bottom:var(--space-xs);font-size:1.1rem;font-weight:600}.game-over-player-result.won{color:var(--accent-gold)}.game-over-player-result.lost{color:var(--text-secondary)}.transform-dialog{padding:var(--space-xl) var(--space-2xl);text-align:center}.transform-dialog h3{margin-bottom:var(--space-md);font-weight:700}.rules-button,.lobby-join-button,.restart-button,.leave-button,.undo-button,.redo-button,.rules-close-button{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.8rem}.restart-button,.leave-button,.undo-button,.redo-button,.rules-close-button,.confirm-dialog-cancel{border:1px solid var(--border-default);color:var(--text-secondary);transition:all var(--transition-fast);background:0 0;font-weight:500}.restart-button:hover,.leave-button:hover,.undo-button:hover:not(:disabled),.redo-button:hover:not(:disabled),.confirm-dialog-cancel:hover,.rules-close-button:hover{color:var(--text-primary);border-color:var(--border-strong);background:#ffffff0a}.undo-button:disabled,.redo-button:disabled{opacity:.35;cursor:not-allowed}.sidebar-actions-row .undo-button,.sidebar-actions-row .redo-button{justify-content:center;align-items:center;gap:var(--space-xs);flex:1;display:inline-flex}.confirm-dialog{padding:var(--space-2xl) var(--space-2xl);text-align:center}.confirm-dialog h2,.email-verification-modal h2,.profile-setup-modal h2{margin-bottom:var(--space-sm);font-size:1.5rem;font-weight:700}.confirm-dialog p{color:var(--text-secondary);font-size:.95rem;line-height:1.6}.confirm-dialog-confirm:hover,.join-code-button:hover{background:var(--accent-gradient-hover);box-shadow:0 4px 16px #6366f14d}.email-verification-modal,.feature-request-modal,.profile-setup-modal{padding:var(--space-2xl);max-width:420px}.email-verification-modal label,.feature-request-modal label,.profile-setup-modal label{margin-bottom:var(--space-xs);font-size:.9rem;font-weight:500;display:block}.email-verification-modal input:not(.email-verification-code-digit),.feature-request-modal input[type=text],.feature-request-modal textarea,.profile-setup-modal input:not([type=checkbox]),.profile-setup-modal textarea,.profile-form input,.profile-form textarea,.settings-form input{width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--border-default);border-radius:var(--radius-md);box-sizing:border-box;font-size:1rem}.email-verification-modal input:not(.email-verification-code-digit),.feature-request-modal input[type=text],.feature-request-modal textarea{margin-bottom:var(--space-lg)}.email-verification-modal input:not(.email-verification-code-digit):focus,.feature-request-modal input:focus,.feature-request-modal textarea:focus,.profile-setup-modal input:not([type=checkbox]):focus,.profile-setup-modal textarea:focus{border-color:var(--accent-primary);outline:none}.feature-request-modal h2{margin-bottom:var(--space-xl);font-size:1.5rem;font-weight:700}.feature-request-modal textarea,.profile-setup-modal textarea{resize:vertical;min-height:80px}.profile-setup-modal input:not([type=checkbox]),.profile-setup-modal textarea{margin-bottom:var(--space-sm);font-family:var(--font-family);background:var(--bg-input);color:var(--text-primary)}.profile-setup-modal .profile-setup-consent{gap:var(--space-sm);margin:var(--space-md) 0;flex-direction:column;display:flex}.profile-setup-modal .profile-setup-consent-label{align-items:flex-start;gap:var(--space-sm);color:var(--text-secondary);cursor:pointer;flex-direction:row;font-size:.85rem;display:flex}.profile-setup-modal .profile-setup-consent-label input[type=checkbox]{flex-shrink:0;width:auto;margin-top:2px}.profile-setup-modal .profile-setup-consent-label a,.consent-banner-link{color:var(--accent-primary);text-decoration:none}.profile-setup-modal .profile-setup-consent-label a:hover,.consent-banner-link:hover{text-decoration:underline}@media (width<=480px){.profile-setup-modal{padding:var(--space-lg);max-width:none}.profile-setup-modal h2{font-size:1.25rem}.profile-setup-modal textarea{min-height:60px}}.prompt-banner-primary:hover,.pwa-install-overlay-install:hover{opacity:.9}.pwa-install-overlay{padding:var(--space-xl);text-align:center;flex-direction:column;align-items:center;max-width:360px;display:flex}.pwa-install-overlay-install{padding:var(--space-sm) var(--space-lg);background:var(--accent-gradient);color:var(--text-on-accent);cursor:pointer;border:none;border-radius:8px;font-size:1rem;font-weight:500}.pwa-install-overlay-dismiss{padding:var(--space-xs) var(--space-md);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:.875rem}.pwa-install-overlay-dismiss:hover{color:var(--text-primary)}.notification-settings,.email-management-section{background:var(--bg-card);border:1px solid var(--border-default);border-radius:8px;flex-direction:column;gap:0;padding:0;display:flex;overflow:hidden}.player-select-container{align-items:center;gap:var(--space-xl);padding:var(--space-3xl) var(--space-xl);flex-direction:column;display:flex}.player-select-container h2{color:var(--text-primary);font-size:1.75rem;font-weight:700}.player-select-options{gap:var(--space-md);display:flex}.player-select-button{background:var(--bg-card);color:var(--text-primary);border:2px solid var(--border-default);padding:var(--space-lg) var(--space-2xl);border-radius:var(--radius-lg);cursor:pointer;font-family:var(--font-family);transition:all var(--transition-base);font-size:1.15rem;font-weight:600}.player-select-button:hover{border-color:var(--accent-primary);box-shadow:var(--shadow-lg), var(--shadow-glow);transform:translateY(-3px)}.join-code-input{background:var(--bg-input);border:1px solid var(--border-default);min-width:0;color:var(--text-primary);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;text-align:center;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;flex:1;font-size:1.1rem;font-weight:600}.join-code-input::placeholder{color:var(--text-muted);font-family:var(--font-family);letter-spacing:normal;text-transform:none;font-size:.8rem;font-weight:400}.join-code-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-glow)}.lobby-list{gap:var(--space-sm);flex-direction:column;display:flex}.copy-link-button{border:1px solid var(--border-default);color:var(--text-secondary);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);transition:all var(--transition-fast);background:0 0;font-size:.875rem;font-weight:500}.copy-link-button:hover{color:var(--text-primary);border-color:var(--accent-primary);background:#6366f114}.lobby-player-slot.filled{background:#34d3990d;border-color:#34d3994d}.lobby-player-slot.filled .lobby-player-slot-status{color:var(--color-success);font-weight:600}.share-link-url{font-family:var(--font-mono);color:var(--text-secondary);word-break:break-all;font-size:.75rem}.share-link-actions .copy-link-button{flex:1}.share-sheet-button{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--accent-gradient);color:var(--text-on-accent);cursor:pointer;transition:transform var(--transition-fast), background var(--transition-fast);border:none;font-size:.875rem;font-weight:600;display:inline-flex}.share-sheet-button:hover{background:var(--accent-gradient-hover)}.share-sheet-button:active{transform:scale(.97)}.share-sheet-button:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.offline-indicator{color:var(--color-warning);padding:var(--space-xs) var(--space-sm);transition:opacity var(--transition-base);justify-content:center;align-items:center;display:inline-flex}.offline-indicator svg{display:block}html{touch-action:manipulation}.game-route-shell{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.game-play-page-unified{width:100%}.app-outlet:has(.game-play-page-unified){flex-direction:column;min-height:100dvh;display:flex}.game-play-page.game-play-page-unified{flex:1;min-height:0}.unified-game-layout{flex:1;width:100%;min-height:0;display:flex;position:relative}.unified-game-board-area{align-items:center;gap:var(--space-xl);padding:var(--space-lg);flex:1;justify-content:center;min-width:0;display:flex;position:relative}.unified-game-board-area .game-board-container{flex-direction:column;justify-content:center;align-self:stretch;align-items:center;display:flex;position:relative}.unified-game-board-area .game-board-container--fill{flex:1 1 0;min-width:0}.unified-game-board-area .board-wrapper{flex-direction:column;flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;position:relative}.board-wrapper{position:relative}.board-preview-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:var(--radius-md);pointer-events:none;background:#0c0c1880;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.board-preview-overlay p{color:var(--text-secondary);background:var(--bg-elevated);padding:var(--space-md) var(--space-xl);border-radius:var(--radius-md);border:1px solid var(--border-subtle);font-size:1rem;font-weight:500}.tutor-panel{border-right:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:300px;min-width:300px;max-width:300px;transition:width var(--transition-base), min-width var(--transition-base), max-width var(--transition-base);background:#13132acc;flex-direction:column;order:0;min-height:0;display:flex}.tutor-panel.collapsed{width:48px;min-width:48px;max-width:48px}.tutor-panel.collapsed .tutor-panel-body{display:none}.tutor-overlay-svg{overflow:visible}.tutor-arrow line{stroke:var(--accent-primary);stroke-width:5px;stroke-linecap:round;filter:drop-shadow(0 0 4px var(--accent-primary))}.player-sidebar{border-left:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:300px;min-width:300px;max-width:300px;transition:width var(--transition-base), min-width var(--transition-base);background:#13132acc;flex-direction:column;display:flex}.player-sidebar.collapsed{width:48px;min-width:48px;max-width:48px}.player-sidebar.collapsed .player-sidebar-header{justify-content:center}.player-sidebar.collapsed .player-sidebar-title-group,.player-sidebar.collapsed .sidebar-header-rules-btn,.player-sidebar-header{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;display:flex}.player-sidebar-title-group{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.player-sidebar-title{white-space:nowrap;text-overflow:ellipsis;font-size:1rem;font-weight:700;overflow:hidden}.player-sidebar-version{letter-spacing:.02em;color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:.7rem;font-weight:600;overflow:hidden}.player-sidebar-tabs{border-bottom:1px solid var(--border-subtle);display:flex}.player-sidebar-tab{padding:var(--space-sm) var(--space-md);font-size:.875rem;font-weight:500;font-family:var(--font-family);color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex:1}.player-sidebar-tab:hover{color:var(--text-secondary)}.player-sidebar-tab.active{color:var(--accent-primary);border-bottom:2px solid var(--accent-primary);margin-bottom:-1px}.player-sidebar-new-tab,.player-sidebar-join-tab,.player-sidebar-playing{padding:var(--space-lg);gap:var(--space-lg);flex-direction:column;flex:1;display:flex;overflow-y:auto}.sidebar-actions{padding:var(--space-lg);border-top:1px solid var(--border-subtle);gap:var(--space-sm);flex-direction:column;margin-top:auto;display:flex}.sidebar-actions-row{gap:var(--space-sm);display:flex}.player-slots-list{gap:var(--space-sm);flex-direction:column;display:flex}.player-slot{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);gap:var(--space-xs);flex-direction:column;display:flex}.player-slot.current-turn{border-color:var(--accent-primary);background:#6366f114}.player-slot.player-slot-winner .player-slot-status{color:var(--accent-gold);font-weight:700}.player-slot.player-slot-forfeited .player-slot-status{color:var(--color-danger);font-weight:600}.player-slot-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.player-slot-status{font-size:.9rem;font-weight:500}.player-slot.filled .player-slot-status{color:var(--color-success)}.player-slot-type-select{background:var(--bg-input);border:1px solid var(--border-default);width:100%;color:var(--text-primary);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;font-size:.875rem}.player-slot-type-select:focus{border-color:var(--accent-primary);outline:none}.player-slot-invite-hint{color:var(--text-tertiary);margin-top:var(--space-xs);font-size:.75rem}.player-slot-deallocate-btn,.player-add-btn,.player-remove-btn{padding:var(--space-xs) var(--space-sm);font-weight:500;font-family:var(--font-family);background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.player-slot-deallocate-btn{margin-top:var(--space-xs);align-self:flex-start;font-size:.75rem}.player-slot-deallocate-btn:hover{background:var(--bg-hover);color:var(--color-danger)}.player-count-controls{gap:var(--space-sm);display:flex}.player-add-btn,.player-remove-btn{flex:1;font-size:.8rem}.player-add-btn:hover,.player-remove-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.observer-mode-section{gap:var(--space-sm);flex-direction:column;display:flex}.observer-mode-indicator{color:var(--text-tertiary);padding:var(--space-sm);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);text-align:center;font-size:.875rem;font-weight:600}.observer-back-btn{margin-top:var(--space-xs)}.start-game-button{width:100%;padding:var(--space-md) var(--space-lg);font-size:1rem;font-weight:600;font-family:var(--font-family);background:var(--accent-gradient);color:var(--text-on-accent);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);border:none}.start-game-button:hover:not(:disabled){background:var(--accent-gradient-hover);transform:translateY(-1px);box-shadow:0 4px 16px #6366f14d}.start-game-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.ai-status-bar{margin-top:var(--space-sm);padding:var(--space-sm);background:var(--bg-input);border-radius:var(--radius-sm);border:1px solid var(--border-default)}.ai-progress-bar{background:var(--bg-secondary);width:100%;height:6px;margin-bottom:var(--space-xs);border-radius:3px;overflow:hidden}.player-sidebar-error{color:var(--color-danger);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);background:#f871711a;border:1px solid #f871714d;font-size:.875rem}.player-sidebar-join-tab .join-code-form{margin-bottom:var(--space-md)}@media (width<=1024px){.game-grid{gap:var(--space-md);grid-template-columns:1fr}.game-layout{gap:var(--space-md);flex-direction:column}.game-sidebar{width:100%;min-height:auto}.game-route-shell{height:auto;overflow:visible}.unified-game-layout{flex-direction:column;flex:none}.unified-game-board-area{padding:var(--space-md);flex-direction:column;flex:none}.player-sidebar{border-left:none;border-top:1px solid var(--border-subtle);width:100%;min-width:100%;max-width:100%}.player-sidebar-new-tab,.player-sidebar-join-tab,.player-sidebar-playing{flex:none;overflow-y:visible}.player-sidebar.collapsed{width:100%;min-width:100%;max-width:100%}.player-sidebar.collapsed .player-sidebar-header{display:flex}.profile-page,.settings-page,.public-profile-page,.friends-page{padding:var(--space-md)}.player-sidebar.collapsed .player-sidebar-title-group,.player-sidebar.collapsed .sidebar-header-rules-btn,.player-sidebar.collapsed .player-sidebar-tabs,.player-sidebar.collapsed .player-sidebar-new-tab,.player-sidebar.collapsed .player-sidebar-join-tab,.player-sidebar.collapsed .player-sidebar-playing,.player-sidebar.collapsed .sidebar-actions{display:revert}.unified-game-board-area{padding:var(--space-sm);min-width:0}.game-board-container{max-width:100%}.sheet-sidebar-content .player-sidebar{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-top:none;border-left:none;width:100%;min-width:100%;max-width:100%}.sheet-sidebar-content .player-sidebar-header{display:none}}@media (width<=480px){.game-card{padding:var(--space-md)}.player-select-options{flex-direction:column}.game-grid,.my-games-grid{grid-template-columns:1fr}}.achievement-toast-host{top:calc(var(--space-lg) + env(safe-area-inset-top,0px));right:var(--space-lg);z-index:1100;gap:var(--space-sm);max-width:min(360px, calc(100vw - 2 * var(--space-lg)));pointer-events:none;flex-direction:column;display:flex;position:fixed}.achievement-toast{pointer-events:auto;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--bg-card);border:1px solid var(--border-accent);border-radius:var(--radius-md);box-shadow:0 8px 24px #00000059, 0 0 20px var(--accent-glow);cursor:pointer;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;animation:achievement-toast-in var(--transition-slow) ease;display:flex}.achievement-toast:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@keyframes achievement-toast-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.achievement-toast-icon{flex-shrink:0;font-size:1.75rem;line-height:1}.achievement-toast-text{flex-direction:column;gap:2px;min-width:0;display:flex}.achievement-toast-label{letter-spacing:.04em;text-transform:uppercase;color:var(--accent-primary);font-size:.7rem;font-weight:600}.achievement-toast-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:700;overflow:hidden}@media (prefers-reduced-motion:reduce){.achievement-toast{animation:none}}.game-list-page{max-width:960px;padding:0 var(--space-lg);margin:0 auto}.game-list-search-input{width:100%;margin-bottom:var(--space-lg);padding:var(--space-sm) var(--space-md);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--text-primary);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:1rem}.game-list-search-input:focus,.user-menu-trigger:focus-visible,.hamburger-btn:focus-visible,.user-search-field:focus,.my-games-search-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-glow);outline:none}.game-list-search-input::placeholder{color:var(--text-tertiary,var(--text-secondary))}.header-nav-link,.editor-link{color:var(--text-secondary);border:1px solid var(--border-default);border-radius:var(--radius-md);transition:all var(--transition-base);align-items:center;font-size:.875rem;font-weight:600;text-decoration:none;display:inline-flex}.header-nav-link{gap:var(--space-xs);padding:var(--space-sm) var(--space-md);white-space:nowrap}.header-nav-link:hover,.editor-link:hover{color:var(--text-on-accent);background:var(--accent-gradient);border-color:#0000;transform:translateY(-1px);box-shadow:0 4px 16px #6366f14d}.user-menu-nav{align-items:center}.user-menu-sign-in-group,.passkey-item-main,.passkey-name-input-row{align-items:center;gap:var(--space-sm);display:flex}.user-menu-sign-in,.user-menu-dev-login{appearance:none;cursor:pointer;border:1px solid var(--accent-primary);color:var(--accent-primary);background:0 0;font-family:inherit}.user-menu-dev-login{border-color:var(--border-strong);color:var(--text-secondary)}.user-menu-dev-login:hover{color:var(--text-primary);border-color:var(--border-strong);background:var(--bg-hover)}.user-menu-sign-in:hover{color:var(--text-on-accent);background:var(--accent-gradient);border-color:#0000}.user-menu-dropdown{position:relative}.user-menu-trigger{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);color:var(--text-secondary);border:1px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;background:0 0;font-family:inherit;font-size:.875rem;font-weight:600;display:inline-flex}.user-menu-trigger:hover,.magic-link-verify-error button:hover,.native-share-btn:hover,.mobile-share-overlay-close:hover{color:var(--text-primary);border-color:var(--border-strong)}.user-menu-avatar{width:1.75rem;height:1.75rem;color:var(--text-on-accent);background:var(--accent-gradient);border-radius:999px;justify-content:center;align-items:center;font-size:.85rem;font-weight:600;display:flex;overflow:hidden}.user-menu-avatar-img{object-fit:cover;border-radius:999px;width:100%;height:100%}.user-menu-dropdown-content{top:calc(100% + var(--space-xs));min-width:140px;padding:var(--space-xs);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;position:absolute;right:0}.user-menu-dropdown-item{width:100%;padding:var(--space-sm) var(--space-md);text-align:left;color:var(--text-primary);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition-base);background:0 0;border:none;font-family:inherit;font-size:.9rem;text-decoration:none;display:block}.user-menu-dropdown-item:hover,.hamburger-btn:hover,.native-share-btn:active{background:var(--bg-hover)}.user-menu-dropdown-item:focus-visible,.email-action-btn:focus-visible,.friends-tab:focus-visible,.friend-card-link:focus-visible,.friend-card-link-plain:focus-visible,.friend-card-btn:focus-visible,.friend-invitation-btn:focus-visible,.email-search-row input:focus-visible,.email-search-row button:focus-visible,.email-invite-row input:focus-visible,.email-invite-row button:focus-visible,.game-invite-continue-btn:focus-visible,.invite-welcome-btn-primary:focus-visible,.invite-welcome-btn-secondary:focus-visible,.feature-requests-tab:focus-visible,.profile-friend-count-link:focus-visible,.my-games-tab:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.user-menu-sign-out,.friend-card-btn-remove,.friend-card-btn-reject,.user-search-error,.email-invite-message-error,.friend-invitation-btn-delete,.pat-expired{color:var(--color-danger)}.page-header-spacer,.game-invite-friend-row .friend-card{flex:1}.header-desktop-nav,.game-invite-email-row{gap:var(--space-sm);align-items:center;display:flex}.profile-games-list,.friends-list,.friends-invitations-list,.invite-welcome-actions,.passkey-prompt-actions{gap:var(--space-sm);flex-direction:column;display:flex}.profile-page,.settings-page,.public-profile-page{max-width:600px;padding:var(--space-xl);margin:0 auto}.profile-form,.settings-form,.public-profile-content,.profile-games-section,.game-invite-modal-actions{margin-top:var(--space-xl)}.profile-form input:focus,.profile-form textarea:focus,.settings-form input:focus,.email-search-row input:focus,.email-invite-row input:focus,.game-invite-email-input:focus,.passkey-edit-input:focus,.passkey-name-input:focus,.pat-create-input:focus{border-color:var(--accent-primary);outline:none}.profile-form button:hover:not(:disabled),.settings-form button:hover:not(:disabled),.magic-link-verify-btn:hover:not(:disabled),.game-invite-continue-btn:hover,.invite-welcome-btn-primary:hover,.passkey-prompt-setup-btn:hover:not(:disabled){background:var(--accent-gradient-hover)}.profile-form button:disabled,.settings-form button:disabled,.email-action-btn:disabled,.magic-link-verify-btn:disabled,.friend-card-btn:disabled,.email-search-row button:disabled,.email-invite-row button:disabled,.friend-invitation-btn:disabled,.game-invite-email-btn:disabled{opacity:.6;cursor:not-allowed}.email-management-section{margin:var(--space-xl) 0 var(--space-lg)}.email-list{margin:0;padding:0;list-style:none}.email-row-address{min-width:0;color:var(--text-primary);overflow-wrap:break-word;word-break:break-all;flex:1;font-size:.875rem}.email-row-badges{gap:var(--space-xs);flex-wrap:wrap;flex-shrink:0;display:flex}.email-row-actions{gap:var(--space-sm);flex-wrap:wrap;flex-shrink:0;display:flex}.email-add-row,.passkey-item-meta,.pat-revoke-actions{gap:var(--space-sm);margin-top:var(--space-xs);display:flex}.magic-link-verify-page{min-height:calc(100dvh - 64px);padding:var(--space-xl);justify-content:center;align-items:center;display:flex}.magic-link-verify-btn,.not-found-home-link,.profile-form button,.settings-form button,.game-invite-continue-btn,.passkey-add-btn,.passkey-register-btn,.passkey-prompt-setup-btn,.security-sessions-revoke-all-btn,.pat-add-btn,.settings-data-export-btn{color:var(--text-on-accent);background:var(--accent-gradient);border-radius:var(--radius-md);cursor:pointer;border:none;font-weight:600}.magic-link-verify-btn,.not-found-home-link,.profile-form button,.settings-form button,.game-invite-continue-btn{font-family:inherit;font-size:1rem}.verify-email-page{padding:var(--space-xl);max-width:480px;margin:0 auto}.friends-page{max-width:640px;padding:var(--space-xl);margin:0 auto}.friends-tabs,.feature-requests-tabs,.my-games-tabs{gap:var(--space-xs);border-bottom:1px solid var(--border-subtle);display:flex}.friends-tabs,.feature-requests-tabs{margin-bottom:var(--space-xl)}.friends-tab:active,.game-invite-continue-btn:active,.feature-requests-tab:active{transform:scale(.98)}.friends-tab.active,.feature-requests-tab.active,.my-games-tab.active,.settings-tab.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary)}.friends-section,.user-search-input,.friends-find-email,.my-games-search{margin-bottom:var(--space-xl)}.friend-card,.friend-invitation-item,.rematch-request-item{padding:var(--space-md);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);justify-content:space-between;align-items:center;display:flex}.friend-card{gap:var(--space-md);transition:all var(--transition-base)}.user-search-field,.email-search-row input,.email-invite-row input{padding:var(--space-sm) var(--space-md);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-input);color:var(--text-primary);font-size:1rem}.user-search-field{width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.user-search-loading,.user-search-error,.user-search-empty,.email-invite-message{margin-top:var(--space-sm);font-size:.9rem}.user-search-empty,.site-footer a:hover{color:var(--text-secondary)}.user-search-results{gap:var(--space-sm);margin-top:var(--space-md);flex-direction:column;display:flex}.email-search-row button,.email-invite-row button,.game-invite-email-btn{background:var(--accent-primary);color:var(--text-on-accent);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);border:none;font-family:inherit}.email-search-row button:hover:not(:disabled),.email-invite-row button:hover:not(:disabled),.game-invite-email-btn:hover:not(:disabled){background:var(--accent-primary-hover)}.game-invite-modal-content{padding:var(--space-xl)}.game-invite-modal-title{margin-bottom:var(--space-xs);font-size:1.25rem;font-weight:700}.game-invite-modal-subtitle{color:var(--text-secondary);margin-bottom:var(--space-xl);font-size:.9rem}.game-invite-error{color:var(--color-danger);margin-bottom:var(--space-md);font-size:.9rem}.game-invite-slot{margin-bottom:var(--space-xl);padding:var(--space-md);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.game-invite-slot-label{margin-bottom:var(--space-md);font-size:.9rem;font-weight:600}.game-invite-slot-sent,.game-invite-friend-row{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.game-invite-slot-status{color:var(--color-success);font-size:.85rem}.game-invite-friend-picker{gap:var(--space-sm);margin-bottom:var(--space-md);flex-direction:column;display:flex}.game-invite-no-friends{color:var(--text-secondary);padding:var(--space-md);font-size:.9rem}.game-invite-email-section{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border-subtle)}.game-invite-email-label,.security-sessions-ip,.security-sessions-time,.passkey-created,.passkey-last-used{color:var(--text-secondary);margin:0 0 var(--space-xs);font-size:.85rem}.game-invite-email-input{padding:var(--space-sm) var(--space-md);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);box-sizing:border-box;flex:1;font-family:inherit;font-size:.9rem}.game-invite-email-input::placeholder,.my-games-search-input::placeholder{color:var(--text-muted)}.game-invite-email-input:disabled{opacity:.7;cursor:not-allowed}.game-invite-email-btn{padding:var(--space-sm) var(--space-md);font-size:.9rem;font-weight:600}.game-invite-email-sent{color:var(--text-primary);font-size:.95rem}.game-invite-slot-share{margin-top:var(--space-sm)}.game-invite-continue-btn{width:100%;padding:var(--space-md) var(--space-xl);transition:all var(--transition-base)}.player-profile-link{color:var(--accent-primary);text-decoration:none}.player-profile-link:hover{text-decoration:underline}.player-profile-link:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px;border-radius:var(--radius-sm)}.editor-link{margin-top:var(--space-md);padding:var(--space-sm) var(--space-lg);gap:6px}.game-grid{gap:var(--space-lg);padding:var(--space-md) 0 var(--space-3xl);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.no-results-prompt{text-align:center;padding:var(--space-3xl) var(--space-xl)}.feature-requests-page{max-width:720px;padding:0 var(--space-lg) var(--space-3xl);margin:0 auto}.feature-request-type-badge.game{color:var(--accent-primary);background:#6366f126}.feature-request-type-badge.feature{color:var(--accent-secondary,#a855f7);background:#a855f726}.feature-request-description{color:var(--text-secondary);margin-bottom:var(--space-sm);font-size:.9rem;line-height:1.5}.feature-request-vote-btn.voted{border-color:var(--accent-primary);color:var(--accent-primary);background:#6366f126}.game-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-xl);transition:all var(--transition-slow);flex-direction:column;display:flex;position:relative;overflow:hidden}.game-card:before{content:"";border-radius:var(--radius-lg);-webkit-mask-composite:xor;pointer-events:none;transition:background var(--transition-slow);background:linear-gradient(135deg,#6366f100,#6366f100);padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.game-card:hover{border-color:var(--border-accent);box-shadow:var(--shadow-lg), var(--shadow-glow);transform:translateY(-4px)}.game-card:hover:before{background:linear-gradient(135deg,#6366f14d,#a855f74d)}.game-card-link{color:inherit;flex-direction:column;flex:1;text-decoration:none;display:flex}.game-card h2{text-transform:capitalize;margin-bottom:var(--space-sm);letter-spacing:-.01em;font-size:1.25rem;font-weight:700}.game-card p{color:var(--text-secondary);margin-bottom:var(--space-md);flex:1;font-size:.875rem;line-height:1.5}.player-count{color:var(--accent-primary-hover);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:#6366f11f;align-items:center;gap:4px;width:fit-content;font-size:.75rem;font-weight:600;display:inline-flex}.player-count:before{content:"👥";font-size:.7rem}.open-games-badge{margin-top:var(--space-sm);padding:var(--space-xs) var(--space-md);font-size:.8rem;font-weight:500;font-family:var(--font-family);color:var(--accent-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-base);background:#22d3ee1a;border:1px solid #22d3ee4d;align-items:center;text-decoration:none;display:inline-flex}.open-games-badge:hover{border-color:var(--accent-secondary);background:#22d3ee33}.my-games-page{max-width:960px;padding:0 var(--space-lg);min-height:100dvh;margin:0 auto}.my-games-tabs{margin-top:var(--space-md)}.my-games-section{margin-bottom:var(--space-2xl)}.my-games-section h2{margin-bottom:var(--space-md);color:var(--text-secondary);font-size:1.25rem;font-weight:700}.my-games-section-header{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);display:flex}.my-games-section-header h2{margin-bottom:0}.my-game-card-body{gap:var(--space-sm);color:inherit;flex-direction:column;flex:1;text-decoration:none;display:flex}.my-game-card-footer{padding-top:var(--space-sm);border-top:1px solid var(--border-subtle);flex-direction:column;display:flex}.my-game-card-has-menu .my-game-header{padding-right:var(--space-lg)}.my-game-card-your-turn{border-left:3px solid var(--accent-primary)}.my-games-section-recent{padding-bottom:var(--space-xl);border-bottom:1px solid var(--border-subtle)}.my-games-recent-list{column-gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:start;display:grid}.my-games-recent-item{margin-bottom:var(--space-lg);transition:grid-template-rows var(--transition-slow), opacity var(--transition-base), margin var(--transition-slow), transform var(--transition-slow);grid-template-rows:1fr;display:grid}.my-games-recent-item:last-child{margin-bottom:0}.my-games-recent-item-removing{opacity:0;transform:translateX(var(--space-md));pointer-events:none;grid-template-rows:0fr;margin-bottom:0}.my-games-recent-item-removing>*{min-height:0;overflow:hidden}.my-games-recent-item-entering{animation:my-games-recent-enter var(--transition-slow)}.my-games-recent-item-entering.my-games-recent-item-removing{animation:none}@keyframes my-games-recent-enter{0%{opacity:0;transform:translateY(var(--space-lg))}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.my-games-recent-item{transition:none}.my-games-recent-item-entering{animation:none}}.game-play-page{flex-direction:column;align-items:stretch;min-height:100dvh;display:flex}.game-play-status{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-lg);text-align:center;flex-direction:column;flex:1;display:flex}.game-play-status p{color:var(--text-secondary);margin:0}.game-layout{align-items:center;gap:var(--space-xl);padding:var(--space-lg);display:flex}.game-sidebar{width:130px;min-height:200px}.game-board-container{flex:1;justify-content:center;width:100%;min-width:0;display:flex;container-type:inline-size}.settings-tabs{gap:var(--space-xs);margin-bottom:var(--space-xl);border-bottom:1px solid var(--border-default);display:flex}.security-sessions-revoke-btn,.pat-revoke-btn,.passkey-delete-btn{margin-top:var(--space-sm);padding:var(--space-xs) var(--space-md);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-sm);cursor:pointer;background:0 0;font-size:.85rem;font-weight:500}.passkey-delete-btn{font-family:inherit}.security-sessions-revoke-btn:hover:not(:disabled),.passkey-delete-btn:hover:not(:disabled),.pat-revoke-btn:hover:not(:disabled),.settings-danger-btn:hover:not(:disabled){opacity:.85}.security-sessions-revoke-btn:disabled,.security-sessions-revoke-all-btn:disabled,.passkey-delete-btn:disabled,.passkey-add-btn:disabled,.passkey-register-btn:disabled,.passkey-prompt-setup-btn:disabled,.pat-revoke-btn:disabled,.pat-revoke-confirm-btn:disabled,.pat-create-btn:disabled,.pat-add-btn:disabled,.settings-data-export-btn:disabled,.settings-danger-btn:disabled{opacity:.5;cursor:not-allowed}.pat-management{margin-bottom:var(--space-lg)}.pat-new-token-value{padding:var(--space-xs) var(--space-sm);background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-sm);font-size:.8rem;font-family:var(--font-mono);flex:1;overflow-x:auto}@media (width<=1024px){:root{--mobile-nav-height:calc(56px + env(safe-area-inset-bottom,0px))}#conversation-shell,#messages-two-pane-shell{position:fixed;top:0;left:0;right:0}#conversation-shell [data-message-longpress],#messages-two-pane-shell [data-message-longpress]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.app-outlet{padding-bottom:calc(var(--mobile-nav-height) + var(--space-md))}.app-outlet--full-height{padding-bottom:0}.friends-tabs,.feature-requests-tabs{gap:0}}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){#floating-back-button{background-color:var(--glass-surface);-webkit-backdrop-filter:blur(var(--glass-blur))}}@media (prefers-reduced-transparency:reduce){#floating-back-button{background-color:var(--glass-surface-solid);-webkit-backdrop-filter:none}}@media (width>=1024px){#app-header-actions-overlay{display:none}}@media (width<=1023.98px){#app-header-shell{display:none}}.unified-game-layout--immersive{--immersive-hud-clearance:3rem;padding-top:calc(env(safe-area-inset-top) + var(--immersive-hud-clearance));padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.unified-game-layout--immersive .unified-game-board-column,.unified-game-layout--immersive .unified-game-board-area{flex:1;width:100%}.unified-game-layout--immersive .game-status{white-space:normal;justify-content:center;gap:var(--space-sm) var(--space-md);margin:var(--space-sm) auto;flex-wrap:wrap;max-width:100%;position:static;transform:none}[data-panel-resize-handle]{cursor:col-resize;transition:background-color var(--transition-fast);touch-action:none;-webkit-user-select:none;user-select:none;background-color:#0000}[data-panel-resize-handle]:after{content:"";background-color:var(--border-strong);width:1px;transition:background-color var(--transition-fast);position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}[data-panel-resize-handle]:hover,[data-panel-resize-handle][data-panel-resize-active=true]{background-color:var(--accent-primary)}[data-panel-resize-handle]:hover:after,[data-panel-resize-handle][data-panel-resize-active=true]:after{background-color:#0000}[data-panel-resize-handle]:focus-visible{outline:2px solid var(--accent-primary);outline-offset:1px}body.panel-resizing,body.panel-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}
