/* Layout: an illustrated Odia village behind everything; a hand-drawn monkey on a swing up top; chunky candy-button play card below */
:root{
  --bg:#BFE8FF; --card:#FFFFFF; --ink:#24235E; --ink-soft:#5B5A8C;
  --turmeric:#FFB000; --parrot:#22A95A; --sindoor:#E5432F; --sky:#2E8BD8; --plum:#8E3FB5; --pink:#FF5FA2;
  --line:#E2E8F5; --chip:#FFF6DC; --good:#22A95A; --bad:#E5432F;
  --sky1:#7CCBFF; --sky2:#DDF4FF; --hill1:#7BCB5A; --hill2:#4FAE4A; --ground:#8ED46B; --sunop:1; --moonop:0; --starop:0;
  --shadow:0 5px 0 rgba(36,35,94,.22);
  /* readable type — grows with the screen, never smaller than the first value (phones), capped on big screens */
  --fs-body:clamp(18px,1rem + .6vw,20px);
  --fs-ask:clamp(23px,1.15rem + 2vw,30px);
  --fs-ask-big:clamp(27px,1.3rem + 2.8vw,36px);
  --fs-kicker:clamp(15px,.85rem + .9vw,18px);
  --fs-opt:clamp(24px,1.2rem + 1.6vw,28px);
  --fs-opt-sm:clamp(19px,1rem + 1.1vw,22px);
  --fs-note:clamp(16px,.9rem + .6vw,18px);
  --f-display:"Baloo Bhaina 2","Baloo 2","Baloo Da 2","Baloo Tammudu 2","Baloo Thambi 2","Noto Sans Oriya","Kalinga","Odia Sangam MN","Noto Sans",system-ui,sans-serif;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#141A3C; --card:#262C5E; --ink:#F4F1FF; --ink-soft:#C3C0EA;
  --turmeric:#FFC233; --parrot:#3CCB75; --sindoor:#FF6A55; --sky:#5AAEF0; --plum:#B57BE0; --pink:#FF7DB5;
  --line:#3B4282; --chip:#343A78; --good:#3CCB75; --bad:#FF6A55;
  --sky1:#0E1336; --sky2:#2B3577; --hill1:#1F4E3A; --hill2:#173D2E; --ground:#21503A; --sunop:0; --moonop:1; --starop:1;
  --shadow:0 5px 0 rgba(0,0,0,.4); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#141A3C; --card:#262C5E; --ink:#F4F1FF; --ink-soft:#C3C0EA;
  --turmeric:#FFC233; --parrot:#3CCB75; --sindoor:#FF6A55; --sky:#5AAEF0; --plum:#B57BE0; --pink:#FF7DB5;
  --line:#3B4282; --chip:#343A78; --good:#3CCB75; --bad:#FF6A55;
  --sky1:#0E1336; --sky2:#2B3577; --hill1:#1F4E3A; --hill2:#173D2E; --ground:#21503A; --sunop:0; --moonop:1; --starop:1;
  --shadow:0 5px 0 rgba(0,0,0,.4); color-scheme:dark}

html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--f-display);font-size:var(--fs-body);line-height:1.5;
  -webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;overflow-x:hidden}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;touch-action:manipulation}
button:focus-visible{outline:3px solid var(--sky);outline-offset:2px}

/* ---------- village scene ---------- */
.scene{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.scene svg{width:100%;height:100%;display:block}
.sun{opacity:var(--sunop)} .moon,.nstars{opacity:var(--moonop)}
.rays{transform-origin:0 0;animation:spin 18s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.cloud{animation:drift linear infinite}
.c1{animation-duration:60s}.c2{animation-duration:85s;animation-delay:-30s}.c3{animation-duration:70s;animation-delay:-50s}
@keyframes drift{from{transform:translateX(-260px)}to{transform:translateX(1260px)}}
.bird{animation:fly 22s linear infinite}
.bird path{animation:flap .5s ease-in-out infinite alternate;transform-origin:center;transform-box:fill-box}
@keyframes fly{from{transform:translate(1100px,0)}to{transform:translate(-200px,-60px)}}
@keyframes flap{to{transform:scaleY(-.6)}}
.palm{transform-origin:50% 100%;transform-box:fill-box;animation:sway 4s ease-in-out infinite alternate}
@keyframes sway{from{transform:rotate(-2deg)}to{transform:rotate(2deg)}}
.twinkle{animation:tw 2s ease-in-out infinite alternate}
@keyframes tw{to{opacity:.2}}

.app{position:relative;z-index:1;max-width:560px;margin:0 auto;padding-inline:16px;padding-block:8px 28px;min-height:100%;display:flex;flex-direction:column;gap:12px}

/* top bar */
.bar{display:flex;align-items:center;gap:8px;min-height:52px}
.bar .grow{flex:1;min-width:0}
.pill{white-space:nowrap;display:inline-flex;align-items:center;gap:6px;background:var(--card);border:3px solid var(--turmeric);border-radius:999px;padding:4px 14px;font-weight:800;font-size:20px;box-shadow:var(--shadow);font-variant-numeric:tabular-nums}
.pill.bump{animation:bump .5s}
@keyframes bump{40%{transform:scale(1.35) rotate(-6deg)}}
.iconbtn{width:52px;height:52px;border-radius:16px;background:var(--card);border:3px solid var(--line);box-shadow:var(--shadow);font-size:24px;display:grid;place-items:center}
.iconbtn:active,.btn:active,.opt:active,.tile:active,.chipbtn:active,.lcard:active{transform:translateY(4px);box-shadow:none}

/* ---------- swing + monkey ---------- */
.stage{position:relative;height:210px}
.beam{position:absolute;top:0;left:4%;right:4%;height:34px}
.beam svg{width:100%;height:100%;overflow:visible}
.swing{position:absolute;top:18px;left:calc(28% - 70px);width:140px;height:190px;transform-origin:50% 0;animation:swing 2.8s ease-in-out infinite}
.stage.flip .swing{left:auto;right:calc(28% - 70px)}
.swing svg{width:100%;height:100%;overflow:visible}
@keyframes swing{0%,100%{transform:rotate(13deg)}50%{transform:rotate(-13deg)}}
.swing.happy{animation:swingfast .45s ease-in-out 4}
@keyframes swingfast{0%,100%{transform:rotate(26deg)}50%{transform:rotate(-26deg)}}
.swing.oops{animation:wobble .8s ease}
@keyframes wobble{0%{transform:rotate(0)}20%{transform:rotate(-20deg)}40%{transform:rotate(14deg)}60%{transform:rotate(-8deg)}100%{transform:rotate(0)}}
.swing.tickle{animation:tickle .1s linear 8}
@keyframes tickle{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.mkbtn{position:absolute;inset:30% 10% 0 10%;border-radius:50%;z-index:2}

.mk .ex-happy,.mk .ex-oops,.mk .ex-eat,.mk .cool,.mk .crown{display:none}
.mk.happy .ex-normal,.mk.oops .ex-normal,.mk.eat .ex-normal{display:none}
.mk.happy .ex-happy{display:inline}
.mk.oops .ex-oops{display:inline}
.mk.eat .ex-eat,.mk.eat .ex-happy-eyes{display:inline}
.mk.wear-cool .cool{display:inline}
.mk.wear-crown .crown{display:inline}
.mk.wear-cool .eyes-n,.mk.wear-cool .ex-happy-eyes-only{visibility:hidden}
.mk .blink{transform-origin:70px 74px;animation:blink 4.5s infinite}
@keyframes blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
.mk .tail{transform-origin:92px 140px;animation:tail 1.6s ease-in-out infinite alternate}
@keyframes tail{to{transform:rotate(18deg)}}
.mk .body{transition:transform .25s}
.mk.happy .body{animation:hop .45s ease-in-out 4}
@keyframes hop{50%{transform:translateY(-16px)}}
.mk .dizzy{transform-origin:70px 40px;animation:spin 1s linear infinite}
.mk.eat .chomp{animation:chomp .25s ease-in-out infinite alternate;transform-origin:70px 94px}
@keyframes chomp{to{transform:scaleY(.4)}}

.bubble{position:absolute;bottom:18px;right:0;max-width:56%;background:var(--card);border:3px solid var(--ink);border-radius:20px 20px 4px 20px;padding:8px 14px;font-size:clamp(16px,.9rem + .7vw,19px);font-weight:800;line-height:1.4;box-shadow:var(--shadow);animation:pop .35s cubic-bezier(.3,1.6,.6,1)}
.stage.flip .bubble{right:auto;left:0;border-radius:20px 20px 20px 4px}
@keyframes pop{from{transform:scale(.3);opacity:0}}

.crab{position:absolute;bottom:0;left:-120px;width:96px;height:70px;z-index:3;pointer-events:none}
.crab svg{width:100%;height:100%;overflow:visible}
.crab.go{animation:crabrun 1.5s ease-in-out}
@keyframes crabrun{0%{left:-120px}35%,65%{left:calc(28% - 40px)}100%{left:-120px}}
.stage.flip .crab.go{animation-name:crabrunR}
@keyframes crabrunR{0%{left:-120px}35%,65%{left:calc(72% - 60px)}100%{left:-120px}}
.crab .claw{transform-box:fill-box;transform-origin:50% 100%;animation:snap .15s ease-in-out infinite alternate}
@keyframes snap{to{transform:rotate(-18deg)}}
.crab .legs{animation:scuttle .12s linear infinite alternate}
@keyframes scuttle{to{transform:translateY(-2px)}}
.ouch{position:absolute;top:30px;font-size:22px;font-weight:800;color:var(--sindoor);-webkit-text-stroke:1px #fff;paint-order:stroke;animation:ouch .9s ease forwards;z-index:4;pointer-events:none}
@keyframes ouch{0%{transform:scale(.2)}30%{transform:scale(1.3) rotate(-8deg)}100%{transform:translateY(-30px);opacity:0}}

/* ---------- home ---------- */
.hero{text-align:center;margin-top:4px}
.hero h1{margin:0;font-weight:800;font-size:clamp(46px,13vw,72px);line-height:1;color:var(--sindoor);-webkit-text-stroke:6px #fff;paint-order:stroke fill;filter:drop-shadow(0 5px 0 rgba(36,35,94,.25))}
.hero h1 span{display:inline-block;animation:jelly 2.4s ease-in-out infinite}
.hero h1 span:nth-child(2){animation-delay:.12s;color:var(--turmeric)}.hero h1 span:nth-child(3){animation-delay:.24s;color:var(--parrot)}
.hero h1 span:nth-child(5){animation-delay:.36s;color:var(--sky)}.hero h1 span:nth-child(6){animation-delay:.48s;color:var(--plum)}
@keyframes jelly{0%,60%,100%{transform:none}70%{transform:translateY(-10px) scale(1.08,.94)}80%{transform:translateY(0) scale(.95,1.06)}}
.tag{display:inline-block;margin-top:6px;background:var(--card);border:3px solid var(--ink);border-radius:999px;padding:2px 14px;font-weight:800;font-size:clamp(15px,.85rem + .5vw,17px);box-shadow:var(--shadow)}
.lessons{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.lcard{position:relative;text-align:left;background:var(--card);border:3px solid var(--c);border-radius:24px;padding:12px;box-shadow:0 6px 0 var(--c);display:flex;flex-direction:column;gap:4px;min-height:168px;overflow:hidden}
.lcard .num{align-self:flex-start;font-size:13px;font-weight:800;color:#fff;border-radius:8px;padding:0 8px;background:var(--c)}
.lcard .pic{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;font-size:38px;background:color-mix(in srgb,var(--c) 18%,transparent);animation:bob 2.2s ease-in-out infinite}
.lcard:nth-child(2) .pic{animation-delay:.4s}.lcard:nth-child(3) .pic{animation-delay:.8s}.lcard:nth-child(4) .pic{animation-delay:1.2s}
@keyframes bob{50%{transform:translateY(-6px) rotate(-6deg)}}
.lcard .ttl{font-weight:800;font-size:clamp(16px,.9rem + .7vw,19px);line-height:1.3}
.lcard .stars{font-size:18px;letter-spacing:2px;margin-top:auto}
.foot{font-size:14px;color:var(--ink);text-align:center;margin:0;background:var(--card);border-radius:12px;padding:4px 10px;opacity:.9}

/* ---------- play ---------- */
.progress{position:relative;height:22px;background:var(--card);border-radius:999px;border:3px solid var(--ink);overflow:visible}
.progress i{display:block;height:100%;width:0;border-radius:999px;background:repeating-linear-gradient(45deg,var(--parrot) 0 12px,#57D68A 12px 24px);transition:width .5s;animation:stripes 1s linear infinite;background-size:34px 34px}
@keyframes stripes{to{background-position:34px 0}}
.progress b{position:absolute;top:-13px;font-size:26px;transition:left .5s;transform:translateX(-50%)}
.card{background:var(--card);border:3px solid var(--ink);border-radius:26px;padding:16px;box-shadow:0 7px 0 rgba(36,35,94,.28);display:flex;flex-direction:column;gap:14px;min-width:0;animation:slidein .4s cubic-bezier(.3,1.4,.6,1)}
@keyframes slidein{from{transform:translateY(30px) scale(.96);opacity:0}}
.ask{font-weight:800;font-size:var(--fs-ask);line-height:1.45;margin:0;text-wrap:balance;overflow-wrap:break-word}
.ask.center{text-align:center}.ask.big{font-size:var(--fs-ask-big)}
.ask.title{font-size:clamp(26px,1.3rem + 2.4vw,34px)}
.story{margin:0;font-size:var(--fs-body);line-height:1.6}
.note{margin:0;text-align:center;font-size:var(--fs-note);color:var(--ink-soft);font-weight:700}
.score{margin:0;font-weight:800;font-size:clamp(20px,1.1rem + 1vw,24px)}
.kicker{display:inline-block;align-self:flex-start;font-size:var(--fs-kicker);line-height:1.4;font-weight:800;color:#fff;background:var(--plum);border-radius:10px;padding:2px 10px;margin:0}
.picbox{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}
.svgbox svg{display:block;width:min(240px,72vw);height:auto;border-radius:18px;border:3px dashed var(--turmeric);box-shadow:0 4px 0 rgba(36,35,94,.15)}
.bigpic{width:110px;height:110px;border-radius:50%;display:grid;place-items:center;font-size:70px;line-height:1;background:radial-gradient(circle at 35% 30%,#fff 0,var(--chip) 60%);border:3px dashed var(--turmeric);animation:bob 2.4s ease-in-out infinite}
.word{font-size:clamp(36px,1.9rem + 2vw,46px);font-weight:800;line-height:1.2;display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:center}
.blank{display:inline-grid;place-items:center;min-width:66px;height:60px;border:4px dashed var(--turmeric);border-radius:14px;background:var(--chip);padding:0 8px;animation:pulse 1.2s infinite}
.blank.filled{border-style:solid;border-color:var(--good);color:var(--good);animation:pop .4s cubic-bezier(.3,1.8,.6,1)}
@keyframes pulse{50%{transform:scale(1.06)}}
.opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.opts.wide{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.opt{position:relative;min-height:64px;border-radius:18px;background:linear-gradient(#fff6,#fff0 60%),var(--chip);border:3px solid var(--ink);box-shadow:0 5px 0 var(--ink);font-size:var(--fs-opt);font-weight:800;padding:8px 10px;line-height:1.3;overflow-wrap:break-word;hyphens:manual}
.opt.small{font-size:var(--fs-opt-sm)}
.opt.right{background:var(--good);color:#fff;animation:pop .4s cubic-bezier(.3,1.8,.6,1)}
.opt.wrong{background:var(--bad);color:#fff;animation:shake .4s}
.opt[disabled]{opacity:.5}.opt.right[disabled]{opacity:1}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-9px) rotate(-3deg)}75%{transform:translateX(9px) rotate(3deg)}}
.shake{animation:shake .4s}

.slots{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.slot{min-width:60px;height:66px;border-radius:16px;border:4px dashed var(--line);display:grid;place-items:center;font-size:32px;font-weight:800;padding:0 6px}
.slot.on{border-style:solid;border-color:var(--parrot);background:var(--chip);animation:pop .35s cubic-bezier(.3,1.8,.6,1)}
.pool{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.tile{min-width:68px;height:68px;border-radius:18px;background:linear-gradient(#fff8,#fff0 55%),var(--turmeric);color:#24235E;font-size:32px;font-weight:800;border:3px solid var(--ink);box-shadow:0 5px 0 var(--ink);padding:0 10px;animation:bob 2s ease-in-out infinite}
.tile:nth-child(2n){animation-delay:.5s}.tile:nth-child(3n){animation-delay:1s}
.tile.used{visibility:hidden}

.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;min-height:52px}
.chipbtn{display:inline-flex;align-items:center;gap:6px;min-height:54px;border-radius:999px;background:var(--chip);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);padding:4px 14px;font-size:var(--fs-opt-sm);font-weight:800;line-height:1.3;text-align:left}
.chipbtn .e{font-size:28px}
.chipbtn.sel{background:var(--sky);color:#fff;transform:scale(1.08) rotate(-2deg)}
.bins{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bins:has(> :nth-child(3)){grid-template-columns:repeat(3,minmax(0,1fr))}
.hero h1.long{font-size:clamp(36px,10vw,60px);line-height:1.15}
.bin{border-radius:20px;border:4px solid var(--bc);background:var(--card);min-height:112px;padding:8px;display:flex;flex-direction:column;gap:6px;align-items:stretch;text-align:center}
.bin .lab{font-weight:800;font-size:var(--fs-note);border-radius:12px;padding:2px 6px;background:var(--bc);color:var(--bt)}
.bin .got{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;font-size:16px;font-weight:800}
.bin .got span{background:var(--chip);border-radius:8px;padding:0 6px;animation:pop .35s}

.mixrow{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;font-size:34px;font-weight:800}
.blob{width:82px;height:82px;border-radius:46% 54% 50% 50%/55% 45% 55% 45%;display:grid;place-items:center;font-size:15px;color:#fff;font-weight:800;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:inset -7px -9px 0 rgba(0,0,0,.14),inset 6px 6px 0 rgba(255,255,255,.3);animation:goo 3s ease-in-out infinite}
@keyframes goo{50%{border-radius:56% 44% 42% 58%/45% 58% 42% 55%}}
.blob.q{background:var(--chip);color:var(--ink);text-shadow:none;border:4px dashed var(--ink-soft);font-size:34px;box-shadow:none}
.blob.got{animation:pop .5s cubic-bezier(.3,1.8,.6,1),goo 3s ease-in-out infinite}
.opt .sw{display:inline-block;width:24px;height:24px;border-radius:50%;vertical-align:-4px;margin-right:6px;border:3px solid var(--ink)}

.learn{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.learn span{font-size:var(--fs-note);background:var(--chip);border:3px solid var(--ink);border-radius:12px;padding:0 10px;font-weight:800}
.btn{min-height:60px;border-radius:20px;background:linear-gradient(#fff5,#fff0 55%),var(--parrot);color:#fff;font-size:22px;font-weight:800;border:3px solid var(--ink);box-shadow:0 6px 0 var(--ink);padding:6px 18px}
.btn.alt{background:linear-gradient(#fff5,#fff0 55%),var(--card);color:var(--ink)}
.btn.next{background:linear-gradient(#fff5,#fff0 55%),var(--sky)}
.btn.big{animation:pulse 1.4s infinite}
.row{display:flex;gap:10px;flex-wrap:wrap}.row>*{flex:1 1 140px}
.result{text-align:center}
.bigstars{display:flex;justify-content:center;gap:6px}
.bigstars span{font-size:56px;line-height:1.1;animation:starpop .6s cubic-bezier(.3,1.8,.6,1) backwards}
.bigstars span:nth-child(2){animation-delay:.3s}.bigstars span:nth-child(3){animation-delay:.6s}
@keyframes starpop{from{transform:scale(0) rotate(-180deg)}}
.result h2{margin:0;font-size:36px;font-weight:800;color:var(--sindoor);-webkit-text-stroke:4px var(--card);paint-order:stroke fill}
.feedback{min-height:30px;text-align:center;font-weight:800;font-size:clamp(19px,1rem + 1vw,22px);background:var(--card);border-radius:14px;padding:2px 8px}
.feedback:empty{background:none}
.feedback.good{color:var(--good)}.feedback.bad{color:var(--bad)}

.combo{position:fixed;left:50%;top:22%;z-index:70;transform:translateX(-50%);pointer-events:none;font-size:30px;font-weight:800;color:#fff;background:linear-gradient(90deg,#FF5F1F,#FFB000);border:4px solid #24235E;border-radius:20px;padding:6px 20px;white-space:nowrap;box-shadow:0 6px 0 #24235E;animation:combo 1.6s ease forwards}
@keyframes combo{0%{transform:translateX(-50%) scale(0) rotate(-20deg)}20%{transform:translateX(-50%) scale(1.2) rotate(4deg)}35%,80%{transform:translateX(-50%) scale(1)}100%{transform:translateX(-50%) translateY(-40px);opacity:0}}

.fx{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:50}
.dot{position:absolute;border-radius:50%;opacity:.95;animation:fly2 1.1s ease-out forwards}
@keyframes fly2{to{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}
.banana{position:fixed;font-size:36px;z-index:60;pointer-events:none;animation:toCount .9s ease-in forwards}
@keyframes toCount{to{left:var(--tx);top:var(--ty);transform:scale(.4) rotate(540deg);opacity:.3}}
.rain{position:absolute;top:-60px;font-size:36px;animation:rain linear forwards}
@keyframes rain{to{transform:translateY(110vh) rotate(720deg)}}

.tile.small{min-width:0;height:auto;min-height:56px;font-size:var(--fs-opt-sm);line-height:1.3;padding:6px 12px;border-radius:14px}
.slots.small{flex-direction:column;align-items:stretch}
.slot.small{height:auto;min-height:48px;font-size:var(--fs-opt-sm);justify-content:start;padding:4px 12px;text-align:left}
.word.small{font-size:clamp(22px,1.2rem + 1.2vw,28px)}
.word.long{font-size:clamp(28px,1.5rem + 2vw,40px)}
.unitnav{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.unitnav::-webkit-scrollbar{display:none}
.unitnav button{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:46px;border-radius:999px;background:var(--card);border:3px solid var(--uc);box-shadow:0 4px 0 var(--uc);padding:2px 14px;font-weight:800;font-size:15px;white-space:nowrap}
.unit{display:flex;flex-direction:column;gap:10px;scroll-margin-top:12px}
.unithead{display:flex;align-items:center;gap:10px;background:var(--uc);color:#fff;border:3px solid var(--ink);border-radius:20px;padding:6px 14px;box-shadow:var(--shadow)}
.unithead .up{font-size:30px;line-height:1}
.unithead .ut{flex:1;min-width:0;line-height:1.2}
.unithead .ut small{display:block;font-size:13px;opacity:.9;font-weight:700}
.unithead .ut b{font-size:19px;font-weight:800}
.unithead .us{font-weight:800;font-size:15px;background:rgba(0,0,0,.18);border-radius:999px;padding:2px 10px;white-space:nowrap}
/* ---------- start / class pickers ---------- */
.subjects{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.subj:last-child:nth-child(odd){grid-column:1/-1}
.subj{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;background:var(--card);border:4px solid var(--c);border-radius:28px;padding:16px 10px 14px;box-shadow:0 7px 0 var(--c);min-height:190px}
.subj .big{font-size:64px;line-height:1;width:96px;height:96px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--c) 16%,transparent);animation:bob 2.4s ease-in-out infinite}
.subj:nth-child(2) .big{animation-delay:.6s}
.subj b{font-size:28px;font-weight:800;color:var(--c);line-height:1.1}
.subj small{font-size:15px;font-weight:700;color:var(--ink-soft)}
.subj.soon{border-style:dashed;border-color:var(--line);box-shadow:0 7px 0 var(--line)}
.subj.soon .big{filter:grayscale(1);opacity:.5}
.subj.soon b{color:var(--ink-soft)}
.subj:active,.clsbtn:active,.mcard:active{transform:translateY(4px);box-shadow:none}
.clsgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.clsgrid .clsbtn:last-child:nth-child(odd){grid-column:1/-1}
.clsbtn{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--card);border:3px solid var(--c);border-radius:22px;padding:14px 8px;box-shadow:0 6px 0 var(--c);min-height:132px;justify-content:center}
.clsbtn .cn{font-size:46px;font-weight:800;line-height:1;color:var(--c)}
.clsbtn .ct{font-size:17px;font-weight:800}
.clsbtn .cs{font-size:13px;font-weight:800;border-radius:999px;padding:1px 10px;background:var(--c);color:#fff;margin-top:4px}
.clsbtn.soon{border-style:dashed;box-shadow:0 6px 0 var(--line);border-color:var(--line)}
.clsbtn.soon .cn{color:var(--ink-soft);opacity:.6}
.clsbtn.soon .cs{background:var(--line);color:var(--ink)}
.pagehead{display:flex;align-items:center;gap:10px;background:var(--card);border:3px solid var(--ink);border-radius:20px;padding:8px 14px;box-shadow:var(--shadow)}
.pagehead .ph{font-size:34px;line-height:1}
.pagehead b{font-size:22px;font-weight:800;line-height:1.2}
.pagehead small{display:block;font-size:14px;color:var(--ink-soft);font-weight:700}
/* ---------- math: number-path layout ---------- */
.mpath{position:relative;display:flex;flex-direction:column;gap:6px;padding-block:4px}
.mpath::before{content:'';position:absolute;top:20px;bottom:20px;left:50%;width:0;border-left:6px dotted var(--sky);transform:translateX(-3px);opacity:.55}
.mstep{position:relative;display:grid;grid-template-columns:62px minmax(0,1fr);gap:10px;align-items:center}
.mstep:nth-child(even){grid-template-columns:minmax(0,1fr) 62px}
.mstep:nth-child(even) .mnum{order:2}
.mnum{z-index:1;width:62px;height:62px;border-radius:50%;background:var(--c);color:#fff;font-size:26px;font-weight:800;display:grid;place-items:center;border:4px solid var(--ink);box-shadow:var(--shadow);font-variant-numeric:tabular-nums}
.mnum.puzzle{font-size:30px}
.mcard{z-index:1;display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;align-items:center;text-align:left;background:var(--card);border:3px solid var(--c);border-radius:20px;padding:10px 12px;box-shadow:0 5px 0 var(--c);min-width:0}
.mcard .mp{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:32px;background:color-mix(in srgb,var(--c) 16%,transparent)}
.mcard .mt{font-weight:800;font-size:clamp(16px,.9rem + .7vw,19px);line-height:1.25}
.mcard .mtp{display:block;font-size:13px;color:var(--ink-soft);font-weight:700}
.mcard .ms{display:block;font-size:15px;letter-spacing:2px}
/* ---------- count round ---------- */
.objs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center}
.grp{display:inline-flex;flex-wrap:wrap;gap:2px 4px;max-width:236px;justify-content:center;padding:6px 10px;border-radius:16px;background:var(--chip);border:3px dashed var(--line)}
.ob{position:relative;font-size:30px;line-height:1.15}
.ob.gone{opacity:.4}
.ob.gone::after{content:'✕';position:absolute;inset:0;display:grid;place-items:center;color:var(--bad);font-weight:800;font-size:32px;opacity:1}
.op{font-size:34px;font-weight:800;color:var(--ink)}
.coin{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFF6C8,#E6B422 70%);border:3px solid #8A6500;font-weight:800;font-size:19px;color:#3B2A00;box-shadow:inset -3px -4px 0 rgba(0,0,0,.15)}
.bundle{display:inline-grid;place-items:center;min-width:64px;height:56px;border-radius:14px;background:var(--chip);border:3px solid var(--ink);font-weight:800;font-size:20px;padding:0 8px}
/* ---------- basic knowledge ---------- */
.gkset{gap:10px}
.gkrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between}
.gklab{font-weight:800}
.segs{display:flex;gap:6px}
.seg{min-height:46px;border-radius:999px;border:3px solid var(--ink);background:var(--chip);padding:2px 14px;font-weight:800;font-size:16px}
.seg.on{background:var(--parrot);color:#fff}
.gkn{font-size:13px;font-weight:800;color:var(--good)}
.gkn.empty{color:var(--ink-soft)}
.gksec{gap:10px}
.gksec h3{margin:0;font-size:20px;font-weight:800}
.gkf{display:flex;flex-direction:column;gap:4px;font-weight:800;font-size:15px}
.gkin{font:inherit;font-size:18px;color:var(--ink);background:var(--chip);border:3px solid var(--line);border-radius:14px;padding:8px 12px;min-height:48px;width:100%;box-sizing:border-box;-webkit-user-select:text;user-select:text}
.gkin:focus{outline:none;border-color:var(--sky)}
.gknote{margin:0;font-size:14px;color:var(--ink-soft)}
.gkstat{margin:0;font-weight:800;color:var(--good)}
.gkcl{display:flex;flex-direction:column;gap:6px}
.gkci{display:flex;align-items:center;gap:8px;background:var(--chip);border-radius:14px;padding:6px 8px}
.gkcq{flex:1;min-width:0;font-weight:800;font-size:15px;overflow-wrap:anywhere}
.gkcq small{display:block;font-weight:700;color:var(--ink-soft)}
.gkci .iconbtn{width:44px;height:44px;font-size:20px;flex:none}
@media (max-width:380px){.subjects,.clsgrid{grid-template-columns:1fr}}
@media (max-width:380px){.lessons{grid-template-columns:1fr}.bigpic{width:92px;height:92px;font-size:58px}.word{font-size:34px}.word.long{font-size:28px}.opts{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===== Parent / Student roles ===== */
.rolechip{min-height:44px;border-radius:999px;background:var(--card);border:3px solid var(--parrot);box-shadow:var(--shadow);font-weight:800;font-size:16px;padding:2px 12px;color:var(--ink);white-space:nowrap}
.rolechip.p{border-color:var(--plum)}
.rolechip:active{transform:translateY(4px);box-shadow:none}
@media (max-width:380px){.rolechip{font-size:14px;padding:2px 8px}}
.modal-back{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:rgba(20,26,60,.45);animation:fadein .25s}
.modal{width:min(440px,100%);background:var(--card);color:var(--ink);border:3px solid var(--ink);border-radius:28px;padding:20px 16px;box-shadow:0 8px 0 rgba(36,35,94,.3);text-align:center;animation:slidein .4s cubic-bezier(.3,1.4,.6,1)}
.modal h2{margin:0;font-family:var(--f-display);font-size:30px}
.modal .sub{margin:2px 0 14px;color:var(--ink-soft);font-weight:700}
.rolegrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rolebtn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 8px;border-radius:22px;border:3px solid var(--ink);box-shadow:0 6px 0 var(--ink);color:#fff;font-size:24px;font-weight:800;min-height:150px;justify-content:center}
.rolebtn.kid{background:linear-gradient(#fff5,#fff0 55%),var(--parrot)}
.rolebtn.par{background:linear-gradient(#fff5,#fff0 55%),var(--plum)}
.rolebtn .re{font-size:52px;line-height:1.1}
.rolebtn small{font-size:14px;opacity:.95}
.rolebtn:active{transform:translateY(4px);box-shadow:0 2px 0 var(--ink)}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.authform{gap:12px}
.authform .kicker{align-self:flex-start}
.pwrow{display:flex;gap:8px;align-items:center}
.pwrow .gkin{flex:1;min-width:0}
.eye{width:52px;height:52px;flex:none;border-radius:14px;background:var(--chip);border:3px solid var(--line);font-size:22px}
.linkbtn{background:none;border:0;color:var(--sky);font-weight:800;font-size:17px;text-decoration:underline;padding:6px;align-self:center}
.pstats{flex-direction:row;justify-content:space-around;text-align:center}
.pstats b{display:block;font-size:24px}
.pstats small{color:var(--ink-soft);font-weight:700}
.pgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ptile{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;text-align:center;padding:14px;border-radius:22px;background:var(--card);color:var(--ink);border:3px solid var(--c);box-shadow:0 6px 0 var(--c);min-height:88px}
.ptile .pe{font-size:34px}
.ptile b{display:block;font-size:19px}
.ptile small{display:block;color:var(--ink-soft);font-size:14px;font-weight:700}
.ptile:active{transform:translateY(4px);box-shadow:0 2px 0 var(--c)}
details.gksec>summary{cursor:pointer;list-style:none}
details.gksec>summary::-webkit-details-marker{display:none}
details.gksec>summary h3{display:inline}
details.gksec>summary::after{content:' ▾';font-weight:800}
details.gksec:not([open])>summary::after{content:' ▸'}
.gkform{display:flex;flex-direction:column;gap:10px;padding:12px;border:3px dashed var(--line);border-radius:20px}
.gkform.editing{border-color:var(--turmeric);background:var(--chip)}
.gkform .kicker{align-self:flex-start;margin:0}
.gkform .row .btn{flex:1}
.gkci.on{outline:3px solid var(--turmeric);border-radius:14px}
.iconbtn.arm{border-color:var(--bad);background:#FFE3DE}

/* ---------- language picker (v16) ---------- */
.langchip{border:3px solid #fff;background:var(--card);color:var(--ink);border-radius:999px;padding:4px 10px;font:inherit;font-weight:800;font-size:16px;line-height:1.2;box-shadow:0 3px 0 rgba(36,35,94,.18);cursor:pointer;white-space:nowrap}
.langchip:active{transform:translateY(2px);box-shadow:none}
.langgrid .clsbtn.on{background:color-mix(in srgb,var(--c) 14%,var(--card));outline:4px solid var(--c);outline-offset:2px}
.langgrid .clsbtn .ct{font-size:22px}
.langgrid .clsbtn .cs{font-size:14px;opacity:.85}
/* Tamil / Telugu / Malayalam words are long: let titles wrap */
:root:lang(ta) .hero h1,:root:lang(te) .hero h1{font-size:clamp(34px,9vw,58px);line-height:1.15}
/* top bar must fit one phone row in every language */
.bar .rolechip{min-width:0;max-width:36vw;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.bar .langchip{flex:none}
@media (max-width:420px){.bar{gap:6px}.langchip{padding:4px 8px;font-size:15px}}
