/* ============ TOKENS ============ */
:root{
  --ink:#4A2F6B;
  --ink-soft:#7A679B;
  --purple:#B79CED;
  --purple-l:#EFE6FF;
  --purple-d:#8E6BD6;
  --pink:#FF7EB6;
  --pink-l:#FFD1E3;
  --sky:#6FC6E8;
  --sky-l:#D6F1FA;
  --gold:#FFC94D;
  --gold-l:#FFF3D0;
  --green:#2FA36B;
  --green-l:#DCF5E8;
  --red:#D8482B;
  --red-l:#FFE4DC;
  --paper:#FFFFFF;
  --line:#F3ECFB;
  --radius:24px;
  --bw:3px;
  --shadow:0 6px 0 rgba(74,47,107,.12);
  --shadow-lg:0 10px 0 rgba(74,47,107,.14);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:'Almarai',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:17px;
  line-height:1.65;
  color:var(--ink);
  background:#fff;
  overflow-x:hidden;
}
@media (min-width:1440px){ body{font-size:18px} }
@media (min-width:1900px){ body{font-size:20px} }
h1,h2,h3,h4,.display{
  font-family:'Baloo Bhaijaan 2','Almarai',system-ui,sans-serif;
  font-weight:700;
  line-height:1.3;
  margin:0 0 .4em;
  color:var(--ink);
}
h1{font-size:clamp(1.7rem,3.4vw,2.5rem)}
h2{font-size:clamp(1.25rem,2.2vw,1.6rem)}
h3{font-size:1.08rem}
p{margin:0 0 .8em}
img{max-width:100%;height:auto}
button{font-family:inherit}
.hidden{display:none !important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:focus-visible{outline:4px solid var(--sky);outline-offset:3px;border-radius:8px}

/* ============ BACKGROUNDS ============ */
.staff-bg,.grain{position:fixed;inset:0;pointer-events:none;z-index:0}
.staff-bg{
  background:repeating-linear-gradient(to bottom,
    transparent 0 26px, #F3ECFB 26px 28px,
    transparent 28px 40px, #F3ECFB 40px 42px,
    transparent 42px 54px, #F3ECFB 54px 56px,
    transparent 56px 68px, #F3ECFB 68px 70px,
    transparent 70px 82px, #F3ECFB 82px 84px,
    transparent 84px 150px);
  opacity:.85;
}
.grain{
  opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}
.topbar,main,footer,.wrap{position:relative;z-index:1}
.fx{position:fixed;inset:0;pointer-events:none;z-index:200;overflow:hidden}
.spark{position:fixed;width:11px;height:11px;border-radius:3px;transform:translate(-50%,-50%);animation:spark .8s ease-out forwards}
@keyframes spark{to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) rotate(210deg);opacity:0}}

/* ============ LAYOUT ============ */
.wrap{width:100%;max-width:1140px;margin-inline:auto;padding-inline:16px}
main#app{padding-bottom:56px;padding-top:8px}
.view{animation:viewIn .28s ease-out}
@keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.section{margin-top:38px}
.section-head{margin-bottom:16px}
.section-head p{color:var(--ink-soft);font-size:.95em;margin:0}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.stack{display:flex;flex-direction:column;gap:18px}

/* ============ TOPBAR ============ */
.topbar{
  position:sticky;top:0;z-index:60;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);
  border-bottom:var(--bw) solid var(--ink);
  padding-block:6px;
}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:58px}
.brand{
  display:flex;align-items:center;gap:8px;background:none;border:0;cursor:pointer;
  color:var(--ink);font-family:'Baloo Bhaijaan 2',sans-serif;font-weight:800;font-size:1.05rem;
  padding:4px;border-radius:12px;min-width:0;
}
.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--purple-l);border:2px solid var(--ink);color:var(--ink);flex:0 0 auto}
.brand-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.chip{
  display:inline-flex;align-items:center;gap:5px;min-height:38px;padding:2px 11px;
  border:2.5px solid var(--ink);border-radius:999px;background:#fff;font-weight:800;font-size:.9rem;
  color:var(--ink);white-space:nowrap;
}
.chip-star{background:var(--gold-l)}
.chip-points{background:var(--sky-l)}
.chip b{font-size:1rem}
.icon-btn{
  width:42px;height:42px;display:grid;place-items:center;border-radius:13px;
  border:2.5px solid var(--ink);background:#fff;color:var(--ink);cursor:pointer;
  transition:transform .12s,background .16s;user-select:none;-webkit-tap-highlight-color:transparent;
}
.icon-btn:hover{background:var(--purple-l)}
.icon-btn:active{transform:scale(.94)}
.icon-btn .ic-off{display:none}
.icon-btn[aria-pressed="true"]{background:var(--pink-l)}
.icon-btn[aria-pressed="true"] .ic-on{display:none}
.icon-btn[aria-pressed="true"] .ic-off{display:block}
@media (max-width:420px){
  .brand-text{font-size:.92rem}
  .brand-mark{width:34px;height:34px}
  .chip{min-height:34px;padding:1px 8px;font-size:.82rem}
  .icon-btn{width:38px;height:38px}
  .topbar-inner{gap:6px}
}
@media (max-width:340px){ .chip-points{display:none} }

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:52px;padding:10px 20px;border-radius:16px;border:var(--bw) solid var(--ink);
  background:#fff;color:var(--ink);font-weight:800;font-size:1rem;cursor:pointer;
  box-shadow:0 5px 0 rgba(74,47,107,.16);
  transition:transform .12s,box-shadow .12s,background .16s;
  user-select:none;-webkit-tap-highlight-color:transparent;text-decoration:none;text-align:center;
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 rgba(74,47,107,.16)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:0 5px 0 rgba(74,47,107,.08)}
.btn-primary{background:var(--pink);color:#3A1F55}
.btn-purple{background:var(--purple);color:#2C1943}
.btn-sky{background:var(--sky);color:#103544}
.btn-gold{background:var(--gold);color:#4A2F0B}
.btn-soft{background:var(--purple-l);color:var(--ink)}
.btn-ghost{background:#fff;color:var(--ink)}
.btn-lg{min-height:60px;font-size:1.08rem;padding:12px 26px;border-radius:20px}
.btn-sm{min-height:44px;padding:6px 14px;font-size:.9rem;border-radius:13px}
.mini-btn{
  width:38px;height:38px;border-radius:12px;border:2.5px solid var(--ink);background:#fff;color:var(--ink);
  font-size:1rem;cursor:pointer;display:inline-grid;place-items:center;flex:0 0 auto;
}
.mini-btn:active{transform:scale(.93)}
.link-btn{background:none;border:0;color:var(--purple-d);font-weight:800;text-decoration:underline;cursor:pointer;padding:6px;font-size:.95rem}

/* ============ CARDS ============ */
.card{
  background:var(--paper);border:var(--bw) solid var(--ink);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:20px;
}
.card h3{margin-bottom:.3em}
.card p:last-child{margin-bottom:0}
.pad-sm{padding:14px}

/* ============ HERO ============ */
.hero{
  display:grid;grid-template-columns:1.12fr .88fr;gap:24px;align-items:center;
  background:linear-gradient(160deg,#FFFFFF 0%,#FBF7FF 58%,#FFF3F8 100%);
  border:var(--bw) solid var(--ink);border-radius:32px;box-shadow:var(--shadow-lg);
  padding:28px;position:relative;overflow:hidden;margin-top:14px;
}
.hero-title{margin-bottom:.35em;font-size:clamp(1.75rem,4vw,2.9rem);line-height:1.24}
.mark{background:linear-gradient(transparent 60%,var(--gold) 60%,var(--gold) 92%,transparent 92%);padding-inline:5px;border-radius:6px}
.eyebrow{
  display:inline-block;font-size:.78rem;font-weight:800;letter-spacing:0;
  background:var(--purple-l);color:var(--ink);border:2px solid var(--ink);
  border-radius:999px;padding:3px 12px;margin-bottom:12px;
}
.lead{font-size:1.02rem;color:var(--ink);opacity:.9;max-width:52ch}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0 18px}
.hero-stats{display:flex;flex-wrap:wrap;gap:10px}
.stat{
  flex:1 1 110px;min-width:104px;border:2.5px solid var(--ink);border-radius:16px;
  padding:8px 12px;background:#fff;
}
.stat-value{font-family:'Baloo Bhaijaan 2',sans-serif;font-size:1.4rem;font-weight:800;line-height:1.1;display:block}
.stat-label{font-size:.78rem;color:var(--ink-soft);font-weight:700}
.stat.s-purple{background:var(--purple-l)}
.stat.s-gold{background:var(--gold-l)}
.stat.s-sky{background:var(--sky-l)}
.pbar{height:10px;border-radius:99px;background:#EFE6FF;border:2px solid var(--ink);overflow:hidden;margin-top:6px}
.pbar-fill{height:100%;background:var(--pink);border-radius:99px;transition:width .4s ease}
.hero-art{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px}
.art-blob{
  position:absolute;inset:auto;top:4%;width:78%;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#FFD1E3 0%,#EFE6FF 55%,rgba(255,255,255,0) 72%);
}
.hero-art img{position:relative;width:min(280px,72%);filter:drop-shadow(0 10px 0 rgba(74,47,107,.10));animation:float 5s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-10px) rotate(1.5deg)}}
.bubble{
  position:relative;background:#fff;border:2.5px solid var(--ink);border-radius:18px;
  padding:10px 14px;box-shadow:var(--shadow);font-size:.92rem;display:flex;gap:8px;align-items:center;
  max-width:300px;
}
.bubble p{margin:0}
.bubble::after{
  content:"";position:absolute;top:-11px;inset-inline-start:36px;width:16px;height:16px;background:#fff;
  border-inline-start:2.5px solid var(--ink);border-top:2.5px solid var(--ink);transform:rotate(45deg);
}
.guide-fallback{position:relative;animation:float 5s ease-in-out infinite}
.hero-mascot{width:min(250px,70%);margin-inline:auto}
.hero-mascot svg{width:100%;height:auto;display:block;filter:drop-shadow(0 10px 0 rgba(74,47,107,.10))}
.learn-mascot{flex:0 0 auto;width:76px;display:block}
.learn-mascot svg{width:100%;height:auto;display:block}

/* ============ MAP / STATIONS ============ */
.map{position:relative}
.map-line{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.map-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.station{
  background:#fff;border:var(--bw) solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:18px;display:flex;flex-direction:column;gap:8px;position:relative;
}
.station[data-state="locked"]{background:#FAF8FF;border-style:dashed}
.station[data-state="locked"] .station-art{filter:grayscale(.5);opacity:.7}
.station-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.station-num{
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:800;
  background:var(--purple);border:2.5px solid var(--ink);font-family:'Baloo Bhaijaan 2',sans-serif;
}
.station-art{font-size:2.1rem;line-height:1;margin:4px 0 2px}
.station h3{margin:0}
.station p{font-size:.9rem;color:var(--ink-soft);margin:0;flex:1}
.station-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;flex-wrap:wrap}
.stars-mini{font-size:.9rem;font-weight:800;color:#8a6b12;background:var(--gold-l);border:2px solid var(--ink);border-radius:999px;padding:2px 10px}
.st-done{background:var(--green-l);border:2px solid var(--ink);border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:800;color:#175c3b}
.lock-chip{background:#EFEAF7;border:2px dashed var(--ink);border-radius:999px;padding:3px 10px;font-size:.8rem;font-weight:800;color:var(--ink-soft)}

/* ============ PRACTICE / QUIZ CARDS ============ */
.practice-card{display:flex;flex-direction:column;gap:8px}
.practice-card p{font-size:.92rem;color:var(--ink-soft);flex:1}
.practice-icon{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:1.5rem;border:2.5px solid var(--ink)}
.i-purple{background:var(--purple-l)} .i-sky{background:var(--sky-l)} .i-pink{background:var(--pink-l)}
.quick-values{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.note-card{
  display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;min-height:60px;
  border:2.5px solid var(--ink);border-radius:12px;background:#fff;cursor:pointer;color:var(--ink);
  font-size:1.1rem;font-weight:700;transition:background .15s,transform .12s;
}
.note-card span{font-size:.68rem;font-weight:800;color:var(--ink-soft)}
.note-card:hover{background:var(--sky-l)}
.note-card:active{transform:scale(.95)}
.qcard{display:flex;flex-direction:column;gap:8px}
.qcard p{font-size:.92rem;color:var(--ink-soft);flex:1}
.qcard-tag{font-size:.75rem;font-weight:800;border-radius:999px;padding:2px 10px;border:2px solid var(--ink);align-self:flex-start}
.tag-open{background:var(--sky-l)} .tag-lock{background:#EFEAF7;color:var(--ink-soft);border-style:dashed}
.tag-done{background:var(--green-l);color:#175c3b}

/* ============ PAGE HEAD ============ */
.page-head{display:flex;align-items:flex-start;gap:14px;margin:14px 0 20px;flex-wrap:wrap}
.page-titles{flex:1;min-width:200px}
.page-head h1{margin:0;font-size:clamp(1.4rem,3vw,2rem)}
.page-head .eyebrow{margin-bottom:6px}
.back-btn{flex:0 0 auto}

/* ============ RHYTHM TABLE ============ */
.rtable{display:flex;flex-direction:column;gap:2px}
.rgroup-title{
  font-weight:800;font-size:.85rem;color:var(--ink-soft);margin:12px 0 4px;
  padding-inline-start:6px;
}
.rrow{
  display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:12px;align-items:center;
  padding:9px 8px;border-bottom:2px dashed #EDE3FB;border-radius:12px;
}
.rrow:hover{background:#FCFAFF}
.rsym{width:52px;height:52px;color:var(--ink);display:grid;place-items:center;background:var(--purple-l);border:2px solid var(--ink);border-radius:12px;padding:5px}
.rsym svg{width:100%;height:100%}
.rname{font-weight:800;font-size:1rem;display:block}
.rterm{
  display:inline-block;margin-inline-end:7px;font-weight:800;font-size:.82rem;vertical-align:middle;
  background:var(--gold-l);color:var(--ink);border:2px solid var(--ink);border-radius:999px;padding:0 9px;
}
.rval{font-size:.82rem;color:var(--ink-soft)}
.rplay{width:44px;height:44px;border-radius:50%;border:2.5px solid var(--ink);background:var(--gold-l);cursor:pointer;font-size:1rem;color:var(--ink)}
.rplay:active{transform:scale(.93)}
.rfr{
  display:inline-block;margin-inline-start:6px;font-size:.7rem;font-weight:800;
  color:#6B47A8;background:var(--purple-l);border:2px solid var(--ink);
  border-radius:999px;padding:0 8px;vertical-align:middle;white-space:nowrap;
}
.flip-face .fr-name{font-size:.68rem;font-weight:800;color:#6B47A8;line-height:1.2}
.bin-fr{display:block;font-size:.72rem;font-weight:800;color:#6B47A8;margin-top:-6px}
.terms{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.term-row{
  display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center;
  border:2px solid var(--line);border-radius:14px;padding:6px 10px;background:#FCFAFF;
}
.term-row .t-sym{width:38px;height:38px;color:var(--ink);display:grid;place-items:center}
.term-row .t-sym svg{width:100%;height:100%}
.term-row .t-name{font-weight:800;font-size:.92rem;display:block;line-height:1.25}
.term-row .t-fr{font-size:.76rem;color:var(--ink-soft);font-weight:700}
.term-row .t-val{
  font-size:.78rem;font-weight:800;background:var(--gold-l);border:2px solid var(--ink);
  border-radius:999px;padding:1px 9px;white-space:nowrap;
}
@media (max-width:400px){
  .term-row{grid-template-columns:38px minmax(0,1fr) auto;gap:8px;padding:6px 8px}
  .rfr{font-size:.64rem;padding:0 6px}
}

/* ============ FLIP CARDS ============ */
.flip-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.flip{perspective:900px;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;outline:none}
.flip-inner{
  position:relative;width:100%;aspect-ratio:3/3.6;transform-style:preserve-3d;
  transition:transform .55s cubic-bezier(.3,.9,.3,1.1);min-height:118px;
}
.flip.flipped .flip-inner{transform:rotateY(180deg)}
.flip-face{
  position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  border:var(--bw) solid var(--ink);border-radius:20px;background:#fff;box-shadow:var(--shadow);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px;text-align:center;
}
.flip-face.front{background:linear-gradient(170deg,#fff,#F7F1FF)}
.flip-face.back{transform:rotateY(180deg);background:linear-gradient(170deg,#FFF7FA,#F4EEFF);gap:2px}
.flip-face.back strong{font-size:.88rem;line-height:1.25}
.flip-face .val{font-size:.76rem;font-weight:800;color:var(--ink-soft);background:#fff;border:2px solid var(--ink);border-radius:999px;padding:1px 8px}
.flip-sym{width:56px;height:56px;color:var(--ink)}
.flip-sym svg{width:100%;height:100%}
.flip .q{font-family:'Baloo Bhaijaan 2',sans-serif;font-size:2rem;color:var(--purple-d);line-height:1}
.flip:focus-visible .flip-inner{outline:4px solid var(--sky);outline-offset:4px}

/* ============ SORT GAME ============ */
.sort-wrap{display:grid;grid-template-columns:1fr;gap:18px}
.tray{display:flex;flex-wrap:wrap;gap:10px;min-height:74px;padding:10px;border:2.5px dashed var(--purple-d);border-radius:18px;background:#FCFAFF}
.tray-card{
  width:70px;height:70px;border:2.5px solid var(--ink);border-radius:14px;background:#fff;
  display:grid;place-items:center;cursor:grab;touch-action:none;box-shadow:0 4px 0 rgba(74,47,107,.12);
  color:var(--ink);padding:6px;transition:transform .12s,box-shadow .12s;
}
.tray-card svg{width:100%;height:100%}
.tray-card.selected{background:var(--gold-l);transform:translateY(-4px) scale(1.04);box-shadow:0 8px 0 rgba(74,47,107,.16)}
.tray-card.dragging{opacity:.3}
.drag-ghost{position:fixed;z-index:300;pointer-events:none;transform:translate(-50%,-50%) rotate(-6deg);opacity:.95;display:grid;place-items:center;background:#fff;border:2.5px solid var(--ink);border-radius:14px;padding:6px;box-shadow:0 10px 18px rgba(74,47,107,.25)}
.drag-ghost svg{width:100%;height:100%}
.bins{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:12px}
.bin{
  min-height:150px;border:var(--bw) solid var(--ink);border-radius:18px;background:#fff;padding:10px;
  display:flex;flex-direction:column;gap:8px;cursor:pointer;transition:background .15s,transform .12s;
  box-shadow:var(--shadow);text-align:center;
}
.bin-label{font-weight:800;font-size:.92rem;background:var(--purple-l);border-radius:999px;padding:3px 8px;border:2px solid var(--ink)}
.bin-items{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;flex:1;align-content:flex-start}
.bin-items .placed{width:46px;height:46px;color:var(--ink);border:2px solid var(--ink);border-radius:10px;padding:4px;background:var(--green-l)}
.bin-items .placed svg{width:100%;height:100%}
.bin.drop-hover{background:var(--gold-l);transform:translateY(-3px)}
.bin.armed{border-style:dashed;background:#FFFDF4}
.bin.shake{animation:shake .35s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-7px)}50%{transform:translateX(7px)}75%{transform:translateX(-4px)}}

/* ============ FEEDBACK ============ */
.feedback{display:none;border-radius:16px;padding:10px 14px;border:2.5px solid var(--ink);font-weight:700;font-size:.95rem;margin-top:10px}
.feedback.show{display:flex;gap:8px;align-items:flex-start;animation:viewIn .2s ease-out}
.feedback.ok{background:var(--green-l);color:#14512f}
.feedback.bad{background:var(--red-l);color:#7d2412}
.feedback.info{background:var(--sky-l);color:#103544}
.feedback .fb-ic{font-size:1.1rem;line-height:1.2}

/* ============ DIVISION LAB ============ */
.lab-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:18px;align-items:start}
.lab-stage{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;background:linear-gradient(170deg,#fff,#F8F3FF)}
.lab-note{width:110px;height:110px;color:var(--ink);background:#fff;border:var(--bw) solid var(--ink);border-radius:24px;padding:10px;box-shadow:var(--shadow)}
.lab-note svg{width:100%;height:100%}
.lab-caption{font-weight:800;font-size:.95rem}
.lab-bar{display:flex;width:100%;height:64px;gap:4px;direction:ltr}
.lab-bar .seg{
  flex:1 1 0;border:2.5px solid var(--ink);border-radius:10px;display:grid;place-items:center;
  color:var(--ink);padding:3px;opacity:0;transform:scaleY(.6);
  animation:segIn .35s ease-out forwards;
}
.lab-bar .seg svg{width:100%;max-height:44px}
@keyframes segIn{to{opacity:1;transform:scaleY(1)}}
.seg:nth-child(4n+1){background:var(--purple-l)}
.seg:nth-child(4n+2){background:var(--pink-l)}
.seg:nth-child(4n+3){background:var(--sky-l)}
.seg:nth-child(4n+4){background:var(--gold-l)}
.options-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.opt{
  display:flex;align-items:center;gap:10px;min-height:56px;padding:8px 12px;border:2.5px solid var(--ink);
  border-radius:14px;background:#fff;cursor:pointer;font-weight:700;color:var(--ink);font-size:1rem;
  transition:background .15s,transform .12s;text-align:start;
}
.opt:hover{background:var(--purple-l)}
.opt:active{transform:scale(.98)}
.opt[aria-pressed="true"],.opt.selected{background:var(--gold-l);box-shadow:inset 0 0 0 3px var(--gold)}
.opt.correct{background:var(--green-l);box-shadow:inset 0 0 0 3px var(--green)}
.opt.wrong{background:var(--red-l);box-shadow:inset 0 0 0 3px var(--red)}
.opt-key{width:30px;height:30px;border-radius:50%;background:var(--purple-l);border:2px solid var(--ink);display:grid;place-items:center;font-size:.85rem;font-weight:800;flex:0 0 auto}
.opt:disabled{cursor:default;opacity:.85}

/* ============ PATTERN BLOCKS ============ */
.pattern{
  display:flex;width:100%;border:2.5px solid var(--ink);border-radius:14px;overflow:hidden;background:#fff;
  direction:ltr;min-height:62px;
  background-image:repeating-linear-gradient(to right,transparent 0 calc(25% - 1.5px),rgba(74,47,107,.12) calc(25% - 1.5px) 25%);
}
.p-cell{
  flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  padding:6px 2px;border-inline-end:1px solid rgba(74,47,107,.10);position:relative;transition:background .12s;
}
.p-cell:last-child{border-inline-end:0}
.p-cell[data-d="4"]{background:rgba(183,156,237,.14)}
.p-cell[data-d="2"]{background:rgba(255,126,182,.12)}
.p-cell[data-d="1"]{background:rgba(111,198,232,.12)}
.p-cell[data-d="0.5"]{background:rgba(255,201,77,.14)}
.p-sym{width:100%;max-width:38px;color:var(--ink);display:block}
.p-sym svg{width:100%;height:auto;display:block}
.p-len{height:5px;border-radius:99px;background:var(--ink);opacity:.22;width:60%}
.p-cell.playing{background:var(--gold) !important}
.pattern.small{min-height:46px}
.pattern.small .p-sym{max-width:26px}

/* ============ GAME BARS / TABS ============ */
.gamebar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:14px}
.tabs{display:inline-flex;background:#fff;border:2.5px solid var(--ink);border-radius:999px;padding:3px;gap:2px;flex-wrap:wrap}
.tab{border:0;background:none;padding:8px 14px;border-radius:999px;font-weight:800;color:var(--ink);cursor:pointer;font-size:.9rem}
.tab.active{background:var(--purple);color:#2C1943}
.tempo{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;font-weight:800;color:var(--ink-soft)}
.seg-switch{display:inline-flex;border:2.5px solid var(--ink);border-radius:999px;overflow:hidden;background:#fff}
.seg-switch button{border:0;background:none;padding:7px 14px;font-weight:800;color:var(--ink);cursor:pointer;font-size:.85rem}
.seg-switch button.active{background:var(--sky-l)}
.round-dots{display:flex;gap:6px;justify-content:center;margin:6px 0 14px}
.dot{width:11px;height:11px;border-radius:50%;border:2px solid var(--ink);background:#fff}
.dot.on{background:var(--purple)}
.dot.now{background:var(--gold);transform:scale(1.25)}

/* ============ LISTEN GAME ============ */
.listen-stage{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:22px;background:linear-gradient(170deg,#fff,#F7F2FF)}
.big-play{
  width:110px;height:110px;border-radius:50%;border:var(--bw) solid var(--ink);background:var(--purple);
  color:#2C1943;font-size:2.1rem;display:grid;place-items:center;cursor:pointer;
  box-shadow:var(--shadow);transition:transform .12s;
}
.big-play:active{transform:scale(.94)}
.big-play.playing{animation:pulse 1s ease-in-out infinite;background:var(--gold)}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.listen-hint{font-size:.9rem;color:var(--ink-soft);max-width:48ch}
.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.choice{
  border:var(--bw) solid var(--ink);border-radius:16px;background:#fff;padding:10px;cursor:pointer;
  display:flex;flex-direction:column;gap:6px;transition:background .15s,transform .12s;text-align:center;
}
.choice:hover{background:var(--purple-l)}
.choice[aria-pressed="true"]{background:var(--gold-l);box-shadow:inset 0 0 0 3px var(--gold)}
.choice.correct{background:var(--green-l);box-shadow:inset 0 0 0 3px var(--green)}
.choice.wrong{background:var(--red-l);box-shadow:inset 0 0 0 3px var(--red)}
.choice-label{font-size:.78rem;font-weight:800;color:var(--ink-soft)}
.built{display:flex;flex-wrap:wrap;gap:6px;min-height:66px;padding:8px;border:2.5px dashed var(--purple-d);border-radius:14px;background:#FCFAFF;direction:ltr;justify-content:flex-start}
.built .tray-card{width:58px;height:58px}
.palette{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:12px}
.palette .note-card{min-width:74px;min-height:74px;font-size:1.2rem}
.actions-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:14px}

/* ============ ORDER GAME ============ */
.order-slots{display:flex;gap:8px;justify-content:center;border:2.5px dashed var(--purple-d);border-radius:16px;padding:10px;background:#FCFAFF;min-height:96px;direction:ltr;flex-wrap:wrap}
.slot{
  width:66px;height:76px;border:2.5px dashed #C9B8E6;border-radius:12px;display:grid;place-items:center;
  background:#fff;color:var(--ink);
}
.slot.filled{border-style:solid;border-color:var(--ink);cursor:pointer;background:var(--sky-l)}
.slot.filled svg{width:70%;height:70%}
.slot.ok{background:var(--green-l);border-color:var(--green);border-style:solid}
.slot.no{background:var(--red-l);border-color:var(--red);border-style:solid}

/* ============ MAESTRO ============ */
.maestro-stage{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
.maestro-img{width:min(230px,60%);filter:drop-shadow(0 8px 0 rgba(74,47,107,.10))}
.beat-lamps{display:flex;gap:10px;justify-content:center}
.lamp{width:22px;height:22px;border-radius:50%;border:2.5px solid var(--ink);background:#fff;transition:background .1s,transform .1s}
.lamp.on{background:var(--gold);transform:scale(1.18)}
.track{position:relative;width:100%;padding-top:8px}
.playhead{position:absolute;top:0;bottom:0;width:4px;background:var(--pink);border-radius:99px;left:0;transition:left .05s linear;box-shadow:0 0 0 2px #fff}
.tap-pad{
  width:180px;height:180px;border-radius:50%;border:var(--bw) solid var(--ink);
  background:radial-gradient(circle at 40% 35%,#FFD1E3,#FF7EB6);color:#3A1F55;
  font-family:'Baloo Bhaijaan 2',sans-serif;font-weight:800;font-size:1.25rem;cursor:pointer;
  box-shadow:0 10px 0 rgba(74,47,107,.18);transition:transform .08s;
  display:grid;place-items:center;user-select:none;touch-action:manipulation;
}
.tap-pad:active,.tap-pad.hit{transform:scale(.94);box-shadow:0 3px 0 rgba(74,47,107,.18)}
.tap-pad:disabled{filter:grayscale(.55);opacity:.6}
.tap-stats{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;font-weight:800;font-size:.9rem}
.countdown{font-family:'Baloo Bhaijaan 2',sans-serif;font-size:2.6rem;font-weight:800;color:var(--pink);min-height:1.2em}

/* ============ QUIZ ============ */
.quiz-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.quiz-meta{font-size:.85rem;font-weight:800;color:var(--ink-soft)}
.quiz-bar{height:12px;border-radius:99px;background:#EFE6FF;border:2.5px solid var(--ink);overflow:hidden;margin-bottom:18px}
.quiz-bar span{display:block;height:100%;background:var(--sky);transition:width .3s ease}
.quiz-card{min-height:220px;display:flex;flex-direction:column;gap:12px}
.quiz-card h2{font-size:clamp(1.1rem,2.4vw,1.5rem)}
.options{display:grid;gap:10px}
.quiz-actions{display:flex;justify-content:space-between;gap:10px;margin-top:16px;flex-wrap:wrap}
.listen-btn{
  display:inline-flex;align-items:center;gap:8px;border:2.5px solid var(--ink);background:var(--sky-l);
  color:#103544;border-radius:999px;padding:8px 16px;font-weight:800;cursor:pointer;font-size:.92rem;
}
.listen-btn:active{transform:scale(.97)}

/* ============ RESULTS ============ */
.result-grid{display:grid;grid-template-columns:260px 1fr;gap:20px;align-items:start}
.score-box{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.score-ring{width:170px;height:170px}
.score-num{font-family:'Baloo Bhaijaan 2',sans-serif;font-size:2.2rem;font-weight:800;line-height:1}
.result-list{display:flex;flex-direction:column;gap:8px}
.result-item{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-radius:12px;border:2px solid var(--ink);font-size:.92rem}
.result-item.ok{background:var(--green-l)}
.result-item.no{background:var(--red-l)}
.pill{display:inline-block;border-radius:999px;border:2px solid var(--ink);padding:2px 10px;font-size:.78rem;font-weight:800;background:#fff}

/* ============ TEACHER ============ */
.t-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.t-table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:420px}
.t-table th,.t-table td{padding:8px 10px;text-align:start;border-bottom:2px dashed #EDE3FB}
.t-table th{font-size:.8rem;color:var(--ink-soft);font-weight:800}
.t-table tr:last-child td{border-bottom:0}
.bars{display:flex;flex-direction:column;gap:10px}
.bar-row{display:grid;grid-template-columns:minmax(0,1fr) 54px;gap:10px;align-items:center}
.bar-track{height:16px;border-radius:99px;background:#EFE6FF;border:2px solid var(--ink);overflow:hidden;margin-top:4px}
.bar-fill{height:100%;background:var(--sky);border-radius:99px;transition:width .5s ease}
.bar-label{font-size:.85rem;font-weight:700}
.bar-pct{font-weight:800;font-size:.85rem;text-align:end}
.qedit{border:2.5px solid var(--ink);border-radius:16px;padding:12px;margin-bottom:10px;background:#fff}
.qedit-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.tag{font-size:.72rem;font-weight:800;border-radius:999px;padding:2px 9px;border:2px solid var(--ink);background:var(--purple-l)}
.qedit label{display:block;font-size:.82rem;font-weight:800;color:var(--ink-soft);margin-top:8px}
.qedit input[type="text"],.qedit textarea{
  width:100%;border:2.5px solid var(--ink);border-radius:10px;padding:7px 10px;font-family:inherit;
  font-size:.92rem;color:var(--ink);background:#fff;margin-top:4px;
}
.qedit textarea{min-height:56px;resize:vertical}
.opts-edit{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.opt-edit{display:flex;gap:6px;align-items:center;border:2px dashed #DCCEF3;border-radius:10px;padding:6px}
.opt-edit input[type="radio"]{width:20px;height:20px;accent-color:#B79CED;flex:0 0 auto}
.opt-edit input[type="text"]{margin-top:0}
.danger{background:var(--red-l);color:#7d2412}
.notice{border:2.5px solid var(--ink);border-radius:14px;background:var(--gold-l);padding:10px 14px;font-size:.9rem;font-weight:700}

/* ============ AUDIO BANNER / TOAST ============ */
.audio-banner{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin-top:10px;padding:10px 14px;border:2.5px solid var(--ink);border-radius:16px;background:var(--gold-l);
  font-size:.9rem;font-weight:700;
}
.toast{
  position:fixed;inset-inline:12px;bottom:18px;z-index:250;margin-inline:auto;max-width:420px;
  background:var(--ink);color:#fff;border-radius:16px;padding:12px 18px;font-weight:700;font-size:.92rem;
  text-align:center;opacity:0;transform:translateY(14px);pointer-events:none;transition:opacity .2s,transform .2s;
  border:2.5px solid #fff;
}
.toast.show{opacity:1;transform:none}
.toast.toast-error{background:#8E2B18}

/* ============ FOOTER ============ */
.site-foot{border-top:var(--bw) solid var(--ink);background:#FCFAFF;padding:18px 0;margin-top:20px}
.foot-inner p{margin:0;font-size:.85rem;color:var(--ink-soft)}
.foot-note{font-size:.78rem;margin-top:4px !important}

/* ============ RESPONSIVE ============ */
@media (max-width:920px){
  .hero{grid-template-columns:1fr;padding:22px}
  .hero-art{order:-1;flex-direction:row;flex-wrap:wrap;justify-content:center}
  .hero-art img{width:132px}
  .guide-fallback svg{width:96px;height:96px}
  .bubble{max-width:none;flex:1 1 190px}
  .bubble::after{top:-11px;inset-inline-start:26px}
  .map-line{display:none}
  .map-grid{grid-template-columns:1fr}
  .grid-3,.grid-2{grid-template-columns:1fr 1fr}
  .lab-grid{grid-template-columns:1fr}
  .result-grid{grid-template-columns:1fr}
  .flip-grid{grid-template-columns:repeat(4,1fr);gap:10px}
}
@media (max-width:680px){
  body{font-size:16px}
  .grid-3,.grid-2{grid-template-columns:1fr}
  .flip-grid{grid-template-columns:repeat(2,1fr)}
  .bins{grid-template-columns:1fr 1fr}
  .options-grid,.choice-grid{grid-template-columns:1fr}
  .opts-edit{grid-template-columns:1fr}
  .hero-actions .btn{flex:1 1 100%}
  .rrow{grid-template-columns:48px minmax(0,1fr) auto;gap:8px}
  .rsym{width:44px;height:44px}
  .tap-pad{width:150px;height:150px;font-size:1.1rem}
  .score-ring{width:140px;height:140px}
  .quiz-actions .btn{flex:1 1 auto}
}
@media (max-width:400px){
  .wrap{padding-inline:12px}
  .card{padding:16px}
  .chip b{font-size:.9rem}
  .station{padding:14px}
}

/* ============ PRINT ============ */
.print-area{display:none}
@media print{
  body{background:#fff;font-size:12pt;color:#000}
  body > *:not(.print-area){display:none !important}
  .print-area{display:block !important;padding:0 8mm}
  .print-area h1{font-size:20pt;margin-bottom:4pt}
  .print-area h2{font-size:14pt;margin:14pt 0 4pt}
  .print-area table{width:100%;border-collapse:collapse;font-size:10.5pt}
  .print-area th,.print-area td{border:1px solid #999;padding:4pt 6pt;text-align:start}
  .print-area .muted{color:#555;font-size:10pt}
}

/* ============ REDUCED MOTION ============ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .hero-art img,.guide-fallback{animation:none}
}