:root{--ink:#172554;--blue:#3155b7;--cyan:#22c7d6;--yellow:#ffd34f;--paper:#f8fbff}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:ui-rounded,"Nunito","Poppins",sans-serif;background:#101b3b;color:var(--ink)}body{background:radial-gradient(circle at 20% 0,#3155b7 0,#182758 42%,#0c1530 100%);min-height:100vh}.game-shell{min-height:100vh;padding:16px}.game-topbar{width:min(100%,1440px);display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 auto 14px;padding:11px 16px;border:2px solid rgba(255,255,255,.22);border-radius:18px;background:rgba(12,23,57,.78);color:#fff;box-shadow:0 12px 30px rgba(0,0,0,.25);backdrop-filter:blur(12px)}.game-brand{display:flex;align-items:center;gap:11px}.game-brand>span{width:42px;height:42px;display:grid;place-items:center;border:3px solid #fff3a6;border-radius:13px;background:linear-gradient(145deg,#ffd34f,#ff9c3d);color:#fff;font-size:23px;box-shadow:inset 0 -5px rgba(171,84,15,.2)}.game-brand small,.game-brand strong{display:block}.game-brand small{color:#9eeaf1;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.game-brand strong{margin-top:2px;font-size:17px}.game-stats{display:flex;align-items:center;gap:10px}.game-stats span,.game-stats button,.game-stats a{min-height:38px;display:flex;align-items:center;padding:8px 12px;border:1px solid rgba(255,255,255,.2);border-radius:11px;background:rgba(255,255,255,.09);color:#fff;text-decoration:none;font-size:11px;font-weight:900}.game-stats button{cursor:pointer}.game-layout{width:min(100%,1440px);display:grid;grid-template-columns:285px minmax(0,1fr);gap:14px;margin:auto}.quest-panel{align-self:start;padding:23px;border:3px solid #4d69bc;border-radius:22px;background:linear-gradient(180deg,#f8fbff,#eef3ff);box-shadow:0 18px 35px rgba(0,0,0,.27),inset 0 0 0 4px #fff}.eyebrow{color:#2a9ba8;font-size:9px;font-weight:1000;letter-spacing:.13em}.quest-panel h1{margin:7px 0 8px;font-size:25px;line-height:1.05}.quest-panel>p{margin:0;color:#62708b;font-size:12px;line-height:1.5}.quest-panel ol{display:grid;gap:8px;margin:19px 0;padding:0;list-style:none}.quest-panel li{display:grid;grid-template-columns:31px 1fr;gap:9px;align-items:center;padding:9px;border:1px solid #dce4f4;border-radius:13px;background:#fff;transition:.2s}.quest-panel li>span{width:31px;height:31px;display:grid;place-items:center;border-radius:10px;background:#e7edff;color:#3155b7;font-size:11px;font-weight:1000}.quest-panel li b,.quest-panel li small{display:block}.quest-panel li b{font-size:11px}.quest-panel li small{margin-top:2px;color:#7b879e;font-size:8px}.quest-panel li.done{border-color:#83dbb8;background:#effcf6}.quest-panel li.done>span{background:#20b47a;color:#fff}.quest-panel li.done>span{font-size:0}.quest-panel li.done>span:after{content:"✓";font-size:14px}.quest-help{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding-top:13px;border-top:1px dashed #cbd5e1;color:#64748b;font-size:8px}.quest-help kbd{padding:5px 6px;border:1px solid #b9c5dc;border-bottom-width:3px;border-radius:6px;background:#fff;color:#334155;font:800 8px "Poppins"}.world-column{min-width:0}.world-frame{position:relative;width:min(100%,calc(100vh - 112px));aspect-ratio:1;margin:auto;overflow:hidden;border:5px solid #6e4427;border-radius:23px;background:#6e4427;box-shadow:0 24px 55px rgba(0,0,0,.4),inset 0 0 0 3px #b77b4b}.world{position:relative;width:100%;height:100%;overflow:hidden;border:3px solid #1f1510;border-radius:15px;user-select:none}.world>img{display:block;width:100%;height:100%;object-fit:cover}.player{position:absolute;z-index:8;left:50%;top:78%;width:5.7%;aspect-ratio:.72;transform:translate(-50%,-50%);transition:left .07s linear,top .07s linear;filter:drop-shadow(0 3px 1px rgba(0,0,0,.35))}.player-shadow{position:absolute;left:9%;right:9%;bottom:0;height:18%;border-radius:50%;background:rgba(0,0,0,.27)}.player-body{position:absolute;inset:0 8% 12%;border:3px solid #1c2550;border-radius:45% 45% 32% 32%;background:linear-gradient(90deg,#2e55c2 0 24%,#fff 25% 74%,#2e55c2 75%);box-shadow:inset 0 -10px #23408f}.player-body:before{content:"";position:absolute;width:66%;aspect-ratio:1;left:17%;top:-23%;border:3px solid #392819;border-radius:50%;background:#f6bd87;box-shadow:inset 0 9px #433126}.player-body:after{content:"••";position:absolute;z-index:2;left:30%;top:-12%;color:#2a201b;font-size:clamp(5px,.8vw,11px);letter-spacing:.45em}.player-body i{position:absolute;width:78%;height:24%;left:11%;top:12%;border-radius:4px;background:#ffd34f}.player em{position:absolute;left:50%;bottom:-11%;transform:translateX(-50%);padding:2px 5px;border-radius:4px;background:#15275e;color:#fff;font-size:clamp(5px,.55vw,8px);font-style:normal;font-weight:900;white-space:nowrap}.player.walking{animation:walk .24s steps(2) infinite}.hotspot{position:absolute;z-index:5;display:grid;place-items:center;border:3px dashed rgba(255,255,255,.8);border-radius:18px;background:rgba(49,85,183,.18);opacity:0;transition:.2s;cursor:pointer}.hotspot:hover,.hotspot.near,.hotspot:focus{opacity:1;animation:pulse 1s infinite}.hotspot span{width:38px;height:38px;display:grid;place-items:center;border:2px solid #fff;border-radius:12px;background:#3155b7;font-size:20px;box-shadow:0 7px 14px rgba(0,0,0,.3)}.hotspot.math{left:13%;top:23%;width:25%;height:22%}.hotspot.language{left:62%;top:22%;width:25%;height:22%}.hotspot.science{left:11%;top:50%;width:27%;height:24%}.hotspot.arts{left:63%;top:49%;width:25%;height:27%}.hotspot.trophy{left:57%;top:6%;width:21%;height:13%}.interaction-tip{position:absolute;z-index:12;left:50%;bottom:3%;transform:translateX(-50%);padding:8px 12px;border:2px solid #fff;border-radius:9px;background:#172554;color:#fff;font-size:10px;font-weight:900;box-shadow:0 5px 15px rgba(0,0,0,.3)}.mobile-pad{display:none}.game-shell>footer{width:min(100%,1440px);display:flex;justify-content:space-between;margin:12px auto 0;color:#a9b7df;font-size:9px}.game-dialog{width:min(92vw,700px);padding:0;border:0;border-radius:24px;background:transparent}.game-dialog::backdrop{background:rgba(8,15,38,.72);backdrop-filter:blur(5px)}.dialog-box{position:relative;max-height:85vh;overflow:auto;padding:30px;border:4px solid #4261b7;border-radius:24px;background:#f8fbff;box-shadow:0 24px 70px rgba(0,0,0,.45),inset 0 0 0 4px #fff}.dialog-close{position:absolute;right:15px;top:14px;width:34px;height:34px;border:0;border-radius:10px;background:#e7edff;color:#3155b7;font-size:22px;font-weight:900;cursor:pointer}.dialog-icon{width:57px;height:57px;display:grid;place-items:center;margin-bottom:11px;border-radius:17px;background:#fff2b8;font-size:29px}.dialog-box small{color:#2a9ba8;font-size:9px;font-weight:1000;letter-spacing:.11em}.dialog-box h2{margin:5px 0 7px;font-size:27px}.dialog-box p{margin:0 0 18px;color:#67758f;font-size:12px}.subject-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.subject-grid button{min-height:58px;padding:9px;border:2px solid color-mix(in srgb,var(--c) 35%,#d7deed);border-radius:13px;background:color-mix(in srgb,var(--c) 10%,white);color:#334155;font-size:10px;font-weight:900}.trophy-list{display:grid;gap:10px}.trophy-list article{display:grid;grid-template-columns:47px 1fr;gap:11px;padding:12px;border:1px solid #ebd695;border-radius:14px;background:#fffdf5}.trophy-list article>span{width:45px;height:45px;display:grid;place-items:center;border-radius:13px;background:#fff0ad;font-size:23px}.trophy-list b,.trophy-list small,.trophy-list em{display:block}.trophy-list b{font-size:12px}.trophy-list small{margin:3px 0;color:#8a6c22}.trophy-list em{margin-top:3px;color:#52627c;font-size:9px;font-style:normal}@keyframes walk{50%{translate:0 -3px}}@keyframes pulse{50%{filter:brightness(1.25);transform:scale(1.015)}}
@media(max-width:900px){.game-shell{padding:10px}.game-layout{grid-template-columns:1fr}.quest-panel{order:2}.quest-panel ol{grid-template-columns:1fr 1fr}.quest-help{display:none}.world-frame{width:min(100%,calc(100vh - 170px))}.mobile-pad{display:grid;grid-template-columns:repeat(3,54px);grid-template-rows:repeat(3,46px);justify-content:center;gap:6px;margin-top:10px;padding-bottom:4px}.mobile-pad button{width:54px;height:46px;border:2px solid #8398d4;border-bottom-width:5px;border-radius:12px;background:#eef3ff;color:#25459e;font-weight:1000;touch-action:none}.mobile-pad button:nth-child(1){grid-column:2}.mobile-pad button:nth-child(2){grid-row:2;grid-column:1}.mobile-pad button:nth-child(3){grid-row:2;grid-column:2;background:#ffd34f;color:#73470b;border-color:#d6a62a}.mobile-pad button:nth-child(4){grid-row:2;grid-column:3}.mobile-pad button:nth-child(5){grid-row:3;grid-column:2}.game-shell>footer{display:none}}
@media(max-width:560px){.game-topbar{padding:8px}.game-brand small{display:none}.game-brand strong{font-size:12px}.game-stats span{display:none}.game-stats a{padding:7px;font-size:8px}.game-layout{gap:10px}.world-frame{width:100%;border-width:3px;border-radius:15px}.quest-panel{padding:17px}.quest-panel h1{font-size:20px}.quest-panel ol{gap:6px}.quest-panel li{padding:7px}.subject-grid{grid-template-columns:1fr 1fr}.dialog-box{padding:23px 18px}.player{width:7%}}
.hotspot.teacher{left:39%;top:17%;width:22%;height:23%}.student-game-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.student-game-grid article{padding:11px;text-align:center;border:1px solid #dce5f4;border-radius:15px;background:#fff}.student-game-photo{width:64px;height:64px;display:grid;place-items:center;margin:0 auto 8px;overflow:hidden;border:3px solid #c7d8ff;border-radius:18px;background:#eaf0ff;color:#3155b7;font-size:25px;font-weight:900}.student-game-photo img{width:100%;height:100%;object-fit:cover}.student-game-grid b,.student-game-grid small,.student-game-grid em{display:block}.student-game-grid b{font-size:11px}.student-game-grid small{margin:2px 0;color:#7b879e}.student-game-grid em{margin-top:6px;color:#16856d;font-size:8px;font-style:normal;font-weight:800}.finance-game-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.finance-game-grid article{padding:16px;border:2px solid #dce5f4;border-radius:16px;background:#fff}.finance-game-grid article>span{font-size:25px}.finance-game-grid small,.finance-game-grid b{display:block}.finance-game-grid small{margin:8px 0 4px;color:#6b7890}.finance-game-grid b{font-size:18px}.finance-game-grid .paid{border-color:#92ddbf;background:#f0fdf7}.finance-game-grid .unpaid{border-color:#f1cb83;background:#fffbeb}.privacy-note{margin-top:12px!important;padding:10px;border-radius:10px;background:#eef3ff;color:#53627f!important;font-size:9px!important}.podium-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.podium-list section{overflow:hidden;border:2px solid #ead799;border-radius:17px;background:#fff}.podium-list header{display:flex;gap:9px;align-items:center;padding:12px;background:linear-gradient(135deg,#fff4bd,#fff)}.podium-list header>span{font-size:26px}.podium-list header b,.podium-list header small{display:block}.podium-list header b{font-size:11px}.podium-list ol{margin:0;padding:5px 11px 11px;list-style:none}.podium-list li{display:grid;grid-template-columns:29px 1fr auto;gap:7px;align-items:center;padding:7px 0;border-bottom:1px solid #edf0f5}.podium-list li>span{width:27px;height:27px;display:grid;place-items:center;border-radius:9px;background:#e8edff;color:#3155b7;font-weight:900}.podium-list li:first-child>span{background:#ffd34f;color:#754d08}.podium-list li b{font-size:10px}.podium-list li em{color:#7b879e;font-size:8px;font-style:normal}.info-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.info-tabs>section{padding:13px;border:1px solid #dce5f4;border-radius:15px;background:#fff}.info-tabs h3{margin:0 0 9px;font-size:13px}.info-tabs article{padding:8px 0;border-bottom:1px solid #edf0f5}.info-tabs article b,.info-tabs article small{display:block}.info-tabs article b{font-size:10px}.info-tabs article small{margin-top:3px;color:#748198;font-size:8px}.schedule-game-board{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:9px;overflow-x:auto}.schedule-game-board>section{padding:10px;border:1px solid #dce5f4;border-radius:14px;background:#fff}.schedule-game-board h3{margin:0 0 8px;color:#3155b7;font-size:12px}.schedule-game-board article{display:grid;grid-template-columns:37px 1fr;gap:6px;margin:6px 0;padding:7px;border-left:4px solid var(--c);border-radius:8px;background:color-mix(in srgb,var(--c) 7%,white)}.schedule-game-board time{font-size:8px;font-weight:900}.schedule-game-board b,.schedule-game-board small{display:block}.schedule-game-board b{font-size:9px}.schedule-game-board small{margin-top:2px;color:#76839a;font-size:7px}.teacher-game-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.teacher-game-grid article{text-align:center;padding:18px;border:2px solid #cae6dc;border-radius:18px;background:#f3fcf8}.teacher-game-grid article>div{width:100px;height:100px;display:grid;place-items:center;margin:0 auto 10px;overflow:hidden;border:4px solid #fff;border-radius:28px;background:#dff5ec;color:#16856d;font-size:38px;font-weight:900;box-shadow:0 8px 20px rgba(29,103,83,.12)}.teacher-game-grid img{width:100%;height:100%;object-fit:cover}.teacher-game-grid h3{margin:5px 0 12px}.teacher-game-grid a{display:inline-flex;padding:9px 13px;border-radius:10px;background:#16a36a;color:#fff;text-decoration:none;font-size:10px;font-weight:900}.teacher-empty{grid-column:1/-1;padding:30px;text-align:center;border:1px dashed #b9c7d9;border-radius:15px;color:#718096}@media(max-width:700px){.student-game-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.podium-list,.finance-game-grid,.teacher-game-grid{grid-template-columns:1fr}.info-tabs{grid-template-columns:1fr}.schedule-game-board{grid-template-columns:repeat(5,180px)}}@media(max-width:430px){.student-game-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Main school map: DOM hotspots remain accessible above the WebGL scene. */
.world.world-is-3d{border-color:#8f82b7;background:#e5e8f6;isolation:isolate;image-rendering:auto}
.world-is-3d>img{visibility:hidden}
.main-world-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:1;touch-action:pan-y;cursor:crosshair}
.world-is-3d .hotspot{width:34px!important;height:34px!important;min-width:0;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;opacity:.9;animation:none}
.world-is-3d .hotspot span{width:32px;height:32px;border-radius:11px;background:#fffffff0;border:1px solid #ffffff;color:#285d57;font-size:17px;box-shadow:0 4px 12px #244b4830;transition:transform .2s}
.world-is-3d .hotspot:hover span,.world-is-3d .hotspot.near span,.world-is-3d .hotspot:focus-visible span{transform:translateY(-5px) scale(1.12);outline:3px solid #e6ba5a;outline-offset:2px}
.world-is-3d .hotspot:after{content:attr(data-title);position:absolute;top:38px;left:50%;transform:translateX(-50%);padding:4px 7px;border-radius:6px;background:#fffffff2;color:#285d57;font:700 9px "Poppins";white-space:nowrap;pointer-events:none;opacity:0}
.world-is-3d .hotspot:hover:after,.world-is-3d .hotspot.near:after,.world-is-3d .hotspot:focus-visible:after{opacity:1}
.world-is-3d .hotspot b{display:none}
.world-is-3d>.player{z-index:4;width:26px;opacity:0;transition:none;pointer-events:none}
.world-is-3d>.cat-companion{display:none}
.world-3d-hud{position:absolute;z-index:10;top:14px;left:14px;right:14px;display:flex;justify-content:flex-end;align-items:center;pointer-events:none;font-family:"Poppins";color:#51417c}
.world-3d-hud nav{display:flex;gap:5px;pointer-events:auto}.world-3d-hud button{width:33px;height:33px;background:#fffffff0;border:1px solid #fff;border-radius:10px;font:700 20px "Poppins";color:#285d57;cursor:pointer}
.world-is-3d .interaction-tip{z-index:11;bottom:12px;background:#51417c;color:#fff;border:1px solid #c9bce7;font-family:"Poppins"}
@media(max-width:560px){.world-3d-hud{top:8px;left:8px;right:8px}.world-is-3d .hotspot span{width:26px;height:26px;font-size:14px}}


/* Let the school canvas use the whole column, with no title or instruction bands. */
.world-frame:has(>.world-is-3d){width:100%;height:clamp(420px,calc(100dvh - 115px),900px);aspect-ratio:auto;border-color:#7464a0;background:#8c7cba}
@media(max-width:900px){.world-frame:has(>.world-is-3d){height:auto;aspect-ratio:1.12}}

.world-3d-hud select{height:33px;max-width:150px;padding:0 8px;border:1px solid #d5cbed;border-radius:10px;background:#fffffff0;color:#51417c;font:600 10px "Poppins";cursor:pointer}
.world-at-night .world-3d-hud button,.world-at-night .world-3d-hud select{background:#282843f2;border-color:#79729f;color:#f0eafa}
.world-at-night .hotspot span{background:#ede8fff0;border-color:#d2c1f5;box-shadow:0 0 14px #c5b0ff35}
.world-at-night .hotspot:after{background:#29243feb;color:#f1e9ff}
@media(max-width:560px){.world-3d-hud select{max-width:132px;font-size:9px}}

.world-3d-hud button[data-activities]{font-size:14px}.world-3d-hud button[data-activities][aria-pressed="true"]{border-color:#9b8bce;background:#eae4f6;color:#51417c}
@media(max-width:560px){.world-3d-hud select{max-width:118px}}

/* Keep the dismiss action below the active card, after the slider navigation. */
.museum-gallery.open .museum-gallery-close{position:static;order:2;justify-self:center;display:grid;place-items:center;width:42px;height:34px;margin:9px 0 0;padding:0;border:1px solid rgba(255,255,255,.28);border-radius:12px;background:rgba(255,255,255,.1);color:#fff;font-size:25px;line-height:1;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.14);transition:background .18s,border-color .18s,transform .18s}
.museum-gallery.open .museum-gallery-close:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.65);transform:translateY(2px)}
.museum-gallery.open .museum-gallery-close:focus-visible{outline:3px solid #ffe071;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.museum-gallery.open .museum-gallery-close{transition:none}}
.rich-content{overflow-wrap:anywhere;line-height:1.6}.rich-content ul,.rich-content ol{padding-left:24px}.rich-content a{text-decoration:underline}
