/* ===== RESET & ROOT ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --purple:#8B5CF6;--purple-l:#A78BFA;--purple-d:#6D28D9;
  --orange:#F97316;--orange-l:#FB923C;
  --green:#10B981;--green-l:#34D399;
  --blue:#3B82F6;--blue-l:#60A5FA;
  --pink:#EC4899;--yellow:#F59E0B;--yellow-l:#FCD34D;--red:#EF4444;
  --bg:#F0F4FF;--card:#FFF;--text:#1E1B4B;--muted:#6B7280;
  --r:20px;--sh:0 8px 32px rgba(139,92,246,.15);--shx:0 16px 48px rgba(139,92,246,.25)
}
html{font-size:16px}
body{
  font-family:'Nunito',sans-serif;background:var(--bg);color:var(--text);
  min-height:100vh;overflow-x:hidden;
  background-image:radial-gradient(circle at 15% 15%,rgba(139,92,246,.08) 0%,transparent 50%),
    radial-gradient(circle at 85% 85%,rgba(249,115,22,.08) 0%,transparent 50%)
}
.ff{font-family:'Fredoka One',cursive;letter-spacing:.02em}

/* ===== SCREENS ===== */
.screen{display:none;min-height:calc(100vh - 56px);flex-direction:column}
.screen.active{display:flex}

/* ===== BG SHAPES ===== */
.bgs{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.bgs span{position:absolute;border-radius:50%;opacity:.06;animation:bgf 8s ease-in-out infinite}
.bgs span:nth-child(1){width:400px;height:400px;background:var(--purple);top:-100px;left:-100px}
.bgs span:nth-child(2){width:300px;height:300px;background:var(--orange);bottom:-50px;right:-50px;animation-delay:2s}
.bgs span:nth-child(3){width:200px;height:200px;background:var(--blue);top:50%;right:10%;animation-delay:4s}
.bgs span:nth-child(4){width:150px;height:150px;background:var(--green);top:30%;left:5%;animation-delay:6s}
@keyframes bgf{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-30px) scale(1.05)}}

/* ===== HEADER ===== */
.app-hdr{
  position:relative;z-index:10;height:56px;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 20px;
  background:rgba(255,255,255,.92);backdrop-filter:blur(12px);
  border-bottom:2px solid rgba(139,92,246,.1)
}
.logo{display:flex;align-items:center;gap:8px;font-family:'Fredoka One',cursive;font-size:1.4rem;color:var(--purple);cursor:pointer}
.logo-ic{font-size:1.6rem}
.hdr-stats{display:flex;gap:7px;align-items:center}
.badge{
  display:flex;align-items:center;gap:5px;background:var(--bg);
  border:2px solid rgba(139,92,246,.15);border-radius:50px;
  padding:4px 11px;font-weight:800;font-size:.78rem
}
.badge.xp{color:var(--purple);border-color:rgba(139,92,246,.3)}
.badge.streak{color:var(--orange);border-color:rgba(249,115,22,.3)}
.hdr-btn{
  background:var(--purple);color:#fff;border:none;border-radius:50px;
  padding:5px 13px;font-family:'Nunito',sans-serif;font-weight:800;font-size:.78rem;
  cursor:pointer;transition:all .2s;white-space:nowrap
}
.hdr-btn:hover{background:var(--purple-d);transform:translateY(-1px)}

/* ===== OWL (pure CSS) ===== */
.owl{display:inline-block;position:relative;animation:owlf 3s ease-in-out infinite}
@keyframes owlf{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.owl-body{width:88px;height:96px;background:linear-gradient(160deg,var(--purple),var(--purple-d));border-radius:50% 50% 45% 45%;position:relative;margin:0 auto;box-shadow:0 8px 24px rgba(139,92,246,.4)}
.owl-ear{position:absolute;width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:26px solid var(--purple-d);top:-13px}
.owl-ear.l{left:10px;transform:rotate(-15deg)}.owl-ear.r{right:10px;transform:rotate(15deg)}
.owl-face{position:absolute;width:64px;height:54px;background:rgba(255,255,255,.15);border-radius:50%;top:18px;left:50%;transform:translateX(-50%)}
.owl-eye{position:absolute;width:20px;height:20px;background:#fff;border-radius:50%;top:10px;display:flex;align-items:center;justify-content:center}
.owl-eye.l{left:7px}.owl-eye.r{right:7px}
.owl-pupil{width:11px;height:11px;background:#1E1B4B;border-radius:50%;transition:transform .3s}
.owl-beak{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:11px solid var(--yellow)}
.owl-wing{position:absolute;width:28px;height:44px;background:linear-gradient(160deg,var(--purple-l),var(--purple));border-radius:50% 20% 40% 50%;top:36px;transition:transform .3s}
.owl-wing.l{left:-16px;transform:rotate(-10deg);transform-origin:top right}
.owl-wing.r{right:-16px;transform:rotate(10deg);transform-origin:top left}
.owl-belly{position:absolute;width:48px;height:44px;background:rgba(255,255,255,.18);border-radius:50%;bottom:8px;left:50%;transform:translateX(-50%)}
.owl-feet{display:flex;justify-content:center;gap:18px;margin-top:-6px}
.owl-foot{width:18px;height:12px;background:var(--yellow);border-radius:40% 40% 50% 50%}
/* States */
.owl.happy .owl-pupil{transform:scaleY(.6)}
.owl.happy .owl-wing.l{transform:rotate(-35deg)}
.owl.happy .owl-wing.r{transform:rotate(35deg)}
.owl.sad .owl-pupil{transform:translateY(3px)}
.owl.thinking .owl-pupil{transform:translate(-2px,-2px)}

/* ===== HOME ===== */
#home{align-items:center}
.home-hero{position:relative;z-index:1;text-align:center;padding:32px 20px 20px}
.home-hero h1{
  font-size:clamp(2rem,6vw,3.4rem);
  background:linear-gradient(135deg,var(--purple),var(--orange));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  margin-bottom:8px
}
.home-hero p{font-size:1rem;color:var(--muted);font-weight:700;max-width:420px;margin:0 auto 20px}
.home-hero .owl{margin-bottom:14px}
.grade-grid{
  position:relative;z-index:1;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
  gap:13px;padding:0 16px 36px;max-width:800px;width:100%;margin:0 auto
}
.grade-card{
  background:var(--card);border-radius:var(--r);padding:20px 12px;text-align:center;cursor:pointer;
  transition:all .25s cubic-bezier(.34,1.56,.64,1);box-shadow:var(--sh);border:3px solid transparent
}
.grade-card:hover{transform:translateY(-6px) scale(1.03);box-shadow:var(--shx)}
.grade-card:active{transform:scale(.97)}
.gc-emoji{font-size:2.3rem;margin-bottom:6px;display:block}
.gc-name{font-family:'Fredoka One',cursive;font-size:1rem;margin-bottom:3px}
.gc-range{font-size:.7rem;color:var(--muted);font-weight:700}
.gc-bar{margin-top:8px;height:5px;background:rgba(0,0,0,.08);border-radius:99px;overflow:hidden}
.gc-fill{height:100%;border-radius:99px;transition:width .6s}
[data-g="K"]{border-color:rgba(139,92,246,.3)}[data-g="K"] .gc-name{color:var(--purple)}[data-g="K"] .gc-fill{background:var(--purple)}
[data-g="1"]{border-color:rgba(249,115,22,.3)}[data-g="1"] .gc-name{color:var(--orange)}[data-g="1"] .gc-fill{background:var(--orange)}
[data-g="2"]{border-color:rgba(16,185,129,.3)}[data-g="2"] .gc-name{color:var(--green)}[data-g="2"] .gc-fill{background:var(--green)}
[data-g="3"]{border-color:rgba(59,130,246,.3)}[data-g="3"] .gc-name{color:var(--blue)}[data-g="3"] .gc-fill{background:var(--blue)}
[data-g="4"]{border-color:rgba(236,72,153,.3)}[data-g="4"] .gc-name{color:var(--pink)}[data-g="4"] .gc-fill{background:var(--pink)}
[data-g="5"]{border-color:rgba(245,158,11,.3)}[data-g="5"] .gc-name{color:var(--yellow)}[data-g="5"] .gc-fill{background:var(--yellow)}
[data-g="6"]{border-color:rgba(239,68,68,.3)}[data-g="6"] .gc-name{color:var(--red)}[data-g="6"] .gc-fill{background:var(--red)}

/* ===== TOPICS ===== */
#topics{align-items:flex-start}
.topics-hdr{position:relative;z-index:1;padding:22px 16px 10px;display:flex;align-items:center;gap:12px}
.back-btn{background:var(--card);border:2px solid rgba(139,92,246,.2);border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.1rem;transition:all .2s;flex-shrink:0;box-shadow:var(--sh)}
.back-btn:hover{background:var(--purple);color:#fff;border-color:var(--purple)}
.topics-title{font-size:1.5rem}
.topics-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:12px;padding:10px 16px 36px;max-width:800px;width:100%;margin:0 auto}
.topic-card{background:var(--card);border-radius:var(--r);padding:19px 12px;text-align:center;cursor:pointer;transition:all .25s cubic-bezier(.34,1.56,.64,1);box-shadow:0 4px 16px rgba(0,0,0,.07);border:2px solid transparent}
.topic-card:hover{transform:translateY(-4px);box-shadow:var(--sh)}
.topic-card:active{transform:scale(.97)}
.topic-card.done{border-color:var(--yellow)}
.tc-icon{font-size:2rem;margin-bottom:6px;display:block}
.tc-name{font-weight:800;font-size:.9rem;margin-bottom:3px}
.tc-desc{font-size:.7rem;color:var(--muted);font-weight:600}
.tc-stars{margin-top:6px;font-size:.85rem;letter-spacing:2px}

/* ===== QUIZ ===== */
#quiz{align-items:flex-start}
.quiz-hdr{position:relative;z-index:1;width:100%;padding:12px 16px;display:flex;align-items:center;gap:9px}
.quiz-info{flex:1;min-width:0}
.quiz-tname{font-family:'Fredoka One',cursive;font-size:.95rem;color:var(--purple);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-wrap{width:100%;height:8px;background:rgba(139,92,246,.12);border-radius:99px;overflow:hidden;margin-top:4px}
.pb-fill{height:100%;background:linear-gradient(90deg,var(--purple),var(--purple-l));border-radius:99px;transition:width .5s}
.q-count{font-weight:800;font-size:.8rem;color:var(--muted);white-space:nowrap}
.timer-b{background:var(--orange);color:#fff;font-weight:800;font-size:.88rem;border-radius:50px;padding:4px 10px;min-width:48px;text-align:center;transition:background .3s}
.timer-b.urgent{background:var(--red);animation:pt .5s ease infinite alternate}
@keyframes pt{from{transform:scale(1)}to{transform:scale(1.08)}}
.quiz-main{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;align-items:center;padding:8px 16px 20px;width:100%;max-width:620px;margin:0 auto}
.diff-row{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:8px}
.diff-label{font-size:.7rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.diff-dots{display:flex;gap:4px}
.dd{width:8px;height:8px;border-radius:50%;background:rgba(139,92,246,.2);transition:background .3s}
.dd.on{background:var(--purple)}
.q-owl{transform:scale(.52);transform-origin:right center;height:58px}
.q-owl .owl{animation:none}
.q-card{background:var(--card);border-radius:22px;padding:24px 20px;text-align:center;box-shadow:var(--sh);width:100%;margin-bottom:16px;position:relative;overflow:hidden}
.q-card::before{content:'';position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--purple),var(--orange),var(--green))}
.q-visual{font-size:clamp(1.4rem,5vw,2.1rem);font-weight:900;line-height:1.4;margin-bottom:5px;min-height:50px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px}
.q-hint{font-size:.8rem;color:var(--muted);font-weight:700}
.cdots{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:9px auto;max-width:240px}
.cdot{width:24px;height:24px;border-radius:50%;animation:popin .3s cubic-bezier(.34,1.56,.64,1)}
@keyframes popin{from{transform:scale(0)}to{transform:scale(1)}}
.ans-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-bottom:11px}
.ans-btn{
  background:var(--card);border:3px solid rgba(139,92,246,.15);border-radius:var(--r);
  padding:14px 10px;font-family:'Nunito',sans-serif;
  font-size:clamp(.88rem,3vw,1.25rem);font-weight:800;color:var(--text);cursor:pointer;
  transition:all .2s cubic-bezier(.34,1.56,.64,1);box-shadow:0 4px 12px rgba(0,0,0,.06);
  min-height:58px;display:flex;align-items:center;justify-content:center;text-align:center
}
.ans-btn:hover:not(:disabled){border-color:var(--purple);transform:translateY(-3px);box-shadow:0 8px 24px rgba(139,92,246,.2)}
.ans-btn:active:not(:disabled){transform:scale(.96)}
.ans-btn.correct{background:linear-gradient(135deg,var(--green),var(--green-l));border-color:var(--green);color:#fff;transform:scale(1.04);box-shadow:0 8px 32px rgba(16,185,129,.4)}
.ans-btn.wrong{background:linear-gradient(135deg,var(--red),#F87171);border-color:var(--red);color:#fff;animation:shake .4s}
.ans-btn.dim{opacity:.3}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
.nin-wrap{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;margin-bottom:11px}
.nin{border:3px solid rgba(139,92,246,.3);border-radius:var(--r);padding:12px 15px;font-family:'Fredoka One',cursive;font-size:1.75rem;text-align:center;width:155px;color:var(--text);outline:none;transition:border-color .2s;background:#fff}
.nin:focus{border-color:var(--purple);box-shadow:0 0 0 4px rgba(139,92,246,.1)}
.nin.correct{border-color:var(--green)}.nin.wrong{border-color:var(--red);animation:shake .4s}
.sub-btn{background:linear-gradient(135deg,var(--purple),var(--purple-d));color:#fff;border:none;border-radius:var(--r);padding:12px 20px;font-family:'Nunito',sans-serif;font-weight:800;font-size:.92rem;cursor:pointer;transition:all .2s;box-shadow:0 4px 16px rgba(139,92,246,.4)}
.sub-btn:hover{transform:translateY(-2px)}
.feedback{width:100%;padding:10px 15px;border-radius:var(--r);font-weight:800;font-size:.88rem;text-align:center;margin-bottom:9px;opacity:0;transform:translateY(10px);transition:all .3s}
.feedback.show{opacity:1;transform:translateY(0)}
.feedback.ok{background:rgba(16,185,129,.1);color:var(--green);border:2px solid rgba(16,185,129,.3)}
.feedback.no{background:rgba(239,68,68,.07);color:#B91C1C;border:2px solid rgba(239,68,68,.2)}
.next-btn{background:linear-gradient(135deg,var(--orange),var(--orange-l));color:#fff;border:none;border-radius:50px;padding:12px 32px;font-family:'Nunito',sans-serif;font-weight:900;font-size:.98rem;cursor:pointer;transition:all .25s cubic-bezier(.34,1.56,.64,1);box-shadow:0 4px 20px rgba(249,115,22,.4);opacity:0;transform:translateY(10px);pointer-events:none}
.next-btn.show{opacity:1;transform:translateY(0);pointer-events:all}
.next-btn:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 8px 28px rgba(249,115,22,.5)}

/* ===== RESULTS ===== */
#results{align-items:center;justify-content:center}
.results-card{background:var(--card);border-radius:26px;padding:30px 26px;box-shadow:var(--shx);max-width:420px;width:calc(100% - 32px);position:relative;z-index:1;margin:16px 0}
.results-owl{margin-bottom:10px}
.results-title{font-size:1.8rem;margin-bottom:4px;background:linear-gradient(135deg,var(--purple),var(--orange));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.results-subtitle{color:var(--muted);font-weight:700;font-size:.9rem;margin-bottom:14px}
.stars-row{display:flex;justify-content:center;gap:8px;margin-bottom:14px;font-size:2rem}
.star{transition:all .3s;display:inline-block}
.star.earned{animation:starpop .4s cubic-bezier(.68,-.55,.265,1.55)}
@keyframes starpop{0%{transform:scale(0)}100%{transform:scale(1)}}
.results-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-bottom:18px}
.res-stat{background:var(--bg);border-radius:12px;padding:12px 6px;text-align:center}
.rs-val{font-family:'Fredoka One',cursive;font-size:1.6rem;color:var(--purple)}
.rs-label{font-size:.65rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.xp-earned{background:linear-gradient(135deg,rgba(139,92,246,.1),rgba(249,115,22,.1));border:2px solid rgba(139,92,246,.2);border-radius:50px;padding:6px 16px;font-weight:900;color:var(--purple);font-size:.9rem;margin-bottom:14px;display:inline-block}
.results-btns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.res-btn{border:none;border-radius:50px;padding:10px 24px;font-family:'Nunito',sans-serif;font-weight:800;font-size:.88rem;cursor:pointer;transition:all .2s}
.res-btn.primary{background:linear-gradient(135deg,var(--purple),var(--purple-d));color:#fff;box-shadow:0 4px 16px rgba(139,92,246,.4)}
.res-btn.primary:hover{transform:translateY(-2px)}
.res-btn.secondary{background:var(--bg);color:var(--text);border:2px solid rgba(139,92,246,.2)}
.res-btn.secondary:hover{background:rgba(139,92,246,.08)}

/* ===== STATS MODAL ===== */
#stats-modal{position:fixed;inset:0;z-index:100;background:rgba(30,27,75,.5);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;padding:20px}
#stats-modal.open{display:flex}
.stats-card{background:var(--card);border-radius:24px;padding:26px 22px;max-width:420px;width:100%;box-shadow:var(--shx);animation:slidein .3s cubic-bezier(.34,1.56,.64,1)}
@keyframes slidein{from{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}
.stats-card h2{font-size:1.45rem;margin-bottom:16px;color:var(--purple)}
.stats-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid rgba(139,92,246,.08);font-weight:700;font-size:.88rem}
.stats-row:last-child{border-bottom:none}
.stats-val{font-family:'Fredoka One',cursive;font-size:1.3rem;color:var(--purple)}
.close-stats{width:100%;margin-top:14px;background:var(--purple);color:#fff;border:none;border-radius:50px;padding:10px;font-family:'Nunito',sans-serif;font-weight:800;font-size:.92rem;cursor:pointer}

/* ===== CONFETTI ===== */
.confetti-piece{position:fixed;pointer-events:none;z-index:999;animation:cfall linear forwards}
@keyframes cfall{
  0%{opacity:1;transform:translateY(-20px) rotate(0deg)}
  80%{opacity:.8}
  100%{opacity:0;transform:translateY(105vh) rotate(720deg)}
}

/* ===== RESPONSIVE ===== */
@media(max-width:480px){
  .app-hdr{padding:0 12px}
  .badge{padding:3px 9px;font-size:.72rem}
  .hdr-btn{padding:4px 10px;font-size:.72rem}
  .grade-grid{grid-template-columns:repeat(3,1fr);gap:9px;padding:0 10px 28px}
  .grade-card{padding:14px 7px}
  .gc-emoji{font-size:1.8rem}
  .gc-name{font-size:.82rem}
  .topics-grid{grid-template-columns:1fr 1fr;gap:9px;padding:8px 10px 28px}
  .ans-grid{gap:8px}
  .ans-btn{font-size:.82rem;min-height:52px}
}
