:root{--bg:#f5f4fa;--surface:#ffffff;--surface-2:#eeecf7;--ink:#16142b;--muted:#6b6889;--line:#e4e1ef;--accent:#ff5f1f;--accent-ink:#ffffff;--accent-soft:#ffe9df;--violet:#5b3df5;--violet-soft:#ebe6ff;--ok:#12a26a;--ok-soft:#dcf5ea;--bad:#e5484d;--bad-soft:#fde4e4;--gold:#f5a623;--sky-1:#1b1440;--sky-2:#3b1d5e;--sky-3:#ff7a3d;--shadow:0 1px 2px rgb(22 20 43/.05),0 8px 24px -12px rgb(22 20 43/.18);--display:"Bricolage Grotesque","Manrope",system-ui,sans-serif;--body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;--r-lg:22px;--r-md:16px;--r-sm:12px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d0c18;--surface:#18162b;--surface-2:#221f3a;--ink:#f2f0ff;--muted:#9a96bb;--line:#2a2746;--accent:#ff7334;--accent-soft:#3a1f17;--violet:#8f78ff;--violet-soft:#26204a;--ok:#2fca8a;--ok-soft:#12301f;--bad:#ff6b6f;--bad-soft:#3a1a1c;--shadow:0 1px 2px rgb(0 0 0/.3),0 10px 30px -12px rgb(0 0 0/.6);color-scheme:dark}}:root[data-theme=dark]{--bg:#0d0c18;--surface:#18162b;--surface-2:#221f3a;--ink:#f2f0ff;--muted:#9a96bb;--line:#2a2746;--accent:#ff7334;--accent-soft:#3a1f17;--violet:#8f78ff;--violet-soft:#26204a;--ok:#2fca8a;--ok-soft:#12301f;--bad:#ff6b6f;--bad-soft:#3a1a1c;--shadow:0 1px 2px rgb(0 0 0/.3),0 10px 30px -12px rgb(0 0 0/.6);color-scheme:dark}*{box-sizing:border-box}body,html{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:500 15px/1.5 var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}[tabindex]:focus-visible,button:focus-visible{outline:2px solid var(--violet);outline-offset:2px}h1,h2,h3{font-family:var(--display);margin:0;letter-spacing:-.02em;text-wrap:balance}.app{max-width:440px;margin:0 auto;min-height:100%;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-top:calc(12px + var(--tg-safe-area-inset-top, 0px) + var(--tg-content-safe-area-inset-top, 0px));padding-bottom:104px;display:flex;flex-direction:column;gap:16px}.app.full{padding-bottom:24px}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.eyebrow,.muted{color:var(--muted)}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:10px}.icon{width:20px;height:20px;flex:none}.topbar{display:flex;align-items:center;gap:10px;min-height:44px}.topbar h2{flex:1 1;font-size:20px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.iconbtn{width:40px;height:40px;border-radius:12px;border:0;background:var(--surface);display:grid;place-items:center}.chip,.iconbtn{box-shadow:var(--shadow);flex:none}.chip{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;padding:6px 10px;border-radius:999px;background:var(--surface);font-weight:800;font-size:14px}.chip.flame{color:var(--accent)}.chip.xp{color:var(--violet)}.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:700;background:var(--surface-2);color:var(--muted)}.tag.pro{background:linear-gradient(90deg,var(--gold),var(--accent));color:#fff}.tag.sample{background:var(--violet-soft);color:var(--violet)}.journey{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:20px 18px 18px;color:#fff;background:radial-gradient(120% 60% at 50% 115%,var(--sky-3) 0,rgb(255 122 61/.55) 28%,transparent 60%),linear-gradient(180deg,var(--sky-1) 0,var(--sky-2) 70%,#6b2a55 100%);box-shadow:var(--shadow)}.journey .road{position:absolute;inset:auto 0 0 0;height:80px;pointer-events:none;opacity:.9}.journey>*{position:relative}.journey h1{font-size:26px;line-height:1.1;margin:4px 0 6px}.journey p{margin:0;color:rgb(255 255 255/.78);font-size:14px}.journey .eyebrow{color:rgb(255 255 255/.7)}.journey .cta{margin-top:16px}.btn{text-decoration:none;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border:0;border-radius:var(--r-md);padding:15px 18px;font-weight:800;font-size:16px;background:var(--accent);color:var(--accent-ink);box-shadow:0 6px 18px -8px var(--accent);transition:transform .12s ease}.btn:active{transform:scale(.98)}.btn.light{background:#fff;color:var(--sky-1);box-shadow:none}.btn.ghost{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.btn.violet{background:var(--violet);box-shadow:0 6px 18px -8px var(--violet);color:#fff}.btn[disabled]{opacity:.45}.goal{display:grid;grid-template-columns:auto 1fr;grid-gap:14px;gap:14px;align-items:center;background:var(--surface);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow)}.ring{--p:0;width:64px;height:64px;place-items:center;background:conic-gradient(var(--ok) calc(var(--p) * 1%),var(--surface-2) 0)}.ring,.ring>span{border-radius:50%;display:grid}.ring>span{width:50px;height:50px;background:var(--surface);place-items:center;font-weight:800;font-size:14px}.week{display:flex;gap:6px;margin-top:8px}.week i{flex:1 1;height:6px;border-radius:3px;background:var(--surface-2)}.week i.on{background:var(--accent)}.scroller{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:-16px;padding:4px 16px 8px;scrollbar-width:none}.scroller::-webkit-scrollbar{display:none}.book{scroll-snap-align:start;flex:0 0 72%;border:0;text-align:left;border-radius:var(--r-lg);padding:16px;color:#fff;min-height:150px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow)}.book .lvl{font-family:var(--display);font-size:44px;font-weight:800;line-height:1;letter-spacing:-.04em}.book .meta{font-size:13px;color:rgb(255 255 255/.82)}.book .bar{height:6px;border-radius:3px;background:rgb(255 255 255/.25);overflow:hidden;margin-top:8px}.book .bar i{display:block;height:100%;background:#fff}.b-B1{background:linear-gradient(140deg,#ff8a3d,#ff4f5a)}.b-B2{background:linear-gradient(140deg,#6b4dff,#b04dd8)}.b-C1{background:linear-gradient(140deg,#1d2a6b,#0f8f8f)}.panel{background:var(--surface);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow)}.wotd .word{font-family:var(--display);font-size:24px;font-weight:800}.listbtn{display:flex;align-items:center;gap:12px;width:100%;border:0;background:var(--surface);border-radius:var(--r-md);padding:14px;box-shadow:var(--shadow);text-align:left}.listbtn .ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:none}.listbtn .t{flex:1 1;min-width:0}.listbtn .t b{display:block}.listbtn .t span{font-size:13px;color:var(--muted)}.route{position:relative;padding:8px 0 24px}.route svg.path{position:absolute;inset:0;width:100%;height:100%;z-index:0}.stop{position:relative;z-index:1;display:flex;align-items:center;gap:14px;height:96px}.stop.r{flex-direction:row-reverse;text-align:right}.node{width:64px;height:64px;border-radius:50%;border:0;display:grid;place-items:center;flex:none;background:var(--surface);box-shadow:var(--shadow),inset 0 -4px 0 var(--line);font-family:var(--display);font-weight:800;font-size:22px}.node.done{background:var(--ok);color:#fff;box-shadow:var(--shadow),inset 0 -4px 0 rgb(0 0 0/.15)}.node.current{background:var(--accent);color:#fff;box-shadow:0 0 0 6px var(--accent-soft),inset 0 -4px 0 rgb(0 0 0/.15);animation:pulse 2s ease-in-out infinite}.node.locked{color:var(--muted);background:var(--surface-2);box-shadow:inset 0 -4px 0 var(--line)}@keyframes pulse{50%{box-shadow:0 0 0 11px var(--accent-soft),inset 0 -4px 0 rgb(0 0 0/.15)}}.stop .lbl{min-width:0}.stop .lbl b{display:block;font-size:15px}.stop .lbl span{font-size:13px;color:var(--muted)}.seg{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px;gap:4px;padding:4px;border-radius:14px;background:var(--surface-2)}.seg button{border:0;background:none;padding:10px 6px;border-radius:10px;font-weight:700;color:var(--muted)}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.wordrow{display:grid;grid-template-columns:1fr auto;grid-gap:4px 10px;gap:4px 10px;padding:12px 0;border-bottom:1px solid var(--line)}.wordrow:last-child{border-bottom:0}.wordrow b{font-size:15px}.wordrow .tr{grid-column:1/-1;color:var(--muted);font-size:14px}.speak{border:0;background:var(--violet-soft);color:var(--violet);width:32px;height:32px;border-radius:10px;display:grid;place-items:center}.cardwrap{perspective:1200px;height:340px}.flash{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.2,.8,.2,1);border:0;background:none;padding:0}.flash.flipped{transform:rotateY(180deg)}.face{position:absolute;inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:26px;padding:24px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:10px;box-shadow:var(--shadow)}.face.front{background:var(--surface)}.face.back{background:linear-gradient(160deg,var(--sky-1),var(--sky-2));color:#fff;transform:rotateY(180deg)}.face .w{font-family:var(--display);font-size:30px;font-weight:800;line-height:1.15}.face .hint{position:absolute;bottom:18px;font-size:13px;color:var(--muted)}.face.back .hint{color:rgb(255 255 255/.6)}.two{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.btn.again{background:var(--bad-soft);color:var(--bad);box-shadow:none}.btn.know{background:var(--ok-soft);color:var(--ok);box-shadow:none}.qbar{flex:1 1;height:10px;background:var(--surface-2);overflow:hidden}.qbar,.qbar i{border-radius:5px}.qbar i{display:block;height:100%;background:var(--ok);transition:width .3s ease}.question{font-family:var(--display);font-size:24px;font-weight:800;line-height:1.25;padding:8px 2px 4px}.question .blank{display:inline-block;min-width:64px;border-bottom:3px solid var(--violet);margin:0 2px}.opts{flex-direction:column;gap:10px}.opt,.opts{display:flex}.opt{align-items:center;gap:12px;width:100%;min-height:60px;text-align:left;border:2px solid var(--line);background:var(--surface);border-radius:var(--r-md);padding:14px 16px;font-weight:700;font-size:17px;box-shadow:0 3px 0 var(--line);transition:transform .08s ease}.opt:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}.opt .k{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--surface-2);color:var(--muted);font-size:13px;flex:none}.opt.ok{border-color:var(--ok);background:var(--ok-soft);box-shadow:0 3px 0 var(--ok)}.opt.ok .k{background:var(--ok);color:#fff}.opt.bad{border-color:var(--bad);background:var(--bad-soft);box-shadow:0 3px 0 var(--bad)}.opt.bad .k{background:var(--bad);color:#fff}.opt[disabled]{cursor:default}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:20;padding:18px max(16px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom, 0px)) max(16px,env(safe-area-inset-left,0px));border-radius:24px 24px 0 0;animation:up .25s cubic-bezier(.2,.8,.2,1)}.sheet>div{max-width:408px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.sheet.good{background:var(--ok-soft);color:var(--ok)}.sheet.wrong{background:var(--bad-soft);color:var(--bad)}.sheet h3{font-size:20px}.sheet p{margin:0;color:var(--ink);font-size:14px}.sheet.good .btn{background:var(--ok);box-shadow:none}.sheet.wrong .btn{background:var(--bad);box-shadow:none}.sheet .linkbtn{align-self:center;background:none;border:0;padding:4px 8px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.sheet .linkbtn[disabled]{text-decoration:none;cursor:default}@keyframes up{0%{transform:translateY(100%)}}.result{text-align:center;padding:18px 8px 8px;display:flex;flex-direction:column;align-items:center;gap:8px}.bigring{--p:0;width:150px;height:150px;place-items:center;background:conic-gradient(var(--accent) calc(var(--p) * 1%),var(--surface-2) 0)}.bigring,.bigring>span{border-radius:50%;display:grid}.bigring>span{width:124px;height:124px;background:var(--bg);place-items:center;font-family:var(--display);font-weight:800;font-size:38px;line-height:1}.bigring small{display:block;font-family:var(--body);font-size:13px;color:var(--muted);font-weight:700}.stats3{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px;width:100%}.stat{background:var(--surface);border-radius:var(--r-md);padding:12px 8px;box-shadow:var(--shadow);text-align:center}.stat b{display:block;font-family:var(--display);font-size:22px}.stat span{font-size:12px;color:var(--muted);font-weight:700}.mistake{background:var(--surface);border-radius:var(--r-md);padding:12px 14px;box-shadow:var(--shadow);font-size:14px}.mistake b{color:var(--ok)}.mistake .ex{color:var(--muted);font-size:13px;margin-top:4px}.avatar{width:64px;height:64px;border-radius:20px;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:26px;color:#fff;background:linear-gradient(140deg,var(--violet),var(--accent));flex:none}.bars{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:8px;gap:8px;align-items:end;height:120px;margin-top:12px}.bars div{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.bars i{width:100%;border-radius:6px 6px 3px 3px;background:var(--violet-soft)}.bars i.today{background:var(--violet)}.bars span{font-size:11px;color:var(--muted);font-weight:700}.lb{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.lb:last-child{border-bottom:0}.lb .pos{width:24px;text-align:center;font-weight:800;color:var(--muted)}.lb .pos.p1{color:var(--gold)}.lb .av{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;color:#fff;font-weight:800;flex:none}.lb .nm{flex:1 1;font-weight:700;min-width:0}.lb.me{background:var(--accent-soft);margin-inline:-16px;padding-inline:16px;border-radius:12px;border-bottom:0}.pw-hero{border-radius:var(--r-lg);padding:22px 18px;color:#fff;background:radial-gradient(90% 70% at 85% 0,rgb(245 166 35/.55),transparent 60%),linear-gradient(160deg,var(--sky-1),var(--sky-2))}.pw-hero h1{font-size:28px;line-height:1.1;margin:8px 0}.perk{display:flex;gap:12px;align-items:flex-start}.perk .ic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--violet-soft);color:var(--violet);flex:none}.plan{position:relative;display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:2px solid var(--line);background:var(--surface);border-radius:var(--r-md);padding:16px}.plan.on{border-color:var(--accent);background:var(--accent-soft)}.plan .radio{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);flex:none}.plan.on .radio{border:7px solid var(--accent)}.plan .p{flex:1 1}.plan .p b{display:block;font-size:16px}.plan .price{font-family:var(--display);font-weight:800;font-size:18px;text-align:right}.plan .price small{display:block;font-family:var(--body);font-size:12px;color:var(--muted);font-weight:600}.plan .badge{position:absolute;top:-10px;right:14px;background:var(--accent);color:#fff;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px}.paym{gap:8px;flex-wrap:wrap;justify-content:center}.ob,.paym{display:flex}.ob{min-height:calc(100vh - 40px);flex-direction:column;gap:18px}.ob>:last-child{margin-top:auto;padding-bottom:44px}.ob .dots{display:flex;gap:6px}.ob .dots i{height:6px;flex:1 1;border-radius:3px;background:var(--surface-2)}.ob .dots i.on{background:var(--accent)}.choice{display:flex;align-items:center;gap:14px;width:100%;border:2px solid var(--line);background:var(--surface);border-radius:var(--r-md);padding:14px;text-align:left}.choice.on{border-color:var(--violet);background:var(--violet-soft)}.choice .lv{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-family:var(--display);font-weight:800;color:#fff;flex:none;font-size:18px}.choice b{display:block}.choice span{font-size:13px;color:var(--muted)}.ob-hero{flex:1 1;border-radius:28px;min-height:300px;position:relative;overflow:hidden;padding:24px;color:#fff;display:flex;flex-direction:column;justify-content:flex-end;background:radial-gradient(130% 55% at 50% 110%,var(--sky-3) 0,rgb(255 122 61/.5) 30%,transparent 62%),linear-gradient(180deg,var(--sky-1),var(--sky-2) 75%,#6b2a55)}.ob-hero h1{font-size:34px;line-height:1.05}.ob-hero p{color:rgb(255 255 255/.8);margin:8px 0 0}.ob-hero .road{position:absolute;inset:auto 0 0 0;height:120px;opacity:.9}.ob-hero>:not(.road){position:relative}.stars{position:absolute;inset:0;background-image:radial-gradient(1.5px 1.5px at 20% 20%,#fff8,transparent),radial-gradient(1px 1px at 70% 12%,#fff9,transparent),radial-gradient(1.5px 1.5px at 85% 35%,#fff6,transparent),radial-gradient(1px 1px at 40% 40%,#fff7,transparent),radial-gradient(1px 1px at 10% 55%,#fff5,transparent)}.desti{display:block;flex:none}.desti.bob{animation:bob 2.4s ease-in-out infinite}@keyframes bob{50%{transform:translateY(-5px)}}.say{position:relative;border-radius:16px;padding:10px 14px;box-shadow:var(--shadow);font-weight:700;font-size:14px}.say,.say:before{background:var(--surface)}.say:before{content:"";position:absolute;left:-6px;top:18px;width:12px;height:12px;transform:rotate(45deg)}.confetti{position:fixed;inset:0;pointer-events:none;z-index:50}.combo{align-self:flex-start;font-weight:800;font-size:13px;color:var(--accent);background:var(--accent-soft);padding:4px 10px;border-radius:999px;animation:fade .25s ease}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:10;padding:8px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom, 0px)) max(16px,env(safe-area-inset-left,0px));background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line)}.tabbar nav{max-width:440px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr)}.tabbar button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:11px;font-weight:700;color:var(--muted)}.tabbar button.on{color:var(--accent)}.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom, 0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;font-weight:700;font-size:14px;z-index:40;max-width:calc(100% - 32px);text-align:center}.fade{animation:fade .25s ease}@keyframes fade{0%{opacity:.4;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}