:root{--bg: #0e1116;--panel: #161b22;--line: #2b323c;--ink: #e6edf3;--dim: #8b949e;--up: #f0f6fc;--sel: #2f81f7;--good: #3fb950;--bad: #f85149;--warn: #d29922;--radius: 10px;--tile-max: 4.25rem;--board-height: 100rem;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-text-size-adjust:100%;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}.shell{display:grid;gap:1.5rem;max-width:60rem;margin:0 auto;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left))}.shell.has-nerd{max-width:48rem}.body{display:grid;gap:1.25rem}@media(min-width:50rem){.body.has-nerd{grid-template-columns:minmax(0,28rem) 17rem;justify-content:center;align-items:start}}.shell.centred{min-height:60dvh;place-content:center;text-align:center}.play{display:grid;gap:1rem}.titlebar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}h1{margin:0;font-size:1.35rem;letter-spacing:.14em;text-transform:uppercase}h2{margin:1rem 0 .5rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--dim)}.dim{color:var(--dim)}.error{color:var(--bad)}.toggle{display:inline-flex;gap:.4rem;align-items:center;color:var(--dim);font-size:.85rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.picker{display:inline-flex;gap:.45rem;align-items:center;color:var(--dim);font-size:.85rem}.picker-label{white-space:nowrap}.picker-flag{font-size:1rem;line-height:1}.picker-select{max-width:12rem;padding:.25rem .4rem;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font:inherit;font-size:.85rem}.centred .picker{margin:.5rem auto 0}.hud{display:grid;gap:.75rem}.hud-stats{display:flex;gap:1.5rem}.stat{display:grid}.stat-value{font-size:1.6rem;font-variant-numeric:tabular-nums;line-height:1}.stat-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}.stat.is-strong .stat-value{color:var(--good)}.stat.is-warn .stat-value{color:var(--bad)}.timer{display:flex;gap:3px;height:6px}.pip{flex:1;background:var(--line);border-radius:99px;transition:background .14s}.pip.is-lit{background:var(--sel)}.word-line{display:flex;align-items:baseline;gap:.75rem;min-height:2rem;flex-wrap:wrap}.word{font-size:1.5rem;letter-spacing:.22em;font-weight:600}.word-empty{font-size:.9rem;letter-spacing:normal;font-weight:400;color:var(--dim)}.feedback{font-size:.9rem;animation:rise .22s ease-out}.feedback.is-accepted{color:var(--good)}.feedback.is-rejected{color:var(--bad)}.feedback.is-note{color:var(--dim)}@keyframes rise{0%{opacity:0;transform:translateY(.4rem)}to{opacity:1;transform:none}}.board-wrap{position:relative;display:grid;place-items:center;container-type:inline-size}.board{--cols: 4;--rows: 4;--gap: clamp(.35rem, 1.6vmin, .7rem);--tile: clamp(2.75rem, 20vmin, var(--tile-max));display:grid;grid-template-columns:repeat(var(--cols),var(--tile));gap:var(--gap);perspective:900px}@supports (width: 100cqw) and (height: 100svh){.board{--fit-width: calc((min(100cqw, 30rem) - (var(--cols) - 1) * var(--gap)) / var(--cols));--fit-height: calc((var(--board-height) - (var(--rows) - 1) * var(--gap)) / var(--rows));--tile: clamp(2.75rem, min(var(--fit-width), var(--fit-height)), var(--tile-max))}}.tile{width:var(--tile);height:var(--tile);padding:0;border:0;background:none;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:transform .32s cubic-bezier(.2,.7,.2,1)}.tile:disabled{cursor:default}.tile-inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .26s cubic-bezier(.3,.8,.3,1)}.tile.is-up .tile-inner{transform:rotateY(180deg)}.tile-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:var(--radius);backface-visibility:hidden;font-size:calc(var(--tile) * .46);font-weight:650}.tile-back{background:var(--panel);border:1px solid var(--line)}.tile-front{transform:rotateY(180deg);background:#1f2630;border:1px solid var(--line);color:var(--up)}.tile.is-selected .tile-front{background:var(--sel);border-color:var(--sel);color:#fff}.tile.is-spent .tile-back{opacity:.35;border-style:dashed}@media(hover:hover){.tile:not(:disabled):hover .tile-front{border-color:var(--sel)}}.tile:focus-visible{outline:2px solid var(--sel);outline-offset:3px;border-radius:var(--radius)}.tile-order{position:absolute;top:.25rem;right:.35rem;font-size:.62rem;font-weight:600;opacity:.85}.veil{position:absolute;inset:-.5rem;display:grid;place-content:center;gap:.75rem;justify-items:center;text-align:center;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(3px);border-radius:var(--radius)}.veil p{margin:0}.veil-title{font-size:1.3rem;font-weight:650}.controls{display:flex;flex-wrap:nowrap;align-items:stretch;gap:.5rem}.btn-icon{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;gap:.3rem;padding:.6rem;min-width:2.75rem}.icon{display:block;flex:none}.btn-text{display:none}@media(min-width:50rem){.btn-text{display:inline}.btn-icon{padding-inline:.75rem}}.controls .btn-primary{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn{padding:.6rem .9rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);font:inherit;font-size:.9rem;cursor:pointer;touch-action:manipulation}@media(hover:hover){.btn:hover:not(:disabled){border-color:var(--sel)}}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--sel);border-color:var(--sel);color:#fff;font-weight:600}kbd{margin-left:.4rem;padding:.05rem .3rem;border:1px solid currentColor;border-radius:4px;font-size:.7em;opacity:.7}.found{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:0;padding:0}.found li{display:flex;gap:.35rem;align-items:baseline;padding:.15rem .5rem;border:1px solid var(--line);border-radius:99px;font-size:.85rem}.found-points{color:var(--dim);font-size:.75rem}.nerd{padding:1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);font-size:.85rem}.nerd h2:first-of-type{margin-top:0}.nerd-head{display:grid;gap:.5rem}.nerd-grid{display:grid;gap:.4rem}.nerd-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.nerd-row span{color:var(--dim)}.nerd-row input,.nerd-row select{width:8.5rem;padding:.25rem .4rem;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);font:inherit;font-size:.85rem}.nerd-derived{display:grid;grid-template-columns:auto 1fr;gap:.2rem .75rem;margin:0}.nerd-derived dt{color:var(--dim)}.nerd-derived dd{margin:0;font-variant-numeric:tabular-nums}.nerd-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.nerd-table th{text-align:right;font-weight:500;color:var(--dim);font-size:.75rem}.nerd-table td{text-align:right;padding:.1rem 0}.nerd-table .is-good{color:var(--good)}.nerd-table .is-bad{color:var(--bad)}.nerd-note{margin:.75rem 0;color:var(--dim)}.nerd-dim{font-size:.75rem;opacity:.7}@media(prefers-reduced-motion:reduce){.tile{transition-duration:.12s}.tile-inner{transition-duration:90ms}.feedback{animation:none}}.title{display:flex;gap:.18rem;margin:0;letter-spacing:0}.title-tile{--title-tile: 1.5rem;position:relative;display:block;width:var(--title-tile);height:var(--title-tile);transform-style:preserve-3d;transition:transform .84s cubic-bezier(.2,.7,.2,1)}.title-face{position:absolute;inset:0;display:grid;place-items:center;border:1px solid var(--line);border-radius:4px;backface-visibility:hidden;font-size:calc(var(--title-tile) * .62);font-weight:650;letter-spacing:0;transition:transform .26s cubic-bezier(.3,.8,.3,1)}.title-back{background:var(--panel)}.title-front{background:#1f2630;color:var(--up);transform:rotateY(180deg)}.title-tile.is-up .title-back{transform:rotateY(180deg)}.title-tile.is-up .title-front{transform:rotateY(360deg)}.title-tile.is-lit .title-front{background:var(--sel);border-color:var(--sel);color:#fff}.panel{display:grid;gap:1rem;justify-items:center;width:100%;max-width:30rem;margin-inline:auto;padding:1.5rem 1.25rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);text-align:center}.result-line{margin:0;color:var(--dim)}.setup{display:grid;gap:.9rem;justify-items:center}.ruleset{display:grid;gap:.45rem;justify-items:center}.ruleset-options{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center}.chip{display:inline-flex;gap:.35rem;align-items:baseline;padding:.4rem .7rem;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--ink);font:inherit;font-size:.9rem;cursor:pointer;touch-action:manipulation}.chip:disabled{cursor:default;opacity:.5}.chip.is-on{border-color:var(--sel);background:color-mix(in srgb,var(--sel) 18%,var(--bg));color:var(--up)}.chip-note{color:var(--dim);font-size:.75rem}.chip.is-on .chip-note{color:color-mix(in srgb,var(--up) 70%,transparent)}.btn-start{min-width:11rem}.leaderboard{display:grid;gap:.5rem;width:100%;max-width:22rem}.leaderboard-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.leaderboard-head h2{margin:0;font-size:.95rem}.leaderboard-crown{margin:0;color:var(--good)}.leaderboard .nerd-table tbody tr.is-current{background:color-mix(in srgb,var(--sel) 20%,transparent);color:var(--up)}.board-note{margin:0;color:var(--dim)}.rules{max-width:34rem;margin:0 auto;padding:2rem 1.25rem 4rem;line-height:1.6}.rules-lead{margin:.35rem 0 0;color:var(--dim);text-transform:uppercase;letter-spacing:.12em;font-size:.8rem}.rules section{margin-bottom:1.75rem}.rules h2{margin:0 0 .35rem;font-size:1rem}.rules p{margin:0}.rules-keys{display:grid;grid-template-columns:auto 1fr;gap:.4rem .9rem;align-items:baseline;margin:0}.rules-keys dt{white-space:nowrap}.rules-keys dd{margin:0;color:var(--dim)}.how-to-play{color:var(--sel);font-size:.85rem}@media(hover:hover){.how-to-play:hover{color:var(--up)}}.rules-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:2rem}.rules-head h1{font-size:1.35rem}.rules-head .rules-lead{margin:.35rem 0 0}.legend{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;align-items:center;margin:0;padding:0;list-style:none;color:var(--dim);font-size:.85rem}.touch-only{display:none}@media(hover:none)and (pointer:coarse){.keys-only{display:none}li.touch-only{display:list-item}span.touch-only{display:inline}}.drop{display:inline-flex;gap:.45rem;align-items:center;color:var(--dim);font-size:.85rem}.drop-anchor{position:relative}.drop-trigger{display:inline-flex;gap:.4rem;align-items:center;min-width:9rem;padding:.25rem .45rem;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font:inherit;cursor:pointer;touch-action:manipulation}.drop-trigger:disabled{cursor:default;opacity:.55}.drop-caret{margin-left:auto;color:var(--dim)}.drop-badge{font-size:1rem;line-height:1}.drop-value{white-space:nowrap}.drop-list{position:absolute;z-index:20;top:calc(100% + .25rem);left:0;max-height:min(60dvh,22rem);min-width:100%;overflow-y:auto;margin:0;padding:.25rem;list-style:none;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 12px 32px #00000073}.drop-list:focus{outline:none}.drop-option{display:flex;gap:.5rem;align-items:center;padding:.35rem .5rem;border-radius:5px;color:var(--ink);cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none}.drop-option.is-chosen{color:var(--up)}.drop-option.is-active{background:var(--sel);color:#fff}@media(hover:none)and (pointer:coarse){:root{--tile-max: 5.25rem;--board-height: 46svh}.btn,.chip,.drop-trigger{min-height:2.75rem}.drop-option{padding:.6rem .5rem}.toggle{min-height:2.75rem}.toggle input[type=checkbox]{width:1.5rem;height:1.5rem}.nerd-row input,.nerd-row select{font-size:1rem;min-height:2.75rem}.nerd-row select{appearance:none;-webkit-appearance:none;padding-right:1.6rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238b949e' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .55rem center;background-size:.6rem}.btn kbd{display:none}.how-to-play{display:inline-block;padding:.75rem .25rem}}@media(max-width:30rem){.play{grid-template-columns:4.5rem minmax(0,1fr);grid-template-areas:"hud    hud" "found  board" "ctrl   ctrl" "legend legend"}.hud{grid-area:hud}.board-wrap{grid-area:board}.controls{grid-area:ctrl}.legend{grid-area:legend}.found{grid-area:found;flex-direction:column;align-items:stretch;gap:.25rem;max-height:100%;overflow-y:auto;overscroll-behavior:contain}.found li{gap:.1rem;justify-content:space-between;padding:.15rem .3rem;border-radius:6px;font-size:.7rem;overflow-wrap:anywhere}.found-points{font-size:.65rem}.found.dim{display:none}.panel{grid-area:hud;grid-column:1 / -1}.shell,.body{gap:1rem}.play{gap:.75rem}.hud{gap:.5rem}.hud-stats{gap:1rem;justify-content:space-between}.stat-value{font-size:1.3rem}.word{font-size:1.25rem;letter-spacing:.16em}.word-line{min-height:1.6rem;gap:.5rem}.title-tile{--title-tile: 1.3rem}.picker-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.drop-trigger{min-width:7.5rem}.titlebar{gap:.5rem .75rem}.panel{padding:1.25rem 1rem}.controls{gap:.25rem}.controls .btn-primary,.btn-icon{padding-inline:.35rem}.rules{padding:1.5rem 1.1rem 3rem}}@media(orientation:landscape)and (max-height:30rem){:root{--board-height: 82svh}.shell{gap:.75rem}.play{grid-template-columns:minmax(0,1fr) 46%;align-items:start;gap:.75rem 1rem}.hud{grid-area:1 / 1}.controls{grid-area:2 / 1}.legend{grid-area:3 / 1}.found{grid-area:4 / 1}.board-wrap{grid-area:1 / 2 / 5 / 3}.panel{grid-area:1 / 1 / 2 / 3}.titlebar{gap:.4rem .75rem}.hud{gap:.4rem}}@media(hover:none)and (pointer:coarse)and (max-height:36rem)and (orientation:portrait){:root{--board-height: 42svh}}.how-to-play-button{padding:0;border:0;background:none;font:inherit;font-size:.85rem;color:var(--sel);text-decoration:underline;cursor:pointer;touch-action:manipulation}@media(hover:none)and (pointer:coarse){.how-to-play-button{padding:.75rem .25rem}}.rules-back{margin-bottom:1.5rem}.rules-overlay{position:fixed;z-index:50;inset:0;overflow-y:auto;background:var(--bg);padding:max(.5rem,env(safe-area-inset-top)) max(0rem,env(safe-area-inset-right)) max(.5rem,env(safe-area-inset-bottom)) max(0rem,env(safe-area-inset-left));-webkit-overflow-scrolling:touch}
