:root{--page:#eef2f5;--panel:#fff;--field:#f8fafc;--soft:#f1f5f7;--line:#d8e0e6;--line-strong:#9baab5;--ink:#2f3a43;--ink-strong:#111820;--muted:#64717c;--action:#1c6ca8;--action-dark:#14547f;--green:#1f8460;--amber:#b47b1f;--red:#b94a48;--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"Cascadia Mono", "SFMono-Regular", Consolas, monospace;color:var(--ink);background:var(--page);font-family:var(--sans);letter-spacing:0;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;line-height:1.35}*{box-sizing:border-box}body{background:var(--page);margin:0}input,button{font:inherit}input:focus-visible,button:focus-visible{outline:2px solid var(--action);outline-offset:2px}img{max-width:100%}#root{min-height:100vh}.app-shell{min-height:100vh;color:var(--ink);background:var(--page)}.brand-panel h1,.panel-section h2,.board-column h2{color:var(--ink-strong);letter-spacing:0;margin:0;font-size:20px;line-height:1.1}.brand-mark{align-items:center;gap:9px;display:inline-flex}.brand-mark img{flex:none;width:28px;height:28px}.brand-panel{padding:12px 14px}.pill{border:1px solid var(--line);background:var(--soft);border-radius:999px;align-items:center;min-height:22px;padding:0 8px;display:inline-flex}.section-title-row,.license-actions,.rack-input-row{align-items:center;gap:8px;display:flex}button{border:1px solid var(--line);background:var(--panel);color:var(--ink);min-width:0;min-height:34px;font:inherit;cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:7px;padding:0 10px;font-size:13px;display:inline-flex}button:hover:not(:disabled){border-color:var(--line-strong);background:var(--soft)}button:disabled{cursor:not-allowed;color:var(--muted);opacity:.65}button svg{flex:none;width:16px;height:16px}.primary-button{background:var(--action);color:#fff;border-color:var(--action)}.primary-button:hover:not(:disabled){background:var(--action-dark);border-color:var(--action-dark)}.icon-button{flex:0 0 38px;width:38px;padding:0}.workbench{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(270px,320px) minmax(420px,1fr) minmax(300px,360px);align-items:stretch;gap:16px;padding:16px;display:grid}.side-panel,.results-panel{flex-direction:column;gap:12px;min-width:0;display:flex}.side-panel{grid-area:1/1}.board-column{grid-area:1/2/span 2;align-self:start}.results-panel{height:var(--board-panel-height,auto);grid-area:1/3/span 2;min-height:0;overflow:hidden}.stock-section{grid-area:2/1;align-self:end}.panel-section,.board-column{background:var(--panel);border:1px solid var(--line);border-radius:8px;min-width:0}.panel-section{padding:14px}.board-column{min-width:0;padding:14px}.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:0;margin-bottom:8px;font-size:12px;display:block}.rack-input-row input{border:1px solid var(--line);background:var(--field);min-width:0;height:38px;color:var(--ink-strong);font:700 18px/1 var(--mono);letter-spacing:0;text-transform:uppercase;border-radius:7px;flex:130px;padding:0 10px}.input-hint{color:#8a4f00;margin-top:7px;font-size:12px;line-height:1.3}.section-title-row{justify-content:space-between;margin-bottom:10px}.photo-section h2,.stock-section h2,.results-section h2{text-transform:uppercase;font-family:Arial Rounded MT Bold,Aptos Display,Segoe UI,system-ui,sans-serif;font-size:18px;font-weight:900;line-height:1}.photo-title-row{flex-direction:column;align-items:stretch;gap:10px}.photo-title-row h2{flex:none;min-width:100%}.photo-library-button{width:100%;min-height:36px;color:var(--action);white-space:nowrap;border-color:#bcd3e8;flex:none;font-weight:700}.license-actions{flex-wrap:wrap;margin-top:10px}.license-actions .license-button{flex:110px}.license-button{color:var(--action);border-color:#bcd3e8}.license-button.active{color:var(--green);background:#eef8f3;border-color:#b8d7c9}.license-note{color:var(--muted);margin-top:-2px;font-size:12px;line-height:1.35}.status-line{color:var(--muted);gap:6px;margin-top:10px;font-size:12px;display:grid}.license-status{color:var(--action);font-weight:700}.license-status.active{color:var(--green)}.restore-license{grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:10px;display:grid}.restore-license input{border:1px solid var(--line);background:var(--field);min-width:0;height:34px;color:var(--ink-strong);font:inherit;border-radius:7px;padding:0 10px;font-size:13px}progress{width:100%;height:8px;accent-color:var(--green)}.board-grid{aspect-ratio:1;background:#171c24;border-radius:8px;grid-template-columns:repeat(15,minmax(0,1fr));gap:4px;width:min(100%,720px);margin:0 auto;padding:6px;display:grid}.board-cell{--cell-bg:#2a2d34;aspect-ratio:1;background:var(--cell-bg);color:#f2eee8;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border:1px solid #171c24;border-radius:5px;min-width:0;min-height:0;padding:0;font-size:11px;font-weight:700;line-height:1;position:relative;box-shadow:inset 0 -1px #00000047}.board-cell:hover:not(:disabled),.board-cell:active{background:var(--cell-bg);border-color:#171c24}.board-cell:focus{outline:none}.board-cell:focus-visible,.selected-cell{outline:none;box-shadow:inset 0 0 0 2px #f2eee86b,inset 0 -1px #00000047}.bonus-dl{--cell-bg:#709057}.bonus-tl{--cell-bg:#1d6896}.bonus-dw{--cell-bg:#c5751b}.bonus-tw{--cell-bg:#98373e}.bonus-st{--cell-bg:#7b5376}.has-tile{--cell-bg:#f6f0e7;color:#111820;box-shadow:inset 0 1px #ffffffc7,inset 0 -2px #2d231829}.blank-tile{--cell-bg:#ebe4da}.has-tile:focus-visible,.has-tile.selected-cell{box-shadow:inset 0 0 0 2px #171c245c,inset 0 -2px #2d231829}.has-tile.move-word-path{box-shadow:inset 0 1px #ffffffc7,inset 0 -2px #2d231829,inset 0 0 0 2px #65c18c9e}.move-highlight{--cell-bg:#65c18c;color:#092515}.preview-letter{color:#092515}.tile-letter{justify-content:center;align-items:center;width:100%;height:100%;font-family:Arial Rounded MT Bold,Arial Rounded MT,Avenir Next,Helvetica Neue,Arial,sans-serif;font-size:21px;font-weight:900;line-height:1;display:inline-flex}.bonus-label{color:#f2eee8;opacity:.96;justify-content:center;align-items:center;width:100%;height:100%;font-size:13px;display:inline-flex}.results-section{flex-direction:column;flex:auto;height:100%;min-height:0;padding-bottom:8px;display:flex}.move-list{flex:auto;gap:7px;min-height:0;padding-right:3px;display:grid;overflow:auto}.move-row{text-align:left;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:10px;width:100%;min-height:48px;padding:8px;display:grid}.move-row.active{border-color:var(--action);background:#e8f1fb}.move-score{background:var(--ink-strong);color:#fff;font:800 16px/1 var(--mono);border-radius:6px;justify-content:center;align-items:center;min-height:24px;display:inline-flex}.move-main{align-content:center;align-self:center;gap:3px;min-width:0;display:grid}.move-main strong{text-overflow:ellipsis;white-space:nowrap;color:var(--ink-strong);font-size:15px;line-height:1.05;overflow:hidden}.move-main small{color:var(--muted);font-size:12px;line-height:1.1}.letter-stock{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.stock-cell{border:1px solid var(--line);background:var(--field);border-radius:7px;place-items:center;min-width:0;min-height:44px;display:grid}.stock-cell span{color:var(--ink-strong);font-size:17px;font-weight:800;line-height:1}.stock-cell strong{color:var(--muted);font:700 13px/1 var(--mono)}.stock-cell.overdrawn{border-color:var(--red);background:#fee7e5}.empty-state{min-height:48px;color:var(--muted);border:1px dashed var(--line-strong);border-radius:8px;place-items:center;font-size:13px;display:grid}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1160px){.workbench{grid-template-rows:auto auto auto;grid-template-columns:minmax(260px,320px) minmax(390px,1fr)}.side-panel{grid-area:1/1}.board-column{grid-area:1/2}.stock-section{grid-area:3/1/auto/-1;align-self:stretch}.results-panel{grid-area:2/1/auto/-1;height:auto;overflow:visible}.results-section{height:auto}.move-list{max-height:300px}}@media (width<=780px){.workbench{grid-template-rows:none;grid-template-columns:minmax(0,1fr);align-items:start;padding:10px}.side-panel,.board-column,.stock-section,.results-panel{grid-column:1}.side-panel{grid-row:1}.board-column{grid-row:2}.results-panel{grid-row:3}.stock-section{grid-row:4;align-self:stretch}.board-grid{gap:2px;padding:4px}.tile-letter{font-size:15px}.bonus-label{font-size:9px}.letter-stock{grid-template-columns:repeat(4,1fr)}.restore-license{grid-template-columns:minmax(0,1fr)}}
