:root{--bg-base: #0c0c18;--bg-surface: #13132a;--bg-elevated: #1a1a3e;--bg-card: #181838;--bg-hover: #1f1f4a;--bg-input: #10102a;--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: rgba(99, 102, 241, .25);--accent-gold: #fbbf24;--accent-gold-dim: rgba(251, 191, 36, .15);--color-success: #34d399;--color-warning: #fbbf24;--color-danger: #f87171;--color-info: #60a5fa;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-tertiary: #64748b;--text-muted: #475569;--text-on-accent: #ffffff;--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .16);--border-accent: rgba(99, 102, 241, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(99, 102, 241, .15);--shadow-card: 0 2px 8px rgba(0, 0, 0, .3), 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;--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--board-light-color: #f0d9b5;--board-dark-color: #b58863}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background:var(--bg-base);color:var(--text-primary);min-height:100vh;line-height:1.6;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 60% at 50% -20%,rgba(99,102,241,.08),transparent),radial-gradient(ellipse 60% 40% at 80% 100%,rgba(168,85,247,.05),transparent);pointer-events:none;z-index:0}#root{position:relative;z-index:1}a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-primary-hover)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);font-family:var(--font-family);font-weight:600;font-size:.875rem;line-height:1;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-base),transform var(--transition-fast);white-space:nowrap}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.page-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg) var(--space-xl);width:100%;border-bottom:1px solid var(--border-subtle);background:#0c0c1899;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);position:sticky;top:0;z-index:50}.page-header h1{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-header-actions{display:flex;gap:var(--space-sm)}.page-header p{color:var(--text-tertiary);font-size:.875rem}.back-link{color:var(--text-secondary);text-decoration:none;font-family:var(--font-family);font-size:.875rem;font-weight:500;display:inline-flex;align-items:center;gap:4px;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:none;border:none;cursor:pointer;transition:all var(--transition-fast)}.back-link:before{content:"←";font-size:1rem}.back-link:hover{color:var(--text-primary);background:#ffffff0d}.game-list-page{max-width:960px;margin:0 auto;padding:0 var(--space-lg)}.game-list-page .page-header{position:relative;border-bottom:none;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;padding:var(--space-3xl) var(--space-md) var(--space-xl);flex-direction:column;align-items:center;text-align:center;gap:var(--space-sm)}.game-list-page .page-header h1{font-size:2.5rem;font-weight:800;letter-spacing:-.03em}.game-list-page .page-header p{font-size:1.05rem;color:var(--text-secondary)}.page-header-nav{position:absolute;top:var(--space-md);right:var(--space-md);display:flex;gap:var(--space-sm)}.header-nav-link{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);font-size:.875rem;font-weight:600;color:var(--text-secondary);border:1px solid var(--border-default);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-base)}.header-nav-link-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;font-size:.7rem;font-weight:700;color:#fff;background:var(--accent-primary);border-radius:999px;animation:header-nav-badge-pulse 1.5s ease-in-out}@keyframes header-nav-badge-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.header-nav-link:hover{color:var(--text-on-accent);background:var(--accent-gradient);border-color:transparent;box-shadow:0 4px 16px #6366f14d;transform:translateY(-1px)}.editor-link{display:inline-flex;align-items:center;gap:6px;margin-top:var(--space-md);padding:var(--space-sm) var(--space-lg);font-size:.875rem;font-weight:600;color:var(--text-secondary);border:1px solid var(--border-default);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-base)}.editor-link:hover{color:var(--text-on-accent);background:var(--accent-gradient);border-color:transparent;box-shadow:0 4px 16px #6366f14d;transform:translateY(-1px)}.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg);padding:var(--space-md) 0 var(--space-3xl)}.game-card{position:relative;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-xl);transition:all var(--transition-slow);overflow:hidden;display:flex;flex-direction:column}.game-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-lg);padding:1px;background:linear-gradient(135deg,#6366f100,#6366f100);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;transition:background var(--transition-slow)}.game-card:hover{border-color:var(--border-accent);transform:translateY(-4px);box-shadow:var(--shadow-lg),var(--shadow-glow)}.game-card:hover:before{background:linear-gradient(135deg,#6366f14d,#a855f74d)}.game-card-link{text-decoration:none;color:inherit;display:flex;flex-direction:column;flex:1}.game-card h2{font-size:1.25rem;font-weight:700;text-transform:capitalize;margin-bottom:var(--space-sm);letter-spacing:-.01em}.game-card p{color:var(--text-secondary);font-size:.875rem;line-height:1.5;margin-bottom:var(--space-md);flex:1}.player-count{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;font-weight:600;background:#6366f11f;color:var(--accent-primary-hover);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);width:fit-content}.player-count:before{content:"👥";font-size:.7rem}.multiplayer-button{display:inline-flex;align-items:center;justify-content:center;margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);font-size:.8rem;font-weight:600;font-family:var(--font-family);color:var(--text-on-accent);background:var(--accent-gradient);border:none;border-radius:var(--radius-sm);cursor:pointer;text-decoration:none;transition:all var(--transition-base)}.multiplayer-button:hover{background:var(--accent-gradient-hover);color:#fff;box-shadow:0 4px 16px #6366f14d;transform:translateY(-1px)}.open-games-badge{display:inline-flex;align-items:center;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);background:#22d3ee1a;border:1px solid rgba(34,211,238,.3);border-radius:var(--radius-sm);cursor:pointer;text-decoration:none;transition:all var(--transition-base)}.open-games-badge:hover{background:#22d3ee33;border-color:var(--accent-secondary)}.notification-prompt{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--bg-elevated);border:1px solid var(--accent-secondary);border-radius:8px;font-size:.875rem;color:var(--text-primary);position:absolute;top:var(--space-md);left:50%;transform:translate(-50%);z-index:10;white-space:nowrap}.notification-prompt-success{border-color:#4caf50;color:#4caf50}.notification-prompt-actions{display:flex;gap:var(--space-sm);flex-shrink:0}.notification-prompt-enable{padding:var(--space-xs) var(--space-md);background:var(--accent-gradient);color:var(--text-on-accent);border:none;border-radius:6px;cursor:pointer;font-size:.8125rem;font-weight:500}.notification-prompt-enable:hover{opacity:.9}.notification-prompt-enable:disabled{opacity:.5;cursor:not-allowed}.notification-prompt-dismiss{padding:var(--space-xs) var(--space-md);background:transparent;color:var(--text-secondary);border:1px solid var(--border-default);border-radius:6px;cursor:pointer;font-size:.8125rem}.notification-prompt-dismiss:hover{border-color:var(--text-secondary)}.notification-settings{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:8px;margin-bottom:var(--space-lg)}.notification-toggle{display:flex;align-items:center;gap:var(--space-md);font-size:.875rem;color:var(--text-primary)}.toggle-button{padding:var(--space-xs) var(--space-md);border:1px solid var(--border-default);border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:.8125rem;min-width:3rem}.toggle-button:hover{border-color:var(--text-secondary)}.toggle-button.toggle-active{background:var(--accent-gradient);color:var(--text-on-accent);border-color:transparent}.toggle-button:disabled{opacity:.5;cursor:not-allowed}.my-games-page{max-width:960px;margin:0 auto;padding:0 var(--space-lg);min-height:100vh}.my-games-content{padding:var(--space-xl) 0 var(--space-3xl)}.my-games-section{margin-bottom:var(--space-2xl)}.my-games-section h2{font-size:1.25rem;font-weight:700;margin-bottom:var(--space-md);color:var(--text-secondary)}.my-games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg)}.my-game-card{display:flex;flex-direction:column;gap:var(--space-sm);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-lg);text-decoration:none;color:inherit;transition:all var(--transition-base)}.my-game-card:hover{border-color:var(--border-accent);transform:translateY(-2px);box-shadow:var(--shadow-md),var(--shadow-glow)}.my-game-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.my-game-header h3{font-size:1.1rem;font-weight:700;flex:1}.my-game-status{flex-shrink:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.my-game-status-waiting{background:#fbbf2426;color:var(--accent-gold)}.my-game-status-active{background:#34d39926;color:var(--color-success)}.my-game-status-completed{background:#60a5fa26;color:var(--color-info)}.my-game-status-abandoned{background:#f871711a;color:var(--color-danger)}.my-game-your-turn{display:inline-block;font-size:.75rem;font-weight:600;color:var(--accent-primary);padding:var(--space-xs) var(--space-sm);background:#7c6aef1f;border-radius:var(--radius-sm)}.my-game-card-your-turn{border-left:3px solid var(--accent-primary)}.my-game-meta{display:flex;flex-wrap:wrap;gap:var(--space-md);font-size:.8rem;color:var(--text-tertiary)}.my-game-result{font-size:.875rem;color:var(--text-secondary);margin-top:var(--space-xs);font-style:italic}.my-games-loading,.my-games-empty{padding:var(--space-3xl);text-align:center;color:var(--text-tertiary)}.my-games-empty-link{display:inline-block;margin-top:var(--space-md);color:var(--accent-primary);text-decoration:none;font-weight:600}.my-games-empty-link:hover{color:var(--accent-primary-hover)}.my-games-error{padding:var(--space-xl);text-align:center;color:var(--color-danger)}.my-games-error a{display:inline-block;margin-top:var(--space-md);color:var(--accent-primary)}.game-play-page{display:flex;flex-direction:column;align-items:center;min-height:100vh}.game-layout{display:flex;align-items:center;gap:var(--space-xl);padding:var(--space-lg)}.game-sidebar{width:130px;min-height:200px}.game-board-container{display:flex;justify-content:center}.game-play-page-unified{width:100%}.unified-game-layout{display:flex;flex:1;width:100%;min-height:0}.unified-game-board-area{display:flex;align-items:center;gap:var(--space-xl);padding:var(--space-lg);flex:1;min-width:0;justify-content:center;position:relative}.unified-game-board-area .game-board-container,.board-wrapper{position:relative}.board-preview-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0c0c1880;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:var(--radius-md);pointer-events:none}.board-preview-overlay p{font-size:1rem;font-weight:500;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)}.player-sidebar{width:300px;min-width:300px;max-width:300px;border-left:1px solid var(--border-subtle);background:#13132acc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;flex-direction:column;transition:width var(--transition-base),min-width var(--transition-base)}.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,.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:none}.player-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border-subtle)}.player-sidebar-title{font-size:1rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-header-rules-btn{flex-shrink:0;padding:var(--space-xs) var(--space-sm);font-size:.75rem;font-weight:600;font-family:var(--font-family);background:var(--accent-gradient);color:var(--text-on-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.sidebar-header-rules-btn:hover{background:var(--accent-gradient-hover);box-shadow:0 2px 8px #6366f140}.sidebar-toggle-btn{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;font-size:.75rem;transition:all var(--transition-fast)}.sidebar-toggle-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.player-sidebar-tabs{display:flex;border-bottom:1px solid var(--border-subtle)}.player-sidebar-tab{flex:1;padding:var(--space-sm) var(--space-md);font-size:.875rem;font-weight:500;font-family:var(--font-family);background:none;border:none;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast)}.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);overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:var(--space-lg)}.sidebar-actions{margin-top:auto;padding:var(--space-lg);border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:var(--space-sm)}.sidebar-actions-row{display:flex;gap:var(--space-sm)}.player-slots-list{display:flex;flex-direction:column;gap:var(--space-sm)}.player-slot{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs)}.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{font-size:.75rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.player-slot-status{font-size:.9rem;font-weight:500}.player-slot.filled .player-slot-status{color:var(--color-success)}.player-slot-type-select{width:100%;background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-primary);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-family:var(--font-family);font-size:.875rem;cursor:pointer}.player-slot-type-select:focus{outline:none;border-color:var(--accent-primary)}.player-slot-invite-hint{font-size:.75rem;color:var(--text-tertiary);margin-top:var(--space-xs)}.player-count-controls{display:flex;gap:var(--space-sm)}.player-add-btn,.player-remove-btn{flex:1;padding:var(--space-xs) var(--space-sm);font-size:.8rem;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-add-btn:hover,.player-remove-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.share-link-section{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.share-link-label{font-size:.75rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.share-link-url{font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary);word-break:break-all}.share-link-section .copy-link-button{margin-top:var(--space-xs)}.observer-mode-section{display:flex;flex-direction:column;gap:var(--space-sm)}.observer-mode-indicator{font-size:.875rem;font-weight:600;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}.observer-count{font-size:.8rem;color:var(--text-tertiary);padding:var(--space-xs)}.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:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base)}.start-game-button:hover:not(:disabled){background:var(--accent-gradient-hover);box-shadow:0 4px 16px #6366f14d;transform:translateY(-1px)}.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{width:100%;height:6px;background:var(--bg-secondary);border-radius:3px;overflow:hidden;margin-bottom:var(--space-xs)}.ai-progress-fill{height:100%;background:var(--accent-gradient);border-radius:3px;transition:width .3s ease}.ai-progress-text{font-size:.75rem;color:var(--text-tertiary);display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ai-progress-text.ai-error{color:var(--color-danger)}.ai-thinking-indicator{display:inline-block;animation:ai-pulse 1.5s ease-in-out infinite}@keyframes ai-pulse{0%,to{opacity:1}50%{opacity:.5}}.player-sidebar-error{background:#f871711a;border:1px solid rgba(248,113,113,.3);color:var(--color-danger);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);font-size:.875rem}.player-sidebar-join-tab .join-code-form{margin-bottom:var(--space-md)}.lobby-section-title{font-size:.9rem;font-weight:600;margin-bottom:var(--space-sm)}.board{display:inline-flex;flex-direction:column;border:2px solid var(--border-strong);border-radius:var(--radius-md);overflow:hidden;-webkit-user-select:none;user-select:none;box-shadow:var(--shadow-lg)}.board-row{display:flex;align-items:center}.rank-label{width:22px;text-align:center;font-size:.7rem;font-weight:600;color:var(--text-muted)}.file-labels{display:flex}.file-label{width:64px;text-align:center;font-size:.7rem;font-weight:600;color:var(--text-muted);padding:3px 0}.square{width:64px;height:64px;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:background var(--transition-fast)}.square-light{background:var(--board-light-color)}.square-dark{background:var(--board-dark-color)}.square-selected{background:#7b9a5c!important;box-shadow:inset 0 0 0 2px #ffffff4d}.square-legal{cursor:pointer}.square-last-from{background:#cdd26a59}.square-last-to{background:#cdd26a80}.square-capture{background:radial-gradient(transparent 50%,#dc3c3c59 50%)!important}.square-capture.square-light{background:radial-gradient(transparent 50%,#dc3c3c59 50%),var(--board-light-color)!important}.square-capture.square-dark{background:radial-gradient(transparent 50%,#dc3c3c59 50%),var(--board-dark-color)!important}.move-dot{width:18px;height:18px;border-radius:50%;background:#0003}.square-circle{border-radius:50%}.square-rectangle{border-radius:4px}.square-unused{width:64px;height:64px;visibility:hidden}.board-mancala .square-rectangle{width:64px;height:128px}.board-mancala .square-circle.square-legal{background:#34d3994d!important}.piece{font-size:2.5rem;line-height:1;pointer-events:none}.piece-img{width:52px;height:52px;object-fit:contain;filter:drop-shadow(0 1px 3px rgba(0,0,0,.4))}.piece-text{display:flex;align-items:center;justify-content:center;width:52px;height:52px;font-size:1.5rem;font-weight:700;border-radius:50%}.piece-count{display:flex;align-items:center;justify-content:center;width:52px;height:52px;font-size:1.5rem;font-weight:700;color:#333}.piece-player-1{filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}.piece-player-2{filter:drop-shadow(0 1px 3px rgba(0,0,0,.3))}.piece-text.piece-player-1{color:#fff;background:#ffffff26}.piece-text.piece-player-2{color:#333;background:#00000026}.game-status{display:flex;gap:var(--space-xl);padding:var(--space-sm) var(--space-xl);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);align-items:center;box-shadow:var(--shadow-sm);position:absolute;bottom:var(--space-md);left:50%;transform:translate(-50%);z-index:10;white-space:nowrap}.status-item{display:flex;gap:var(--space-sm);align-items:center}.status-label{color:var(--text-tertiary);font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.status-value{font-weight:700;font-size:.95rem}.player-1{color:var(--board-light-color)}.player-2{color:var(--text-secondary)}.status-restriction{color:var(--color-danger);font-weight:700;animation:pulse 1.5s ease-in-out infinite}.status-result{color:var(--accent-gold);font-weight:700}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.multiplayer-status{gap:var(--space-lg)}.your-turn{color:var(--color-success);font-weight:700;font-size:.95rem}.opponent-turn{color:var(--text-secondary);font-size:.9rem}.game-result{color:var(--accent-gold);font-weight:700}.connection-indicator{display:inline-flex;align-items:center;gap:6px}.connection-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px currentColor}.connection-label{font-size:.75rem;color:var(--text-secondary)}.captured-pieces{padding:var(--space-sm)}.captured-pieces h3{font-size:.7rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-sm)}.captured-list{display:flex;flex-wrap:wrap;gap:2px}.captured-list .piece{font-size:1.25rem}.captured-list .piece-img{width:28px;height:28px}.captured-list .piece-text{width:28px;height:28px;font-size:.75rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-content{background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);animation:slideUp .25s ease}.game-over-content{padding:var(--space-2xl) var(--space-3xl);text-align:center}.game-over-content h2{font-size:1.75rem;font-weight:800;margin-bottom:var(--space-sm);letter-spacing:-.02em}.game-over-content p{color:var(--accent-gold);font-size:1.2rem;font-weight:600;margin-bottom:var(--space-xl);text-transform:capitalize}.game-over-content button{background:var(--accent-gradient);color:var(--text-on-accent);border:none;padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:1rem;font-weight:600;transition:all var(--transition-base)}.game-over-content button:hover{background:var(--accent-gradient-hover);box-shadow:0 4px 16px #6366f14d;transform:translateY(-1px)}.game-over-actions{display:flex;gap:var(--space-md);justify-content:center}.transform-dialog{padding:var(--space-xl) var(--space-2xl);text-align:center}.transform-dialog h3{margin-bottom:var(--space-md);font-weight:700}.transform-options{display:flex;gap:var(--space-sm)}.transform-option{background:var(--board-light-color);border:2px solid var(--border-strong);border-radius:var(--radius-md);width:64px;height:64px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}.transform-option:hover{border-color:var(--accent-gold);box-shadow:0 0 12px #fbbf244d;transform:scale(1.05)}.rules-button{background:var(--accent-gradient);color:var(--text-on-accent);border:none;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.8rem;font-weight:600;transition:all var(--transition-base)}.rules-button:hover{background:var(--accent-gradient-hover);box-shadow:0 2px 12px #6366f140}.restart-button,.leave-button{background:transparent;border:1px solid var(--border-default);color:var(--text-secondary);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.8rem;font-weight:500;transition:all var(--transition-fast)}.restart-button:hover,.leave-button:hover{color:var(--text-primary);border-color:var(--border-strong);background:#ffffff0a}.undo-button,.redo-button{background:transparent;border:1px solid var(--border-default);color:var(--text-secondary);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.8rem;font-weight:500;transition:all var(--transition-fast)}.undo-button:hover:not(:disabled),.redo-button:hover:not(:disabled){color:var(--text-primary);border-color:var(--border-strong);background:#ffffff0a}.undo-button:disabled,.redo-button:disabled{opacity:.35;cursor:not-allowed}.confirm-dialog{padding:var(--space-2xl) var(--space-2xl);text-align:center}.confirm-dialog h2{font-size:1.5rem;font-weight:700;margin-bottom:var(--space-sm)}.confirm-dialog p{color:var(--text-secondary);font-size:.95rem;line-height:1.6}.confirm-dialog-actions{display:flex;gap:var(--space-md);justify-content:center;margin-top:var(--space-xl)}.confirm-dialog-cancel{background:transparent;border:1px solid var(--border-default);color:var(--text-secondary);padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:.95rem;font-weight:500;transition:all var(--transition-fast)}.confirm-dialog-cancel:hover{color:var(--text-primary);border-color:var(--border-strong);background:#ffffff0a}.confirm-dialog-confirm{background:var(--accent-gradient);color:var(--text-on-accent);border:none;padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:.95rem;font-weight:600;transition:all var(--transition-base)}.confirm-dialog-confirm:hover{background:var(--accent-gradient-hover);box-shadow:0 4px 16px #6366f14d}.rules-modal{max-width:680px;width:90%;max-height:80vh;display:flex;flex-direction:column}.rules-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--border-subtle)}.rules-modal-header h2{font-size:1.25rem;font-weight:700;text-transform:capitalize}.rules-close-button{background:transparent;border:1px solid var(--border-default);color:var(--text-secondary);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.8rem;font-weight:500;transition:all var(--transition-fast)}.rules-close-button:hover{color:var(--text-primary);border-color:var(--border-strong);background:#ffffff0a}.rules-modal .game-rules-content{padding:var(--space-xl);overflow-y:auto}.game-rules-page{max-width:680px;margin:0 auto;padding:var(--space-md)}.game-rules-page .game-rules-content{padding:var(--space-md) 0}.game-rules-content h1{font-size:1.5rem;font-weight:800;margin-bottom:var(--space-md);letter-spacing:-.01em}.game-rules-content h2{font-size:1.2rem;font-weight:700;margin-top:var(--space-xl);margin-bottom:var(--space-sm);color:var(--accent-primary-hover)}.game-rules-content h3{font-size:1rem;font-weight:600;margin-top:var(--space-md);margin-bottom:var(--space-xs);color:var(--text-secondary)}.game-rules-content p{line-height:1.7;margin-bottom:var(--space-md);color:var(--text-secondary)}.game-rules-content ul,.game-rules-content ol{margin-bottom:var(--space-md);padding-left:var(--space-xl)}.game-rules-content li{line-height:1.7;color:var(--text-secondary);margin-bottom:var(--space-xs)}.game-rules-content strong{color:var(--text-primary);font-weight:600}.game-rules-content hr{border:none;border-top:1px solid var(--border-subtle);margin:var(--space-lg) 0}.player-select-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-xl);padding:var(--space-3xl) var(--space-xl)}.player-select-container h2{font-size:1.75rem;font-weight:700;color:var(--text-primary)}.player-select-options{display:flex;gap:var(--space-md)}.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);font-size:1.15rem;font-weight:600;transition:all var(--transition-base)}.player-select-button:hover{border-color:var(--accent-primary);transform:translateY(-3px);box-shadow:var(--shadow-lg),var(--shadow-glow)}.join-code-form{display:flex;gap:var(--space-sm)}.join-code-input{flex:1;min-width:0;background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-primary);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:1.1rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;text-align:center;outline:none;transition:border-color var(--transition-fast)}.join-code-input::placeholder{color:var(--text-muted);font-family:var(--font-family);font-size:.8rem;letter-spacing:normal;text-transform:none;font-weight:400}.join-code-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-glow)}.join-code-button{background:var(--accent-gradient);color:var(--text-on-accent);border:none;padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:.95rem;font-weight:600;transition:all var(--transition-base);white-space:nowrap}.join-code-button:hover{background:var(--accent-gradient-hover);box-shadow:0 4px 16px #6366f14d}.join-code-button:disabled{opacity:.4;cursor:not-allowed}.lobby-list{display:flex;flex-direction:column;gap:var(--space-sm)}.lobby-game-card{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-md);transition:border-color var(--transition-fast)}.lobby-game-card:hover{border-color:var(--border-default)}.lobby-game-info{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.lobby-game-name{font-weight:600;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lobby-game-meta{display:flex;align-items:center;gap:var(--space-sm)}.lobby-game-players{font-size:.75rem;color:var(--text-secondary);background:#6366f11a;padding:2px 8px;border-radius:var(--radius-sm);white-space:nowrap}.lobby-game-time{font-size:.75rem;color:var(--text-tertiary);white-space:nowrap}.lobby-join-button{background:var(--accent-gradient);color:var(--text-on-accent);border:none;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.8rem;font-weight:600;transition:all var(--transition-base)}.lobby-join-button:hover{background:var(--accent-gradient-hover);box-shadow:0 2px 12px #6366f140}.lobby-loading,.lobby-error,.lobby-empty{text-align:center;padding:var(--space-lg);color:var(--text-tertiary);font-size:.875rem}.lobby-error{color:var(--color-danger)}.copy-link-button{background:transparent;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);font-size:.875rem;font-weight:500;transition:all var(--transition-fast)}.copy-link-button:hover{color:var(--text-primary);border-color:var(--accent-primary);background:#6366f114}.player-slots{display:flex;flex-direction:column;gap:var(--space-sm);width:100%}.player-slot{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-surface);transition:all var(--transition-base)}.player-slot.filled{border-color:#34d3994d;background:#34d3990d}.player-slot-number{font-weight:600;font-size:.9rem}.player-slot-status{font-size:.8rem;color:var(--text-tertiary)}.player-slot.filled .player-slot-status{color:var(--color-success);font-weight:600}.waiting-spinner{padding:var(--space-md)}.spinner{width:32px;height:32px;border:3px solid var(--border-default);border-top-color:var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.domino-game-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);width:100%}.domino-play-area{display:inline-flex;flex-direction:column;border:2px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden;-webkit-user-select:none;user-select:none}.domino-play-row{display:flex}.domino-cell{width:48px;height:48px;display:flex;align-items:center;justify-content:center;cursor:default;position:relative;overflow:visible}.domino-cell .piece-img{width:42px;height:42px}.domino-cell-primary-horizontal .piece-img{width:90px;height:42px;position:absolute;left:3px;top:3px;z-index:2}.domino-cell-primary-vertical .piece-img{width:90px;height:42px;position:absolute;left:-21px;top:-21px;z-index:2;transform:rotate(90deg);transform-origin:center center}.domino-cell-secondary{pointer-events:none}.domino-cell-secondary .piece-img{display:none}.domino-cell-flipped.domino-cell-primary-horizontal .piece-img{transform:scaleX(-1)}.domino-cell-flipped.domino-cell-primary-vertical .piece-img{transform:rotate(90deg) scaleX(-1)}.domino-cell-target{cursor:pointer;background:#34d3994d!important}.domino-info-bar{display:flex;align-items:center;gap:var(--space-lg);padding:var(--space-sm) var(--space-md);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.domino-boneyard{font-size:.85rem;color:var(--text-secondary)}.domino-draw-button{background:var(--accent-gradient);color:var(--text-on-accent);border:none;padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.85rem;font-weight:600;transition:all var(--transition-base)}.domino-draw-button:hover{background:var(--accent-gradient-hover);box-shadow:0 2px 12px #6366f140}.domino-hand{width:100%;max-width:800px;padding:var(--space-sm)}.domino-hand-label{font-size:.8rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:var(--space-sm);text-align:center}.domino-hand-tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}.domino-hand-tile{width:64px;height:48px;display:flex;align-items:center;justify-content:center;border:2px solid transparent;border-radius:var(--radius-sm);background:var(--bg-card);cursor:default;transition:all var(--transition-fast)}.domino-hand-tile .piece-img{width:56px;height:40px}.domino-hand-tile-playable{cursor:pointer;border-color:var(--border-default)}.domino-hand-tile-playable:hover{border-color:var(--accent-gold);transform:translateY(-3px);box-shadow:0 4px 12px #fbbf2426}.domino-hand-tile-selected{border-color:var(--accent-gold)!important;background:#fbbf2414;transform:translateY(-5px);box-shadow:0 6px 20px #fbbf2433}.domino-hand-tile-disabled{opacity:.4}.solitaire-board{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);padding:var(--space-md);max-width:700px;margin:0 auto}.solitaire-top-row{display:flex;gap:8px;width:100%;justify-content:center}.solitaire-spacer{width:16px}.solitaire-pile{width:72px;height:100px;border-radius:var(--radius-sm);cursor:pointer;position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:center}.solitaire-pile-empty{border:2px dashed var(--border-default);background:#ffffff05}.solitaire-empty-label{color:var(--text-muted);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.solitaire-card{width:72px;height:100px;border-radius:var(--radius-sm);overflow:hidden;display:flex;align-items:center;justify-content:center}.solitaire-card-back{position:relative;background:linear-gradient(135deg,#4338ca,#6366f1);border:1px solid #3730a3}.solitaire-card-back .solitaire-card-img{position:absolute;top:0;right:0;bottom:0;left:0}.solitaire-card-face{background:#fff;border:1px solid #d1d5db}.solitaire-card-img{width:100%;height:100%;object-fit:contain}.solitaire-card-text{color:#333;font-size:.6rem;text-align:center;word-break:break-all;padding:2px}.solitaire-stock{cursor:pointer}.solitaire-stock-count{color:#ffffffb3;font-size:.6rem;font-weight:600;position:absolute;bottom:2px;right:4px}.solitaire-recycle-icon{color:var(--text-muted);font-size:1.5rem}.solitaire-foundation-symbol{color:var(--text-muted);font-size:1.5rem;opacity:.5}.solitaire-foundation-count{position:absolute;bottom:2px;right:4px;font-size:.6rem;font-weight:600;color:var(--text-tertiary)}.solitaire-selected{box-shadow:0 0 0 3px var(--accent-gold);border-radius:var(--radius-sm)}.solitaire-target{box-shadow:0 0 0 3px #34d39999;border-radius:var(--radius-sm)}.solitaire-tableau-row{display:flex;gap:8px;width:100%;justify-content:center;align-items:flex-start}.solitaire-tableau-col{width:72px;position:relative;flex-shrink:0;border-radius:var(--radius-sm)}.solitaire-tableau-col.solitaire-target{background:#34d39914}.solitaire-tableau-card{width:72px;height:100px;border-radius:var(--radius-sm);position:absolute;left:0;cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.solitaire-tableau-card.solitaire-card-back{cursor:default}.solitaire-tableau-card.solitaire-card-face{background:#fff;border:1px solid #d1d5db}.solitaire-tableau-card.solitaire-selected{box-shadow:0 0 0 3px var(--accent-gold);z-index:10}.solitaire-tableau-card.solitaire-card-face:hover{box-shadow:0 4px 12px #0006;z-index:5}.go-fish-board{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);padding:var(--space-md);max-width:800px;margin:0 auto}.go-fish-opponents{display:flex;gap:var(--space-md);flex-wrap:wrap;justify-content:center;width:100%}.go-fish-opponent{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);background:#ffffff08;border:2px solid transparent;min-width:140px;transition:all var(--transition-fast)}.go-fish-opponent-askable{border-color:#34d39980;background:#34d3990f;cursor:pointer}.go-fish-opponent-askable:hover{background:#34d3991f;box-shadow:0 0 16px #34d3991a}.go-fish-opponent-info{display:flex;flex-direction:column;align-items:center;gap:2px}.go-fish-opponent-name{font-weight:700;font-size:.85rem}.go-fish-opponent-count{font-size:.75rem;color:var(--text-tertiary)}.go-fish-opponent-books{font-size:.7rem;color:var(--accent-gold);font-weight:600}.go-fish-opponent-cards{display:flex;gap:2px}.go-fish-card-overflow{font-size:.7rem;color:var(--text-tertiary);align-self:center;margin-left:2px}.go-fish-ask-button{padding:4px 14px;border-radius:var(--radius-sm);border:1px solid var(--color-success);background:#34d39926;color:var(--color-success);font-family:var(--font-family);font-size:.75rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.go-fish-ask-button:hover{background:#34d3994d}.go-fish-card{width:52px;height:72px;border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0}.go-fish-card-back{position:relative;background:linear-gradient(135deg,#4338ca,#6366f1);border:1px solid #3730a3}.go-fish-card-back .go-fish-card-img{position:absolute;top:0;right:0;bottom:0;left:0}.go-fish-card-face{background:#fff;border:1px solid #d1d5db;cursor:pointer;transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.go-fish-card-face:hover{box-shadow:0 4px 12px #0006;transform:translateY(-2px)}.go-fish-card-img{width:100%;height:100%;object-fit:contain}.go-fish-card-text{color:#333;font-size:.5rem;text-align:center;word-break:break-all;padding:2px}.go-fish-stock{display:flex;flex-direction:column;align-items:center;gap:4px}.go-fish-stock-pile{position:relative;display:flex;align-items:center;justify-content:center}.go-fish-stock-clickable{cursor:pointer}.go-fish-stock-clickable:hover .go-fish-card-back{box-shadow:0 0 0 3px #34d39999}.go-fish-stock-count{position:absolute;bottom:2px;right:4px;font-size:.6rem;font-weight:600;color:#ffffffb3}.go-fish-stock-empty{width:52px;height:72px;border:2px dashed var(--border-default);border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.7rem}.go-fish-stock-label{font-size:.7rem;color:var(--text-tertiary);font-weight:500}.go-fish-prompt{font-size:.9rem;color:var(--text-secondary);text-align:center;min-height:1.4em}.go-fish-hand{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);width:100%}.go-fish-hand-label{font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.go-fish-hand-cards{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.go-fish-hand-group{display:flex;gap:2px;padding:4px;border-radius:var(--radius-sm);border:2px solid transparent;cursor:pointer;transition:all var(--transition-fast)}.go-fish-hand-group:hover{background:#ffffff0a}.go-fish-hand-group-selected{border-color:var(--accent-gold);background:var(--accent-gold-dim)}.go-fish-books-section{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);width:100%}.go-fish-books-label{font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.go-fish-books-list{display:flex;gap:var(--space-lg);flex-wrap:wrap;justify-content:center}.go-fish-player-books{display:flex;flex-direction:column;align-items:center;gap:4px}.go-fish-player-books-name{font-size:.75rem;font-weight:700}.go-fish-book-groups{display:flex;gap:4px;flex-wrap:wrap}.go-fish-book-group{background:var(--accent-gold-dim);border:1px solid rgba(251,191,36,.3);border-radius:4px;padding:2px 10px}.go-fish-book-rank{font-size:.7rem;font-weight:700;color:var(--accent-gold)}@keyframes card-enter{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes card-flip{0%{transform:scaleX(1)}50%{transform:scaleX(0)}to{transform:scaleX(1)}}.card-enter{animation:card-enter .3s ease-out}.card-flip{animation:card-flip .4s ease-in-out}.editor-dashboard{max-width:720px;margin:0 auto;padding:var(--space-3xl) var(--space-lg) var(--space-2xl)}.editor-dashboard-header{text-align:center;margin-bottom:var(--space-2xl)}.editor-dashboard-header h1{font-size:2rem;font-weight:800;letter-spacing:-.03em;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:var(--space-sm)}.editor-dashboard-header p{color:var(--text-secondary);font-size:.95rem}.editor-dashboard-create{display:flex;gap:var(--space-sm);margin-bottom:var(--space-2xl);justify-content:center}.editor-dashboard-input{background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-primary);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-family:var(--font-family);font-size:.875rem;width:260px;outline:none;transition:border-color var(--transition-fast)}.editor-dashboard-input::placeholder{color:var(--text-muted)}.editor-dashboard-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-glow)}.editor-dashboard-create-btn{background:var(--accent-gradient);color:var(--text-on-accent);border:none;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:.875rem;font-weight:600;transition:all var(--transition-base);white-space:nowrap}.editor-dashboard-create-btn:hover:not(:disabled){background:var(--accent-gradient-hover);box-shadow:0 4px 16px #6366f14d;transform:translateY(-1px)}.editor-dashboard-create-btn:disabled{opacity:.4;cursor:not-allowed}.editor-dashboard-subtitle{font-size:.75rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-md)}.editor-project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-md)}.editor-project-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-lg);cursor:pointer;transition:all var(--transition-slow);display:flex;flex-direction:column;gap:var(--space-xs)}.editor-project-card:hover{border-color:var(--border-accent);transform:translateY(-3px);box-shadow:var(--shadow-lg),var(--shadow-glow)}.editor-project-name{font-weight:700;font-size:1rem;color:var(--text-primary)}.editor-project-path{font-size:.75rem;color:var(--text-tertiary);font-family:var(--font-mono)}.editor-dashboard-empty{text-align:center;padding:var(--space-2xl);color:var(--text-tertiary);font-size:.875rem}.editor-dashboard-loading{text-align:center;padding:var(--space-3xl);color:var(--text-tertiary);font-size:.95rem}.editor-shell{display:flex;flex-direction:column;height:100vh;background:var(--bg-base)}.editor-header{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border-subtle);background:#0c0c18b3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;gap:var(--space-md);flex-shrink:0}.editor-back-btn{background:transparent;border:1px solid var(--border-default);color:var(--text-secondary);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);font-size:.8rem;font-weight:500;transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:4px}.editor-back-btn:hover{color:var(--text-primary);border-color:var(--border-strong);background:#ffffff0a}.editor-header-title{font-size:1rem;font-weight:700;letter-spacing:-.01em;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.editor-status-badge{font-size:.7rem;font-weight:600;padding:2px var(--space-sm);border-radius:var(--radius-sm);text-transform:capitalize;letter-spacing:.02em}.editor-status-connected{background:#34d3991f;color:var(--color-success)}.editor-status-connecting{background:#fbbf241f;color:var(--color-warning)}.editor-status-disconnected{background:#f871711f;color:var(--color-danger)}.editor-main{flex:1;overflow:auto;padding:0;min-height:0}.editor-empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-tertiary);font-size:.875rem;padding:var(--space-2xl)}.editor-layout{flex:1;display:flex;min-height:0;overflow:hidden}.editor-panel{overflow:auto;position:relative;flex-shrink:0}.editor-panel-center{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.editor-resize-handle{width:4px;flex-shrink:0;cursor:col-resize;background:var(--border-subtle);transition:background var(--transition-fast)}.editor-resize-handle:hover{background:var(--accent-primary)}.editor-panel-collapse-btn{position:absolute;top:var(--space-sm);padding:2px 6px;font-size:.6rem;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast);z-index:2}.editor-panel-collapse-btn:hover{color:var(--text-primary);border-color:var(--border-strong);background:var(--bg-hover)}.editor-panel-collapse-left{right:var(--space-sm)}.editor-panel-collapse-right{left:var(--space-sm)}.editor-panel-expand-btn{padding:var(--space-sm) 4px;font-size:.6rem;border:none;background:var(--bg-surface);color:var(--text-tertiary);cursor:pointer;writing-mode:vertical-rl;text-orientation:mixed;transition:all var(--transition-fast);letter-spacing:.05em;font-weight:600}.editor-panel-expand-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.editor-panel-expand-left{border-right:1px solid var(--border-subtle)}.editor-panel-expand-right{border-left:1px solid var(--border-subtle)}.file-tree{display:flex;flex-direction:column;height:100%;border-right:1px solid var(--border-subtle);background:var(--bg-surface);min-width:0}.file-tree-header{padding:var(--space-sm);border-bottom:1px solid var(--border-subtle);display:flex;gap:var(--space-xs);align-items:center}.file-tree-new-btn{padding:var(--space-xs) var(--space-sm);font-size:.75rem;font-weight:600;background:var(--accent-gradient);color:var(--text-on-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);transition:all var(--transition-base)}.file-tree-new-btn:hover{background:var(--accent-gradient-hover);box-shadow:0 2px 8px #6366f140}.file-tree-new-form{padding:var(--space-sm);display:flex;gap:var(--space-xs);border-bottom:1px solid var(--border-subtle)}.file-tree-input{flex:1;padding:var(--space-xs) var(--space-sm);font-size:.75rem;background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-primary);border-radius:var(--radius-sm);font-family:var(--font-mono);outline:none;transition:border-color var(--transition-fast)}.file-tree-input::placeholder{color:var(--text-muted);font-family:var(--font-family)}.file-tree-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-glow)}.file-tree-add-btn{padding:var(--space-xs) var(--space-sm);font-size:.75rem;font-weight:600;background:var(--accent-gradient);color:var(--text-on-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-family);transition:all var(--transition-base)}.file-tree-content{flex:1;overflow:auto;padding:var(--space-xs)}.file-tree-empty{padding:var(--space-sm);color:var(--text-muted);font-size:.75rem}.file-tree-node{padding:3px var(--space-sm);cursor:pointer;border-radius:var(--radius-sm);font-size:.8rem;color:var(--text-secondary);display:flex;align-items:center;gap:6px;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none}.file-tree-node:hover{background:#ffffff0a;color:var(--text-primary)}.file-tree-node-active{background:#6366f11f;color:var(--text-primary)}.file-tree-node-active:hover{background:#6366f12e}.file-tree-node-folder{color:var(--text-tertiary);font-weight:500}.file-tree-chevron{width:14px;display:inline-block;font-size:.55rem;color:var(--text-muted);text-align:center}.file-tree-icon{font-size:.85rem;flex-shrink:0}.file-tree-collab-dot{font-size:.55rem;color:var(--color-success)}.file-tree-context-menu{position:fixed;z-index:1000;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-xs) 0;min-width:140px}.file-tree-menu-item{display:block;width:100%;padding:6px var(--space-md);text-align:left;background:none;border:none;cursor:pointer;font-size:.8rem;font-family:var(--font-family);color:var(--text-secondary);transition:all var(--transition-fast)}.file-tree-menu-item:hover{background:#ffffff0f;color:var(--text-primary)}.file-tree-menu-item-danger{color:var(--color-danger)}.file-tree-menu-item-danger:hover{background:#f871711a;color:var(--color-danger)}.editor-tab-bar{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);padding:0 var(--space-sm);flex-shrink:0;min-height:36px}.editor-tab{display:flex;align-items:center;gap:6px;padding:var(--space-sm) var(--space-md);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all var(--transition-fast)}.editor-tab:hover{background:#ffffff08}.editor-tab-active{border-bottom-color:var(--accent-primary);background:#6366f10f}.editor-tab-name{font-size:.8rem;color:var(--text-tertiary);font-weight:500}.editor-tab-active .editor-tab-name{color:var(--text-primary)}.editor-tab-close{padding:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);font-size:14px;transition:all var(--transition-fast)}.editor-tab-close:hover{color:var(--text-primary);background:#ffffff14}.editor-tab-presence{display:flex;gap:2px}.editor-tab-dot{width:6px;height:6px;border-radius:50%}.diagnostics-panel{flex:1;overflow:auto;background:var(--bg-surface)}.diagnostics-header{padding:var(--space-sm) var(--space-md);font-size:.75rem;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle);text-transform:uppercase;letter-spacing:.04em}.diagnostics-empty{padding:var(--space-lg);color:var(--text-muted);font-size:.75rem;text-align:center}.diagnostics-content{padding:var(--space-sm)}.diagnostics-file-group{margin-bottom:var(--space-md)}.diagnostics-file-name{font-size:.7rem;color:var(--text-tertiary);margin-bottom:var(--space-xs);font-family:var(--font-mono)}.diagnostics-item{padding:var(--space-xs) var(--space-sm);margin-bottom:var(--space-xs);font-size:.75rem;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.diagnostics-item:hover{filter:brightness(1.2)}.diagnostics-error{background:#f871711a;color:var(--color-danger)}.diagnostics-warning{background:#fbbf241a;color:var(--color-warning)}.diagnostics-info{background:#60a5fa1a;color:var(--color-info)}.diagnostics-code{font-weight:700}.diagnostics-line{opacity:.7}.preview-panel{border-bottom:1px solid var(--border-subtle);background:var(--bg-surface)}.preview-header{padding:var(--space-sm) var(--space-md);font-size:.75rem;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;gap:var(--space-sm);text-transform:uppercase;letter-spacing:.04em}.preview-auto-label{display:flex;align-items:center;gap:var(--space-xs);font-size:.7rem;color:var(--text-tertiary);font-weight:500;text-transform:none;letter-spacing:normal;cursor:pointer}.preview-auto-label input[type=checkbox]{accent-color:var(--accent-primary)}.preview-reset-btn{padding:2px var(--space-sm);font-size:.65rem;font-weight:600;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:transparent;color:var(--text-tertiary);cursor:pointer;font-family:var(--font-family);text-transform:none;letter-spacing:normal;transition:all var(--transition-fast)}.preview-reset-btn:hover{color:var(--text-primary);border-color:var(--border-strong);background:#ffffff0a}.preview-placeholder{padding:var(--space-lg);color:var(--text-muted);font-size:.8rem}.preview-content{padding:var(--space-md)}.collab-avatars{display:flex;align-items:center;gap:var(--space-xs);margin-left:auto}.collab-count{font-size:.7rem;color:var(--text-tertiary);margin-right:var(--space-xs)}.collab-avatar{width:24px;height:24px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;border:2px solid var(--bg-base);margin-left:-4px}.collab-avatar:first-of-type{margin-left:0}.code-editor-wrap{flex:1;min-height:0;overflow:hidden}.code-editor-wrap .cm-editor{height:100%;background:var(--bg-base);color:var(--text-primary)}.code-editor-wrap .cm-editor.cm-focused{outline:none}.code-editor-wrap .cm-gutters{background:var(--bg-surface);color:var(--text-muted);border-right:1px solid var(--border-subtle)}.code-editor-wrap .cm-activeLineGutter{background:#6366f114}.code-editor-wrap .cm-activeLine{background:#ffffff08}.code-editor-wrap .cm-selectionBackground{background:#6366f140!important}.code-editor-wrap .cm-cursor{border-left-color:var(--accent-primary-hover)}.code-editor-wrap .cm-matchingBracket{background:#6366f133;outline:1px solid rgba(99,102,241,.4)}.code-editor-wrap .cm-tooltip{background:var(--bg-elevated);border:1px solid var(--border-default);color:var(--text-primary)}.code-editor-wrap .cm-tooltip-lint{background:var(--bg-elevated)}.code-editor-wrap .cm-panel{background:var(--bg-surface);border-top:1px solid var(--border-subtle)}.code-editor-wrap .cm-scroller{font-family:var(--font-mono);font-size:13px;line-height:1.6}.editor-right-panel{display:flex;flex-direction:column;height:100%;background:var(--bg-surface)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}::selection{background:#6366f14d;color:var(--text-primary)}@media(max-width:768px){.game-list-page .page-header h1{font-size:2rem}.game-grid{grid-template-columns:1fr;gap:var(--space-md)}.game-layout{flex-direction:column;gap:var(--space-md)}.game-sidebar{width:100%;min-height:auto}.unified-game-layout{flex-direction:column}.unified-game-board-area{flex-direction:column;padding:var(--space-md)}.player-sidebar{width:100%;min-width:100%;max-width:100%;border-left:none;border-top:1px solid var(--border-subtle)}.player-sidebar.collapsed{width:100%;min-width:100%;max-width:100%}.player-sidebar.collapsed .player-sidebar-header{display:flex}.page-header{padding:var(--space-md) var(--space-md)}.page-header-actions{gap:var(--space-xs)}.join-code-form{flex-direction:column}}@media(max-width:480px){.game-list-page .page-header{padding:var(--space-xl) var(--space-sm) var(--space-md)}.game-list-page .page-header h1{font-size:1.75rem}.game-card{padding:var(--space-md)}.player-select-options{flex-direction:column}}.liars-dice-board{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);padding:var(--space-md);max-width:700px;margin:0 auto}.liars-dice-challenge-result{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-md);border-radius:var(--radius-md);background:#ffffff0a;border:1px solid var(--border-default);width:100%;text-align:center}.liars-dice-challenge-result-title{font-weight:700;font-size:1rem;text-transform:uppercase;letter-spacing:.06em}.liars-dice-challenge-result-detail{font-size:.85rem;color:var(--text-secondary)}.liars-dice-challenge-result-count{font-size:.9rem;font-weight:600}.liars-dice-verdict-liar{color:#ef4444;font-weight:700}.liars-dice-verdict-wrong{color:#f59e0b;font-weight:700}.liars-dice-opponents{display:flex;gap:var(--space-md);flex-wrap:wrap;justify-content:center;width:100%}.liars-dice-opponent{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-md);border-radius:var(--radius-md);background:#ffffff08;border:2px solid transparent;min-width:120px;transition:all var(--transition-fast)}.liars-dice-opponent-bidder{border-color:#fbbf2480;background:#fbbf240f}.liars-dice-opponent-eliminated{opacity:.4}.liars-dice-opponent-name{font-weight:700;font-size:.85rem}.liars-dice-opponent-dice{display:flex;gap:4px;align-items:center}.liars-dice-eliminated-count{font-size:.7rem;color:#ef4444;font-weight:600;margin-left:4px}.liars-dice-info{display:flex;gap:var(--space-lg);font-size:.8rem;color:var(--text-tertiary)}.liars-dice-total{font-weight:600}.liars-dice-wild{color:var(--accent-gold);display:flex;align-items:center;gap:2px}.liars-dice-die{width:44px;height:44px;border-radius:var(--radius-sm);flex-shrink:0;object-fit:contain}.liars-dice-die-hidden{opacity:.8}.liars-dice-die-visible{filter:drop-shadow(0 1px 3px rgba(0,0,0,.2))}.liars-dice-inline-die{width:20px;height:20px;vertical-align:middle;margin:0 2px}.liars-dice-current-bid{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-lg);border-radius:var(--radius-lg);background:#ffffff0a;border:1px solid var(--border-default);min-width:200px}.liars-dice-bid-label{font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.liars-dice-bid-value{display:flex;align-items:center;gap:var(--space-sm);font-size:2rem;font-weight:700}.liars-dice-bid-qty{color:var(--accent-gold)}.liars-dice-bid-times{color:var(--text-muted);font-size:1.5rem}.liars-dice-bid-face-img{width:48px;height:48px;object-fit:contain;filter:drop-shadow(0 1px 3px rgba(0,0,0,.2))}.liars-dice-bid-by{font-size:.8rem;color:var(--text-tertiary)}.liars-dice-no-bid{font-size:.9rem;color:var(--text-secondary);padding:var(--space-sm)}.liars-dice-your-dice{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.liars-dice-your-dice-label{font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.liars-dice-your-eliminated{color:#ef4444;font-size:.7rem}.liars-dice-your-dice-row{display:flex;gap:8px}.liars-dice-no-dice{font-size:.85rem;color:var(--text-muted);font-style:italic}.liars-dice-controls{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);width:100%;max-width:400px}.liars-dice-bid-controls{display:flex;gap:var(--space-lg);align-items:flex-start}.liars-dice-control-group{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.liars-dice-control-label{font-size:.7rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.liars-dice-quantity-controls{display:flex;align-items:center;gap:var(--space-sm)}.liars-dice-qty-btn{width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--border-default);background:#ffffff0d;color:var(--text-primary);font-family:var(--font-family);font-size:1.1rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.liars-dice-qty-btn:hover:not(:disabled){background:#ffffff1a}.liars-dice-qty-btn:disabled{opacity:.3;cursor:not-allowed}.liars-dice-qty-value{font-size:1.4rem;font-weight:700;min-width:2ch;text-align:center}.liars-dice-face-controls{display:flex;gap:4px}.liars-dice-face-btn{width:40px;height:40px;border-radius:var(--radius-sm);border:2px solid transparent;background:#ffffff0d;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.liars-dice-face-btn:hover{background:#ffffff1a}.liars-dice-face-btn-selected{border-color:var(--accent-gold);background:var(--accent-gold-dim)}.liars-dice-face-btn-img{width:28px;height:28px;object-fit:contain}.liars-dice-action-buttons{display:flex;gap:var(--space-md);width:100%;justify-content:center}.liars-dice-bid-btn{padding:8px 24px;border-radius:var(--radius-md);border:1px solid var(--color-success);background:#34d39926;color:var(--color-success);font-family:var(--font-family);font-size:.9rem;font-weight:700;cursor:pointer;transition:all var(--transition-fast)}.liars-dice-bid-btn:hover:not(:disabled){background:#34d3994d}.liars-dice-bid-btn:disabled{opacity:.3;cursor:not-allowed}.liars-dice-challenge-btn{padding:8px 24px;border-radius:var(--radius-md);border:1px solid #ef4444;background:#ef444426;color:#ef4444;font-family:var(--font-family);font-size:.9rem;font-weight:700;cursor:pointer;transition:all var(--transition-fast)}.liars-dice-challenge-btn:hover{background:#ef44444d}
