:root{color-scheme:dark;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100vh;background:#1a1a2e;color:#fafafa}.app{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:.5rem;gap:.5rem}.header{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:640px;padding:.25rem .5rem}.header h1{margin:0;font-size:1.5rem;font-weight:800;letter-spacing:.15em;background:linear-gradient(135deg,#f5af19,#f12711);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.scores{display:flex;gap:.5rem}.score-card{display:flex;flex-direction:column;align-items:center;padding:.25rem .75rem;border-radius:.5rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.08);min-width:56px}.score-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;color:#ffffff80}.score-value{font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums}.player-score .score-value{color:#f5af19}.ai-score .score-value{color:#e74c3c}.bag-count .score-value{color:#aaa}.message-bar{width:100%;max-width:640px;padding:.4rem .75rem;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:.5rem;font-size:.8rem;color:#ffffffb3;text-align:center;min-height:2rem;display:flex;align-items:center;justify-content:center}.game-area{display:flex;justify-content:center;width:100%}.board-container{overflow:auto;max-width:100%;padding:.25rem}.board{display:grid;grid-template-columns:repeat(15,1fr);gap:1px;background:#111;border:2px solid #333;border-radius:4px;padding:1px;width:min(640px,95vw);height:min(640px,95vw)}.cell{position:relative;display:flex;align-items:center;justify-content:center;border-radius:2px;cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none;aspect-ratio:1;min-width:0;min-height:0}.cell:hover{filter:brightness(1.3)}.cell.can-place{outline:2px dashed rgba(255,255,255,.4);outline-offset:-2px}.cell.drag-over{outline:2px solid #f5af19;outline-offset:-2px;filter:brightness(1.5)}.cell.placed-this-turn{box-shadow:inset 0 0 0 2px #f5af19}.square-label{font-size:clamp(.35rem,1.2vw,.65rem);font-weight:700;text-transform:uppercase;color:#ffffffd9;text-shadow:0 1px 2px rgba(0,0,0,.5);letter-spacing:.05em;pointer-events:none}.cell.tw .square-label{font-size:clamp(.3rem,1vw,.55rem)}.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:3px;font-weight:700;-webkit-user-select:none;user-select:none;position:relative}.tile.on-board{width:90%;height:90%;background:linear-gradient(145deg,wheat,tan);color:#1a1a2e;box-shadow:0 1px 3px #0006,inset 0 1px #ffffff4d}.tile-letter{font-size:clamp(.6rem,2.2vw,1.2rem);font-weight:800;line-height:1}.tile-points{font-size:clamp(.3rem,.8vw,.55rem);font-weight:600;position:absolute;bottom:clamp(1px,.5vw,3px);right:clamp(1px,.5vw,3px);line-height:1}.controls{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center;width:100%;max-width:640px}.btn{padding:.4rem .9rem;border:1px solid rgba(255,255,255,.15);border-radius:.4rem;background:#ffffff0f;color:#fafafa;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s;letter-spacing:.03em}.btn:hover:not(:disabled){background:#ffffff1f;border-color:#ffffff40}.btn:disabled{opacity:.35;cursor:not-allowed}.btn-submit{background:#f5af1933;border-color:#f5af1966;color:#f5af19}.btn-submit:hover:not(:disabled){background:#f5af1959}.btn-recall{background:#e74c3c26;border-color:#e74c3c4d;color:#e74c3c}.btn-recall:hover:not(:disabled){background:#e74c3c40}.btn-shuffle{background:#3498db26;border-color:#3498db4d;color:#3498db}.btn-new{background:#2ecc7126;border-color:#2ecc714d;color:#2ecc71}.rack-area{display:flex;justify-content:center;width:100%;padding:.25rem}.rack{display:flex;gap:.4rem;padding:.6rem 1rem;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:.6rem}.rack-tile{width:clamp(36px,8vw,52px);height:clamp(36px,8vw,52px);background:linear-gradient(145deg,wheat,tan);color:#1a1a2e;box-shadow:0 2px 6px #0000004d,inset 0 1px #ffffff4d;cursor:pointer;transition:all .15s}.rack-tile:hover{transform:translateY(-3px);box-shadow:0 4px 12px #0006,inset 0 1px #ffffff4d}.rack-tile.selected{transform:translateY(-6px);box-shadow:0 6px 16px #f5af1966,0 0 0 2px #f5af19;background:linear-gradient(145deg,#ffe4b5,#e8c88a)}.rack-tile.empty-slot{background:#ffffff08;border:1px dashed rgba(255,255,255,.1);box-shadow:none;cursor:default}.rack-tile.empty-slot:hover{transform:none;box-shadow:none}.footer{width:100%;max-width:640px;padding:.25rem}.legend{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;font-size:.65rem;color:#ffffff80}.legend-item{display:flex;align-items:center;gap:.3rem}.legend-swatch{width:12px;height:12px;border-radius:2px;border:1px solid rgba(255,255,255,.15)}.legend-swatch.tw{background:#e74c3c}.legend-swatch.dw{background:#e67e22}.legend-swatch.tl{background:#2980b9}.legend-swatch.dl{background:#3498db}.legend-swatch.center{background:#e67e22}.game-over-overlay,.blank-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.game-over-modal{background:#1e1e36;border:1px solid rgba(255,255,255,.1);border-radius:1rem;padding:2rem;text-align:center;min-width:280px}.game-over-modal h2{margin:0 0 1rem;font-size:1.5rem}.game-over-modal p{margin:.5rem 0;font-size:1rem}.game-over-modal .winner{font-size:1.2rem;font-weight:700;color:#f5af19;margin:1rem 0}.blank-modal{background:#1e1e36;border:1px solid rgba(255,255,255,.1);border-radius:1rem;padding:1.5rem;text-align:center;max-width:360px;width:90%}.blank-modal h3{margin:0 0 1rem;font-size:1rem}.blank-letters{display:grid;grid-template-columns:repeat(6,1fr);gap:.35rem}.blank-letter-btn{padding:.5rem;border:1px solid rgba(255,255,255,.15);border-radius:.35rem;background:#ffffff0f;color:#fafafa;font-size:.9rem;font-weight:700;cursor:pointer;transition:all .15s}.blank-letter-btn:hover{background:#f5af194d;border-color:#f5af1980}@media(max-width:480px){.app{padding:.25rem}.header h1{font-size:1.1rem}.scores{gap:.3rem}.score-card{padding:.2rem .5rem;min-width:44px}.score-value{font-size:1rem}.controls{gap:.3rem}.btn{padding:.35rem .7rem;font-size:.7rem}.rack{gap:.25rem;padding:.4rem .6rem}}
