:root{color-scheme:light;--bg: #f4f1ea;--surface: #fffdf8;--ink: #1d1b16;--muted: #6b665c;--line: #ddd7c9;--cell: #e7e2d6;--accent: #2a4bd7;--accent-ink: #ffffff;--good: #0a7a55;--shadow: 0 1px 0 rgba(0, 0, 0, .06), 0 6px 16px rgba(40, 30, 10, .08);--t1: #56b4e9;--t1-ink: #06263a;--t2: #009e73;--t2-ink: #ffffff;--t3: #f0e442;--t3-ink: #3a3500;--t4: #e69f00;--t4-ink: #2e1f00;--t5: #d55e00;--t5-ink: #ffffff;--t6: #cc79a7;--t6-ink: #2d0f20;--t7: #0072b2;--t7-ink: #ffffff;--t8: #1d1b16;--t8-ink: #ffffff;--merge-ms: .17s;--gap: 6px;--radius: 12px;font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #14151a;--surface: #20222a;--ink: #f1efe9;--muted: #a09c92;--line: #343742;--cell: #2a2d37;--accent: #9db1ff;--accent-ink: #0d1433;--good: #5fd3a8;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 6px 16px rgba(0, 0, 0, .35);--t8: #f1efe9;--t8-ink: #14151a}}:root[data-theme=dark]{color-scheme:dark;--bg: #14151a;--surface: #20222a;--ink: #f1efe9;--muted: #a09c92;--line: #343742;--cell: #2a2d37;--accent: #9db1ff;--accent-ink: #0d1433;--good: #5fd3a8;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 6px 16px rgba(0, 0, 0, .35);--t8: #f1efe9;--t8-ink: #14151a}*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--ink);overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}body{-webkit-user-select:none;user-select:none;touch-action:manipulation}button,select,input{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}#app{height:100dvh;max-width:480px;margin:0 auto;padding:max(8px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:8px}.top{display:flex;align-items:center;gap:8px;min-height:40px}.brand{display:flex;flex-direction:column;line-height:1.05;margin-right:auto;min-width:0}.brand h1{margin:0;font-size:1.25rem;font-weight:800;letter-spacing:-.02em}.puzzle-label{font-size:.72rem;color:var(--muted);white-space:nowrap}.modes{display:flex;background:var(--cell);border-radius:999px;padding:3px}.mode{border:0;background:transparent;padding:6px 11px;border-radius:999px;font-size:.8rem;font-weight:600;color:var(--muted);min-height:32px}.mode[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.icons{display:flex}.icon-btn{width:36px;height:40px;border:0;background:transparent;border-radius:10px;display:grid;place-items:center;padding:0}.icon-btn svg,.btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.scorebar{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px}.stat{background:var(--surface);border-radius:var(--radius);padding:6px 10px;box-shadow:var(--shadow);display:flex;flex-direction:column;min-width:0}.lbl{font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.stat output,.stat .val{font-variant-numeric:tabular-nums;font-weight:800;font-size:1.1rem;line-height:1.2}.stat-score output{font-size:1.5rem;line-height:1.1}.stat-score.pulse output{animation:pulse .3s ease-out}.tray{display:grid;grid-template-columns:1fr 1.1fr 1.5fr;gap:8px;align-items:stretch}.tray-box{background:var(--surface);border:0;border-radius:var(--radius);box-shadow:var(--shadow);padding:6px 8px 8px;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.hold{border:2px dashed var(--line);box-shadow:none;background:transparent;transition:transform .08s}.hold:active:not(:disabled){transform:scale(.96)}.hold:disabled{opacity:.55;cursor:default}.hold.target{border-color:var(--accent);animation:blink .9s ease-in-out infinite}.slot{position:relative;width:44px;height:44px;border-radius:10px;background:var(--cell);display:block}.slot-big{width:52px;height:52px;background:transparent}.preview{display:flex;gap:5px;align-items:center;height:52px}.preview .mini{position:relative;width:34px;height:34px}.preview .mini:nth-child(2){width:30px;height:30px;opacity:.85}.preview .mini:nth-child(3){width:26px;height:26px;opacity:.7}.tile{position:absolute;inset:0;border-radius:22%;display:grid;place-items:center;font-weight:800;font-size:1.45rem;font-variant-numeric:tabular-nums;box-shadow:inset 0 -3px #00000029,inset 0 2px #ffffff40;pointer-events:none}.mini .tile{font-size:1rem}.mini:nth-child(3) .tile{font-size:.85rem}.t1{background:var(--t1);color:var(--t1-ink)}.t2{background:var(--t2);color:var(--t2-ink)}.t3{background:var(--t3);color:var(--t3-ink)}.t4{background:var(--t4);color:var(--t4-ink)}.t5{background:var(--t5);color:var(--t5-ink)}.t6{background:var(--t6);color:var(--t6-ink)}.t7{background:var(--t7);color:var(--t7-ink)}.t8{background:var(--t8);color:var(--t8-ink)}.tile.pop{animation:pop .16s cubic-bezier(.2,1.4,.4,1)}.tile.bump{animation:bump .26s cubic-bezier(.2,1.6,.4,1)}.tile.slide-in{animation:slide-in .16s ease-out}.tile.merge-out{z-index:2;transform:translate(calc(var(--dx) * (100% + var(--gap))),calc(var(--dy) * (100% + var(--gap)))) scale(.55);opacity:0;transition:transform var(--merge-ms) cubic-bezier(.5,0,.9,.5),opacity var(--merge-ms) ease-in}.coach{background:var(--accent);color:var(--accent-ink);border-radius:var(--radius);padding:6px 12px;display:flex;gap:10px;align-items:center;height:76px;flex:none}.coach[hidden]{display:none}.coach p{margin:0;font-size:.84rem;line-height:1.25;font-weight:600;flex:1}.coach.nudge{animation:nudge .25s}.link-btn{border:0;background:transparent;color:inherit;text-decoration:underline;font-size:.8rem;padding:8px 2px}.board-wrap{flex:1;min-height:0;container-type:size;display:grid;place-items:center}.board-box{position:relative;width:min(100cqw,100cqh);aspect-ratio:1}.board{width:100%;height:100%;display:grid;grid-template-columns:repeat(var(--n, 5),1fr);grid-template-rows:repeat(var(--n, 5),1fr);gap:var(--gap);padding:var(--gap);background:var(--surface);border-radius:16px;box-shadow:var(--shadow)}.board.shake{animation:shake .32s}.board.fresh .cell{animation:fresh .18s ease-out}.cell{position:relative;border:0;padding:0;background:var(--cell);border-radius:18%;min-width:0;min-height:0}.cell:not(.filled):active{filter:brightness(.93)}.cell.filled{cursor:default}.cell.target{box-shadow:0 0 0 3px var(--accent);animation:blink .9s ease-in-out infinite}.cell.nope{animation:nudge .22s}.board .tile{font-size:clamp(1.2rem,9cqw,2.1rem)}.fx{position:absolute;inset:0;pointer-events:none;overflow:visible}.float{position:absolute;transform:translate(-50%,-50%);font-weight:800;font-size:1.05rem;color:var(--ink);text-shadow:0 0 6px var(--surface),0 0 2px var(--surface);animation:rise .85s ease-out forwards;white-space:nowrap}.float.big{font-size:1.4rem;color:var(--accent)}.banner{position:absolute;left:50%;top:8%;transform:translate(-50%);background:var(--ink);color:var(--bg);font-weight:800;padding:6px 14px;border-radius:999px;font-size:1rem;animation:banner .9s ease-out forwards;white-space:nowrap}.bottom{display:flex;justify-content:center}.btn{border:0;border-radius:999px;background:var(--cell);padding:10px 18px;font-weight:700;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.bottom .btn{width:100%}dialog.sheet{border:0;border-radius:20px;background:var(--surface);color:var(--ink);padding:20px 18px 16px;width:min(92vw,400px);max-height:92dvh;overflow:auto;box-shadow:0 20px 60px #00000059}dialog.sheet::backdrop{background:#0a0a0e80}dialog.sheet[open]{animation:sheet-in .18s ease-out}.sheet h2{margin:0 0 4px;font-size:1.25rem}.sheet h3{margin:16px 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:.78rem;line-height:1.35}.sheet p{margin:4px 0}.actions{display:flex;gap:8px;margin-top:16px}.actions .btn{flex:1}.actions .btn-primary{flex:1.6;min-height:52px;font-size:1.05rem}.end-score{font-size:3rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;margin-top:8px}.end-delta{font-weight:700;min-height:1.3em}.end-delta.record{color:var(--good)}.end-row{display:flex;gap:14px;align-items:center;margin-top:10px}.end-grid{margin:0;font-size:1.05rem;line-height:1.15;letter-spacing:1px;font-family:inherit}.end-facts{margin:0;flex:1;display:grid;gap:8px}.end-facts div{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line);padding-bottom:6px}.end-facts dt{color:var(--muted);font-size:.85rem}.end-facts dd{margin:0;font-weight:800}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.stat-grid div{background:var(--cell);border-radius:12px;padding:10px 6px;text-align:center;display:flex;flex-direction:column;gap:2px}.stat-grid b{font-size:1.25rem;font-variant-numeric:tabular-nums}.stat-grid span{font-size:.68rem;color:var(--muted);line-height:1.2}.history{display:grid;grid-template-columns:repeat(30,1fr);gap:2px;align-items:end;height:72px;border-bottom:1px solid var(--line)}.history i{display:block;background:var(--accent);border-radius:2px 2px 0 0;min-height:0}.history i.none{background:var(--line);height:2px!important}.history i.today{background:var(--good)}.row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);min-height:48px}.row select{background:var(--cell);border:0;border-radius:10px;padding:8px 10px}.switch{appearance:none;width:46px;height:28px;border-radius:999px;background:var(--line);position:relative;margin:0;cursor:pointer;transition:background .15s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--surface);transition:transform .15s;box-shadow:0 1px 3px #0000004d}.switch:checked{background:var(--accent)}.switch:checked:after{transform:translate(18px)}.help{padding-left:18px;margin:10px 0 0;display:grid;gap:8px;font-size:.9rem;line-height:1.35}.toast{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:.88rem;font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:2147483647;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%)}@keyframes pop{0%{transform:scale(.5);opacity:.4}to{transform:scale(1);opacity:1}}@keyframes bump{0%{transform:scale(.7)}55%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes slide-in{0%{transform:translate(40%);opacity:0}to{transform:none;opacity:1}}@keyframes rise{0%{opacity:0;margin-top:6px}15%{opacity:1}to{opacity:0;margin-top:-42px}}@keyframes banner{0%{opacity:0;scale:.7}18%{opacity:1;scale:1.08}30%{scale:1}80%{opacity:1}to{opacity:0}}@keyframes shake{0%,to{transform:none}20%{transform:translate(-4px,2px) rotate(-.4deg)}40%{transform:translate(4px,-2px) rotate(.4deg)}60%{transform:translate(-3px,-1px)}80%{transform:translate(2px,1px)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.55}}@keyframes nudge{0%,to{transform:none}30%{transform:translate(-4px)}70%{transform:translate(4px)}}@keyframes pulse{0%{transform:scale(1)}40%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes fresh{0%{transform:scale(.92);opacity:.5}to{transform:none;opacity:1}}@keyframes sheet-in{0%{transform:translateY(14px);opacity:0}to{transform:none;opacity:1}}@media(max-height:600px){#app{gap:5px}.slot-big,.preview{height:44px}.slot-big{width:44px}.slot{width:38px;height:38px}.stat-score output{font-size:1.25rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.tile.merge-out{transform:none}.float{animation:fade .9s linear forwards!important;animation-duration:.9s!important;margin-top:-24px}.banner{animation:fade .9s linear forwards!important;animation-duration:.9s!important}.cell.target,.hold.target{animation:none!important}}@keyframes fade{0%,70%{opacity:1}to{opacity:0}}
