@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Nunito:wght@400;600;700;800;900&display=swap');
:root{font-family:Nunito,system-ui,sans-serif;color:#193e3a;background:#f5f6ed;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}button:focus-visible,a:focus-visible{outline:4px solid #f6a828;outline-offset:4px}button{color:inherit}h1,h2,h3,.brand,.big{font-family:Fredoka,Nunito,sans-serif;font-weight:500}h1{font-size:2.7rem;line-height:1.12;margin:8px 0 12px}h2{font-size:1.7rem;margin:0 0 14px}h3{margin:0 0 8px;font-size:1.25rem}p{line-height:1.5}header{height:92px;padding:0 4%;display:flex;align-items:center;justify-content:space-between;background:white;border-bottom:1px solid #dce5dc;gap:16px}.brand{font-size:1.6rem;display:flex;align-items:center;gap:12px}.brand b{background:#194d42;color:#ffe284;padding:7px 12px;border-radius:14px;font-size:1.7rem}nav{display:flex;gap:8px}button.nav{background:transparent;border:0;padding:12px 18px;border-radius:14px;font-weight:800}button.nav.active{background:#e8f1e4;color:#235443}.teacher-link{border:1px solid #dbe4da;border-radius:12px;background:white;padding:11px 17px;font-weight:800}.shell{max-width:1450px;margin:auto;padding:28px 4%}.topline{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:23px}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:.8rem;font-weight:900;color:#4c7963}.muted{color:#5c746b}.pill{border-radius:30px;background:#fff;padding:9px 16px;font-size:.9rem;font-weight:800;border:1px solid #dce5dc}.layout{display:grid;grid-template-columns:260px 1fr;gap:24px}.card{background:white;border:1px solid #dfe7dc;border-radius:24px;padding:24px}.profile{text-align:center}.avatar{width:130px;height:130px;display:block;margin:0 auto 14px;border-radius:50%;background-color:#fff1cf;background-image:url('assets/characters.png');background-size:500% 200%;box-shadow:0 0 0 7px #f3f5e8}.avatar.small{width:48px;height:48px;margin:0;border-radius:14px;box-shadow:none;flex-shrink:0}.leveltag{display:inline-block;background:#e8f2e4;color:#3b6946;padding:6px 12px;border-radius:8px;font-size:.9rem;font-weight:900}.stats{display:flex;justify-content:space-around;border-top:1px solid #e6ece3;margin-top:23px;padding-top:18px}.stats strong{display:block;font-size:1.7rem}.stats span{font-size:.85rem;color:#5c746b}.btn{border:0;border-radius:13px;padding:13px 22px;background:#ffd25b;color:#294338;font-weight:900;box-shadow:0 4px 0 #ddb04b}.btn.green{background:#245d49;color:white;box-shadow:0 4px 0 #143d31}.btn.plain{background:#edf2e9;box-shadow:none}.full{width:100%;margin-top:18px}.reward{margin-top:20px;background:#fff5d9}.reward .gift{font-size:2.5rem;margin-bottom:12px}.reward p{margin:6px 0;font-size:.9rem}.map{position:relative;min-height:460px;border-radius:25px;overflow:hidden;background:#65b59b url('assets/world.png') center/cover;isolation:isolate;border:5px solid white;box-shadow:0 5px 25px #244c3820}.map:before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#133b3760,transparent 45%,#163e3740);z-index:-1}.world-label{margin:22px;display:inline-block;color:white;text-shadow:0 2px 4px #164733}.world-label h2{font-size:2rem;margin:6px 0}.world-label span{font-size:.8rem;font-weight:900;letter-spacing:2px}.map .step{position:absolute;width:48px;height:48px;border-radius:50%;border:4px solid white;background:#ffffffd9;box-shadow:0 5px 0 #294a3955;display:grid;place-items:center;font-weight:900;color:#376551}.map .step.done{background:#ffd362}.map .step.current{outline:6px solid #ffd36270;transform:scale(1.15)}.map .finish{background:#245c47;color:white}.map-foot{position:absolute;bottom:15px;left:20px;border-radius:12px;padding:8px 13px;background:#173b39db;color:white;font-size:.9rem}.journey-bar{margin-top:17px;display:flex;align-items:center;justify-content:space-between;gap:20px}.journey-bar p{margin:5px 0;font-size:.9rem}.progress{height:10px;background:#e7ecdf;border-radius:20px;overflow:hidden;margin:12px 0}.progress i{display:block;height:100%;background:#428862;border-radius:20px}.week{margin-top:24px;display:flex;align-items:center;gap:18px}.week-copy{min-width:160px}.week-copy h3{margin:0}.days{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;width:100%}.day{text-align:center;border-radius:15px;background:#f3f6ed;padding:12px 6px;font-size:.9rem;font-weight:800}.session{display:inline-grid;place-items:center;border-radius:50%;height:28px;width:28px;margin:8px 2px 0;background:white;border:1px solid #d9e4d6;font-size:.8rem}.session.yes{background:#d5ebbd;border-color:#7fac70}.worlds{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.world-card{padding:22px;border-radius:20px;background:white;border:1px solid #dfe7dc}.world-icon{font-size:2.5rem;display:block;margin-bottom:12px}.world-card.locked{background:#eff2e9}.world-card p{font-size:.9rem}.characters{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:18px 0}.character{background:#f5f5ed;border:3px solid transparent;border-radius:17px;padding:10px 3px;font-size:.85rem;font-weight:800}.character.selected{border-color:#39845b;background:#e4f1d9}.character .avatar{width:75px;height:75px;box-shadow:none;margin-bottom:7px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:16px}.teacher-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:22px}.pupil-row{padding:13px 0;display:flex;gap:12px;align-items:center;border-bottom:1px solid #e5ebdf}.pupil-row .grow{flex:1}label{display:block;font-weight:800;margin:12px 0 7px}input,select{width:100%;border:1px solid #cad7ca;border-radius:10px;background:white;padding:12px;color:#1b453a}input[type=checkbox]{width:24px;height:24px}.check-label{display:flex;align-items:center;gap:10px;font-weight:700}.attendance-controls{background:#f2f5ec;border-radius:16px;padding:16px;margin-top:12px}.prize-edit{display:grid;grid-template-columns:1fr 1.3fr;gap:14px;align-items:center}dialog{border:0;border-radius:25px;padding:30px;width:min(640px,94vw);max-height:90vh;color:#1b453a;box-shadow:0 20px 100px #12382b66}dialog::backdrop{background:#153d3bbb;backdrop-filter:blur(5px)}.close{float:right;border:0;background:#edf2e7;border-radius:50%;width:32px;height:32px;font-size:1.2rem}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#163f35;color:white;padding:14px 25px;border-radius:14px;box-shadow:0 6px 25px #0003;display:none;z-index:10;max-width:90vw}.empty{text-align:center;padding:50px}.notice{background:#fff2ca;border-radius:12px;padding:12px 16px;font-size:.9rem}.footer{font-size:.8rem;color:#637b6b;text-align:center;margin:25px 0 0}.celebrate{text-align:center}.celebrate .big{font-size:4rem}.session-toggle{display:flex;gap:20px}.demo{font-size:.8rem;font-weight:900;background:#fceac0;border-radius:7px;padding:5px 9px}.world-card.current-world{border:2px solid #498257}.subnav{margin-bottom:22px}a{color:inherit}@media(max-width:950px){header{height:auto;min-height:85px;flex-wrap:wrap;padding:16px 4%}nav{order:3;width:100%;justify-content:center}.layout{grid-template-columns:210px 1fr}.card{padding:18px}.week{display:block}.days{margin-top:15px;gap:6px}.worlds{grid-template-columns:repeat(2,1fr)}.teacher-grid{grid-template-columns:1fr}.map{min-height:410px}.journey-bar{align-items:flex-start}.character .avatar{width:60px;height:60px}}@media(max-width:620px){.brand{font-size:1.3rem}.teacher-link{font-size:.85rem;padding:10px}button.nav{padding:10px 14px}.shell{padding:22px 4%}h1{font-size:2rem}.topline{align-items:flex-start}.topline .pill{display:none}.layout{display:flex;flex-direction:column}.sidebar{display:grid;grid-template-columns:1fr}.profile{display:grid;grid-template-columns:70px 1fr;gap:7px 14px;text-align:left}.profile>.avatar{width:70px;height:70px;grid-row:span 2;margin:5px 0;box-shadow:none}.profile h2{margin:0}.profile .stats{grid-column:1/-1;margin-top:10px}.profile .full{grid-column:1/-1;margin-top:5px}.reward{display:none}.map{min-height:400px}.map .step{width:38px;height:38px;font-size:.85rem;border-width:3px}.world-label{margin:15px}.world-label h2{font-size:1.7rem}.journey-bar{flex-direction:column}.journey-bar .btn{width:100%}.worlds{grid-template-columns:1fr 1fr;gap:10px}.world-card{padding:15px}.characters{grid-template-columns:repeat(2,1fr)}.character .avatar{width:95px;height:95px}.prize-edit{grid-template-columns:1fr}.session{width:23px;height:23px;margin:8px 0 0}.pill{font-size:.8rem}.topline h1{margin-top:0}}
@media(prefers-reduced-motion:no-preference){.step.current{animation:bob 2s ease-in-out infinite}@keyframes bob{50%{translate:0 -6px}}}
.world-thumb{height:115px;border-radius:12px;background-image:url('assets/worlds.png');background-size:500% 300%;margin-bottom:14px}.world-card .world-icon{font-size:1.5rem;float:right}.avatar{background-size:500% 333%}.stats{gap:12px}.map .step .avatar.small{width:100%;height:100%;border-radius:50%}
/* Shared classroom display and teacher register */
.class-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.explorer-card{padding:0 22px 20px;overflow:hidden;text-align:center}.board-scene{height:130px;margin:0 -22px;background-image:url('assets/worlds.png');background-size:500% 300%;position:relative}.board-world{display:block;padding:14px;color:white;background:linear-gradient(#123b3acc,transparent);font-weight:900;text-shadow:0 2px 5px #153f39}.board-person{position:relative;margin-top:-45px}.board-person .avatar{width:96px;height:96px;margin-bottom:12px;box-shadow:0 0 0 6px white}.board-person h2{margin-bottom:8px}.board-track{display:flex;gap:5px;justify-content:center;margin:22px 0 14px}.board-track span{display:grid;place-items:center;background:#edf2e7;flex:1;aspect-ratio:1;border-radius:50%;font-size:.85rem;font-weight:900;max-width:32px}.board-track .earned{background:#ffda76;color:#28553f}.board-ready{font-weight:900;min-height:24px;margin:12px 0 0}.explorer-card .full{margin-top:12px}.table-scroll{overflow:auto;max-width:100%;margin:14px 0 20px}table{width:100%;border-collapse:collapse;text-align:left;font-size:.9rem}th,td{padding:13px 10px;border-bottom:1px solid #dfe7dc}thead th{background:#eff4e9;font-size:.85rem;line-height:1.4}th .row{flex-wrap:nowrap}.selected-row{background:#f0f6e7}.roster .btn{padding:9px 12px}.roster th:first-child{min-width:140px}.history{margin-top:26px;padding-top:22px;border-top:1px solid #dfe7dc}.date-link{background:none;border:0;text-align:left;font-weight:800;text-decoration:underline;text-underline-offset:3px;padding:8px 0}.date-buttons{margin:14px 0}.date-buttons .btn{font-size:.85rem;padding:10px}.teacher-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr)}.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}nav{flex-wrap:wrap}.history-table td{min-width:82px}.history .row strong{font-size:.9rem}@media(min-width:1400px){.class-board{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1050px){.teacher-grid{grid-template-columns:1fr}.class-board{grid-template-columns:repeat(2,minmax(0,1fr))}header{height:auto;min-height:92px;padding-top:14px;padding-bottom:14px;flex-wrap:wrap}}@media(max-width:620px){.class-board{grid-template-columns:1fr}.topline{flex-wrap:wrap}.board-scene{height:160px}.board-track span{max-width:34px}nav{gap:2px}button.nav{padding:10px}.session-toggle{flex-wrap:wrap;gap:0 20px}}
.streak{display:inline-block;margin-top:10px;border-radius:20px;background:#fff0c3;color:#71500b;padding:7px 12px;font-weight:900;font-size:.95rem}.streak-note{font-size:.9rem;color:#5c746b;line-height:1.5}.automatic-label{color:#46735b;font-size:.9rem;font-weight:800;line-height:1.5}.character-heading{margin-top:24px}.characters.crew{grid-template-columns:repeat(3,minmax(0,1fr))}.avatar.older-avatar{background-image:url('assets/older-characters.png');background-size:300% 200%}.crew .character .avatar{width:95px;height:95px}.profile .streak{font-size:.85rem}.map .step.current{outline:6px solid #ffd36290}.board-ready{margin-top:10px}@media(max-width:620px){.characters.crew{grid-template-columns:repeat(2,minmax(0,1fr))}.journey-bar .automatic-label{margin-top:0}}
.btn.danger-outline{color:#923535;background:#fff8f5;border:1px solid #d7a5a0;box-shadow:none}.btn.danger{color:white;background:#a33434;box-shadow:0 4px 0 #772323}.confirmation-actions{justify-content:flex-end;margin-top:24px}
.school-gate{max-width:610px;margin:6vh auto}.school-gate .card{padding:38px}.school-gate h1{margin-top:28px}.school-name{background:#edf4e7;padding:8px 12px;border-radius:10px;font-weight:900}.admin-link{font-size:.9rem;display:block;margin-top:24px}.legacy-offer{margin-bottom:24px;border-color:#e1bd65}.admin-shell{max-width:1100px}.admin-school{padding:22px;margin-top:16px}.admin-fields{display:grid;grid-template-columns:2fr 1fr;gap:18px}.admin-status{margin:15px 0}.admin-message{min-height:24px;color:#923535}.school-gate #school-code{letter-spacing:5px;font-size:1.5rem}.school-gate #school-name{letter-spacing:normal;font-size:1.1rem}.school-name-help{font-size:.9rem;margin:8px 0 20px}@media(max-width:620px){.school-gate .card{padding:24px}.admin-fields{grid-template-columns:1fr}.school-name{font-size:.9rem}}

/* Explicit image rendering keeps animal artwork independent of background painting. */
.avatar:not(.older-avatar){position:relative;overflow:hidden;background-image:none;isolation:isolate}.avatar .animal-art{position:absolute;display:block;width:500%;height:333%;max-width:none;pointer-events:none}

.prize-setup{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 24px;background:white;border-color:#dfe7dc}.prize-setup h2{margin:8px 0}.prize-setup p{margin:0;max-width:720px}.prize-setup .btn{flex-shrink:0}.board-prize{min-height:44px;font-size:.95rem;line-height:1.5}.earned-reward{padding:12px 0;border-bottom:1px solid #dfe7dc}.certificate-button{font-size:.85rem;margin-top:6px}.certificate-unlock{padding:18px 0;border-top:1px solid #dfe7dc}.certificate-dialog{width:min(1120px,96vw);padding:26px}.certificate-toolbar{margin-bottom:22px}.certificate-toolbar h2{margin-right:30px}
#certificate-sheet{border:8px solid hsl(var(--certificate-hue),38%,30%);background:#fffdf4;color:#183f39;overflow:hidden;max-width:1060px;margin:auto;font-family:Nunito,system-ui,sans-serif}.certificate-scene{height:170px;position:relative;overflow:hidden}.certificate-scene>img{position:absolute;display:block;width:500%;height:auto;max-width:none}.certificate-ribbon{position:absolute;bottom:16px;left:24px;background:#173f39;color:#fff5c9;letter-spacing:3px;padding:10px 18px;border-radius:8px;font-size:13px;font-weight:900}.certificate-content{padding:22px 30px 24px;text-align:center}.certificate-kicker{font-size:11px;text-transform:uppercase;letter-spacing:2px;margin:0 0 7px;font-weight:800}.certificate-content>h2{font-size:36px;margin:0 0 18px;color:hsl(var(--certificate-hue),38%,27%)}.certificate-layout{display:grid;grid-template-columns:165px minmax(0,1fr) 112px;align-items:center;gap:18px}.certificate-avatar{width:150px;height:150px;position:relative;overflow:hidden;border-radius:50%;border:4px solid #e4c974;background:#fff1cf}.certificate-avatar img{position:absolute;max-width:none;display:block}.certificate-character>span{display:block;font-size:12px;font-weight:800;margin-top:10px}.certificate-award>p{margin:4px 0;font-size:15px}.certificate-award h3{font-size:40px;line-height:1.13;overflow-wrap:anywhere;margin:8px 0 12px}.certificate-award h4{font-family:Fredoka,system-ui,sans-serif;font-size:25px;font-weight:500;margin:8px 0}.certificate-award .certificate-praise{font-size:13px;line-height:1.5;margin-top:12px}.certificate-prize{padding:9px 12px;background:#f5ecd1;border-radius:9px;overflow-wrap:anywhere}.certificate-seal{border:3px double #a9852f;border-radius:50%;height:112px;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#755416;background:#fff2bd}.certificate-seal>span{font-size:24px;line-height:1}.certificate-seal strong{font-size:15px;margin:4px}.certificate-seal small{font-size:9px;letter-spacing:1px}.certificate-signatures{display:flex;justify-content:space-between;gap:30px;margin-top:22px;text-align:left;border-top:1px solid #dbcfae;padding-top:14px}.certificate-signatures>div{max-width:60%}.certificate-signatures strong,.certificate-signatures span{display:block;font-size:12px}.certificate-signatures span{margin-top:4px}.signature-line{border-bottom:1px solid #76877b;width:175px}
@media(max-width:700px){.prize-setup{display:block}.prize-setup .btn{margin-top:18px}.certificate-content{padding:20px 14px}.certificate-layout{grid-template-columns:1fr}.certificate-character{margin:auto}.certificate-seal{display:none}.certificate-award h3{font-size:32px}.certificate-content>h2{font-size:28px}.certificate-ribbon{left:10px;letter-spacing:1px}.certificate-signatures{gap:14px}.signature-line{width:120px}}
@media print{@page{size:A4 landscape;margin:10mm}html,body{margin:0!important;padding:0!important;background:white!important;height:auto!important;overflow:visible!important}body>*{display:none!important}body>dialog.certificate-dialog[open]{display:block!important;position:absolute!important;inset:0!important;margin:0!important;padding:0!important;width:277mm!important;max-width:none!important;height:auto!important;max-height:none!important;overflow:visible!important;border:0!important;box-shadow:none!important;background:white!important}dialog::backdrop{display:none!important}.certificate-dialog>.close,.certificate-toolbar{display:none!important}#certificate-sheet{width:277mm!important;max-width:none!important;min-height:185mm;break-inside:avoid;print-color-adjust:exact;-webkit-print-color-adjust:exact}.certificate-scene{height:45mm}.certificate-content{padding:6mm 8mm}.certificate-layout{grid-template-columns:165px minmax(0,1fr) 112px}.certificate-seal{display:flex}.certificate-award h3{font-size:40px}.certificate-content>h2{font-size:36px}.certificate-signatures{margin-top:6mm}.signature-line{width:175px}}
.friday-arcade{margin:0 0 24px;border-color:#8bb5ed;background:linear-gradient(120deg,#eef7ff,#f9f4ff)}.friday-heading{display:flex;justify-content:space-between;gap:20px;align-items:center}.friday-heading h2{margin:6px 0}.friday-heading p{max-width:740px;margin:0;line-height:1.5}.arcade-badge{background:#192c63;color:#fff4a6;border:5px solid #6e91e1;border-radius:50%;width:100px;height:100px;text-align:center;display:grid;place-content:center;font-size:1.7rem;line-height:1.05;box-shadow:0 4px 0 #263969}.arcade-badge span{font-size:.65rem;font-weight:900;letter-spacing:1px}.token-roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:9px;margin:14px 0}.token-roster>div{display:grid;grid-template-columns:45px 1fr;gap:4px 9px;align-items:center;background:white;border:1px solid #d4e1f2;border-radius:12px;padding:8px}.token-roster .avatar{grid-row:span 2;width:42px;height:42px}.token-roster span{font-size:.82rem;color:#35678d;font-weight:800}.friday-share{margin-top:20px;padding-top:17px;border-top:1px solid #bfd4ed}.friday-share h3{margin:0 0 8px}.friday-share input{width:100%;padding:11px;border:1px solid #b5c9e2;border-radius:10px;color:#25455d}.mini-leaderboard{list-style:none;margin:8px 0 0;padding:0}.mini-leaderboard li{display:grid;grid-template-columns:25px 1fr auto;gap:8px;padding:8px;border-bottom:1px solid #d7e4f2}.mini-leaderboard li b{color:#73561e}.mini-leaderboard li strong{color:#245d49}@media(max-width:620px){.friday-heading{align-items:flex-start}.arcade-badge{width:74px;height:74px;font-size:1.25rem;flex-shrink:0}.token-roster{grid-template-columns:1fr 1fr}.friday-share .row{display:grid;grid-template-columns:1fr;gap:12px}.friday-share .btn{text-align:center}}
.friday-arcade{margin:0 0 24px;border-color:#8bb5ed;background:linear-gradient(120deg,#eef7ff,#f9f4ff)}.friday-heading{display:flex;justify-content:space-between;gap:20px;align-items:center}.friday-heading h2{margin:6px 0}.friday-heading p{max-width:740px;margin:0;line-height:1.5}.arcade-badge{background:#192c63;color:#fff4a6;border:5px solid #6e91e1;border-radius:50%;width:100px;height:100px;text-align:center;display:grid;place-content:center;font-size:1.7rem;line-height:1.05;box-shadow:0 4px 0 #263969}.arcade-badge span{font-size:.65rem;font-weight:900;letter-spacing:1px}.token-roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:9px;margin:14px 0}.token-roster>div{display:grid;grid-template-columns:45px 1fr;gap:4px 9px;align-items:center;background:white;border:1px solid #d4e1f2;border-radius:12px;padding:8px}.token-roster .avatar{grid-row:span 2;width:42px;height:42px}.token-roster span{font-size:.82rem;color:#35678d;font-weight:800}.friday-share{margin-top:20px;padding-top:17px;border-top:1px solid #bfd4ed}.friday-share h3{margin:0 0 8px}.friday-share input{width:100%;padding:11px;border:1px solid #b5c9e2;border-radius:10px;color:#25455d}.qr-scan-dialog{text-align:center;max-width:780px}.qr-scan-dialog h2{margin:4px 0 16px}.qr-scan-dialog img{display:block;width:min(72vw,620px);height:min(72vw,620px);max-height:68vh;object-fit:contain;margin:0 auto 16px;background:#fff;border-radius:16px;padding:14px;border:5px solid #72c9e8}.qr-scan-dialog .btn{max-width:330px;margin:18px auto 0}.mini-leaderboard{list-style:none;margin:8px 0 0;padding:0}.mini-leaderboard li{display:grid;grid-template-columns:25px 1fr auto;gap:8px;padding:8px;border-bottom:1px solid #d7e4f2}.mini-leaderboard li b{color:#73561e}.mini-leaderboard li strong{color:#245d49}@media(max-width:620px){.friday-heading{align-items:flex-start}.arcade-badge{width:74px;height:74px;font-size:1.25rem;flex-shrink:0}.token-roster{grid-template-columns:1fr 1fr}.friday-share .row{display:grid;grid-template-columns:1fr;gap:12px}.friday-share .btn{text-align:center}.qr-scan-dialog img{width:min(82vw,620px);height:min(82vw,620px)}}
.friday-qr{display:flex;align-items:center;gap:24px;margin:20px 0;padding:16px;background:#fff;border-radius:18px}.friday-qr>img{display:block;flex:0 0 180px}.friday-qr>div{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:12px}.friday-qr h3,.friday-qr p{margin:0}.friday-qr .btn{margin:0}.friday-share>.row{gap:16px;margin-top:20px}.friday-share>.row>.btn,.friday-share>.row>a{margin:0;min-height:52px;display:inline-flex;align-items:center;justify-content:center;text-align:center}.qr-scan-dialog{clear:both;display:flex;flex-direction:column;align-items:center;text-align:center;max-width:780px;margin:0 auto}.qr-scan-dialog img{margin:0 auto 16px}dialog:has(.qr-scan-dialog){width:min(780px,94vw)}@media(max-width:620px){.friday-qr{align-items:flex-start;gap:14px}.friday-qr>img{width:132px;height:132px;flex-basis:132px}.friday-qr>div{gap:10px}.friday-qr .btn{font-size:.9rem;padding:11px 14px}.friday-share>.row{margin-top:16px}}

.mini-leaderboard li{grid-template-columns:25px 42px 1fr auto;align-items:center}.mini-leaderboard .avatar{width:38px;height:38px;margin:0}.leaderboard-wall-link{display:block;width:max-content;margin:16px 0 0;text-decoration:none}

/* Game library: equal card spacing and clearly separated launch buttons. */
.demo-library{gap:22px;align-items:stretch}.demo-library .world-card{display:flex;flex-direction:column;align-items:flex-start;padding:26px;min-height:240px;position:relative}.demo-library .world-card h3{padding-right:38px;margin:6px 0 14px;line-height:1.3}.demo-library .world-card>p{margin:0 0 24px;line-height:1.55}.demo-library .demo-launch{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:50px;min-width:166px;max-width:100%;padding:13px 22px;margin-top:auto;border-radius:14px;text-decoration:none;font-size:1rem;line-height:1.2;transition:transform .15s ease,filter .15s ease}.demo-launch span{font-size:.75rem}.demo-launch:hover{filter:brightness(1.12);transform:translateY(-2px)}.demo-launch:active{transform:translateY(1px)}.demo-library .world-icon{position:absolute;top:24px;right:24px}@media(max-width:620px){.demo-library{gap:18px}.demo-library .world-card{padding:22px;min-height:225px}.demo-library .demo-launch{width:100%}}@media(prefers-reduced-motion:reduce){.demo-library .demo-launch{transition:none}}
.reward-game-picker,.bonus-token-card{margin:24px 0;padding:22px;border:1px solid #9ccfdf;border-radius:18px;background:#effaff}.bonus-token-card input,.bonus-token-card select,.reward-game-picker select{display:block;width:min(100%,440px);padding:12px;margin:8px 0 18px;border:1px solid #72aeca;border-radius:10px;font:inherit}.board-token-balance{font-weight:900;color:#003d52;background:#d9f4fc;padding:8px 12px;border-radius:15px}.certificate-toolbar{position:sticky;top:0;z-index:2;background:#fff;padding:18px;border:2px solid #72c9e8;border-radius:15px;box-shadow:0 4px 12px #003d5214}.certificate-download-actions{display:flex;gap:16px;flex-wrap:wrap}.certificate-download-actions .btn{min-height:52px}

.certificate-toolbar .certificate-close{border:2px solid #003d52;font-weight:900}.certificate-dialog>.close{z-index:5}.certificate-toolbar{padding-right:42px}

.teacher-guide-link{display:inline-flex;align-items:center;justify-content:center;min-height:48px;text-align:center;text-decoration:none;white-space:normal}.teacher-guide-link:hover{text-decoration:underline}

.landing-brand{display:grid;grid-template-columns:56px 56px minmax(0,1fr);gap:12px;align-items:center}.landing-brand .game-landing-icon{display:block;width:56px;height:56px;object-fit:cover;border-radius:14px;box-shadow:0 4px 0 #002a39}.landing-brand span{min-width:0}@media(max-width:620px){.landing-brand{grid-template-columns:42px 46px minmax(0,1fr);gap:8px}.landing-brand .value-added-badge{width:42px!important;height:42px!important}.landing-brand .game-landing-icon{width:46px;height:46px;border-radius:11px}.landing-brand span{line-height:1.05}}

.game-brand-icon{display:block;width:56px;height:56px;object-fit:cover;border-radius:14px;flex:none;box-shadow:0 4px 0 #002a39}@media(max-width:620px){.game-brand-icon{width:46px;height:46px;border-radius:11px}}

.empty-game-icon{display:block;width:80px;height:80px;margin:0 auto 15px;object-fit:cover;border-radius:20px}

.empty-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:16px;margin-top:22px}.empty-actions .btn{min-height:52px}@media(max-width:620px){.empty-actions{flex-direction:column;gap:14px}.empty-actions .btn{width:min(100%,280px)}}

/* Whole-class attendance: large touch targets and a compact session roster. */
.class-register{margin:0 0 24px;border:2px solid #83c9df;background:linear-gradient(120deg,#f1fbff,#fff)}.register-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.register-heading p{margin:8px 0 20px}.register-heading h2{margin:7px 0}.register-controls{display:grid;grid-template-columns:minmax(200px,320px) 1fr;gap:24px;align-items:start}.register-controls input[type=date]{width:100%}.register-today{font-size:.85rem;padding:10px 0!important}.register-sessions{border:0;padding:0;margin:0;display:flex;gap:12px;flex-wrap:wrap}.register-sessions legend{font-weight:800;margin-bottom:9px}.register-sessions label{display:flex;align-items:center;gap:10px;padding:12px 18px;border:1px solid #bedae5;border-radius:12px;background:white;margin:0;cursor:pointer}.register-sessions input{accent-color:#00627c;width:22px;height:22px;margin:0}.register-sessions label:has(input:checked){background:#dbf4fc;border-color:#2584a1}.register-actions,.register-save{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin:18px 0}.register-actions #register-count{font-weight:900;color:#00566d;margin-left:auto}.register-roster{max-height:540px;overflow:auto;border:1px solid #c6e0e8;border-radius:14px;background:white}.register-column-head,.register-pupil{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:16px;align-items:center;padding:10px 18px}.register-column-head{position:sticky;top:0;background:#003d52;color:white;font-weight:800;z-index:1}.register-pupil+.register-pupil{border-top:1px solid #e3eef2}.register-person{display:flex;align-items:center;gap:14px;min-width:0}.register-person strong{overflow-wrap:anywhere}.register-person .avatar{width:48px!important;height:60px!important;flex-shrink:0}.register-tick{display:flex;align-items:center;gap:12px;cursor:pointer;font-weight:800;margin:0;padding:5px}.register-tick input{width:26px;height:26px;margin:0;accent-color:#00627c}.register-tick span{border-radius:8px;background:#f1f2ef;color:#64716d;padding:5px 11px;font-size:.9rem}.register-tick:has(input:checked) span{background:#d9f4fc;color:#00576e}#register-notice{font-weight:800;font-size:.95rem;color:#00566d;margin:16px 0 8px}.register-help{font-size:.9rem;margin:0;max-width:950px}
@media(max-width:620px){.register-heading{gap:8px}.register-heading .pill{white-space:nowrap;padding:7px 10px}.register-controls{grid-template-columns:1fr;gap:12px}.register-actions,.register-save{gap:14px}.register-actions #register-count{margin:0;width:100%}.register-save .btn{width:100%}.register-column-head,.register-pupil{grid-template-columns:minmax(0,1fr) 118px;gap:8px;padding:10px}.register-column-head{font-size:.85rem}.register-person{gap:9px}.register-person .avatar{width:34px!important;height:43px!important}.register-tick{gap:7px;padding:5px 0}.register-tick span{padding:5px 7px;font-size:.8rem}.register-roster{max-height:460px}.class-register{padding:18px}}

.school-date-button{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;border:1px solid #c8dacd;border-radius:12px;background:#fff;padding:12px 15px;min-height:50px;text-align:left}.school-date-button>span:last-child{font-size:1.4rem;color:#00627c}.school-calendar{width:min(450px,calc(100vw - 24px));padding:24px;border:2px solid #81c9e1;border-radius:24px;color:#193e3a;background:#fff;max-height:calc(100dvh - 32px);overflow:auto}.school-calendar::backdrop{background:#003d5266}.calendar-top,.calendar-month,.calendar-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.calendar-top h2{font-size:1.5rem;margin:0}.calendar-top .nav{padding:10px}.school-calendar>p{font-size:.9rem;margin:10px 0 18px}.calendar-month{margin-bottom:18px}.calendar-month .btn{padding:7px 15px;font-size:1.5rem}.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-weekdays{text-align:center;font-size:.8rem;font-weight:900;margin-bottom:8px;color:#52706a}.calendar-day{aspect-ratio:1;border:1px solid transparent;border-radius:10px;background:#edf8fc;color:#00566e;font-weight:800;padding:0;min-height:36px}.calendar-day:not(:disabled):hover{background:#caedf7}.calendar-day:disabled{background:#f0f1ef;color:#949c99;opacity:1;text-decoration:line-through;cursor:not-allowed}.calendar-day.selected{background:#003d52;color:#fff}.calendar-day.calendar-today{border-color:#007a9b}.calendar-footer{margin-top:22px;flex-wrap:wrap}.calendar-footer .btn{font-size:.85rem;padding:11px 14px}@media(max-width:440px){.school-calendar{padding:18px}.calendar-days,.calendar-weekdays{gap:3px}.calendar-day{min-height:34px}}

.school-date-value{display:flex;flex-direction:column;gap:3px;line-height:1.3}.school-date-value strong{font-family:Fredoka,Nunito,sans-serif;font-size:1.25rem;font-weight:600;color:#003d52}.school-date-value>span{font-size:1rem;font-weight:700;color:#365e62}.school-date-button>.school-date-value{font-size:inherit;text-align:left}.school-date-button:focus-visible{outline:3px solid #006a87;outline-offset:3px}

/* Separate teacher setup and demonstrations without changing class records. */
.teacher-tabs{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:12px;width:100%;margin:0 0 28px;padding:0 0 18px;border-bottom:2px solid #cde3e9}.teacher-tab{border:2px solid #cde3e9;border-radius:14px;background:white;color:#003d52;padding:14px 24px;min-height:52px;font-weight:900}.teacher-tab:hover{background:#e4f6fc}.teacher-tab.active{background:#003d52;border-color:#003d52;color:white;box-shadow:0 4px 0 #002a39}.clothing-demo-card{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:26px;background:#eefaff;border-color:#9ccfdf}.clothing-demo-card p{margin:0;max-width:650px}.clothing-demo-card .btn{flex-shrink:0;text-align:center;min-height:52px}@media(max-width:620px){.teacher-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:24px}.teacher-tab{padding:12px;line-height:1.35}.clothing-demo-card{flex-direction:column;align-items:stretch;gap:18px}.demo-library{grid-template-columns:1fr}.clothing-demo-card .btn{white-space:normal}}

#pupil-record{margin-top:24px;scroll-margin-top:24px}#teacher-pupil{max-width:440px;margin-bottom:16px}@media(max-width:620px){.teacher-tab{padding:12px 6px;font-size:.85rem}}

.teacher-grid{align-items:start}.teacher-grid>*{min-width:0}

.attendance-shortcuts.row{justify-content:flex-start;align-items:stretch;gap:18px 20px;margin:8px 0 32px;padding-bottom:4px}.attendance-shortcuts .btn{display:inline-flex;align-items:center;justify-content:center;margin:0;max-width:100%;text-decoration:none;min-height:52px;line-height:1.35;text-align:center}@media(max-width:620px){.attendance-shortcuts.row{flex-direction:column;gap:16px;margin-bottom:28px}.attendance-shortcuts .btn{width:100%;white-space:normal}}#bonus-token-awards{scroll-margin-top:24px}.bonus-token-card .school-date-button{width:min(100%,440px);margin:8px 0 18px}

.teacher-tab{display:inline-flex;align-items:center;justify-content:center;text-align:center;text-decoration:none;line-height:1.35}.teacher-guide-tab{max-width:100%;white-space:normal}@media(max-width:620px){.teacher-guide-tab{grid-column:1 / -1}}

.roster-actions{flex-wrap:nowrap;gap:12px;width:max-content}.roster-actions .btn{flex:0 0 auto;white-space:nowrap}
