@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--n0: #2b76ee;--n1: #e3438a;--n2: #e8690c;--n3: #1c9b55;--n4: #7547d6;--unknown: #b4aed3;--stim: #f4a81d;--removed: #d9d6e8;--ink: #2b2840;--ink-soft: #6c6889;--ink-faint: #a7a3c0;--line: #e6e3f2;--surface: #ffffff;--surface-tint: #f4f2fb;--sky-1: #7ec8ff;--sky-2: #8f9cff;--sky-3: #b893ff;--bg: #eef0fb;--success: #1c9b55;--attention: #e98a00;--font: "Nunito Variable", "Nunito", ui-rounded, "SF Pro Rounded", system-ui, sans-serif;--fs-xs: .8125rem;--fs-sm: .9375rem;--fs-md: 1.125rem;--fs-lg: 1.5rem;--fs-xl: 2.25rem;--r-sm: 10px;--r-md: 16px;--r-lg: 24px;--r-pill: 999px;--shadow-card: 0 2px 0 rgba(43, 40, 64, .04), 0 14px 34px rgba(60, 48, 140, .18);--shadow-press: 0 4px 0 rgba(43, 40, 64, .16);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-pop: cubic-bezier(.175, .885, .32, 1.275);--t-fast: .16s;--t-med: .3s;--t-flood: .4s;--t-toss: .5s;--t-step: .3s}:root{--brand: #5a4fe0;--brand-deep: #4136b8;--brand-soft: #ece9ff;--success-deep: #137a42;--danger: #d63b52;--danger-deep: #a8243a;--bg-grad: linear-gradient(165deg, #e8f2ff 0%, #efeaff 52%, #fdeff6 100%);--page-pad: 16px;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}html{font-size:clamp(16px,.55vw + 13.5px,19px)}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button,input{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}button:disabled{cursor:default}:focus-visible{outline:3px solid var(--brand);outline-offset:3px}h1,h2,h3{margin:0;line-height:1.15;font-weight:900;letter-spacing:-.01em}h1{font-size:clamp(1.7rem,6vw,2.3rem)}h2{font-size:1.45rem}h3{font-size:1.05rem}p{margin:0;line-height:1.45}.muted{color:var(--ink-soft)}.small{font-size:var(--fs-sm)}.lede{font-size:var(--fs-md);color:var(--ink-soft);max-width:30em;text-align:center}.app{min-height:100%}.screen{width:100%;max-width:600px;min-height:100dvh;margin:0 auto;padding:calc(env(safe-area-inset-top) + 12px) calc(env(safe-area-inset-right) + var(--page-pad)) calc(env(safe-area-inset-bottom) + 24px) calc(env(safe-area-inset-left) + var(--page-pad));display:flex;flex-direction:column;gap:18px;animation:screen-in .26s var(--ease-out)}.screen.center{align-items:center;justify-content:center;text-align:center;gap:16px}@keyframes screen-in{0%{opacity:0;transform:translateY(8px)}}.topbar{display:flex;align-items:center;gap:10px;min-height:52px}.topbar-title{flex:1;text-align:center;font-size:1.25rem}.topbar-spacer{width:44px;flex:none}.topbar-actions{margin-left:auto;display:flex;gap:6px}.btn{--b: var(--brand);--bd: var(--brand-deep);--fg: #fff;display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:var(--r-pill);background:var(--b);color:var(--fg);font-weight:800;letter-spacing:.01em;box-shadow:0 4px 0 var(--bd);transform:translateY(0);transition:transform .12s var(--ease-out),box-shadow .12s var(--ease-out),background .16s ease,opacity .16s ease}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--bd)}.btn:disabled{opacity:.45}.btn-sm{padding:8px 14px;font-size:var(--fs-sm);box-shadow:0 3px 0 var(--bd)}.btn-md{padding:12px 22px;font-size:1rem}.btn-lg{padding:15px 30px;font-size:1.15rem}.btn-xl{padding:18px 34px;font-size:1.3rem;box-shadow:0 5px 0 var(--bd)}.btn-wide{width:100%}.btn-secondary{--b: var(--surface);--bd: #d6d2ea;--fg: var(--ink)}.btn-ghost{--b: transparent;--bd: transparent;--fg: var(--brand);box-shadow:none}.btn-ghost:active:not(:disabled){box-shadow:none}.btn-success{--b: var(--success);--bd: var(--success-deep)}.btn-danger{--b: #fff;--bd: #f2c6cd;--fg: var(--danger)}.icon-btn{width:44px;height:44px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;background:#ffffffd9;color:var(--ink);box-shadow:0 2px 8px #3c308c1a;transition:transform .12s var(--ease-out)}.icon-btn:active{transform:scale(.92)}.chip{display:inline-flex;align-self:flex-start;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:800;text-transform:uppercase;letter-spacing:.06em;background:var(--brand-soft);color:var(--brand)}.chip-new{background:#fff1cc;color:#8a5600}.chip-locked{background:var(--surface-tint);color:var(--ink-soft)}.chip-learned{background:#ddf3e5;color:var(--success-deep)}.chip-fluent{background:#fff1cc;color:#8a5600}.panel{background:var(--surface);border-radius:var(--r-lg);padding:18px;box-shadow:0 2px #2b284008,0 8px 24px #3c308c14;display:flex;flex-direction:column;gap:12px}.panel-row{flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:center}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px}.stat{background:var(--surface);border:0;border-radius:var(--r-md);padding:14px 10px;display:flex;flex-direction:column;align-items:center;gap:2px;box-shadow:0 6px 18px #3c308c14;text-align:center}.stat b{font-size:1.7rem;font-weight:900;font-variant-numeric:tabular-nums}.stat b small{font-size:1rem;color:var(--ink-soft)}.stat span{font-size:var(--fs-xs);color:var(--ink-soft);font-weight:700}.stat-link{transition:transform .12s var(--ease-out)}.stat-link:active{transform:scale(.97)}.big-number{font-size:2.4rem;font-weight:900;font-variant-numeric:tabular-nums}.delta{margin-left:8px;font-size:1.1rem;color:var(--success)}.progress{flex:1;height:14px;border-radius:var(--r-pill);background:#2b284014;overflow:hidden}.progress-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#7ad69a,var(--success));transition:width .6s var(--ease-out);min-width:14px}.ring{position:relative;display:grid;place-items:center}.ring svg{position:absolute;top:0;right:0;bottom:0;left:0}.ring-fill{transition:stroke-dashoffset .8s var(--ease-out)}.ring-inner{position:relative;font-weight:800}.fact-chips{display:flex;flex-wrap:wrap;gap:8px}.fact-chip{padding:6px 12px;border-radius:var(--r-pill);background:var(--surface-tint);font-weight:800;font-variant-numeric:tabular-nums}.fact-chip small{color:var(--ink-soft);font-weight:700;margin-left:2px}.fact-chip.warn{background:#fff1e6}.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:var(--fs-xs);color:var(--ink-soft);font-weight:700}.legend i{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:5px;vertical-align:-1px}.welcome{justify-content:space-between;padding-top:max(10vh,40px)}.welcome-hero{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}.welcome-hero h1{font-size:clamp(2.4rem,10vw,3.2rem)}.welcome-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px}.profiles{justify-content:center;align-items:center}.profiles-head{display:flex;flex-direction:column;align-items:center;gap:10px}.screen.profiles{max-width:800px}.profile-grid{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(124px,172px));justify-content:center;gap:14px}.profile-tile{border:0;background:var(--surface);border-radius:var(--r-lg);padding:18px 10px 14px;display:flex;flex-direction:column;align-items:center;gap:10px;font-weight:800;font-size:1.1rem;box-shadow:0 4px #e2def3,0 10px 24px #3c308c1a;transition:transform .14s var(--ease-out)}.profile-tile:active{transform:translateY(3px)}.profile-add{background:#ffffff8c;box-shadow:none;border:2.5px dashed #c9c3e6;color:var(--ink-soft)}.add-circle{width:88px;height:88px;border-radius:50%;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand)}.grownups{border:0;background:none;color:var(--ink-soft);font-weight:800;display:inline-flex;gap:6px;align-items:center;padding:10px}.avatar-ring{border-radius:50%;box-shadow:0 0 0 4px #fff,0 0 0 7px var(--c)}.steps{flex:1;display:flex;justify-content:center;gap:8px}.steps span{width:34px;height:8px;border-radius:4px;background:#2b28401f;transition:background .2s}.steps span.on{background:var(--brand)}.np-step{flex:1;display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center;padding-top:4vh}.np-step>.btn{margin-top:auto;position:sticky;bottom:calc(env(safe-area-inset-bottom) + 12px)}@media (max-height: 720px){.np-step{gap:12px;padding-top:0}.np-step>.avatar{width:84px;height:84px}.np-step h1{font-size:1.5rem}.animal-grid{gap:6px}.animal-choice{padding:4px}.animal-choice .avatar{width:52px;height:52px}.grade-choice{padding:12px 8px}.welcome-hero .mascot{width:110px;height:110px}}.text-input{width:100%;font-size:1.6rem;font-weight:800;text-align:center;padding:16px;border-radius:var(--r-md);border:3px solid var(--line);background:var(--surface);outline:none;transition:border-color .16s}.text-input:focus{border-color:var(--brand)}.animal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:100%;max-width:360px}.animal-grid.small{grid-template-columns:repeat(6,1fr)}.animal-choice{border:0;background:var(--surface);border-radius:var(--r-md);padding:8px;display:grid;place-items:center;box-shadow:0 3px #e2def3;transition:transform .12s var(--ease-out),box-shadow .12s}.animal-choice.on{box-shadow:0 0 0 3px var(--brand);transform:scale(1.04)}.color-row{display:flex;gap:14px}.color-choice{width:40px;height:40px;border-radius:50%;border:0;transition:transform .14s var(--ease-pop)}.color-choice.on{transform:scale(1.18);box-shadow:0 0 0 3px #fff,0 0 0 6px var(--ink)}.grade-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;width:100%}.grade-choice{border:0;border-radius:var(--r-md);padding:16px 10px;background:var(--surface);font-weight:800;font-size:1.05rem;box-shadow:0 3px #e2def3}.grade-choice.on{background:var(--brand);color:#fff;box-shadow:0 3px 0 var(--brand-deep)}.who{display:flex;align-items:center;gap:10px;border:0;background:#ffffffb3;padding:4px 16px 4px 4px;border-radius:var(--r-pill);font-weight:800;font-size:1.05rem}.home-main{flex:1;display:flex;flex-direction:column;gap:18px}@media (min-height: 900px){.home-main{justify-content:center;padding-bottom:6vh}}.mascot-btn{border:0;background:none;padding:0;border-radius:50%}.hello{display:flex;align-items:center;gap:8px;padding-top:4px}.bubble{position:relative;background:var(--surface);border-radius:22px;padding:14px 18px;font-weight:800;font-size:1.1rem;line-height:1.3;box-shadow:0 8px 22px #3c308c1a;animation:pop-in .42s var(--ease-pop) both .12s}.bubble:before{content:"";position:absolute;left:-9px;top:50%;margin-top:-9px;border:9px solid transparent;border-right-color:var(--surface);border-left:0}@media (max-height: 720px){.home .hello .mascot{width:88px;height:88px}.home-main{gap:12px}.hero-card{padding:18px}}@keyframes pop-in{0%{opacity:0;transform:scale(.85)}}.hero-card{background:var(--surface);border-radius:28px;padding:22px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow-card)}.hero-card .btn-xl{margin-top:8px}.hero-done{background:linear-gradient(160deg,#fff,#f3fbf6)}.mini-progress{height:10px;border-radius:5px;background:#2b284014;overflow:hidden}.mini-progress div{height:100%;background:var(--success);border-radius:5px}.next-star{display:flex;align-items:center;gap:8px;width:100%;margin-top:10px;padding:10px 14px;border:0;border-radius:var(--r-md);background:#fff6d6;color:#8a5600;font:inherit;font-size:var(--fs-sm);font-weight:700;text-align:left;cursor:pointer}.next-star svg{flex:none}.home-stats{display:flex;flex-direction:column;gap:14px}.week{display:flex;flex-direction:column;gap:6px;align-items:center}.week-dots{display:flex;gap:10px}.week-day{display:flex;flex-direction:column;align-items:center;gap:4px}.week-day small{font-size:.7rem;font-weight:800;color:var(--ink-faint)}.week-dot{width:26px;height:26px;border-radius:50%;background:#2b284014;transition:background .2s}.week-day.on .week-dot{background:#9edbb2}.week-day.full .week-dot{background:var(--success);box-shadow:inset 0 -3px #0000001f}.week-day.today small{color:var(--ink)}.week-day.today .week-dot{outline:2.5px solid var(--ink-faint);outline-offset:2px}@media (min-width: 900px){.home{max-width:1040px}.home-main{display:grid;grid-template-columns:1.15fr 1fr;grid-template-rows:auto auto;column-gap:36px;row-gap:18px;align-content:center;align-items:start}.home-main .mascot-btn{border:0;background:none;padding:0;border-radius:50%}.hello,.home-main .hero-card{grid-column:1}.home-main .home-stats{grid-column:2;grid-row:1 / span 2;align-self:center;background:#ffffff8c;border-radius:28px;padding:24px}}.mascot{flex:none;overflow:visible}.mascot-body{transform-origin:60px 106px;animation:mascot-breathe 3.2s ease-in-out infinite}.mascot-cheer .mascot-body{animation:mascot-hop .9s var(--ease-out) infinite}.mascot-wave .mascot-wave{transform-origin:98px 62px;animation:mascot-wave 1.4s ease-in-out infinite}.mascot-z{animation:mascot-z 2.4s ease-in-out infinite}@keyframes mascot-breathe{50%{transform:scale(1.03,.97)}}@keyframes mascot-hop{0%,to{transform:translateY(0) scale(1)}30%{transform:translateY(-12px) scale(.98,1.03)}60%{transform:translateY(0) scale(1.05,.95)}}@keyframes mascot-wave{0%,60%,to{transform:rotate(0)}20%{transform:rotate(-14deg)}40%{transform:rotate(10deg)}}@keyframes mascot-z{50%{opacity:.3;transform:translateY(-4px)}}.session{max-width:none;height:100dvh;min-height:0;gap:8px;padding-bottom:calc(env(safe-area-inset-bottom) + 14px);overflow:hidden}.session-bar{display:flex;align-items:center;gap:14px;width:min(100%,980px);margin:0 auto}.session-count{min-width:52px;text-align:right;font-weight:900;font-variant-numeric:tabular-nums}.session-count small{color:var(--ink-faint);font-weight:800}.session-count.small{font-size:var(--fs-sm);color:var(--ink-soft);min-width:auto}.session-play{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:14px;width:100%}.card-slot{position:relative;width:min(100%,680px,calc((100dvh - 440px)*1.45));min-width:min(100%,300px);margin:auto 0;padding-top:18px}.card-ghost{position:absolute;top:18px;right:0;bottom:0;left:0;border-radius:var(--r-lg);background:var(--surface);box-shadow:0 6px 18px #3c308c1a}.card-ghost-1{transform:translateY(-12px) scale(.94);opacity:.8}.card-ghost-2{transform:translateY(-23px) scale(.88);opacity:.5}.card-motion{position:relative;z-index:2}.peek{position:absolute;z-index:1;right:8%;top:18px;transform:translateY(20px) scale(.8);opacity:0;transition:transform .42s var(--ease-pop),opacity .2s ease}.peek.up{transform:translateY(-62px) scale(1);opacity:1}@media (max-height: 700px){.peek.up{transform:translateY(-40px) scale(.8)}}.card-in{animation:card-in .38s var(--ease-out)}.card-out{animation:card-out .3s ease-in forwards}@keyframes card-in{0%{transform:translateY(-14px) scale(.95);opacity:.6}}@keyframes card-out{to{transform:translate(30px,90px) rotate(5deg);opacity:0}}.session-input{width:min(100%,420px,max(360px,52vw));display:flex;flex-direction:column;align-items:center;gap:12px}.nudge{text-align:center;text-wrap:balance;max-width:100%;font-weight:700;color:#8a5600;background:#fff4dc;padding:8px 16px;border-radius:var(--r-pill);animation:pop-in .3s var(--ease-pop)}.help-chip{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:0;border-radius:var(--r-pill);background:#fff;color:#8a5600;font:inherit;font-weight:800;box-shadow:0 4px 14px #3c308c24;cursor:pointer;animation:pop-in .36s var(--ease-pop)}.help-chip svg{color:#e9a400}.help-chip:active{transform:scale(.96)}.nudge-calm{color:var(--ink-soft);background:#fffc}@media (min-width: 760px) and (orientation: landscape){.session-play.intro{flex-direction:column;gap:12px}.session-play.intro .card-slot{width:min(56vw,560px,calc((100dvh - 330px)*1.45));margin:0}.session-play.intro .intro-head{width:min(56vw,560px,calc((100dvh - 330px)*1.45))}.session-play.intro .session-input{width:auto}.session-play{flex-direction:row;justify-content:center;align-items:center;gap:clamp(28px,5vw,72px);max-width:1100px;margin:0 auto}.card-slot{width:min(58vw,740px,calc((100dvh - 150px)*1.45));margin:0}.session-input{width:min(36vw,380px)}}@media (orientation: landscape) and (max-height: 520px){.session-play.intro{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head card" "actions card";align-content:center;column-gap:28px;row-gap:14px}.session-play.intro .intro-head{grid-area:head;width:auto;align-self:end}.session-play.intro .card-slot{grid-area:card;width:calc((100dvh - 110px)*1.45);min-width:0;margin:0}.session-play.intro .session-input{grid-area:actions;width:auto;justify-content:flex-start;align-self:start}.np-step>.avatar{display:none}.np-step{gap:8px}.np-step h1{font-size:1.3rem}.np-step .animal-grid{grid-template-columns:repeat(6,1fr);max-width:420px}.np-step .animal-choice .avatar{width:40px;height:40px}.np-step .grade-grid{grid-template-columns:repeat(3,1fr);max-width:560px}.np-step .grade-choice{padding:10px 8px}.welcome{padding-top:16px}.welcome-hero{gap:6px}.welcome-hero .mascot{width:80px;height:80px}.welcome-hero h1{font-size:2.2rem}.home-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-areas:"hello hero" "stats hero";column-gap:24px;row-gap:10px;align-content:center}.home-main .hello{grid-area:hello}.home-main .hero-card{grid-area:hero;align-self:center}.home-main .home-stats{grid-area:stats}.home .hello .mascot{width:64px;height:64px}.screen.home{max-width:860px;gap:10px}.home-main .hero-card{padding:16px 18px}.summary-hero{padding-top:0;gap:2px}.summary-hero .mascot{width:64px;height:64px}}.coach{position:relative;font-weight:800;color:#fff;background:var(--brand);padding:10px 18px;border-radius:var(--r-pill);box-shadow:0 6px 16px #5a4fe059;animation:coach-bob 1.6s ease-in-out infinite}.coach:after{content:"";position:absolute;left:50%;bottom:-8px;margin-left:-8px;border:8px solid transparent;border-top-color:var(--brand);border-bottom:0}@keyframes coach-bob{50%{transform:translateY(-4px)}}.new-ribbon{position:absolute;z-index:3;top:-12px;left:18px;padding:4px 12px;border-radius:var(--r-pill);background:#fff1cc;color:#8a5600;font-weight:900;font-size:var(--fs-xs);letter-spacing:.04em;text-transform:uppercase;animation:pop-in .36s var(--ease-pop) both .2s}.quick-badge{display:flex;align-items:center;gap:4px;position:absolute;z-index:3;top:-15px;left:18px;padding:6px 12px;border-radius:var(--r-pill);background:#fff;color:#8a5600;font-weight:900;font-size:var(--fs-sm);box-shadow:0 4px 14px #00000026;animation:quick-pop .9s var(--ease-pop) both .25s}@keyframes quick-pop{0%{opacity:0;transform:scale(.4) rotate(-12deg)}60%{transform:scale(1.12) rotate(4deg)}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.keypad{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.key{height:clamp(52px,8.4dvh,78px);border:0;border-radius:18px;background:var(--surface);font-size:1.75rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink);display:grid;place-items:center;box-shadow:0 4px #dcd8ee;transition:transform 90ms var(--ease-out),box-shadow 90ms var(--ease-out),background .16s,opacity .16s}.key:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #dcd8ee}.key:disabled{opacity:.5}.key-soft{background:var(--surface-tint);color:var(--ink-soft)}.key-primary{color:#fff;background:var(--brand);box-shadow:0 4px 0 var(--brand-deep)}.key-primary:active:not(:disabled){box-shadow:0 1px 0 var(--brand-deep)}.key-primary:disabled{opacity:1;background:#c9c4ef;box-shadow:0 4px #b3ade4}.key-next{background:var(--success);box-shadow:0 4px 0 var(--success-deep);animation:pop-in .26s var(--ease-pop)}.choices{display:flex;flex-direction:column;gap:10px;width:100%}.choices-row{display:flex;justify-content:center;gap:10px}.choice{width:clamp(54px,15vw,86px);height:clamp(54px,15vw,86px);border-radius:50%;border:0;background:var(--surface);color:var(--c);font-size:1.8rem;font-weight:900;box-shadow:0 4px #dcd8ee;transition:transform .1s var(--ease-out),opacity .2s,background .2s}.choice:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #dcd8ee}.choice-wrong{opacity:.3;text-decoration:line-through}.choice-right{background:var(--c);color:#fff;box-shadow:0 4px #0003;opacity:1;animation:pop-in .3s var(--ease-pop)}.hear-again{flex:none;width:1.3em;height:1.3em;margin-left:.1em;border:0;border-radius:50%;display:inline-grid;place-items:center;font-size:.8em;background:var(--surface-tint);color:var(--brand);cursor:pointer}.hear-again svg{width:.62em;height:.62em}.hear-again:active{transform:scale(.94)}.flooded .hear-again{background:#ffffff40;color:#fff}.pic-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%}.pic-choice{position:relative;border:0;padding:6px;border-radius:var(--r-md);background:var(--surface);box-shadow:0 4px #dcd8ee;transition:transform .1s var(--ease-out),opacity .2s,box-shadow .2s}.pic-choice .viz{pointer-events:none;overflow:hidden;width:100%;height:clamp(56px,18vw,96px)}.pic-choice:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #dcd8ee}.pic-choice.choice-wrong{text-decoration:none}.pic-choice-right{box-shadow:0 0 0 4px var(--success),0 4px #00000026;animation:pop-in .3s var(--ease-pop)}.pic-choice-num{position:absolute;top:-12px;right:-8px;min-width:30px;height:30px;padding:0 8px;border-radius:var(--r-pill);display:grid;place-items:center;background:var(--success);color:#fff;font-weight:900;animation:pop-in .3s var(--ease-pop)}.fc-stage{position:relative}.conceal{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:var(--surface);border-radius:16px;animation:conceal-in .24s var(--ease-out)}@keyframes conceal-in{0%{opacity:0}}.conceal-q{width:2.4em;height:2.4em;border-radius:50%;display:grid;place-items:center;font-size:clamp(2rem,9cqw,3.4rem);font-weight:900;color:var(--brand);background:var(--brand-soft)}.fc-tappable{cursor:pointer}.fc-beckon{border-radius:18px;animation:beckon 1.8s ease-in-out infinite}@keyframes beckon{0%,to{box-shadow:inset 0 0 0 2px #5a4fe014}50%{box-shadow:inset 0 0 0 3px #5a4fe04d}}.coach-soft{display:inline-flex;align-items:center;gap:6px;color:var(--brand);background:#fff;box-shadow:0 6px 16px #5a4fe02e}.coach-soft:after{border-top-color:#fff}.replay{position:absolute;right:4px;bottom:4px;width:46px;height:46px;border-radius:50%;border:0;background:var(--surface-tint);color:var(--ink-soft);display:grid;place-items:center}.pick-zones{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr 1fr;gap:4%;padding:2% 3%}.pick-zone{border:0;border-radius:22px;background:transparent;transition:background .14s,transform .12s}.pick-zone:hover{background:#5a4fe00f}.pick-zone:active{transform:scale(.97)}.pick-zone.picked-wrong{background:#fff9}.intro-head{margin-top:8px;width:min(100%,540px);display:flex;flex-direction:column;gap:6px;text-align:left;animation:pop-in .36s var(--ease-pop)}.intro-head p{font-size:1.1rem;font-weight:700;color:var(--ink-soft)}.intro-actions{flex-direction:row;justify-content:center;flex-wrap:wrap}.dots{flex:1;display:flex;gap:6px;justify-content:center}.dots span{width:10px;height:10px;border-radius:50%;background:#2b28401f}.dots span.on{background:var(--brand)}.summary-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding-top:2vh}.grow-row{display:grid;grid-template-columns:minmax(0,1fr) 1.3fr 3em;align-items:center;gap:10px;font-weight:800}.grow-row small{text-align:right;color:var(--ink-soft);font-variant-numeric:tabular-nums}.summary-actions{position:sticky;bottom:0;margin:auto calc(-1 * var(--page-pad)) calc(-1*env(safe-area-inset-bottom) - 24px);padding:16px var(--page-pad) calc(env(safe-area-inset-bottom) + 18px);background:linear-gradient(to bottom,#fdeff600,#fbeff6 40%);z-index:5}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:60}.tabs{display:flex;gap:6px;padding:4px;background:#ffffffa6;border-radius:var(--r-pill)}.tab{flex:1;border:0;background:transparent;padding:10px 6px;border-radius:var(--r-pill);font-weight:800;font-size:var(--fs-sm);color:var(--ink-soft);transition:background .16s,color .16s}.tab.on{background:var(--surface);color:var(--ink);box-shadow:0 2px 8px #3c308c1f}.map-scroll{margin:0 calc(-1 * var(--page-pad))}.map-svg{display:block;width:100%;max-width:560px;margin:0 auto;overflow:visible}.map-edge{fill:none;stroke:#d8d4ea;stroke-width:4;stroke-linecap:round;stroke-dasharray:2 9}.map-edge.on{stroke:#b8b0ec;stroke-dasharray:none}.map-node{cursor:pointer;outline:none}.map-halo{fill:transparent;transition:fill .16s}.map-node:focus-visible .map-halo,.map-node:hover .map-halo{fill:#5a4fe01f}.map-disc{fill:var(--surface);stroke:var(--line);stroke-width:6}.map-ring{fill:none;stroke:var(--brand);stroke-width:6;stroke-linecap:round}.map-node.learning .map-halo{fill:#5a4fe024;animation:map-pulse 2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes map-pulse{50%{transform:scale(1.12);fill:#5a4fe00f}}.map-node.learned .map-ring{stroke:var(--success)}.map-node.fluent .map-disc{fill:#ffd34d;stroke:#f4b400}.map-node.fluent .map-ring{stroke:#f4b400}.map-node.locked .map-disc{fill:#f1eff8}.map-icon{overflow:visible;color:var(--ink-soft);pointer-events:none}.map-icon>*{display:block;margin:auto}.map-node.fluent .map-icon{color:#fff}.map-glyph{display:grid;place-items:center;width:52px;height:28px;font-size:15px;font-weight:900;letter-spacing:-.02em;white-space:nowrap;color:var(--ink)}.map-node.learning .map-icon,.map-node.ready .map-icon,.map-node.learning .map-glyph,.map-node.ready .map-glyph{color:#5a4fe0}.node-count{margin:0 0 10px;font-weight:800;font-size:var(--fs-sm);color:var(--ink)}.map-label{font-family:var(--font);font-size:13px;font-weight:800;fill:var(--ink);paint-order:stroke;stroke:#f3eefc;stroke-width:6px;stroke-linejoin:round}.map-node.locked .map-label{fill:var(--ink-faint)}.node-facts{display:flex;flex-wrap:wrap;gap:6px;max-height:40dvh;overflow:auto}.node-fact{padding:5px 10px;border-radius:10px;font-weight:800;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--b) 35%,white);border-left:5px solid var(--b)}.unlocked{background:linear-gradient(135deg,#fff8e1,#fff1f7);border:2px solid #ffe08a}.unlocked h3{display:flex;align-items:center;gap:8px}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.skill-chip{padding:8px 14px;border-radius:var(--r-pill);background:#fff;font-weight:800;box-shadow:0 2px 8px #3c308c1a}.star-chip{display:inline-flex;align-items:center;gap:6px;background:#fff6d6;color:#8a5600;animation:pop-in .42s var(--ease-pop) both .6s}.star-chip svg{color:#f4b400}.new-today{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:var(--fs-sm);font-weight:800;color:#8a5600}.new-today .chip{align-self:auto}.unlock-note{background:var(--surface-tint);padding:10px 14px;border-radius:var(--r-md)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#1e184659;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;animation:fade-in .18s ease}@keyframes fade-in{0%{opacity:0}}.sheet{width:min(100%,560px);max-height:88dvh;overflow:auto;background:var(--surface);border-radius:28px 28px 0 0;padding:10px 22px calc(env(safe-area-inset-bottom) + 22px);box-shadow:0 -10px 40px #1e184633;animation:sheet-up .28s var(--ease-out)}@keyframes sheet-up{0%{transform:translateY(40px);opacity:0}}@media (min-width: 700px){.sheet-backdrop{align-items:center}.sheet{border-radius:28px}}.sheet-grip{width:44px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 12px}.sheet-body{display:flex;flex-direction:column;gap:12px}.sheet-body.center{align-items:center;text-align:center}.sheet-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}.sheet-body.center .sheet-actions{justify-content:center}.gate-body{flex:1;display:flex;flex-direction:column;align-items:center;gap:16px;max-width:380px;width:100%;margin:0 auto}.gate-input{width:100%;height:64px;border-radius:var(--r-md);background:var(--surface);display:grid;place-items:center;font-size:2rem;font-weight:900;letter-spacing:.2em;border:3px solid var(--line)}.gate-input.wrong{border-color:var(--danger);animation:fc-shake .45s}.parent{max-width:820px}.learner-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.learner-tab{display:flex;align-items:center;gap:8px;border:0;background:#fff9;padding:4px 14px 4px 4px;border-radius:var(--r-pill);font-weight:800;white-space:nowrap}.learner-tab.on{background:var(--surface);box-shadow:0 0 0 2.5px var(--brand)}.parent-body{display:flex;flex-direction:column;gap:14px}.spark{display:grid;grid-template-columns:repeat(14,1fr);gap:6px;height:110px;align-items:end}.spark-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%}.spark-col small{font-size:.65rem;font-weight:800;color:var(--ink-faint)}.spark-bar{width:100%;max-width:26px;border-radius:6px 6px 3px 3px;background:#9edbb2}.spark-bar.full{background:var(--success)}.track-row{display:flex;flex-direction:column;gap:6px}.track-row-head{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.seg{display:flex;flex-wrap:wrap;gap:6px}.seg button{border:0;padding:8px 12px;border-radius:var(--r-pill);background:var(--surface-tint);font-weight:800;font-size:var(--fs-sm);color:var(--ink-soft)}.seg button.on{background:var(--brand);color:#fff}.setting{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-weight:700;padding:6px 0;border-bottom:1px solid var(--line)}.setting:last-of-type{border-bottom:0}.setting.toggle input{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;width:52px;height:30px;border-radius:15px;background:#d9d5ea;cursor:pointer;transition:background .18s ease;flex:none}.setting.toggle input:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 4px #0000002e;transition:transform .22s var(--ease-pop)}.setting.toggle input:checked{background:var(--success)}.setting.toggle input:checked:after{transform:translate(22px)}.parent .stat-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.learner-row{display:flex;align-items:center;gap:12px}.learner-row>div{flex:1}.btn-row{display:flex;gap:10px;flex-wrap:wrap}.how summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}.how summary:after{content:"+";font-weight:900;font-size:1.3rem;color:var(--ink-soft)}.how[open] summary:after{content:"–"}.how summary::-webkit-details-marker{display:none}.how ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px;line-height:1.45;color:var(--ink-soft)}.how b{color:var(--ink)}.danger-zone h3{color:var(--danger)}.fgrid-wrap{overflow-x:auto}.fgrid{display:grid;gap:2px;min-width:300px;font-variant-numeric:tabular-nums}.fgrid-head,.fgrid-corner{font-size:.68rem;font-weight:800;color:var(--ink-soft);display:grid;place-items:center}.fgrid-corner{color:var(--ink);font-size:.9rem}.fgrid-cell{aspect-ratio:1;border:0;border-radius:4px;padding:0;min-width:0}.fgrid-cell:hover{outline:2px solid var(--ink);outline-offset:1px}.fgrid-caption{margin-top:6px}.install-tip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 12px;padding:10px 14px;border-radius:var(--r-md);background:var(--surface-tint)}.install-tip p{flex:1 1 220px;margin:0}.fact-big{font-size:2rem}.fact-skill{margin:-6px 0 12px}.fact-picture{width:min(100%,320px);margin:0 auto 14px;pointer-events:none}.facts-dl{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:0}.facts-dl dt{color:var(--ink-soft);font-weight:700}.facts-dl dd{margin:0;font-weight:800}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.viz{display:block;width:100%;height:auto;overflow:visible;font-family:var(--font);--x0: 0ms}.viz text{font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}.viz .vf{fill:var(--c);transition:fill var(--t-flood) ease,fill-opacity var(--t-flood) ease,opacity .26s var(--ease-out) var(--delay, 0ms),transform .52s var(--ease-out) var(--delay, 0ms)}.viz .vi{fill:#fff;transition:fill var(--t-flood) ease}.viz .vo{fill:none;stroke:var(--c);stroke-width:2.5;stroke-dasharray:5 4;transition:stroke var(--t-flood) ease,opacity .26s var(--ease-out) var(--delay, 0ms)}.viz .vring{fill:none;stroke:var(--c);stroke-width:3;transition:stroke var(--t-flood) ease,opacity .26s var(--ease-out) var(--delay, 0ms)}.viz .vframe{fill:var(--surface);stroke:#d8d4ea;stroke-width:2;transition:fill var(--t-flood) ease,stroke var(--t-flood) ease}.viz .vcell{fill:var(--surface-tint);transition:fill var(--t-flood) ease}.viz .vgone{fill:var(--removed);transition:fill var(--t-flood) ease,fill-opacity var(--t-flood) ease,opacity .26s var(--ease-out) var(--delay, 0ms)}.flooded .viz .vgone{fill:#fff;fill-opacity:.22}.viz .vtint{fill:var(--c);fill-opacity:.12;transition:fill var(--t-flood) ease,fill-opacity var(--t-flood) ease}.viz .vdash{fill:none;stroke:var(--ink-faint);stroke-width:2;stroke-dasharray:6 5;transition:stroke var(--t-flood) ease}.viz .vline{stroke:var(--ink-soft);stroke-width:2;stroke-linecap:round;transition:stroke var(--t-flood) ease}.viz .vshade{fill:#000;fill-opacity:.14;transition:fill-opacity var(--t-flood) ease}.viz .vshine{fill:#fff;fill-opacity:.38;transition:fill-opacity var(--t-flood) ease}.viz .tl{fill:var(--ink)}.viz .tc{fill:var(--c)}.viz .ts{fill:var(--ink-soft)}.viz .ti{fill:#fff}.viz .tl,.viz .tc,.viz .ts,.viz .ti{transition:fill var(--t-flood) ease,opacity .26s var(--ease-out) var(--delay, 0ms)}.viz .vhop path{fill:none;stroke:var(--c);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;transition:stroke var(--t-flood) ease}.flooded .viz .vf{fill:#fff;fill-opacity:1}.flooded .viz .vi{fill:var(--flood)}.flooded .viz .vo,.flooded .viz .vring{stroke:#fff}.flooded .viz .vframe{fill:#ffffff1a;stroke:#ffffffbf}.flooded .viz .vcell{fill:#ffffff24}.flooded .viz .vtint{fill:#fff;fill-opacity:.16}.flooded .viz .vdash{stroke:#ffffffb3}.flooded .viz .vline{stroke:#ffffffe6}.flooded .viz .vshade{fill-opacity:.08}.flooded .viz .vshine{fill-opacity:0}.flooded .viz .tl,.flooded .viz .tc,.flooded .viz .ts{fill:#fff}.flooded .viz .ti{fill:var(--flood)}.flooded .viz .vhop path{stroke:#fff}.viz .x-reveal,.viz .x-hint,.viz .x-hint-only{opacity:0}.viz-hint .x-hint-only{opacity:1}.viz .x-reveal,.viz .x-hint,.viz .x-hint-only,.viz .x-hide,.viz .x-fade,.viz .x-hint-fade{transition-property:opacity,fill,fill-opacity,stroke;transition-duration:.26s,var(--t-flood),var(--t-flood),var(--t-flood);transition-timing-function:var(--ease-out);transition-delay:var(--delay, 0ms),0ms,0ms,0ms}.viz .x-move{transition:transform .52s var(--ease-out) var(--delay, 0ms),fill var(--t-flood) ease}.viz .x-fade.x-move{transition:opacity .36s var(--ease-out) var(--delay, 0ms),transform .36s var(--ease-out) var(--delay, 0ms)}.viz .x-grey{transition:fill .26s var(--ease-out) var(--delay, 0ms),fill-opacity .26s var(--ease-out) var(--delay, 0ms),transform .36s var(--ease-out) var(--delay, 0ms)}.viz-solved{--x0: .38s}.viz-revealed{--x0: .16s}.viz-solved [class*=x-],.viz-revealed [class*=x-]{--delay: calc(var(--x0) + var(--i, 0) * var(--t-step))}.viz-hint .x-hint,.viz-solved .x-hint,.viz-revealed .x-hint,.viz-solved .x-reveal,.viz-revealed .x-reveal{opacity:1}.viz-solved .x-hide,.viz-revealed .x-hide{opacity:0}.viz-hint .x-hint-fade,.viz-solved .x-fade,.viz-revealed .x-fade,.viz-solved .x-hint-fade,.viz-revealed .x-hint-fade{opacity:.22}.viz-solved .x-move,.viz-revealed .x-move{transform:translate(var(--tx, 0px),var(--ty, 0px))}.viz-revealed .x-grey.vf{fill:var(--removed)}.flooded .viz .x-grey.vf{fill-opacity:.3}.viz-solved .x-grey,.viz-revealed .x-grey{transform:translate(var(--tx, 0px),var(--ty, 0px))}.viz-manual [class*=x-]{--delay: 0ms}.viz-manual .x-reveal.on,.viz-manual .x-hint.on{opacity:1}.viz-manual .x-hide.on{opacity:0}.viz-manual .x-fade.on,.viz-manual .x-hint-fade.on{opacity:.22}.viz-manual .x-move.on,.viz-manual .x-grey.on{transform:translate(var(--tx, 0px),var(--ty, 0px))}.viz-manual .x-grey.on.vf{fill:var(--removed)}.viz-static .viz *,.viz-static .viz{transition:none!important}@media (prefers-reduced-motion: reduce){.viz *{transition-duration:.01ms!important;transition-delay:0ms!important}}.fc-wrap{container-type:inline-size;width:100%}.fact-card{position:relative;overflow:hidden;isolation:isolate;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:4cqw 4cqw 5cqw;display:flex;flex-direction:column;align-items:center;gap:2cqw;font-family:var(--font);color:var(--ink);--flood: var(--n0)}.fc-stage{width:100%;aspect-ratio:400 / 220;display:flex;align-items:center;justify-content:center}.fc-eq{display:flex;align-items:center;justify-content:center;gap:.28em;font-size:clamp(26px,8.4cqw,48px);font-weight:800;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}.fc-bare .fc-eq{font-size:clamp(40px,15cqw,92px)}.fc-num{color:var(--c);transition:color var(--t-flood) ease}.fc-op{color:var(--ink-soft);font-weight:700;transition:color var(--t-flood) ease}.fc-prompt{font-size:.62em;color:var(--ink);margin-right:.2em;transition:color var(--t-flood) ease}.fc-slot{position:relative;min-width:1.9em;height:1.38em;padding:0 .22em;border-radius:.3em;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-tint);box-shadow:inset 0 0 0 2px var(--line);color:var(--ink-faint);transition:background var(--t-flood) ease,color var(--t-flood) ease,box-shadow var(--t-fast) ease}.fc-slot.filled{color:var(--ink)}.fc-slot.active{box-shadow:inset 0 0 0 3px var(--n0),0 0 0 4px color-mix(in srgb,var(--n0) 22%,transparent)}.fc-slot.active:after{content:"";position:absolute;right:.24em;top:.26em;bottom:.26em;width:.07em;border-radius:1px;background:var(--n0);animation:fc-caret 1.05s steps(1) infinite}.fc-slot.active.filled:after{display:none}@keyframes fc-caret{50%{opacity:0}}.fc-revealed .fc-slot{color:var(--c);box-shadow:inset 0 0 0 3px var(--c);background:var(--surface)}.fc-flood{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--flood);clip-path:circle(0px at var(--fx, 50%) var(--fy, 80%));transition:clip-path var(--t-flood) var(--ease-out)}.flooded .fc-flood{clip-path:circle(150% at var(--fx, 50%) var(--fy, 80%))}.flooded .fc-num,.flooded .fc-op,.flooded .fc-prompt{color:#fff}.flooded .fc-slot{color:#fff;background:#00000024;box-shadow:none}.fc-hint-badge{position:absolute;top:3cqw;left:3cqw;width:max(26px,7cqw);height:max(26px,7cqw);border-radius:50%;display:grid;place-items:center;font-weight:900;font-size:max(16px,4.4cqw);color:#fff;background:var(--attention);transform:scale(0);transition:transform var(--t-med) var(--ease-pop)}.fc-hint .fc-hint-badge{transform:scale(1)}.fc-hint{animation:fc-shake .5s cubic-bezier(.4,.1,.2,1)}@keyframes fc-shake{20%{transform:translate(-10px) rotate(-1deg)}40%{transform:translate(8px) rotate(.8deg)}60%{transform:translate(-5px)}80%{transform:translate(3px)}}.viz-static.fact-card,.viz-static .fc-flood,.viz-static .fc-hint-badge,.viz-static *{transition:none!important;animation:none!important}.fc-eq-spacer{visibility:hidden}
