:root{--blue:#1b63c9;--blue-d:#114a9e;--sky:#2f9bff;--sun:#ffc93c;--leaf:#1f9d6b;--coral:#ff7a59;--coral-t:#c23d16;--navy:#16244a;--ink:#16203a;--mute:#4a5775;--bg:#f4f9ff;--card:#fff;--line:#d5e3f3;--r:22px;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--ink:#f2f6ff;--mute:#b9c4de;--bg:#0f1730;--card:#19233f;--line:#2e3c60;--coral-t:#ff9b80;--leaf:#4fd9a0}}
:root[data-theme="dark"]{--ink:#f2f6ff;--mute:#b9c4de;--bg:#0f1730;--card:#19233f;--line:#2e3c60;--coral-t:#ff9b80;--leaf:#4fd9a0}
*,*:before,*:after{box-sizing:inherit}
html{scroll-behavior:smooth;scroll-padding-top:calc(80px + env(safe-area-inset-top,0px));height:100%}
body{margin:0;font-family:Nunito,system-ui,sans-serif;color:var(--ink);background:var(--bg);line-height:1.6;overflow-x:hidden}
h1,h2,h3{font-family:Fredoka,Nunito,sans-serif;line-height:1.15;margin:0 0 .5em}
h1{font-size:clamp(2.2rem,6vw,3.9rem)}h2{font-size:clamp(1.7rem,4vw,2.5rem)}
p{margin:0 0 1em}a{color:inherit}
.wrap{max-width:1120px;margin:auto;padding:0 20px}
section.blk{padding:56px 0}
.lead{color:var(--mute);font-size:1.1rem;max-width:62ch}
:focus-visible{outline:3px solid var(--coral);outline-offset:3px}
.btn{display:inline-block;border:0;cursor:pointer;font:800 1rem Nunito;padding:14px 26px;border-radius:999px;text-decoration:none;transition:transform .15s;background:var(--blue);color:#fff;box-shadow:0 5px 0 var(--blue-d)}
.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--blue-d)}
.btn.sun{background:var(--sun);color:#2b2100;box-shadow:0 5px 0 #c9980a}
.btn.ghost{background:var(--card);color:var(--ink);box-shadow:0 5px 0 var(--line);border:2px solid var(--line)}
/* header */
header{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:2px solid var(--line);padding-top:env(safe-area-inset-top,0px)}
.nav{display:flex;align-items:center;justify-content:space-between;height:70px}
.logo{font:600 2rem Fredoka;text-decoration:none;display:flex;align-items:center;gap:8px}
.logo b{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:var(--sun);color:#2b2100;transform:rotate(-6deg);font-size:1.3rem}
.logo span{color:var(--blue)}
:root[data-theme="dark"] .logo span{color:var(--sky)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .logo span{color:var(--sky)}}
nav ul{display:flex;gap:4px;list-style:none;margin:0;padding:0;align-items:center}
nav a:not(.btn){padding:8px 14px;border-radius:999px;text-decoration:none;font-weight:800;color:var(--ink)}
nav a:not(.btn):hover{background:var(--line)}
nav a[aria-current=page]{background:var(--navy);color:#fff}
.burger{display:none;background:var(--card);border:2px solid var(--line);border-radius:12px;font-size:1.3rem;padding:4px 12px;color:var(--ink);cursor:pointer}
@media(max-width:900px){.burger{display:block}nav ul{position:absolute;left:0;right:0;top:100%;background:var(--bg);flex-direction:column;align-items:stretch;padding:14px 20px;border-bottom:2px solid var(--line);display:none}nav ul.open{display:flex}nav li{text-align:center}}
/* pages */
.page{display:none}.page.on{display:block;animation:fade .35s}
@keyframes fade{from{opacity:0;transform:translateY(8px)}}
.phead{background:var(--navy);color:#fff;padding:52px 0 44px;position:relative;overflow:hidden}
.phead .lead{color:#d3ddf5}
.phead:after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:var(--sun);opacity:.9}
.phead .wrap{position:relative;z-index:1}
/* hero */
.hero{position:relative;padding:56px 0 40px;overflow:hidden}
.hero .grid{display:grid;gap:40px;align-items:center}
@media(min-width:900px){.hero .grid{grid-template-columns:1.1fr .9fr}}
.hero h1 em{font-style:normal;background:var(--sun);color:#2b2100;padding:0 .15em;border-radius:10px}
.pills{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0}
.pill,.tab,.fchip{border:2px solid var(--line);background:var(--card);color:var(--ink);font:800 .95rem Nunito;padding:10px 18px;border-radius:999px;cursor:pointer;transition:.15s}
.pill:hover,.tab:hover,.fchip:hover{border-color:var(--blue)}
.pill[aria-pressed=true],.tab[aria-selected=true],.fchip[aria-pressed=true]{background:var(--navy);color:#fff;border-color:var(--navy)}
.ctas{display:flex;gap:16px;flex-wrap:wrap}
.stage{position:relative;aspect-ratio:1;max-width:420px;margin:auto;width:100%}
.blob{position:absolute;inset:6%;background:var(--sky);border-radius:46% 54% 40% 60%/55% 45% 55% 45%;animation:morph 9s ease-in-out infinite}
@keyframes morph{50%{border-radius:60% 40% 55% 45%/40% 60% 40% 60%}}
.kid{position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(7rem,22vw,10rem);animation:bob 4s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-12px)}}
.float{position:absolute;font:600 1.1rem Fredoka;background:var(--card);color:var(--ink);padding:10px 16px;border-radius:16px;box-shadow:0 8px 22px rgba(0,0,0,.18);animation:bob 5s ease-in-out infinite}
.f1{top:6%;left:-2%}.f2{top:30%;right:-4%;animation-delay:-2s}.f3{bottom:8%;left:2%;animation-delay:-3s}
.shape{position:absolute;border-radius:50%;opacity:.5;animation:bob 7s ease-in-out infinite;pointer-events:none}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin-top:10px}
.stat{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:18px;text-align:center;font-weight:700;color:var(--mute)}
.stat strong{display:block;font:600 2rem Fredoka;color:var(--ink)}
/* cards */
.grid3{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.card{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:24px;transition:transform .2s,border-color .2s}
.card:hover{transform:translateY(-5px);border-color:var(--c,var(--blue))}
.ico{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;font-size:1.8rem;background:color-mix(in srgb,var(--c,var(--sky)) 25%,var(--card));margin-bottom:12px}
.card h3{font-size:1.25rem}.card p{color:var(--mute);margin:0}
.badge{display:inline-block;font-weight:800;font-size:.8rem;padding:4px 12px;border-radius:999px;background:color-mix(in srgb,var(--c,var(--sky)) 25%,var(--card));margin-top:12px}
.tabs{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 24px}
.panel{display:none}.panel.show{display:grid;animation:fade .35s}
.more{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:22px}
/* tutors */
.t{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:24px}
.t[hidden]{display:none}
.avatar{width:84px;height:84px;border-radius:50%;display:grid;place-items:center;font-size:2.8rem;background:var(--c);margin-bottom:12px;border:4px solid var(--card);box-shadow:0 0 0 3px var(--c)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.chip{font-size:.78rem;font-weight:800;padding:4px 10px;border-radius:999px;background:var(--line);color:var(--ink)}
.chip.g{background:var(--sun);color:#2b2100}
.stars{color:#e59a00;letter-spacing:2px}
.play{display:flex;align-items:center;gap:10px;width:100%;margin-top:12px;border:2px dashed var(--c);background:transparent;color:var(--ink);padding:10px 14px;border-radius:14px;font:800 .9rem Nunito;cursor:pointer}
.bars{display:flex;gap:3px;align-items:center;height:20px;margin-left:auto}
.bars i{width:4px;height:6px;border-radius:2px;background:var(--c)}
.play.on .bars i{animation:eq .6s infinite alternate}
.play.on .bars i:nth-child(2){animation-delay:.15s}.play.on .bars i:nth-child(3){animation-delay:.3s}.play.on .bars i:nth-child(4){animation-delay:.45s}
@keyframes eq{to{height:20px}}
.pop{display:none;margin-top:10px;font-size:.9rem;background:var(--bg);border-radius:12px;padding:10px 12px;color:var(--mute)}
.play.on+.pop{display:block;animation:fade .3s}
/* about */
.model{background:var(--navy);color:#fff;border-radius:32px;padding:44px 26px}
.model .lead{color:#d3ddf5}
.flow{display:flex;align-items:center;justify-content:center;gap:12px;margin:24px 0 8px;flex-wrap:wrap;font:600 1.2rem Fredoka}
.node{background:rgba(255,255,255,.14);padding:12px 20px;border-radius:16px}
.line{height:4px;width:80px;background:repeating-linear-gradient(90deg,var(--sun) 0 10px,transparent 10px 18px);background-size:18px 4px;animation:dash 1s linear infinite}
@keyframes dash{to{background-position:18px 0}}
.clock{text-align:center;font-weight:800;color:var(--sun);margin-bottom:24px}
.adv{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.adv button{text-align:left;font:inherit;color:#fff;background:rgba(255,255,255,.1);border:2px solid transparent;border-radius:var(--r);padding:22px;cursor:pointer;transition:.2s}
.adv button:hover,.adv button[aria-expanded=true]{border-color:var(--sun);background:rgba(255,255,255,.18)}
.adv h3{font-size:1.2rem}.adv p{margin:0;color:#d3ddf5;max-height:0;overflow:hidden;opacity:0;transition:.3s}
.adv button[aria-expanded=true] p{max-height:150px;opacity:1}
.step{display:flex;gap:16px;align-items:flex-start}
.step .n{flex:none;width:44px;height:44px;border-radius:50%;background:var(--sun);color:#2b2100;display:grid;place-items:center;font:600 1.3rem Fredoka}
/* game */
.game{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.starrow{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}
.starrow button{font-size:2rem;background:none;border:0;cursor:pointer;filter:grayscale(1);opacity:.45;transition:.25s;padding:2px}
.starrow button.on{filter:none;opacity:1;animation:spin .5s}
@keyframes spin{from{transform:scale(.3) rotate(-180deg)}}
.bar{height:18px;border-radius:99px;background:var(--line);overflow:hidden;margin:6px 0 16px}
.bar i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--leaf),var(--sun));transition:width .6s}
.badges{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;text-align:center;font-size:.78rem;font-weight:800}
.badges div{padding:12px 4px;border-radius:16px;background:var(--line);filter:grayscale(1);opacity:.6;transition:.4s}
.badges div.on{filter:none;opacity:1;background:var(--sun);color:#2b2100;transform:rotate(-3deg) scale(1.06)}
.badges b{display:block;font-size:1.7rem}
.streak{font:600 2.4rem Fredoka;color:var(--coral-t)}
.cta{background:var(--sun);color:#2b2100;border-radius:32px;padding:40px 26px;text-align:center}
.cta p{color:#4a3a00}
/* contact */
.contact{display:grid;gap:28px}
@media(min-width:900px){.contact{grid-template-columns:1.1fr .9fr}}
form{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:26px;display:grid;gap:16px}
.row{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
label{font-weight:800;font-size:.9rem;display:grid;gap:6px}
input,select{font:inherit;padding:12px 14px;border:2px solid var(--line);border-radius:14px;background:var(--bg);color:var(--ink);width:100%}
input:focus,select:focus{border-color:var(--blue);outline:0}
.err{color:var(--coral-t);font-size:.82rem;min-height:1em}
.ok{text-align:center;padding:30px}.ok .big{font-size:4rem}
.map{border-radius:var(--r) var(--r) 0 0;overflow:hidden;border:2px solid var(--line);border-bottom:0;background:#dff0ff;position:relative}
.map svg{display:block;width:100%;height:220px}
.pin{position:absolute;left:52%;top:42%;font-size:2.4rem;transform:translate(-50%,-100%);animation:bob 2s infinite}
.info{border-radius:0 0 var(--r) var(--r)}
footer{background:var(--navy);color:#d3ddf5;padding:36px 0 28px;margin-top:40px}
footer .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
footer a{color:#fff;text-decoration:none;font-weight:700;margin-right:16px}footer a:hover{text-decoration:underline}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.skip{position:absolute;left:-999px;top:0;background:var(--sun);color:#2b2100;padding:10px 16px;z-index:100;border-radius:0 0 12px 0;font-weight:800}.skip:focus{left:0}
.logo{font-size:1.6rem}.logo b{width:auto;min-width:42px;padding:0 9px;font-size:1.05rem}
.legal{max-width:78ch}.legal h2{font-size:1.4rem;margin-top:1.6em}.legal li{margin-bottom:.4em}.legal p,.legal li{color:var(--mute)}
details{background:var(--card);border:2px solid var(--line);border-radius:18px;margin-bottom:12px;padding:0 20px;max-width:860px}
summary{cursor:pointer;font:600 1.15rem Fredoka;padding:16px 0;list-style:none;display:flex;justify-content:space-between;gap:12px}
summary::after{content:"+";font-size:1.5rem;color:var(--coral-t)}details[open] summary::after{content:"–"}details p{color:var(--mute)}
.foot-legal{margin-top:10px;font-size:.9rem}