@font-face{font-family:'Fredoka';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/fredoka-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Fredoka';font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/fredoka-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'Fredoka';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/fredoka-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Fredoka';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/fredoka-latin-700-normal.woff2) format('woff2')}
/* Layout: publisher-style storefront — blue utility bar, yellow masthead, a product block, then full-width colour bands (yellow, purple, white, blue) with small flat animated birds. */
:root{
  --yellow:#FCEB3B;   /* masthead, close to the cover brush */
  --navy:#1B1A55;     /* all text */
  --blue:#0E6FB8;     /* utility bar + school band */
  --purple:#57207A;   /* chapter band, from the back cover */
  --grey:#F2F2F4;     /* product image panel */
  --white:#FFFFFF;
  --red:#DB1E3B; --green:#2D8A3E; --orange:#F36621; --pink:#E04C8C; /* small decoration only */
  --font:"Fredoka", "Trebuchet MS", "Segoe UI", sans-serif;
  --maxw:1180px;
  --gutter:clamp(16px,4vw,48px);
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
html,body{overflow-x:clip}
body{margin:0;background:var(--white);color:var(--navy);font-family:var(--font);font-size:18px;line-height:1.55;font-weight:400}
img{max-width:100%;display:block}
h1,h2,h3{margin:0;font-weight:600;line-height:1.1;text-wrap:balance;letter-spacing:-.01em}
p{margin:0}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}

/* buttons: square blocks, like a shop */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:64px;padding:0 36px;background:var(--navy);color:var(--white);font-weight:600;font-size:1.15rem;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;border:2px solid var(--navy);transition:background .2s,color .2s}
.btn:hover{background:var(--blue);border-color:var(--blue)}
.btn.light{background:var(--white);color:var(--navy);border-color:var(--white)}
.btn.light:hover{background:var(--yellow);border-color:var(--yellow)}
.btn.outline{background:transparent;color:var(--navy)}
.btn.outline:hover{background:var(--navy);color:var(--white)}

/* round badges */
.badge{display:grid;place-items:center;text-align:center;border-radius:50%;font-weight:700;text-transform:uppercase;line-height:1.05;letter-spacing:.03em}

/* ---------- top bar + masthead ---------- */
.util{background:var(--blue);color:var(--white);font-weight:500;font-size:.92rem}
.util .wrap{display:flex;justify-content:space-between;align-items:center;height:44px;gap:16px}
.util .peek{position:relative;height:44px;width:60px;overflow:visible;flex:none}
.util .peek svg{position:absolute;left:0;top:6px;width:52px;animation:peek 6s ease-in-out infinite}
@keyframes peek{0%,70%,100%{transform:translateY(0)}78%,90%{transform:translateY(-4px) rotate(-6deg)}}
.util .left{display:flex;align-items:center;gap:18px}
.mast{background:var(--yellow);position:relative;overflow:hidden}
.mast .wrap{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding-block:18px}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none;line-height:1}
.logo svg{width:46px;height:46px;flex:none;transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.logo:hover svg{transform:rotate(-12deg) translateY(-3px)}
.logo b{display:block;font-size:1.45rem;font-weight:700;letter-spacing:-.01em}
.logo small{display:block;font-size:.9rem;font-weight:500;margin-top:3px}
.mast nav{display:flex;justify-content:center;gap:clamp(14px,2.4vw,30px);font-size:1.12rem;font-weight:500}
.mast nav a{text-decoration:none;position:relative;padding-block:4px}
.mast nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:3px;background:var(--navy);border-radius:2px;transform:scaleX(0);transition:transform .25s}
.mast nav a:hover::after{transform:scaleX(1)}
.mast .cart{font-weight:600;text-decoration:none;display:flex;align-items:center;gap:8px}
.mast .cart svg{width:26px;height:26px}
.burger{display:none;border:0;background:none;padding:6px}
.burger svg{width:30px;height:30px}
@media (max-width:900px){
  .mast .wrap{grid-template-columns:1fr auto auto}
  .mast nav{display:none;grid-column:1/-1;flex-direction:column;align-items:flex-start;gap:6px;padding-top:6px}
  .mast nav.open{display:flex}
  .burger{display:block}
  .logo b{font-size:1.15rem}
  .util .hide-s{display:none}
}

/* ---------- product block ---------- */
.product{display:grid;grid-template-columns:1fr 1fr;min-height:560px}
.p-info{padding:clamp(36px,5vw,70px) clamp(16px,4vw,60px) 0 max(var(--gutter),calc((100vw - var(--maxw))/2 + var(--gutter)));display:flex;flex-direction:column;min-width:0}
.p-info h1{font-size:clamp(2.3rem,4.4vw,3.4rem);font-weight:600}
.p-meta{margin-top:22px;display:grid;gap:10px;font-size:1.2rem;font-weight:500}
.p-meta .price{font-weight:400}
.p-lead{margin-top:26px;font-weight:600;font-size:1.22rem;line-height:1.45;max-width:30em}
.p-text{margin-top:18px;font-size:1.12rem;max-width:32em}
.p-btns{display:flex;margin-top:auto;padding-top:36px;flex-wrap:wrap}
.p-btns .btn{flex:1 1 180px;max-width:220px}
.p-img{background:var(--grey);position:relative;display:grid;place-items:center;padding:140px 30px 80px;overflow:hidden}
.slides{position:relative;width:min(300px,70%);aspect-ratio:1200/1589}
.slide{position:absolute;inset:0;background:var(--white);padding:12px;box-shadow:0 18px 40px -20px rgba(27,26,85,.45);transition:opacity .7s,transform .7s cubic-bezier(.3,1.2,.4,1)}
.slide img{width:100%;height:100%;object-fit:cover}
.slide:not(.on){opacity:0;transform:translateX(40px) rotate(3deg);pointer-events:none}
.slides .badge{position:absolute;right:-46px;top:-40px;width:96px;height:96px;background:var(--blue);color:var(--yellow);font-size:.9rem;z-index:3;animation:pulse 3s ease-in-out infinite}
@keyframes pulse{50%{transform:scale(1.06)}}
.slides .perch{position:absolute;right:-30px;top:-118px;width:76px;z-index:4}
.next{position:absolute;right:-28px;top:50%;width:68px;height:68px;border-radius:50%;border:0;background:var(--white);box-shadow:0 4px 18px rgba(27,26,85,.15);display:grid;place-items:center;translate:0 -50%;transition:transform .25s}
.next:hover{transform:translateX(-4px)}
.next svg{width:24px;height:24px}
.dots{position:absolute;bottom:26px;left:50%;translate:-50% 0;display:flex;gap:14px}
.dots button{width:13px;height:13px;border-radius:50%;border:2px solid var(--navy);background:transparent;padding:0}
.dots button[aria-current="true"]{background:var(--navy)}
@media (max-width:860px){
  .product{grid-template-columns:1fr}
  .p-img{order:-1;padding:130px 20px 64px}
  .p-info{padding:36px var(--gutter) 40px}
  .slides .badge{right:-22px;width:80px;height:80px;font-size:.78rem}
  .slides .perch{right:-10px;top:-104px;width:64px}
  .next{right:12px;width:52px;height:52px}
}

/* ---------- yellow theme band ---------- */
.band-y{background:var(--yellow);position:relative;overflow:hidden;padding-block:clamp(70px,9vw,110px)}
.band-y h2{text-align:center;font-size:clamp(1.9rem,3.8vw,2.7rem);font-weight:500;display:flex;justify-content:center;align-items:center;gap:14px;flex-wrap:wrap}
.band-y h2 svg{width:42px;height:42px;flex:none}
.twinkle path{animation:tw 2.4s ease-in-out infinite;transform-origin:center;transform-box:fill-box}
.twinkle path:nth-child(2){animation-delay:.8s}.twinkle path:nth-child(3){animation-delay:1.5s}
@keyframes tw{50%{transform:scale(.55) rotate(30deg)}}
.themes{display:flex;justify-content:center;flex-wrap:wrap;gap:clamp(18px,3vw,44px);margin-top:clamp(40px,5vw,60px);position:relative;z-index:2;list-style:none;padding:0}
.themes li{text-align:center;transition:transform .3s cubic-bezier(.3,1.8,.5,1)}
.themes li:hover{transform:translateY(-6px)}
.themes b{display:block;font-size:clamp(1.7rem,2.9vw,2.4rem);font-weight:600;line-height:1}
.themes span{display:block;font-size:1.05rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;margin-top:6px}
.deco{position:absolute;pointer-events:none;z-index:1}
.deco.crane{left:3%;bottom:-6px;width:clamp(110px,13vw,170px)}
.deco.horse{right:5%;bottom:22px;width:clamp(70px,8vw,105px);transform-origin:50% 100%;animation:rock 3.2s ease-in-out infinite}
@keyframes rock{50%{transform:rotate(-7deg)}}
.deco.bird1{left:16%;top:22%;width:68px;animation:hover1 5s ease-in-out infinite}
.deco.bird2{right:16%;top:16%;width:58px;animation:hover1 6s ease-in-out infinite reverse}
@keyframes hover1{50%{transform:translate(10px,-14px) rotate(-4deg)}}
.wing{transform-origin:40% 60%;transform-box:fill-box;animation:flap .5s ease-in-out infinite alternate}
@keyframes flap{to{transform:rotate(-28deg) scaleY(.7)}}
.conf{position:absolute;width:10px;height:18px;border-radius:2px;animation:fall linear infinite;z-index:0}
@keyframes fall{0%{transform:translateY(-30px) rotate(0)}100%{transform:translateY(520px) rotate(540deg)}}
.crane .head{transform-origin:20% 90%;transform-box:fill-box;animation:nod 4s ease-in-out infinite}
@keyframes nod{0%,60%,100%{transform:rotate(0)}70%,80%{transform:rotate(14deg)}}
@media (max-width:700px){.deco.bird1,.deco.bird2{display:none}.deco.crane{width:90px;left:-6px}.deco.horse{width:56px;right:2%}}

/* ---------- purple chapters band ---------- */
.band-p{background:var(--purple);color:var(--white);padding-block:clamp(70px,9vw,110px);overflow:hidden}
.band-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:clamp(44px,5vw,60px)}
.band-head h2{font-size:clamp(2.1rem,4.2vw,3rem)}
.band-head p{margin-top:16px;font-size:1.2rem;max-width:34em;opacity:.95}
.arrows{display:flex;gap:12px}
.arrows button{width:56px;height:56px;border-radius:50%;border:0;background:var(--white);color:var(--navy);display:grid;place-items:center;transition:transform .2s,background .2s}
.arrows button:hover{background:var(--yellow);transform:scale(1.06)}
.arrows svg{width:22px;height:22px}
.track{display:flex;gap:28px;overflow-x:auto;scroll-snap-type:x mandatory;padding:46px var(--gutter) 20px;margin-inline:calc(var(--gutter)*-1);scrollbar-width:none}
.track::-webkit-scrollbar{display:none}
.chap{position:relative;flex:0 0 clamp(250px,26vw,300px);scroll-snap-align:start;background:var(--white);color:var(--navy);padding:34px 26px 28px;min-height:270px;display:flex;flex-direction:column;transition:transform .35s cubic-bezier(.3,1.5,.5,1)}
.chap:hover{transform:translateY(-8px)}
.chap .badge{position:absolute;top:-38px;right:22px;width:78px;height:78px;background:var(--yellow);color:var(--navy);font-size:1rem;transition:transform .5s cubic-bezier(.3,1.8,.5,1)}
.chap .badge b{display:block;font-size:1.9rem;line-height:1}
.chap:hover .badge{transform:rotate(-12deg) scale(1.08)}
.chap .kicker{font-size:.85rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--purple)}
.chap h3{font-size:1.45rem;margin:10px 0 8px}
.chap p{font-size:1rem}
.chap .word{margin-top:auto;padding-top:18px;font-size:1rem;border-top:2px dashed #E3E1EE}
.chap .word b{font-weight:600;font-size:1.15rem}
.flight{position:relative;height:40px;margin-top:22px}
.flight svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}

/* ---------- words ---------- */
.sec{padding-block:clamp(70px,9vw,110px)}
.sec-head{text-align:center;max-width:36em;margin:0 auto clamp(40px,5vw,56px)}
.sec-head h2{font-size:clamp(2.1rem,4.2vw,3rem)}
.sec-head p{margin-top:14px;font-size:1.2rem}
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.flip{perspective:900px;border:0;padding:0;background:none;aspect-ratio:1/.9;min-width:0}
.flip-in{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.3,1.3,.5,1)}
.flip[aria-pressed="true"] .flip-in{transform:rotateY(180deg)}
.side{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:22px;display:grid;place-content:center;gap:10px;padding:16px;text-align:center;container-type:inline-size}
.side.front{background:var(--c);color:var(--white)}
.side.front b{font-size:clamp(1rem,12cqi,1.7rem);font-weight:600;line-height:1.15}
.side.front small{font-size:.85rem;font-weight:500;opacity:.9;letter-spacing:.1em;text-transform:uppercase}
.side.back{transform:rotateY(180deg);background:var(--grey);color:var(--navy)}
.side.back b{font-size:clamp(1rem,11cqi,1.5rem);font-weight:600}
.side.back span{font-size:.95rem}
.flip:hover .flip-in{translate:0 -5px}
@media (max-width:860px){.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}

.quiz{max-width:640px;margin:clamp(56px,7vw,80px) auto 0;background:var(--grey);border-radius:28px;padding:clamp(24px,4vw,40px)}
.q-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:10px}
.q-top h3{font-size:1.5rem}
.q-prog{display:flex;gap:6px}
.q-prog i{width:12px;height:12px;border-radius:50%;background:#D6D5E0}
.q-prog i.now{background:var(--navy)}.q-prog i.ok{background:var(--green)}.q-prog i.bad{background:var(--red)}
.q-text{font-size:1.25rem;font-weight:500;margin-bottom:16px}
.opts{display:grid;gap:10px}
.opt{border:2px solid transparent;background:var(--white);border-radius:14px;padding:14px 18px;text-align:left;font-size:1.1rem;font-weight:500;transition:border-color .2s,transform .2s}
.opt:hover:not(:disabled){border-color:var(--navy);transform:translateX(4px)}
.opt:disabled{cursor:default}
.opt.ok{background:var(--yellow);border-color:var(--navy)}
.opt.bad{opacity:.55;text-decoration:line-through;animation:shake .35s}
@keyframes shake{30%{transform:translateX(-5px)}70%{transform:translateX(5px)}}
.q-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:18px;min-height:56px;flex-wrap:wrap}
.q-foot .btn{min-height:52px;padding:0 26px;font-size:1rem}
.q-done{text-align:center;display:grid;gap:12px;justify-items:center}
.q-done .big{font-size:4rem;font-weight:700;line-height:1}

/* ---------- schools band ---------- */
.band-b{background:var(--blue);color:var(--white);padding-block:clamp(70px,9vw,110px)}
.schools{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,80px);align-items:center}
.schools h2{font-size:clamp(2.1rem,4.2vw,3rem)}
.schools p.lead{margin-top:16px;font-size:1.2rem}
.schools .btn{margin-top:30px}
.points{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.points li{display:grid;grid-template-columns:56px 1fr;gap:16px;align-items:center;background:rgba(255,255,255,.1);border-radius:20px;padding:16px 20px;transition:background .25s}
.points li:hover{background:rgba(255,255,255,.18)}
.points .badge{width:56px;height:56px;background:var(--yellow);color:var(--navy);font-size:1.4rem}
.points b{display:block;font-weight:600;font-size:1.1rem}
@media (max-width:860px){.schools{grid-template-columns:1fr}}

/* ---------- final CTA + footer ---------- */
.cta{background:var(--yellow);padding-block:clamp(60px,8vw,90px);text-align:center;position:relative;overflow:hidden}
.cta h2{font-size:clamp(2.2rem,5vw,3.6rem)}
.cta p{margin-top:12px;font-size:1.25rem}
.cta .btn{margin-top:30px}
.foot{background:var(--navy);color:rgba(255,255,255,.85);padding-block:56px 28px;font-size:.98rem}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:32px}
.foot-co,.foot nav{display:flex;flex-direction:column;gap:6px;min-width:0}
.foot b{color:var(--white);font-weight:600;font-size:1.1rem;margin-bottom:4px}
.foot-co a{text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
.foot-bottom{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:40px;padding-top:20px;border-top:1px solid rgba(255,255,255,.15);font-size:.88rem;color:rgba(255,255,255,.65)}
@media (max-width:760px){.foot-grid{grid-template-columns:1fr}}
.p-note{margin-top:16px;font-size:.95rem;max-width:30em}
.p-note a{font-weight:500}
/* legal page */
.legal{max-width:760px;margin-inline:auto;padding-block:clamp(48px,7vw,90px)}
.legal h1{font-size:clamp(2.2rem,4.6vw,3.2rem)}
.legal .intro{margin-top:14px;font-size:1.15rem}
.legal h2{font-size:1.6rem;margin:46px 0 10px;scroll-margin-top:24px}
.legal h3{font-size:1.2rem;margin:26px 0 6px}
.legal p,.legal li{font-size:1.05rem}
.legal p+p{margin-top:10px}
.legal ul{padding-left:1.2em;margin:8px 0 0;display:grid;gap:6px}
.legal a{font-weight:500}
.legal .box{background:var(--grey);border-radius:20px;padding:22px 24px;margin-top:22px;display:grid;gap:4px}
.legal .toc{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.legal .toc a{background:var(--yellow);border-radius:999px;padding:.35em 1em;text-decoration:none}
.legal .updated{margin-top:46px;font-size:.92rem;opacity:.8}
.foot a{text-decoration:none;color:var(--white)}
.foot a:hover{color:var(--yellow)}

/* modal */
.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:rgba(27,26,85,.55)}
.modal-card{position:relative;width:min(480px,100%);background:var(--white);border-radius:28px;padding:clamp(24px,4vw,38px);animation:pop .45s cubic-bezier(.3,1.5,.5,1) both}
@keyframes pop{from{transform:scale(.85);opacity:0}}
.modal-card h3{font-size:1.9rem;margin-bottom:14px}
.modal-card .badge{position:absolute;top:-30px;right:24px;width:74px;height:74px;background:var(--yellow);font-size:.82rem}
.co-row{display:flex;justify-content:space-between;padding:14px 0;border-block:2px dashed #E3E1EE;font-weight:500}
.methods{display:flex;gap:8px;margin:16px 0;flex-wrap:wrap}
.methods span{background:var(--grey);border-radius:999px;padding:.35em .95em;font-size:.95rem}
.modal-card p{font-size:1.02rem}
.modal-card .btn{margin-top:22px;width:100%}

.pre{opacity:0;transform:translateY(30px)}
.in{transition:opacity .8s ease,transform .8s cubic-bezier(.2,1.1,.3,1)}
.p-info > *{animation:rise .8s cubic-bezier(.2,1.1,.3,1) both}
.p-info > :nth-child(2){animation-delay:.08s}.p-info > :nth-child(3){animation-delay:.16s}.p-info > :nth-child(4){animation-delay:.24s}.p-info > :nth-child(5){animation-delay:.32s}
.slides{animation:rise 1s .2s cubic-bezier(.2,1.1,.3,1) both}
@keyframes rise{from{opacity:0;transform:translateY(26px)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.pre{opacity:1;transform:none}html{scroll-behavior:auto}}
