:root{--bg: #f6f4ee;--panel: #ffffff;--grid-line: #e2dfd6;--text: #1f1d1a;--text-dim: #7a766d;--accent: #2f6fd6;--accent-hover: #2560b8;--select-dot: #d4d2cb;--radius: 12px}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI Variable Text,Segoe UI,-apple-system,BlinkMacSystemFont,system-ui,Roboto,sans-serif;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;overscroll-behavior:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}#app{min-height:100dvh;display:flex;flex-direction:column;padding:24px;padding-top:max(24px,env(safe-area-inset-top));padding-right:max(24px,env(safe-area-inset-right));padding-bottom:max(24px,env(safe-area-inset-bottom));padding-left:max(24px,env(safe-area-inset-left));gap:24px}.topbar{display:flex;flex-direction:column;align-items:center;gap:4px}.topbar h1{margin:0;font-size:32px;letter-spacing:6px;font-weight:700}.accent{color:var(--accent)}.tagline{margin:0;font-size:13px;color:var(--text-dim);letter-spacing:1.5px}.controls{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;justify-content:center;margin-top:10px}.control{display:flex;flex-direction:column;font-size:10px;color:var(--text-dim);letter-spacing:1.5px;text-transform:uppercase;font-weight:500}select{background:var(--panel);color:var(--text);border:1px solid var(--grid-line);padding:8px 14px;font:inherit;font-size:14px;border-radius:8px;cursor:pointer;margin-top:4px;transition:border-color .15s,box-shadow .15s}select:hover{border-color:#ccc}select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2f6fd61f}button{background:var(--accent);color:#fff;border:none;font:inherit;font-size:13px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;padding:10px 22px;border-radius:8px;cursor:pointer;transition:background .15s,transform .1s,box-shadow .15s;box-shadow:0 2px 8px #2f6fd640}button:hover{background:var(--accent-hover);box-shadow:0 4px 14px #2f6fd64d}button:active{transform:scale(.97);box-shadow:0 1px 4px #2f6fd633}.play{display:grid;grid-template-columns:200px 1fr;gap:24px;flex:1;min-height:0}.board{position:relative;width:100%;max-width:min(70vh,100%);margin:0 auto;aspect-ratio:1;background:var(--panel);border-radius:var(--radius);padding:8px;box-shadow:0 1px 3px #0000000a,0 4px 16px #00000008}.grid{display:grid;background:transparent;width:100%;height:100%;touch-action:none;position:relative;z-index:2}.lines{position:absolute;inset:8px;width:calc(100% - 16px);height:calc(100% - 16px);pointer-events:none;overflow:visible;z-index:1}.lines line{stroke-linecap:round}.lines .selecting line{stroke:var(--select-dot)}.lines .selecting circle{stroke:var(--select-dot);fill:var(--select-dot)}.cell{display:grid;place-items:center;font-family:Inter,Segoe UI Variable Display,Segoe UI,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-weight:500;font-size:clamp(14px,2.7vw,26px);line-height:1;letter-spacing:.04em;color:var(--text);border-radius:4px;transition:color .12s,transform .12s;cursor:pointer;position:relative;z-index:3;font-feature-settings:"kern" 1,"ss01" 1,"cv11" 1}.cell .glyph{display:inline-block;height:1cap;line-height:1cap}@supports not (height: 1cap){.cell .glyph{height:auto;line-height:1;transform:translateY(-.11em)}}.cell.in-found{color:#fff}.cell.flash{animation:flash .4s ease-out}@keyframes flash{0%{transform:scale(1.25)}to{transform:scale(1)}}.words{background:var(--panel);border:1px solid var(--grid-line);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:4px;box-shadow:0 1px 3px #0000000a,0 4px 16px #00000008}.words h2{margin:0 0 8px;font-size:11px;letter-spacing:2.5px;color:var(--text-dim);text-transform:uppercase;font-weight:600}#wordlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:15px}#wordlist li{padding:5px 10px;border-radius:6px;display:flex;align-items:center;gap:10px;transition:opacity .35s ease,color .35s ease;font-weight:500}#wordlist li .dot{width:8px;height:8px;border-radius:50%;border:2px solid var(--grid-line);flex-shrink:0;transition:background .35s ease,border-color .35s ease,transform .35s ease}#wordlist li.found{opacity:.5}#wordlist li.found .word-text{text-decoration:line-through;text-decoration-thickness:1.5px;text-decoration-color:var(--text-dim)}#wordlist li.found .dot{transform:scale(1.15)}.status{margin-top:auto;padding-top:10px;font-size:11px;color:var(--text-dim);letter-spacing:1px}.status.win{color:var(--accent);font-weight:700;font-size:13px;letter-spacing:1.5px;animation:bounceIn .5s cubic-bezier(.34,1.56,.64,1)}@keyframes bounceIn{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.board.celebrating{animation:board-glow 1s ease}@keyframes board-glow{0%{box-shadow:0 1px 3px #0000000a,0 4px 16px #00000008}50%{box-shadow:0 0 30px #2f6fd626,0 0 60px #2f6fd60f}to{box-shadow:0 1px 3px #0000000a,0 4px 16px #00000008}}.footer{text-align:center;padding:4px 0;font-size:12px;color:var(--text-dim);letter-spacing:.5px}.footer a{color:inherit;text-decoration:none;border-bottom:1px solid var(--grid-line);padding-bottom:1px;transition:color .15s,border-color .15s}.footer a:hover{color:var(--text);border-bottom-color:currentColor}@media(max-width:720px){#app{padding:12px;gap:12px}.topbar h1{font-size:24px;letter-spacing:4px}.tagline{font-size:11px;letter-spacing:1px}.play{grid-template-columns:1fr;grid-auto-rows:min-content;align-content:start;gap:12px}.play .board{order:1}.play .words{order:2}.words{padding:10px 12px;gap:6px}.words h2{display:none}#wordlist{flex-direction:row;flex-wrap:wrap;gap:6px;font-size:13px}#wordlist li{padding:5px 12px;border:1px solid var(--grid-line);border-radius:999px;gap:6px}#wordlist li .dot{width:6px;height:6px;border-width:1.5px}#wordlist li.found{border-color:transparent;background:var(--found-tint, transparent)}.status{display:none}.board{max-width:100%;padding:6px;box-shadow:0 1px 2px #0000000a,0 2px 8px #00000008}.lines{inset:6px;width:calc(100% - 12px);height:calc(100% - 12px)}.cell{font-size:clamp(14px,5vw,22px)}.footer{padding:2px 0}}
