body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;min-width:320px;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;display:flex;flex-direction:column}*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #1a1a2e;--bg-card: #16213e;--bg-cell: #0f3460;--text: #e0e0e0;--text-muted: #8899aa;--accent: #e94560;--accent-hover: #ff6b81;--green: #27ae60;--red: #e74c3c;--gold: #f1c40f;--blue: #2980b9;--tile-bg: #f5deb3;--tile-text: #2c2c2c;--tile-selected: #e94560;--board-border: #0a1628;--bonus-tw: #e74c3c;--bonus-dw: #e8a0bf;--bonus-tl: #2980b9;--bonus-dl: #85c1e9}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;padding:.75rem 1.25rem;background:var(--bg-card);border-bottom:1px solid #263056}.app-header .logo{font-size:1.25rem;font-weight:700;color:var(--text)}main{flex:1;display:flex;flex-direction:column}.page-center{flex:1;display:flex;align-items:center;justify-content:center;padding:1rem}.card{background:var(--bg-card);border-radius:12px;padding:2rem;max-width:600px;width:100%;border:1px solid #263056}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.25rem;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:#263056;color:var(--text)}.btn-secondary:hover:not(:disabled){background:#344078}.btn-warning{background:#e67e22;color:#fff}.btn-warning:hover:not(:disabled){background:#f39c12}.btn-google{background:#4285f4;color:#fff;padding:.7rem 1.5rem}.btn-google:hover{background:#5a99f7}.btn-large{padding:.85rem 2rem;font-size:1.1rem;margin-top:1rem;width:100%}.btn-small{padding:.35rem .75rem;font-size:.8rem}.loading{font-size:1.2rem;color:var(--text-muted)}.error-message{color:var(--red);font-size:1.1rem}.hint{color:var(--text-muted);font-size:.9rem;margin-top:.75rem}.subtitle{color:var(--text-muted);margin-bottom:1.25rem}.hero{text-align:center;margin-bottom:2rem}.hero h1{font-size:2.2rem;margin-bottom:.5rem}.tagline{color:var(--text-muted);font-size:1.1rem}.auth-card{text-align:center}.user-info{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem}.my-games{margin-top:1.5rem;text-align:left}.my-games h3{margin-bottom:.75rem}.game-list-item{display:flex;justify-content:space-between;align-items:center;padding:.85rem 1rem;background:var(--bg);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:background .15s}.game-list-item:hover{background:#222b4a}.game-list-info{display:flex;gap:.75rem;align-items:center}.game-status{font-size:.85rem}.game-languages{color:var(--text-muted);font-size:.85rem}.game-list-meta{display:flex;gap:1rem;color:var(--text-muted);font-size:.8rem}.create-game-card{max-width:700px}.create-game-card h2{margin-bottom:.25rem}.language-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem;margin-bottom:1.5rem;max-height:400px;overflow-y:auto;padding:.25rem}.language-option{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;background:var(--bg);border-radius:8px;cursor:pointer;transition:background .15s;border:2px solid transparent}.language-option.selected{border-color:var(--accent);background:#e945601a}.language-option input{display:none}.lang-name{font-weight:600;flex:1}.word-count{font-size:.75rem;color:var(--text-muted)}.lobby-card{max-width:500px}.lobby-card h2{margin-bottom:1rem}.lobby-info{margin-bottom:1.25rem}.lobby-info p{margin-bottom:.35rem}.share-link{margin-bottom:1.25rem}.share-link label{display:block;font-size:.85rem;color:var(--text-muted);margin-bottom:.35rem}.link-row{display:flex;gap:.5rem}.link-row input{flex:1;padding:.5rem .75rem;background:var(--bg);border:1px solid #263056;border-radius:6px;color:var(--text);font-size:.85rem}.players-list{margin-bottom:1.25rem}.players-list h3{margin-bottom:.5rem}.player-row{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--bg);border-radius:6px;margin-bottom:.35rem}.guest-badge{font-size:.7rem;background:#e67e22;color:#fff;padding:.15rem .4rem;border-radius:4px}.join-options{margin-top:1rem}.divider{display:flex;align-items:center;gap:1rem;margin:1rem 0;color:var(--text-muted)}.divider:before,.divider:after{content:"";flex:1;height:1px;background:#263056}.guest-join{display:flex;gap:.5rem}.guest-join input{flex:1;padding:.5rem .75rem;background:var(--bg);border:1px solid #263056;border-radius:6px;color:var(--text)}.game-container{display:flex;flex-direction:column;align-items:center;padding:.5rem;gap:.5rem;max-width:100vw;overflow-x:hidden}.scoreboard-strip{display:flex;gap:.5rem;align-items:center;padding:.5rem .75rem;background:var(--bg-card);border-radius:10px;width:100%;max-width:640px;justify-content:center;flex-wrap:wrap}.score-player{display:flex;flex-direction:column;align-items:center;padding:.35rem .75rem;border-radius:8px;min-width:70px;transition:background .2s}.score-player.active-turn{background:#e9456040;border:1px solid var(--accent)}.score-player.is-me .score-name{color:var(--gold)}.score-name{font-size:.75rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}.score-value{font-size:1.25rem;font-weight:700}.bag-count{font-size:.85rem;color:var(--text-muted);margin-left:auto}.turn-indicator{font-size:1rem;font-weight:600;color:var(--accent);text-align:center}.board-wrapper{overflow:auto;max-width:100%;-webkit-overflow-scrolling:touch}.board{display:inline-flex;flex-direction:column;gap:1px;background:var(--board-border);padding:2px;border-radius:4px;-webkit-user-select:none;user-select:none}.board-row{display:flex;gap:1px}.board-cell{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-cell);cursor:pointer;position:relative;transition:outline .1s;border-radius:2px}.board-cell.droppable:hover{outline:2px solid var(--accent);outline-offset:-2px}.board-cell.highlight-valid{outline:2.5px solid var(--green);outline-offset:-2px;z-index:1}.board-cell.highlight-invalid{outline:2.5px solid var(--red);outline-offset:-2px;z-index:1}.bonus-label{font-size:.55rem;font-weight:700;color:#ffffffb3;text-align:center;line-height:1}.board-cell.bonus-star .bonus-label{font-size:1rem}.tile-on-board{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--tile-bg);border-radius:3px;position:relative;box-shadow:0 1px 2px #0000004d}.tile-on-board.tile-new{background:#ffe0a0;box-shadow:0 0 4px #e9456080}.tile-on-board.tile-blank{background:#d4c5a0}.tile-on-board .tile-letter{font-size:1rem;font-weight:700;color:var(--tile-text)}.tile-on-board .tile-value{position:absolute;bottom:1px;right:2px;font-size:.45rem;font-weight:700;color:var(--tile-text);opacity:.7}.preview-bar{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem 1rem;border-radius:8px;width:100%;max-width:640px;font-size:.9rem}.preview-bar.preview-valid{background:#27ae6026;border:1px solid var(--green)}.preview-bar.preview-invalid{background:#e74c3c26;border:1px solid var(--red)}.preview-words{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.preview-word{font-weight:600}.word-valid{color:var(--green)}.word-invalid{color:var(--red)}.preview-total{font-weight:700;font-size:1rem}.bingo-label{color:var(--gold);font-weight:700}.action-error{color:var(--red);font-size:.9rem;padding:.35rem .75rem;background:#e74c3c26;border-radius:6px}.rack-area{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%;max-width:640px}.rack{display:flex;gap:4px;padding:.5rem;background:var(--bg-card);border-radius:10px;justify-content:center}.rack-tile{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--tile-bg);border-radius:6px;cursor:pointer;position:relative;transition:all .15s;-webkit-user-select:none;user-select:none;box-shadow:0 2px 4px #0000004d}.rack-tile:hover{transform:translateY(-3px);box-shadow:0 4px 8px #0006}.rack-tile.selected{outline:3px solid var(--accent);transform:translateY(-5px);box-shadow:0 6px 12px #e945604d}.rack-tile.swap-selected{outline:3px solid var(--blue);transform:translateY(-3px)}.rack-tile .tile-letter{font-size:1.2rem;font-weight:700;color:var(--tile-text)}.rack-tile .tile-value{position:absolute;bottom:2px;right:3px;font-size:.55rem;font-weight:700;color:var(--tile-text);opacity:.7}.action-buttons{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg-card);border-radius:12px;padding:1.5rem;max-width:380px;width:90%;border:1px solid #263056}.blank-dialog h3{margin-bottom:1rem;text-align:center}.blank-letter-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.blank-letter-btn{padding:.6rem;background:var(--tile-bg);color:var(--tile-text);border:none;border-radius:6px;font-size:1rem;font-weight:700;cursor:pointer;transition:background .15s}.blank-letter-btn:hover{background:#e8c870}.move-history{width:100%;max-width:640px;background:var(--bg-card);border-radius:10px;padding:.75rem 1rem;margin-bottom:1rem}.move-history h3{margin-bottom:.5rem;font-size:.9rem;color:var(--text-muted)}.moves-list{max-height:200px;overflow-y:auto}.move-entry{padding:.35rem 0;font-size:.85rem;border-bottom:1px solid rgba(255,255,255,.05)}.move-num{color:var(--text-muted);margin-right:.5rem}.game-over-card{max-width:550px;text-align:center}.game-over-card h2{font-size:1.8rem;margin-bottom:1.5rem}.final-scoreboard{margin-bottom:1.5rem}.final-score-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg);border-radius:8px;margin-bottom:.5rem}.final-score-row.winner{background:#f1c40f26;border:1px solid var(--gold)}.final-score-row.is-me{border-left:3px solid var(--accent)}.rank{font-weight:700;font-size:1.1rem;color:var(--text-muted);min-width:30px}.final-score-row .player-name{flex:1;font-weight:600;text-align:left}.final-score{font-size:1.4rem;font-weight:700;color:var(--gold)}.final-score-breakdown{display:flex;flex-direction:column;align-items:flex-end}.score-detail{font-size:.75rem;color:var(--text-muted);font-weight:400}.game-over-actions{display:flex;gap:.75rem;justify-content:center;margin-top:1rem}.game-stats{margin-bottom:1.5rem;text-align:left}.game-stats p{margin-bottom:.3rem;color:var(--text-muted)}.move-history-final{text-align:left;margin-bottom:1.5rem}.move-history-final h3{margin-bottom:.5rem}.move-history-final .moves-list{max-height:300px}@media(max-width:600px){.board-cell{width:24px;height:24px}.tile-on-board .tile-letter{font-size:.7rem}.tile-on-board .tile-value{font-size:.35rem}.bonus-label{font-size:.4rem}.rack-tile{width:38px;height:38px}.rack-tile .tile-letter{font-size:1rem}.hero h1{font-size:1.5rem}.language-grid{grid-template-columns:1fr}.scoreboard-strip{gap:.25rem;padding:.35rem .5rem}.score-player{padding:.25rem .5rem;min-width:55px}.score-name{font-size:.65rem;max-width:60px}.score-value{font-size:1rem}}@media(max-width:400px){.board-cell{width:20px;height:20px}.tile-on-board .tile-letter{font-size:.6rem}.rack-tile{width:34px;height:34px}}
