:root{--bg:#f5f6fb;--surface:#fff;--surface-2:#f2f4fa;--surface-3:#e9edf6;--line:#e4e8f1;--line-2:#d3d9e6;--ink:#1b2233;--ink-2:#596379;--ink-3:#8d96aa;--brand:#7b5cff;--brand-d:#5a3de0;--brand-l:#eeeaff;--brand-ink:#4a2fc4;--ok:#3dc65b;--ok-d:#2a9b45;--ok-l:#e2f8e6;--ok-ink:#1d7a36;--bad:#ff5a6a;--bad-d:#d9394b;--bad-l:#ffe8eb;--bad-ink:#bd2236;--gold:#ffc43a;--gold-d:#e09e00;--gold-l:#fff4d3;--gold-ink:#9a6a00;--sky:#1fb2ff;--sky-d:#0b8cd2;--sky-l:#e1f4ff;--flame:#ff8a1e;--flame-d:#e2650a;--locked:#e3e7ef;--locked-d:#c8cedb;--locked-ink:#a7afc1;--shadow-1:0 1px 2px rgb(23 30 50/.06),0 6px 18px rgb(23 30 50/.06);--shadow-2:0 2px 6px rgb(23 30 50/.08),0 18px 44px rgb(23 30 50/.14);--r-sm:12px;--r:16px;--r-lg:22px;--r-xl:30px;--font:"Lexend",system-ui,-apple-system,sans-serif;--display:"Bricolage Grotesque","Lexend",system-ui,sans-serif;--lift:0 1px 2px rgb(23 30 50/.06),0 6px 14px -6px rgb(23 30 50/.18);--ease:cubic-bezier(.2,.8,.2,1);--spring:cubic-bezier(.3,1.45,.45,1);--out:cubic-bezier(.16,1,.3,1);--rail:248px;--side:340px;--tab:76px;--top:64px;--t-xs:12px;--t-sm:14px;--t-md:16px;--t-lg:19px;--t-xl:23px;--t-2xl:28px;--t-3xl:36px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--dur-1:.12s;--dur-2:.22s;--dur-3:.42s;color-scheme:light}:root[data-theme=dark]{--bg:#0e1320;--surface:#161c2b;--surface-2:#1c2436;--surface-3:#232c41;--line:#283149;--line-2:#344059;--ink:#eef1f8;--ink-2:#a6afc5;--ink-3:#6c7792;--brand-l:#272150;--brand-ink:#b9a9ff;--ok-l:#12301d;--ok-ink:#7fe293;--bad-l:#3b1820;--bad-ink:#ff9aa5;--gold-l:#3a2e0f;--gold-ink:#ffd772;--sky-l:#0f2b3e;--locked:#252e43;--locked-d:#1a2132;--locked-ink:#56617c;--shadow-1:0 1px 2px rgb(0 0 0/.3),0 6px 18px rgb(0 0 0/.25);--shadow-2:0 2px 6px rgb(0 0 0/.35),0 18px 44px rgb(0 0 0/.45);color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1320;--surface:#161c2b;--surface-2:#1c2436;--surface-3:#232c41;--line:#283149;--line-2:#344059;--ink:#eef1f8;--ink-2:#a6afc5;--ink-3:#6c7792;--brand-l:#272150;--brand-ink:#b9a9ff;--ok-l:#12301d;--ok-ink:#7fe293;--bad-l:#3b1820;--bad-ink:#ff9aa5;--gold-l:#3a2e0f;--gold-ink:#ffd772;--sky-l:#0f2b3e;--locked:#252e43;--locked-d:#1a2132;--locked-ink:#56617c;--shadow-1:0 1px 2px rgb(0 0 0/.3),0 6px 18px rgb(0 0 0/.25);--shadow-2:0 2px 6px rgb(0 0 0/.35),0 18px 44px rgb(0 0 0/.45);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;height:100%}body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:600 16px/1.45 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;user-select:none;-webkit-user-select:none}input,textarea{user-select:text;-webkit-user-select:text}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation}button:disabled{cursor:default}:focus{outline:none}:focus-visible{outline:3px solid var(--sky);outline-offset:3px;border-radius:10px}svg{display:block}h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.02em;margin:0}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}[hidden]{display:none!important}.btn{--b:var(--brand);--s:var(--brand-d);--t:#fff;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 22px;border-radius:var(--r);background:var(--b);color:var(--t);font:600 16px/1 var(--font);box-shadow:var(--lift);transform:translateY(0);transition:transform .08s,box-shadow .08s,filter .15s,background .2s}.btn:hover{filter:brightness(1.05)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{--b:var(--locked);--s:var(--locked-d);--t:var(--locked-ink)}.btn.block{display:flex;width:100%}.btn.ok{--b:var(--ok);--s:var(--ok-d)}.btn.bad{--b:var(--bad);--s:var(--bad-d)}.btn.gold{--b:var(--gold);--s:var(--gold-d);--t:#5b3c00}.btn.sky{--b:var(--sky);--s:var(--sky-d)}.btn.ghost{--b:var(--surface);--s:var(--line-2);--t:var(--ink-2);box-shadow:var(--lift),inset 0 0 0 2px var(--line-2)}.btn.ghost:active:not(:disabled){box-shadow:0 0 0 var(--s),inset 0 0 0 2px var(--line-2)}.btn.flat{--b:transparent;--s:transparent;--t:var(--sky);box-shadow:none}.btn.accent{--b:var(--c);--s:var(--c-d)}.btn.sm{min-height:40px;padding:0 14px;font-size:13px;border-radius:var(--r-sm)}.icon-btn{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;color:var(--ink-3);transition:background .15s,color .15s,transform .1s}.icon-btn:hover{background:var(--surface-2);color:var(--ink-2)}.icon-btn:active{transform:scale(.92)}.icon-btn svg{width:26px;height:26px}.app{min-height:100dvh;display:grid;grid-template-columns:1fr}.rail,.side{display:none}.stage{min-width:0;display:flex;flex-direction:column;min-height:100dvh}.topbar{position:sticky;top:0;z-index:30;height:calc(var(--top) + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0;display:flex;align-items:center;gap:6px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.6) blur(16px);-webkit-backdrop-filter:saturate(1.6) blur(16px);border-bottom:2px solid var(--line)}.topbar .grow{flex:1}.course-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 10px 0 6px;border-radius:14px;transition:background .15s}.course-chip:hover{background:var(--surface-2)}.course-chip .tile{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-size:19px;background:var(--c-l);box-shadow:inset 0 -3px color-mix(in srgb,var(--c) 30%,transparent)}.course-chip .name{font:700 15px/1 var(--font);max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-chip .caret{width:16px;height:16px;color:var(--ink-3)}.stat{display:flex;align-items:center;gap:6px;height:44px;padding:0 9px;border-radius:14px;font:700 16px/1 var(--font);transition:background .15s}.stat:hover{background:var(--surface-2)}.stat svg{width:26px;height:26px}.stat.streak{color:var(--flame)}.stat.streak.cold{color:var(--locked-ink)}.stat.gems{color:var(--gold-d)}.stat.xp{color:var(--brand)}.stat b{font-weight:800}.stat.bump b{animation:bump .5s var(--spring)}@keyframes bump{40%{transform:scale(1.45)}}.back-link{display:grid;place-items:center;width:40px;height:44px;border-radius:12px;color:var(--ink-3)}.back-link:hover{background:var(--surface-2)}.back-link svg{width:24px;height:24px}.view{flex:1;position:relative;padding-bottom:calc(var(--tab) + env(safe-area-inset-bottom) + 24px)}.view>.screen{animation:screenIn .42s var(--out) both}@keyframes screenIn{0%{opacity:0;transform:translateY(14px)}}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--tab) + env(safe-area-inset-bottom));padding:8px 6px env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(6,1fr);gap:0;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(1.6) blur(18px);-webkit-backdrop-filter:saturate(1.6) blur(18px);border-top:2px solid var(--line)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:16px;color:var(--ink-3);font:700 10px/1 var(--font);letter-spacing:.03em;text-transform:uppercase;position:relative;transition:color .2s;min-width:0}@media (min-width:420px){.tab{font-size:11px;letter-spacing:.05em}}.tab .ico{width:44px;height:34px;display:grid;place-items:center;border-radius:12px;transition:background .25s,transform .25s var(--spring)}.tab svg{width:28px;height:28px}.tab.on{color:var(--brand)}.tab.on .ico{background:var(--brand-l);transform:translateY(-1px)}.tab:active .ico{transform:scale(.9)}.tab .dot{position:absolute;top:4px;right:calc(50% - 26px);width:10px;height:10px;border-radius:50%;background:var(--bad);box-shadow:0 0 0 2px var(--surface)}@media (min-width:1080px){.app{grid-template-columns:var(--rail) minmax(0,1fr) var(--side)}.rail{display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100dvh;padding:26px 16px;border-right:2px solid var(--line)}.rail .logo{display:flex;align-items:center;gap:10px;padding:4px 12px 26px;font:700 26px/1 var(--display);color:var(--brand);letter-spacing:-.02em}.rail .logo svg{width:40px;height:40px}.rail .tab{flex-direction:row;justify-content:flex-start;gap:16px;height:54px;padding:0 12px;font-size:14px;border:2px solid transparent}.rail .tab.on{background:var(--brand-l);border-color:color-mix(in srgb,var(--brand) 45%,transparent)}.rail .tab.on .ico{background:none}.rail .tab .dot{top:10px;right:auto;left:42px}.rail .spacer{flex:1}.rail .tab.exit{color:var(--ink-3)}.tabbar{display:none}.view{padding-bottom:48px}.topbar{justify-content:flex-end}.topbar .back-link{display:none}.side{display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100dvh;overflow:auto;padding:22px 24px 30px 4px;scrollbar-width:none}.side::-webkit-scrollbar{display:none}.stage .topbar .stat{display:none}}.side .stats-row{display:flex;justify-content:space-between;gap:4px;padding:6px 4px}.card{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow-1)}.card h3{font-size:19px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:8px}.card h3 a,.card h3 button{font:700 13px/1 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--sky)}.wrap{width:min(100%,640px);margin:0 auto;padding:20px 16px}.page-title{font-size:var(--t-2xl);line-height:1.1;margin:6px 2px}.page-sub{color:var(--ink-2);margin:0 2px 18px;font-weight:600}.eyebrow{font:800 12px/1 var(--font);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.bar{height:16px;border-radius:99px;background:var(--surface-3);overflow:hidden;position:relative}.bar>i{display:block;height:100%;width:var(--p,0%);border-radius:inherit;background:var(--fill,var(--gold));position:relative;transition:width .7s var(--out)}.bar>i:after{content:"";position:absolute;left:8px;right:8px;top:4px;height:4px;border-radius:9px;background:#ffffff61}.bar.thin{height:10px}.bar.thin>i:after{display:none}.path-screen{width:min(100%,600px);margin:0 auto;padding:16px 16px 40px}.unit{margin-bottom:26px;position:relative}.unit-head{position:sticky;top:calc(var(--top) + env(safe-area-inset-top) + 10px);z-index:12;display:flex;align-items:center;gap:12px;padding:16px 16px 16px 20px;border-radius:var(--r-lg);background:var(--c);color:#fff;box-shadow:var(--lift);overflow:hidden}.unit-head:before{content:"";position:absolute;inset:0;background:radial-gradient(120% 140% at 100% 0,rgb(255 255 255/.22),transparent 55%);pointer-events:none}.unit-head.locked{background:var(--locked-ink);box-shadow:var(--lift)}.unit-head .txt{flex:1;min-width:0;position:relative}.unit-head .eyebrow{color:#ffffffd1}.unit-head h2{font-size:21px;line-height:1.15;margin-top:5px}.unit-head p{margin:3px 0 0;font-weight:600;font-size:14px;opacity:.9}.guide-btn{position:relative;display:flex;align-items:center;gap:8px;height:46px;padding:0 14px;border-radius:14px;border:2px solid rgb(255 255 255/.4);font:700 13px/1 var(--font);color:#fff;box-shadow:var(--lift);transition:background .15s,transform .08s}.guide-btn:hover{background:#ffffff1f}.guide-btn:active{transform:scale(.97)}.guide-btn svg{width:22px;height:22px}.unit-divider{display:flex;align-items:center;gap:14px;color:var(--ink-3);font:700 15px/1.2 var(--font);margin:8px 0 22px;text-align:center}.unit-divider:before,.unit-divider:after{content:"";flex:1;height:2px;background:var(--line)}.trail{position:relative;display:flex;flex-direction:column;align-items:center;gap:18px;padding:34px 0 8px}.node-wrap{position:relative;transform:translate(var(--x,0));z-index:2}.node{--c1:var(--c);--c2:var(--c-d);position:relative;width:72px;height:72px;border-radius:24px;display:grid;place-items:center;color:#fff;background:var(--c1);box-shadow:var(--lift),inset 0 -2px #0000000f;transition:transform .1s,box-shadow .1s}.node:active:not(:disabled){transform:scale(.97)}.node svg{width:34px;height:34px;position:relative;filter:drop-shadow(0 2px 0 rgb(0 0 0/.12))}.node.locked{--c1:var(--locked);--c2:var(--locked-d);color:var(--locked-ink)}.node.locked svg{filter:none}.node.perfect{--c1:var(--gold);--c2:var(--gold-d);color:#fff}.node.chest{width:84px;height:78px;border-radius:26px}.node.chest svg{width:48px;height:48px}.node.chest.locked{--c1:var(--locked);--c2:var(--locked-d)}.node-ring{position:absolute;left:50%;top:50%;width:104px;height:104px;margin:-52px 0 0 -52px;pointer-events:none}.node-ring circle{fill:none;stroke-width:8;stroke-linecap:round}.node-ring .track{stroke:var(--surface-3)}.node-ring .val{stroke:var(--c);transform:rotate(-90deg);transform-origin:center;transition:stroke-dashoffset .8s var(--out)}.node-wrap.current .node{animation:nodeIdle 2.6s ease-in-out infinite}@keyframes nodeIdle{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.start-tip{position:absolute;left:50%;bottom:calc(100% + 18px);transform:translate(-50%);z-index:3;padding:10px 14px;border-radius:14px;background:var(--surface);border:2px solid var(--line);color:var(--c);font:800 15px/1 var(--font);white-space:nowrap;animation:tipBob 1.4s ease-in-out infinite;pointer-events:none}.start-tip:after{content:"";position:absolute;left:50%;top:100%;width:14px;height:14px;background:var(--surface);border:2px solid var(--line);border-top:0;border-left:0;transform:translate(-50%,-6px) rotate(45deg)}@keyframes tipBob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,-6px)}}.node-wrap.unlocking .node{animation:unlockPop .9s var(--spring) both}@keyframes unlockPop{0%{transform:scale(.6);filter:grayscale(1)}60%{transform:scale(1.15)}to{transform:scale(1);filter:none}}.trail .buddy{position:absolute;width:118px;pointer-events:none;z-index:1}.trail .buddy.l{left:2%}.trail .buddy.r{right:2%}.trail .deco{position:absolute;font-size:40px;opacity:.95;pointer-events:none;z-index:1;filter:drop-shadow(0 6px 0 rgb(0 0 0/.06))}.pop{position:absolute;left:50%;top:calc(100% + 18px);z-index:20;width:min(300px,86vw);transform:translate(calc(-50% - var(--x,0px)));padding:18px;border-radius:var(--r-lg);background:var(--c);color:#fff;box-shadow:var(--lift),var(--shadow-2);animation:popIn .32s var(--spring) both;transform-origin:50% -10px}.pop.locked{background:var(--surface);color:var(--ink-2);border:2px solid var(--line);box-shadow:var(--shadow-2)}.pop:before{content:"";position:absolute;top:-9px;left:calc(50% + var(--x,0px));width:18px;height:18px;background:inherit;transform:translate(-50%) rotate(45deg);border-radius:3px}.pop.locked:before{border-left:2px solid var(--line);border-top:2px solid var(--line)}.pop h4{font:600 20px/1.2 var(--display);margin:0 0 4px;position:relative}.pop p{margin:0 0 14px;font-weight:600;opacity:.92;position:relative}.pop .btn{--b:#fff;--s:rgb(0 0 0/.18);--t:var(--c)}.pop.locked .btn{--b:var(--locked);--s:var(--locked-d);--t:var(--locked-ink)}.pop .btn.flat{--b:transparent;--s:transparent;--t:#fff;margin-top:6px}@keyframes popIn{0%{opacity:0;transform:translate(calc(-50% - var(--x,0px))) scale(.8)}}.jump-top{position:fixed;right:max(18px,calc(50% - 280px));bottom:calc(var(--tab) + env(safe-area-inset-bottom) + 18px);z-index:25;width:52px;height:52px;border-radius:16px;background:var(--surface);border:2px solid var(--line);box-shadow:var(--lift);color:var(--ink-3);display:grid;place-items:center;animation:popIn2 .3s var(--spring)}.jump-top svg{width:26px;height:26px}@keyframes popIn2{0%{opacity:0;transform:scale(.6)}}@media (min-width:1080px){.jump-top{right:calc(var(--side) + 30px);bottom:30px}}.course-hero{display:flex;align-items:center;gap:14px;margin:4px 2px 18px}.course-hero .big{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;font-size:32px;background:var(--c-l);box-shadow:inset 0 -4px color-mix(in srgb,var(--c) 30%,transparent)}.course-hero h1{font-size:25px;line-height:1.1}.course-hero p{margin:3px 0 0;color:var(--ink-2);font-weight:600;font-size:14px}.course-hero .ring{margin-left:auto}.mascot{display:block;width:100%;height:auto;overflow:visible}.mascot .body,.mascot .head,.mascot .uarm,.mascot .farm{transform-box:view-box}.mascot .body{transform-origin:60px 124px;animation:zSway 5s ease-in-out infinite}.mascot .torso{transform-box:fill-box;transform-origin:50% 100%;animation:zBreathe 3.6s ease-in-out infinite}.mascot .head{transform-origin:60px 50px;animation:zLook 9s ease-in-out infinite;transition:transform .45s var(--ease)}.mascot .uarm{transform-origin:74px 56px;animation:zArm 4.5s ease-in-out infinite;transition:transform .5s var(--ease)}.mascot .farm{transform-origin:76.5px 70px;transition:transform .5s var(--ease)}.mascot .lid{transform-box:fill-box;transform-origin:50% 0;transform:scaleY(0);animation:zBlink 6s infinite}.mascot .pupil{animation:zEyes 9s ease-in-out infinite;transition:transform .3s var(--ease)}.mascot .brow{transform-box:fill-box;transform-origin:50% 100%;animation:zBrows 9s ease-in-out infinite;transition:transform .3s var(--ease)}.mascot .strand{transform-box:fill-box;transform-origin:50% 0;animation:zStrand 3.2s ease-in-out infinite alternate}.mascot .strand-r{animation-delay:-1.6s}.mascot .glint{animation:zGlint 7s ease-in-out infinite}.mascot .bun{transform-box:fill-box;transform-origin:50% 100%}.mascot .grin{transform-box:fill-box;transform-origin:50% 0}.mascot .grin,.mascot .frown,.mascot .mouth-round,.mascot .mouth-wide{display:none}@keyframes zSway{0%,to{transform:rotate(-.8deg)}50%{transform:rotate(.8deg)}}@keyframes zBreathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.02)}}@keyframes zLook{0%,22%,80%,to{transform:rotate(0)}30%,45%{transform:rotate(-4deg)}55%,72%{transform:rotate(3deg) translateY(-.5px)}}@keyframes zEyes{0%,22%,80%,to{transform:translate(0)}30%,45%{transform:translate(-.9px,.1px)}55%,72%{transform:translate(.9px,-.3px)}}@keyframes zBrows{0%,52%,62%,to{transform:translateY(0)}56%,59%{transform:translateY(-1.2px)}}@keyframes zBlink{0%,45%,51%,89%,93%,95%,99%,to{transform:scaleY(0)}48%,91%,97%{transform:scaleY(1)}}@keyframes zStrand{0%{transform:rotate(-4deg)}to{transform:rotate(4deg)}}@keyframes zGlint{0%,60%{transform:translate(0)}78%,to{transform:translate(32px)}}@keyframes zArm{0%,to{transform:rotate(-2deg)}50%{transform:rotate(3deg)}}.mascot.happy .body{animation:zHop .9s var(--spring) infinite}.mascot.happy .uarm{animation:none;transform:rotate(-160deg)}.mascot.happy .farm{animation:zCheer .45s ease-in-out infinite alternate}.mascot.happy .bun{animation:zBun .45s ease-in-out infinite alternate}.mascot.happy .brow{animation:none;transform:translateY(-1px)}.mascot.happy .smile{display:none}.mascot.happy .grin{display:inline}@keyframes zHop{0%,to{transform:translateY(0)}40%{transform:translateY(-6px)}}@keyframes zCheer{0%{transform:rotate(0)}to{transform:rotate(-25deg)}}@keyframes zBun{to{transform:translateY(-1px) rotate(6deg)}}.mascot.wave .uarm{animation:none;transform:rotate(-105deg)}.mascot.wave .farm{animation:zWave 1.1s ease-in-out infinite}.mascot.wave .head{animation:zTilt 2.2s ease-in-out infinite}@keyframes zWave{0%,to{transform:rotate(-65deg)}50%{transform:rotate(-95deg)}}@keyframes zTilt{0%,to{transform:rotate(-4deg)}50%{transform:rotate(-2deg)}}.mascot.think .uarm{animation:none;transform:rotate(78deg)}.mascot.think .farm{transform:rotate(118deg)}.mascot.think .head{animation:zPonder 4s ease-in-out infinite}.mascot.think .pupil{animation:none;transform:translate(.8px,-1px)}.mascot.think .brow-r{animation:none;transform:translateY(-1.3px) rotate(-6deg)}@keyframes zPonder{0%,to{transform:rotate(5deg)}50%{transform:rotate(7deg)}}.mascot.sad .body{animation:none;transform:translateY(1px)}.mascot.sad .head{animation:none;transform:rotate(-5deg) translateY(2px)}.mascot.sad .uarm{animation:none;transform:rotate(4deg)}.mascot.sad .pupil{animation:none;transform:translateY(.8px)}.mascot.sad .brow-l{animation:none;transform:rotate(-12deg)}.mascot.sad .brow-r{animation:none;transform:rotate(12deg)}.mascot.sad .smile{display:none}.mascot.sad .frown{display:inline}html.zuri-talking .mascot .smile,html.zuri-talking .mascot .frown{display:none}html.zuri-talking .mascot .grin{display:inline;animation:zTalk .24s ease-in-out infinite alternate}html.zuri-talking .mascot .head{animation:zNod 1.6s ease-in-out infinite}html[data-zuri-mouth] .mascot .grin{display:none;animation:none}html[data-zuri-mouth] .mascot .smile{display:none}html[data-zuri-mouth=closed] .mascot .smile,html[data-zuri-mouth=open] .mascot .grin,html[data-zuri-mouth=round] .mascot .mouth-round,html[data-zuri-mouth=wide] .mascot .mouth-wide{display:inline}@keyframes zTalk{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}@keyframes zNod{0%,to{transform:rotate(-1.5deg)}50%{transform:rotate(2deg) translateY(.6px)}}@media (prefers-reduced-motion:reduce){.mascot *{animation:none!important}}.scrim{position:fixed;inset:0;z-index:60;background:#0a0e187a;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:fade .25s ease both}.scrim.out{animation:fade .2s ease reverse both}@keyframes fade{0%{opacity:0}}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:61;max-height:92dvh;overflow:auto;background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;padding:10px 18px calc(24px + env(safe-area-inset-bottom));animation:sheetUp .45s var(--out) both;box-shadow:var(--shadow-2);overscroll-behavior:contain}.sheet.out{animation:sheetDown .25s ease-in both}.sheet .grab{width:44px;height:5px;border-radius:9px;background:var(--line-2);margin:4px auto 14px}.sheet .sheet-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.sheet .sheet-head h2{flex:1;font-size:24px}@keyframes sheetUp{0%{transform:translateY(100%)}}@keyframes sheetDown{to{transform:translateY(100%)}}@media (min-width:720px){.sheet{inset:50% auto auto 50%;width:min(640px,92vw);max-height:86dvh;border-radius:var(--r-xl);padding:18px 24px 26px;transform:translate(-50%,-50%);animation:modalIn .4s var(--spring) both}.sheet.out{animation:modalOut .2s ease-in both}.sheet .grab{display:none}}@keyframes modalIn{0%{opacity:0;transform:translate(-50%,-46%) scale(.94)}}@keyframes modalOut{to{opacity:0;transform:translate(-50%,-48%) scale(.96)}}.group-title{margin:18px 2px 10px}.subject-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.subj{--c1:var(--surface);position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:14px;border-radius:var(--r-lg);background:var(--surface);border:2px solid var(--line);box-shadow:var(--lift);text-align:left;transition:transform .08s,box-shadow .08s,border-color .15s}.subj:hover{border-color:color-mix(in srgb,var(--c) 55%,var(--line))}.subj:active{transform:scale(.97)}.subj.on{border-color:var(--c);box-shadow:var(--lift);background:var(--c-l)}.subj .tile{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;font-size:27px;background:var(--c-l);box-shadow:inset 0 -4px color-mix(in srgb,var(--c) 32%,transparent)}.subj.on .tile{background:var(--surface)}.subj b{font:700 15px/1.2 var(--font)}.subj small{color:var(--ink-3);font-weight:700;font-size:12px}.subj .bar{height:8px;width:100%;--fill:var(--c)}.subj .bar>i:after{display:none}.search{display:flex;align-items:center;gap:10px;height:50px;padding:0 14px;border-radius:var(--r);background:var(--surface-2);border:2px solid var(--line);color:var(--ink-3)}.search:focus-within{border-color:var(--sky);background:var(--surface)}.search svg{width:22px;height:22px;flex:none}.search input{flex:1;min-width:0;border:0;background:none;color:var(--ink);font:700 16px var(--font);outline:none}.chips{display:flex;gap:8px;overflow:auto;padding:12px 2px 2px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;height:38px;padding:0 14px;border-radius:12px;border:2px solid var(--line);font:700 13px/1 var(--font);color:var(--ink-2);background:var(--surface);transition:all .15s}.chip.on{background:var(--sky-l);border-color:var(--sky);color:var(--sky-d)}.guide-card{display:flex;gap:14px;padding:16px;border-radius:var(--r-lg);border:1.5px solid var(--line);background:var(--surface);margin-bottom:12px}.guide-card .em{flex:none;width:52px;height:52px;border-radius:16px;background:var(--c-l);display:grid;place-items:center;font-size:28px}.guide-card h4{margin:0 0 4px;font:600 18px/1.2 var(--display)}.guide-card p{margin:0;color:var(--ink-2);font-weight:600}.guide-card .ex{margin-top:8px;padding:8px 12px;border-radius:12px;background:var(--surface-2);font-weight:700;color:var(--ink)}.guide-lesson{font:800 12px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--c-d);margin:20px 2px 10px}.speak-btn{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--sky);color:#fff;box-shadow:var(--lift);transition:transform .08s,box-shadow .08s}.speak-btn:active{transform:scale(.97)}.speak-btn svg{width:24px;height:24px}.speak-btn.playing svg{animation:speakPulse .8s ease-in-out infinite}.speak-btn.sm{width:36px;height:36px;border-radius:11px;box-shadow:var(--lift)}.speak-btn.sm svg{width:20px;height:20px}@keyframes speakPulse{50%{transform:scale(1.18)}}.lesson{position:fixed;inset:0;z-index:50;background:var(--surface);display:flex;flex-direction:column;animation:lessonIn .45s var(--out) both}.lesson.out{animation:lessonOut .3s ease-in both}@keyframes lessonIn{0%{opacity:0;transform:scale(1.03)}}@keyframes lessonOut{to{opacity:0;transform:scale(.98)}}.l-top{flex:none;display:flex;align-items:center;gap:12px;width:min(100%,1000px);margin:0 auto;padding:calc(14px + env(safe-area-inset-top)) 16px 8px}.l-top .bar{flex:1;height:18px;--fill:var(--ok)}.l-top .bar>i{min-width:18px}.combo{display:flex;align-items:center;gap:4px;color:var(--flame);font:800 17px/1 var(--font);min-width:46px;transition:opacity .2s}.combo svg{width:24px;height:24px}.combo.off{opacity:0}.combo.hot{animation:comboHot .6s var(--spring)}@keyframes comboHot{40%{transform:scale(1.5) rotate(-8deg)}}.combo-banner{position:absolute;left:50%;top:84px;z-index:5;transform:translate(-50%);padding:8px 16px;border-radius:99px;background:var(--flame);color:#fff;font:800 14px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;box-shadow:var(--lift);animation:bannerPop 1.6s var(--spring) both;white-space:nowrap;pointer-events:none}@keyframes bannerPop{0%{opacity:0;transform:translate(-50%,-10px) scale(.6)}15%{opacity:1;transform:translate(-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-8px)}}.l-body{flex:1;overflow:auto;display:flex;flex-direction:column}.l-inner{flex:1;width:min(100%,640px);margin:0 auto;padding:18px 16px 28px;display:flex;flex-direction:column}.l-inner.enter{animation:exIn .5s var(--out) both}.l-inner.leave{animation:exOut .22s ease-in both}@keyframes exIn{0%{opacity:0;transform:translate(44px)}}@keyframes exOut{to{opacity:0;transform:translate(-44px)}}.l-kicker{display:flex;align-items:center;gap:8px;font:800 13px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--brand);margin-bottom:12px}.l-kicker.redo{color:var(--flame)}.l-kicker svg{width:18px;height:18px}.l-title{font-size:clamp(23px,4.6vw,30px);line-height:1.18;margin-bottom:18px}.prompt{display:flex;align-items:flex-end;gap:10px;margin-bottom:22px}.prompt .mini-mascot{flex:none;width:clamp(104px,22vw,132px)}.bubble{position:relative;flex:1;padding:14px 16px;border-radius:var(--r-lg);border:2px solid var(--line);background:var(--surface);font:700 19px/1.35 var(--font);display:flex;gap:12px;align-items:flex-start}.bubble:before{content:"";position:absolute;left:-10px;bottom:22px;width:16px;height:16px;background:var(--surface);border-left:2px solid var(--line);border-bottom:2px solid var(--line);transform:rotate(45deg)}.bubble .q{flex:1}.teach{position:relative;flex:1;display:flex;flex-direction:column}.teach-card{position:relative;border-radius:var(--r-xl);padding:26px 22px 22px;background:var(--c-l);border:2px solid color-mix(in srgb,var(--c) 30%,transparent);overflow:hidden}.teach-card:after{content:"";position:absolute;right:-60px;top:-60px;width:200px;height:200px;border-radius:50%;background:color-mix(in srgb,var(--c) 14%,transparent)}.teach-card .big-ico{position:relative;z-index:1;width:72px;height:72px;border-radius:22px;display:grid;place-items:center;font-size:42px;background:var(--surface);box-shadow:var(--lift);margin-bottom:16px;animation:icoIn .7s var(--spring) .1s both}@keyframes icoIn{0%{transform:scale(.3) rotate(-20deg);opacity:0}}.teach-card h2{position:relative;z-index:1;font-size:clamp(25px,5vw,32px);line-height:1.12;margin-bottom:10px}.teach-card p{position:relative;z-index:1;margin:0;font-size:19px;font-weight:600;color:var(--ink);line-height:1.5}.teach-ex{position:relative;z-index:1;margin-top:16px;padding:14px 16px;border-radius:var(--r);background:var(--surface);border:2px dashed color-mix(in srgb,var(--c) 45%,transparent);font:700 17px/1.4 var(--font)}.teach-ex .eyebrow{display:block;margin-bottom:6px;color:var(--c-d)}.teach-card .speak-btn{position:absolute;right:18px;top:18px;z-index:2}.teach-mascot{display:flex;align-items:center;gap:12px;margin-top:18px}.teach-mascot .mini-mascot{width:clamp(104px,22vw,132px);flex:none}.teach-mascot .say{flex:1;padding:12px 14px;border-radius:var(--r);background:var(--surface-2);font-weight:700;color:var(--ink-2);position:relative}.teach-mascot .say:before{content:"";position:absolute;left:-7px;top:50%;width:14px;height:14px;background:var(--surface-2);transform:translateY(-50%) rotate(45deg)}.word-in{display:inline-block;animation:wordIn .5s var(--out) both}@keyframes wordIn{0%{opacity:0;transform:translateY(8px);filter:blur(3px)}}.choices{display:grid;gap:12px}.choice{display:flex;align-items:center;gap:14px;min-height:62px;padding:12px 16px;border-radius:var(--r);text-align:left;background:var(--surface);border:2px solid var(--line);box-shadow:var(--lift);font:700 18px/1.25 var(--font);transition:transform .08s,box-shadow .08s,border-color .15s,background .15s,color .15s}.choice:hover:not(:disabled){background:var(--surface-2)}.choice:active:not(:disabled){transform:scale(.97)}.choice .k{flex:none;width:30px;height:30px;border-radius:9px;border:2px solid var(--line);display:grid;place-items:center;font-size:14px;color:var(--ink-3)}.choice.sel{border-color:var(--sky);background:var(--sky-l);box-shadow:var(--lift);color:var(--sky-d)}.choice.sel .k{border-color:var(--sky);color:var(--sky-d)}.choice.right{border-color:var(--ok);background:var(--ok-l);box-shadow:var(--lift);color:var(--ok-ink)}.choice.wrong{border-color:var(--bad);background:var(--bad-l);box-shadow:var(--lift);color:var(--bad-ink);animation:shake .4s}.choice.right .k,.choice.wrong .k{border-color:currentColor;color:inherit}.choices.tf{grid-template-columns:1fr 1fr}.choices.tf .choice{flex-direction:column;justify-content:center;min-height:132px;font-size:20px;gap:10px}.choices.tf .choice svg{width:42px;height:42px}@keyframes shake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@media (min-width:560px){.choices.grid2{grid-template-columns:1fr 1fr}}.sentence{font:700 22px/2.1 var(--font);margin:4px 0 26px}.blank{display:inline-flex;align-items:center;justify-content:center;min-width:110px;height:46px;margin:0 4px;padding:0 14px;vertical-align:middle;border-radius:14px;border:2px dashed var(--line-2);color:var(--ink-3);transition:all .2s}.blank.filled{border:2px solid var(--line);border-bottom-width:5px;background:var(--surface);color:var(--ink);animation:tokIn .35s var(--spring)}.blank.right{border-color:var(--ok);color:var(--ok-ink);background:var(--ok-l)}.blank.wrong{border-color:var(--bad);color:var(--bad-ink);background:var(--bad-l)}.answer-line{min-height:128px;display:flex;flex-wrap:wrap;align-content:flex-start;gap:10px;padding:12px 0;margin-bottom:20px;background:repeating-linear-gradient(to bottom,transparent 0 57px,var(--line) 57px 59px)}.answer-line.order{background:none;flex-direction:column;flex-wrap:nowrap;gap:10px;min-height:0}.answer-line.order .slot{height:52px;border-radius:14px;border:2px dashed var(--line-2);display:flex;align-items:center;padding:0 6px;gap:10px;color:var(--ink-3);font:900 14px var(--font)}.answer-line.order .slot .n{width:30px;text-align:center}.answer-line.order .slot .tok{flex:1}.bank{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.tok{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:8px 16px;border-radius:14px;background:var(--surface);border:2px solid var(--line);box-shadow:var(--lift);font:700 17px/1.2 var(--font);color:var(--ink);transition:transform .08s,box-shadow .08s,opacity .2s;animation:tokIn .35s var(--spring) both}.tok:active:not(:disabled){transform:scale(.97)}.tok.ghost{background:var(--surface-3);border-color:var(--surface-3);box-shadow:none;color:transparent;pointer-events:none;animation:none}.answer-line.right .tok{border-color:var(--ok);color:var(--ok-ink);box-shadow:var(--lift)}.answer-line.wrong .tok{border-color:var(--bad);color:var(--bad-ink);box-shadow:var(--lift)}@keyframes tokIn{0%{transform:scale(.7);opacity:0}}.match{display:grid;grid-template-columns:1fr 1fr;gap:12px}.match .col{display:grid;gap:12px;align-content:start}.match .tok{width:100%;min-height:60px;font-size:16px}.match .tok.sel{border-color:var(--sky);background:var(--sky-l);box-shadow:var(--lift);color:var(--sky-d)}.match .tok.done{border-color:var(--ok);background:var(--ok-l);box-shadow:var(--lift);color:var(--ok-ink);animation:matchDone .6s var(--spring) both}.match .tok.gone{opacity:.35;border-color:var(--line);background:var(--surface-2);box-shadow:none;color:var(--ink-3);pointer-events:none}.match .tok.miss{border-color:var(--bad);background:var(--bad-l);box-shadow:var(--lift);color:var(--bad-ink);animation:shake .4s}@keyframes matchDone{40%{transform:scale(1.07)}}.type-box{width:100%;min-height:130px;padding:16px;border-radius:var(--r-lg);border:2px solid var(--line);background:var(--surface-2);color:var(--ink);font:700 22px/1.4 var(--font);resize:none;outline:none;transition:border-color .15s,background .15s}.type-box:focus{border-color:var(--sky);background:var(--surface)}.type-box.right{border-color:var(--ok);background:var(--ok-l)}.type-box.wrong{border-color:var(--bad);background:var(--bad-l)}.mic-row{display:flex;justify-content:center;margin-top:18px}.mic{display:flex;align-items:center;gap:10px;height:48px;padding:0 18px;border-radius:14px;border:2px solid var(--line);box-shadow:var(--lift);font:700 14px/1 var(--font);color:var(--sky-d);background:var(--surface)}.mic svg{width:22px;height:22px}.mic.rec{color:var(--bad);border-color:var(--bad);box-shadow:var(--lift)}.mic.rec svg{animation:speakPulse .7s infinite}.l-foot{flex:none;position:relative;border-top:2px solid var(--line);background:var(--surface)}.l-foot-in{width:min(100%,1000px);margin:0 auto;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:14px}.l-foot .btn{min-width:150px}.l-foot .spacer{flex:1}.l-foot.ok{background:var(--ok-l);border-color:transparent}.l-foot.bad{background:var(--bad-l);border-color:transparent}.l-foot.ok,.l-foot.bad{animation:footUp .35s var(--out)}@keyframes footUp{0%{transform:translateY(40%);opacity:.4}}.verdict{flex:1;display:flex;gap:14px;align-items:flex-start;min-width:0}.verdict .badge{flex:none;width:58px;height:58px;border-radius:50%;background:var(--surface);display:grid;place-items:center;animation:badgeIn .5s var(--spring)}.verdict .badge svg{width:34px;height:34px}.l-foot.ok .verdict{color:var(--ok-ink)}.l-foot.ok .badge{color:var(--ok)}.l-foot.bad .verdict{color:var(--bad-ink)}.l-foot.bad .badge{color:var(--bad)}.verdict h3{font-size:23px;line-height:1.15}.verdict p{margin:4px 0 0;font-weight:700;font-size:15px;color:inherit;opacity:.95}.verdict .ai{margin-top:8px;padding:8px 10px;border-radius:12px;background:#ffffff8c;color:var(--ink-2);font-weight:600;font-size:14px;display:flex;gap:8px;animation:fade .4s}:root[data-theme=dark] .verdict .ai{background:#00000040}.verdict .ai b{flex:none;font:800 10px/1.9 var(--font);letter-spacing:.08em;padding:0 6px;border-radius:6px;background:var(--brand);color:#fff;height:18px}@keyframes badgeIn{0%{transform:scale(0) rotate(-90deg)}}@media (max-width:640px){.l-foot-in{flex-direction:column;align-items:stretch}.l-foot .btn{width:100%}.l-foot .skip{display:none}.verdict .badge{width:44px;height:44px}.verdict .badge svg{width:26px;height:26px}.verdict h3{font-size:21px}}.end{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px 16px;width:min(100%,560px);margin:0 auto}.end .hero-mascot{width:180px;margin-bottom:6px}.end h1{font-size:clamp(30px,7vw,40px);color:var(--gold-d);margin-bottom:6px;animation:titleIn .7s var(--spring) .15s both}.end .sub{color:var(--ink-2);font-weight:700;margin:0 0 26px;animation:fade .6s .3s both}@keyframes titleIn{0%{opacity:0;transform:scale(.6)}}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%}.tile-stat{border-radius:var(--r);border:2px solid var(--tc);background:var(--tc);overflow:hidden;animation:tileIn .6s var(--spring) both}.tile-stat:nth-child(2){animation-delay:.12s}.tile-stat:nth-child(3){animation-delay:.24s}.tile-stat .lbl{padding:7px 4px;color:#fff;font:800 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase}.tile-stat .val{display:flex;align-items:center;justify-content:center;gap:6px;height:64px;border-radius:13px;background:var(--surface);color:var(--tc);font:800 22px/1 var(--font)}.tile-stat .val svg{width:24px;height:24px}@keyframes tileIn{0%{opacity:0;transform:translateY(24px) scale(.9)}}.streak-hero{position:relative;width:200px;height:200px;margin-bottom:6px}.streak-hero .flame{width:100%;height:100%;animation:flameIn 1s var(--spring) both}@keyframes flameIn{0%{transform:scale(.2) translateY(30%);opacity:0}}.streak-hero .num{position:absolute;left:0;right:0;bottom:22px;font:700 64px/1 var(--display);color:#fff;text-shadow:0 4px 0 var(--flame-d)}.week{display:flex;justify-content:center;gap:10px;margin:8px 0 6px;padding:16px;border-radius:var(--r-lg);border:2px solid var(--line);width:100%}.week .d{display:flex;flex-direction:column;align-items:center;gap:8px;font:800 12px/1 var(--font);color:var(--ink-3);flex:1}.week .d i{width:34px;height:34px;border-radius:50%;background:var(--surface-3);display:grid;place-items:center;color:#fff}.week .d i svg{width:20px;height:20px}.week .d.on i{background:var(--flame);animation:dayOn .6s var(--spring) both;animation-delay:calc(var(--i)*70ms + .4s)}.week .d.today{color:var(--flame)}@keyframes dayOn{0%{transform:scale(0)}}.end-foot{width:min(100%,1000px);margin:0 auto;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;justify-content:flex-end;gap:12px;border-top:2px solid var(--line)}@media (max-width:640px){.end-foot .btn{flex:1}}.quit-sheet .mascot-row{display:flex;justify-content:center;margin:6px 0 4px}.quit-sheet .mascot-row .mascot-holder{width:130px}.quit-sheet h2{text-align:center;font-size:24px;margin-bottom:6px}.quit-sheet p{text-align:center;color:var(--ink-2);font-weight:600;margin:0 0 20px}.quit-sheet .btn+.btn{margin-top:12px}.big-card{position:relative;display:flex;align-items:center;gap:16px;width:100%;padding:18px;border-radius:var(--r-lg);border:1.5px solid var(--line);background:var(--surface);box-shadow:var(--lift);text-align:left;margin-bottom:14px;transition:transform .08s,box-shadow .08s}.big-card:active:not(:disabled){transform:scale(.97)}.big-card:disabled{opacity:.6}.big-card .art{flex:none;width:64px;height:64px;border-radius:20px;display:grid;place-items:center;font-size:34px;background:var(--tint,var(--brand-l))}.big-card .art svg{width:36px;height:36px}.big-card h3{font-size:20px;margin-bottom:3px}.big-card p{margin:0;color:var(--ink-2);font-weight:600;font-size:14px}.big-card .go{margin-left:auto;color:var(--ink-3)}.big-card .go svg{width:22px;height:22px}.skill-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1.5px solid var(--line)}.skill-row:first-of-type{border-top:0}.skill-row .em{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:23px;background:var(--c-l)}.skill-row .meta{flex:1;min-width:0}.skill-row b{display:block;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skill-row small{color:var(--ink-3);font-weight:700}.strength{display:flex;gap:3px}.strength i{width:8px;height:22px;border-radius:4px;background:var(--surface-3)}.strength i.on{background:var(--c)}.quest{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:1.5px solid var(--line)}.quest:first-of-type{border-top:0;padding-top:4px}.quest .q-ico{flex:none;width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--tint);color:var(--tc)}.quest .q-ico svg{width:30px;height:30px}.quest .meta{flex:1;min-width:0}.quest b{display:block;font-weight:700;margin-bottom:8px}.quest .bar{height:18px}.quest .bar span{position:absolute;inset:0;display:grid;place-items:center;font:800 12px/1 var(--font);color:var(--ink-2)}.quest .chest{flex:none;width:52px;height:52px;display:grid;place-items:center;border-radius:16px;transition:transform .2s}.quest .chest svg{width:42px;height:42px}.quest .chest.ready{animation:chestWiggle 1.2s ease-in-out infinite}.quest .chest.ready:hover{transform:scale(1.08)}.quest .chest.claimed{opacity:.45;filter:grayscale(.6)}@keyframes chestWiggle{0%,to{transform:rotate(0)}10%{transform:rotate(-9deg)}20%{transform:rotate(8deg)}30%{transform:rotate(-5deg)}40%{transform:rotate(0)}}.quest-hero{position:relative;overflow:hidden;display:flex;align-items:center;gap:16px;padding:22px;border-radius:var(--r-xl);background:linear-gradient(135deg,var(--brand),#9a7bff);color:#fff;margin-bottom:18px;box-shadow:var(--lift)}.quest-hero h2{font-size:24px}.quest-hero p{margin:4px 0 0;font-weight:600;opacity:.92}.quest-hero .mascot-holder{flex:none;width:96px;margin:-10px -6px -26px 0}.timer{display:inline-flex;align-items:center;gap:6px;color:var(--gold-ink);font:800 13px/1 var(--font);letter-spacing:.06em;text-transform:uppercase}.timer svg{width:16px;height:16px}.profile-head{display:flex;align-items:center;gap:16px;padding:6px 2px 20px;border-bottom:2px solid var(--line);margin-bottom:20px}.avatar{flex:none;width:84px;height:84px;border-radius:50%;display:grid;place-items:center;font:700 38px/1 var(--display);color:#fff;background:conic-gradient(from 210deg,var(--brand),#ff7ac6,var(--gold),var(--ok),var(--sky),var(--brand));padding:4px}.avatar span{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;background:var(--brand);border:4px solid var(--surface)}.profile-head h1{font-size:28px}.profile-head p{margin:2px 0 0;color:var(--ink-3);font-weight:700}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:22px}.stat-box{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--r);border:1.5px solid var(--line);background:var(--surface)}.stat-box svg{width:30px;height:30px;flex:none}.stat-box b{display:block;font:800 21px/1.1 var(--font)}.stat-box small{color:var(--ink-3);font-weight:700;font-size:13px}.section-h{font-size:var(--t-xl);line-height:1.15;margin:var(--s-8) 2px var(--s-3)}.chart{display:flex;align-items:flex-end;gap:10px;height:170px;padding:10px 4px 0}.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;justify-content:flex-end}.chart .col i{width:100%;max-width:38px;border-radius:10px 10px 6px 6px;background:var(--brand-l);height:var(--h);min-height:6px;transition:height .8s var(--out);position:relative}.chart .col.today i{background:var(--brand)}.chart .col i b{position:absolute;left:50%;top:-22px;transform:translate(-50%);font:800 12px/1 var(--font);color:var(--ink-2)}.chart .col small{font:800 12px/1 var(--font);color:var(--ink-3)}.chart .col.today small{color:var(--brand)}.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.badge-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:16px 12px;border-radius:var(--r-lg);border:1.5px solid var(--line);background:var(--surface)}.badge-card .medal{width:64px;height:64px;border-radius:20px;display:grid;place-items:center;font-size:32px;background:var(--gold-l);box-shadow:inset 0 -4px color-mix(in srgb,var(--gold) 40%,transparent)}.badge-card.lock .medal{background:var(--surface-3);filter:grayscale(1);opacity:.6;box-shadow:none}.badge-card b{font-weight:800;font-size:15px}.badge-card small{color:var(--ink-3);font-weight:700;font-size:12px;line-height:1.3}.badge-card .bar{width:100%;height:8px}.badge-card .lvl{font:800 11px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--gold-ink)}.mastery-row{display:flex;align-items:center;gap:12px;padding:10px 0}.mastery-row .em{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:22px;background:var(--c-l)}.mastery-row .meta{flex:1;min-width:0}.mastery-row b{display:flex;justify-content:space-between;font-weight:700;margin-bottom:6px}.mastery-row b span{color:var(--ink-3)}.mastery-row .bar{height:10px;--fill:var(--c)}.settings .row{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:2px solid var(--line)}.settings .row:first-child{border-top:0}.settings .row .meta{flex:1}.settings .row b{display:block;font-weight:700}.settings .row small{color:var(--ink-3);font-weight:600}.switch{position:relative;flex:none;width:58px;height:34px;border-radius:99px;background:var(--locked);transition:background .2s}.switch:after{content:"";position:absolute;left:4px;top:4px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 2px 4px #0003;transition:transform .3s var(--spring)}.switch[aria-checked=true]{background:var(--ok)}.switch[aria-checked=true]:after{transform:translate(24px)}.side .card{padding:16px}.side .mini-quest{display:flex;align-items:center;gap:12px;padding:8px 0}.side .mini-quest svg{width:28px;height:28px;flex:none}.side .mini-quest .meta{flex:1}.side .mini-quest b{display:block;font-size:14px;font-weight:700;margin-bottom:6px}.side .goal-ring{display:flex;align-items:center;gap:14px}.side .goal-ring p{margin:0;color:var(--ink-2);font-weight:600;font-size:14px}.welcome{display:flex;flex-direction:column;align-items:center;text-align:center;padding:26px 16px 8px}.welcome .mascot-holder{width:170px;margin-bottom:10px}.welcome h1{font-size:clamp(28px,6vw,38px);line-height:1.1;margin-bottom:8px}.welcome p{color:var(--ink-2);font-weight:600;max-width:420px;margin:0 auto 18px}.sq-cert{display:flex;align-items:center;gap:14px;width:100%;margin:26px 0 8px;padding:14px 16px;border-radius:20px;border:2px solid var(--line, #e6e3f2);background:var(--surface);color:var(--ink);text-align:left;font:inherit;cursor:pointer;box-shadow:0 4px 0 var(--line, #e6e3f2)}.sq-cert b{display:block;font-size:16px}.sq-cert small{display:block;color:var(--ink-2);font-weight:600;font-size:13px;margin-top:2px}.sq-cert .ic-box{width:48px;height:48px;flex:none;border-radius:14px;display:grid;place-items:center;background:var(--c-l);color:var(--c-d)}.sq-cert .ic-box svg{width:26px;height:26px}.sq-cert.ready{border-color:var(--c);box-shadow:0 4px 0 var(--c-d)}.sq-cert.ready .ic-box{background:var(--c);color:#fff}.sq-cert:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line, #e6e3f2)}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:40px 16px;color:var(--ink-2);font-weight:600}.empty .mascot-holder{width:130px}.skeleton{border-radius:var(--r-lg);background:linear-gradient(90deg,var(--surface-2),var(--surface-3),var(--surface-2));background-size:200% 100%;animation:shimmer 1.3s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.toast{position:fixed;left:50%;bottom:calc(var(--tab) + env(safe-area-inset-bottom) + 16px);z-index:90;transform:translate(-50%);max-width:min(92vw,440px);padding:12px 16px;border-radius:var(--r);background:var(--ink);color:var(--bg);font-weight:700;box-shadow:var(--shadow-2);animation:toastIn .4s var(--spring) both}.toast.out{animation:toastIn .2s ease-in reverse both}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,16px) scale(.95)}}@media (min-width:1080px){.toast{bottom:28px}}.fly{position:fixed;z-index:95;pointer-events:none;width:30px;height:30px;transition:transform .8s cubic-bezier(.5,-.3,.7,1),opacity .8s}.fly svg{width:100%;height:100%}#confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:80}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root.calm *,:root.calm *:before,:root.calm *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}#lp-floating-music-btn{left:14px!important;right:auto!important;bottom:calc(var(--tab) + env(safe-area-inset-bottom) + 14px)!important;transform:scale(.82);transform-origin:left bottom}@media (min-width:1080px){#lp-floating-music-btn{left:calc(var(--rail) + 18px)!important;bottom:18px!important}}body.in-lesson #lp-floating-music-btn{display:none!important}.node-wrap.popped{z-index:15}.trail{padding-top:64px}html,body{overflow-x:clip}.topbar{overflow:hidden}.course-chip{min-width:0;flex:0 1 auto}.course-chip .tile{flex:none}.course-chip .name{min-width:0;flex:1 1 auto}.course-chip .caret,.stat{flex:none}@media (max-width:380px){.topbar .stat{padding:0 5px;gap:4px}.topbar .stat svg{width:22px;height:22px}.back-link{width:32px}}.trail{gap:30px}.start-tip{bottom:calc(100% + 12px);padding:8px 12px;font-size:13px}.start-tip{z-index:6}.node-wrap.current{z-index:5}@media (max-width:430px){.course-chip .name{display:none}}.trail{gap:40px}.tile-stat .val{font-size:clamp(17px,5vw,22px);gap:5px}@media (max-width:400px){.tile-stat .val svg{display:none}}body.sheet-open #lp-floating-music-btn{display:none!important}.btn:disabled{--b:var(--locked)!important;--s:var(--locked-d)!important;--t:var(--locked-ink)!important;filter:none}.answer-line.order .slot{height:auto;min-height:62px;padding:4px 6px 8px}.answer-line.order .slot .tok{min-height:48px}.rail a.tab{text-decoration:none}@media (min-width:1080px){.side{padding-top:10px}}:focus-visible{outline:3px solid var(--sky);outline-offset:3px}.big-card{transition:transform var(--dur-1),box-shadow var(--dur-2),border-color var(--dur-2)}@media (hover:hover){.big-card:hover:not(:disabled){border-color:var(--line-2);box-shadow:var(--shadow-2)}}.page-sub{max-width:60ch}a.btn{text-decoration:none}.plan-tag{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:2px 8px;border-radius:999px;background:#0003;color:#fff;font-size:11px;vertical-align:middle}.plan-tag svg{width:11px;height:11px}.free-unit{display:flex;flex-direction:column;gap:12px;width:100%;margin-top:22px;text-align:left}.fu-card{background:var(--surface);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow-1)}.fu-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.fu-head span,.fu-card small{font-size:13px;color:var(--ink-2)}.fu-bar{height:10px;border-radius:99px;background:var(--surface-3);margin:10px 0}.fu-bar i{display:block;height:100%;width:var(--p);border-radius:inherit;background:var(--ok)}.fu-more{background:#1b2233;color:#fff;border-radius:var(--r-lg);padding:16px;display:flex;flex-direction:column;gap:12px}:root[data-theme=dark] .fu-more{background:var(--surface-3)}.fu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.fu-grid div{background:#ffffff14;border-radius:14px;padding:10px 12px}.fu-grid strong{display:block;font:800 22px/1.2 var(--display)}.fu-grid small{font-size:12px;color:#c3cad9}.fu-more .btn{align-self:flex-start}
