:root{--font:"Baloo 2", ui-rounded, "SF Pro Rounded", "Hiragino Maru Gothic ProN", "Quicksand", "Trebuchet MS", system-ui, sans-serif;--bg:#fff6f1;--bg-blob-a:#ffe0e7;--bg-blob-b:#e4f3ff;--surface:#fffdfb;--surface-2:#fff2ee;--line:#f3d9d5;--ink:#40292f;--ink-soft:#8a6d75;--pink:#f6a8b6;--pink-deep:#ea7189;--pink-soft:#ffe1e8;--gold:#ffc23d;--gold-soft:#fff0c9;--mint:#57c795;--mint-soft:#dcf6e9;--berry:#e0526e;--berry-soft:#ffe3e6;--sky:#6fb6ee;--shadow-sm:0 2px 0 #40292f1a;--shadow-md:0 6px 18px #b46e7d2e;--shadow-lg:0 16px 40px #b46e7d38;--radius:22px}@media (prefers-color-scheme:dark){:root{--bg:#241a20;--bg-blob-a:#3a2530;--bg-blob-b:#22303c;--surface:#302129;--surface-2:#3a2831;--line:#4b3540;--ink:#ffeef2;--ink-soft:#c6a3ae;--pink-soft:#4a2c37;--gold-soft:#4a3a1c;--mint-soft:#23473a;--berry-soft:#4d2730;--shadow-sm:0 2px 0 #0000004d;--shadow-md:0 6px 18px #00000059;--shadow-lg:0 16px 40px #00000073}}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;margin:0;font-weight:700;overflow:hidden}body:before,body:after{content:"";filter:blur(60px);opacity:.75;pointer-events:none;z-index:0;border-radius:50%;position:fixed}body:before{background:var(--bg-blob-a);width:46vw;height:46vw;top:-14vw;left:-12vw}body:after{background:var(--bg-blob-b);width:52vw;height:52vw;bottom:-22vw;right:-16vw}.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}.app{z-index:1;height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex;position:relative}.hud{flex:none;align-items:center;gap:14px;padding:10px clamp(12px,3vw,28px);display:flex}.hud__spacer{flex:1}.hud__back,.hud__icon{font:inherit;color:var(--ink-soft);background:var(--surface);border:2px solid var(--line);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:999px;padding:6px 14px;font-size:15px;transition:transform .12s,color .12s}.hud__icon{padding:6px 10px;font-size:17px}@media (hover:hover){.hud__back:hover,.hud__icon:hover{color:var(--pink-deep);transform:translateY(-1px)}}.hud__back:active,.hud__icon:active{transform:translateY(1px)}.hud__lesson{align-items:center;gap:8px;font-size:19px;display:flex}.hud__emoji{font-size:22px}.hud__level{align-items:center;gap:9px;display:flex}.hud__level-name{color:var(--ink-soft);font-size:15px}.hud__dots{gap:5px;display:flex}.hud__dots i{background:var(--line);border-radius:50%;width:11px;height:11px;transition:background .25s,transform .25s}.hud__dots i.on{background:var(--gold);transform:scale(1.18)}.hud__stat{background:var(--surface);border:2px solid var(--line);box-shadow:var(--shadow-sm);border-radius:999px;align-items:center;gap:6px;padding:5px 15px 5px 12px;font-size:19px;display:flex}.hud__stat b{text-align:center;min-width:1.2ch}.hud__stat.pulse{animation:.45s cubic-bezier(.34,1.56,.64,1) stat-pop}@keyframes stat-pop{50%{transform:scale(1.22)}}.screens{flex:1;min-height:0;position:relative}.screen{flex-direction:column;padding:0 clamp(12px,3vw,28px) 8px;animation:.3s both screen-in;display:flex;position:absolute;inset:0}@keyframes screen-in{0%{opacity:0;transform:translateY(10px)}}.screen--menu{justify-content:safe center;padding-block:14px;overflow-y:auto}.menu{flex-direction:column;align-self:center;gap:24px;width:min(1050px,100%);display:flex}.menu__hero{align-items:center;gap:26px;display:flex}.menu__chansey{flex:none;width:clamp(92px,13vw,150px)}.menu__chansey svg{width:100%;height:auto;display:block}.menu__title{letter-spacing:-.5px;color:var(--pink-deep);text-shadow:0 3px 0 var(--pink-soft);margin:0;font-size:clamp(34px,6vw,58px);font-weight:800}.menu__sub{color:var(--ink-soft);max-width:42ch;margin:6px 0 0;font-size:clamp(15px,2.2vw,19px)}.cards{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;display:grid}.card{text-align:left;font:inherit;color:inherit;background:var(--surface);border:3px solid var(--line);border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow-md);padding:20px 20px 18px;transition:transform .16s cubic-bezier(.34,1.56,.64,1),border-color .16s;position:relative}@media (hover:hover){.card:hover{border-color:var(--pink);transform:translateY(-5px)rotate(-.6deg)}}.card:active{transform:translateY(-1px)}.card:focus-visible{outline:3px solid var(--sky);outline-offset:3px}.card__key{background:var(--surface-2);width:26px;height:26px;color:var(--ink-soft);border-radius:8px;place-items:center;font-size:14px;display:grid;position:absolute;top:14px;right:14px}.card__emoji{font-size:40px;line-height:1}.card__title{margin:10px 0 4px;font-size:22px}.card__blurb{color:var(--ink-soft);margin:0;font-size:15px;font-weight:600;line-height:1.45}.card__eg{background:var(--gold-soft);color:var(--ink);border-radius:999px;margin-top:12px;padding:3px 12px;font-size:15px;display:inline-block}.menu__hint{text-align:center;color:var(--ink-soft);margin:0;font-size:15px;font-weight:600}.equation{flex:none;justify-content:center;align-items:center;gap:clamp(10px,2vw,20px);padding:2px 0 6px;font-size:clamp(34px,6.5vw,60px);font-weight:800;line-height:1;display:flex}.equation__sign{color:var(--ink-soft)}.equation__box{background:var(--surface);border:4px dashed var(--pink);min-width:2.6ch;color:var(--pink-deep);border-radius:18px;justify-content:center;align-items:center;padding:6px 16px;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.equation__box.is-correct{background:var(--mint-soft);border:4px solid var(--mint);color:var(--mint);animation:.5s cubic-bezier(.34,1.56,.64,1) box-pop}.equation__box.is-wrong{background:var(--berry-soft);border:4px solid var(--berry);color:var(--berry);animation:.4s box-shake}@keyframes box-pop{40%{transform:scale(1.18)rotate(-2deg)}}@keyframes box-shake{25%{transform:translate(-9px)}50%{transform:translate(9px)}75%{transform:translate(-5px)}}.caret{background:var(--pink-deep);border-radius:2px;width:3px;height:.82em;margin-left:2px;animation:1.05s steps(2,end) infinite blink}.equation__box.is-correct .caret{display:none}@keyframes blink{50%{opacity:0}}.steps{flex:none;justify-content:center;gap:8px;height:20px;padding:4px 0 2px;display:flex}.steps i{background:var(--line);border-radius:999px;width:26px;height:7px;transition:background .25s,width .25s}.steps i.on{background:var(--pink)}.steps i.now{background:var(--pink-deep);width:40px}.bottom{flex:none;justify-content:space-between;align-items:flex-end;gap:20px;padding-top:4px;display:flex}.chansey-zone{flex:1;align-items:flex-end;gap:14px;min-width:0;display:flex}.chansey{transform-origin:bottom;will-change:transform;flex:none;width:clamp(96px,13vw,152px)}.chansey svg{width:100%;height:auto;display:block;overflow:visible}.chansey[data-mood=idle]{animation:3.4s ease-in-out infinite chansey-idle}.chansey[data-mood=think]{animation:2.2s ease-in-out infinite chansey-think}.chansey[data-mood=cheer]{animation:.52s cubic-bezier(.3,.9,.4,1) 3 chansey-bounce}.chansey[data-mood=oops]{animation:.5s ease-in-out chansey-wobble}.chansey[data-mood=levelup]{animation:.9s cubic-bezier(.3,.9,.4,1) 2 chansey-spinjoy}@keyframes chansey-idle{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-6px)scale(.992,1.012)}}@keyframes chansey-think{0%,to{transform:rotate(-2.5deg)translateY(0)}50%{transform:rotate(2.5deg)translateY(-3px)}}@keyframes chansey-bounce{0%{transform:translateY(0)scale(1)}14%{transform:translateY(0)scale(1.16,.84)}38%{transform:translateY(-52px)scale(.92,1.1)}58%{transform:translateY(-52px)scale(.98,1.02)}86%{transform:translateY(0)scale(1.18,.82)}to{transform:translateY(0)scale(1)}}@keyframes chansey-wobble{0%,to{transform:rotate(0)translate(0)}20%{transform:rotate(-7deg)translate(-6px)}45%{transform:rotate(6deg)translate(5px)}70%{transform:rotate(-4deg)translate(-3px)}88%{transform:rotate(2deg)translate(1px)}}@keyframes chansey-spinjoy{0%{transform:translateY(0)scale(1)rotate(0)}30%{transform:translateY(-62px)scale(.9,1.12)rotate(-10deg)}60%{transform:translateY(-62px)scale(1)rotate(10deg)}to{transform:translateY(0)scale(1.14,.86)rotate(0)}}.eyelid{transform-box:fill-box;transform-origin:top;transform:scaleY(0)}.blink .eyelid{animation:.17s ease-in-out blink-lid}@keyframes blink-lid{50%{transform:scaleY(1)}}.chansey .blush{opacity:0;transition:opacity .3s}.chansey.happy .blush{opacity:.55}.balloon{background:var(--surface);border:3px solid var(--line);min-width:0;max-width:46ch;box-shadow:var(--shadow-md);border-radius:22px 22px 22px 6px;flex:1;margin-bottom:14px;padding:14px 20px;transition:background .25s,border-color .25s,color .25s;animation:.3s cubic-bezier(.34,1.56,.64,1) balloon-in;position:relative}.balloon:after{content:"";border:8px solid #0000;border-top-color:var(--line);border-right-width:16px;position:absolute;bottom:-15px;left:-3px}.balloon__text{margin:0;font-size:clamp(16px,2.3vw,21px);line-height:1.35}.balloon[data-state=cheer]{background:var(--mint-soft);border-color:var(--mint);color:#1d7a52;animation:.6s cubic-bezier(.34,1.56,.64,1) balloon-cheer}.balloon[data-state=cheer]:after{border-top-color:var(--mint)}.balloon[data-state=cheer] .balloon__text{font-size:clamp(20px,3.2vw,30px)}.balloon[data-state=oops]{background:var(--berry-soft);border-color:var(--berry);color:var(--berry)}.balloon[data-state=oops]:after{border-top-color:var(--berry)}.balloon[data-state=levelup]{background:var(--gold-soft);border-color:var(--gold);color:#96660a;animation:.6s cubic-bezier(.34,1.56,.64,1) balloon-cheer}.balloon[data-state=levelup]:after{border-top-color:var(--gold)}.balloon[data-state=levelup] .balloon__text{font-size:clamp(19px,3vw,27px)}@keyframes balloon-in{0%{opacity:0;transform:translateY(8px)scale(.94)}}@keyframes balloon-cheer{0%{transform:scale(.7)rotate(-3deg)}55%{transform:scale(1.08)rotate(1.5deg)}to{transform:scale(1)}}.controls{flex-direction:column;flex:none;align-items:flex-end;gap:10px;display:flex}.keypad{--key-w:54px;--key-h:46px;--key-f:22px;grid-template-columns:repeat(5,1fr);gap:7px;display:grid}.key{font:inherit;font-size:var(--key-f);width:var(--key-w);height:var(--key-h);color:var(--ink);background:var(--surface);border:3px solid var(--line);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:14px;place-items:center;font-weight:700;transition:transform .1s,background .12s,border-color .12s;display:grid}@media (hover:hover){.key:hover{border-color:var(--pink);background:var(--surface-2)}}.key:active,.key.is-down{background:var(--pink-soft);border-color:var(--pink);transform:translateY(2px)}.key--wide{width:auto;font-size:calc(var(--key-f) * .76);white-space:nowrap;grid-column:span 2;padding:0 8px}.key--go{background:var(--mint-soft);border-color:var(--mint);color:var(--mint)}.controls__row{gap:8px;display:flex}.btn{font:inherit;cursor:pointer;border:3px solid var(--line);background:var(--surface);color:var(--ink-soft);box-shadow:var(--shadow-sm);border-radius:999px;padding:9px 20px;font-size:17px;transition:transform .12s,filter .12s}@media (hover:hover){.btn:hover{transform:translateY(-2px)}}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--pink);border-color:var(--pink-deep);color:#fff}.btn:disabled{opacity:.45;cursor:default;transform:none}.keyhints{color:var(--ink-soft);flex-wrap:wrap;flex:none;justify-content:center;gap:6px 16px;padding:8px 0 4px;font-size:13px;font-weight:600;display:flex}kbd{font:inherit;background:var(--surface);border:2px solid var(--line);box-shadow:0 1.5px 0 var(--line);border-radius:7px;margin-right:3px;padding:2px 7px;font-size:12px}.fx{pointer-events:none;z-index:50;position:fixed;inset:0;overflow:hidden}.fx__bit{will-change:transform, opacity;font-size:26px;position:absolute}@media (max-height:780px){.menu__hero{gap:18px}.menu__chansey{width:clamp(80px,11vw,118px)}.card{padding:15px 16px 14px}.card__emoji{font-size:32px}.card__title{margin:7px 0 3px;font-size:19px}.equation{padding:4px 0 6px;font-size:clamp(28px,5vw,46px)}.chansey{width:clamp(96px,12vw,128px)}.balloon{margin-bottom:8px;padding:10px 16px}.balloon__text{font-size:clamp(15px,2vw,18px)}.keypad{--key-w:46px;--key-h:38px;--key-f:19px}.btn{padding:7px 16px;font-size:15px}.keyhints{display:none}}@media (max-height:620px){.steps{display:none}.chansey{width:96px}.keypad{--key-w:42px;--key-h:34px;--key-f:17px}}@media (max-width:780px){.bottom{flex-direction:column;align-items:stretch}.controls{align-items:center}.chansey-zone{justify-content:center}.balloon{margin-bottom:8px}.keyhints{display:none}}@media (pointer:coarse){.keyhints,.card__key,.choice__key{display:none}.keypad{--key-w:62px;--key-h:52px;--key-f:24px}.hud__back{padding:11px 18px;font-size:16px}.hud__icon{padding:11px 14px;font-size:19px}.btn{padding:13px 24px;font-size:18px}.settings__item{padding:13px 15px;font-size:16px}.choice{padding:13px 18px;font-size:19px}.settings__panel{width:268px}}@media (max-width:900px){.hud{gap:10px}.hud__title,.hud__level-name{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.equation__unit:not(:empty){margin-left:2px}.equation__box.is-nudge{animation:.6s ease-in-out box-nudge}@keyframes box-nudge{0%,to{transform:scale(1)}30%{transform:scale(1.12)rotate(-2deg)}65%{transform:scale(1.06)rotate(2deg)}}.settings{position:relative}.settings__panel{z-index:60;background:var(--surface);border:3px solid var(--line);width:250px;box-shadow:var(--shadow-lg);border-radius:18px;flex-direction:column;gap:8px;padding:14px;animation:.2s cubic-bezier(.34,1.56,.64,1) balloon-in;display:flex;position:absolute;top:calc(100% + 10px);right:0}.settings__stat{color:var(--ink-soft);text-align:center;margin:0 0 2px;font-size:14px}.settings__item{font:inherit;text-align:left;border:2px solid var(--line);background:var(--surface-2);color:var(--ink);cursor:pointer;border-radius:12px;padding:9px 13px;font-size:15px;transition:border-color .12s,background .12s,transform .1s}@media (hover:hover){.settings__item:hover{border-color:var(--pink)}}.settings__item:active{transform:translateY(1px)}.settings__item--danger{color:var(--berry)}@media (hover:hover){.settings__item--danger:hover{border-color:var(--berry);background:var(--berry-soft)}}.settings__item--danger.is-arming{background:var(--berry);border-color:var(--berry);color:#fff;animation:.9s ease-in-out infinite arm-pulse}@keyframes arm-pulse{50%{filter:brightness(1.14)}}.settings__note{color:var(--ink-soft);margin:0;font-size:12px;font-weight:600;line-height:1.4}.choices{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.choice{font:inherit;border:3px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:14px;align-items:center;gap:9px;padding:10px 18px 10px 12px;font-size:18px;transition:transform .12s,border-color .12s,background .12s;display:flex;position:relative}@media (hover:hover){.choice:hover{border-color:var(--pink);transform:translateY(-2px)}}.choice.is-down,.choice:active{background:var(--pink-soft);transform:translateY(1px)}.choice__key{background:var(--surface-2);width:24px;height:24px;color:var(--ink-soft);border-radius:8px;place-items:center;font-size:14px;display:grid}.choice.is-right{background:var(--mint-soft);border-color:var(--mint);color:#1d7a52}.choice.is-right .choice__key{background:var(--mint);color:#fff}.choice.is-wrong{background:var(--berry-soft);border-color:var(--berry);color:var(--berry)}.equation__box.is-word{min-width:6ch;padding:12px 18px;font-size:.52em}@media (max-height:780px){.choice{padding:8px 14px 8px 10px;font-size:16px}}.stage{flex:auto;min-height:130px;position:relative;overflow:hidden}.stage__inner{transform-origin:50%;position:absolute;top:50%;left:50%}.sprite{z-index:2;-webkit-user-select:none;user-select:none;will-change:transform;filter:drop-shadow(0 3px 2px #78465038);place-items:center;line-height:1;display:grid;position:absolute;top:0;left:0}.sprite--ghost{opacity:.28;filter:grayscale()}.sprite.glow{filter:drop-shadow(0 0 10px var(--gold)) drop-shadow(0 3px 2px #78465038)}.tenframe{z-index:1;background:var(--surface);border:4px solid var(--line);box-shadow:var(--shadow-md);border-radius:20px;padding:6px;transition:border-color .3s,background .3s,box-shadow .3s;display:grid;position:absolute;top:0;left:0}.tenframe.is-full{border-color:var(--gold);background:var(--gold-soft);box-shadow:0 0 0 6px #ffc23d40, var(--shadow-md)}.tenframe.is-target{border-color:var(--pink)}.tenframe__cell{background:var(--surface-2);border-radius:12px;transition:background .25s,box-shadow .25s}.tenframe__cell.want{background:var(--pink-soft);box-shadow:inset 0 0 0 3px var(--pink-deep);animation:1.15s ease-in-out infinite want-pulse}@keyframes want-pulse{0%,to{box-shadow:inset 0 0 0 3px var(--pink-deep);transform:scale(1)}50%{box-shadow:inset 0 0 0 4px var(--pink-deep), 0 0 14px var(--pink);transform:scale(1.07)}}.stage-label{z-index:3;white-space:nowrap;color:var(--ink);place-items:center;font-weight:800;line-height:1;transition:color .3s;display:grid;position:absolute;top:0;left:0}.stage-label--count{background:var(--surface);border:4px solid var(--line);min-width:62px;box-shadow:var(--shadow-sm);border-radius:999px;padding:5px 14px}.stage-label--count.is-ten{background:var(--gold-soft);border-color:var(--gold);color:#96660a}.stage-label--op{color:var(--ink-soft)}.stage-label--hint{color:var(--pink-deep)}.stage-label--derived{background:var(--mint-soft);border:4px solid var(--mint);color:#1d7a52;border-radius:999px;padding:6px 22px}.stage-label.pop{animation:.45s cubic-bezier(.34,1.56,.64,1) label-pop}@keyframes label-pop{0%{opacity:0;transform:scale(.4)}60%{transform:scale(1.15)}}.stage__svg{pointer-events:none;z-index:0;position:absolute;top:0;left:0;overflow:visible}.travel-arc{fill:none;stroke:var(--pink-deep);stroke-width:5px;stroke-linecap:round;stroke-dasharray:10 14;opacity:.8;animation:.7s linear infinite arc-flow}@keyframes arc-flow{to{stroke-dashoffset:-48px}}.pie-slice{transform-box:fill-box;transform-origin:50%;stroke:#fff;stroke-width:2.5px;stroke-linejoin:round;will-change:transform}@media (prefers-color-scheme:dark){.pie-slice{stroke:#302129}}.pie-plate{fill:var(--surface);stroke:var(--line);stroke-width:5px}.pie-plate-ring{fill:none;stroke:var(--line);stroke-width:3px;opacity:.7}.pie-plate.lit{stroke:var(--mint)}.pie-count{font-family:var(--font);text-anchor:middle;fill:var(--ink-soft);font-size:26px;font-weight:800}.pie-caption{font-family:var(--font);text-anchor:middle;fill:var(--ink-soft);font-size:20px;font-weight:700}.angle-arm{stroke:var(--ink);stroke-width:9px;stroke-linecap:round}.angle-arm.moving{stroke:var(--pink-deep)}.angle-wedge{fill:var(--pink);opacity:.38}.angle-vertex{fill:var(--ink)}.angle-square{fill:none;stroke:var(--mint);stroke-width:5px;stroke-linecap:round;transition:opacity .3s}.angle-rim{fill:none;stroke:var(--line);stroke-width:4px;opacity:0;transition:opacity .35s}.angle-tick{stroke:var(--ink-soft);stroke-width:2.5px;stroke-linecap:round;opacity:0;transition:opacity .35s}.angle-tick.major{stroke:var(--pink-deep);stroke-width:5px}.angle-text,.angle-readout{font-family:var(--font);text-anchor:middle;fill:var(--ink-soft);font-size:20px;font-weight:800;transition:opacity .35s}.angle-readout{fill:var(--mint);font-size:40px}.tri-shape{fill:var(--pink-soft)}.tri-edge{stroke:var(--ink);stroke-width:6px;stroke-linecap:round;transition:stroke .3s}.tri-edge.match{stroke:var(--pink-deep)}.tri-vertex{fill:var(--ink)}.tri-len{font-family:var(--font);text-anchor:middle;fill:var(--ink-soft);font-size:20px;font-weight:800;transition:fill .3s}.tri-len.match{fill:var(--pink-deep)}.tri-tick{stroke:var(--pink-deep);stroke-width:4.5px;stroke-linecap:round}.nl-axis{stroke:var(--ink);stroke-width:4px;stroke-linecap:round}.nl-tick{stroke:var(--ink-soft);stroke-width:2.5px;stroke-linecap:round}.nl-tick.major{stroke:var(--ink);stroke-width:4px}.nl-label{font-family:var(--font);text-anchor:middle;fill:var(--ink-soft);font-size:20px;font-weight:800}.nl-jump{fill:none;stroke:var(--pink-deep);stroke-width:5px;stroke-linecap:round;stroke-dasharray:1 11}.nl-jump-label{font-family:var(--font);text-anchor:middle;fill:var(--pink-deep);font-size:26px;font-weight:800}.nl-marker{text-anchor:middle;font-size:34px}.nl-flag{font-family:var(--font);text-anchor:middle;fill:var(--mint);font-size:21px;font-weight:800}
