@font-face{font-family:Andika;src:url(fonts/Andika-Regular.ttf)}@font-face{font-family:Andika;font-weight:700;src:url(fonts/Andika-Bold.ttf)}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
:root{--night:#1b1446;--violet:#5b3cc4;--pink:#ff4fa3;--lime:#5cc72a;--cyan:#1fa9e6;--yellow:#ffd23f;--ink:#211a4d}
body{margin:0;font-family:Andika,"Segoe UI",Arial,sans-serif;background:#f1eeff;background-image:radial-gradient(circle at 12% 18%,#b9a8ff66 0 2px,transparent 3px),radial-gradient(circle at 70% 40%,#ff9fd066 0 3px,transparent 4px),radial-gradient(circle at 40% 80%,#8fd9ff66 0 2px,transparent 3px);background-size:180px 200px;color:var(--ink);font-size:18px;line-height:1.35;overflow-x:hidden}
button{font-family:inherit;cursor:pointer;color:inherit}a{color:inherit}
#download-book{position:fixed;top:11px;right:12px;z-index:200;background:var(--yellow);color:#222;font-weight:bold;padding:10px 14px;border-radius:22px;text-decoration:none;box-shadow:0 2px 6px #0004;min-height:44px;display:flex;align-items:center;font-size:15px}
#download-book:hover{background:#ffc400}#download-book .short{display:none}
.top{background:linear-gradient(90deg,var(--night),#3a2a8c);color:#fff;display:flex;align-items:center;gap:14px;padding:8px 290px 8px 16px;min-height:66px;border-bottom:5px solid var(--pink);background-image:radial-gradient(circle at 30% 30%,#fff 0 1px,transparent 2px),radial-gradient(circle at 70% 70%,#fff9 0 1px,transparent 2px),linear-gradient(90deg,var(--night),#3a2a8c);background-size:60px 50px,90px 70px,100% 100%}
.brand{color:#fff;text-decoration:none;display:flex;flex-direction:column;line-height:1.05;min-width:0}
.logo{font-weight:700;font-size:28px;white-space:nowrap}.p{color:#ff8fd0}.g{color:#a8f06e}
.brand small{color:#d8ccff;font-size:14px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stk{margin-left:auto;flex:none;background:#ffffff1f;border:2px solid #ffffff55;border-radius:22px;padding:8px 14px;text-decoration:none;color:#fff;font-size:16px;min-height:44px;display:flex;align-items:center;gap:4px;white-space:nowrap}
main{max-width:1020px;margin:0 auto;padding:14px 12px 40px}
footer{text-align:center;color:#5a4f8a;font-size:14px;padding:6px 12px 40px}footer div{font-weight:700;font-size:16px;color:var(--ink)}footer p{margin:4px}
.ic svg,.art svg{width:100%;height:100%;display:block}
.hero{background:radial-gradient(circle at 80% 20%,#ffffff22 0 2px,transparent 3px) 0 0/50px 40px,radial-gradient(circle at 20% 60%,#ffffff33 0 1.5px,transparent 2.5px) 0 0/70px 60px,linear-gradient(150deg,#1b1446,#3a2a8c 55%,#7b3fc4);color:#fff;border-radius:24px;padding:22px 24px;display:grid;grid-template-columns:1.3fr 1fr;gap:16px;align-items:center}
.hero h1{margin:0;font-size:40px;line-height:1.05}.hero h1 span{display:block;color:#a8f06e}
.hero .tag{display:inline-block;background:var(--yellow);color:#222;font-weight:700;border-radius:14px;padding:4px 12px;margin:0 0 10px}
.hero p{margin:6px 0;font-size:18px;color:#e6deff}
.hero .mascot{width:min(240px,100%);justify-self:center;animation:bob 3s ease-in-out infinite;filter:drop-shadow(0 8px 12px #0006)}
@keyframes bob{50%{transform:translateY(-10px)}}
.bigbtn{display:inline-block;background:var(--yellow);color:#222;border:none;border-radius:30px;padding:14px 26px;font-size:22px;font-weight:700;box-shadow:0 4px 0 #c99a00;margin-top:10px;text-decoration:none}
.bigbtn:active{transform:translateY(3px);box-shadow:0 1px 0 #c99a00}
h2.sec{color:var(--night);margin:20px 4px 10px;font-size:24px}
.lvls{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.lv{background:#fff;border-radius:18px;border:3px solid var(--c);padding:10px;text-align:center;text-decoration:none;box-shadow:0 3px 0 var(--c)}
.lv .art{width:64px;height:64px;margin:0 auto}.lv b{display:block;font-size:19px}.lv small{display:block;color:#5a4f8a;font-size:14px}
.bar{height:10px;background:#e6e0ff;border-radius:6px;overflow:hidden;margin-top:6px}.bar i{display:block;height:100%;background:var(--c,#5cc72a)}
.acts{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.act{background:#fff;border-radius:20px;padding:14px;text-decoration:none;display:flex;gap:12px;align-items:center;box-shadow:0 3px 0 var(--c),0 4px 12px #0001;border:3px solid var(--c);transition:transform .15s;min-height:104px}
.act:hover{transform:translateY(-3px)}.act .ic{width:70px;height:70px;flex:none;background:color-mix(in srgb,var(--c) 14%,#fff);border-radius:16px;padding:4px}
.act h3{margin:0;font-size:20px;color:var(--c)}.act p{margin:2px 0 0;font-size:15px;color:#4a4078}.act .n{font-size:13px;font-weight:700;color:#fff;background:var(--c);border-radius:10px;padding:1px 8px}
.ph{display:flex;align-items:center;gap:10px;margin:4px 0 10px;flex-wrap:wrap}
.ph h1{margin:0;font-size:28px;color:var(--night);flex:1;min-width:180px}
.back{background:#fff;border:3px solid var(--violet);color:var(--violet);border-radius:22px;padding:8px 16px;font-size:17px;font-weight:700;text-decoration:none;min-height:46px;display:inline-flex;align-items:center}
.lvpick{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.lvpick button{border:2px solid #cfc4ff;background:#fff;border-radius:18px;padding:6px 12px;font-size:15px;font-weight:700;min-height:42px}
.lvpick button.on{background:var(--violet);border-color:var(--violet);color:#fff}
.btn{background:var(--violet);color:#fff;border:none;border-radius:22px;padding:10px 18px;font-size:18px;font-weight:700;min-height:48px;box-shadow:0 3px 0 #3a2490}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 #3a2490}
.btn.k{background:var(--pink);box-shadow:0 3px 0 #b8226e}.btn.y{background:var(--yellow);color:#222;box-shadow:0 3px 0 #c99a00}.btn.g{background:#2fa84f;box-shadow:0 3px 0 #1d7034}.btn.w{background:#fff;color:var(--violet);border:2px solid #cfc4ff;box-shadow:0 3px 0 #b9b0e6}
.btn[disabled]{opacity:.45}
.panel{background:#fff;border-radius:22px;padding:16px;box-shadow:0 3px 12px #0001}
.score{background:#fff;border-radius:16px;padding:6px 14px;font-weight:700;color:var(--night);font-size:18px}
.info{margin:0 0 12px;color:#4a4078;font-size:17px}
.ctrl{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}
/* flashcards */
.wgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
.wt{background:#fff;border:3px solid #ddd5ff;border-radius:16px;min-height:62px;font-size:24px;font-weight:700;position:relative}
.wt:hover{border-color:var(--pink)}.wt.got:after{content:"⭐";position:absolute;top:2px;right:4px;font-size:14px}
.modal{position:fixed;inset:0;background:#120c35d9;z-index:300;display:flex;align-items:center;justify-content:center;padding:12px}
.card{background:#fff;border-radius:26px;max-width:560px;width:100%;padding:18px;text-align:center;position:relative;border:6px solid var(--c,var(--violet));max-height:96vh;overflow:auto}
.card .x{position:absolute;top:8px;right:8px;width:48px;height:48px;border-radius:50%;border:none;background:#f0edff;font-size:24px}
.card .lvtag{display:inline-block;background:var(--c);color:#fff;border-radius:12px;padding:2px 12px;font-weight:700;font-size:14px}
.bigw{font-size:96px;font-weight:700;line-height:1.1;color:var(--night);margin:14px 0 6px;word-break:break-word}
.sent{font-size:24px;margin:6px 0 12px}.sent b{color:var(--pink)}
.abtn{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.abtn button{border:none;border-radius:16px;padding:10px 4px;font-size:17px;font-weight:700;color:#fff;min-height:64px;background:var(--c)}
.abtn button span{display:block;font-size:24px}.abtn button.done{outline:4px solid var(--yellow)}
.cardnav{display:flex;justify-content:space-between;gap:8px;margin-top:12px;flex-wrap:wrap}
.hw{border-radius:6px;padding:0 2px;transition:background .1s}.hw.hl{background:var(--yellow);color:#222}
/* quiz options */
.qtop{display:flex;gap:6px;justify-content:center;margin-bottom:10px;flex-wrap:wrap}.qtop i{width:22px;height:22px;border-radius:50%;background:#e0daff;display:inline-block}.qtop i.ok{background:#ffd23f}.qtop i.no{background:#ff9ac8}.qtop i.cur{outline:3px solid var(--violet)}
.qbox{text-align:center}.qprompt{font-size:24px;font-weight:700;color:var(--night);margin:6px 0 12px}
.opts{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;max-width:560px;margin:0 auto}
.opt{background:#fff;border:4px solid #ddd5ff;border-radius:20px;min-height:96px;font-size:42px;font-weight:700;color:var(--night)}
.opt:hover{border-color:var(--violet)}.opt.ok{background:#e4f9d9;border-color:#2fa84f}.opt.no{background:#ffe3f0;border-color:var(--pink);animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.hearbig{font-size:22px;padding:14px 26px}
.result{text-align:center;padding:20px}.result .art{width:150px;height:150px;margin:0 auto}.result h2{font-size:32px;color:var(--violet);margin:6px}.result .st{font-size:44px}
/* word search */
.wsw{display:grid;grid-template-columns:auto 220px;gap:16px;align-items:start}
.ws{display:grid;gap:3px;touch-action:none;user-select:none;-webkit-user-select:none;background:#2a1f6b;padding:6px;border-radius:16px;width:max-content;max-width:100%}
.ws div{width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;background:#fff;border-radius:8px;color:var(--night)}
.ws div.sel{background:var(--yellow)}.ws div.f{background:#a8f06e}.ws div.f.f2{background:#8fd9ff}.ws div.f.f3{background:#ffb3da}
.wl{display:flex;flex-direction:column;gap:6px}.wl button{display:flex;justify-content:space-between;align-items:center;border:2px solid #ddd5ff;background:#fff;border-radius:14px;padding:6px 12px;font-size:22px;font-weight:700;min-height:44px}
.wl button.f{text-decoration:line-through;background:#e4f9d9;border-color:#2fa84f;color:#2a6d33}
/* build */
.slots{display:flex;gap:8px;justify-content:center;margin:12px 0;flex-wrap:wrap}.slots span{width:58px;height:68px;border-bottom:5px solid var(--violet);font-size:46px;font-weight:700;display:flex;align-items:flex-end;justify-content:center;color:var(--night)}
.slots.ok span{color:#2fa84f;border-color:#2fa84f}
.tiles{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.tiles button{width:62px;height:62px;border-radius:16px;border:none;background:var(--cyan);color:#fff;font-size:36px;font-weight:700;box-shadow:0 4px 0 #157bb0}
.tiles button.used{visibility:hidden}.tiles button.no{animation:shake .4s;background:var(--pink)}
.peek{font-size:44px;font-weight:700;color:#c9c0f0;min-height:56px}
/* fill */
.fs{font-size:32px;font-weight:700;color:var(--night);margin:10px 0 16px;line-height:1.5}.fs .blank{display:inline-block;min-width:110px;border-bottom:5px dashed var(--pink);color:#2fa84f}
.opts.three{grid-template-columns:repeat(3,1fr)}
/* memory */
.mem{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:640px;margin:0 auto}
.mc{aspect-ratio:4/3;border:none;border-radius:16px;font-size:30px;font-weight:700;background:linear-gradient(150deg,#3a2a8c,#7b3fc4);color:#fff;position:relative;box-shadow:0 4px 0 #24196a;padding:0}
.mc .bk{width:56%;height:80%;margin:auto;display:block}.mc .fr{display:none}
.mc.up{background:#fff;border:4px solid #ddd5ff;color:var(--night)}.mc.up .bk{display:none}.mc.up .fr{display:block}
.mc.done{background:#e4f9d9;border:4px solid #2fa84f;opacity:.8}
/* pop */
.sky{position:relative;height:420px;border-radius:22px;background:radial-gradient(circle at 20% 30%,#fff 0 1.5px,transparent 2.5px) 0 0/60px 50px,radial-gradient(circle at 70% 80%,#fff8 0 1px,transparent 2px) 0 0/80px 70px,linear-gradient(#120c35,#3a2a8c);overflow:hidden}
.met{position:absolute;width:150px;height:150px;border:none;background:none;padding:0;animation:float 4s ease-in-out infinite}
.met .art{position:absolute;inset:0}.met b{position:absolute;left:56%;top:57%;transform:translate(-50%,-50%);font-size:30px;color:#fff;-webkit-text-stroke:1px #1d1747;paint-order:stroke fill;text-shadow:0 2px 0 #1d1747}
.met.zap{animation:zap .45s forwards}.met.no{animation:shake .4s}
@keyframes float{50%{transform:translateY(-14px)}}@keyframes zap{to{transform:scale(1.6) rotate(30deg);opacity:0}}
/* speed */
.race{text-align:center}.timer{font-size:28px;font-weight:700;color:var(--pink)}.flash{font-size:110px;font-weight:700;color:var(--night);min-height:150px;display:flex;align-items:center;justify-content:center;word-break:break-word}
.track{height:18px;background:#e6e0ff;border-radius:10px;overflow:hidden;max-width:520px;margin:6px auto}.track i{display:block;height:100%;background:linear-gradient(90deg,#ff4fa3,#ffd23f);width:100%;transition:width 1s linear}
/* speak */
.spk{text-align:center}.spk .bigw{font-size:84px}
.recb{background:var(--pink)}.recb.on{background:#e01d4b;animation:pulse 1s infinite}@keyframes pulse{50%{box-shadow:0 0 0 10px #ff4fa344}}
.meter{height:12px;max-width:300px;margin:8px auto;background:#eee;border-radius:6px;overflow:hidden}.meter i{display:block;height:100%;width:0;background:#2fa84f}
/* stars */
.lvbox{background:#fff;border-radius:20px;padding:14px;margin-bottom:14px;border:3px solid var(--c)}
.lvbox h2{margin:0;display:flex;align-items:center;gap:10px;font-size:22px}.lvbox h2 .art{width:52px;height:52px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chips span{border:2px solid #ddd5ff;border-radius:12px;padding:3px 9px;font-weight:700;font-size:16px;color:#9a91c8}.chips span.on{background:#fff5c4;border-color:#ffc400;color:var(--night)}
.trs{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.trs div{background:#fff;border-radius:16px;padding:10px;text-align:center;opacity:.4;border:3px dashed #cfc4ff}.trs div.on{opacity:1;border:3px solid var(--yellow)}.trs b{display:block;font-size:34px}
#toast{visibility:hidden;position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(140px);background:var(--night);color:#fff;padding:12px 20px;border-radius:20px;font-weight:700;z-index:500;transition:transform .3s;max-width:92vw;text-align:center}
#toast.on{visibility:visible;transform:translateX(-50%) translateY(0)}#toast.warn{background:#c2185b}
.confetti{position:fixed;top:-40px;font-size:28px;z-index:450;animation:fall 2.4s linear forwards;pointer-events:none}@keyframes fall{to{transform:translateY(110vh) rotate(360deg)}}
@media (max-width:760px){
 #download-book{top:10px;right:8px;padding:8px 12px}#download-book .long{display:none}#download-book .short{display:inline}
 .top{padding:8px 92px 8px 10px;gap:8px}.logo{font-size:20px}.brand small{font-size:12px}.stk{padding:6px 10px;font-size:15px}.stk .lbl{display:none}
 .hero{grid-template-columns:1fr;text-align:center;padding:18px}.hero h1{font-size:31px}.hero .mascot{width:140px;grid-row:1}
 .lvls{grid-template-columns:repeat(2,1fr)}
 .bigw{font-size:68px}.spk .bigw{font-size:60px}.sent{font-size:21px}
 .opt{font-size:34px;min-height:84px}
 .wsw{grid-template-columns:1fr}.ws{margin:0 auto}.ws div{width:calc((100vw - 66px)/8);height:calc((100vw - 66px)/8);font-size:20px}
 .wl{flex-direction:row;flex-wrap:wrap;justify-content:center}.wl button{font-size:19px;gap:6px}
 .slots span{width:44px;height:56px;font-size:38px}.tiles button{width:54px;height:54px;font-size:30px}
 .fs{font-size:25px}.opts.three{grid-template-columns:1fr 1fr 1fr;gap:8px}.opts.three .opt{font-size:26px}
 .mem{grid-template-columns:repeat(3,1fr);gap:8px}.mc{font-size:24px}
 .sky{height:440px}.met{width:96px;height:96px}.met b{font-size:22px}
 .flash{font-size:72px;min-height:110px}
 .ph h1{font-size:23px}
 .lvbox h2{font-size:18px;flex-wrap:wrap}.lvbox h2 .art{width:40px;height:40px}
 .lvpick{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.lvpick button{flex:none;font-size:14px;padding:5px 10px}.lvpick .gr{display:none}
}
@media (max-width:380px){.logo{font-size:18px}.brand small{display:none}}
/* live mic level ring */
.recb.on{outline:calc(2px + var(--lv,0)*16px) solid #ff4fa366;outline-offset:3px;transition:outline-width .08s}
.hint{min-height:1.4em;margin:4px 0;font-weight:700;color:#7a3db8;font-size:20px}
