@font-face{font-family:Manrope;src:url('/fonts/manrope.ttf') format('truetype');font-weight:200 800;font-display:swap}
:root{color-scheme:light;--paper:#f8f6ee;--ink:#233d30;--muted:#617164;--line:#d4dbce;--surface:#fffef8;--wheel:#e8e6de;--green:#285640;--lime:#ffc766;--found:#fffef8;--focus:#8b5b18;--empty:#d8d6ce;--selected-ink:#211b10;--accent:#ffc766;--bonus:#245d9e;--clue:#bdd8ff;--clue-ink:#182c47;--tile-edge:#c7c5bc;--tile-top:#fffef8;--tile-bottom:#e9e6dc;--base-edge:#cccac1;--tile-shadow:rgba(40,35,25,.16);font-family:Manrope,sans-serif;font-synthesis:none;background:var(--paper);color:var(--ink);scrollbar-color:var(--muted) var(--paper)}
:root[data-theme=dark]{color-scheme:dark;--paper:#141414;--ink:#fafafa;--muted:#c4c4c4;--line:#4a4a4a;--surface:#363636;--wheel:#232323;--green:#f5f5f5;--lime:#ffc766;--found:#535353;--empty:#353535;--selected-ink:#211b10;--focus:#ffc766;--accent:#ffc766;--bonus:#85b5ff;--clue:#85b5ff;--clue-ink:#152b49;--tile-edge:#686868;--tile-top:#555;--tile-bottom:#363636;--base-edge:#414141;--tile-shadow:rgba(0,0,0,.3)}
*{box-sizing:border-box}body{margin:0}::selection{color:var(--selected-ink);background:var(--lime)}a{color:inherit;text-underline-offset:.22em}button,select,input{font:inherit;color:inherit}button,select,summary{cursor:pointer}button{-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.45}button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:4px}input{caret-color:var(--green)}[hidden]{display:none!important}.svg-definitions{display:none}.skip-link{position:absolute;top:10px;left:10px;transform:translateY(-180%);z-index:20;background:var(--surface);padding:12px}.skip-link:focus{transform:none}.icon{width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.shell{max-width:1040px;margin:auto;padding:0 40px}.masthead{min-height:100px;display:flex;align-items:center;justify-content:space-between;gap:24px}.identity{display:flex;align-items:center;gap:10px;text-decoration:none}.identity h1{font-size:26px;letter-spacing:-.035em;font-weight:800;margin:0}.identity img{display:block}.settings{position:relative;z-index:10}.settings>summary{list-style:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--muted)}.settings>summary::-webkit-details-marker{display:none}.settings>summary:hover,.settings[open]>summary{background:var(--wheel);color:var(--ink)}.settings-panel{position:absolute;right:0;top:50px;width:320px;max-width:calc(100vw - 32px);max-height:calc(100svh - 90px);overflow:auto;padding:20px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.settings-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.settings-heading h2{font-size:18px;margin:0}.text-button{min-height:44px;padding:0 8px;border:0;background:none;font-size:14px;font-weight:700;color:var(--green)}.languages{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:10px}.languages button{flex:1;border:0;background:transparent;min-height:44px;padding:0 12px;border-radius:7px;font-size:14px;font-weight:650}.languages button[aria-pressed=true]{background:var(--green);color:var(--paper)}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:16px 0;font-size:14px}select{min-width:0;min-height:44px;padding:0 30px 0 12px;border:1px solid var(--line);background:var(--surface);border-radius:8px;font-size:16px}.theme-button{display:flex;align-items:center;gap:10px;min-height:44px;padding:0;border:0;background:none;font-size:14px}.how{margin-top:12px;border-top:1px solid var(--line);font-size:14px;line-height:1.65}.how summary{min-height:44px;padding:12px 0}.how p{margin:0 0 12px;color:var(--muted)}#saved-note{margin:16px 0 8px;font-size:12px;line-height:1.6;color:var(--muted)}.settings nav{display:flex;flex-wrap:wrap;gap:20px;font-size:12px}.settings nav a{display:inline-flex;align-items:center;min-height:44px}
.game{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:64px;align-items:center;padding:36px 0 44px}.answer-panel{min-width:0;align-self:start;padding-top:12px}.board-heading{display:flex;justify-content:space-between;gap:16px;align-items:baseline}.board-heading h2{font-size:26px;line-height:1.25;letter-spacing:-.035em;font-weight:750;margin:0}#count{color:var(--green);font-size:14px;font-weight:750;font-variant-numeric:tabular-nums;white-space:nowrap}.progress{height:4px;background:var(--line);overflow:hidden;border-radius:2px;margin:20px 0 30px}#progress-fill{height:100%;width:100%;background:var(--green);transform:scaleX(0);transform-origin:left;transition:transform 300ms cubic-bezier(.16,1,.3,1)}.answers{--board-height:360px;display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));grid-template-rows:repeat(var(--rows),minmax(0,1fr));gap:2px;width:min(100%,calc(var(--cols)*34px),calc(var(--board-height)*var(--cols)/var(--rows)));aspect-ratio:var(--cols)/var(--rows);margin-inline:auto}.cell{position:relative;min-width:0;min-height:0;display:grid;place-items:center;border:0;border-radius:2px;background:var(--empty);font-size:17px;font-weight:750;line-height:1}.cell.found{background:var(--found);color:var(--ink)}.cell.clue{background:var(--clue);color:var(--clue-ink)}.cell.just-found{animation:word-reveal 220ms cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms) backwards}.cell.clue.just-found{animation-name:clue-reveal}.answers.celebrate .cell{animation:board-complete 300ms cubic-bezier(.16,1,.3,1) var(--wave-delay,0ms) backwards}.cell.revisited{animation:word-revisit 600ms ease-out}.word-list{position:absolute;width:1px;height:1px;margin:0;padding:0;clip-path:inset(50%);overflow:hidden}.board-totals{display:flex;align-items:center;gap:14px;flex-shrink:0}.bonus-row{display:flex;align-items:center;gap:4px;margin:0;color:var(--bonus);font-size:12px;line-height:1.5}.bonus-row .icon{width:16px;height:16px}#bonus-count{font-weight:750;white-space:nowrap}#bonus-words{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}
.play{display:flex;flex-direction:column;align-items:center;width:100%;min-width:0}.entry-row{position:relative;display:flex;align-items:center;width:100%;min-height:46px}#entry{min-width:0;width:100%;height:46px;border:0;border-radius:8px;background:transparent;text-align:center;text-transform:uppercase;font-size:30px;font-weight:800;letter-spacing:.09em;padding:0 46px}#entry:focus-visible{outline-offset:-2px;outline-width:2px}.icon-button{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:10px;background:transparent}.icon-button:hover:not(:disabled){background:var(--wheel)}#backspace{position:absolute;right:0;top:50%;transform:translateY(-50%)}#backspace:disabled{visibility:hidden}#status{min-height:36px;display:flex;gap:6px;align-items:center;justify-content:center;width:100%;text-align:center;color:var(--muted);font-size:13px;line-height:1.35;padding:2px 0 8px}.status-icon{display:none;width:18px;height:18px}#status[data-kind=success],#status[data-kind=repeat],#status[data-kind=bonus]{color:var(--green);font-weight:700}#status[data-kind=bonus]{color:var(--bonus)}#status[data-kind=success] .status-icon,#status[data-kind=repeat] .status-icon,#status[data-kind=bonus] .status-icon{display:block}#status[data-kind=guidance]{font-size:12px}#status[data-kind=success] .status-icon{animation:check-in 250ms cubic-bezier(.16,1,.3,1)}
.wheel{position:relative;isolation:isolate;width:360px;max-width:100%;aspect-ratio:1;touch-action:none;user-select:none;-webkit-user-select:none;background:transparent}.wheel::before,.wheel::after{content:"";position:absolute;clip-path:polygon(50% 0,93.3% 25%,93.3% 75%,50% 100%,6.7% 75%,6.7% 25%);pointer-events:none}.wheel::before{inset:0;z-index:-2;background:var(--base-edge)}.wheel::after{inset:2px;z-index:-1;background:linear-gradient(155deg,var(--wheel),var(--paper))}.wheel>svg{position:absolute;width:100%;height:100%;inset:0;pointer-events:none}.wheel .connection-segment{fill:none;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}#result-trail{opacity:0}#result-trail.trail-found{animation:trail-found 350ms ease-out}.letter{position:absolute;width:25%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:10px;border:0;background:transparent;color:var(--ink);font-size:42px;isolation:isolate;font-weight:750;padding:0;filter:drop-shadow(0 3px 3px var(--tile-shadow));transition:scale 100ms;touch-action:none;--face-top:var(--tile-top);--face-bottom:var(--tile-bottom);--edge:var(--tile-edge)}.letter::before,.letter::after{content:"";position:absolute;clip-path:polygon(50% 0,93.3% 25%,93.3% 75%,50% 100%,6.7% 75%,6.7% 25%);pointer-events:none}.letter::before{inset:0;z-index:-2;background:var(--edge)}.letter::after{inset:1.5px;z-index:-1;background:linear-gradient(155deg,var(--face-top),var(--face-bottom))}.letter.selected,.play.complete .letter[data-tile="0"]{color:var(--selected-ink);--face-top:#ffda8b;--face-bottom:#ffc05d;--edge:#ffe5b3}.letter.selected{scale:1.04}.letter:active:not(:disabled){scale:.98}.letter:focus-visible{outline-offset:3px}#completion-art{display:none}.play.complete #completion-art{display:block;animation:completion-in 350ms cubic-bezier(.16,1,.3,1)}#completion-art .reward-link{fill:none;stroke:var(--bonus);stroke-width:.8}#completion-art .reward-link.warm{stroke:var(--accent)}#completion-art .reward-frame{fill:none;stroke:var(--muted);stroke-width:.7}.clue-spark{position:fixed;left:0;top:0;width:8px;height:8px;border-radius:2px;background:var(--bonus);pointer-events:none;z-index:30}
.controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr);gap:8px;width:100%;justify-content:center;margin-top:20px}.utility-button{min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;border:0;border-radius:10px;background:transparent;padding:0 12px;font-size:13px;font-weight:650}.utility-button:hover:not(:disabled){background:var(--wheel)}#submit,#next{display:flex;align-items:center;justify-content:center;gap:12px;border:0;border-radius:12px;background:var(--accent);color:var(--selected-ink);min-height:48px;padding:0 20px;font-size:15px;font-weight:750}#submit{flex:1}#submit:disabled{background:var(--wheel);color:var(--muted);opacity:1}#submit:hover:not(:disabled),#next:hover{filter:brightness(1.1)}.completion{width:100%;margin-top:20px;text-align:center}#next{width:100%}.play.complete .controls,.play.complete .entry-row{display:none}.play.complete .wheel{opacity:1}.play.complete .letter{cursor:default;opacity:1}.noscript{padding:20px;border:1px solid var(--line)}.document{max-width:680px;margin:0 auto;padding:50px 24px;font-size:16px;line-height:1.75}.document h1{font-size:32px;letter-spacing:-.035em}.document h2{font-size:20px;margin-top:36px}.document p{margin:12px 0 20px}
@keyframes word-reveal{from{transform:translateY(2px);background:var(--accent);color:var(--selected-ink)}to{transform:translateY(0)}}
@keyframes clue-reveal{from{transform:scale(.88)}to{transform:scale(1)}}
@keyframes board-complete{from{transform:translateY(2px);background:var(--accent);color:var(--selected-ink)}to{transform:translateY(0)}}
@keyframes word-revisit{0%,40%{background:var(--accent);color:var(--selected-ink)}100%{}}
@keyframes check-in{from{transform:scale(.7)}to{transform:scale(1)}}
@keyframes trail-found{from{opacity:1}to{opacity:0}}
@keyframes completion-in{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@media(hover:hover){.letter:hover:not(.selected):not(:disabled){--face-top:var(--surface)}}
@media(max-width:780px){.shell{max-width:430px;padding:max(4px,env(safe-area-inset-top)) 20px max(12px,env(safe-area-inset-bottom))}.masthead{min-height:52px;gap:12px;margin-bottom:8px}.identity{gap:8px}.identity img{width:30px;height:30px}.identity h1{font-size:22px}.settings-panel{top:48px}.game{display:flex;flex-direction:column;gap:8px;padding:0}.answer-panel{width:100%;padding:0}.board-heading h2{font-size:20px;letter-spacing:-.025em}.board-heading{gap:10px}#count{font-size:13px}.progress{height:3px;margin:8px 0 14px}.answers{--board-height:220px;gap:1.5px}.cell{font-size:14px}.play{max-width:350px}.entry-row,#entry{height:38px;min-height:38px}#entry{font-size:27px}#status{min-height:28px;font-size:12px;padding:0 0 5px}#status[data-kind=guidance]{font-size:12px}.wheel{width:clamp(236px,calc(100svh - 400px),320px)}.letter{font-size:36px}.controls{margin-top:12px;gap:4px}.utility-button{min-height:46px;padding:0 4px;font-size:12px}.utility-button .icon{width:18px;height:18px}#submit,#next{min-height:46px;font-size:14px;padding:0 16px;gap:8px}.completion{margin-top:10px}.bonus-row{font-size:12px}.bonus-row .icon{width:14px;height:14px}}
@media(max-width:360px){.shell{padding-left:16px;padding-right:16px}.identity h1{font-size:20px}.cell{font-size:12px}.letter{font-size:33px}.utility-button{padding:0;font-size:12px}#submit{padding:0 8px}#submit .icon{display:none}}
@media(max-width:780px) and (max-height:680px){.shell{padding-top:0;padding-bottom:max(4px,env(safe-area-inset-bottom))}.masthead{min-height:44px;margin-bottom:2px}.identity img{width:28px;height:28px}.identity h1{font-size:20px}.board-heading h2{font-size:18px}.progress{display:none}.answers{--board-height:136px;gap:1.5px;margin-top:8px}.cell{font-size:12px}.game{gap:3px}.entry-row,#entry{height:32px;min-height:32px}#entry{font-size:24px}#status{min-height:36px;padding-bottom:3px;font-size:12px}.wheel{width:clamp(220px,calc(100svh - 350px),290px)}.letter{font-size:32px}.controls{margin-top:4px}.utility-button,#submit,#next{min-height:44px}.bonus-row{font-size:12px}}
@media(max-width:780px) and (orientation:landscape){.shell{max-width:740px}.game{display:grid;grid-template-columns:minmax(0,1fr) 260px;align-items:center;gap:24px}.wheel{width:208px}.letter{font-size:30px}.masthead{margin-bottom:0}.answer-panel{align-self:center}.answers{--board-height:175px}.controls{margin-top:6px}.utility-button{padding:0;font-size:12px;flex-direction:column;gap:0;line-height:1.15}#submit{padding:0 8px}#submit .icon{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Word-length colors are calibrated separately for both playing surfaces. */
body{isolation:isolate}.shell,.document{position:relative;z-index:1}.word-wash{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.wash-disc{position:absolute;border-radius:50%;background:radial-gradient(circle,currentColor 0%,currentColor 38%,transparent 72%);opacity:0;transform-origin:center;will-change:transform,opacity}
@media(prefers-reduced-motion:reduce){.word-wash{display:none}}
