@font-face{font-family:P;font-weight:600;src:url(/fonts/poppins-600.woff2) format('woff2');font-display:swap}
@font-face{font-family:P;font-weight:800;src:url(/fonts/poppins-800.woff2) format('woff2');font-display:swap}
:root{--navy:#1e2978;--teal:#0e8fa5;--yel:#ffd93b;--ink:#1b2447;--bg:#fff8de;--bg2:#d6f3f8;--card:#fff;--ok:#16a34a;--bad:#e5484d;--mut:#5b6486;--r:22px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0}
body{font-family:P,system-ui,'Segoe UI',Roboto,sans-serif;font-weight:600;color:var(--ink);background:linear-gradient(180deg,var(--bg),var(--bg2)) fixed;min-height:100vh;line-height:1.45}
h1,h2,h3{font-weight:800;line-height:1.15;margin:0 0 .5em}
a{color:var(--navy)}
.wrap{max-width:980px;margin:0 auto;padding:0 16px}
.top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 0}
.logo{font-weight:800;text-decoration:none;background:var(--navy);color:#fff;padding:7px 16px;border-radius:30px;font-size:15px}
.logo small{color:var(--yel);font-weight:800}
.top nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn{display:inline-block;border:0;cursor:pointer;font:800 16px P,sans-serif;text-decoration:none;color:#fff;background:var(--navy);padding:13px 22px;border-radius:30px;box-shadow:0 4px 0 rgba(0,0,0,.18);transition:transform .08s}
.btn:active{transform:translateY(2px);box-shadow:0 2px 0 rgba(0,0,0,.18)}
.btn.yel{background:var(--yel);color:var(--navy)}.btn.teal{background:var(--teal)}.btn.ghost{background:#fff;color:var(--navy);box-shadow:inset 0 0 0 2px var(--navy)}
.btn.sm{padding:8px 16px;font-size:14px}.btn.red{background:var(--bad)}.btn[disabled]{opacity:.5;pointer-events:none}
.hero{display:grid;gap:18px;align-items:center;padding:14px 0 26px}
.hero h1{font-size:clamp(30px,7vw,52px);color:var(--navy)}.hero h1 span{color:var(--teal)}
.hero p{font-size:17px;color:var(--mut)}
.cast{display:flex;justify-content:center;gap:2px;align-items:flex-end}
.cast .char{width:23vw;max-width:150px}
@media(min-width:760px){.hero{grid-template-columns:1.1fr 1fr}}
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.g4{grid-template-columns:repeat(2,1fr)}
@media(min-width:760px){.g4{grid-template-columns:repeat(4,1fr)}}
.card{background:var(--card);border-radius:var(--r);padding:20px;box-shadow:0 6px 18px rgba(30,41,120,.10)}
.card.navy{background:var(--navy);color:#fff}.card.navy h2,.card.navy h3{color:#fff}.card.navy p{color:#dbeafe}
.sec{padding:22px 0}.sec h2{font-size:clamp(24px,5vw,32px);color:var(--navy)}
.pill{display:inline-block;background:var(--yel);color:var(--navy);font-weight:800;border-radius:30px;padding:4px 14px;font-size:13px}
.steps{counter-reset:s;display:grid;gap:12px}.steps li{list-style:none;background:#fff;border-radius:var(--r);padding:14px 16px 14px 62px;position:relative;box-shadow:0 4px 12px rgba(30,41,120,.08)}
.steps li:before{counter-increment:s;content:counter(s);position:absolute;left:14px;top:12px;width:36px;height:36px;border-radius:50%;background:var(--navy);color:var(--yel);display:grid;place-items:center;font-weight:800}
.foot{padding:26px 0 40px;color:var(--mut);font-size:14px;text-align:center}
label{display:block;font-weight:800;margin:12px 0 6px}
input[type=text],input[type=email],input[type=password],input[type=number],select{width:100%;font:600 16px P,sans-serif;padding:13px 14px;border:2px solid #cbd5e1;border-radius:14px;background:#fff;color:var(--ink)}
input:focus,select:focus{outline:3px solid var(--yel);border-color:var(--navy)}
.err{background:#ffe4e4;color:#9b1c1f;border-radius:14px;padding:10px 14px;margin:10px 0;font-size:14px}
.ok{background:#dcfce7;color:#166534;border-radius:14px;padding:10px 14px;margin:10px 0;font-size:14px}
.auth{max-width:440px;margin:10px auto}
.chk{display:flex;gap:10px;align-items:flex-start;font-size:14px;margin:14px 0}.chk input{width:22px;height:22px;margin-top:2px}
.kid{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.kid .char{width:92px;flex:none}
.kid h3{margin:0}.kid small{color:var(--mut)}
.pick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pick label{margin:0;cursor:pointer;text-align:center;font-size:13px}
.pick input{position:absolute;opacity:0}
.pick .box{border:3px solid transparent;border-radius:18px;background:#f1f5ff;padding:6px 2px}
.pick input:checked+.box{border-color:var(--navy);background:#fff6c9}
.pick .char{width:100%}
.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl td,.tbl th{padding:6px 8px;border-bottom:1px solid #e2e8f0;text-align:left}
.stars{color:#f59e0b;letter-spacing:2px;white-space:nowrap}.stars .off{color:#d1d5db}
details summary{cursor:pointer;font-weight:800}
/* --- karakter: gerakan --- */
.char{display:block;overflow:visible}
.pose-idle .bodyg,.pose-wave .bodyg{animation:bob 2.6s ease-in-out infinite}
.pose-cheer .bodyg{animation:hop .7s ease-in-out infinite}
.pose-wave .armR{animation:wave .7s ease-in-out infinite alternate;transform:rotate(-150deg)}
.pose-cheer .armL{transform:rotate(150deg)}.pose-cheer .armR{transform:rotate(-150deg)}
.pose-point .armR{transform:rotate(-90deg)}
.pose-sad .headg{transform:rotate(-8deg) translateY(8px)}.pose-sad .arm{transform:rotate(0)}
.pose-think .armR{transform:rotate(-155deg) scaleY(.7)}
@keyframes bob{50%{transform:translateY(-4px)}}
@keyframes hop{50%{transform:translateY(-16px)}}
@keyframes wave{from{transform:rotate(-170deg)}to{transform:rotate(-125deg)}}
@media(prefers-reduced-motion:reduce){.char *{animation:none!important}}
/* --- peta belajar --- */
.mapbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0}
.me{display:flex;align-items:center;gap:10px}.me .char{width:64px}
.unit{background:#fff;border-radius:var(--r);padding:18px;margin:14px 0;box-shadow:0 6px 18px rgba(30,41,120,.1)}
.unit h3{margin:0 0 4px}.unit .sub{color:var(--mut);font-size:14px;margin-bottom:14px}
.path{display:grid;gap:12px}
.node{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--ink);background:#f4f7ff;border-radius:20px;padding:12px 14px;border:3px solid transparent}
.node .n{width:52px;height:52px;border-radius:50%;background:var(--navy);color:var(--yel);display:grid;place-items:center;font:800 22px P;flex:none}
.node.done .n{background:var(--ok);color:#fff}.node.lock{opacity:.5;pointer-events:none}.node.next{border-color:var(--yel);background:#fffbe0}
.node b{display:block}.node small{color:var(--mut)}
.review{display:flex;align-items:center;gap:12px;background:var(--navy);color:#fff;border-radius:var(--r);padding:14px 16px;text-decoration:none}
.review b{font-size:17px}.review small{color:#cfe3ff}
/* --- pelajaran --- */
body.lessonpage{background:linear-gradient(180deg,#e9f6ff,#fff8de) fixed}
.lbar{position:sticky;top:0;z-index:5;background:rgba(255,255,255,.92);backdrop-filter:blur(6px);padding:10px 16px;display:flex;align-items:center;gap:12px}
.lbar a{font-size:22px;text-decoration:none}.prog{flex:1;height:14px;background:#e2e8f0;border-radius:10px;overflow:hidden}.prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--teal),var(--yel));border-radius:10px;transition:width .3s}
#stage{max-width:560px;margin:0 auto;padding:16px;min-height:calc(100vh - 70px);display:flex;flex-direction:column;gap:14px}
.say{display:flex;align-items:flex-end;gap:10px}.say .char{width:96px;flex:none}
.bubble{position:relative;background:#fff;border-radius:20px;padding:12px 16px;box-shadow:0 4px 12px rgba(30,41,120,.12);flex:1}
.bubble .en{font-size:21px;font-weight:800;color:var(--navy)}.bubble .id{font-size:14px;color:var(--mut)}
.bubble:before{content:'';position:absolute;left:-9px;bottom:22px;border:9px solid transparent;border-right-color:#fff;border-left:0}
.say.r{flex-direction:row-reverse}.say.r .bubble:before{left:auto;right:-9px;border-right-color:transparent;border-left-color:#fff;border-left-width:9px;border-right-width:0}
.big{background:#fff;border-radius:var(--r);padding:20px;text-align:center;box-shadow:0 6px 18px rgba(30,41,120,.1)}
.big .word{font-size:clamp(34px,10vw,52px);font-weight:800;color:var(--navy)}.big .idn{color:var(--mut)}
.vis{display:grid;place-items:center;min-height:130px}.vis .char{width:120px}
.sw{width:120px;height:120px;border-radius:30px;box-shadow:inset 0 -8px 0 rgba(0,0,0,.12),0 6px 14px rgba(0,0,0,.15)}
.dots{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;max-width:260px}.dots svg{width:34px;height:34px}
.bigtxt{font-size:64px;font-weight:800;color:var(--navy)}
.spk{display:inline-flex;align-items:center;gap:8px;background:var(--yel);color:var(--navy);border:0;border-radius:30px;font:800 16px P;padding:10px 18px;cursor:pointer;box-shadow:0 3px 0 rgba(0,0,0,.15)}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.opt{border:3px solid #dbe4ff;background:#fff;border-radius:20px;padding:10px;min-height:96px;display:grid;place-items:center;cursor:pointer;font:800 20px P;color:var(--ink);text-align:center}
.opt .sw{width:68px;height:68px;border-radius:20px}.opt .char{width:70px}.opt .dots svg{width:20px;height:20px}.opt .dots{max-width:150px;gap:3px}
.opt.good{border-color:var(--ok);background:#dcfce7}.opt.bad{border-color:var(--bad);background:#ffe4e4;animation:shake .3s}
@keyframes shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.opts.one{grid-template-columns:1fr}
.tiles{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;min-height:56px}
.tile{width:54px;height:58px;border-radius:14px;background:var(--yel);color:var(--navy);border:0;font:800 28px P;cursor:pointer;box-shadow:0 4px 0 rgba(0,0,0,.18);text-transform:lowercase}
.slots{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.slot{width:54px;height:62px;border-bottom:5px solid var(--navy);display:grid;place-items:center;font:800 32px P;color:var(--navy)}
.fb{min-height:28px;text-align:center;font-weight:800}.fb.good{color:var(--ok)}.fb.bad{color:var(--bad)}
.sticky{margin-top:auto;display:flex;gap:10px;justify-content:center;padding-top:6px}
.res{text-align:center}.res .char{width:170px;margin:0 auto}.res .st{font-size:54px;letter-spacing:6px;color:#f59e0b}.res .st .off{color:#d1d5db}
.mic{background:var(--bad);color:#fff}.mic.on{animation:pulse 1s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 12px rgba(229,72,77,.25)}}
.hint{font-size:13px;color:var(--mut);text-align:center}

.ic{width:20px;height:20px;vertical-align:-4px;margin-right:4px}
.stars{font-size:15px;letter-spacing:1px}.kid .stars{display:flex;flex-wrap:wrap;gap:2px 10px}
.art{width:130px;height:130px;display:block}.opt .art{width:78px;height:78px}.vis .art{width:130px;height:130px}
