.solver-hero{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding-top:28px;padding-bottom:18px;display:flex}.solver-hero h1{margin-bottom:6px}.solver-hero .lead{color:var(--text-2);max-width:620px;margin:0}.solver-layout{grid-template-columns:minmax(0,1.35fr) minmax(320px,1fr);align-items:start;gap:20px;display:grid}@media (width<=960px){.solver-layout{grid-template-columns:1fr}}.side-col{flex-direction:column;gap:20px;display:flex}.board-card{padding:14px}.board-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar-group{gap:2px;display:flex}.toolbar-left{align-items:center;gap:8px;min-width:0;display:flex}.rules-picker select{width:auto;min-height:34px;padding:0 6px;font-size:.85rem}.games-btn{max-width:220px}.games-btn span{text-overflow:ellipsis;overflow:hidden}.board-wrap{width:100%}.board{aspect-ratio:1;border-radius:var(--radius);background:var(--board-bg);-webkit-user-select:none;user-select:none;touch-action:manipulation;grid-template-rows:repeat(15,1fr);gap:2px;width:100%;padding:4px;display:grid}.board:focus-visible{box-shadow:var(--focus)}.board-row{grid-template-columns:repeat(15,1fr);gap:2px;min-height:0;display:grid}.cell{background:var(--cell);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:3px;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex;position:relative;container-type:size}.cell-label{color:#fff;letter-spacing:-.02em;pointer-events:none;font-size:clamp(6px,32cqw,11px);font-weight:800}.cell.p-dl{background:var(--dl)}.cell.p-tl{background:var(--tl)}.cell.p-dp{background:var(--dp)}.cell.p-dp .cell-label{color:#2b1600}.cell.p-tp{background:var(--tp)}.cell.p-star{background:var(--star)}.cell.p-star .cell-label{font-size:clamp(9px,55cqw,18px)}.cell.is-selected{outline:3px solid var(--brand);outline-offset:-1px;z-index:2}.cell.is-selected:after{color:var(--brand);text-shadow:0 0 2px var(--surface);z-index:3;font-size:clamp(7px,38cqw,12px);font-weight:900;position:absolute;bottom:0;right:1px}.cell.is-selected[data-dir=H]:after{content:"→"}.cell.is-selected[data-dir=V]:after{content:"↓"}.cell .tile{width:100%;height:100%;box-shadow:inset 0 -2px 0 var(--tile-edge);border-radius:3px;font-size:clamp(9px,58cqw,24px)}.cell .tile sub{font-size:clamp(5px,24cqw,10px);bottom:1px;right:2px}.cell .tile.is-ghost{background:var(--ghost);color:var(--ghost-text);box-shadow:inset 0 0 0 2px var(--ghost-edge);animation:1.4s ease-in-out infinite ghost-pulse}.cell .tile.is-new{animation:.35s ease-out both drop-in}@keyframes ghost-pulse{50%{filter:brightness(1.08)}}@keyframes drop-in{0%{opacity:0;transform:translateY(-40%)scale(1.15)}}.board-foot{margin-top:12px}.legend{color:var(--text-2);flex-wrap:wrap;gap:6px 14px;font-size:.8rem;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend .sw{border-radius:3px;width:12px;height:12px;display:inline-block}.sw.p-dl{background:var(--dl)}.sw.p-tl{background:var(--tl)}.sw.p-dp{background:var(--dp)}.sw.p-tp{background:var(--tp)}.hint{margin:8px 0 0}@media (pointer:coarse){.desktop-only{display:none}}.letter-pad{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);margin-top:12px;padding:10px}.letter-pad[hidden]{display:none}.pad-letters{grid-template-columns:repeat(9,1fr);gap:5px;display:grid}.pad-key{border:1px solid var(--border-strong);background:var(--surface);min-height:42px;color:var(--text);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:7px;font-size:1rem;font-weight:750}.pad-key:active{background:var(--brand-soft)}.letter-pad.is-blank .pad-key{background:var(--tile-blank);color:var(--tile-blank-text)}.pad-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.pad-actions .btn{flex:auto}#pad-blank[aria-pressed=true]{background:var(--tile-blank);color:var(--tile-blank-text);border-color:var(--tile-edge)}.rack-label{margin-bottom:8px;font-weight:700;display:block}.rack-row{gap:6px;display:flex}.rack-input{flex:1}.rack-tiles{flex-wrap:wrap;gap:6px;min-height:44px;margin:12px 0 6px;display:flex}.rack-tiles .tile{width:40px;height:40px;font-size:1.15rem}.rack-tiles .tile.is-empty{box-shadow:inset 0 0 0 2px var(--border);background:0 0}.results-card .card-title h2{align-items:center;gap:8px;display:flex}.results-sort{width:auto;min-height:36px;padding:0 8px;font-size:.88rem}.results-filters{flex-wrap:wrap;gap:6px 16px;margin-bottom:12px;display:flex}.stale-notice{margin-bottom:12px}.results-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.results-list.is-stale{opacity:.55}.move{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);transition:border-color .15s,box-shadow .15s}.move.is-active{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.move-head{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:10px 12px;display:flex}.move-rank{width:22px;color:var(--muted);text-align:center;flex:none;font-size:.8rem;font-weight:700}.move-main{flex:1;min-width:0}.move-main .tiles{margin-bottom:4px}.move-main .tile.is-existing{filter:saturate(.3)brightness(.96);opacity:.75}.move-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:.8rem;display:flex}.move-score{text-align:right;min-width:58px;color:var(--text);flex:none;font-size:1.35rem;font-weight:800;line-height:1}.move-score small{color:var(--muted);margin-top:2px;font-size:.7rem;font-weight:600;display:block}.move-detail{color:var(--text-2);padding:0 12px 12px 46px;font-size:.9rem}.move-detail[hidden]{display:none}.move-words{margin:0 0 8px;padding:0;list-style:none}.move-words li{border-bottom:1px dashed var(--border);justify-content:space-between;gap:12px;padding:3px 0;display:flex}.move-words li:last-child{border-bottom:0}.move-leave{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.results-empty{text-align:center;color:var(--muted);padding:18px 8px}.results-empty[hidden]{display:none}#results-more{margin-top:10px}.steps{counter-reset:step;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;padding:0;list-style:none;display:grid}.steps li{counter-increment:step;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-2);padding:18px 18px 18px 60px;position:relative}.steps li:before{content:counter(step);background:var(--brand-soft);width:28px;height:28px;color:var(--brand);border-radius:8px;place-items:center;font-weight:800;display:grid;position:absolute;top:18px;left:18px}.steps strong{color:var(--text);display:block}.games-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.game-item{border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:8px;padding:8px 10px;display:flex}.game-item.is-active{border-color:var(--brand);background:var(--brand-soft)}.game-item .game-open{text-align:left;flex:1;justify-content:flex-start;min-width:0}.game-item .game-open span{text-overflow:ellipsis;overflow:hidden}.game-item small{color:var(--muted);font-weight:500}.modal-wide{width:min(760px,100% - 24px)}.ocr-pick{text-align:center;padding:18px 0}.ocr-canvas-wrap{border-radius:var(--radius-sm);background:var(--surface-2);max-height:55vh;margin-bottom:14px;overflow:auto}.ocr-canvas-wrap canvas{width:100%;height:auto;display:block}.ocr-sliders input[type=range]{width:100%;accent-color:var(--brand)}
