:root{--page-background:#f1ede2;--surface:#fcf8ee;--heading-color:#27322e;--muted-text:#516159;--accent:#aa4f29;--tile-background:#fffdf8;--tile-hover:#fff1df;--tile-border:#cbc4b6;--tile-shadow:#d7cfbf;--control-background:#e9e2d4;--control-border:#c5bdad;--primary-button-background:#315e54;--primary-button-hover:#244e45;--primary-button-shadow:#1e4039;--primary-button-text:#fffdf7;--mistake-count-background:#e8ae62;--mistake-count-text:#372311;--focus-ring:#2f7b6c;--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--heading:Georgia, "Times New Roman", serif;color:var(--heading-color);background:var(--page-background);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{background:var(--page-background);min-width:20rem}body{background:radial-gradient(circle at 50% -20%, #fffdf7 0, transparent 46rem), var(--page-background);min-width:20rem;min-height:100svh;margin:0}button{font:inherit}#root{min-height:100svh}@media (prefers-color-scheme:dark){:root{--page-background:#18211e;--surface:#22302b;--heading-color:#f4efe2;--muted-text:#bec8bf;--accent:#f2a16f;--tile-background:#24342e;--tile-hover:#2e433b;--tile-border:#42564d;--tile-shadow:#101813;--control-background:#273831;--control-border:#496057;--primary-button-background:#e18a58;--primary-button-hover:#f1a470;--primary-button-shadow:#9f542e;--primary-button-text:#1b211e;--mistake-count-background:#e8ae62;--mistake-count-text:#372311;--focus-ring:#75d4ba}}.game-shell{box-sizing:border-box;width:min(100%,46rem);margin:0 auto;padding:clamp(1.5rem,5vw,3.5rem) clamp(1rem,4vw,2rem) 2rem}.game-header{text-align:center}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.eyebrow{color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin:0 0 .5rem;font-size:.75rem;font-weight:800}.game-header h1{color:var(--heading-color);font-family:var(--heading);letter-spacing:-.055em;margin:0;font-size:clamp(2rem,7vw,3.1rem);line-height:1}.instructions{max-width:33rem;color:var(--muted-text);margin:1rem auto 0;font-size:clamp(.95rem,2.8vw,1.05rem);line-height:1.5}.puzzle-meta{flex-wrap:wrap;justify-content:center;align-items:center;gap:.45rem .7rem;margin-top:.65rem;display:flex}.puzzle-actions,.difficulty-selector{flex-wrap:wrap;justify-content:center;align-items:center;gap:.3rem;display:flex}.puzzle-actions{gap:.45rem}.difficulty-selector{border:1px solid var(--control-border);background:var(--control-background);border-radius:.7rem;padding:.18rem}.difficulty-label{color:var(--muted-text);letter-spacing:.05em;text-transform:uppercase;padding-inline:.25rem .1rem;font-size:.66rem;font-weight:800}.difficulty-option{min-height:2rem;color:var(--heading-color);cursor:pointer;font:800 .7rem / 1 var(--sans);background:0 0;border:1px solid #0000;border-radius:.48rem;padding:.28rem .52rem}.difficulty-option:hover:not(.difficulty-option--active){border-color:var(--accent);background:var(--tile-hover)}.difficulty-option--active{color:var(--primary-button-text);background:var(--primary-button-background);box-shadow:0 .1rem 0 var(--primary-button-shadow)}.difficulty-option:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.progress{color:var(--muted-text);margin:0;font-size:.8rem;font-weight:700}.progress strong{color:var(--heading-color)}.new-puzzle-button{border:1px solid var(--control-border);min-height:2.25rem;color:var(--heading-color);background:var(--control-background);cursor:pointer;font:800 .72rem / 1 var(--sans);letter-spacing:.02em;border-radius:.55rem;padding:.3rem .6rem}.new-puzzle-button:hover{border-color:var(--accent);background:var(--tile-hover)}.new-puzzle-button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.puzzle-code-panel{max-width:38rem;margin:.55rem auto 0}.puzzle-code-row{border:1px solid var(--control-border);background:var(--control-background);border-radius:.7rem;flex-wrap:wrap;justify-content:center;align-items:center;gap:.3rem .45rem;padding:.3rem .4rem;display:flex}.puzzle-code-label{color:var(--muted-text);letter-spacing:.05em;text-transform:uppercase;font-size:.66rem;font-weight:800}.puzzle-code-value{min-width:0;color:var(--heading-color);letter-spacing:.04em;overflow-wrap:anywhere;text-align:left;flex:12rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;font-weight:800}.puzzle-code-actions{gap:.3rem;display:flex}.puzzle-code-button{border:1px solid var(--control-border);min-height:2rem;color:var(--heading-color);background:var(--control-background);cursor:pointer;font:800 .7rem / 1 var(--sans);border-radius:.48rem;padding:.28rem .52rem}.puzzle-code-button:hover{border-color:var(--accent);background:var(--tile-hover)}.puzzle-code-button:focus-visible,.load-puzzle-code-form input:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.load-puzzle-code-form{border:1px solid var(--control-border);background:var(--control-background);text-align:left;border-radius:.7rem;grid-template-columns:minmax(0,1fr) auto auto;gap:.35rem;margin-top:.4rem;padding:.45rem;display:grid}.load-puzzle-code-form label{color:var(--muted-text);grid-column:1/-1;font-size:.72rem;font-weight:800}.load-puzzle-code-form input{border:1px solid var(--tile-border);min-width:0;min-height:2rem;color:var(--heading-color);background:var(--tile-background);font:700 .72rem / 1 var(--sans);border-radius:.48rem;padding:.3rem .45rem}.puzzle-code-error{color:var(--accent);margin:.35rem 0 0;font-size:.75rem;font-weight:700;line-height:1.35}.game-board{margin-top:clamp(1.25rem,4vw,2rem)}.solved-groups{gap:.45rem;margin-bottom:.45rem;display:grid}.solved-group{border:1px solid var(--tile-border);border-left:.35rem solid var(--accent);background:var(--control-background);border-radius:.85rem;padding:.65rem .75rem}.solved-group h2{color:var(--heading-color);font-family:var(--sans);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:800}.solved-words{color:var(--muted-text);letter-spacing:.03em;flex-wrap:wrap;gap:.2rem .55rem;margin:.35rem 0 0;padding:0;font-size:.72rem;font-weight:700;list-style:none;display:flex}.word-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;display:grid}.word-tile{border:1px solid var(--tile-border);min-height:clamp(2.75rem,12vw,3.75rem);color:var(--heading-color);background:var(--tile-background);box-shadow:0 .16rem 0 var(--tile-shadow);cursor:pointer;font:800 clamp(.68rem, 2.5vw, .82rem) / 1.1 var(--sans);letter-spacing:.03em;overflow-wrap:anywhere;border-radius:.85rem;padding:.45rem .3rem;transition:background-color .15s,border-color .15s,box-shadow .15s,transform .15s}.word-tile:hover:not(:disabled){border-color:var(--accent);background:var(--tile-hover);box-shadow:0 .28rem 0 var(--tile-shadow);transform:translateY(-.12rem)}.word-tile--selected,.word-tile--selected:hover:not(:disabled){border-color:var(--primary-button-background);color:var(--primary-button-text);background:var(--primary-button-background);box-shadow:0 .28rem 0 var(--primary-button-shadow)}.word-tile:active:not(:disabled){box-shadow:none;transform:translateY(.1rem)}.game-end-state{border:1px solid var(--tile-border);text-align:center;border-radius:.85rem;margin:1rem 0 -.5rem;padding:.85rem 1rem}.game-end-state--won{border-color:var(--primary-button-background);background:var(--tile-hover)}.game-end-state--lost{border-color:var(--accent);background:var(--control-background)}.game-end-state h2{color:var(--heading-color);font-family:var(--heading);margin:0;font-size:1.35rem}.game-end-state p{color:var(--muted-text);margin:.3rem 0 0;font-size:.9rem}.game-controls{gap:.85rem;margin:clamp(1.5rem,5vw,2.25rem) auto 0;display:grid}.mistakes{color:var(--muted-text);justify-content:center;align-items:center;gap:.55rem;margin:0;font-size:.88rem;font-weight:700;display:flex}.mistake-count{width:1.55rem;height:1.55rem;color:var(--mistake-count-text);background:var(--mistake-count-background);border-radius:50%;place-items:center;font-size:.8rem;display:grid}.game-status{min-height:1.3rem;color:var(--muted-text);text-align:center;margin:-.25rem 0;font-size:.82rem;font-weight:700}.control-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.button{cursor:pointer;min-height:3rem;font:800 .9rem / 1.1 var(--sans);letter-spacing:.01em;border:1px solid #0000;border-radius:.7rem;padding:.65rem 1rem;transition:background-color .15s,border-color .15s,box-shadow .15s,transform .15s}.button--quiet{border-color:var(--control-border);color:var(--heading-color);background:var(--control-background)}.button--quiet:hover:not(:disabled){border-color:var(--accent);background:var(--tile-hover)}.button--primary{color:var(--primary-button-text);background:var(--primary-button-background);box-shadow:0 .2rem 0 var(--primary-button-shadow)}.button--primary:hover:not(:disabled){background:var(--primary-button-hover);box-shadow:0 .3rem 0 var(--primary-button-shadow);transform:translateY(-.1rem)}.button:active:not(:disabled){box-shadow:none;transform:translateY(.1rem)}.button:disabled,.word-tile:disabled{cursor:not-allowed;opacity:.58}.button:focus-visible,.word-tile:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}@media (width<=21.5rem){.word-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.word-tile{min-height:3.5rem;padding:.6rem .45rem;font-size:.82rem}}@media (width>=38rem){.solved-groups{grid-template-columns:repeat(2,minmax(0,1fr))}.game-controls{width:min(100%,28rem)}}@media (width>=36rem) and (height<=54rem){.game-shell{padding:1rem 1.25rem .75rem}.eyebrow{margin-bottom:.25rem;font-size:.68rem}.game-header h1{font-size:clamp(1.8rem,4vw,2.4rem)}.instructions{margin-top:.55rem;font-size:.88rem;line-height:1.35}.puzzle-meta{margin-top:.4rem}.difficulty-selector{padding:.12rem}.difficulty-option,.new-puzzle-button,.puzzle-code-button{min-height:1.9rem}.game-board{margin-top:.8rem}.word-grid{gap:.35rem}.word-tile{min-height:2.75rem;padding-block:.3rem}.game-controls{gap:.55rem;margin-top:.9rem}.game-status{min-height:1.1rem;margin-block:-.1rem}.control-row{gap:.45rem}.button{min-height:2.75rem;padding-block:.45rem}}@media (prefers-reduced-motion:reduce){.button,.word-tile{transition:none}}
