:root{--cell-size: 36px;--border-color: #333;--bg-color: #1a1a2e;--surface-color: #16213e;--text-color: #e0e0e0;--text-muted: #888;--focus-color: #ffd700;--focus-word-color: rgba(255, 215, 0, .15);--target-color: rgba(255, 100, 50, .25);--locked-bg: #1a2e1a;--locked-border: #2d5a2d;--player-blue: #3b82f6;--player-red: #ef4444;--player-green: #22c55e;--player-amber: #f59e0b;font-family:Inter,system-ui,-apple-system,sans-serif;color:var(--text-color);background:var(--bg-color)}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;display:flex;justify-content:center}#root{width:100%;max-width:1200px}.app{display:flex;flex-direction:column;align-items:center;min-height:100vh;padding:1rem}.lobby{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding-top:4rem}.lobby h1{font-size:2.5rem;font-weight:800;letter-spacing:-.02em}.lobby .subtitle{color:var(--text-muted);font-size:1.1rem}.lobby button{padding:.75rem 2rem;font-size:1.1rem;font-weight:600;border:none;border-radius:8px;background:var(--player-blue);color:#fff;cursor:pointer;transition:background .15s}.lobby button:hover{background:#2563eb}.lobby input[type=file]{display:none}.lobby .file-label{padding:.75rem 2rem;font-size:1.1rem;font-weight:600;border:2px dashed #444;border-radius:8px;color:var(--text-muted);cursor:pointer;transition:border-color .15s}.lobby .file-label:hover{border-color:var(--player-blue);color:var(--text-color)}.lobby .file-name{color:var(--player-green);font-size:.9rem}.share-url{display:flex;flex-direction:column;align-items:center;gap:.5rem}.share-link{background:var(--surface-color);padding:.5rem 1rem;border-radius:6px;font-size:.9rem;color:var(--player-blue);cursor:pointer;-webkit-user-select:all;user-select:all;word-break:break-all}.share-link:hover{background:#3b82f626}.game-container{display:flex;flex-direction:column;align-items:center;gap:1rem;width:100%}.game-header{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:800px}.game-header h2{font-size:1.2rem;font-weight:600}.game-header .stats{display:flex;gap:1rem;font-size:.9rem;color:var(--text-muted)}.game-main{display:flex;gap:1.5rem;align-items:flex-start}.mode-indicator{font-size:.85rem;font-weight:600;padding:.25rem .75rem;border-radius:4px;text-transform:uppercase;letter-spacing:.05em}.mode-indicator.navigate{background:#3b82f633;color:var(--player-blue)}.mode-indicator.answer{background:#ef444433;color:var(--player-red)}.clue-bar{background:var(--surface-color);padding:.75rem 1rem;border-radius:8px;width:100%;max-width:800px;display:flex;gap:.75rem;align-items:baseline}.clue-bar .clue-number{font-weight:700;color:var(--focus-color);white-space:nowrap}.clue-bar .clue-text{font-size:1rem}.keyboard-hints{font-size:.8rem;color:var(--text-muted);max-width:0;min-width:100%;overflow-wrap:break-word}.crossword-grid{display:inline-grid;border:2px solid var(--border-color);gap:0;-webkit-user-select:none;user-select:none}.cell{width:var(--cell-size);height:var(--cell-size);border:1px solid var(--border-color);display:flex;align-items:center;justify-content:center;position:relative;font-size:1rem;font-weight:600;cursor:pointer;background:var(--surface-color);transition:background .1s}.cell.black{background:#000;cursor:default}.cell .clue-number-label{position:absolute;top:1px;left:2px;font-size:.55rem;font-weight:500;color:var(--text-muted);line-height:1}.cell.focused-word{background:var(--focus-word-color)}.cell.focused-cell{background:var(--focus-color);color:#000}.cell.focused-cell .clue-number-label{color:#555}.cell.target-word{background:var(--target-color)}.cell.locked{background:var(--locked-bg);border-color:var(--locked-border)}.cell.locked .letter{color:#5cb85c!important}.cell.locked .clue-number-label{color:#4a8c4a}.cell .letter{font-size:1.1rem}.cell .letter.player-0{color:var(--player-blue)}.cell .letter.player-1{color:var(--player-red)}.cell .letter.player-2{color:var(--player-green)}.cell .letter.player-3{color:var(--player-amber)}.cell.focused-cell .letter{color:#000}.clue-list{width:280px;max-height:calc(var(--cell-size) * 20);overflow-y:auto;background:var(--surface-color);border-radius:8px;padding:.75rem}.clue-list h3{font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.5rem}.clue-list-item{padding:.3rem .5rem;font-size:.85rem;border-radius:4px;cursor:pointer;display:flex;gap:.5rem}.clue-list-item:hover{background:#ffffff0d}.clue-list-item.active{background:var(--focus-word-color)}.clue-list-item.solved{color:#4a8c4a;text-decoration:line-through;opacity:.7}.clue-list-item .num{font-weight:700;min-width:1.5rem}.scoreboard-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100}.scoreboard{background:var(--surface-color);border-radius:12px;padding:2rem;min-width:300px}.scoreboard h2{text-align:center;margin-bottom:1rem}.scoreboard-row{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #333;align-items:center}.scoreboard-row .name{font-weight:600}.scoreboard-row .score{font-size:1.2rem;font-weight:700}.game-over{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding-top:3rem}.game-over h1{font-size:2rem}.game-over button{padding:.75rem 2rem;font-size:1rem;font-weight:600;border:none;border-radius:8px;background:var(--player-blue);color:#fff;cursor:pointer}
