*{box-sizing:border-box}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--text-primary: #2c3e50;--text-secondary: #7f8c8d;--border-primary: #2c3e50;--border-secondary: #95a5a6;--accent-primary: #3498db;--accent-hover: #2980b9;--accent-secondary: #9b59b6;--accent-secondary-hover: #8e44ad;--accent-light: rgba(52, 152, 219, .2);--border-color: var(--border-secondary);--success: #4caf50;--success-hover: #45a049;--success-light: rgba(76, 175, 80, .3);--danger-primary: #e74c3c;--danger-hover: #c0392b;--danger-text: #ff6b6b;--danger-light: rgba(231, 76, 60, .2);--gray-100: #f5f5f5;--gray-200: #eeeeee;--gray-300: #e0e0e0;--gray-400: #bdbdbd;--gray-500: #aaaaaa;--gray-600: #888888;--gray-700: #666666;--gray-800: #444444;--gray-900: #333333;--highlight-primary: #ffcc00;--highlight-light: rgba(255, 204, 0, .2);--highlight-medium: rgba(255, 204, 0, .5);--highlight-strong: rgba(255, 204, 0, .8);--board-square-light: #f0d9b5;--board-square-dark: #b58863;--board-square-dark-hover: #a07855;--toast-bg: rgba(30, 30, 30, .95);--toast-hover: rgba(40, 40, 40, .95);--toast-border: rgba(255, 255, 255, .1);--modal-overlay: rgba(0, 0, 0, .7);--shadow-toast: rgba(0, 0, 0, .3);--shadow-modal: rgba(0, 0, 0, .4);--shadow-xs: rgba(0, 0, 0, .1);--shadow-sm: rgba(0, 0, 0, .2);--shadow-md: rgba(0, 0, 0, .3);--shadow-lg: rgba(0, 0, 0, .5);--overlay-white-subtle: rgba(255, 255, 255, .1);--overlay-white-light: rgba(255, 255, 255, .2);--overlay-white-medium: rgba(255, 255, 255, .3);--overlay-white-strong: rgba(255, 255, 255, .8);--cell-bg: #ffffff;--cell-locked: #d5dbdb;--cell-hover: #ecf0f1;--cell-selected: #a8d5ff;--cell-highlight: #f8e5a0;--control-bg: #95a5a6;--control-hover: #7f8c8d;--number-pad-bg: #ecf0f1;--number-pad-border: #bdc3c7;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme=dark]{color-scheme:dark;--bg-primary: #1a1a1a;--bg-secondary: #2d2d2d;--text-primary: #e0e0e0;--text-secondary: #a0a0a0;--border-primary: #404040;--border-secondary: #505050;--accent-primary: #4a9eff;--accent-hover: #3a8eef;--accent-secondary: #9b59b6;--accent-secondary-hover: #8e44ad;--accent-light: rgba(74, 158, 255, .2);--border-color: var(--border-secondary);--success: #4caf50;--success-hover: #45a049;--success-light: rgba(76, 175, 80, .3);--danger-primary: #e74c3c;--danger-hover: #c0392b;--danger-text: #ff6b6b;--danger-light: rgba(231, 76, 60, .2);--gray-100: #3a3a3a;--gray-200: #444444;--gray-300: #4e4e4e;--gray-400: #5a5a5a;--gray-500: #6a6a6a;--gray-600: #7a7a7a;--gray-700: #8a8a8a;--gray-800: #9a9a9a;--gray-900: #aaaaaa;--highlight-primary: #ffcc00;--highlight-light: rgba(255, 204, 0, .2);--highlight-medium: rgba(255, 204, 0, .5);--highlight-strong: rgba(255, 204, 0, .8);--board-square-light: #f0d9b5;--board-square-dark: #b58863;--board-square-dark-hover: #a07855;--toast-bg: rgba(30, 30, 30, .95);--toast-hover: rgba(40, 40, 40, .95);--toast-border: rgba(255, 255, 255, .1);--modal-overlay: rgba(0, 0, 0, .7);--shadow-toast: rgba(0, 0, 0, .3);--shadow-modal: rgba(0, 0, 0, .4);--shadow-xs: rgba(0, 0, 0, .1);--shadow-sm: rgba(0, 0, 0, .2);--shadow-md: rgba(0, 0, 0, .3);--shadow-lg: rgba(0, 0, 0, .5);--overlay-white-subtle: rgba(255, 255, 255, .1);--overlay-white-light: rgba(255, 255, 255, .2);--overlay-white-medium: rgba(255, 255, 255, .3);--overlay-white-strong: rgba(255, 255, 255, .8);--cell-bg: #2d2d2d;--cell-locked: #3a3a3a;--cell-hover: #404040;--cell-selected: #2d5f8a;--cell-highlight: #5a4a20;--control-bg: #404040;--control-hover: #505050;--number-pad-bg: #353535;--number-pad-border: #505050}body{margin:0;padding:0;min-width:320px;background-color:var(--bg-primary);color:var(--text-primary);user-select:none;-webkit-user-select:none}#root{width:100%}button{border-radius:8px;border:none;font-family:inherit;cursor:pointer;transition:all .2s}button:focus,button:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.menu{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:90vh;padding:2rem;gap:2rem}.menu-header{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:600px;margin-bottom:1rem}.menu-header h1{font-size:3rem;margin:0;color:var(--text-primary);text-shadow:2px 2px 4px var(--shadow-md)}.header-buttons{display:flex;gap:.5rem}.theme-toggle{background:var(--accent-primary);border:none;font-size:1.5rem;width:3rem;height:3rem;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px var(--shadow-sm);transition:transform .2s,background-color .2s}.theme-toggle:hover{transform:scale(1.1);background-color:var(--accent-hover)}.user-info{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;padding:1rem;background:var(--bg-secondary);border-radius:8px;box-shadow:0 2px 4px var(--shadow-sm)}.username{color:var(--text-primary);font-size:1.1rem;font-weight:500;flex:1}.logout-button{padding:.5rem 1rem;background-color:var(--danger-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.logout-button:hover{background-color:var(--danger-hover)}.menu h1{font-size:3rem;margin:0;color:var(--text-primary)}.theme-toggle{padding:.75rem;font-size:1.5rem;background-color:var(--control-bg);border:none;border-radius:50%;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;width:48px;height:48px}.theme-toggle:hover{background-color:var(--control-hover);transform:scale(1.1)}.game-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;width:100%;max-width:700px}.play-game-button{padding:1.5rem 1rem;font-size:1.1rem;background-color:var(--bg-secondary);color:var(--text-primary);border:2px solid var(--border-primary);border-radius:12px;cursor:pointer;font-weight:700;transition:all .2s;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;box-shadow:0 2px 4px var(--shadow-sm)}.game-icon{width:64px;height:64px;object-fit:contain}.game-name{font-size:1rem;text-align:center}.play-game-button:hover{transform:translateY(-4px);box-shadow:0 4px 8px var(--shadow-md);border-color:var(--accent-primary)}.play-game-button.dev-only{background-color:var(--accent-secondary);display:flex;align-items:center;justify-content:center;gap:.5rem}.play-game-button.dev-only:hover{background-color:var(--accent-secondary-hover)}.dev-badge{background-color:var(--overlay-white-light);padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:700}.pending-badge{position:absolute;top:.5rem;right:.5rem;display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;padding:.25rem .5rem;background-color:var(--danger-primary);color:#fff;border-radius:12px;font-size:.85rem;font-weight:700;box-shadow:0 2px 4px var(--shadow-md)}.pending-badge.pulsing{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);box-shadow:0 2px 4px var(--shadow-md)}50%{transform:scale(1.15);box-shadow:0 4px 8px var(--danger-light)}}.stats-button{width:100%;max-width:500px;padding:1rem;font-size:1.1rem;background-color:var(--accent-secondary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:700;transition:background-color .2s;margin-top:1rem}.stats-button:hover{background-color:var(--accent-secondary-hover)}@media(max-width:768px){.menu{padding:1rem;gap:1rem}.menu-header{margin-bottom:.5rem}.menu-header h1{font-size:2rem}.user-info{margin-bottom:1rem;width:100%}.game-buttons{grid-template-columns:repeat(3,1fr);gap:.75rem;max-width:100%}.play-game-button{padding:1rem .5rem}.game-icon{width:48px;height:48px}.game-name{font-size:.85rem}.stats-button{max-width:100%}}@media(max-width:480px){.menu{padding:.75rem}.menu-header h1{font-size:1.75rem}.user-info{flex-direction:column;text-align:center;gap:.5rem}.game-buttons{grid-template-columns:repeat(2,1fr);gap:.5rem}.play-game-button{padding:.75rem .25rem}.game-icon{width:40px;height:40px}.game-name{font-size:.8rem}.pending-badge{top:.25rem;right:.25rem;min-width:1.25rem;height:1.25rem;font-size:.75rem;padding:.15rem .4rem}}.auth-container{display:flex;align-items:center;justify-content:center;min-height:90vh;padding:1rem;background:var(--bg-primary)}.auth-box{background:var(--bg-secondary);padding:2rem;border-radius:12px;box-shadow:0 8px 16px var(--shadow-md);width:100%;max-width:400px}.auth-box h1{text-align:center;margin:0 0 .5rem;font-size:2.5rem;color:var(--text-primary)}.auth-box h2{text-align:center;margin:0 0 1.5rem;font-size:1.5rem;color:var(--text-secondary);font-weight:400}.auth-error{background-color:var(--danger-primary);color:#fff;padding:.75rem;border-radius:6px;margin-bottom:1rem;text-align:center}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;color:var(--text-primary);font-weight:500}.form-group input{width:100%;padding:.75rem;border:2px solid var(--border-secondary);border-radius:6px;background-color:var(--bg-primary);color:var(--text-primary);font-size:1rem;transition:border-color .2s}.form-group input:focus{outline:none;border-color:var(--accent-primary)}.form-group input:disabled{opacity:.6;cursor:not-allowed}.auth-button{width:100%;padding:.875rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:background-color .2s}.auth-button:hover:not(:disabled){background-color:var(--accent-hover)}.auth-button:disabled{opacity:.6;cursor:not-allowed}.auth-toggle{text-align:center;margin-top:1.5rem;color:var(--text-secondary)}.toggle-button{background:none;border:none;color:var(--accent-primary);cursor:pointer;font-size:1rem;text-decoration:underline;padding:0}.toggle-button:hover:not(:disabled){color:var(--accent-hover)}.toggle-button:disabled{opacity:.6;cursor:not-allowed}.stats-app .stats-container{padding:2rem;max-width:1600px;margin:0 auto;min-height:100vh;color:var(--text-primary)}.stats-app .stats-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.stats-app .stats-header h1{font-size:2.5rem;margin:0;color:var(--text-primary)}.stats-app .back-button{padding:.5rem 1rem;background-color:var(--control-bg);color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.stats-app .back-button:hover{background-color:var(--control-hover);transform:translate(-2px)}.stats-app .stats-loading,.stats-app .stats-error{text-align:center;padding:3rem;font-size:1.2rem;color:var(--text-secondary)}.stats-app .stats-error{color:var(--danger-text)}.stats-app .stats-section{background-color:var(--bg-secondary);padding:1.5rem;border-radius:12px;margin-bottom:2rem;box-shadow:0 2px 8px var(--shadow-sm)}.stats-app .stats-section h2{margin:0 0 1.5rem;color:var(--text-primary);font-size:1.8rem;border-bottom:2px solid var(--border-secondary);padding-bottom:.5rem}.stats-app .stats-section h3{margin:1.5rem 0 1rem;color:var(--text-primary);font-size:1.4rem}.stats-app .stats-section h4{margin:0 0 .75rem;color:var(--text-secondary);font-size:1rem;text-align:center;font-weight:600}.stats-app .totals-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}@media(min-width:1024px){.stats-app .totals-section .totals-grid{grid-template-columns:repeat(2,1fr)}}.stats-app .total-item{background-color:var(--bg-primary);padding:1.5rem;border-radius:8px;text-align:center;border:1px solid var(--border-secondary)}.stats-app .total-label{font-size:1rem;color:var(--text-secondary);margin-bottom:.5rem;font-weight:500}.stats-app .total-value{font-size:2rem;color:var(--accent-primary);font-weight:700}.stats-app .streaks-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stats-app .streak-item{background-color:var(--bg-primary);padding:1.5rem;border-radius:8px;text-align:center;border:1px solid var(--border-secondary)}.stats-app .streak-label{font-size:1rem;color:var(--text-secondary);margin-bottom:.5rem;font-weight:500}.stats-app .streak-value{font-size:1.5rem;font-weight:700;padding:.5rem;border-radius:6px}.stats-app .streak-value.win{color:var(--success);background-color:var(--success-light)}.stats-app .streak-value.loss{color:var(--danger-text);background-color:var(--danger-light)}.stats-app .leaderboards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-bottom:2rem}.stats-app .leaderboard{background-color:var(--bg-primary);padding:1rem;border-radius:8px;border:1px solid var(--border-secondary)}.stats-app .leaderboard-table{width:100%;border-collapse:collapse;font-size:.95rem}.stats-app .leaderboard-table thead{background-color:var(--bg-secondary)}.stats-app .leaderboard-table th{padding:.75rem .5rem;text-align:left;color:var(--text-secondary);font-weight:600;border-bottom:2px solid var(--border-secondary)}.stats-app .leaderboard-table th:first-child{width:40px;text-align:center}.stats-app .leaderboard-table th:last-child{text-align:right}.stats-app .leaderboard-table td{padding:.75rem .5rem;border-bottom:1px solid var(--border-secondary);color:var(--text-primary)}.stats-app .leaderboard-table td:first-child{text-align:center;font-weight:700;color:var(--text-secondary)}.stats-app .leaderboard-table td:last-child{text-align:right;font-family:Courier New,monospace;font-weight:600;color:var(--accent-primary)}.stats-app .leaderboard-table tbody tr:hover{background-color:var(--bg-secondary)}.stats-app .no-data{text-align:center;padding:2rem;color:var(--text-secondary);font-style:italic}.stats-app .matchups-table-wrapper{overflow-x:auto}.stats-app .matchups-table{width:100%;border-collapse:collapse;font-size:1rem;background-color:var(--bg-primary);border-radius:8px;overflow:hidden}.stats-app .matchups-table thead{background-color:var(--bg-secondary)}.stats-app .matchups-table th{padding:1rem;text-align:left;color:var(--text-secondary);font-weight:600;border-bottom:2px solid var(--border-secondary)}.stats-app .matchups-table th:first-child{text-align:left;min-width:150px}.stats-app .matchups-table th:not(:first-child){text-align:center;min-width:120px}.stats-app .matchups-table td{padding:1rem;border-bottom:1px solid var(--border-secondary);color:var(--text-primary)}.stats-app .matchups-table td:not(:first-child){text-align:center;font-family:Courier New,monospace;font-weight:600}.stats-app .matchups-table tbody tr:hover{background-color:var(--bg-secondary)}.stats-app .opponent-name{font-weight:600;color:var(--text-primary)}.stats-app .wins{color:var(--success)}.stats-app .losses{color:var(--danger-text)}.stats-app .no-games{color:var(--text-secondary);font-style:italic}.stats-app .stats-content{display:contents}@media(min-width:1024px){.stats-app .stats-content{display:grid;grid-template-columns:1fr 1fr;gap:2rem;grid-auto-flow:dense}.stats-app .stats-section.totals-section{grid-column:span 2}.stats-app .stats-section.streaks-section{grid-column:span 1}.stats-app .stats-section.leaderboards-section,.stats-app .stats-section.matchups-section{grid-column:span 2}.stats-app .leaderboards-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.stats-app .stats-container{padding:1rem}.stats-app .stats-header{flex-direction:column;gap:1rem;text-align:center}.stats-app .stats-header h1{font-size:2rem}.stats-app .leaderboards-grid{grid-template-columns:1fr}.stats-app .totals-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.stats-app .streaks-grid{grid-template-columns:1fr}.stats-app .matchups-table{font-size:.85rem}.stats-app .matchups-table th,.stats-app .matchups-table td{padding:.5rem}.stats-app .matchups-table th:first-child{min-width:100px}.stats-app .matchups-table th:not(:first-child){min-width:80px}}.sudoku-app{width:100%}.sudoku-app .menu{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;gap:2rem}.sudoku-app .menu-header{display:flex;align-items:center;gap:1rem;position:relative}.sudoku-app .back-button{padding:.5rem 1rem;font-size:1rem;background-color:var(--control-bg);color:#fff;border:none;border-radius:6px;cursor:pointer;transition:all .2s;font-weight:500}.sudoku-app .back-button:hover{background-color:var(--control-hover);transform:translate(-2px)}.sudoku-app .menu h1{font-size:3rem;margin:0;color:var(--text-primary)}.sudoku-app .theme-toggle{padding:.75rem;font-size:1.5rem;background-color:var(--control-bg);border:none;border-radius:50%;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;width:48px;height:48px}.sudoku-app .theme-toggle:hover{background-color:var(--control-hover);transform:scale(1.1)}.sudoku-app .resume-button{padding:1rem 2rem;font-size:1.2rem;background-color:var(--success);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:700;transition:background-color .2s}.sudoku-app .resume-button:hover{background-color:var(--success-hover)}.sudoku-app .difficulty-buttons{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:500px}.sudoku-app .difficulty-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.sudoku-app .play-button{flex:1;min-width:200px;padding:1rem;font-size:1.1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:700;transition:background-color .2s}.sudoku-app .play-button:hover{background-color:var(--accent-hover)}.sudoku-app .scores-button{padding:1rem;font-size:1rem;background-color:var(--control-bg);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:background-color .2s}.sudoku-app .scores-button:hover{background-color:var(--control-hover)}.sudoku-app .best-time{width:100%;text-align:center;font-size:.9rem;color:var(--text-secondary);margin-top:.25rem}@media(max-width:600px){.sudoku-app .menu h1{font-size:2rem}.sudoku-app .difficulty-row{flex-direction:column}.sudoku-app .play-button,.sudoku-app .scores-button{width:100%}}.modal-overlay{position:fixed;inset:0;background-color:var(--modal-overlay);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-content{background-color:var(--bg-primary);color:var(--text-primary);padding:2rem;border-radius:12px;max-width:90vw;max-height:90vh;width:auto;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 32px var(--shadow-modal);animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-title{margin:0 0 1.5rem;font-size:1.5rem;text-align:center;flex-shrink:0}.modal-body{margin-bottom:1.5rem;line-height:1.6;max-width:100%;overflow:auto;flex:1;min-height:0}.modal-close{width:100%;padding:.75rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:8px;font-size:1rem;cursor:pointer;transition:background-color .2s;flex-shrink:0}.modal-close:hover{background-color:var(--accent-hover)}.modal-close:active{transform:scale(.98)}.toast-container{position:fixed;top:1rem;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{background-color:var(--toast-bg);color:#fff;padding:1rem 1.5rem;border-radius:8px;box-shadow:0 4px 16px var(--shadow-toast);font-size:.95rem;max-width:400px;word-wrap:break-word;animation:toastSlideIn .3s ease-out;pointer-events:auto;cursor:pointer;border:1px solid var(--toast-border)}@keyframes toastSlideIn{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.toast:hover{background-color:var(--toast-hover)}.toast-error{background-color:#e74c3cf2;border:1px solid var(--danger-text)}.toast-error:hover{background-color:#c0392bf2}.sudoku-app .game{display:flex;flex-direction:column;align-items:center;padding:1rem;gap:1.5rem}.sudoku-app .generating{font-size:1.5rem;margin-top:3rem;color:var(--text-secondary)}.sudoku-app .game-header{display:flex;align-items:center;gap:1rem;width:100%;max-width:600px;justify-content:space-between}.sudoku-app .game-header h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.sudoku-app .game-header button{padding:.5rem 1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.sudoku-app .game-header button:hover{background-color:var(--accent-hover)}.sudoku-app .timer{font-size:1.2rem;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}.sudoku-app .board{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:8px;background-color:var(--border-primary);padding:6px;border:3px solid var(--border-primary);box-shadow:0 4px 6px var(--shadow-md)}.sudoku-app .block{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:1px;background-color:var(--border-secondary)}.sudoku-app .cell{aspect-ratio:1;background-color:var(--cell-bg);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.5rem;font-weight:700;position:relative;min-width:40px;min-height:40px;color:var(--text-primary)}.sudoku-app .cell:hover{background-color:var(--cell-hover)}.sudoku-app .cell.locked{background-color:var(--cell-locked);color:var(--text-primary)}.sudoku-app .cell.selected{background-color:var(--cell-selected)!important;color:#fff}.sudoku-app .cell.highlighted{background-color:var(--cell-highlight)!important}.sudoku-app .cell-value{font-size:clamp(1.2rem,4vw,1.8rem)}.sudoku-app .cell-options{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;padding:2px;gap:1px}.sudoku-app .option{font-size:clamp(.5rem,1.5vw,.7rem);display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}.sudoku-app .option-empty{display:block}.sudoku-app .controls{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:600px}.sudoku-app .control-buttons{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.sudoku-app .control-buttons button{padding:.75rem 1rem;background-color:var(--control-bg);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.sudoku-app .control-buttons button:hover{background-color:var(--control-hover)}.sudoku-app .control-buttons button.active{background-color:var(--success)}.sudoku-app .control-buttons button.active:hover{background-color:var(--success-hover)}.sudoku-app .number-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;width:50%;margin-left:auto}.sudoku-app .number-button{aspect-ratio:1;background-color:var(--number-pad-bg);border:2px solid var(--number-pad-border);border-radius:8px;cursor:pointer;font-size:1.5rem;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:all .2s;position:relative;color:var(--text-primary)}.sudoku-app .number-button:hover:not(:disabled){background-color:var(--cell-hover);transform:scale(1.05)}.sudoku-app .number-button.selected{background-color:var(--accent-primary);border-color:var(--accent-hover);color:#fff}.sudoku-app .number-button:disabled{background-color:var(--control-bg);color:var(--text-secondary);cursor:not-allowed;opacity:.5}.sudoku-app .number-button .number{font-size:clamp(1.2rem,4vw,2rem)}.sudoku-app .number-button .count{font-size:clamp(.7rem,2vw,1rem);color:var(--text-secondary)}.sudoku-app .number-button.selected .count{color:var(--overlay-white-strong)}@media(min-width:600px){.sudoku-app .board{width:500px;height:500px}.sudoku-app .cell{min-width:50px;min-height:50px}}@media(max-width:600px){.sudoku-app .game-header{flex-wrap:wrap;justify-content:center}.sudoku-app .game-header h2{width:100%;text-align:center}}.chess-app{width:100%}.chess-app .chess-menu{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:90vh;padding:2rem;gap:2rem}.chess-app .chess-menu-header{display:flex;align-items:center;gap:1rem;position:relative}.chess-app .chess-menu h1{font-size:3rem;margin:0;color:var(--text-primary);text-shadow:2px 2px 4px var(--shadow-md)}.chess-app .back-button{padding:.5rem 1rem;font-size:1rem;background-color:var(--control-bg);color:#fff;border:none;border-radius:6px;cursor:pointer;transition:all .2s;font-weight:500}.chess-app .back-button:hover{background-color:var(--control-hover);transform:translate(-2px)}.chess-app .menu-content{display:flex;flex-direction:column;align-items:center;gap:3rem;width:100%;max-width:600px}.chess-app .menu-content h2{font-size:1.8rem;margin:0;color:var(--text-primary)}.chess-app .active-games-section,.chess-app .new-game-section{width:100%;display:flex;flex-direction:column;align-items:center;gap:1rem}.chess-app .games-list{width:100%;display:flex;flex-direction:column;gap:.75rem;padding:1rem;background-color:var(--shadow-sm);border-radius:8px;max-height:300px;overflow-y:auto}.chess-app .game-item{padding:1rem 1.5rem;background-color:var(--control-bg);color:#fff;border-radius:6px;cursor:pointer;transition:all .2s;border:2px solid transparent}.chess-app .game-item:hover{background-color:var(--control-hover);transform:translate(4px);border-color:var(--accent-primary)}.chess-app .game-info-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.chess-app .opponent-name{font-size:1.1rem;font-weight:600}.chess-app .turn-indicator{font-size:.9rem;color:var(--text-secondary)}.chess-app .turn-indicator:first-of-type:has(●){color:var(--success);font-weight:700}.chess-app .player-list{width:100%;max-height:400px;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem;padding:1rem;background-color:var(--shadow-sm);border-radius:8px}.chess-app .player-item{padding:1rem 1.5rem;background-color:var(--control-bg);color:#fff;border-radius:6px;cursor:pointer;transition:all .2s;font-size:1.1rem;border:2px solid transparent}.chess-app .player-item:hover{background-color:var(--control-hover);transform:translate(4px)}.chess-app .player-item.selected{background-color:var(--accent-primary);border-color:var(--accent-hover);font-weight:700}.chess-app .loading-text,.chess-app .error-text{font-size:1.2rem;padding:1rem}.chess-app .error-text{color:var(--danger-text)}.chess-app .loading-text{color:var(--text-secondary)}.chess-app .menu-buttons{display:flex;flex-direction:column;gap:1rem}.chess-app .start-button{padding:1rem 3rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1.5rem;font-weight:700;transition:all .2s;box-shadow:0 4px 6px var(--shadow-md)}.chess-app .start-button:hover:not(:disabled){background-color:var(--accent-hover);transform:translateY(-2px);box-shadow:0 6px 8px var(--shadow-modal)}.chess-app .start-button:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 4px var(--shadow-md)}.chess-app .start-button:disabled{opacity:.5;cursor:not-allowed}.chess-app .chess-game{display:flex;flex-direction:column;align-items:center;padding:1rem;gap:1.5rem}.chess-app .game-header{display:flex;align-items:center;gap:1rem;width:100%;max-width:600px;justify-content:space-between;position:relative}.chess-app .game-header h2{margin:0;font-size:1.5rem;color:var(--text-primary);position:absolute;left:50%;transform:translate(-50%)}.chess-app .game-header button{padding:.5rem 1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.chess-app .game-header button:hover{background-color:var(--accent-hover)}.chess-app .board-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem}.chess-app .chess-board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border:3px solid var(--border-primary);box-shadow:0 4px 6px var(--shadow-md);width:min(90vw,600px);height:min(90vw,600px);max-width:600px;max-height:600px}.chess-app .cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s;position:relative}.chess-app .cell.black{background-color:var(--board-square-dark)}.chess-app .cell.white{background-color:var(--board-square-light)}.chess-app .cell:hover{opacity:.8}.chess-app .cell.selected{background-color:var(--cell-selected)!important}.chess-app .cell.valid-move:after{content:"";position:absolute;width:25%;height:25%;background-color:var(--shadow-md);border-radius:50%;pointer-events:none}.chess-app .cell.valid-move:has(.piece):after{width:90%;height:90%;border:3px solid var(--shadow-md);background-color:transparent;border-radius:0}.chess-app .cell.last-move{background-color:var(--highlight-light)!important}.chess-app .cell.last-move.black,.chess-app .cell.last-move.white{background-color:var(--highlight-light)!important;box-shadow:inset 0 0 0 3px var(--highlight-medium)}.chess-app .piece{-webkit-user-select:none;user-select:none;pointer-events:none;text-shadow:0 2px 4px var(--shadow-md);font-size:clamp(1.5rem,5vw,2.8rem)}.chess-app .piece.white{color:#fff;filter:drop-shadow(0 0 1px black)}.chess-app .piece.black{color:#000;filter:drop-shadow(0 0 1px white)}.chess-app .game-info{text-align:center;font-size:1.2rem;color:var(--text-primary);font-weight:700}.chess-app .game-info .check{color:var(--danger-primary);font-size:1.5rem;margin-top:.5rem;animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.chess-app .game-over{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--bg-primary);padding:2rem;border-radius:12px;box-shadow:0 8px 16px var(--shadow-lg);text-align:center;z-index:1000}.chess-app .game-over h2{margin:0 0 1rem;color:var(--text-primary)}.chess-app .game-over button{padding:.75rem 1.5rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.chess-app .game-over button:hover{background-color:var(--accent-hover)}.chess-app .promotion-dialog{position:fixed;inset:0;background-color:var(--modal-overlay);display:flex;align-items:center;justify-content:center;z-index:1000}.chess-app .promotion-content{background-color:var(--bg-primary);padding:2rem;border-radius:12px;box-shadow:0 8px 16px var(--shadow-lg);text-align:center}.chess-app .promotion-content h3{margin:0 0 1.5rem;color:var(--text-primary)}.chess-app .promotion-options{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.chess-app .promotion-options button{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.chess-app .promotion-options button:hover{background-color:var(--accent-hover)}.chess-app .promotion-options .piece{font-size:3rem}.chess-app .graveyard{display:flex;flex-wrap:wrap;gap:.25rem;min-height:3rem;width:min(90vw,600px);max-width:600px;padding:.5rem;background-color:var(--bg-secondary);border-radius:8px;border:2px solid var(--border-primary);align-items:center;justify-content:center}.chess-app .graveyard .piece{font-size:2rem;opacity:.8}@media(max-width:600px){.chess-app .game-header{flex-direction:column;justify-content:center;gap:.5rem}.chess-app .game-header h2{position:static;transform:none;width:100%;text-align:center}}.checkers-app{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.checkers-menu{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:90vh;padding:2rem;gap:2rem}.checkers-menu-header{display:flex;align-items:center;gap:1rem;position:relative}.checkers-menu-header h1{margin:0;color:var(--text-primary);font-size:3rem;text-shadow:2px 2px 4px var(--shadow-md)}.checkers-menu .back-button{padding:.5rem 1rem;background-color:var(--control-bg);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s;font-weight:500}.checkers-menu .back-button:hover{background-color:var(--control-hover);transform:translate(-2px)}.checkers-menu .menu-content{display:flex;flex-direction:column;align-items:center;gap:3rem;width:100%;max-width:600px}.checkers-menu .menu-content h2{font-size:1.8rem;margin:0;color:var(--text-primary)}.checkers-menu .loading-text,.checkers-menu .error-text{font-size:1.2rem;padding:1rem}.checkers-menu .error-text{color:var(--danger-text)}.checkers-menu .loading-text{color:var(--text-secondary)}.checkers-menu .active-games-section,.checkers-menu .new-game-section{width:100%;display:flex;flex-direction:column;align-items:center;gap:1rem}.checkers-menu .games-list{width:100%;display:flex;flex-direction:column;gap:.75rem;padding:1rem;background-color:var(--shadow-sm);border-radius:8px;max-height:300px;overflow-y:auto}.checkers-menu .game-item{padding:1rem 1.5rem;background-color:var(--control-bg);color:#fff;border-radius:6px;cursor:pointer;transition:all .2s;border:2px solid transparent}.checkers-menu .game-item:hover{background-color:var(--control-hover);transform:translate(4px);border-color:var(--accent-primary)}.checkers-menu .game-info-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.checkers-menu .opponent-name{font-size:1.1rem;font-weight:600}.checkers-menu .turn-indicator{font-size:.9rem;color:var(--text-secondary)}.checkers-menu .turn-indicator:first-of-type:has(●){color:var(--success);font-weight:700}.checkers-menu .player-list{width:100%;max-height:400px;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem;padding:1rem;background-color:var(--shadow-sm);border-radius:8px}.checkers-menu .player-item{padding:1rem 1.5rem;background-color:var(--control-bg);color:#fff;border-radius:6px;cursor:pointer;transition:all .2s;font-size:1.1rem;border:2px solid transparent}.checkers-menu .player-item:hover{background-color:var(--control-hover);transform:translate(4px)}.checkers-menu .player-item.selected{background-color:var(--accent-primary);border-color:var(--accent-hover);font-weight:700}.checkers-menu .start-button{padding:1rem 3rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1.5rem;font-weight:700;transition:all .2s;box-shadow:0 4px 6px var(--shadow-md)}.checkers-menu .start-button:hover:not(:disabled){background-color:var(--accent-hover);transform:translateY(-2px);box-shadow:0 6px 8px var(--shadow-modal)}.checkers-menu .start-button:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 4px var(--shadow-md)}.checkers-menu .start-button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:768px){.checkers-menu-header h1{font-size:2rem}}.checkers-game{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;padding:1rem;box-sizing:border-box}.checkers-game .game-header{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:600px;margin-bottom:1rem;position:relative}.checkers-game .game-header h2{margin:0;color:var(--text-primary);position:absolute;left:50%;transform:translate(-50%)}.checkers-game .game-header button{padding:.5rem 1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem}.checkers-game .game-header button:hover{background-color:var(--accent-hover)}.checkers-game .board-container{display:flex;flex-direction:column;align-items:center;gap:.5rem}.checkers-game .checkers-board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);gap:0;width:min(80vw,600px);height:min(80vw,600px);border:2px solid var(--border-color);box-shadow:0 4px 6px var(--shadow-xs)}.checkers-game .cell{width:100%;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:background-color .2s}.checkers-game .cell.light{background-color:var(--board-square-light)}.checkers-game .cell.dark{background-color:var(--board-square-dark)}.checkers-game .cell.dark:hover{background-color:var(--board-square-dark-hover)}.checkers-game .cell.selected{background-color:var(--success-hover)!important;box-shadow:inset 0 0 0 3px var(--success)}.checkers-game .cell.valid-move{background-color:var(--highlight-light)!important}.checkers-game .cell.valid-move:after{content:"";position:absolute;width:25%;height:25%;border-radius:50%;background-color:var(--success-light)}.checkers-game .cell.last-move-from,.checkers-game .cell.last-move-to{background-color:var(--highlight-light)!important}.checkers-game .cell.last-move-from.dark,.checkers-game .cell.last-move-to.dark,.checkers-game .cell.last-move-from.light,.checkers-game .cell.last-move-to.light{background-color:var(--highlight-light)!important;box-shadow:inset 0 0 0 3px var(--highlight-medium)}.checkers-game .piece{width:80%;height:80%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;color:gold;box-shadow:0 2px 4px var(--shadow-md);position:relative}.checkers-game .piece.red{background:radial-gradient(circle at 30% 30%,#ff6b6b,#c92a2a);border:2px solid #8b0000}.checkers-game .piece.black{background:radial-gradient(circle at 30% 30%,#4a4a4a,#1a1a1a);border:2px solid #000000}.checkers-game .piece.king{box-shadow:0 0 10px #ffd700cc,0 2px 4px var(--shadow-md)}.checkers-game .graveyard{width:min(80vw,600px);min-height:2rem;display:flex;align-items:center;justify-content:center;padding:.5rem;background-color:var(--bg-secondary);border-radius:6px}.checkers-game .graveyard .piece-count{font-size:1.2rem;font-weight:700;color:var(--text-primary)}.checkers-game .game-over{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--bg-primary);padding:2rem;border-radius:12px;box-shadow:0 8px 16px var(--shadow-md);text-align:center;z-index:1000}.checkers-game .game-over h2{margin:0 0 1rem;color:var(--text-primary)}.checkers-game .game-over button{padding:.75rem 1.5rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem}.checkers-game .game-over button:hover{background-color:var(--accent-hover)}.checkers-game .game-info{margin-top:1rem;text-align:center;color:var(--text-primary)}.checkers-game .game-info p{margin:.5rem 0;font-size:1.1rem}@media(max-width:600px){.checkers-game .game-header{flex-direction:column;gap:.5rem}.checkers-game .game-header h2{position:static;transform:none;font-size:1.2rem}.checkers-game .game-header button{padding:.4rem .8rem;font-size:.9rem}.checkers-game .piece{font-size:1.5rem}}.stratego-app{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.stratego-app .stratego-menu{display:flex;flex-direction:column;align-items:center;padding:2rem;color:var(--text-primary)}.stratego-app .menu-header{width:100%;max-width:800px;display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.stratego-app .menu-header h1{font-size:3rem;margin:0;color:var(--accent-primary);text-shadow:2px 2px 4px var(--shadow-md)}.stratego-app .back-button{padding:.75rem 1.5rem;background-color:var(--surface-secondary);color:var(--text-primary);border:2px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s}.stratego-app .back-button:hover{background-color:var(--surface-hover);transform:translateY(-2px)}.stratego-app .menu-content{width:100%;max-width:800px;display:flex;flex-direction:column;gap:2rem}.stratego-app .loading-text,.error-text{text-align:center;font-size:1.2rem;padding:2rem}.stratego-app .error-text{color:var(--danger-primary)}.stratego-app .active-games-section,.new-game-section{background-color:var(--surface-secondary);padding:2rem;border-radius:12px;border:2px solid var(--border-color)}.stratego-app .active-games-section h2,.new-game-section h2{color:var(--accent-primary);margin-top:0;margin-bottom:1.5rem;font-size:1.5rem}.stratego-app .games-list{display:flex;flex-direction:column;gap:.75rem}.stratego-app .game-item{padding:1rem;background-color:var(--surface-primary);border:2px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .2s}.stratego-app .game-item:hover{background-color:var(--surface-hover);transform:translate(4px);border-color:var(--accent-primary)}.stratego-app .game-info-row{display:flex;justify-content:space-between;align-items:center}.stratego-app .opponent-name{font-weight:700;font-size:1.1rem}.stratego-app .turn-indicator{font-size:.9rem;color:var(--text-secondary)}.stratego-app .player-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-bottom:1.5rem}.stratego-app .player-item{padding:1rem;background-color:var(--surface-primary);border:2px solid var(--border-color);border-radius:8px;cursor:pointer;text-align:center;transition:all .2s}.stratego-app .player-item:hover{background-color:var(--surface-hover);transform:translateY(-2px)}.stratego-app .player-item.selected{background-color:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.stratego-app .no-players{text-align:center;color:var(--text-secondary);font-style:italic;padding:2rem}.stratego-app .start-button{width:100%;padding:1rem;font-size:1.1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:700;transition:all .2s}.stratego-app .start-button:hover:not(:disabled){background-color:var(--accent-hover);transform:translateY(-2px)}.stratego-app .start-button:disabled{opacity:.5;cursor:not-allowed}.stratego-app .game-rules{background-color:var(--surface-secondary);padding:1.5rem;border-radius:12px;border:2px solid var(--border-color)}.stratego-app .game-rules h3{color:var(--accent-primary);margin-top:0;margin-bottom:1rem;font-size:1.3rem}.stratego-app .game-rules ul{list-style:none;padding:0;margin:0}.stratego-app .game-rules ul li{margin:.5rem 0;padding-left:1.5rem;position:relative}.stratego-app .game-rules ul li:before{content:"→";position:absolute;left:0;color:var(--accent-primary)}.stratego-app .game-rules strong{color:var(--accent-secondary)}@media(max-width:768px){.stratego-app .menu-header h1{font-size:2rem}.stratego-app .player-list{grid-template-columns:1fr}}.stratego-app .placement-phase{min-height:100vh;padding:20px;display:flex;flex-direction:column;gap:20px}.stratego-app .placement-header{display:flex;justify-content:space-between;align-items:center}.stratego-app .placement-header h2{margin:0;font-size:2rem}.stratego-app .exit-button{padding:10px 20px;background-color:#f44;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1rem}.stratego-app .exit-button:hover{background-color:#c00}.stratego-app .placement-info{background-color:var(--overlay-white-subtle);padding:15px;border-radius:8px;text-align:center}.stratego-app .placement-info p{margin:5px 0}.stratego-app .player-color{font-weight:700;padding:2px 8px;border-radius:4px}.stratego-app .player-color.red{background-color:#f44;color:#fff}.stratego-app .player-color.blue{background-color:#44f;color:#fff}.stratego-app .placement-container{display:flex;gap:20px;flex-wrap:wrap}.stratego-app .placement-board-section{flex:1;min-width:500px;display:flex;flex-direction:column;gap:15px}.stratego-app .placement-board-section h3{margin:0;font-size:1.2rem}.stratego-app .placement-board{display:grid;gap:2px;background-color:var(--gray-900);padding:10px;border-radius:8px;width:fit-content}.stratego-app .placement-board .board-row{display:flex;gap:2px}.stratego-app .placement-board .board-cell{width:45px;height:45px;background-color:#8b7355;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;transition:all .2s}.stratego-app .placement-board .board-cell:hover{background-color:#a0826d;transform:scale(1.05)}.stratego-app .placement-board .board-cell.occupied{background-color:#5b4835}.stratego-app .placement-board .board-cell.lake{background-color:#2c5f7f;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.1) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(255,255,255,.15) 0%,transparent 50%);cursor:not-allowed;position:relative}.stratego-app .placement-board .board-cell.lake:after{content:"~";position:absolute;font-size:24px;color:#fff6;pointer-events:none}.stratego-app .placement-board .board-cell.lake:hover{background-color:#2c5f7f;transform:none}.stratego-app .placement-board .board-cell.non-placement{background-color:#3a3a3a;cursor:not-allowed;opacity:.5}.stratego-app .placement-board .board-cell.non-placement:hover{background-color:#3a3a3a;transform:none}.stratego-app .placement-board .piece{font-size:18px;font-weight:700;-webkit-user-select:none;user-select:none;background-color:var(--overlay-white-strong);width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:3px}.stratego-app .placement-board .piece.red{border:2px solid #ff4444}.stratego-app .placement-board .piece.blue{border:2px solid #4444ff}.stratego-app .placement-actions{display:flex;gap:10px;flex-wrap:wrap}.stratego-app .placement-actions button{padding:12px 24px;border:none;border-radius:5px;cursor:pointer;font-size:1rem;transition:all .2s}.stratego-app .placement-actions button:not(.submit-button){background-color:var(--gray-700);color:#fff}.stratego-app .placement-actions button:not(.submit-button):hover:not(:disabled){background-color:var(--gray-600)}.stratego-app .placement-actions .submit-button{background-color:var(--success);color:#fff;font-weight:700}.stratego-app .placement-actions .submit-button:hover:not(:disabled){background-color:var(--success-hover);transform:translateY(-2px);box-shadow:0 4px 8px var(--shadow-sm)}.stratego-app .placement-actions button:disabled{background-color:var(--gray-800);color:var(--gray-600);cursor:not-allowed;opacity:.5}.stratego-app .placement-legend{display:flex;gap:20px;padding:15px;background-color:var(--overlay-white-subtle);border-radius:8px;flex-wrap:wrap}.stratego-app .placement-legend .legend-item{display:flex;align-items:center;gap:8px}.stratego-app .placement-legend .legend-color{width:30px;height:30px;border-radius:4px;border:2px solid var(--border-color)}.stratego-app .placement-legend .placement-area-color{background-color:#8b7355}.stratego-app .placement-legend .lake-color{background-color:#2c5f7f}.stratego-app .placement-legend .non-placement-color{background-color:#3a3a3a;opacity:.5}.stratego-app .placement-board.rotated,.stratego-app .placement-board .board-cell.rotated-cell{transform:rotate(180deg)}.stratego-app .placement-board .board-cell.rotated-cell:hover{transform:rotate(180deg) scale(1.05)}.stratego-app .available-pieces-section{flex:1;min-width:300px;max-width:400px;display:flex;flex-direction:column;gap:15px}.stratego-app .available-pieces-section h3{margin:0;font-size:1.2rem}.stratego-app .available-pieces{display:flex;flex-direction:column;gap:10px;max-height:600px;overflow-y:auto;padding:10px;background-color:var(--overlay-white-subtle);border-radius:8px}.stratego-app .piece-group{background-color:var(--overlay-white-subtle);padding:10px;border-radius:5px}.stratego-app .piece-group-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--overlay-white-light)}.stratego-app .piece-name{font-weight:700;font-size:.9rem}.stratego-app .piece-count{color:var(--gray-500);font-size:.85rem}.stratego-app .piece-list{display:flex;flex-wrap:wrap;gap:5px}.stratego-app .available-piece{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--overlay-white-strong);border:2px solid transparent;border-radius:5px;cursor:pointer;font-weight:700;font-size:16px;transition:all .2s;-webkit-user-select:none;user-select:none}.stratego-app .available-piece.red{color:#900;border-color:#f44}.stratego-app .available-piece.blue{color:#009;border-color:#44f}.stratego-app .available-piece:hover{background-color:#fff;transform:scale(1.1);box-shadow:0 2px 5px var(--shadow-md)}.stratego-app .available-piece.selected{border-color:var(--highlight-primary);background-color:var(--highlight-light);transform:scale(1.15);box-shadow:0 0 15px var(--highlight-strong)}@media(max-width:768px){.stratego-app .placement-container{flex-direction:column}.stratego-app .placement-board-section,.stratego-app .available-pieces-section{min-width:100%;max-width:100%}.stratego-app .placement-board .board-cell{width:35px;height:35px}}.stratego-app .stratego-game{display:flex;flex-direction:column;align-items:center;padding:2rem;color:var(--text-primary)}.stratego-app .game-header{width:100%;max-width:800px;display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.stratego-app .game-header h2{color:var(--accent-primary);font-size:2rem;margin:0}.stratego-app .players-info{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;padding:1rem;background-color:var(--surface-secondary);border-radius:8px;border:2px solid var(--border-color)}.stratego-app .player-card{display:flex;flex-direction:column;align-items:center;padding:1rem;border-radius:8px;border:2px solid var(--border-color);flex:1}.stratego-app .player-card.red{background-color:var(--danger-light);border-color:var(--danger-primary)}.stratego-app .player-card.blue{background-color:var(--accent-light);border-color:var(--accent-primary)}.stratego-app .player-label{font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px}.stratego-app .player-name{font-size:1.2rem;font-weight:700;margin-top:.25rem}.stratego-app .vs-divider{font-weight:700;color:var(--text-secondary);font-size:1.5rem}.stratego-app .exit-button{padding:.5rem 1rem;background-color:var(--surface-secondary);color:var(--text-primary);border:2px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s}.stratego-app .exit-button:hover{background-color:var(--surface-hover);transform:translateY(-2px)}.stratego-app .game-info{margin-bottom:1rem;padding:1rem;background-color:var(--surface-secondary);border-radius:8px;border:2px solid var(--border-color)}.stratego-app .turn-indicator{display:flex;align-items:center;gap:.5rem;font-size:1.2rem;font-weight:700}.stratego-app .turn-dot{width:20px;height:20px;border-radius:50%;border:2px solid var(--border-color)}.stratego-app .turn-dot.red{background-color:var(--danger-primary)}.stratego-app .turn-dot.blue{background-color:var(--accent-primary)}.stratego-app .game-over{color:var(--accent-primary);font-size:1.5rem}.stratego-app .board-container{display:flex;justify-content:center}.stratego-app .stratego-board{display:inline-block;border:4px solid var(--border-color);background-color:var(--surface-secondary);border-radius:8px;padding:4px}.stratego-app .board-row{display:flex}.stratego-app .board-cell{width:60px;height:60px;border:1px solid var(--border-color);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:var(--surface-primary);transition:all .2s;position:relative}.stratego-app .board-cell:hover{background-color:var(--surface-hover)}.stratego-app .board-cell.lake{background-color:#2c3e50;cursor:not-allowed}.stratego-app .board-cell.lake:hover{background-color:#2c3e50}.stratego-app .board-cell.selected{background-color:var(--accent-secondary);border:2px solid var(--accent-primary)}.stratego-app .board-cell.valid-move{background-color:var(--success-light);cursor:pointer}.stratego-app .board-cell.valid-move:after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background-color:var(--success)}.stratego-app .board-cell.last-move-from{box-shadow:inset 0 0 0 3px var(--highlight-medium);background-color:var(--highlight-light)}.stratego-app .board-cell.last-move-to{box-shadow:inset 0 0 0 3px var(--highlight-strong);background-color:var(--highlight-light)}.stratego-app .piece{width:50px;height:50px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700;border-radius:4px;border:2px solid var(--border-color);-webkit-user-select:none;user-select:none}.stratego-app .piece.red{background-color:var(--danger-primary);color:#fff}.stratego-app .piece.blue{background-color:var(--accent-primary);color:#fff}.stratego-app .piece.hidden{background:linear-gradient(135deg,#34495e 25%,#2c3e50 25% 50%,#34495e 50% 75%,#2c3e50 75%,#2c3e50);background-size:10px 10px;color:#ecf0f1;font-size:1.5rem}.stratego-app .piece.revealed-to-opponent{position:relative;box-shadow:0 0 0 3px #fff9,0 0 8px #fff6;animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 0 3px #fff9,0 0 8px #fff6}50%{box-shadow:0 0 0 3px #fffc,0 0 12px #fff9}}.stratego-app .game-legend{background-color:var(--surface-secondary);padding:1rem 1.5rem;border-radius:8px;border:2px solid var(--border-color);max-width:800px;width:100%;margin-top:2rem}.stratego-app .game-legend h3{color:var(--accent-primary);margin-bottom:.5rem;margin-top:0;font-size:1rem}.stratego-app .legend-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem;font-size:.85rem}.stratego-app .legend-item{padding:.4rem;background-color:var(--surface-primary);border-radius:4px;border:1px solid var(--border-color);cursor:help;transition:all .2s;text-align:center}.stratego-app .legend-item:hover{background-color:var(--surface-hover);transform:translateY(-2px);box-shadow:0 2px 8px var(--shadow-sm)}@media(max-width:768px){.stratego-app .board-cell{width:40px;height:40px}.stratego-app .piece{width:35px;height:35px;font-size:.9rem}.stratego-app .legend-grid{grid-template-columns:repeat(3,1fr)}.stratego-app .legend-item{font-size:.75rem;padding:.3rem}}.stratego-app .stratego-board.rotated,.stratego-app .board-cell.rotated-cell{transform:rotate(180deg)}.stratego-app .graveyard{display:flex;flex-wrap:wrap;gap:4px;padding:10px;background-color:var(--shadow-md);border-radius:8px;min-height:50px;width:100%;max-width:600px;justify-content:center;align-items:center}.stratego-app .graveyard-top{margin-bottom:10px;border:2px solid var(--overlay-white-light)}.stratego-app .graveyard-bottom{margin-top:10px;margin-bottom:10px;border:2px solid var(--overlay-white-medium)}.stratego-app .captured-piece{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;font-size:14px;font-weight:700;background-color:var(--overlay-white-strong);border-radius:4px;cursor:help;transition:transform .2s}.stratego-app .captured-piece:hover{transform:scale(1.2)}.stratego-app .captured-piece.red{color:#c00;border:1px solid #ff4444}.stratego-app .captured-piece.blue{color:#00c;border:1px solid #4444ff}.minesweeper-app{width:100%;min-height:100vh;display:flex;flex-direction:column;align-items:center;background-color:var(--bg-primary)}.minesweeper-app .menu{display:flex;flex-direction:column;align-items:center;padding:2rem;gap:2rem;min-height:100vh}.minesweeper-app .menu-header{display:flex;align-items:center;justify-content:center;gap:1rem;position:relative;width:100%;max-width:500px}.minesweeper-app .menu-header h1{margin:0;font-size:2.5rem;color:var(--text-primary);text-align:center;flex:1}.minesweeper-app .back-button{padding:.5rem 1rem;background-color:var(--control-bg);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s;font-weight:500;flex-shrink:0}.minesweeper-app .back-button:hover{background-color:var(--control-hover);transform:translate(-2px)}.minesweeper-app .resume-button{padding:1rem 2rem;background-color:var(--success);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1.2rem;font-weight:700;transition:background-color .2s;animation:pulse 2s infinite}.minesweeper-app .resume-button:hover{background-color:var(--success-hover)}.minesweeper-app .difficulty-buttons{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:500px}.minesweeper-app .difficulty-row{display:flex;flex-direction:column;gap:.5rem}.minesweeper-app .play-button{padding:1.5rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1.2rem;font-weight:700;transition:all .2s;display:flex;flex-direction:column;gap:.5rem;align-items:center}.minesweeper-app .play-button:hover{background-color:var(--accent-hover);transform:translateY(-2px);box-shadow:0 4px 8px var(--shadow-md)}.minesweeper-app .difficulty-name{font-size:1.5rem;font-weight:700}.minesweeper-app .difficulty-info{font-size:.9rem;opacity:.9}.minesweeper-app .difficulty-stats{font-size:1rem;opacity:.95}.minesweeper-app .best-time{text-align:center;color:var(--text-secondary);font-size:.9rem}@media(max-width:600px){.minesweeper-app .menu{padding:1rem}.minesweeper-app .menu-header h1{font-size:1.8rem}.minesweeper-app .back-button{font-size:.9rem;padding:.4rem .8rem}}.minesweeper-app .game{display:flex;flex-direction:column;align-items:center;padding:1rem;gap:1.5rem;min-height:100vh}.minesweeper-app .loading{font-size:1.5rem;margin-top:3rem;color:var(--text-secondary)}.minesweeper-app .game-header{display:flex;align-items:center;gap:1rem;width:100%;max-width:900px;justify-content:space-between;flex-wrap:wrap}.minesweeper-app .game-header button{padding:.5rem 1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.minesweeper-app .game-header button:hover{background-color:var(--accent-hover)}.minesweeper-app .game-info{display:flex;align-items:center;gap:1.5rem;flex:1;justify-content:center}.minesweeper-app .game-info h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.minesweeper-app .info-item{display:flex;align-items:center;gap:.5rem;background-color:var(--bg-secondary);padding:.5rem 1rem;border-radius:6px;border:2px solid var(--border-secondary)}.minesweeper-app .info-label{font-size:1.2rem}.minesweeper-app .info-value{font-size:1.2rem;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums;min-width:3ch;text-align:center}.minesweeper-app .board{display:grid;gap:0;background-color:var(--border-secondary);border:3px solid var(--border-primary);box-shadow:0 4px 6px var(--shadow-md);padding:0;user-select:none;-webkit-user-select:none;touch-action:manipulation}.minesweeper-app .cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;cursor:pointer;transition:all .1s;border:1px solid var(--border-secondary);position:relative}.minesweeper-app .cell:not(.revealed){background:linear-gradient(135deg,var(--gray-200) 0%,var(--gray-300) 100%);border-top:2px solid var(--gray-100);border-left:2px solid var(--gray-100);border-right:2px solid var(--gray-500);border-bottom:2px solid var(--gray-500)}.minesweeper-app .cell:not(.revealed):hover{background:linear-gradient(135deg,var(--gray-300) 0%,var(--gray-400) 100%)}.minesweeper-app .cell:not(.revealed):active{background:var(--gray-400);border-top:2px solid var(--gray-500);border-left:2px solid var(--gray-500);border-right:2px solid var(--gray-100);border-bottom:2px solid var(--gray-100)}.minesweeper-app .cell.revealed{background-color:var(--cell-bg);border:1px solid var(--border-secondary);cursor:default}.minesweeper-app .cell.flagged{background:linear-gradient(135deg,var(--danger-light) 0%,rgba(231,76,60,.4) 100%)}.minesweeper-app .cell.questioned{background:linear-gradient(135deg,var(--highlight-light) 0%,var(--highlight-medium) 100%)}.minesweeper-app .cell.mine{background-color:var(--danger-primary)}.minesweeper-app .cell.exploded{background-color:var(--danger-hover);animation:explode .3s ease-out}@keyframes explode{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.minesweeper-app .cell-number-1{color:#00f}.minesweeper-app .cell-number-2{color:green}.minesweeper-app .cell-number-3{color:red}.minesweeper-app .cell-number-4{color:navy}.minesweeper-app .cell-number-5{color:maroon}.minesweeper-app .cell-number-6{color:teal}.minesweeper-app .cell-number-7{color:#000}.minesweeper-app .cell-number-8{color:gray}[data-theme=dark] .minesweeper-app .cell-number-1{color:#4d9fff}[data-theme=dark] .minesweeper-app .cell-number-2{color:#4caf50}[data-theme=dark] .minesweeper-app .cell-number-3{color:#ff6b6b}[data-theme=dark] .minesweeper-app .cell-number-4{color:#5e9ed6}[data-theme=dark] .minesweeper-app .cell-number-5{color:#ff8a80}[data-theme=dark] .minesweeper-app .cell-number-6{color:#4dd0e1}[data-theme=dark] .minesweeper-app .cell-number-7{color:#e0e0e0}[data-theme=dark] .minesweeper-app .cell-number-8{color:#bdbdbd}.minesweeper-app .board.difficulty-0{width:min(90vw,360px);height:min(90vw,360px)}.minesweeper-app .board.difficulty-0 .cell{font-size:1.2rem}.minesweeper-app .board.difficulty-1{width:min(90vw,480px);height:min(90vw,480px)}.minesweeper-app .board.difficulty-1 .cell{font-size:1rem}.minesweeper-app .board.difficulty-2{width:min(95vw,660px);height:min(50vh,352px)}.minesweeper-app .board.difficulty-2 .cell{font-size:.9rem}.minesweeper-app .game-instructions{color:var(--text-secondary);font-size:.9rem;text-align:center;margin-top:.5rem}.minesweeper-app .game-instructions p{margin:0}@media(max-width:768px){.minesweeper-app .game-header{flex-direction:column;gap:.75rem}.minesweeper-app .game-info{width:100%;justify-content:space-between}.minesweeper-app .game-info h2{font-size:1.2rem}.minesweeper-app .info-item{padding:.4rem .7rem}.minesweeper-app .info-label,.minesweeper-app .info-value{font-size:1rem}.minesweeper-app .board.difficulty-2{width:95vw;height:auto}.minesweeper-app .board.difficulty-2 .cell{font-size:.8rem}}@media(max-width:480px){.minesweeper-app .game{padding:.5rem;gap:1rem}.minesweeper-app .board.difficulty-0,.minesweeper-app .board.difficulty-1{width:95vw;height:95vw}.minesweeper-app .board.difficulty-1 .cell{font-size:.85rem}.minesweeper-app .board.difficulty-2 .cell{font-size:.7rem}}.game-2048{display:flex;flex-direction:column;align-items:center;padding:1rem;gap:1.5rem;max-width:600px;margin:0 auto}.game-2048 .game-header{display:flex;align-items:center;gap:1rem;width:100%;justify-content:space-between}.game-2048 .game-header h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.game-2048 .game-header button{padding:.5rem 1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s;white-space:nowrap}.game-2048 .game-header button:hover{background-color:var(--accent-hover)}.game-2048 .score-info{display:flex;gap:1rem;align-items:center}.game-2048 .score-item{display:flex;flex-direction:column;align-items:center;background-color:#bbada0;padding:.5rem 1rem;border-radius:6px;min-width:70px}.game-2048 .score-label{font-size:.75rem;color:#eee4da;text-transform:uppercase;font-weight:700}.game-2048 .score-value{font-size:1.25rem;color:#fff;font-weight:700;margin-top:.25rem}.game-2048 .game-instructions{color:var(--text-secondary);font-size:.9rem;text-align:center;max-width:500px}.game-2048 .grid-container{position:relative;background-color:#bbada0;border-radius:6px;padding:10px;width:100%;max-width:500px;aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none}.game-2048 .grid-background{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:10px;width:100%;height:100%}.game-2048 .grid-cell{background-color:#eee4da59;border-radius:3px}.game-2048 .tile-container{position:absolute;inset:10px;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:10px;pointer-events:none}.game-2048 .tile{position:absolute;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;border-radius:3px;transition:all .15s ease-in-out;pointer-events:none}.game-2048 .tile-position-0-0{top:calc(0*(25% + 2.5px));left:calc(0*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-0-1{top:calc(0*(25% + 2.5px));left:calc(1*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-0-2{top:calc(0*(25% + 2.5px));left:calc(2*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-0-3{top:calc(0*(25% + 2.5px));left:calc(3*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-1-0{top:calc(1*(25% + 2.5px));left:calc(0*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-1-1{top:calc(1*(25% + 2.5px));left:calc(1*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-1-2{top:calc(1*(25% + 2.5px));left:calc(2*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-1-3{top:calc(1*(25% + 2.5px));left:calc(3*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-2-0{top:calc(2*(25% + 2.5px));left:calc(0*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-2-1{top:calc(2*(25% + 2.5px));left:calc(1*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-2-2{top:calc(2*(25% + 2.5px));left:calc(2*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-2-3{top:calc(2*(25% + 2.5px));left:calc(3*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-3-0{top:calc(3*(25% + 2.5px));left:calc(0*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-3-1{top:calc(3*(25% + 2.5px));left:calc(1*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-3-2{top:calc(3*(25% + 2.5px));left:calc(2*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-position-3-3{top:calc(3*(25% + 2.5px));left:calc(3*(25% + 2.5px));width:calc(25% - 7.5px);height:calc(25% - 7.5px)}.game-2048 .tile-new{animation:appear .2s ease-in-out}@keyframes appear{0%{transform:scale(0)}to{transform:scale(1)}}.game-2048 .tile-merged{animation:pop .2s ease-in-out}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.game-2048 .game-message{position:fixed;inset:0;background-color:#eee4dae6;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s ease-in-out}.game-2048 .game-message.game-over{background-color:#eee4daba}.game-2048 .message-content{text-align:center;color:#776e65}.game-2048 .message-content h2{font-size:3rem;font-weight:700;margin:0 0 1rem}.game-2048 .message-content p{font-size:1.2rem;margin:0 0 2rem}.game-2048 .message-buttons{display:flex;gap:1rem;justify-content:center}.game-2048 .keep-playing-button,.game-2048 .try-again-button,.game-2048 .exit-button{padding:.75rem 1.5rem;background-color:#8f7a66;color:#f9f6f2;border:none;border-radius:6px;font-size:1rem;font-weight:700;cursor:pointer;transition:background-color .2s}.game-2048 .keep-playing-button:hover,.game-2048 .try-again-button:hover,.game-2048 .exit-button:hover{background-color:#9f8a76}@media(max-width:600px){.game-2048{padding:.5rem}.game-2048 .game-header{flex-wrap:wrap}.game-2048 .score-info{order:3;width:100%;justify-content:center}.game-2048 .tile{font-size:1.5rem}.game-2048 .message-content h2{font-size:2rem}.game-2048 .message-content p{font-size:1rem}}.tetris-game{display:flex;flex-direction:column;align-items:center;padding:1rem;gap:1.5rem;max-width:800px;margin:0 auto}.tetris-game .game-header{display:flex;align-items:center;gap:1rem;width:100%;justify-content:space-between}.tetris-game .game-header h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.tetris-game .game-header button{padding:.5rem 1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.tetris-game .game-header button:hover{background-color:var(--accent-hover)}.tetris-game .game-container{display:flex;gap:1.5rem;align-items:flex-start}.tetris-game .game-info-left,.tetris-game .game-info-right{display:flex;flex-direction:column;gap:1rem}.tetris-game .info-box{background-color:var(--bg-secondary);padding:.75rem;border-radius:6px;border:2px solid var(--border-primary);min-width:120px;text-align:center}.tetris-game .info-label{font-size:.85rem;color:var(--text-secondary);text-transform:uppercase;font-weight:700;margin-bottom:.25rem}.tetris-game .info-value{font-size:1.5rem;color:var(--text-primary);font-weight:700}.tetris-game .game-board{background-color:#000;border:3px solid var(--border-primary);box-shadow:0 4px 6px #0000004d;display:flex;flex-direction:column}.tetris-game .board-row{display:flex}.tetris-game .board-cell{width:24px;height:24px;border:1px solid rgba(255,255,255,.1);box-sizing:border-box}.tetris-game .board-cell.filled{border:1px solid rgba(255,255,255,.3)}.tetris-game .next-piece-container{background-color:var(--bg-secondary);padding:.75rem;border-radius:6px;border:2px solid var(--border-primary);text-align:center}.tetris-game .next-piece-preview{margin-top:.5rem;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;background-color:#000;padding:.5rem;border-radius:4px;min-width:100px;min-height:80px}.tetris-game .next-piece-row{display:flex}.tetris-game .next-piece-cell{width:20px;height:20px;border:1px solid rgba(255,255,255,.1);box-sizing:border-box}.tetris-game .next-piece-cell.filled{border:1px solid rgba(255,255,255,.3)}.tetris-game .game-controls{color:var(--text-secondary);font-size:.85rem;text-align:center}.tetris-game .game-controls p{margin:0}.tetris-game .game-overlay{position:fixed;inset:0;background-color:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s ease-in-out}.tetris-game .overlay-content{background-color:var(--bg-primary);padding:2rem;border-radius:12px;text-align:center;border:2px solid var(--border-primary);box-shadow:0 8px 16px #0000004d}.tetris-game .overlay-content h2{font-size:2.5rem;margin:0 0 1rem;color:var(--text-primary)}.tetris-game .overlay-content p{font-size:1.2rem;margin:.5rem 0;color:var(--text-secondary)}.tetris-game .overlay-buttons{display:flex;gap:1rem;justify-content:center;margin-top:1.5rem}.tetris-game .play-again-button,.tetris-game .exit-button{padding:.75rem 1.5rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:700;cursor:pointer;transition:background-color .2s}.tetris-game .play-again-button:hover,.tetris-game .exit-button:hover{background-color:var(--accent-hover)}@media(max-width:768px){.tetris-game .game-container{flex-direction:column;align-items:center}.tetris-game .game-info-left,.tetris-game .game-info-right{flex-direction:row;justify-content:center}.tetris-game .board-cell{width:20px;height:20px}.tetris-game .overlay-content h2{font-size:2rem}.tetris-game .overlay-content p{font-size:1rem}}@media(max-width:480px){.tetris-game{padding:.5rem}.tetris-game .board-cell,.tetris-game .next-piece-cell{width:16px;height:16px}.tetris-game .info-value{font-size:1.2rem}}.yahtzee-app{width:100%;height:100%;display:flex;flex-direction:column}.yahtzee-menu{width:100%;max-width:900px;margin:0 auto;padding:20px}.yahtzee-menu .menu-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:15px;border-bottom:2px solid var(--border-primary)}.yahtzee-menu .menu-header h1{margin:0;color:var(--text-primary);font-size:2rem}.yahtzee-menu .back-button{background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-primary);padding:8px 16px;cursor:pointer;transition:all .2s}.yahtzee-menu .back-button:hover{background-color:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.yahtzee-menu .menu-content{display:flex;flex-direction:column;gap:30px}.yahtzee-menu .loading-text,.yahtzee-menu .error-text{text-align:center;padding:20px;color:var(--text-primary);font-size:1.1rem}.yahtzee-menu .error-text{color:var(--danger-text);background-color:var(--danger-light);border-radius:8px}.yahtzee-menu .active-games-section{background-color:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:20px}.yahtzee-menu .active-games-section h2{margin-top:0;margin-bottom:15px;color:var(--text-primary);font-size:1.5rem}.yahtzee-menu .games-list{display:flex;flex-direction:column;gap:10px}.yahtzee-menu .game-item{background-color:var(--cell-bg);border:1px solid var(--border-secondary);border-radius:8px;padding:15px;cursor:pointer;transition:all .2s}.yahtzee-menu .game-item:hover{border-color:var(--accent-primary);transform:translate(4px);box-shadow:0 2px 8px var(--shadow-sm)}.yahtzee-menu .game-info-row{display:flex;justify-content:space-between;align-items:center;gap:15px}.yahtzee-menu .opponent-name{color:var(--text-primary);font-weight:500;font-size:1rem}.yahtzee-menu .turn-indicator{color:var(--text-secondary);font-size:.9rem;white-space:nowrap}.yahtzee-menu .new-game-section{background-color:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:20px}.yahtzee-menu .new-game-section h2{margin-top:0;margin-bottom:15px;color:var(--text-primary);font-size:1.5rem}.yahtzee-menu .player-count-info{margin-bottom:15px;color:var(--text-secondary);font-size:.9rem;font-style:italic}.yahtzee-menu .no-players{color:var(--text-secondary);text-align:center;padding:20px}.yahtzee-menu .player-selection{display:flex;flex-direction:column;gap:8px;margin-bottom:20px;max-height:300px;overflow-y:auto;border:1px solid var(--border-secondary);border-radius:8px;padding:10px}.yahtzee-menu .player-checkbox{display:flex;align-items:center;padding:10px;border-radius:4px;cursor:pointer;transition:background-color .2s}.yahtzee-menu .player-checkbox:hover{background-color:var(--cell-hover)}.yahtzee-menu .player-checkbox.selected{background-color:var(--accent-light);border:1px solid var(--accent-primary)}.yahtzee-menu .player-checkbox input[type=checkbox]{margin-right:12px;width:20px;height:20px;cursor:pointer}.yahtzee-menu .player-checkbox span{color:var(--text-primary);font-size:1rem}.yahtzee-menu .start-button{width:100%;background-color:var(--accent-primary);color:#fff;padding:12px 24px;border-radius:8px;border:none;cursor:pointer;font-size:1rem;font-weight:500;transition:all .2s}.yahtzee-menu .start-button:hover:not(:disabled){background-color:var(--accent-hover);transform:scale(1.02)}.yahtzee-menu .start-button:disabled{background-color:var(--gray-400);cursor:not-allowed;opacity:.5}.yahtzee-menu .game-rules{background-color:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:20px}.yahtzee-menu .game-rules h3{margin-top:0;margin-bottom:15px;color:var(--text-primary);font-size:1.3rem}.yahtzee-menu .game-rules ul{margin:0;padding-left:20px;color:var(--text-primary)}.yahtzee-menu .game-rules li{margin-bottom:10px;line-height:1.5}.yahtzee-menu .game-rules strong{color:var(--accent-primary)}.yahtzee-game{width:100%;max-width:1200px;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:20px}.yahtzee-game .game-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:15px;border-bottom:2px solid var(--border-primary)}.yahtzee-game .game-header button{padding:.5rem 1rem;background-color:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.yahtzee-game .game-header button:hover{background-color:var(--accent-hover)}.yahtzee-game .game-header h2{margin:0;color:var(--text-primary);font-size:1.8rem}.yahtzee-game .current-player-indicator{background-color:var(--accent-light);border-left:4px solid var(--accent-primary);padding:12px 16px;border-radius:4px;color:var(--text-primary);font-size:1.1rem;font-weight:500}.yahtzee-game .waiting-indicator{background-color:var(--bg-secondary);border-left:4px solid var(--text-secondary);padding:12px 16px;border-radius:4px;color:var(--text-secondary);font-size:1rem}.yahtzee-game .scorecards-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:15px;margin-bottom:20px}.yahtzee-game .scorecard{background-color:var(--bg-secondary);border:2px solid var(--border-secondary);border-radius:8px;padding:15px;transition:all .2s}.yahtzee-game .scorecard.my-scorecard{border-color:var(--accent-primary);box-shadow:0 0 10px var(--accent-light)}.yahtzee-game .scorecard.pending-turn{border-color:var(--accent-primary);background-color:var(--accent-light)}.yahtzee-game .scorecard.completed{opacity:.8}.yahtzee-game .scorecard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid var(--border-secondary)}.yahtzee-game .scorecard-header h3{margin:0;color:var(--text-primary);font-size:1.2rem}.yahtzee-game .turn-status{font-size:1.2rem}.yahtzee-game .scorecard-section{margin-bottom:15px}.yahtzee-game .scorecard-section h4{margin:0 0 10px;color:var(--accent-primary);font-size:1rem;font-weight:600}.yahtzee-game .scorecard-row{display:flex;justify-content:space-between;padding:6px 8px;border-bottom:1px solid var(--border-secondary);color:var(--text-primary)}.yahtzee-game .scorecard-row .category-name{font-size:.9rem}.yahtzee-game .scorecard-row .category-score{font-weight:600;min-width:30px;text-align:right}.yahtzee-game .scorecard-row.total-row{background-color:var(--gray-200);font-weight:600;margin-top:5px}.yahtzee-game .scorecard-row.bonus-row{background-color:var(--success-light);color:var(--success);font-weight:600}.yahtzee-game .scorecard-total{margin-top:15px;padding:12px;background-color:var(--accent-primary);color:#fff;text-align:center;font-size:1.2rem;font-weight:700;border-radius:4px}.yahtzee-game .dice-container{display:flex;gap:15px;justify-content:center;padding:30px 20px;background-color:var(--bg-secondary);border-radius:8px;border:2px solid var(--border-primary)}.yahtzee-game .dice{width:70px;height:70px;background-color:var(--cell-bg);border:3px solid var(--border-primary);border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none;padding:10px}.yahtzee-game .dice-icon{width:100%;height:100%}:root .yahtzee-game .dice-icon{filter:brightness(0) saturate(100%)}[data-theme=dark] .yahtzee-game .dice-icon{filter:brightness(0) invert(1)}.yahtzee-game .dice.empty{cursor:default}.yahtzee-game .dice.empty .dice-icon{opacity:.3}.yahtzee-game .dice.held{background-color:var(--highlight-light);border-color:var(--highlight-primary);border-width:4px;transform:translateY(-8px);box-shadow:0 4px 12px var(--shadow-md)}.yahtzee-game .dice.rolling{animation:yahtzee-roll .5s ease-out}@keyframes yahtzee-roll{0%,to{transform:scale(1) rotate(0)}25%{transform:scale(1.1) rotate(90deg)}50%{transform:scale(.9) rotate(180deg)}75%{transform:scale(1.1) rotate(270deg)}}.yahtzee-game .dice:hover:not(.held):not(.empty){border-color:var(--accent-primary);transform:scale(1.05)}.yahtzee-game .dice.held:hover{border-color:var(--highlight-primary);transform:translateY(-10px) scale(1.05)}.yahtzee-game .controls{display:flex;justify-content:center;gap:15px;margin-bottom:20px}.yahtzee-game .roll-button{background-color:var(--success);color:#fff;padding:15px 40px;font-size:1.2rem;font-weight:600;border-radius:8px;border:none;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px var(--shadow-sm)}.yahtzee-game .roll-button:hover:not(:disabled){background-color:var(--success-hover);transform:scale(1.05);box-shadow:0 4px 12px var(--shadow-md)}.yahtzee-game .roll-button:disabled{background-color:var(--gray-400);cursor:not-allowed;opacity:.5;transform:none;box-shadow:none}.yahtzee-game .scoring-section{background-color:var(--bg-secondary);border:2px solid var(--border-primary);border-radius:8px;padding:20px}.yahtzee-game .scoring-section h3{margin-top:0;margin-bottom:15px;color:var(--text-primary);font-size:1.3rem}.yahtzee-game .category-buttons{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.yahtzee-game .category-button{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:var(--cell-bg);border:2px solid var(--border-secondary);border-radius:8px;cursor:pointer;transition:all .2s}.yahtzee-game .category-button:hover:not(.disabled){background-color:var(--cell-hover);border-color:var(--accent-primary);transform:translate(4px)}.yahtzee-game .category-button.disabled{background-color:var(--gray-200);border-color:var(--gray-400);cursor:not-allowed;opacity:.6}.yahtzee-game .category-button .category-name{color:var(--text-primary);font-weight:500;font-size:.95rem}.yahtzee-game .category-button .category-score{color:var(--accent-primary);font-weight:700;font-size:1.1rem;min-width:30px;text-align:right}.yahtzee-game .category-button.disabled .category-score{color:var(--success)}.yahtzee-game .game-over{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--modal-overlay);padding:40px 60px;border-radius:12px;box-shadow:0 8px 32px var(--shadow-modal);z-index:1000}.yahtzee-game .game-over h2{margin:0;color:#fff;font-size:2.5rem;text-align:center}.yahtzee-game .game-info{text-align:center;color:var(--text-secondary);padding:15px;background-color:var(--bg-secondary);border-radius:8px;font-size:1rem}.yahtzee-game .game-info p{margin:0}@media(max-width:768px){.yahtzee-game{padding:10px}.yahtzee-game .scorecards-container{grid-template-columns:1fr}.yahtzee-game .dice-container{gap:10px;padding:20px 10px}.yahtzee-game .dice{width:55px;height:55px;font-size:2rem}.yahtzee-game .category-buttons{grid-template-columns:1fr}}.starboard-app{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg-primary);color:var(--text-primary)}.starboard-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.starboard-header h1{margin:0;font-size:1.5rem;color:var(--text-primary)}.starboard-content{flex:1;overflow-y:auto;padding:1rem}.back-button{padding:.5rem 1rem;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s}.back-button:hover{background:var(--bg-hover)}.squad-list{display:flex;flex-direction:column;height:100vh;background:var(--bg-primary);color:var(--text-primary);overflow:hidden}.squad-list .squad-list-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.squad-list .squad-list-header h1{margin:0;font-size:2rem;color:var(--text-primary)}.squad-list .header-buttons{display:flex;gap:.5rem}.squad-list .back-button{padding:.5rem 1rem;background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary);border-radius:5px;cursor:pointer;font-size:.9rem;transition:all .2s}.squad-list .back-button:hover{background:var(--bg-tertiary)}.squad-list .squad-list-content{flex:1;overflow-y:auto;padding:2rem}.squad-list .loading-text,.squad-list .error-text{text-align:center;padding:2rem;font-size:1.1rem}.squad-list .error-text{color:var(--danger-text)}.squad-list .active-games-section{margin-bottom:3rem}.squad-list .active-games-section h2{color:var(--accent-primary);margin-bottom:1rem;font-size:1.5rem}.squad-list .games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}.squad-list .game-card{background:var(--accent-light);border:2px solid var(--border-color);border-radius:10px;padding:1.5rem;cursor:pointer;transition:all .2s}.squad-list .game-card:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);transform:translateY(-2px)}.squad-list .game-opponent{font-size:1.2rem;font-weight:700;margin-bottom:.5rem}.squad-list .game-status{font-size:.9rem;color:var(--text-secondary)}.squad-list .squads-section{margin-bottom:2rem}.squad-list .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.squad-list .section-header h2{color:var(--accent-primary);margin:0;font-size:1.5rem}.squad-list .add-button{padding:.5rem 1.5rem;background:var(--accent-primary);border:none;color:#fff;border-radius:5px;cursor:pointer;font-size:1rem;font-weight:700;transition:all .2s}.squad-list .add-button:hover{background:var(--accent-hover);transform:translateY(-1px)}.squad-list .empty-state{text-align:center;padding:3rem;background:var(--bg-secondary);border-radius:10px;border:2px dashed var(--border-color)}.squad-list .empty-state p{font-size:1.1rem;color:var(--text-secondary);margin-bottom:1.5rem}.squad-list .create-first-button{padding:.75rem 2rem;background:var(--accent-primary);border:none;color:#fff;border-radius:5px;cursor:pointer;font-size:1.1rem;font-weight:700;transition:all .2s}.squad-list .create-first-button:hover{background:var(--accent-hover);transform:translateY(-1px)}.squad-list .squads-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.squad-list .squad-card{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:10px;padding:1.5rem;transition:all .2s;cursor:pointer}.squad-list .squad-card:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);transform:translateY(-2px)}.squad-list .squad-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.squad-list .faction-icon{width:40px;height:40px;opacity:.8}.squad-list .delete-button{background:var(--danger-light);border:1px solid var(--border-color);color:var(--danger-text);width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:1.5rem;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;transition:all .2s}.squad-list .delete-button:hover{background:var(--danger-primary);color:#fff}.squad-list .squad-name{font-size:1.2rem;font-weight:700;margin-bottom:.5rem;word-wrap:break-word}.squad-list .squad-points{font-size:.9rem;color:var(--text-secondary);margin-bottom:.75rem}.squad-list .squad-stats{font-size:1rem;color:var(--accent-primary);font-weight:700}.squad-list .no-games{color:var(--text-secondary);font-style:italic;font-weight:400}.squad-list .play-section{text-align:center;padding-top:2rem;border-top:2px solid var(--border-color)}.squad-list .play-game-button{padding:1rem 3rem;background:var(--accent-primary);border:none;color:#fff;border-radius:8px;cursor:pointer;font-size:1.2rem;font-weight:700;transition:all .2s}.squad-list .play-game-button:hover{background:var(--accent-hover);transform:translateY(-2px)}.faction-selector{display:flex;flex-direction:column;height:100%;padding:1.5rem;background:var(--bg-color);color:var(--text-color)}.faction-selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid var(--border-color)}.faction-selector-header h1{font-size:2rem;font-weight:600;margin:0;color:var(--text-color)}.header-buttons{display:flex;gap:1rem;align-items:center}.faction-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;max-width:1200px;margin:0 auto;width:100%}.faction-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;background:var(--card-bg);border:2px solid var(--border-color);border-radius:12px;cursor:pointer;transition:all .2s ease;min-height:300px}.faction-card:hover{border-color:var(--primary-color);background:var(--hover-bg);transform:translateY(-4px);box-shadow:0 8px 24px #0000004d}.faction-card:active{transform:translateY(-2px)}.faction-icon{width:150px;height:150px;margin-bottom:1.5rem;filter:var(--icon-filter, none);opacity:.9;transition:opacity .2s ease}.faction-card:hover .faction-icon{opacity:1}.faction-name{font-size:1.5rem;font-weight:600;margin:0;text-align:center;color:var(--text-color)}.faction-selector .back-button,.faction-selector .play-button{padding:.75rem 1.5rem;background:var(--button-bg);color:var(--button-text);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s ease}.faction-selector .play-button{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.faction-selector .back-button:hover,.faction-selector .play-button:hover{background:var(--button-hover-bg);border-color:var(--primary-color)}.faction-selector .play-button:hover{background:#1976d2}.faction-selector .back-button:active,.faction-selector .play-button:active{transform:translateY(1px)}@media(max-width:768px){.faction-selector{padding:1rem}.faction-selector-header h1{font-size:1.5rem}.faction-grid{grid-template-columns:1fr;gap:1rem}.faction-card{padding:2rem 1.5rem;min-height:250px}.faction-icon{width:120px;height:120px}.faction-name{font-size:1.25rem}.back-button,.play-button{padding:.5rem 1rem;font-size:.9rem}}[data-theme=dark] .faction-icon{filter:brightness(.95)}[data-theme=light] .faction-icon{filter:brightness(.8) contrast(1.1)}.builder-header{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;padding:1rem 1.5rem;background:var(--bg-secondary);border-bottom:2px solid var(--border-color);flex-wrap:wrap}.header-left,.header-center,.header-right{display:flex;align-items:center;gap:1rem}.header-left{flex:1;min-width:300px}.header-center{flex-direction:column;gap:.25rem}.header-right{gap:.75rem}.builder-header .back-button{padding:.5rem 1rem;background:var(--button-bg);color:var(--button-text);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:.95rem;transition:all .2s ease;white-space:nowrap}.builder-header .back-button:hover{background:var(--button-hover-bg);border-color:var(--primary-color)}.faction-badge{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:6px}.faction-badge-icon{width:28px;height:28px;filter:var(--icon-filter, brightness(.9))}.faction-name{font-weight:600;font-size:1rem;color:var(--text-color);white-space:nowrap}.squad-name-input{flex:1;padding:.5rem .75rem;background:var(--bg-color);color:var(--text-color);border:1px solid var(--border-color);border-radius:6px;font-size:.95rem;transition:border-color .2s ease;min-width:200px}.squad-name-input:focus{outline:none;border-color:var(--primary-color)}.squad-name-input::placeholder{color:var(--text-secondary);opacity:.6}.points-display{display:flex;align-items:baseline;gap:.25rem;padding:.5rem 1rem;background:var(--card-bg);border:2px solid var(--border-color);border-radius:8px;font-size:1.5rem;font-weight:700;transition:all .3s ease}.points-display.over-limit{border-color:#d32f2f;background:#d32f2f1a;animation:pulse-red 2s ease-in-out infinite}@keyframes pulse-red{0%,to{border-color:#d32f2f}50%{border-color:#ff5252}}.points-current{color:var(--text-color);min-width:3ch;text-align:right}.points-display.over-limit .points-current{color:#d32f2f}.points-separator{color:var(--text-secondary);font-weight:400}.points-max-input{width:4ch;background:transparent;border:none;color:var(--text-color);font-size:1.5rem;font-weight:700;text-align:center;padding:0}.points-max-input:focus{outline:none;border-bottom:2px solid var(--primary-color)}.points-max-input::-webkit-inner-spin-button,.points-max-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.points-max-input[type=number]{-moz-appearance:textfield}.points-label{color:var(--text-secondary);font-size:1rem;font-weight:400}.points-warning{font-size:.85rem;color:#d32f2f;font-weight:600;text-align:center}.action-button{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:.95rem;font-weight:500;transition:all .2s ease;white-space:nowrap}.action-button:disabled{opacity:.5;cursor:not-allowed}.save-button{background:#4caf50;color:#fff;border-color:#45a049}.save-button:hover:not(:disabled){background:#45a049;box-shadow:0 2px 8px #4caf504d}.load-button{background:#2196f3;color:#fff;border-color:#1976d2}.load-button:hover{background:#1976d2;box-shadow:0 2px 8px #2196f34d}.clear-button{background:#ff9800;color:#fff;border-color:#f57c00}.clear-button:hover{background:#f57c00;box-shadow:0 2px 8px #ff98004d}.play-button{background:#9c27b0;color:#fff;border-color:#7b1fa2}.play-button:hover{background:#7b1fa2;box-shadow:0 2px 8px #9c27b04d}@media(max-width:1200px){.builder-header{gap:1rem}.header-left,.header-right{gap:.5rem}}@media(max-width:768px){.builder-header{flex-direction:column;align-items:stretch;gap:.75rem;padding:1rem}.header-left,.header-center,.header-right{width:100%;justify-content:space-between}.header-left,.squad-name-input{min-width:unset}.faction-badge{flex:1}.header-right{flex-wrap:wrap}.action-button{flex:1;min-width:calc(50% - .5rem)}.points-display{font-size:1.25rem}}.ship-type-filter{background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.filter-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s ease}.filter-header:hover{background:var(--hover-bg)}.filter-header h3{margin:0;font-size:1rem;font-weight:600;color:var(--text-color);display:flex;align-items:center;gap:.5rem}.ship-count{font-size:.85rem;color:var(--text-secondary);font-weight:400}.toggle-button{background:none;border:none;color:var(--text-secondary);font-size:.75rem;cursor:pointer;padding:.25rem;transition:transform .2s ease}.filter-content{padding:0 1rem 1rem}.filter-actions{display:flex;gap:.5rem;margin-bottom:.75rem}.filter-action-btn{flex:1;padding:.4rem .75rem;background:var(--button-bg);color:var(--button-text);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;font-size:.85rem;transition:all .2s ease}.filter-action-btn:hover:not(:disabled){background:var(--button-hover-bg);border-color:var(--primary-color)}.filter-action-btn:disabled{opacity:.5;cursor:not-allowed}.ship-type-list{display:flex;flex-direction:column;gap:.25rem;max-height:400px;overflow-y:auto;padding-right:.25rem}.ship-type-list::-webkit-scrollbar{width:6px}.ship-type-list::-webkit-scrollbar-track{background:var(--bg-color);border-radius:3px}.ship-type-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.ship-type-list::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.ship-type-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all .2s ease;-webkit-user-select:none;user-select:none}.ship-type-item:hover{background:var(--hover-bg);border-color:var(--primary-color)}.ship-type-item input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--primary-color)}.ship-type-name{flex:1;font-size:.9rem;color:var(--text-color)}@media(max-width:768px){.ship-type-list{max-height:300px}}.upgrade-selector{width:100%;max-width:1200px;margin:0 auto;height:100%;display:flex;flex-direction:column}.upgrade-layout{display:grid;grid-template-columns:300px 1fr;gap:1.5rem;flex:1;min-height:0;overflow:hidden}.upgrade-slots-panel{display:flex;flex-direction:column;background:var(--bg-secondary);border-radius:8px;padding:1rem;overflow:hidden}.upgrade-slots-panel h3{margin:0 0 1rem;font-size:1.1rem;color:var(--text-color);padding-bottom:.75rem;border-bottom:2px solid var(--border-color)}.no-slots{padding:2rem 1rem;text-align:center;color:var(--text-secondary);font-style:italic}.slot-list{display:flex;flex-direction:column;gap:.5rem;overflow-y:auto}.slot-list::-webkit-scrollbar{width:6px}.slot-list::-webkit-scrollbar-track{background:var(--bg-color);border-radius:3px}.slot-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.slot-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:var(--card-bg);border:2px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s ease}.slot-item:hover{border-color:var(--primary-color);background:var(--hover-bg)}.slot-item.selected{border-color:var(--primary-color);background:var(--hover-bg);box-shadow:0 0 0 2px #2196f333}.slot-item.occupied{background:var(--bg-color)}.slot-info{flex:1;display:flex;flex-direction:column;gap:.25rem;min-width:0}.slot-type{font-weight:600;font-size:.95rem;color:var(--text-color);text-transform:capitalize}.slot-upgrade-name{font-size:.85rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remove-upgrade-btn{background:#d32f2f;color:#fff;border:none;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.1rem;line-height:1;transition:all .2s ease;flex-shrink:0}.remove-upgrade-btn:hover{background:#b71c1c;transform:scale(1.1)}.upgrade-browser-panel{display:flex;flex-direction:column;background:var(--bg-secondary);border-radius:8px;padding:1rem;overflow:hidden}.browser-header{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid var(--border-color)}.browser-header h3{margin:0;font-size:1.1rem;color:var(--text-color)}.upgrade-search{padding:.5rem .75rem;background:var(--bg-color);color:var(--text-color);border:1px solid var(--border-color);border-radius:6px;font-size:.95rem;transition:border-color .2s ease}.upgrade-search:focus{outline:none;border-color:var(--primary-color)}.upgrade-search::placeholder{color:var(--text-secondary);opacity:.6}.empty-browser,.empty-upgrades{flex:1;display:flex;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center;color:var(--text-secondary)}.upgrade-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;overflow-y:auto;padding:.5rem;align-content:start}.upgrade-grid::-webkit-scrollbar{width:6px}.upgrade-grid::-webkit-scrollbar-track{background:var(--bg-color);border-radius:3px}.upgrade-grid::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.upgrade-card{background:transparent;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:.5rem}.upgrade-card:hover .upgrade-card-image{border-color:var(--primary-color);transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.upgrade-card-image{position:relative;width:100%;padding-top:139.5%;background:var(--bg-color);overflow:hidden;border:2px solid var(--border-color);border-radius:6px;transition:all .2s ease}.upgrade-card-image img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.upgrade-card:hover .upgrade-card-image{border-color:var(--primary-color)}.upgrade-card:hover .upgrade-card-image img{transform:scale(1.05)}.upgrade-card-footer{padding:.5rem .25rem;display:flex;justify-content:space-between;align-items:center;gap:.5rem;background:transparent}.upgrade-card-name{flex:1;font-size:.85rem;font-weight:600;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upgrade-card-points{font-size:.85rem;font-weight:700;color:var(--primary-color);flex-shrink:0}@media(max-width:968px){.upgrade-layout{grid-template-columns:1fr;gap:1rem}.upgrade-slots-panel{max-height:200px}.upgrade-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}@media(max-width:640px){.upgrade-grid{grid-template-columns:repeat(2,1fr);gap:.75rem}}.current-squad-list{flex:1;display:flex;flex-direction:column;background:var(--bg-secondary);overflow:hidden}.squad-header{padding:1rem;border-bottom:1px solid var(--border-color)}.squad-header h3{margin:0;font-size:1rem;font-weight:600;color:var(--text-color);display:flex;align-items:center;gap:.5rem}.pilot-count{font-size:.85rem;color:var(--text-secondary);font-weight:400}.empty-squad{padding:2rem 1rem;text-align:center;color:var(--text-secondary)}.empty-squad p{margin:.5rem 0;font-size:.9rem;line-height:1.4}.empty-squad p:first-child{font-weight:600}.squad-pilots{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.squad-pilots::-webkit-scrollbar{width:6px}.squad-pilots::-webkit-scrollbar-track{background:var(--bg-color);border-radius:3px}.squad-pilots::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.squad-pilots::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.squad-pilot-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:6px;padding:.75rem;transition:all .2s ease}.squad-pilot-card:hover{border-color:var(--primary-color);box-shadow:0 2px 8px #00000026}.pilot-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.75rem}.pilot-info{flex:1;min-width:0}.pilot-name{font-weight:600;font-size:.95rem;color:var(--text-color);margin-bottom:.25rem;display:flex;align-items:center;gap:.25rem}.unique-marker{color:var(--primary-color);font-size:1.1rem}.pilot-ship{font-size:.85rem;color:var(--text-secondary)}.remove-pilot-btn{background:#d32f2f;color:#fff;border:none;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.25rem;line-height:1;transition:all .2s ease;flex-shrink:0}.remove-pilot-btn:hover{background:#b71c1c;transform:scale(1.1)}.pilot-stats{display:flex;gap:1rem;margin-bottom:.75rem;padding:.5rem;background:var(--bg-color);border-radius:4px}.stat-row{display:flex;gap:.5rem;align-items:center}.stat-label{font-size:.85rem;color:var(--text-secondary)}.stat-value{font-size:.9rem;font-weight:600;color:var(--text-color)}.points-value{color:var(--primary-color)}.pilot-slots{margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--border-color)}.slots-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.slots-label{font-size:.8rem;color:var(--text-secondary)}.add-upgrades-btn{padding:.25rem .5rem;background:var(--primary-color);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.75rem;font-weight:500;transition:all .2s ease}.add-upgrades-btn:hover{background:#1976d2;transform:translateY(-1px)}.slots-list{display:flex;flex-wrap:wrap;gap:.375rem}.slot-badge{padding:.25rem .5rem;background:var(--bg-color);border:1px solid var(--border-color);border-radius:3px;font-size:.75rem;color:var(--text-color);text-transform:capitalize}.pilot-upgrades{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:.375rem}.upgrade-item{display:flex;justify-content:space-between;align-items:center;padding:.375rem .5rem;background:var(--bg-color);border-radius:3px}.upgrade-name{font-size:.85rem;color:var(--text-color)}.upgrade-points{font-size:.85rem;font-weight:600;color:var(--primary-color)}@media(max-width:768px){.squad-pilots{padding:.5rem}.squad-pilot-card{padding:.625rem}}.pilot-browser{display:flex;flex-direction:column;height:100%}.browser-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid var(--border-color)}.browser-header h2{margin:0;font-size:1.5rem;font-weight:600;color:var(--text-color)}.pilot-count{font-size:1rem;color:var(--text-secondary);font-weight:500}.empty-browser{padding:3rem 1rem;text-align:center;color:var(--text-secondary)}.empty-browser p{margin:.75rem 0;font-size:1rem;line-height:1.5}.pilot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;padding-bottom:2rem}.pilot-card{background:var(--card-bg);border:2px solid var(--border-color);border-radius:8px;overflow:hidden;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column}.pilot-card:hover:not(.disabled){border-color:var(--primary-color);transform:translateY(-4px);box-shadow:0 8px 24px #0003}.pilot-card.disabled{opacity:.5;cursor:not-allowed}.pilot-card-image{position:relative;width:100%;padding-top:140%;background:var(--bg-color);overflow:hidden}.pilot-card-image img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.pilot-card:hover:not(.disabled) .pilot-card-image img{transform:scale(1.05)}.disabled-overlay{position:absolute;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:1.1rem;text-align:center;padding:1rem}.pilot-card-footer{padding:.75rem;display:flex;justify-content:space-between;align-items:center;gap:.5rem;background:var(--bg-secondary);border-top:1px solid var(--border-color)}.pilot-card-name{flex:1;font-weight:600;font-size:.95rem;color:var(--text-color);display:flex;align-items:center;gap:.25rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unique-marker{color:var(--primary-color);font-size:1.1rem;flex-shrink:0}.pilot-card-points{font-weight:700;font-size:1rem;color:var(--primary-color);flex-shrink:0}@media(max-width:1400px){.pilot-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}@media(max-width:1024px){.pilot-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}}@media(max-width:768px){.browser-header{margin-bottom:1rem}.browser-header h2{font-size:1.25rem}.pilot-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem}.pilot-card-footer{padding:.5rem}.pilot-card-name{font-size:.85rem}.pilot-card-points{font-size:.9rem}}@media(max-width:480px){.pilot-grid{grid-template-columns:1fr}.pilot-card-image{padding-top:120%}}.builder-interface{display:flex;flex-direction:column;height:100vh;background:var(--bg-color);color:var(--text-color)}.builder-header-placeholder{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.builder-header-placeholder h2{margin:0;font-size:1.25rem}.builder-header-placeholder input{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-color);color:var(--text-color)}.builder-header-placeholder button{padding:.5rem 1rem;background:var(--button-bg);color:var(--button-text);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all .2s ease}.builder-header-placeholder button:hover{background:var(--button-hover-bg)}.builder-main{display:flex;flex:1;overflow:hidden}.builder-sidebar{width:320px;display:flex;flex-direction:column;background:var(--bg-secondary);border-right:2px solid var(--border-color);overflow-y:auto}.builder-interface .builder-content{flex:1;overflow-y:auto;padding:1.5rem}.builder-interface .builder-content-header{display:flex;justify-content:flex-end;margin-bottom:1rem}.builder-interface .import-squad-button{padding:.5rem 1rem;background:var(--accent-primary);border:none;color:#fff;border-radius:5px;cursor:pointer;font-size:.9rem;font-weight:700;transition:all .2s}.builder-interface .import-squad-button:hover{background:var(--accent-hover);transform:translateY(-1px)}.builder-interface .import-dialog-overlay{position:fixed;inset:0;background:var(--modal-overlay);display:flex;align-items:center;justify-content:center;z-index:1000}.builder-interface .import-dialog{background:var(--bg-primary);border:2px solid var(--border-color);border-radius:10px;padding:2rem;max-width:600px;width:90%;color:var(--text-primary)}.builder-interface .import-dialog h2{margin:0 0 1rem;color:var(--accent-primary)}.builder-interface .import-dialog p{margin-bottom:1rem;color:var(--text-secondary)}.builder-interface .import-textarea{width:100%;padding:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:5px;color:var(--text-primary);font-family:monospace;font-size:.9rem;resize:vertical;margin-bottom:1rem}.builder-interface .import-textarea::placeholder{color:var(--text-secondary)}.builder-interface .import-dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}.builder-interface .import-confirm-button,.builder-interface .import-cancel-button{padding:.5rem 1.5rem;border:none;border-radius:5px;cursor:pointer;font-size:1rem;font-weight:700;transition:all .2s}.builder-interface .import-confirm-button{background:var(--accent-primary);color:#fff}.builder-interface .import-confirm-button:hover{background:var(--accent-hover);transform:translateY(-1px)}.builder-interface .import-cancel-button{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary)}.builder-interface .import-cancel-button:hover{background:var(--bg-tertiary)}.ship-filter-placeholder,.squad-list-placeholder,.pilot-browser-placeholder{padding:1rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;margin:1rem}.ship-filter-placeholder h3,.squad-list-placeholder h3,.pilot-browser-placeholder h3{margin:0 0 1rem;font-size:1.1rem;color:var(--text-color)}.squad-list-placeholder>div{display:flex;justify-content:space-between;align-items:center;padding:.5rem;margin-bottom:.5rem;background:var(--bg-color);border:1px solid var(--border-color);border-radius:4px}.squad-list-placeholder button{background:#d32f2f;color:#fff;border:none;border-radius:50%;width:24px;height:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.squad-list-placeholder button:hover{background:#b71c1c}@media(max-width:1024px){.builder-sidebar{width:280px}}@media(max-width:768px){.builder-main{flex-direction:column}.builder-sidebar{width:100%;max-height:40vh;border-right:none;border-bottom:2px solid var(--border-color)}.builder-header-placeholder{flex-wrap:wrap;gap:.5rem}.builder-header-placeholder h2{width:100%;font-size:1rem}}.squad-builder{display:flex;flex-direction:column;height:100%}.squad-builder-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.squad-builder-header h1{margin:0;font-size:1.5rem;color:var(--text-primary)}.header-actions{display:flex;gap:.75rem;align-items:center}.squad-builder .back-button,.squad-builder .change-faction-button{padding:.5rem 1rem;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s}.squad-builder .back-button:hover,.squad-builder .change-faction-button:hover{background:var(--bg-hover)}.squad-builder-content{flex:1;overflow-y:auto;padding:2rem}.coming-soon-box{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;padding:2rem;text-align:center;margin-bottom:2rem}.coming-soon-box h2{font-size:2rem;margin-bottom:1rem;color:var(--text-primary)}.coming-soon-box p{font-size:1.1rem;color:var(--text-secondary);margin-bottom:1rem}.play-mode-button{padding:.75rem 1.5rem;font-size:1rem;background:#4caf50;color:#fff;border:1px solid #45a049;border-radius:4px;cursor:pointer;transition:background .2s;margin-top:1rem}.play-mode-button:hover{background:#45a049}.saved-squads-section{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;padding:2rem}.saved-squads-section h2{margin:0 0 1rem;font-size:1.3rem;color:var(--text-primary)}.empty-state{text-align:center;color:var(--text-secondary);padding:2rem;font-style:italic}.game-selector{display:flex;flex-direction:column;height:100%}.game-selector-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.game-selector-header h1{margin:0;font-size:1.5rem;color:var(--text-primary)}.game-selector-content{flex:1;overflow-y:auto;padding:2rem;max-width:800px;margin:0 auto;width:100%}.game-selector .loading-text,.game-selector .error-text{text-align:center;padding:2rem;font-size:1.1rem}.game-selector .error-text{color:#f44336}.active-games-section{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;padding:1.5rem;margin-bottom:2rem}.active-games-section h2{margin:0 0 1rem;font-size:1.3rem;color:var(--text-primary)}.games-list{display:flex;flex-direction:column;gap:.75rem}.game-item{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;padding:1rem;cursor:pointer;transition:all .2s}.game-item:hover{background:var(--bg-hover);transform:translateY(-2px)}.game-info{display:flex;justify-content:space-between;align-items:center}.opponent-name{font-weight:700;color:var(--text-primary)}.game-status{font-size:.9rem;color:var(--text-secondary)}.import-squad-section{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;padding:1.5rem;margin-bottom:2rem}.game-selector h2{font-size:1.5rem;margin-bottom:1.5rem;color:var(--text-primary)}.import-section{margin-bottom:2rem}.import-section label{display:block;font-weight:700;margin-bottom:.5rem;color:var(--text-primary)}.import-section textarea{width:100%;min-height:200px;padding:.75rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);font-family:monospace;font-size:.9rem;resize:vertical}.import-section textarea::placeholder{color:var(--text-secondary)}.opponent-section{margin-bottom:2rem}.opponent-section label{display:block;font-weight:700;margin-bottom:.5rem;color:var(--text-primary)}.opponent-section select{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);font-size:1rem}.game-selector-actions{display:flex;gap:1rem;justify-content:flex-end}.game-selector button{padding:.75rem 1.5rem;font-size:1rem;border-radius:4px;cursor:pointer;transition:background .2s;border:1px solid var(--border-color)}.create-button{background:#2196f3;color:#fff;border-color:#1976d2}.create-button:hover:not(:disabled){background:#1976d2}.create-button:disabled{opacity:.5;cursor:not-allowed}.cancel-button{background:var(--bg-tertiary);color:var(--text-primary)}.cancel-button:hover{background:var(--bg-hover)}.error-message{color:#f44336;margin-top:.5rem;font-size:.9rem}.import-squad-section h2{margin:0 0 .5rem;font-size:1.3rem;color:var(--text-primary)}.import-squad-section h3{margin:1rem 0 .5rem;font-size:1.1rem;color:var(--text-primary)}.saved-squads-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.saved-squad-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all .2s}.saved-squad-item:hover{background:var(--bg-hover)}.saved-squad-item.selected{border-color:#2196f3;background:#2196f333}.squad-item-info{display:flex;flex-direction:column;gap:.25rem}.squad-item-name{font-weight:700;color:var(--text-primary)}.squad-item-faction{font-size:.85rem;color:var(--text-secondary)}.squad-item-points{font-size:.9rem;color:var(--text-secondary);font-weight:700}.section-divider{display:flex;align-items:center;margin:1.5rem 0;text-align:center;color:var(--text-secondary)}.section-divider:before,.section-divider:after{content:"";flex:1;border-bottom:1px solid var(--border-color)}.section-divider span{padding:0 1rem;font-weight:700;font-size:.9rem}.instructions{font-size:.9rem;color:var(--text-secondary);margin-bottom:1rem}.squad-name-input{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-tertiary);color:var(--text-primary);font-size:1rem;margin-bottom:.75rem}.squad-text-input{width:100%;min-height:150px;padding:.75rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-tertiary);color:var(--text-primary);font-family:monospace;font-size:.9rem;resize:vertical;margin-bottom:.75rem}.squad-text-input::placeholder,.squad-name-input::placeholder{color:var(--text-secondary)}.import-button{padding:.75rem 1.5rem;background:#2196f3;color:#fff;border:1px solid #1976d2;border-radius:4px;cursor:pointer;font-size:1rem;transition:background .2s}.import-button:hover:not(:disabled){background:#1976d2}.import-button:disabled{opacity:.5;cursor:not-allowed}.game-selector .success-text{color:#4caf50;margin-top:.5rem;font-weight:700}.opponent-selection-section{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;padding:1.5rem}.opponent-selection-section h2{margin:0 0 1rem;font-size:1.3rem;color:var(--text-primary)}.player-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-bottom:1.5rem}.player-item{padding:1rem;background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:4px;text-align:center;cursor:pointer;transition:all .2s}.player-item:hover{background:var(--bg-hover)}.player-item.selected{border-color:#2196f3;background:#2196f333;font-weight:700}.create-game-button{padding:.75rem 1.5rem;background:#4caf50;color:#fff;border:1px solid #45a049;border-radius:4px;cursor:pointer;font-size:1rem;transition:background .2s}.create-game-button:hover:not(:disabled){background:#45a049}.create-game-button:disabled{opacity:.5;cursor:not-allowed}.game-selector .back-button{padding:.5rem 1rem;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s}.game-selector .back-button:hover{background:var(--bg-hover)}.game-item.needs-action{border:2px solid #ff9800;background:#ff98001a}.game-info-row{display:flex;justify-content:space-between;align-items:center;width:100%}.join-button,.view-button{padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s;border:1px solid var(--border-color)}.join-button{background:#ff9800;color:#fff;border-color:#f57c00}.join-button:hover{background:#f57c00}.view-button{background:var(--bg-tertiary);color:var(--text-primary)}.view-button:hover{background:var(--bg-hover)}.squad-selection-dropdown{margin-top:1rem;padding:1rem;background:var(--bg-tertiary);border-radius:4px;border:1px solid var(--border-color)}.squad-selection-dropdown h4{margin:0 0 .75rem;font-size:.95rem;color:var(--text-primary)}.no-squads-text{color:var(--text-secondary);font-style:italic;margin:.5rem 0}.squad-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.squad-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all .2s}.squad-item:hover{background:var(--bg-hover)}.squad-item.selected{border-color:#2196f3;background:#2196f333}.squad-name{font-weight:700;color:var(--text-primary)}.squad-points{font-size:.9rem;color:var(--text-secondary)}.squad-selection-actions{display:flex;gap:.5rem;justify-content:flex-end}.confirm-button{padding:.5rem 1rem;background:#4caf50;color:#fff;border:1px solid #45a049;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s}.confirm-button:hover:not(:disabled){background:#45a049}.confirm-button:disabled{opacity:.5;cursor:not-allowed}.starboard-game{display:flex;flex-direction:column;height:100%}.starboard-game.loading,.starboard-game.error{justify-content:center;align-items:center;padding:2rem;text-align:center}.starboard-game.error button{margin-top:1rem;padding:.5rem 1rem;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer}.game-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.game-info{display:flex;gap:2rem;align-items:center}.phase-indicator{font-size:1.1rem;font-weight:700;color:#2196f3}.round-indicator{font-size:1rem;color:var(--text-secondary)}.game-result{font-size:1.2rem;font-weight:700;padding:.5rem 1rem;border-radius:4px;animation:pulse 2s infinite}.game-result.victory{background:#4caf5033;color:#4caf50;border:2px solid #4caf50}.game-result.defeat{background:#f4433633;color:#f44336;border:2px solid #f44336}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.game-controls{display:flex;gap:.5rem}.advance-phase-button{padding:.5rem 1rem;background:#4caf50;color:#fff;border:1px solid #45a049;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s}.advance-phase-button:hover:not(:disabled){background:#45a049}.advance-phase-button:disabled{background:#9e9e9e;border-color:#757575;cursor:not-allowed;opacity:.6}.exit-button{padding:.5rem 1rem;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s}.exit-button:hover{background:var(--bg-hover)}.error-message{padding:1rem;background:#f443361a;border:1px solid #f44336;border-radius:4px;color:#f44336;margin:1rem;text-align:center}.maneuver-status-message{padding:.75rem;background:#2196f31a;border:1px solid #2196f3;border-radius:4px;color:#2196f3;margin:1rem;text-align:center;font-size:.95rem}.game-over-banner{padding:1.5rem;margin:1rem;border-radius:8px;text-align:center;font-size:1.3rem;font-weight:700;animation:slideDown .5s ease}.game-over-banner.victory{background:linear-gradient(135deg,#4caf5033,#4caf504d);color:#4caf50;border:3px solid #4caf50;box-shadow:0 0 20px #4caf5066}.game-over-banner.defeat{background:linear-gradient(135deg,#f4433633,#f443364d);color:#f44336;border:3px solid #f44336;box-shadow:0 0 20px #f4433666}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.pilots-grid{flex:1;overflow-y:auto;padding:1rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1rem}@media(min-width:1200px){.pilots-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.pilots-grid{grid-template-columns:1fr}}.pilot-card{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.pilot-card.disabled{opacity:.5;filter:grayscale(.5)}.pilot-card.my-pilot{border-color:#2196f3;box-shadow:0 0 8px #2196f34d}.pilot-card-header{display:flex;gap:.75rem;align-items:center}.ship-icon{width:40px;height:40px;object-fit:contain}.pilot-info{flex:1}.pilot-name{margin:0 0 .25rem;font-size:1.1rem;color:var(--text-primary)}.pilot-owner{font-size:.9rem;color:var(--text-secondary)}.pilot-skill{font-size:1.2rem;font-weight:700;color:#ff9800;background:var(--bg-tertiary);padding:.25rem .75rem;border-radius:4px}.pilot-card-image{width:100%;display:flex;justify-content:center;margin:.5rem 0}.pilot-card-image .card-image{max-width:100%;height:auto;border-radius:6px;box-shadow:0 2px 8px #0000004d;border:1px solid var(--border-color)}.pilot-stats{display:flex;gap:1rem;align-items:center;padding:.5rem;background:var(--bg-tertiary);border-radius:4px;justify-content:space-around}.pilot-stats .stat-item{display:flex;flex-direction:column;align-items:center;gap:.25rem}.pilot-stats .stat-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase}.pilot-status{display:flex;gap:.5rem;flex-wrap:wrap}.status-badge{padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:700;text-transform:uppercase}.status-badge.ionized{background:#00bcd4;color:#fff}.status-badge.disabled{background:#9e9e9e;color:#fff}.status-badge.stressed{background:#f44336;color:#fff}.pilot-tokens{display:flex;gap:1rem;flex-wrap:wrap}.pilot-damage{display:flex;gap:1rem;align-items:center}.damage-control{display:flex;align-items:center;gap:.5rem}.damage-control label{font-size:.9rem;color:var(--text-secondary)}.damage-buttons{display:flex;gap:.25rem}.damage-buttons button{padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:3px;background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;font-size:.85rem;transition:background .2s}.damage-buttons button:hover{background:var(--bg-hover)}.damage-value{min-width:2rem;text-align:center;font-weight:700;color:var(--text-primary)}.pilot-maneuver{padding-top:.75rem;border-top:1px solid var(--border-color)}.pilot-maneuver h4{margin:0 0 .5rem;font-size:.9rem;color:var(--text-secondary);text-transform:uppercase}.pilot-upgrades h4{margin:0 0 .5rem;font-size:.9rem;color:var(--text-secondary);text-transform:uppercase}.pilot-stats{display:flex;gap:1rem;align-items:center;padding:.5rem;background:var(--bg-tertiary);border-radius:4px}.pilot-tokens{display:flex;gap:1rem;flex-wrap:wrap;padding:.5rem;background:var(--bg-tertiary);border-radius:4px}.token-display{display:flex;align-items:center;gap:.5rem}.token-icon{width:28px;height:28px;object-fit:contain}.token-button{width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:3px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:.85rem;transition:background .2s;display:flex;align-items:center;justify-content:center}.token-button:hover:not(:disabled){background:var(--bg-hover)}.token-button:disabled{opacity:.4;cursor:not-allowed}.token-count{min-width:1.5rem;text-align:center;font-weight:700;color:var(--text-primary);font-size:.95rem}.maneuver-section{padding:.75rem;background:var(--bg-tertiary);border-radius:4px;display:flex;flex-direction:column;gap:.5rem}.select-maneuver-button,.cancel-button{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:.9rem;transition:background .2s}.select-maneuver-button:hover,.cancel-button:hover{background:var(--bg-hover)}.selected-maneuver{padding:.5rem;background:#2196f333;border:1px solid #2196f3;border-radius:4px;text-align:center;font-size:.9rem;color:var(--text-primary);font-weight:700}.pilot-upgrades{display:flex;flex-direction:column;gap:.5rem}.pilot-upgrades h4{margin:0 0 .5rem;font-size:.85rem;color:var(--text-secondary);text-transform:uppercase}.upgrade-card{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;transition:all .2s}.upgrade-card:hover{background:var(--bg-hover);border-color:#2196f3;transform:translateY(-1px);box-shadow:0 2px 4px #0003}.upgrade-card.disabled{opacity:.6}.upgrade-card .slot-icon{width:20px;height:20px;object-fit:contain}.upgrade-card .upgrade-name{flex:1;font-size:.85rem;color:var(--text-primary)}.upgrade-card .upgrade-status{font-size:.9rem;font-weight:700}.upgrade-card.enabled .upgrade-status{color:#4caf50}.upgrade-card.disabled .upgrade-status{color:#f44336}.upgrade-image-modal{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;cursor:pointer;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.upgrade-image-container{position:relative;max-width:90vw;max-height:90vh;cursor:default}.upgrade-card-image{max-width:100%;max-height:90vh;border-radius:8px;box-shadow:0 4px 20px #00000080}.upgrade-image-error{padding:2rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);text-align:center}.close-modal-button{position:absolute;top:-10px;right:-10px;width:32px;height:32px;border-radius:50%;background:#f44336;color:#fff;border:2px solid white;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:background .2s;box-shadow:0 2px 8px #0000004d}.close-modal-button:hover{background:#d32f2f;transform:scale(1.1)}.damage-controls{display:flex;gap:1rem;padding:.5rem;background:var(--bg-tertiary);border-radius:4px}.damage-control{display:flex;align-items:center;gap:.5rem;flex:1}.damage-control label{font-size:.9rem;color:var(--text-secondary);font-weight:700}.damage-control button{padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:3px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:.9rem;transition:background .2s;min-width:2rem}.damage-control button:hover{background:var(--bg-hover)}.damage-control span{font-weight:700;color:var(--text-primary);min-width:3rem;text-align:center}.maneuver-hidden{color:var(--text-secondary);font-style:italic}.selected-maneuver .maneuver-hidden:before{content:"🔒 "}.maneuver-selector{display:flex;flex-direction:column;gap:.5rem}.maneuver-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.25rem}.maneuver-button{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;font-size:.85rem;transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:.25rem}.maneuver-button:hover:not(:disabled){background:var(--bg-hover);transform:translateY(-2px)}.maneuver-button:disabled{opacity:.3;cursor:not-allowed}.maneuver-button.selected{border-color:#2196f3;background:#2196f333;font-weight:700}.maneuver-button.green{border-color:#4caf50}.maneuver-button.white{border-color:#9e9e9e}.maneuver-button.red{border-color:#f44336}.maneuver-direction{font-size:1.2rem}.maneuver-speed{font-size:.75rem;color:var(--text-secondary)}.selected-maneuver{padding:.5rem;background:var(--bg-tertiary);border-radius:4px;text-align:center;font-size:.9rem;color:var(--text-primary)}.selected-maneuver.none{color:var(--text-secondary);font-style:italic}.app{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;gap:2rem}
