:root{--bg:#fbfbff;--ink:#17163a;--mu:#5a5a7e;--ind:#4338ff;--ind2:#2d24c9;--cor:#ff6b5a;--sun:#ffd23f;--mint:#12b886;--card:#fff;--line:#e4e4f5;--r:26px}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 "Figtree",system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3{font-family:"Sora",system-ui,sans-serif;line-height:1.14;letter-spacing:-.03em;margin:0 0 .5em;font-weight:700}
h1{font-size:clamp(2rem,4.8vw,3.7rem)}h2{font-size:clamp(1.5rem,2.8vw,2.1rem)}h3{font-size:1.15rem}
a{color:var(--ind);text-underline-offset:3px}img{max-width:100%;display:block}
.wrap{width:min(1100px,100% - 32px);margin-inline:auto}.narrow{max-width:860px}
.skip{position:absolute;left:-999px}.skip:focus{left:10px;top:10px;background:#fff;padding:8px;z-index:200}
.pillnav{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:80;width:min(1040px,100% - 24px);display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(255,255,255,.86);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:99px;padding:8px 10px 8px 18px;box-shadow:0 14px 40px -18px rgba(67,56,255,.35)}
.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--ink);font:700 .95rem "Sora"}
.brand svg{width:30px;height:30px}
.pillnav nav{display:flex;gap:2px;align-items:center}
.pillnav nav a{padding:8px 13px;border-radius:99px;text-decoration:none;color:var(--ink);font-size:.93rem;font-weight:500;transition:.2s}
.pillnav nav a:hover{background:#eeeeff}.pillnav nav a[aria-current]{background:var(--ink);color:#fff}
.pillnav nav a.cta{background:var(--ind);color:#fff}.pillnav nav a.cta:hover{background:var(--ind2)}
.bg{display:none;background:#eeeeff;border:0;border-radius:99px;width:44px;height:44px;cursor:pointer;font-size:1.1rem;color:var(--ink)}
.btn{display:inline-flex;gap:10px;align-items:center;background:var(--ind);color:#fff;font-weight:700;text-decoration:none;padding:15px 24px;border-radius:99px;box-shadow:0 14px 28px -12px rgba(67,56,255,.7);transition:transform .2s,box-shadow .2s,background .2s}
.btn b{transition:transform .2s}.btn:hover{background:var(--ind2);transform:translateY(-3px)}.btn:hover b{transform:translateX(5px)}
.ghost{display:inline-block;padding:14px 22px;border-radius:99px;border:2px solid var(--ink);color:var(--ink);text-decoration:none;font-weight:700;transition:.2s}.ghost:hover{background:var(--ink);color:#fff}
.chip{display:inline-block;background:#fff;border:1px solid var(--line);border-radius:99px;padding:5px 14px;font:700 .78rem "Sora";color:var(--ind);margin:0 0 16px;letter-spacing:.02em}
.lede{font-size:1.15rem;color:var(--mu);max-width:34em}
.grad{background:linear-gradient(90deg,var(--ind),var(--cor));-webkit-background-clip:text;background-clip:text;color:transparent}
.blob{position:absolute;border-radius:42% 58% 60% 40%/50% 40% 60% 50%;filter:blur(2px);opacity:.5;animation:morph 14s ease-in-out infinite alternate;pointer-events:none;z-index:0}
.b1{width:360px;height:360px;background:linear-gradient(135deg,#c9c6ff,#ffd5cf);top:40px;left:-100px}
.b2{width:300px;height:300px;background:linear-gradient(135deg,#fff0b3,#c8f3e4);top:120px;right:-80px;animation-delay:-5s}
.b3{width:220px;height:220px;background:linear-gradient(135deg,#ffd5cf,#c9c6ff);bottom:60px;left:42%;animation-delay:-9s}
@keyframes morph{0%{border-radius:42% 58% 60% 40%/50% 40% 60% 50%;transform:translate(0,0) rotate(0)}100%{border-radius:60% 40% 40% 60%/40% 60% 40% 60%;transform:translate(24px,-18px) rotate(14deg)}}
.home-hero{position:relative;padding:130px 0 60px;overflow:hidden;text-align:center}
.hh{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center}
.hh .lede{margin-inline:auto}.hh h1{max-width:15em}
.actions{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:1.4rem}
.collage{display:grid;grid-template-columns:1fr 1.5fr 1fr;gap:20px;align-items:center;margin-top:48px;width:100%}
.float{animation:bob 6s ease-in-out infinite}.float.d2{animation-delay:-2s}.float.d3{animation-delay:-4s}
@keyframes bob{50%{transform:translateY(-12px)}}
.pic{position:relative;margin:0;aspect-ratio:var(--ar);width:100%;border-radius:var(--r);overflow:hidden;background:#e8e8fb;border:6px solid #fff;box-shadow:0 26px 50px -26px rgba(45,36,201,.5)}
.pic .bd{position:absolute;inset:-24px;background-size:cover;background-position:center;filter:blur(22px) saturate(1.2);opacity:.75}
.pic img{position:relative;width:100%;height:100%;object-fit:contain}
.pic.portrait{max-width:330px;margin-inline:auto}.pic.land{max-width:560px;margin-inline:auto}
.ph{position:relative;padding:128px 0 30px;overflow:hidden}
.ph.plain{padding:120px 0 0}
.ph-in{position:relative;z-index:1;display:grid;grid-template-columns:1.2fr .8fr;gap:44px;align-items:center}
.ph-a .pic{transform:rotate(2deg);transition:transform .4s}.ph-a .pic:hover{transform:rotate(0)}
.sec{padding:clamp(34px,5vw,64px) 0;position:relative}
.sec-h{text-align:center;margin-bottom:30px}
.narrow>h2{margin-top:2.2rem}.narrow p{max-width:66ch}
.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.cards3.tight{margin:1rem 0}
.cards2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:1rem 0}
.mod{background:var(--card);border:1px solid var(--line);border-top:7px solid var(--c);border-radius:var(--r);padding:24px;transition:transform .3s,box-shadow .3s}
.mod:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:0 26px 40px -26px var(--c)}
.mod p{margin:0;color:var(--mu)}.mn{display:block;font:700 .74rem "Sora";text-transform:uppercase;letter-spacing:.1em;color:var(--c);margin-bottom:8px}
.bar{height:8px;border-radius:9px;background:#eeeefa;margin-top:16px;overflow:hidden}
.bar i{display:block;height:100%;width:var(--w);background:var(--c);border-radius:9px;transition:width 1.4s .3s cubic-bezier(.2,.8,.2,1)}
.js .bar i{width:0}.js .mod.in .bar i{width:var(--w)}
.aside-note{text-align:center;font-size:.85rem;color:var(--mu);margin-top:16px}
.flip{display:grid;grid-template-columns:.8fr 1.2fr;gap:50px;align-items:center}
.inline{font-weight:700}
.tour{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.tcard{display:grid;gap:6px;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:22px;padding:22px;transition:.25s;position:relative}
.tcard b{font:700 1.05rem "Sora"}.tcard span{color:var(--mu);font-size:.93rem}
.tcard:hover{background:var(--ink);color:#fff;transform:translateY(-4px)}.tcard:hover span{color:#c6c6e8}
.panel{margin:48px auto;width:min(1100px,100% - 32px);max-width:none!important;display:flex;gap:24px;justify-content:space-between;align-items:center;flex-wrap:wrap;background:var(--ink);color:#fff;border-radius:34px;padding:34px 38px;position:relative;overflow:hidden}
.panel::after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:radial-gradient(var(--cor),transparent 70%);opacity:.5;animation:bob 7s ease-in-out infinite}
.panel>*{position:relative;z-index:1}.panel h2{font-size:1.5rem;margin:0 0 .3em}.panel p{margin:0;color:#c9c9ea;max-width:44ch}
.narrow .panel{width:100%}
.meter{display:flex;align-items:center;gap:14px;margin:6px 0 18px}
.track{flex:1;height:14px;background:#e9e9fb;border-radius:99px;overflow:hidden}
.track i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--ind),var(--cor));border-radius:99px;transition:width .5s}
#pct{font:700 .95rem "Sora";min-width:7em}
.todo{list-style:none;padding:0;margin:0 0 2rem;display:grid;gap:10px}
.todo label{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1.5px solid var(--line);border-radius:18px;padding:14px 16px;cursor:pointer;transition:.2s}
.todo label:hover{border-color:var(--ind)}
.todo input{appearance:none;flex:none;width:26px;height:26px;border-radius:9px;border:2px solid #b9b9e0;display:grid;place-items:center;margin-top:1px;transition:.2s;background:#fff}
.todo input::after{content:"";width:12px;height:7px;border-left:3px solid #fff;border-bottom:3px solid #fff;transform:rotate(-45deg) scale(0);transition:transform .2s;margin-top:-2px}
.todo input:checked{background:var(--mint);border-color:var(--mint)}.todo input:checked::after{transform:rotate(-45deg) scale(1)}
.todo input:focus-visible{outline:3px solid var(--ind);outline-offset:2px}
.todo input:checked+span{color:var(--mu);text-decoration:line-through;text-decoration-color:#b9b9e0}
.flags{list-style:none;padding:0;display:grid;gap:8px}
.flags li{position:relative;background:#fff2f0;border-radius:14px;padding:11px 14px 11px 46px}
.flags li::before{content:"!";position:absolute;left:14px;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;background:var(--cor);color:#fff;font:700 .85rem "Sora";display:grid;place-items:center}
.flags.good li{background:#e9faf3}.flags.good li::before{content:"\2713";background:var(--mint)}
.score{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px 18px;margin:1rem 0}
.sh,.sr,.st{display:grid;grid-template-columns:1fr 90px 90px;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.sh b{text-align:center;font:700 .85rem "Sora"}.st{border:0;font-weight:700}
.st output{text-align:center;font:700 1.6rem "Sora";color:var(--ind)}
select{font:inherit;padding:8px;border-radius:10px;border:1.5px solid var(--line);background:#fff;width:100%}
select:focus-visible{outline:3px solid var(--ind)}
.acc details{background:#fff;border:1px solid var(--line);border-radius:18px;margin-bottom:10px;padding:0 20px;transition:.2s}
.acc details[open]{border-color:var(--ind);box-shadow:0 14px 30px -22px var(--ind)}
.acc summary{cursor:pointer;font:600 1.02rem "Sora";padding:16px 34px 16px 0;list-style:none;position:relative}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";position:absolute;right:0;top:11px;font:400 1.7rem "Sora";color:var(--ind);transition:transform .25s}
.acc details[open] summary::after{transform:rotate(45deg)}
.acc details p{margin:0 0 16px;color:var(--mu)}
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin:1rem 0}
.day{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px 10px;text-align:center;display:grid;gap:2px;transition:transform .25s}
.day:hover{transform:translateY(-4px)}
.day b{font:700 .85rem "Sora"}.day span{font-weight:700}.day small{color:var(--mu);font-size:.78rem;line-height:1.3}
.day.study{background:#ecebff;border-color:#c5c2ff}.day.practice{background:#e6faf2;border-color:#a8e8cf}.day.review{background:#fff7d6;border-color:#ffe38a}
.callout{background:#fff7d6;border-radius:18px;padding:16px 20px;border:1px solid #ffe38a}
.pair{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:stretch}
.pair>div:not(.plus){background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px}
.pair p{margin:0;color:var(--mu)}
.plus{align-self:center;width:46px;height:46px;border-radius:50%;background:var(--sun);display:grid;place-items:center;font:700 1.5rem "Sora";animation:bob 4s ease-in-out infinite}
.duo{display:grid;grid-template-columns:1.4fr 1fr;gap:20px;align-items:center;margin-top:1rem}
.steps3{list-style:none;padding:0;display:grid;gap:16px;margin:0}
.steps3 li{display:flex;gap:18px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px}
.steps3 b{flex:none;width:48px;height:48px;border-radius:16px;background:var(--ind);color:#fff;display:grid;place-items:center;font:700 1.3rem "Sora"}
.steps3 h3{margin:0 0 .2em}.steps3 p{margin:0;color:var(--mu)}
.bigbtn{margin:2rem 0}.small{font-size:.9rem;color:var(--mu)}
.legal h2{font-size:1.3rem}
footer.ft{background:var(--ink);color:#b9b9dc;padding:46px 0 28px;margin-top:40px}
.ft-g{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:30px}
.ft a{color:#fff}.ft h2{font:700 .8rem "Sora";text-transform:uppercase;letter-spacing:.12em;color:#8b8bbb;margin:0 0 10px}
.ft ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.ft p{margin:.6em 0 0;font-size:.93rem}
.ft .fine{border-top:1px solid #2c2b5e;margin-top:26px;padding-top:16px;font-size:.84rem}
.js .rv{opacity:0;transform:translateY(26px) scale(.98);transition:opacity .7s,transform .7s}.js .rv.in{opacity:1;transform:none}
@media(max-width:900px){
 .bg{display:grid;place-items:center}
 .pillnav nav{display:none;position:absolute;top:66px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:26px;flex-direction:column;align-items:stretch;padding:10px;box-shadow:0 20px 40px -20px rgba(0,0,0,.3)}
 .pillnav nav.open{display:flex}
 .ph-in,.flip,.cards3,.cards2,.tour,.pair,.duo,.ft-g{grid-template-columns:1fr}
 .tour{grid-template-columns:1fr 1fr}
 .collage{grid-template-columns:1fr 1fr}.collage .c2{grid-column:1/-1;order:-1}
 .pair .plus{margin-inline:auto}
 .week{grid-template-columns:repeat(4,1fr)}
 .pic.portrait{max-width:280px}.ph-a{order:-1}
}
@media(max-width:520px){.tour{grid-template-columns:1fr}.week{grid-template-columns:repeat(2,1fr)}.sh,.sr,.st{grid-template-columns:1fr 70px 70px}.panel{padding:26px 22px}.collage{grid-template-columns:1fr}.collage .c1,.collage .c3{max-width:260px;margin-inline:auto}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.js .rv{opacity:1;transform:none}.js .bar i{width:var(--w)}}