.sudoku-grid-wrapper{position:relative;width:100%;max-width:540px;margin:0 auto}.sudoku-grid{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);border:3px solid var(--color-text);border-radius:var(--radius-sm);aspect-ratio:1 / 1;width:100%;-webkit-user-select:none;user-select:none;outline:none}.sudoku-cell{position:relative;display:flex;align-items:center;justify-content:center;border:1px solid var(--color-border);cursor:pointer;transition:background-color var(--transition-fast);font-size:clamp(1rem,4vw,1.75rem);background-color:var(--color-cell-bg);color:var(--color-text);overflow:hidden}.sudoku-cell[data-col="2"],.sudoku-cell[data-col="5"]{border-right:2px solid var(--color-text)}.sudoku-cell[data-row="2"],.sudoku-cell[data-row="5"]{border-bottom:2px solid var(--color-text)}.sudoku-cell--given{font-weight:700;background-color:var(--color-cell-given-bg);cursor:default;color:var(--color-text)}.sudoku-cell--selected{background-color:var(--color-cell-selected)!important;box-shadow:inset 0 0 0 2px var(--color-primary);z-index:1}.sudoku-cell--highlighted{background-color:var(--color-cell-highlight)}.sudoku-cell--matching{background-color:var(--color-cell-match)}.sudoku-cell--conflict{color:var(--color-error)}.sudoku-cell--conflict:not(.sudoku-cell--given){background-color:var(--color-cell-conflict)}@keyframes cell-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.sudoku-cell--incorrect{color:var(--color-error);animation:cell-shake .3s ease-out}@keyframes hint-glow{0%{box-shadow:inset 0 0 0 2px var(--color-warning, #f59e0b)}50%{box-shadow:inset 0 0 8px 2px var(--color-warning, #f59e0b)}to{box-shadow:inset 0 0 0 2px var(--color-warning, #f59e0b)}}.sudoku-cell--hint{background-color:var(--color-warning, #f59e0b)!important;color:var(--color-bg, #ffffff)!important;font-weight:700;animation:hint-glow 1s ease-in-out}@keyframes cell-pop{0%{transform:scale(.5);opacity:0}50%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}.sudoku-cell__value{line-height:1;animation:cell-pop .15s ease-out}.sudoku-cell__pencil{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;padding:1px}.sudoku-cell__pencil-mark{display:flex;align-items:center;justify-content:center;font-size:clamp(.5rem,1.5vw,.75rem);font-weight:500;color:var(--color-primary, #2563eb);line-height:1}.sudoku-cell--paused .sudoku-cell__value,.sudoku-cell--paused .sudoku-cell__pencil{visibility:hidden}.sudoku-cell--player-0{color:var(--color-player-0, #9333ea);background-color:var(--color-player-bg-0, rgba(147, 51, 234, .08))}.sudoku-cell--player-1{color:var(--color-player-1, #0891b2);background-color:var(--color-player-bg-1, rgba(8, 145, 178, .08))}.sudoku-cell--player-2{color:var(--color-player-2, #c2410c);background-color:var(--color-player-bg-2, rgba(194, 65, 12, .08))}.sudoku-cell--player-3{color:var(--color-player-3, #0d9488);background-color:var(--color-player-bg-3, rgba(13, 148, 136, .08))}.sudoku-cell--pencil-match{background-color:var(--color-cell-match)}.sudoku-cell--pencil-match .sudoku-cell__pencil-mark{font-weight:700}@media (max-width: 1024px) and (min-width: 769px){.sudoku-grid-wrapper{max-width:480px}}@media (max-width: 768px){.sudoku-grid-wrapper{max-width:min(100%,420px)}}@media (max-width: 480px){.sudoku-grid-wrapper{max-width:100%}.sudoku-cell{font-size:clamp(.875rem,3.5vw,1.5rem)}.sudoku-cell__pencil-mark{font-size:clamp(.35rem,1.1vw,.55rem)}}.number-pad{display:flex;flex-direction:column;gap:var(--space-sm);max-width:540px;margin:0 auto;width:100%}.number-pad__numbers{display:grid;grid-template-columns:repeat(9,1fr);gap:var(--space-xs)}.number-pad__num-btn{display:flex;align-items:center;justify-content:center;aspect-ratio:1 / 1;font-size:var(--text-xl);font-weight:600;border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast)}.number-pad__num-btn:hover:not(:disabled){background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.number-pad__num-btn:disabled{opacity:.35;cursor:not-allowed}.number-pad__actions{display:flex;gap:var(--space-xs);justify-content:center;flex-wrap:wrap}.number-pad__action-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-weight:500;border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast);min-width:60px}.number-pad__action-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--color-text-secondary)}.number-pad__action-btn:disabled{opacity:.35;cursor:not-allowed}.number-pad__action-btn--active{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.number-pad__action-btn--active:hover:not(:disabled){background-color:var(--color-primary-hover)}@media (max-width: 768px){.number-pad{max-width:min(100%,400px)}}@media (max-width: 480px){.number-pad{max-width:100%}.number-pad__numbers{grid-template-columns:repeat(9,1fr);gap:2px}.number-pad__num-btn{font-size:var(--text-base)}.number-pad__action-btn{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);min-width:48px}}.timer{display:flex;align-items:center;gap:var(--space-sm)}.timer__display{font-size:var(--text-2xl);font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-text);min-width:5ch;letter-spacing:.02em}.timer__btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--color-border);border-radius:var(--radius-full);background-color:var(--color-bg);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);font-size:var(--text-base)}.timer__btn:hover{background-color:var(--color-bg-secondary);color:var(--color-text);border-color:var(--color-text-secondary)}.pause-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-xl);background-color:#000000d9}.pause-overlay__title{font-size:var(--text-4xl);font-weight:700;color:#fff}.pause-overlay__seed{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.pause-overlay__seed-label{font-size:var(--text-sm);color:#fff9;text-transform:uppercase;letter-spacing:.05em}.pause-overlay__seed-value{font-size:var(--text-base);color:#ffffffe6;background:#ffffff1a;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);-webkit-user-select:all;user-select:all;cursor:pointer}.pause-overlay__btn{padding:var(--space-md) var(--space-2xl);font-size:var(--text-lg);font-weight:600;border:none;border-radius:var(--radius-md);background-color:var(--color-primary);color:#fff;cursor:pointer;transition:background-color var(--transition-fast)}.pause-overlay__btn:hover{background-color:var(--color-primary-hover)}.pause-overlay__copy-btn{background:#ffffff26;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-sm);color:#fff;padding:var(--space-xs) var(--space-sm);font-size:var(--text-sm);cursor:pointer;transition:background-color var(--transition-fast)}.pause-overlay__copy-btn:hover{background:#ffffff40}.game-header{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.game-header__badge{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);font-weight:600;text-transform:capitalize;border-radius:var(--radius-full);color:#fff}.game-header__badge--easy{background-color:var(--color-success)}.game-header__badge--medium{background-color:var(--color-warning)}.game-header__badge--hard{background-color:#f97316}.game-header__badge--expert{background-color:var(--color-error)}.game-header__mode{font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);text-transform:capitalize}.game-header__id{font-size:var(--text-xs);color:var(--color-text-secondary);margin-left:auto}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes bounce-emoji{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}.completion-card{animation:fade-in-up .4s ease-out}.completion-emoji{display:inline-block;animation:bounce-emoji .6s ease-in-out .3s}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.player-list{padding:var(--space-md);border:1px solid var(--color-border, #e2e8f0);border-radius:var(--radius-md, 8px);background:var(--color-surface, #fff)}.player-list h3{font-size:.875rem;font-weight:600;margin-bottom:var(--space-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary, #64748b)}.player-list-items{display:flex;flex-direction:column;gap:var(--space-sm)}.player-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm, 4px);background:var(--color-bg, #f8fafc)}.player-indicator{width:10px;height:10px;border-radius:50%;flex-shrink:0}.player-indicator.player-0{background-color:#3b82f6}.player-indicator.player-1{background-color:#10b981}.player-indicator.player-2{background-color:#f59e0b}.player-indicator.player-3{background-color:#ef4444}.player-indicator.player-4{background-color:#0d9488}.player-name{font-weight:500;font-size:.875rem;flex:1}.player-stats{font-size:.75rem;color:var(--color-text-secondary, #64748b)}.player-list-waiting{font-size:.875rem;color:var(--color-text-secondary, #64748b);font-style:italic;padding:var(--space-sm) 0}.connection-status{display:flex;align-items:center;gap:var(--space-xs);font-size:.75rem;margin-top:var(--space-sm);color:var(--color-text-secondary, #64748b)}.connection-dot{width:8px;height:8px;border-radius:50%}.connection-dot.connected{background-color:#10b981}.connection-dot.disconnected{background-color:#ef4444}.opponent-progress{padding:var(--space-md);border:1px solid var(--color-border, #e2e8f0);border-radius:var(--radius-md, 8px);background:var(--color-surface, #fff)}.opponent-progress h3{font-size:.875rem;font-weight:600;margin-bottom:var(--space-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary, #64748b)}.opponent-progress-items{display:flex;flex-direction:column;gap:var(--space-md)}.opponent-item{display:flex;flex-direction:column;gap:var(--space-xs)}.opponent-info{display:flex;align-items:center;justify-content:space-between;font-size:.875rem}.opponent-name{font-weight:500}.opponent-percent{color:var(--color-text-secondary, #64748b);font-size:.75rem}.opponent-bar-track{width:100%;height:8px;background:var(--color-bg, #f1f5f9);border-radius:4px;overflow:hidden}.opponent-bar-fill{height:100%;border-radius:4px;background:var(--color-primary, #3b82f6);transition:width .5s ease}.opponent-bar-fill.finished{background:#10b981}.opponent-finished-label{font-size:.75rem;color:#10b981;font-weight:600}.achievement-notification-stack{position:fixed;top:var(--space-lg);right:var(--space-lg);z-index:2000;display:flex;flex-direction:column;gap:var(--space-sm);pointer-events:none}.achievement-notification{pointer-events:auto;display:flex;align-items:center;gap:var(--space-md);background:var(--color-bg);border:2px solid var(--color-primary);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);box-shadow:0 8px 24px #0000002e;min-width:280px;max-width:360px;animation:achievement-slide-in .4s ease-out;cursor:pointer}.achievement-notification--exit{animation:achievement-slide-out .3s ease-in forwards}@keyframes achievement-slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes achievement-slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.achievement-notification__icon{font-size:2rem;flex-shrink:0;line-height:1}.achievement-notification__content{flex:1;min-width:0}.achievement-notification__label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary);margin-bottom:2px}.achievement-notification__title{font-size:1rem;font-weight:600;color:var(--color-text)}.leaderboard-table{width:100%;border-collapse:collapse}.leaderboard-table th{text-align:left;padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-weight:600;color:var(--color-text-secondary);border-bottom:2px solid var(--color-border)}.leaderboard-table td{padding:var(--space-sm) var(--space-md);font-size:var(--text-base);border-bottom:1px solid var(--color-border)}.leaderboard-table tr:last-child td{border-bottom:none}.leaderboard-table__row--current{background-color:var(--color-primary-light, rgba(59, 130, 246, .08));font-weight:600}.leaderboard-table__rank{font-weight:700;color:var(--color-text-secondary);width:50px}.leaderboard-table__rank--1{color:#f59e0b}.leaderboard-table__rank--2{color:#9ca3af}.leaderboard-table__rank--3{color:#d97706}.leaderboard-table__empty{text-align:center;padding:var(--space-3xl)!important;color:var(--color-text-secondary)}.leaderboard-table__pagination{display:flex;justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-md)}.leaderboard-table__pagination button{padding:var(--space-xs) var(--space-md)}@media (max-width: 768px){.leaderboard-table{min-width:480px}.leaderboard-table th,.leaderboard-table td{padding:var(--space-xs) var(--space-sm);font-size:var(--text-sm)}}.stats-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-lg);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;min-width:120px}.stats-card__icon{font-size:var(--text-2xl);margin-bottom:var(--space-xs)}.stats-card__value{font-size:var(--text-2xl);font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.stats-card__label{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-xs)}.achievement-badge{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-md);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;min-width:100px;transition:transform .15s ease,box-shadow .15s ease;cursor:default;overflow:visible}.achievement-badge:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;z-index:100}.achievement-badge--earned{border-color:var(--color-primary);background:linear-gradient(135deg,var(--color-bg),var(--color-bg-secondary))}.achievement-badge--locked .achievement-badge__icon,.achievement-badge--locked .achievement-badge__title,.achievement-badge--locked .achievement-badge__lock{opacity:.5;filter:grayscale(1)}.achievement-badge__icon{font-size:2rem;margin-bottom:var(--space-xs);line-height:1}.achievement-badge--locked .achievement-badge__icon{filter:grayscale(1)}.achievement-badge__lock{position:absolute;top:var(--space-xs);right:var(--space-xs);font-size:.75rem;opacity:.6}.achievement-badge__title{font-size:var(--text-sm);font-weight:600;color:var(--color-text);margin-bottom:2px}.achievement-badge__date{font-size:.7rem;color:var(--color-text-secondary)}.achievement-badge__tooltip{display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-bg);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--text-sm);white-space:normal;z-index:1000;pointer-events:none;max-width:250px;min-width:150px;text-align:center;box-shadow:0 4px 16px #0000004d;line-height:1.4}.achievement-badge__tooltip:after{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-bottom-color:var(--color-text)}.achievement-badge:hover .achievement-badge__tooltip{display:block}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4}img,svg,video,canvas{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-bg: #ffffff;--color-bg-secondary: #f3f4f6;--color-text: #111827;--color-text-secondary: #6b7280;--color-border: #e5e7eb;--color-error: #ef4444;--color-success: #22c55e;--color-warning: #f59e0b;--color-surface: #ffffff;--color-cell-bg: #ffffff;--color-cell-given-bg: #f3f4f6;--color-cell-selected: rgba(37, 99, 235, .2);--color-cell-highlight: rgba(37, 99, 235, .07);--color-cell-match: rgba(37, 99, 235, .14);--color-cell-conflict: rgba(239, 68, 68, .08);--color-player-0: #9333ea;--color-player-1: #0891b2;--color-player-2: #c2410c;--color-player-3: #0d9488;--color-player-bg-0: rgba(147, 51, 234, .08);--color-player-bg-1: rgba(8, 145, 178, .08);--color-player-bg-2: rgba(194, 65, 12, .08);--color-player-bg-3: rgba(13, 148, 136, .08);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--transition-fast: .15s ease;--transition-base: .2s ease}[data-theme=dark]{--color-primary: #3b82f6;--color-primary-hover: #60a5fa;--color-bg: #111827;--color-bg-secondary: #1f2937;--color-text: #f9fafb;--color-text-secondary: #9ca3af;--color-border: #374151;--color-error: #f87171;--color-success: #4ade80;--color-warning: #fbbf24;--color-surface: #1f2937;--color-cell-bg: #111827;--color-cell-given-bg: #1f2937;--color-cell-selected: #1e3a5f;--color-cell-highlight: #172554;--color-cell-match: #1e3a5f;--color-cell-conflict: #7f1d1d;--color-player-0: #a855f7;--color-player-1: #22d3ee;--color-player-2: #fb923c;--color-player-3: #2dd4bf;--color-player-bg-0: rgba(168, 85, 247, .15);--color-player-bg-1: rgba(34, 211, 238, .15);--color-player-bg-2: rgba(251, 146, 60, .15);--color-player-bg-3: rgba(45, 212, 191, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .3)}[data-theme=high-contrast]{--color-primary: #ffff00;--color-primary-hover: #ffff66;--color-bg: #000000;--color-bg-secondary: #1a1a1a;--color-text: #ffffff;--color-text-secondary: #cccccc;--color-border: #ffffff;--color-error: #ff0000;--color-success: #00ff00;--color-warning: #ffff00;--color-surface: #1a1a1a;--color-cell-bg: #000000;--color-cell-given-bg: #333333;--color-cell-selected: #004400;--color-cell-highlight: #1a1a1a;--color-cell-match: #003300;--color-cell-conflict: #660000;--color-player-0: #d946ef;--color-player-1: #00ffff;--color-player-2: #ff8800;--color-player-3: #00ffaa;--color-player-bg-0: rgba(217, 70, 239, .2);--color-player-bg-1: rgba(0, 255, 255, .2);--color-player-bg-2: rgba(255, 136, 0, .2);--color-player-bg-3: rgba(0, 255, 170, .2);--shadow-sm: 0 1px 2px rgba(255, 255, 255, .1);--shadow-md: 0 4px 6px -1px rgba(255, 255, 255, .1);--shadow-lg: 0 10px 15px -3px rgba(255, 255, 255, .1)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:var(--text-base);line-height:1.6;color:var(--color-text);background-color:var(--color-bg);min-height:100vh}.nav{background-color:var(--color-bg);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:100}.nav-inner{max-width:1200px;margin:0 auto;padding:0 var(--space-lg);height:60px;display:flex;align-items:center;justify-content:space-between}.nav-brand{font-size:var(--text-xl);font-weight:700;color:var(--color-primary)}.nav-links{display:flex;gap:var(--space-lg)}.nav-link{font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);transition:color var(--transition-fast);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.nav-link:hover{color:var(--color-primary)}.main{max-width:1200px;margin:0 auto;padding:var(--space-xl) var(--space-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-sm) var(--space-lg);font-size:var(--text-sm);font-weight:600;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover{background-color:var(--color-primary-hover)}.btn-secondary{background-color:var(--color-bg-secondary);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background-color:var(--color-border)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--text-base)}.form-group{margin-bottom:var(--space-lg)}.form-label{display:block;font-size:var(--text-sm);font-weight:500;margin-bottom:var(--space-xs);color:var(--color-text)}.form-input{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg);transition:border-color var(--transition-fast)}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.form-error{font-size:var(--text-sm);color:var(--color-error);margin-top:var(--space-xs)}.card{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.gap-xl{gap:var(--space-xl)}.grid{display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-secondary{color:var(--color-text-secondary)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}.p-md{padding:var(--space-md)}.p-lg{padding:var(--space-lg)}.p-xl{padding:var(--space-xl)}.w-full{width:100%}.page{max-width:800px;margin:0 auto}.game-layout{display:flex;gap:var(--space-lg)}.game-layout__main{flex:1;min-width:0}.game-layout__sidebar{width:220px;flex-shrink:0}@media (max-width: 768px){.game-layout{flex-direction:column}.game-layout__sidebar{width:100%}}.page-wide{max-width:1000px;margin:0 auto}.page-narrow{max-width:480px;margin:0 auto}.toggle{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) 0;border-bottom:1px solid var(--color-border)}.toggle-label{font-size:var(--text-base);font-weight:500}.toggle-switch{position:relative;width:48px;height:26px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--color-border);border-radius:var(--radius-full);transition:background-color var(--transition-fast)}.toggle-slider:before{content:"";position:absolute;height:20px;width:20px;left:3px;bottom:3px;background-color:#fff;border-radius:50%;transition:transform var(--transition-fast)}.toggle-switch input:checked+.toggle-slider{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(22px)}.tabs{display:flex;border-bottom:2px solid var(--color-border);margin-bottom:var(--space-lg)}.tab{padding:var(--space-sm) var(--space-lg);font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all var(--transition-fast)}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border)}.table th{font-size:var(--text-sm);font-weight:600;color:var(--color-text-secondary);background-color:var(--color-bg-secondary)}.table td{font-size:var(--text-sm)}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}[data-theme=high-contrast] .btn-primary,[data-theme=high-contrast] .game-header__badge{color:#000}.nav-hamburger{display:none;background:none;border:none;cursor:pointer;padding:var(--space-xs);color:var(--color-text);font-size:1.5rem;line-height:1}@media (max-width: 768px){:root{--text-base: .9375rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.nav-hamburger{display:block}.nav-links{display:none;flex-direction:column;position:absolute;top:60px;left:0;right:0;background-color:var(--color-bg);border-bottom:1px solid var(--color-border);padding:var(--space-md) var(--space-lg);gap:var(--space-sm);z-index:99;box-shadow:var(--shadow-md)}.nav-links--open{display:flex}.nav-link{font-size:var(--text-base);padding:var(--space-sm) 0}.nav-inner{position:relative}.main{padding:var(--space-md) var(--space-sm)}.page{max-width:100%}.card{overflow-x:auto}.leaderboard-table{min-width:500px}.tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}.tab{white-space:nowrap;flex-shrink:0}}@media (max-width: 480px){:root{--text-base: .875rem;--text-2xl: 1.25rem;--text-3xl: 1.5rem;--text-4xl: 1.75rem}}.readme-content h1{font-size:var(--text-3xl);font-weight:700;margin:var(--space-lg) 0 var(--space-md)}.readme-content h2{font-size:var(--text-2xl);font-weight:600;margin:var(--space-lg) 0 var(--space-sm);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-xs)}.readme-content h3{font-size:var(--text-lg);font-weight:600;margin:var(--space-md) 0 var(--space-xs)}.readme-content p{margin:var(--space-sm) 0;line-height:1.6}.readme-content ul,.readme-content ol{margin:var(--space-sm) 0;padding-left:var(--space-xl)}.readme-content li{margin:var(--space-xs) 0;line-height:1.5}.readme-content code{background:var(--color-surface, #f3f4f6);padding:1px 4px;border-radius:3px;font-size:.9em}.readme-content pre{background:var(--color-surface, #f3f4f6);padding:var(--space-md);border-radius:var(--radius-md);overflow-x:auto;margin:var(--space-sm) 0}.readme-content pre code{background:none;padding:0}.readme-content table{width:100%;border-collapse:collapse;margin:var(--space-sm) 0;font-size:var(--text-sm)}.readme-content th,.readme-content td{border:1px solid var(--color-border);padding:var(--space-xs) var(--space-sm);text-align:left}.readme-content th{font-weight:600;background:var(--color-surface, #f3f4f6)}.readme-content a{color:var(--color-primary)}.readme-content hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-lg) 0}
