@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--sky:#7dd3fc;--sky-low:#c7ecfd;--surface:#fff;--surface2:#f1f6fb;--line:#d6e2ee;--text:#1e3a5f;--text-dim:#5b7290;--primary:#fcc934;--primary-deep:#d99a06;--success:#22b573;--success-soft:#d9f7e8;--danger:#f0609e;--danger-soft:#fde4ef;--r-s:12px;--r-m:18px;--r-l:26px;--shadow:0 10px 30px #1e3a5f29;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.3, 1.5, .5, 1);--font:"Nunito Variable", ui-rounded, "SF Pro Rounded", system-ui, sans-serif;--s:1;--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--sky);height:100%;color:var(--text);font-family:var(--font);overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}canvas#game{touch-action:none;transition:filter .3s ease-out;display:block;position:fixed;inset:0}canvas#game.drained{filter:saturate(.4)}canvas#fx{pointer-events:none;z-index:5;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0}button:disabled{cursor:default}.screen{z-index:3;padding:calc(var(--safe-t) + 16px) calc(var(--safe-r) + 16px) calc(var(--safe-b) + 16px) calc(var(--safe-l) + 16px);pointer-events:auto;text-align:center;animation:screen-in .3s var(--ease-out) both;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.screen.dim{-webkit-backdrop-filter:blur(6px);background:#1e3a5f52}.screen.dim.clear{-webkit-backdrop-filter:none;background:#1e3a5f2e}@media (orientation:portrait){.screen.clear{padding-top:calc(var(--safe-t) + 124px);justify-content:flex-start}}.screen.leaving{animation:.22s ease-in both screen-out}@keyframes screen-in{0%{opacity:0}}@keyframes screen-out{to{opacity:0}}.card{border-radius:var(--r-l);background:var(--surface);width:min(100%,400px);max-height:100%;box-shadow:var(--shadow);animation:card-in .34s var(--ease-spring) both;flex-direction:column;align-items:center;gap:12px;padding:28px 24px 24px;display:flex;position:relative;overflow-y:auto}@keyframes card-in{0%{opacity:0;transform:scale(.92)}}.card-x{top:10px;right:10px;position:absolute!important}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:900}h2{font-size:28px;line-height:1.1}h3{align-self:flex-start;margin-top:6px;font-size:18px}.muted-line{color:var(--text-dim);margin:0;font-size:17px;font-weight:700}.small{color:var(--text-dim);margin:0;font-size:14px;font-weight:650}.title{background:linear-gradient(#7dd3fc33,#c7ecfdbf 70%,#e7edf3d9);gap:10px}.wordmark{color:var(--text);letter-spacing:-.03em;text-shadow:0 3px #fff;animation:rise .5s var(--ease-spring) 80ms both;font-size:clamp(34px,9vw,54px);line-height:1}.emblem{aspect-ratio:1;width:min(66vw,300px,40vh);animation:rise .52s var(--ease-spring) .16s both;background:radial-gradient(circle at 35% 30%,#c9edff,#7dd3fc 70%);border:8px solid #fff;border-radius:50%;place-items:end center;display:grid;position:relative;overflow:visible;box-shadow:0 14px 30px #1e3a5f33,inset 0 -10px #1e3a5f14}.emblem img{filter:drop-shadow(0 6px #1e3a5f1f);transform-origin:50% 100%;width:86%;margin-bottom:4%;animation:3.6s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(-6px)rotate(-2deg)scaleY(1.02)}}@keyframes rise{0%{opacity:0;transform:translateY(16px)scale(.92)}}.tagline{color:var(--text-dim);animation:rise .5s var(--ease-spring) .24s both;margin:4px 0 6px;font-size:17px;font-weight:750}.title .stack{animation:rise .5s var(--ease-spring) .3s both}@media (orientation:landscape) and (max-height:520px){.title{grid-template-rows:auto auto auto;grid-template-columns:auto auto;place-content:center;column-gap:40px;display:grid}.title .emblem{grid-area:1/1/4;width:min(62vh,260px)}.title .wordmark,.title .tagline,.title .stack{grid-column:2}}.stack{flex-direction:column;gap:10px;width:min(100%,300px);display:flex}.btn{border-radius:var(--r-m);background:var(--surface);min-height:52px;color:var(--text);box-shadow:inset 0 0 0 2px var(--line), 0 3px 0 var(--line);transition:transform .12s var(--ease-spring), box-shadow .12s, filter .12s;justify-content:center;align-items:center;gap:8px;padding:0 22px;font-size:19px;font-weight:850;display:inline-flex}.btn.primary{background:var(--primary);color:var(--text);box-shadow:0 4px 0 var(--primary-deep)}.btn.big{min-height:62px;font-size:23px}.btn.small{min-height:48px;padding:0 14px;font-size:17px}.btn.danger{color:#b02a6a}.btn.quiet{box-shadow:none;color:var(--text-dim);background:0 0;font-size:17px}.btn:active:not(:disabled){box-shadow:0 1px 0 var(--line);transform:translateY(2px)scale(.97)}.btn.primary:active:not(:disabled){box-shadow:0 1px 0 var(--primary-deep)}.btn:disabled{background:var(--surface2);color:#8aa0b8;box-shadow:inset 0 0 0 2px var(--line)}.btn:focus-visible,.icon-btn:focus-visible,.key:focus-visible,.tile:focus-visible,.word:focus-visible{outline-offset:3px;outline:3px solid #3a84d6}.icon-btn{z-index:4;background:var(--surface);width:48px;height:48px;color:var(--text);box-shadow:inset 0 0 0 2px var(--line), 0 3px 0 #1e3a5f1a;pointer-events:auto;transition:transform .12s var(--ease-spring);border-radius:50%;place-items:center;display:grid;position:absolute}.icon-btn:active{transform:scale(.9)}.icon-btn svg{width:56%;height:56%}.icon-btn.plain{box-shadow:none;background:0 0;position:relative}.icon-btn span{place-items:center;width:56%;height:56%;display:grid}.icon-btn span svg{width:100%;height:100%}.slot-1,.slot-2,.slot-3{top:calc(var(--safe-t) + 66px)}.slot-1{right:calc(var(--safe-r) + 12px)}.slot-2{right:calc(var(--safe-r) + 12px + 56px)}.slot-3{right:calc(var(--safe-r) + 12px + 112px)}.hud{pointer-events:none;z-index:2;position:absolute;inset:0}.hud-left{top:calc(var(--safe-t) + 12px);left:calc(var(--safe-l) + 12px);flex-direction:column;align-items:flex-start;gap:4px;display:flex;position:absolute}.hearts{background:#ffffffd9;border-radius:999px;gap:2px;padding:6px 8px;display:flex;box-shadow:0 3px #1e3a5f14}.heart{width:28px;height:28px;position:relative}.heart svg{width:100%;height:100%;transition:transform .26s var(--ease-spring);position:absolute;inset:0}.heart svg:last-child{opacity:0}.heart.lost svg:first-child{transform:scale(0)}.heart.lost svg:last-child{opacity:1}.heart.breaking svg:last-child{animation:pop-in .5s var(--ease-spring) .18s both}.heart.refill svg:first-child{animation:pop-in .42s var(--ease-spring)}@keyframes pop-in{0%{transform:scale(.3)}}.timer{color:var(--text);font-variant-numeric:tabular-nums;background:#ffffffd9;border-radius:999px;margin-left:10px;padding:2px 10px;font-size:14px;font-weight:850}.timer:empty{display:none}.gems{top:calc(var(--safe-t) + 12px);right:calc(var(--safe-r) + 12px);font-variant-numeric:tabular-nums;background:#ffffffeb;border-radius:999px;align-items:center;gap:6px;height:44px;padding:0 16px 0 10px;font-size:20px;font-weight:900;display:flex;position:absolute;box-shadow:0 3px #1e3a5f14}.gems.bump{animation:bump .26s var(--ease-spring)}@keyframes bump{40%{transform:scale(1.1)}}.gem{width:26px;height:26px;display:inline-grid}.gem svg{width:100%;height:100%}.fly-gem{z-index:6;pointer-events:none;width:28px;height:28px;position:fixed;top:0;left:0}.fly-gem svg{filter:drop-shadow(0 2px 3px #1e3a5f40);width:100%;height:100%}.banner{left:50%;top:calc(var(--safe-t) + 28%);z-index:4;background:var(--surface);color:var(--text);white-space:nowrap;box-shadow:var(--shadow);animation:banner 2.2s var(--ease-out) both;border-radius:999px;padding:12px 24px;font-size:22px;font-weight:900;position:absolute;transform:translate(-50%)}.banner.gold{background:var(--primary)}.banner.soft{text-align:center;white-space:normal;border-radius:24px;width:max-content;max-width:min(440px,100vw - 40px);padding:14px 22px;font-size:19px;line-height:1.25}.banner.level{top:calc(var(--safe-t) + 36%)}@keyframes banner{0%{opacity:0;transform:translate(-50%)scale(.7)}12%{opacity:1;transform:translate(-50%)scale(1.06)}20%{transform:translate(-50%)scale(1)}85%{opacity:1;transform:translate(-50%)translateY(0)}to{opacity:0;transform:translate(-50%)translateY(-14px)}}.panel{--subj:#6fb3f7;z-index:3;background:var(--surface);border-radius:var(--r-l) var(--r-l) 0 0;width:min(100%,560px);padding-bottom:calc(var(--safe-b) + 14px);pointer-events:auto;animation:panel-up .25s var(--ease-out) both;flex-direction:column;display:flex;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 -10px 30px #1e3a5f29}.panel.leaving{pointer-events:none;animation:.25s ease-in both panel-down}@keyframes panel-up{0%{transform:translate(-50%)translateY(100%)}}@keyframes panel-down{to{transform:translate(-50%)translateY(105%)}}.panel.shake{animation:.2s linear shake}@keyframes shake{20%{transform:translate(calc(-50% - 6px))}40%{transform:translate(calc(6px - 50%))}60%{transform:translate(calc(-50% - 4px))}80%{transform:translate(calc(3px - 50%))}}.panel-head{background:var(--subj);color:#fff;grid-template-columns:48px 1fr 48px;align-items:center;height:56px;padding:0 6px;display:grid}.panel-head .close{color:var(--subj-ink)}.subj-name{color:var(--subj-ink);opacity:.85;justify-self:end;padding-right:8px;font-size:14px;font-weight:900}.dots{justify-content:center;gap:10px;display:flex}.dot{width:14px;height:14px;transition:transform .2s var(--ease-spring), background .12s;background:#ffffff8c;border-radius:50%}.dot.now{background:#fff;transform:scale(1.3)}.dot.ok{background:var(--success);animation:pop-in .3s var(--ease-spring);box-shadow:0 0 0 2px #fff}.dot.bad{background:var(--danger);box-shadow:0 0 0 2px #fff}.panel-body{flex-direction:column;align-items:stretch;gap:14px;padding:18px 18px 6px;display:flex}.panel-body.in>*{animation:task-in .26s var(--ease-out) both}.panel-body.in>:nth-child(2){animation-delay:40ms}.panel-body.in>:nth-child(3){animation-delay:80ms}@keyframes task-in{0%{opacity:0;transform:translate(24px)}}.panel-foot{justify-content:center;padding:8px 18px 0;display:flex}.check{width:min(100%,360px);min-height:56px;font-size:21px}.check.blink{animation:.6s ease-in-out blink}@keyframes blink{50%{filter:brightness(1.12);transform:scale(1.06)}}.q{text-align:center;color:var(--text);font-size:26px;font-weight:850;line-height:1.25}.math-q{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:40px;font-weight:900}.math-q .eq{color:var(--text-dim)}.answer-box{border-radius:var(--r-m);background:var(--surface2);min-width:140px;height:64px;box-shadow:inset 0 0 0 3px var(--subj-light);font-variant-numeric:tabular-nums;align-self:center;place-items:center;padding:0 20px;font-size:38px;font-weight:900;transition:background .12s,box-shadow .12s;display:grid}.answer-box.pop{animation:pop-in .16s var(--ease-spring)}.right{background:var(--success-soft)!important;box-shadow:inset 0 0 0 3px var(--success)!important;color:#146b45!important}.wrong{background:var(--danger-soft)!important;box-shadow:inset 0 0 0 3px var(--danger)!important;color:#8f1f55!important}.numpad{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.key{border-radius:var(--r-s);background:var(--surface);height:clamp(48px,5.8vh,58px);box-shadow:inset 0 0 0 2px var(--line), 0 3px 0 var(--line);place-items:center;font-size:26px;font-weight:850;transition:transform 60ms ease-out;display:grid;position:relative}.key.del{color:var(--text-dim)}.key.del svg{width:30px;height:30px}.key:active,.key.pressed,.tile:active,.tile.pressed{box-shadow:inset 0 0 0 2px var(--line), 0 1px 0 var(--line);transform:translateY(2px)}.key[data-key="0"]{grid-column:span 2}.tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tile{border-radius:var(--r-m);background:var(--surface);min-height:58px;box-shadow:inset 0 0 0 2px var(--line), 0 3px 0 var(--line);padding:6px 10px;font-size:20px;font-weight:850;transition:transform 60ms ease-out,background .12s;position:relative}.tile.sel{background:var(--subj-light);box-shadow:inset 0 0 0 3px var(--subj-deep), 0 3px 0 var(--subj-deep)}.tile.show-right{box-shadow:inset 0 0 0 3px var(--success), 0 3px 0 var(--success)}.gap{border-bottom:3px solid var(--subj-deep);min-width:4.2ch;color:var(--subj-ink);background:var(--surface2);white-space:pre;border-radius:10px;margin:0 4px;padding:0 8px;display:inline-block}.gap.pop{animation:pop-in .2s var(--ease-spring)}.order-q{font-size:22px}.bar{border-radius:var(--r-m);background:linear-gradient(var(--line), var(--line)) 10px 56px / calc(100% - 20px) 2px no-repeat, linear-gradient(var(--line), var(--line)) 10px 108px / calc(100% - 20px) 2px no-repeat, var(--surface2);flex-wrap:wrap;align-content:flex-start;gap:8px;min-height:118px;padding:10px;transition:background .12s;display:flex}.bank{flex-wrap:wrap;justify-content:center;gap:8px;min-height:50px;display:flex}.word{background:var(--surface);height:46px;box-shadow:inset 0 0 0 2px var(--line), 0 3px 0 var(--line);touch-action:none;border-radius:14px;padding:0 16px;font-size:20px;font-weight:800;position:relative}.word.dragging{z-index:10;box-shadow:inset 0 0 0 2px var(--subj-deep), 0 10px 20px #1e3a5f33;transition:none}.solution{border-radius:var(--r-s);min-height:0;max-height:0;color:var(--text);text-align:center;font-size:19px;font-weight:850;transition:max-height .16s ease-out;overflow:hidden}.solution.on{background:var(--danger-soft);max-height:80px;padding:10px 12px}.ring:after{content:"";border-radius:inherit;border:3px solid var(--subj,#fff);pointer-events:none;animation:.22s ease-out forwards ring;position:absolute;inset:-2px}@keyframes ring{to{opacity:0;inset:-10px}}@media (orientation:landscape){.panel{left:auto;right:calc(var(--safe-r) + 12px);top:calc(var(--safe-t) + 12px);bottom:calc(var(--safe-b) + 12px);border-radius:var(--r-l);width:min(440px,52vw);padding-bottom:12px;animation-name:panel-in-side;transform:none}.panel.leaving{animation-name:panel-out-side}.panel.shake{animation:.2s linear shake-side}.panel-body{flex:1;justify-content:center;min-height:0}@keyframes panel-in-side{0%{transform:translate(110%)}}@keyframes panel-out-side{to{transform:translate(110%)}}@keyframes shake-side{25%{transform:translate(-6px)}50%{transform:translate(6px)}75%{transform:translate(-3px)}}body.in-lesson .gems,body.in-lesson .slot-1{right:calc(var(--safe-r) + 24px + min(440px, 52vw))}body.in-lesson .slot-2{right:calc(var(--safe-r) + 24px + min(440px, 52vw) + 56px)}body.in-lesson .slot-3{right:calc(var(--safe-r) + 24px + min(440px, 52vw) + 112px)}}@media (orientation:landscape) and (max-height:520px){.panel-head{height:46px}.panel-body{gap:8px;padding:8px 14px 2px}.math-q{font-size:30px}.q{font-size:21px}.answer-box{height:48px;font-size:30px}.numpad{grid-template-columns:repeat(6,1fr);gap:6px}.key{height:48px;font-size:22px}.key[data-key="0"]{grid-column:span 1}.tile{min-height:48px;font-size:18px}.bar{background:var(--surface2);min-height:66px}.word{height:44px;padding:0 12px;font-size:18px}.check{min-height:50px}}.wallet{background:var(--surface2);border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:17px;font-weight:900;display:flex}.shop-row{border-radius:var(--r-m);background:var(--surface2);text-align:left;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;width:100%;padding:12px;display:grid}.shop-icon svg{width:40px;height:40px}.shop-text{color:var(--text-dim);flex-direction:column;font-size:14px;font-weight:700;display:flex}.shop-text strong{color:var(--text);font-size:18px}.price{font-variant-numeric:tabular-nums;align-items:center;gap:4px;display:inline-flex}.price .gem{width:22px;height:22px}.hats{grid-template-columns:repeat(3,1fr);gap:8px;width:100%;display:grid}.hat-card{border-radius:var(--r-m);background:var(--surface2);flex-direction:column;align-items:center;gap:4px;padding:10px 6px;font-size:15px;display:flex}.hat-card.worn{box-shadow:inset 0 0 0 3px var(--primary)}.hat-card .btn{width:100%;padding:0 6px;font-size:15px}.hat-pic svg{width:56px;height:42px}.out-heart svg{width:64px;height:64px}.big-clock{font-variant-numeric:tabular-nums;font-size:48px;font-weight:900;line-height:1}.label-row{align-items:center;gap:10px;display:inline-flex}.win{padding-bottom:calc(var(--safe-b) + 20px);justify-content:flex-end}.win .card{animation-delay:.1s}.badge{background:var(--primary);border-radius:999px;padding:6px 14px;font-size:14px;font-weight:900}.stats{gap:12px;width:100%;display:flex}.stats>div{border-radius:var(--r-m);background:var(--surface2);color:var(--text-dim);flex-direction:column;flex:1;padding:10px;font-size:14px;font-weight:750;display:flex}.stats strong{color:var(--text);font-variant-numeric:tabular-nums;font-size:30px}.names{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.names span{background:var(--sky-low);border-radius:999px;padding:8px 18px;font-size:20px;font-weight:900}@media (prefers-reduced-motion:reduce){.emblem img,.panel.shake,.check.blink{animation:none!important}.banner{animation-duration:1.6s}}
