/* مدينة الألعاب التعليمية — V6.3 visual identity: "متحف المدينة"
   Museum indigo + gold leaf + glass turquoise. Exhibits stand on pedestals along a golden trail. */
@font-face{font-family:"Baloo Bhaijaan 2";src:url(/fonts/baloo-bhaijaan-2-arabic-wght-normal.woff2) format("woff2");font-weight:400 800;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Baloo Bhaijaan 2";src:url(/fonts/baloo-bhaijaan-2-latin-wght-normal.woff2) format("woff2");font-weight:400 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  /* identity */
  --indigo:#2B1E6B; --indigo-2:#3B2A9A; --violet:#5A3FD0; --lilac:#EFE9FF; --mist:#F8F5FF;
  --gold:#F2B630; --gold-hi:#FFE7A0; --gold-lo:#C98A10;
  --glass:#2EC4C6; --glass-lo:#137F8E;
  --ink:#231A4F; --muted:#6A6290;
  --ok:#1FA971; --ok-soft:#E3F8EE; --calm:#7C83FD; --calm-soft:#EEF0FF;
  /* world accent (boys default) */
  --accent:#2F6BFF; --accent-lo:#1E3FB0; --accent-soft:#E6EEFF;
  --font:"Baloo Bhaijaan 2","Segoe UI","Noto Sans Arabic",Tahoma,sans-serif;
  /* shape */
  --r-s:12px; --r-m:18px; --r-l:28px; --r-full:999px;
  --lift:0 18px 40px -18px rgba(43,30,107,.45);
  /* motion */
  --t-press:130ms; --t-card:230ms; --t-msg:300ms; --t-screen:280ms;
}
body[data-world="girls"]{--accent:#C2449A;--accent-lo:#8E2A70;--accent-soft:#FDE8F4}
*{box-sizing:border-box}
html,body{margin:0}
body{min-height:100vh;display:flex;flex-direction:column;font:17px/1.65 var(--font);color:var(--ink);
  background:var(--mist) radial-gradient(1200px 500px at 50% -120px,#E2D8FF 0,transparent 70%)}
main#app{flex:1 0 auto;min-height:calc(100vh - 68px)}
h1,h2,h3{font-weight:800;line-height:1.25;margin:0}
button{font:inherit;cursor:pointer;color:inherit}
button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus{outline:none}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}

/* ================= buttons: one pressable system ================= */
.btn{--b:#fff;--b2:#E6E0FA;--fg:var(--indigo);position:relative;overflow:hidden;border:0;border-radius:var(--r-m);
  padding:12px 26px;min-height:52px;font-weight:800;font-size:1.05rem;color:var(--fg);background:var(--b);
  box-shadow:0 5px 0 var(--b2),0 10px 18px -10px rgba(43,30,107,.5);transition:transform var(--t-press),box-shadow var(--t-press),filter var(--t-press)}
.btn:hover{transform:translateY(-2px);box-shadow:0 7px 0 var(--b2),0 14px 22px -12px rgba(43,30,107,.55)}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--b2),0 4px 8px -6px rgba(43,30,107,.5)}
.btn:disabled{filter:grayscale(.6);opacity:.55;cursor:not-allowed;transform:none}
.btn-gold,.btn.primary{--b:linear-gradient(180deg,var(--gold-hi),var(--gold) 55%,#E8A41C);--b2:var(--gold-lo);--fg:var(--indigo)}
.btn-soft{--b:#fff;--b2:#DCD3F7}
.btn-ghost{--b:rgba(255,255,255,.14);--b2:rgba(0,0,0,.22);--fg:#fff;backdrop-filter:blur(4px)}
.btn-xl{font-size:1.35rem;padding:16px 44px;min-height:64px;border-radius:var(--r-l)}
.shine::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.75) 48%,transparent 66%);
  transform:translateX(120%);transition:transform 0s}
.shine:hover::after,.shine.sweep::after{transform:translateX(-120%);transition:transform 900ms ease}
.link-btn{border:0;background:none;color:var(--muted);text-decoration:underline;text-underline-offset:4px;min-height:44px;font-weight:700}
.link-btn.inline{display:inline;min-height:0;padding:0;color:var(--accent);font-weight:800}

/* ================= HUD ================= */
.hud{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;padding:8px 18px;min-height:68px;
  background:linear-gradient(90deg,var(--indigo),var(--indigo-2));color:#fff;box-shadow:0 6px 24px -12px rgba(43,30,107,.8)}
.brand{display:flex;align-items:center;gap:10px;margin-inline-end:auto;text-decoration:none;color:#fff;min-width:0}
.brand svg{width:44px;height:44px;flex:none;filter:drop-shadow(0 3px 6px rgba(0,0,0,.25))}
.brand b{display:block;font-size:1.12rem;line-height:1.15}
.brand small{color:var(--gold-hi);font-size:.82rem;font-weight:700}
.hud-tools{display:flex;align-items:center;gap:8px}
.hud-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.1);color:#fff;
  border-radius:var(--r-full);height:44px;min-width:44px;padding:0 14px;font-weight:700;font-size:.92rem;transition:background var(--t-press),transform var(--t-press)}
.hud-btn svg{width:20px;height:20px}
.hud-btn:hover{background:rgba(255,255,255,.2)}
.hud-btn:active{transform:scale(.94)}
.hud-btn[aria-pressed="true"]{background:var(--gold);color:var(--indigo);border-color:var(--gold)}
.star-count{display:inline-flex;align-items:center;gap:6px;height:44px;padding:0 14px 0 10px;border-radius:var(--r-full);
  background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--indigo);font-weight:800;font-size:1.1rem;box-shadow:inset 0 -3px 0 var(--gold-lo)}
.star-count svg{width:26px;height:26px}
.hud-avatar svg{width:44px;height:44px;display:block;border-radius:50%;box-shadow:0 0 0 3px var(--gold)}

/* ================= screens ================= */
.screen{padding:24px 18px 48px;max-width:1120px;margin:0 auto}
.screen.enter{animation:screenIn var(--t-screen) ease-out}
@keyframes screenIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ================= home: welcome + description + sign-in on one page ================= */
#login{max-width:none;padding:0 0 44px}
.home-band{position:relative;isolation:isolate;overflow:hidden;padding:30px 20px 64px;color:#fff;border-radius:0 0 44px 44px;box-shadow:var(--lift);
  background:radial-gradient(900px 420px at 88% -10%,rgba(90,63,208,.6),transparent 70%),radial-gradient(760px 380px at 8% 105%,rgba(46,196,198,.28),transparent 70%),linear-gradient(180deg,var(--indigo),#1C1250)}
.home-band::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.55;
  background-image:radial-gradient(1.6px 1.6px at 24px 30px,#fff 50%,transparent 52%),radial-gradient(1.2px 1.2px at 140px 90px,#FFE7A0 50%,transparent 52%),radial-gradient(1.4px 1.4px at 90px 150px,#fff 50%,transparent 52%),radial-gradient(1px 1px at 190px 40px,#fff 50%,transparent 52%);
  background-size:220px 180px;animation:skyDrift 60s linear infinite}
.home-band::after{content:"";position:absolute;inset:auto 0 0;height:96px;z-index:-1;opacity:.28;background:url(/assets/skyline.svg) bottom center/auto 96px repeat-x}
@keyframes skyDrift{to{background-position:220px 180px}}
.home-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:36px;align-items:center}
.welcome{display:grid;gap:10px;justify-items:start}
.hero-frame{position:relative;margin:0 0 10px;width:100%;aspect-ratio:16/9;border-radius:26px;overflow:hidden;background:#E9DCFF;
  box-shadow:0 0 0 4px var(--gold),0 0 0 11px rgba(255,255,255,.07),0 30px 50px -24px rgba(0,0,0,.65)}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 55%}
.hero-over{position:absolute;inset:0;width:100%;height:100%}
.twinkle{transform-box:fill-box;transform-origin:center;animation:twinkle 2.6s ease-in-out infinite}
.twinkle:nth-of-type(2){animation-delay:.9s}.twinkle:nth-of-type(3){animation-delay:1.6s}
@keyframes twinkle{0%,100%{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
.kicker{display:inline-flex;align-items:center;gap:8px;margin:0;padding:4px 14px;border-radius:var(--r-full);background:rgba(255,231,160,.14);color:var(--gold-hi);font-weight:800}
.kicker svg{width:20px;height:20px}
.welcome h1{font-size:clamp(2rem,4.6vw,3.1rem);color:#fff;text-shadow:0 3px 0 rgba(0,0,0,.25)}
.school-badge{display:inline-flex;align-items:center;gap:10px;margin:0;padding:6px 20px 6px 8px;border-radius:var(--r-full);
  background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--indigo);font-weight:800;font-size:clamp(1.02rem,2.3vw,1.25rem);box-shadow:inset 0 -3px 0 var(--gold-lo),0 10px 22px -12px rgba(0,0,0,.6)}
.school-badge svg{width:36px;height:36px;padding:3px;border-radius:50%;background:var(--indigo)}
.home-desc{margin:4px 0 2px;color:#E6E0FF;font-size:1.08rem;max-width:58ch}
.facts{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.facts li{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:16px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16)}
.facts svg{width:26px;height:26px}.facts b{font-size:1.25rem;color:var(--gold-hi)}.facts span{color:#D9D2FF;font-weight:700;font-size:.92rem}
#login .ticket{width:100%;grid-template-columns:1fr;color:var(--ink);box-shadow:0 0 0 4px rgba(255,255,255,.12),0 34px 60px -24px rgba(0,0,0,.7)}
#login .ticket-stub{flex-direction:row;justify-content:center;padding:12px;border-inline-end:0;border-bottom:3px dashed rgba(43,30,107,.25)}
#login .ticket-stub::before,#login .ticket-stub::after{top:auto;bottom:-14px;inset-inline-end:auto;background:#1F1556}
#login .ticket-stub::before{inset-inline-start:-13px}#login .ticket-stub::after{inset-inline-end:-13px}
.home-more{max-width:1120px;margin:0 auto;padding:40px 18px 0;display:grid;gap:40px}
.home-more h2{font-size:clamp(1.4rem,3vw,1.85rem);text-align:center;margin-bottom:18px}
.how-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.how-steps li{position:relative;display:grid;justify-items:center;text-align:center;gap:4px;padding:26px 16px 18px;background:#fff;border-radius:var(--r-l);box-shadow:var(--lift);transition:transform var(--t-card)}
.how-steps li:hover{transform:translateY(-4px)}
.how-steps svg{width:58px;height:58px;filter:drop-shadow(0 6px 8px rgba(43,30,107,.2))}
.how-n{position:absolute;top:-15px;inset-inline-start:18px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;font-weight:800;box-shadow:0 4px 0 var(--accent-lo)}
.how-steps b{font-size:1.15rem}.how-steps small{color:var(--muted);font-weight:700}
.pp-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.pp-list li{display:grid;justify-items:center;text-align:center;padding:16px 10px 12px;border-radius:var(--r-m);background:linear-gradient(180deg,#fff,var(--lilac));box-shadow:inset 0 0 0 2px #E2DAFB,0 12px 24px -18px rgba(43,30,107,.5);transition:transform var(--t-card)}
.pp-list li:hover{transform:translateY(-5px) rotate(-1deg)}
.pp-list svg{width:88px;height:88px;filter:drop-shadow(0 10px 10px rgba(43,30,107,.22))}
.pp-list b{font-size:1.04rem}.pp-list small{color:var(--muted);font-weight:700;font-size:.85rem}
.v30-home{text-align:center;padding:30px 22px;border-radius:var(--r-l);background:linear-gradient(180deg,#E6F6EC,#fff);box-shadow:inset 0 0 0 2px #CBEBD8}
.v30-kicker{margin:0 0 4px;color:#17734A;font-weight:800}
.v30-home h2{margin-bottom:8px}.v30-home>p{margin:0 auto;max-width:60ch}
.v30-cards{list-style:none;margin:18px 0;padding:0;display:flex;justify-content:center;flex-wrap:wrap;gap:14px}
.v30-cards li{display:flex;align-items:center;gap:10px;padding:10px 20px;border-radius:var(--r-full);background:#fff;box-shadow:inset 0 0 0 2px rgba(23,115,74,.25),0 8px 18px -12px rgba(23,115,74,.6);font-weight:800}
.v30-cards svg{width:38px;height:38px}
.v30-home .v30-note{margin:0 auto;max-width:62ch;color:var(--muted);font-size:.9rem}.v30-note a{color:#17734A;font-weight:800}
@media (max-width:900px){
  .home-grid{grid-template-columns:1fr;gap:12px;justify-items:center}
  .welcome{display:contents}
  .welcome>*,#login .ticket{justify-self:center;text-align:center}
  .hero-frame{order:1;max-width:620px}.kicker{order:2}.welcome h1{order:3}.school-badge{order:4}#login .ticket{order:5;max-width:620px;margin-top:10px;text-align:start}.home-desc{order:6;margin-top:14px}.facts{order:7;justify-content:center}
}
@media (max-width:560px){
  .home-band{padding:14px 12px 44px;border-radius:0 0 30px 30px}
  .hero-frame{border-radius:20px}
  .how-steps{grid-template-columns:1fr;gap:22px}.pp-list{grid-template-columns:repeat(2,1fr);gap:12px}.pp-list svg{width:72px;height:72px}
  .facts li{padding:6px 10px}.facts b{font-size:1.1rem}
}

/* ================= sign-in ticket ================= */
.ticket{width:min(880px,100%);display:grid;grid-template-columns:170px 1fr;background:#fff;border-radius:var(--r-l);box-shadow:0 30px 60px -24px rgba(0,0,0,.55);overflow:hidden}
.ticket-stub{list-style:none;margin:0;padding:26px 16px;display:flex;flex-direction:column;gap:14px;background:linear-gradient(180deg,var(--gold-hi),var(--gold));
  position:relative;border-inline-end:3px dashed rgba(43,30,107,.25)}
.ticket-stub::before,.ticket-stub::after{content:"";position:absolute;inset-inline-end:-14px;width:26px;height:26px;border-radius:50%;background:var(--indigo)}
.ticket-stub::before{top:-13px}.ticket-stub::after{bottom:-13px}
.ticket-stub li{display:flex;align-items:center;gap:10px;font-weight:800;color:rgba(43,30,107,.55)}
.ticket-stub li span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.55);color:var(--indigo)}
.ticket-stub li.on{color:var(--indigo)}
.ticket-stub li.on span{background:var(--indigo);color:var(--gold-hi)}
.ticket-body{padding:26px 30px 24px}
.ticket-body h2{font-size:1.6rem;margin-bottom:14px}
.lead{margin:0 0 6px;color:var(--muted);font-weight:700;font-size:1.02rem}
.world-pick{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.world-btn{--wb:var(--accent);border:0;padding:0 0 16px;background:#fff;border-radius:120px 120px var(--r-m) var(--r-m);overflow:hidden;display:grid;justify-items:center;gap:2px;
  box-shadow:0 0 0 3px var(--wb),0 8px 0 0 var(--wb),var(--lift);transition:transform var(--t-card),box-shadow var(--t-card)}
.world-btn.boys{--wb:#2F6BFF}.world-btn.girls{--wb:#C2449A}
.world-btn .portal-art{width:100%;height:auto;display:block;transition:transform 500ms}
.world-btn b{font-size:1.4rem;margin-top:10px;color:var(--wb)}
.world-btn small{color:var(--muted);font-weight:700}
.world-btn:hover{transform:translateY(-6px);box-shadow:0 0 0 3px var(--wb),0 14px 0 0 var(--wb),0 26px 40px -18px var(--wb)}
.world-btn:hover .portal-art{transform:scale(1.06)}
.world-btn:active{transform:translateY(4px);box-shadow:0 0 0 3px var(--wb),0 2px 0 0 var(--wb)}
.field-label{display:block;font-weight:700;color:var(--muted)}
.code-input{width:100%;font:800 1.45rem/1.2 var(--font);letter-spacing:.14em;text-align:center;direction:ltr;padding:16px;margin:8px 0 6px;border-radius:var(--r-m);
  border:2px solid #DCD3F7;background:var(--mist);color:var(--indigo);transition:border-color var(--t-press),box-shadow var(--t-press)}
.code-input::placeholder{color:#C6BCEB;letter-spacing:.08em}
.code-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.form-msg{min-height:1.6em;margin:0 0 6px;color:#8A4B00;font-weight:800}
.guest-line{margin:18px 0 0;padding-top:14px;border-top:1px solid #EEE9FB;color:var(--muted);font-weight:700}
.grade-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 10px}
.grade-pick button{border:0;border-radius:var(--r-m);background:var(--accent-soft);color:var(--accent-lo);min-height:68px;font-weight:800;font-size:1.1rem;
  box-shadow:0 5px 0 rgba(43,30,107,.12);transition:transform var(--t-press)}
.grade-pick button:hover{transform:translateY(-2px)}
.tools{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-top:16px}
.note{color:var(--muted);font-size:.95rem}
.shake{animation:shake 320ms ease-in-out}
@keyframes shake{0%,100%{transform:translateX(0)}30%{transform:translateX(-6px)}60%{transform:translateX(6px)}}

/* ================= guides desk (fixed place, top of the map) ================= */
.guides-banner{display:flex;align-items:center;gap:14px;max-width:820px;margin:0 auto 18px;padding:12px 14px 12px 12px;border-radius:var(--r-l);
  background:#fff;box-shadow:0 0 0 2px #E9E2FF,var(--lift);position:relative}
.guides-banner::before{content:"";position:absolute;inset-block:14px;inset-inline-start:0;width:5px;border-radius:5px;background:linear-gradient(var(--gold),var(--glass))}
.gb-faces{display:flex;flex:none;padding-inline-start:8px}
.gb-face{width:58px;height:58px;border-radius:50%;box-shadow:0 0 0 3px #fff,0 0 0 5px #E9E2FF;filter:grayscale(.7) opacity(.6);transition:filter var(--t-card),box-shadow var(--t-card)}
.gb-face.on{filter:none;box-shadow:0 0 0 3px #fff,0 0 0 5px var(--gold)}
.gb-face+.gb-face{margin-inline-start:-12px}
.gb-msg{flex:1;margin:0;font-weight:700;line-height:1.5}
.gb-msg b{display:block;color:var(--violet);font-size:.88rem}
.gb-next{flex:none;width:48px;height:48px;border:0;border-radius:50%;background:var(--lilac);color:var(--indigo);display:grid;place-items:center;transition:transform var(--t-press),background var(--t-press)}
.gb-next svg{width:24px;height:24px}
.gb-next:hover{background:var(--gold-hi)}
.gb-next:active{transform:scale(.9)}
.guides-banner.no-faces .gb-faces{display:none}

/* ================= the map: exhibits along a golden trail ================= */
.map{position:relative;max-width:900px;margin:0 auto;border-radius:36px;overflow:hidden;padding:12px 0 30px;
  background:linear-gradient(180deg,#DCD2FF 0,#EDE8FF 140px,#D8F3E4 140px,#C2EBD3 100%);box-shadow:0 0 0 2px #E2DAFA,var(--lift)}
.map::before{content:"";position:absolute;inset:132px 0 auto;height:40px;background:radial-gradient(60% 100% at 50% 0,#B9E8CC,transparent)}
.v30-strip{position:relative;display:block;width:min(100%,520px);height:auto;margin:0 auto}
.trail{position:relative;display:grid;grid-template-columns:1fr 1fr;row-gap:6px;padding:4px 6% 0}
.trail-path{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.trail-path .road{fill:none;stroke:#F4E2B0;stroke-width:34;stroke-linecap:round}
.trail-path .dash{fill:none;stroke:var(--gold);stroke-width:5;stroke-linecap:round;stroke-dasharray:2 16}
.place{position:relative;z-index:1;border:0;background:none;padding:6px 0 4px;display:grid;justify-items:center;align-self:start;align-content:start;gap:0;color:var(--ink)}
.place:nth-of-type(odd){grid-column:1}.place:nth-of-type(even){grid-column:2;margin-top:44px}
.place .pedestal{position:relative;width:150px;height:150px;display:grid;place-items:end center}
.place .pedestal::before{content:"";position:absolute;bottom:0;left:12px;right:12px;height:34px;border-radius:50%;
  background:radial-gradient(70% 70% at 50% 30%,#fff,#E9E2FF 60%,#CFC3F5);box-shadow:0 4px 0 #BFB0EE,0 14px 20px -10px rgba(43,30,107,.5)}
.place .pedestal::after{content:"";position:absolute;bottom:16px;left:28px;right:28px;height:6px;border-radius:50%;background:var(--gold);opacity:.6}
.place svg.exhibit{position:relative;width:130px;height:130px;margin-bottom:12px;transition:transform 260ms cubic-bezier(.3,1.5,.5,1),filter 260ms;filter:drop-shadow(0 8px 10px rgba(43,30,107,.18))}
.place:hover svg.exhibit,.place.selected svg.exhibit{transform:translateY(-10px) scale(1.06)}
.place.selected svg.exhibit{filter:drop-shadow(0 0 14px rgba(242,182,48,.85))}
.plate{margin-top:-6px;min-width:150px;padding:6px 16px 7px;border-radius:var(--r-s);background:linear-gradient(180deg,#FFF4D1,#F6D57A);
  box-shadow:inset 0 0 0 2px #E2B54A,0 5px 0 #C99A3A;display:grid;line-height:1.3}
.plate b{font-size:1.08rem;color:var(--indigo)}
.plate small{font-size:.84rem;color:#7A5A20;font-weight:700}
.place.selected .plate{background:linear-gradient(180deg,var(--indigo-2),var(--indigo));box-shadow:inset 0 0 0 2px var(--gold),0 5px 0 #1A1145}
.place.selected .plate b{color:#fff}.place.selected .plate small{color:var(--gold-hi)}
.place:active .plate{transform:translateY(3px);box-shadow:inset 0 0 0 2px #E2B54A,0 2px 0 #C99A3A}
/* one orchestrated moment: the trail draws, exhibits rise */
.map.reveal .trail-path .edge,.map.reveal .trail-path .road,.map.reveal .trail-path .dash{stroke-dashoffset:var(--len);animation:draw 1100ms ease-out forwards}
.map.reveal .trail-path .road,.map.reveal .trail-path .edge{stroke-dasharray:var(--len)}
@keyframes draw{to{stroke-dashoffset:0}}
.map.reveal .place{animation:rise 520ms cubic-bezier(.3,1.4,.5,1) backwards;animation-delay:calc(160ms + var(--i) * 90ms)}
@keyframes rise{from{opacity:0;transform:translateY(24px) scale(.9)}to{opacity:1;transform:none}}
.info{position:sticky;bottom:14px;z-index:5;max-width:620px;margin:18px auto 0;padding:18px 20px;border-radius:var(--r-l);background:#fff;
  box-shadow:0 0 0 2px var(--gold),var(--lift);display:grid;gap:6px;animation:screenIn var(--t-card) ease-out}
.info h3{font-size:1.4rem;color:var(--indigo)}
.info .note{margin:0}
.info .row{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
.info .row span{background:var(--lilac);color:var(--indigo);border-radius:var(--r-full);padding:4px 12px;font-weight:700;font-size:.9rem}

/* ================= sheets (mission / hall) ================= */
.sheet{max-width:820px;margin:0 auto;background:#fff;border-radius:var(--r-l);overflow:hidden;box-shadow:0 0 0 2px #E9E2FF,var(--lift)}
.sheet-head{display:flex;align-items:center;gap:14px;padding:16px 22px;background:linear-gradient(90deg,var(--indigo),var(--indigo-2));color:#fff}
.sheet-head h2{flex:1;font-size:1.3rem}
.sheet-body{padding:22px}
.m-stars{display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.12);border-radius:var(--r-full);padding:4px 12px;font-weight:800;color:var(--gold-hi)}
.m-stars svg{width:24px;height:24px}
.progress{height:14px;width:min(220px,34vw);background:rgba(255,255,255,.15);border-radius:14px;overflow:hidden;box-shadow:inset 0 2px 3px rgba(0,0,0,.25)}
.progress i{display:block;height:100%;width:0;border-radius:14px;background:linear-gradient(180deg,var(--gold-hi),var(--gold));transition:width var(--t-card)}
.q-meta{display:flex;justify-content:space-between;color:var(--muted);font-weight:700;margin-bottom:6px}
.prompt{font-size:clamp(1.3rem,3.4vw,1.7rem);font-weight:800;color:var(--indigo);margin:.2rem 0 1rem;line-height:1.45}
.q-img{display:block;width:100%;max-width:400px;height:auto;margin:0 auto 18px;border-radius:var(--r-m);box-shadow:0 0 0 2px #EEE9FB}
.answers{display:grid;gap:14px}
.answers.two{grid-template-columns:1fr 1fr}
.ans{border:0;border-radius:var(--r-m);padding:16px 14px;min-height:66px;font-weight:800;font-size:1.25rem;color:var(--indigo);background:#fff;
  box-shadow:inset 0 0 0 2px #E2DAFA,0 5px 0 #E2DAFA;transition:transform var(--t-press),box-shadow var(--t-press),background var(--t-press)}
.ans:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 2px #CFC3F5,0 7px 0 #CFC3F5}
.ans:active{transform:translateY(4px);box-shadow:inset 0 0 0 2px #CFC3F5,0 1px 0 #CFC3F5}
.ans.chosen{background:var(--accent-soft);box-shadow:inset 0 0 0 3px var(--accent),0 5px 0 var(--accent-lo)}
.ans.correct{background:var(--ok-soft);box-shadow:inset 0 0 0 3px var(--ok),0 5px 0 #157A52;animation:pop 360ms ease-out}
.ans.gentle{background:var(--calm-soft);box-shadow:inset 0 0 0 3px var(--calm),0 5px 0 #5B61D6}
.ans:disabled{cursor:default}
.ans:disabled:hover{transform:none}
.tiles{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:8px 0}
.tile{width:62px;height:62px;border:0;border-radius:16px;background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--indigo);font-size:1.6rem;font-weight:800;
  box-shadow:0 5px 0 var(--gold-lo);transition:transform var(--t-press),opacity var(--t-press)}
.tile:active{transform:translateY(4px);box-shadow:0 1px 0 var(--gold-lo)}
.tile.used{opacity:.3;transform:scale(.9)}
.slot{display:flex;justify-content:center;align-items:center;min-height:70px;padding:8px;margin-bottom:10px;border-radius:var(--r-m);
  background:var(--mist);box-shadow:inset 0 0 0 2px #DCD3F7;font-size:1.9rem;font-weight:800;color:var(--indigo);letter-spacing:.06em}
.order-list{display:grid;gap:12px}
.order-item{display:flex;align-items:center;gap:12px;text-align:start}
.order-item .num{width:38px;height:38px;border-radius:50%;background:var(--lilac);display:grid;place-items:center;font-weight:800;flex:none}
.order-item.placed .num{background:var(--indigo);color:var(--gold-hi)}
.match-row{display:grid;gap:8px;margin-bottom:14px}
.match-row b{font-size:1.25rem;direction:ltr;text-align:start;color:var(--indigo)}
.feedback{margin-top:16px;border-radius:var(--r-m);padding:14px 16px;font-weight:700;display:flex;gap:12px;align-items:flex-start;animation:screenIn var(--t-msg) ease-out}
.feedback.ok{background:var(--ok-soft);color:#0F5E3E}
.feedback.calm{background:var(--calm-soft);color:#2F3A8F}
.feedback svg{width:46px;height:46px;flex:none}
.reveal{margin-top:6px;font-weight:800;color:var(--indigo)}
.start-card{text-align:center;display:grid;justify-items:center;gap:12px}
.start-card svg.big{width:150px;height:150px;filter:drop-shadow(0 10px 12px rgba(43,30,107,.2))}
.start-card h3{font-size:1.5rem;color:var(--indigo)}
.start-card .facts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.chip{background:var(--lilac);color:var(--indigo);border-radius:var(--r-full);padding:6px 14px;font-weight:700}
.start-card .tools{width:100%}
/* classify */
.cls-pool{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;min-height:66px;padding:10px;border-radius:var(--r-m);background:var(--mist);box-shadow:inset 0 0 0 2px #E2DAFA;margin-bottom:14px}
.cls-item{border:0;border-radius:14px;padding:10px 16px;min-height:50px;font-weight:800;font-size:1.1rem;background:#fff;color:var(--indigo);cursor:grab;touch-action:none;
  box-shadow:inset 0 0 0 2px #DCD3F7,0 4px 0 #DCD3F7}
.cls-item[aria-pressed="true"]{box-shadow:inset 0 0 0 3px var(--gold),0 4px 0 var(--gold-lo)}
.cls-item.dragging{opacity:.5}
.cls-bins{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.cls-bin{border-radius:var(--r-m);min-height:140px;padding:8px;display:flex;flex-direction:column;gap:8px;background:#fff;text-align:center;box-shadow:inset 0 0 0 2px #CFC3F5;transition:background var(--t-press)}
.cls-bin>button.bin-label{border:0;border-radius:12px;padding:10px;min-height:48px;font-weight:800;background:var(--indigo);color:#fff}
.cls-bin.over{background:var(--gold-hi)}
/* celebration */
.fx-layer{position:fixed;inset:0;pointer-events:none;z-index:50}
.fly-star{position:fixed;width:46px;height:46px;z-index:51;pointer-events:none}
.spark{position:fixed;width:9px;height:9px;border-radius:50%;background:var(--gold);pointer-events:none;z-index:51}
.complete{text-align:center;display:grid;justify-items:center;gap:8px;padding:6px 0}
.complete h2{font-size:clamp(1.6rem,4.5vw,2.3rem);color:var(--indigo)}
.stars-row{display:flex;justify-content:center;gap:14px;margin:8px 0}
.stars-row svg{width:clamp(60px,12vw,86px);height:clamp(60px,12vw,86px);filter:drop-shadow(0 6px 8px rgba(201,138,16,.35))}
.stars-row svg.off{filter:grayscale(1);opacity:.25}
.perfect{display:inline-block;background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--indigo);border-radius:var(--r-full);padding:6px 20px;font-weight:800;box-shadow:0 4px 0 var(--gold-lo)}
.complete .actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.reward{display:grid;justify-items:center;gap:6px;margin:6px 0}
.reward>svg{width:92px;height:92px}
.reward .lid{transform-box:fill-box;transform-origin:left bottom;transition:transform 600ms cubic-bezier(.2,.8,.2,1)}
.reward.open .lid{transform:translateY(-10px) rotate(-18deg)}
.trophy{width:100px;height:100px;animation:pop 700ms ease-out}
@keyframes pop{0%{transform:scale(.4);opacity:0}70%{transform:scale(1.1)}100%{transform:scale(1);opacity:1}}
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}
.badge{border-radius:var(--r-m);background:#fff;box-shadow:inset 0 0 0 2px #EEE9FB;padding:14px;display:grid;justify-items:center;gap:4px;text-align:center}
.badge svg{width:64px;height:64px}
.badge.locked svg{filter:grayscale(1);opacity:.35}
.badge b{font-size:1.02rem;color:var(--indigo)}
.badge small{color:var(--muted);line-height:1.4}
.badge .bar{width:100%;height:8px;background:var(--lilac);border-radius:8px;overflow:hidden}
.badge .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-hi))}
.new-badges{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.stars-split{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
.stars-split>div{border-radius:var(--r-m);padding:16px;text-align:center;background:linear-gradient(180deg,#FFF8DF,#FFEDB5);box-shadow:inset 0 0 0 2px #F6D57A}
.stars-split>div+div{background:var(--lilac);box-shadow:inset 0 0 0 2px #DCD3F7}
.stars-split b{display:block;font-size:2.3rem;color:var(--indigo);line-height:1.1}
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:12px;margin:22px 0}
.seat{display:grid;justify-items:center;gap:6px;text-align:center}
.seat .name{font-weight:800;color:var(--indigo)}
.seat .block{width:100%;border-radius:16px 16px 6px 6px;display:grid;place-items:center;font-size:1.8rem;font-weight:800;color:#fff}
.seat.r1 .block{height:130px;background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--indigo);box-shadow:inset 0 -6px 0 var(--gold-lo)}
.seat.r2 .block{height:96px;background:linear-gradient(180deg,#E9E5F5,#B9B2D6);color:var(--indigo);box-shadow:inset 0 -6px 0 #9C93C4}
.seat.r3 .block{height:74px;background:linear-gradient(180deg,#FFC2A8,#E07A50);box-shadow:inset 0 -6px 0 #B85A33}
.seat.empty .name{color:var(--muted);font-weight:700}
.seat.me .name{color:var(--accent)}
.subject-tabs{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:10px}
.subject-tabs .btn{min-height:44px;padding:8px 16px;font-size:.95rem}
.subject-tabs .btn[aria-pressed="true"]{--b:var(--indigo);--b2:#1A1145;--fg:#fff}

/* footer */
.site-footer{display:flex;flex-wrap:wrap;gap:6px 22px;justify-content:center;padding:16px 18px;background:var(--indigo);color:#CFC6FF;font-size:.88rem}
.site-footer a{color:var(--gold-hi);font-weight:700;margin-inline:6px}

/* ================= small screens ================= */
@media (max-width:760px){
  .ticket{grid-template-columns:1fr}
  .ticket-stub{flex-direction:row;justify-content:center;padding:14px;border-inline-end:0;border-bottom:3px dashed rgba(43,30,107,.25)}
  .ticket-stub::before,.ticket-stub::after{display:none}
  .ticket-stub li{font-size:.9rem;gap:6px}
  .ticket-body{padding:20px 18px}
  }
@media (max-width:560px){
  .hud{padding:8px 10px;gap:6px}
  .brand span{display:none}
  .hud-btn .label{display:none}
  .hud-btn{padding:0;width:44px;justify-content:center}
  .world-pick{grid-template-columns:1fr 1fr;gap:12px}
  .world-btn b{font-size:1.15rem}.world-btn small{font-size:.78rem;padding:0 6px}
  .place .pedestal{width:120px;height:120px}
  .place svg.exhibit{width:104px;height:104px}
  .plate{min-width:128px;padding:5px 10px}
  .place:nth-of-type(even){margin-top:56px}
  .answers.two{grid-template-columns:1fr 1fr}
  .sheet-body{padding:16px}
  .mission-head{flex-wrap:wrap;row-gap:10px}
  .mission-head .progress{order:3;width:100%}
  .sheet-head h2{font-size:1.15rem}
  .gb-face{width:46px;height:46px}
}

/* ================= reduced motion (system or child's choice) ================= */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
body.calm-motion *,body.calm-motion *::before,body.calm-motion *::after{animation:none!important;transition:none!important}
body.paused *{animation-play-state:paused!important}

/* girls world: same system, star-garden palette */

/* ================= RC4 refinements ================= */
/* settings: one tidy control instead of three pills */
.settings{position:relative}
.settings-panel{position:absolute;inset-inline-end:0;top:calc(100% + 10px);z-index:40;width:240px;padding:8px;border-radius:var(--r-m);background:#fff;color:var(--ink);
  box-shadow:0 0 0 2px #E9E2FF,0 24px 40px -16px rgba(43,30,107,.55);display:grid;gap:4px;animation:screenIn 180ms ease-out}
.settings-panel::before{content:"";position:absolute;top:-7px;inset-inline-end:22px;width:14px;height:14px;background:#fff;transform:rotate(45deg);box-shadow:-2px -2px 0 #E9E2FF}
.toggle{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:6px 10px;border:0;border-radius:12px;background:none;font-weight:700;text-align:start}
.toggle:hover{background:var(--mist)}
.toggle svg{width:22px;height:22px;color:var(--violet);flex:none}
.toggle span{flex:1}
.toggle i{position:relative;width:44px;height:26px;border-radius:13px;background:#DCD3F7;transition:background var(--t-card);flex:none}
.toggle i::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 2px 4px rgba(0,0,0,.2);transition:transform var(--t-card)}
.toggle[aria-pressed="true"] i{background:var(--ok)}
.toggle[aria-pressed="true"] i::after{transform:translateX(-18px)}
[dir="ltr"] .toggle[aria-pressed="true"] i::after{transform:translateX(18px)}
.hud-btn[aria-expanded="true"]{background:#fff;color:var(--indigo)}
/* map scenery */
.skyline{position:absolute;inset:44px 0 auto;height:130px;background:url(/assets/skyline.svg) center bottom/auto 100% repeat-x;opacity:.9;pointer-events:none}
.v30-strip{z-index:1}
.trail-path .deco{pointer-events:none}
.me-pin circle.ring{fill:#fff;stroke:var(--gold);stroke-width:4}
.me-pin .tag{fill:var(--indigo)}
.me-pin text{fill:#fff;font:800 13px var(--font)}
.plate .stars{display:inline-flex;align-items:center;gap:3px;justify-self:center;margin-top:2px;padding:0 8px;border-radius:var(--r-full);background:rgba(255,255,255,.65);font-weight:800;color:var(--indigo);font-size:.85rem}
.plate .stars svg{width:15px;height:15px}
.place.selected .plate .stars{background:rgba(255,255,255,.15);color:var(--gold-hi)}
/* mission header */
.mh-icon{width:46px;height:46px;flex:none;margin:-6px 0;filter:drop-shadow(0 4px 6px rgba(0,0,0,.3))}
.progress{position:relative;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 18%,rgba(255,255,255,.08) 18% 20%)}
.q-meta span:first-child{display:inline-flex;align-items:center;gap:6px;background:var(--lilac);color:var(--indigo);border-radius:var(--r-full);padding:2px 12px}
/* completion ribbon */
.complete h2{position:relative;padding:8px 42px;color:#fff;background:linear-gradient(180deg,var(--indigo-2),var(--indigo));
  clip-path:polygon(0 0,100% 0,calc(100% - 18px) 50%,100% 100%,0 100%,18px 50%);font-size:clamp(1.3rem,4vw,1.9rem)}
@media (max-width:560px){.settings-panel{inset-inline-end:-60px}.mh-icon{width:38px;height:38px}}

/* RC6: school identity */
.ticket-school{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:6px 14px;width:fit-content;border-radius:999px;background:var(--lilac,#EFE9FF);color:var(--indigo);font-weight:800;font-size:.9rem}
.ticket-school svg{width:22px;height:22px}

/* ================= two worlds, two palettes =================
   عالم الأبطال: daytime sky, ocean blue + turquoise, orange highlights.
   عالم النجمات: twilight violet-pink, stars and moon, mint highlights. */
body{--hud-a:#12307A;--hud-b:#2F6BFF;--sky-a:#9FD3FF;--sky-b:#DDF1FF;--ground-a:#D6F5E6;--ground-b:#AEE6CC;--ground-glow:#B9E8CC;
  --road:#F7E6B5;--road-edge:#E3C77A;--dash:#F28C28;--plate-a:#EEF4FF;--plate-b:#C9DBFF;--plate-ink:#12307A;--plate-sub:#2F4F9A;--plate-edge:#8EAAF0;--plate-low:#5E7FD6;
  --hi2:#FF8A3D;--hi2-soft:#FFE6D5;--tag-new:#C2410C;--pin:#2F6BFF;--world-dark:#12307A}
body[data-world="girls"]{--hud-a:#3E1A6E;--hud-b:#B23F95;--sky-a:#5B3AA8;--sky-b:#F4B6D8;--ground-a:#FDE9F3;--ground-b:#F5C9E1;--ground-glow:#F3C3DF;
  --road:#FFE3EF;--road-edge:#EFA2C6;--dash:#B23F95;--plate-a:#FFF0F7;--plate-b:#F9C9E1;--plate-ink:#5A1F6E;--plate-sub:#8E2A70;--plate-edge:#E58BB8;--plate-low:#C2449A;
  --hi2:#20B98C;--hi2-soft:#D9F7EC;--tag-new:#0F7A5C;--pin:#C2449A;--world-dark:#4A1D7A}
.hud,.sheet-head{background:linear-gradient(90deg,var(--hud-a),var(--hud-b))}
.guides-banner::before{background:linear-gradient(var(--gold),var(--hud-b))}
.gb-msg b{color:var(--hud-b)}
.map{background:linear-gradient(180deg,var(--sky-a) 0,var(--sky-b) 150px,var(--ground-a) 150px,var(--ground-b) 100%)}
.map::before{background:radial-gradient(60% 100% at 50% 0,var(--ground-glow),transparent)}
.trail-path .road{stroke:var(--road)}
.trail-path .dash{stroke:var(--dash)}
.trail-path .edge{fill:none;stroke:var(--road-edge);stroke-width:42;stroke-linecap:round;opacity:.55}
.plate{background:linear-gradient(180deg,var(--plate-a),var(--plate-b));box-shadow:inset 0 0 0 2px var(--plate-edge),0 5px 0 var(--plate-low)}
.plate b{color:var(--plate-ink)}.plate small{color:var(--plate-sub)}
.place.selected .plate{background:linear-gradient(180deg,var(--hud-b),var(--world-dark));box-shadow:inset 0 0 0 2px var(--gold),0 5px 0 #0d0b2e}
.me-pin circle.ring{stroke:var(--pin)}.me-pin .tag{fill:var(--world-dark)}
.info{box-shadow:0 0 0 2px var(--plate-edge),var(--lift)}
.info h3{color:var(--world-dark)}
.info .row span{background:var(--plate-a);color:var(--plate-ink);box-shadow:inset 0 0 0 1px var(--plate-edge)}
body[data-world="girls"] .skyline{filter:hue-rotate(45deg) saturate(1.15)}
body[data-world="boys"] .skyline{filter:hue-rotate(-28deg) saturate(1.1)}
/* sky life: clouds by day for the heroes, stars and a moon at dusk for the stars world */
.sky-fx{position:absolute;inset:0 0 auto;height:150px;pointer-events:none;overflow:hidden}
.sky-fx i{position:absolute;display:block;width:70px;height:22px;border-radius:22px;background:#fff;opacity:.9;
  box-shadow:16px -10px 0 2px #fff,38px -4px 0 0 #fff;animation:cloud 46s linear infinite}
.sky-fx .s1{top:22px;left:-90px}.sky-fx .s2{top:58px;left:-90px;animation-delay:-14s;transform:scale(.8)}.sky-fx .s3{top:34px;left:-90px;animation-delay:-28s;transform:scale(.6)}
.sky-fx .s4,.sky-fx .s5,.sky-fx .moon{display:none}
@keyframes cloud{to{left:110%}}
body[data-world="girls"] .sky-fx i{width:6px;height:6px;border-radius:50%;background:#FFE7A0;box-shadow:0 0 10px 2px rgba(255,231,160,.8);animation:starTw 3s ease-in-out infinite;opacity:.9;display:block}
body[data-world="girls"] .sky-fx .s1{top:20px;left:12%}body[data-world="girls"] .sky-fx .s2{top:52px;left:30%;animation-delay:-.8s}
body[data-world="girls"] .sky-fx .s3{top:26px;left:64%;animation-delay:-1.6s}body[data-world="girls"] .sky-fx .s4{top:70px;left:84%;animation-delay:-2.2s}
body[data-world="girls"] .sky-fx .s5{top:14px;left:46%;animation-delay:-1.1s}
body[data-world="girls"] .sky-fx .moon{display:block;position:absolute;top:18px;inset-inline-end:7%;width:40px;height:40px;border-radius:50%;box-shadow:-10px 6px 0 0 #FFE7A0;transform:rotate(-20deg)}
@keyframes starTw{0%,100%{opacity:.35;transform:scale(.7)}50%{opacity:1;transform:scale(1.25)}}
/* «رحلتي» panel */
.journey{max-width:900px;margin:0 auto 14px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:14px 18px;border-radius:var(--r-l);
  color:#fff;background:linear-gradient(110deg,var(--world-dark),var(--hud-b));box-shadow:0 0 0 3px rgba(255,255,255,.6),var(--lift)}
.j-level{display:flex;align-items:center;gap:10px}
.j-medal{width:52px;height:52px;flex:none;filter:drop-shadow(0 4px 6px rgba(0,0,0,.3))}
.j-level small{display:block;color:var(--gold-hi);font-weight:700;font-size:.82rem}
.j-level b{font-size:1.3rem;line-height:1.2}
.j-track{height:14px;border-radius:999px;background:rgba(255,255,255,.22);overflow:hidden;box-shadow:inset 0 2px 3px rgba(0,0,0,.2)}
.j-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--gold),var(--gold-hi));transition:width 700ms cubic-bezier(.3,1.2,.5,1)}
.j-bar small{display:block;margin-top:4px;color:#EDE7FF;font-weight:700;font-size:.85rem}
.j-stats{list-style:none;margin:0;padding:0;display:flex;gap:8px}
.j-stats li{display:grid;justify-items:center;min-width:76px;padding:6px 8px;border-radius:16px;background:rgba(255,255,255,.12)}
.j-stats svg{width:24px;height:24px}.j-stats b{font-size:1.1rem;line-height:1.2}.j-stats span{font-size:.75rem;font-weight:700;color:#EDE7FF}
/* quick jump chips */
.place-nav{max-width:900px;margin:0 auto 14px;display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;scrollbar-width:thin}
.pn-chip{flex:none;display:inline-flex;align-items:center;gap:6px;height:46px;padding:0 14px 0 8px;border:0;border-radius:999px;background:#fff;color:var(--plate-ink);font-weight:800;font-size:.92rem;
  box-shadow:inset 0 0 0 2px var(--plate-edge),0 4px 0 var(--plate-edge);transition:transform var(--t-press),box-shadow var(--t-press)}
.pn-chip svg{width:30px;height:30px}
.pn-chip:hover{transform:translateY(-2px)}.pn-chip:active{transform:translateY(3px);box-shadow:inset 0 0 0 2px var(--plate-edge),0 1px 0 var(--plate-edge)}
/* place status: progress bar, new / next / complete tags */
.plate-row{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:3px}
.plate .stars{margin-top:0}
.pbar{width:58px;height:8px;border-radius:999px;background:rgba(255,255,255,.75);box-shadow:inset 0 0 0 1px var(--plate-edge);overflow:hidden}
.pbar i{display:block;height:100%;background:linear-gradient(90deg,var(--hi2),var(--gold));border-radius:inherit}
.pct{font-size:.78rem;font-weight:800;color:var(--plate-sub)}
.place.selected .pct{color:var(--gold-hi)}
.tag{position:absolute;top:2px;inset-inline-start:2px;z-index:2;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:800;box-shadow:0 3px 0 rgba(0,0,0,.15)}
.tag-new{background:var(--tag-new);color:#fff}
.tag-done{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--indigo)}
.tag-done::before{content:"★ "}
.tag-next{background:var(--world-dark);color:#fff;animation:nextBob 1.2s ease-in-out infinite}
.tag-next::after{content:"";position:absolute;bottom:-7px;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--world-dark);border-bottom:0}
@keyframes nextBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.place.next .pedestal::before{box-shadow:0 0 0 4px rgba(255,255,255,.7),0 0 22px 6px var(--hi2)}
.place.complete svg.exhibit{filter:drop-shadow(0 0 10px rgba(242,182,48,.9))}
@media (max-width:760px){
  .journey{grid-template-columns:auto 1fr;gap:8px 12px;padding:10px 12px}
  .j-medal{width:40px;height:40px}.j-level b{font-size:1.1rem}
  .j-bar{grid-column:1/-1;grid-row:2}
  .j-stats{grid-column:2;grid-row:1;justify-content:flex-end;gap:6px}.j-stats li{min-width:54px;padding:4px 6px}.j-stats svg{width:18px;height:18px}.j-stats b{font-size:.95rem}.j-stats span{font-size:.66rem}
  .pbar{width:40px}
}

/* sign-in by name: three name fields + grade and classroom chips */
.name-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.name-input{width:100%;min-height:50px;padding:8px 12px;border:2px solid #DCD3F7;border-radius:var(--r-s);background:var(--mist);font:inherit;font-weight:700;font-size:1.05rem;color:var(--ink);transition:border-color var(--t-press),box-shadow var(--t-press)}
.name-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.pick-row{border:0;margin:12px 0 0;padding:0;min-width:0}
.pick-row legend{padding:0;margin-bottom:6px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-width:52px;min-height:46px;padding:0 14px;border:0;border-radius:var(--r-full);background:#fff;color:var(--ink);font-weight:800;
  box-shadow:inset 0 0 0 2px #DCD3F7,0 3px 0 #DCD3F7;transition:transform var(--t-press),background var(--t-press)}
.chip:hover{transform:translateY(-2px)}
.chip[aria-checked="true"]{background:var(--accent);color:#fff;box-shadow:inset 0 0 0 2px var(--accent-lo),0 3px 0 var(--accent-lo)}
@media (max-width:560px){.name-grid{grid-template-columns:1fr}.chip{min-width:46px;padding:0 10px}}

/* ================= big animated banner on the map (height / speed from the teacher panel) ================= */
.hero-banner{--hb-h:260px;--hb-speed:6s;position:relative;max-width:900px;height:var(--hb-h);margin:0 auto 16px;border-radius:30px;overflow:hidden;isolation:isolate;
  background:linear-gradient(120deg,var(--world-dark),var(--hud-b));box-shadow:0 0 0 3px rgba(255,255,255,.7),var(--lift)}
.hb-track{position:absolute;inset:0}
.hb-slide{position:absolute;inset:0;display:flex;align-items:center;gap:20px;padding:22px 34px 46px;color:#fff;opacity:0;transform:translateX(-6%) scale(.98);
  transition:opacity 650ms ease,transform 750ms cubic-bezier(.3,1.1,.4,1);pointer-events:none}
.hb-slide.on{opacity:1;transform:none;pointer-events:auto}
.hb-text{position:relative;z-index:2;display:grid;gap:4px;max-width:62%}
.hb-text small{font-weight:800;color:var(--gold-hi);font-size:clamp(.82rem,1.6vw,1rem)}
.hb-text b{font-size:clamp(1.5rem,4.2vw,2.6rem);line-height:1.15;text-shadow:0 3px 0 rgba(0,0,0,.2)}
.hb-text span{font-weight:700;font-size:clamp(.9rem,1.9vw,1.15rem);color:#F1ECFF}
.hb-slide.on .hb-text>*{animation:hbIn 700ms cubic-bezier(.3,1.3,.5,1) backwards}
.hb-slide.on .hb-text>*:nth-child(2){animation-delay:90ms}.hb-slide.on .hb-text>*:nth-child(3){animation-delay:180ms}
@keyframes hbIn{from{opacity:0;transform:translateY(14px)}}
.hb-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 55%;z-index:0}
.hb-slide.on .hb-img{animation:kenburns calc(var(--hb-speed) + 2s) ease-out both}
@keyframes kenburns{from{transform:scale(1.02)}to{transform:scale(1.14) translate(-2%,-1%)}}
.hb-welcome::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(270deg,rgba(18,10,60,.88) 0,rgba(18,10,60,.55) 50%,rgba(18,10,60,.05) 100%)}
.hb-art{position:absolute;inset-inline-start:5%;top:50%;width:min(36%,calc(var(--hb-h) * .8));height:auto;aspect-ratio:1;transform:translateY(-55%);z-index:1;filter:drop-shadow(0 18px 18px rgba(0,0,0,.35))}
.hb-slide.on .hb-art{animation:hbFloat 4s ease-in-out infinite}
@keyframes hbFloat{0%,100%{transform:translateY(-55%)}50%{transform:translateY(-62%) rotate(-2deg)}}
.hb-games-row{position:absolute;inset-inline-start:4%;top:50%;transform:translateY(-55%);display:grid;grid-template-columns:repeat(3,auto);gap:10px;z-index:1}
.hb-game{width:clamp(44px,calc(var(--hb-h) * .24),78px);aspect-ratio:1;border-radius:18px;display:grid;place-items:center;background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 2px rgba(255,255,255,.3)}
.hb-game svg{width:62%;height:62%}
.hb-slide.on .hb-game{animation:hbPop 600ms cubic-bezier(.3,1.6,.5,1) backwards}
.hb-slide.on .hb-game:nth-child(2){animation-delay:80ms}.hb-slide.on .hb-game:nth-child(3){animation-delay:160ms}.hb-slide.on .hb-game:nth-child(4){animation-delay:240ms}
.hb-slide.on .hb-game:nth-child(5){animation-delay:320ms}.hb-slide.on .hb-game:nth-child(6){animation-delay:400ms}
@keyframes hbPop{from{opacity:0;transform:scale(.4)}}
.hb-v30{background:linear-gradient(120deg,#0E5A39,#1C8E5F)}
.hb-digital{background:linear-gradient(120deg,#0B3C6E,#137F8E)}
.hb-level{background:linear-gradient(120deg,#5A3200,#C98A10)}
.hb-tip{background:linear-gradient(120deg,var(--hud-b),var(--world-dark))}
.hb-spark{position:absolute;z-index:1;width:8px;height:8px;border-radius:50%;background:#FFE7A0;box-shadow:0 0 12px 3px rgba(255,231,160,.8);opacity:0}
.hb-slide.on .hb-spark{animation:starTw 2.6s ease-in-out infinite}
.hb-spark.s1{top:16%;inset-inline-start:46%}.hb-spark.s2{top:70%;inset-inline-start:58%;animation-delay:-.9s!important}.hb-spark.s3{top:30%;inset-inline-start:8%;animation-delay:-1.7s!important}
.hb-controls{position:absolute;z-index:3;bottom:10px;inset-inline:0;display:flex;align-items:center;justify-content:center;gap:8px}
.hb-btn{width:46px;height:46px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.18);color:#fff;backdrop-filter:blur(4px);transition:background var(--t-press),transform var(--t-press)}
.hb-btn:hover{background:rgba(255,255,255,.32)}.hb-btn:active{transform:scale(.9)}
.hb-btn svg{width:22px;height:22px}
#hbPause .ic-play{display:none}#hbPause[aria-pressed="true"] .ic-play{display:block}#hbPause[aria-pressed="true"] .ic-pause{display:none}
.hb-dots{display:flex;gap:0}
.hb-dot{width:46px;height:46px;border:0;background:none;padding:0;display:grid;place-items:center}
.hb-dot::before{content:"";width:10px;height:10px;border-radius:999px;background:rgba(255,255,255,.45);transition:width var(--t-card),background var(--t-card)}
.hb-dot[aria-current="true"]::before{width:24px;background:var(--gold)}
.hb-timer{position:absolute;z-index:3;top:0;inset-inline-start:0;height:5px;width:0;background:linear-gradient(90deg,var(--gold),var(--gold-hi))}
.hb-timer.run{animation:hbTimer var(--hb-speed) linear forwards}
@keyframes hbTimer{to{width:100%}}
.hero-banner.paused .hb-timer{display:none}
@media (max-width:760px){
  .hero-banner{height:min(var(--hb-h),230px);border-radius:24px}
  .hb-slide{padding:16px 18px 52px}
  .hb-text{max-width:66%}
  .hb-art{width:30%}
  .hb-games-row{grid-template-columns:repeat(2,auto);gap:6px}.hb-game{width:36px;border-radius:12px}
}

/* ================= game picker in the place card ================= */
.game-pick{margin:4px 0 12px}
.gp-title{margin:0 0 8px;font-weight:800;color:var(--world-dark)}
.gp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.gp-card{display:grid;justify-items:center;gap:2px;padding:10px 6px 9px;border:0;border-radius:var(--r-m);color:#fff;font-weight:800;min-height:96px;
  background:linear-gradient(160deg,var(--hud-b),var(--world-dark));box-shadow:0 5px 0 #0d0b2e33,inset 0 0 0 2px rgba(255,255,255,.18);transition:transform var(--t-press),box-shadow var(--t-press)}
.gp-card:nth-child(2n){background:linear-gradient(160deg,var(--hi2),var(--world-dark))}
.gp-card:hover{transform:translateY(-3px)}.gp-card:active{transform:translateY(3px);box-shadow:0 1px 0 #0d0b2e33}
.gp-card:disabled{filter:grayscale(.8);opacity:.5;cursor:not-allowed;transform:none}
.gp-ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.18)}
.gp-ic svg{width:28px;height:28px}
.gp-card b{font-size:1rem}.gp-card small{font-size:.76rem;opacity:.9;font-weight:700}
@media (max-width:560px){.gp-grid{gap:8px}.gp-card{min-height:88px;padding:8px 4px}.gp-card b{font-size:.9rem}}
@media (max-width:560px){.hb-dots{display:none}}

/* gate: opens once after signing in (about one second, a tap skips it; off with reduced motion or effects off) */
.gate{position:fixed;inset:0;z-index:90;display:grid;place-items:center;overflow:hidden;cursor:pointer;background:transparent}
.gate-door{position:absolute;top:0;bottom:0;width:50.5%;background:linear-gradient(180deg,var(--hud-a,#5a3fd0),var(--hud-b,#33228a));transition:transform .7s cubic-bezier(.6,0,.3,1);box-shadow:0 0 40px rgba(0,0,0,.35)}
.gate-door::before{content:"";position:absolute;inset:8% 12%;border-radius:120px 120px 12px 12px;border:3px solid rgba(255,231,160,.55);background:radial-gradient(circle at 50% 30%,rgba(255,255,255,.18),transparent 60%)}
.gate-door::after{content:"";position:absolute;top:18%;bottom:18%;width:6px;border-radius:3px;background:linear-gradient(180deg,#FFE7A0,#C98A10)}
.gate-door.left{left:0}.gate-door.left::after{right:14px}
.gate-door.right{right:0}.gate-door.right::after{left:14px}
.gate-title{position:relative;display:grid;justify-items:center;gap:10px;color:#fff;font-size:clamp(1.4rem,4vw,2.2rem);text-shadow:0 3px 0 rgba(0,0,0,.25);transition:opacity .25s ease,transform .4s ease}
.gate-logo{width:96px;height:96px;animation:gate-pop .45s cubic-bezier(.3,1.6,.5,1) both}
.gate.open .gate-door.left{transform:translateX(-102%)}
.gate.open .gate-door.right{transform:translateX(102%)}
.gate.open .gate-title{opacity:0;transform:scale(1.15)}
@keyframes gate-pop{from{transform:scale(.3) rotate(-20deg);opacity:0}to{transform:none;opacity:1}}

/* read-aloud and hint */
.btn.btn-icon{display:inline-flex;align-items:center;gap:6px}
.btn.btn-icon svg{width:20px;height:20px}
.ans.struck{opacity:.35;text-decoration:line-through;cursor:not-allowed}
.complete .time{font-weight:800;font-size:1.1rem;color:var(--hi2,#5a3fd0);margin:4px 0}

/* exams set by the teacher (shown only when one targets the student's class) */
.exam-strip{margin:0 auto 14px;max-width:1100px;background:#fff;border-radius:var(--r-m);padding:14px 18px;box-shadow:0 0 0 2px #EEE9FB,0 6px 0 #E2DAFA}
.exam-strip h2{font-size:1.1rem;color:var(--indigo);margin:0 0 10px}
.exam-list{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.exam-item{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:var(--r-m);background:var(--accent-soft)}
.exam-item b{color:var(--indigo);font-size:1.05rem}
.exam-item small{color:var(--muted);font-weight:700}
.exam-item .btn{align-self:flex-start;min-height:44px;padding:8px 18px;font-size:1rem}
.exam-timer{font-weight:800;font-variant-numeric:tabular-nums;background:rgba(255,255,255,.14);border-radius:var(--r-full);padding:4px 14px;color:#fff;min-width:84px;text-align:center}
.exam-timer.low{background:#B3261E}
.exam-dots{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.exam-dots button{width:40px;height:40px;border-radius:50%;border:0;font-weight:800;background:#F1EDFC;color:var(--indigo);box-shadow:inset 0 0 0 2px #E2DAFA}
.exam-dots button.done{background:var(--accent);color:#fff;box-shadow:none}
.exam-dots button[aria-current="true"]{outline:3px solid var(--gold);outline-offset:2px}
.exam-nav{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-top:18px}
.exam-result{text-align:center;padding:12px 0}
.exam-result .big{font-size:2.6rem;font-weight:800;color:var(--indigo);display:block;margin:8px 0}
