:root{color-scheme:dark;--bg: #0b1120;--bg-2: #111a2e;--panel: #15203a;--panel-2: #1b294a;--line: #26375f;--text: #e8eefc;--muted: #9fb0d0;--accent: #14b8a6;--accent-2: #0f766e;--gold: #d8b15a;--tile: #efe2c0;--tile-edge: #c9b487;--tile-text: #2a2114;--tw: #d4503e;--dw: #e08aa0;--tl: #3b7bd0;--dl: #8fc3e8;--ok: #34d399;--err: #f87171;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0;background:radial-gradient(1200px 800px at 50% -10%,#16233f,var(--bg));color:var(--text);-webkit-tap-highlight-color:transparent}.app{max-width:720px;margin:0 auto;padding:12px 12px 60px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.app-header h1{font-size:1.3rem;margin:6px 0;letter-spacing:.5px;background:linear-gradient(90deg,var(--accent),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}.header-actions{display:flex;gap:8px}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:9px 14px;font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .05s ease,background .15s ease,opacity .15s}.btn:hover{background:var(--panel)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,var(--accent),var(--accent-2));border-color:transparent;color:#04201c}.banner{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin:8px 0;font-size:.85rem}.banner.error{border-color:var(--err);color:var(--err)}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 10px;flex-wrap:wrap}.dict-badge{font-size:.72rem;color:var(--muted)}.online-toggle{font-size:.72rem;color:var(--muted);display:flex;align-items:center;gap:5px;cursor:pointer}.online-toggle input{accent-color:var(--accent)}.scoreboard{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:12px}.player.is-me{border-color:color-mix(in srgb,var(--gold) 40%,var(--line))}.turn-hint{margin:-4px 0 10px;padding:8px 12px;border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));font-size:.85rem;color:var(--muted)}.player{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px;position:relative;transition:border-color .2s,box-shadow .2s}.player.active-turn{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 4px 18px -8px var(--accent)}.player-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.player-name{background:transparent;border:none;color:var(--text);font-weight:700;font-size:.92rem;width:70%;padding:2px 0}.player-name:focus{outline:none;border-bottom:1px solid var(--accent)}.me-toggle{font-size:.62rem;padding:3px 7px;border-radius:20px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer}.me-toggle.on{background:var(--accent);color:#04201c;border-color:transparent;font-weight:700}.player-score{font-size:2rem;font-weight:800;line-height:1.1}.turn-badge{position:absolute;top:10px;right:12px;font-size:.6rem;color:var(--accent);text-transform:uppercase;letter-spacing:1px}.board-wrap{display:flex;justify-content:center}.board{width:100%;max-width:460px;aspect-ratio:1;display:flex;flex-direction:column;gap:2px;background:#0a1730;padding:4px;border-radius:8px;border:1px solid var(--line)}.board-row{display:flex;gap:2px;flex:1}.cell{flex:1;position:relative;border:none;border-radius:3px;background:#20335c;color:#cdd9f0;display:flex;align-items:center;justify-content:center;font-size:.5rem;cursor:pointer;padding:0;overflow:hidden;min-width:0}.cell .prem-label{font-size:.42rem;font-weight:700;opacity:.9}.prem-TW{background:var(--tw);color:#fff}.prem-DW{background:var(--dw);color:#3a1020}.prem-TL{background:var(--tl);color:#fff}.prem-DL{background:var(--dl);color:#0c2740}.cell.center .star{color:#3a1020;font-size:.9rem}.cell.selected{outline:2px solid var(--accent);outline-offset:-2px;z-index:2}.cell.highlight.pending{z-index:1}.cursor-dir{position:absolute;bottom:0;right:1px;font-size:.5rem;color:var(--accent)}.cell.filled{background:linear-gradient(160deg,var(--tile),#e3d2a8);color:var(--tile-text);box-shadow:inset 0 -2px 0 var(--tile-edge)}.cell.filled.pending{background:linear-gradient(160deg,#bdf0e6,#8fe0d2);color:#06302a;box-shadow:inset 0 -2px #5bbfae}.cell.filled.blank .tile-letter{color:#b1442f}.tile-letter{font-size:.72rem;font-weight:800;text-transform:uppercase}.tile-value{position:absolute;bottom:0;right:2px;font-size:.4rem;font-weight:700}.play-bar{display:flex;gap:8px;margin:12px 0}.play-bar .btn{flex:1}.rack-section{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px}.rack-label{display:block;font-size:.72rem;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.rack-input{width:100%;background:#0c1730;border:1px solid var(--line);color:var(--text);font-size:1.5rem;letter-spacing:8px;font-weight:800;text-align:center;padding:12px;border-radius:10px;text-transform:uppercase}.rack-input:focus{outline:none;border-color:var(--accent)}.keypad{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-top:10px}.key{position:relative;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:9px 0;font-weight:700;cursor:pointer;font-size:.9rem}.key:active{background:var(--accent);color:#04201c}.key-value{position:absolute;top:2px;right:4px;font-size:.5rem;color:var(--muted)}.key-blank{grid-column:span 5;background:#28213f}.key-blank.active{background:var(--gold);color:#2a2114}.key-back{grid-column:span 2}.input-hint{font-size:.7rem;color:var(--muted);margin:8px 0 0}.toast{position:fixed;bottom:16px;left:50%;transform:translate(-50%);background:var(--panel-2);border:1px solid var(--line);padding:10px 16px;border-radius:10px;font-size:.85rem;z-index:50;max-width:90%;box-shadow:0 10px 30px -10px #000}.toast.ok{border-color:var(--ok)}.toast.error{border-color:var(--err)}.tabs{display:flex;gap:4px;margin-bottom:10px;background:var(--panel);padding:4px;border-radius:12px;border:1px solid var(--line)}.tab{flex:1;background:transparent;border:none;color:var(--muted);padding:9px 4px;border-radius:8px;font-weight:700;font-size:.8rem;cursor:pointer}.tab.active{background:var(--accent);color:#04201c}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;min-height:140px;padding:10px}.panel-msg{color:var(--muted);font-size:.85rem;padding:16px;text-align:center}.moves-head,.move-row{display:grid;grid-template-columns:1.4fr .9fr .6fr .7fr 1fr .7fr;gap:4px;align-items:center;font-size:.8rem;padding:6px 4px}.moves-head{color:var(--muted);font-size:.66rem;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--line)}.move-row{border-bottom:1px solid #1b2848}.move-row:nth-child(2n){background:#121d36}.col-score,.col-eq{font-variant-numeric:tabular-nums;font-weight:700}.col-leave{color:var(--gold);letter-spacing:1px;font-size:.74rem}.word-link{background:none;border:none;color:var(--accent);font-weight:800;text-align:left;cursor:pointer;padding:0;font-size:.84rem;text-transform:uppercase}.stage-btn{background:var(--accent-2);border:none;color:#eafffb;border-radius:6px;padding:5px 6px;font-size:.7rem;font-weight:700;cursor:pointer}.stage-btn:active{transform:scale(.95)}.history-row{display:grid;grid-template-columns:.4fr 1fr 1.4fr .6fr .8fr;gap:6px;font-size:.8rem;padding:7px 4px;border-bottom:1px solid #1b2848;align-items:center}.hist-num{color:var(--muted)}.hist-score{color:var(--ok);font-weight:700}.hist-totals{font-variant-numeric:tabular-nums;color:var(--muted);text-align:right}.hist-at{color:var(--muted);font-size:.72rem}.tiles-remaining{text-align:center;font-size:.9rem;margin:6px 0 12px;color:var(--muted)}.tiles-remaining strong{color:var(--text);font-size:1.3rem}.tiles-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:5px}.tile-count{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;display:flex;flex-direction:column;align-items:center;padding:5px 0}.tile-count.depleted{opacity:.35}.tc-letter{font-weight:800;font-size:.8rem}.tc-num{font-size:.72rem;color:var(--accent);font-weight:700}.tiles-note{font-size:.68rem;color:var(--muted);margin-top:12px}.hist-quality{display:block;font-size:.66rem;margin-top:2px}.hist-quality.good{color:var(--ok)}.hist-quality.sub{color:var(--gold)}.analysis-block{border-bottom:1px solid var(--line);padding:10px 4px 14px}.analysis-block:last-child{border-bottom:none}.analysis-block h3{margin:0 0 8px;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.winbar{position:relative;height:26px;background:var(--tw);border-radius:8px;overflow:hidden;display:flex;align-items:center}.winbar-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.winbar-label-l,.winbar-label-r{position:relative;z-index:1;font-size:.7rem;font-weight:700;padding:0 8px}.winbar-label-r{margin-left:auto}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:flex;justify-content:space-between;align-items:center;font-size:.8rem}.stat span{color:var(--muted)}.tips-list{margin:10px 0 0;padding-left:18px;font-size:.82rem;line-height:1.5}.small{font-size:.7rem}.forecast-controls{display:flex;gap:8px;align-items:center;margin-bottom:10px}.progress{flex:1;height:10px;background:var(--panel-2);border-radius:6px;overflow:hidden;border:1px solid var(--line)}.progress-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--gold));transition:width .1s linear}.forecast-summary{font-size:.8rem;color:var(--muted);margin-bottom:8px}.popup-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#040812b3;display:flex;align-items:center;justify-content:center;padding:16px;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.popup{background:var(--panel);border:1px solid var(--line);border-radius:16px;max-width:420px;width:100%;padding:18px;box-shadow:0 20px 60px -20px #000}.popup-head{display:flex;justify-content:space-between;align-items:center}.popup-head h2{margin:0;letter-spacing:2px}.popup-close{background:none;border:none;color:var(--muted);font-size:1.6rem;cursor:pointer;line-height:1}.popup-validity{margin:10px 0;font-weight:700}.popup-validity .valid{color:var(--ok)}.popup-validity .invalid{color:var(--err)}.popup-defs{max-height:50vh;overflow-y:auto}.def-entry{font-size:.9rem;line-height:1.4;margin:8px 0}.def-entry .pos{color:var(--gold)}.muted{color:var(--muted)}.popup-src{font-size:.66rem;color:var(--muted);margin-top:10px;text-align:right}.setup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#040812b8;display:flex;align-items:center;justify-content:center;padding:16px}.setup-modal{width:min(100%,420px);background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px 16px 16px;box-shadow:0 18px 48px -20px #000000a6}.setup-modal h2{margin:0 0 8px;font-size:1.15rem}.setup-lead{margin:0 0 14px;font-size:.82rem;color:var(--muted);line-height:1.45}.setup-field{display:block;margin-bottom:12px;border:none;padding:0}.setup-field legend{font-size:.78rem;color:var(--muted);margin-bottom:6px}.setup-count{display:flex;gap:8px}.count-btn{flex:1;padding:10px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-weight:700;cursor:pointer}.count-btn.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--panel-2))}.setup-names{display:grid;gap:8px;margin-bottom:12px}.setup-name-row{display:grid;grid-template-columns:72px 1fr;align-items:center;gap:8px;font-size:.82rem;color:var(--muted)}.setup-name-row input,.setup-field select{width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:8px 10px;font-size:.9rem}.setup-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}@media (min-width: 680px){.board{max-width:520px}.app-header h1{font-size:1.6rem}}
