:root{font-family:Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;color:#25322d;background:#fffaf0;font-synthesis:none;--ink: #25322d;--muted: #6d7a74;--cream: #fffaf0;--paper: #ffffff;--line: #e9e4d8;--green: #2f8f68;--green-dark: #246f52;--green-soft: #e2f4ea;--orange: #f28b3c;--orange-soft: #fff0df;--blue: #5d7df7;--blue-soft: #e9edff;--pink: #e85d8f;--pink-soft: #fde8f0;--red: #c84949;--shadow: 0 14px 40px rgba(44, 64, 54, .08)}*{box-sizing:border-box}html{min-width:320px;min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:var(--cream)}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit}h1,h2,h3,p{margin-top:0}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(93,125,247,.28);outline-offset:2px}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:264px;padding:26px 18px 20px;background:#fffdf8;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:11px;padding:0 9px 25px}.brand-mark{width:47px;height:47px;border-radius:16px;display:grid;place-items:center;background:var(--orange-soft);font-size:27px;transform:rotate(-3deg)}.brand strong{display:block;font-size:19px;color:#315f4d;letter-spacing:-.3px}.brand span{margin-top:3px;display:flex;align-items:center;gap:4px;color:var(--muted);font-size:11px}.main-nav{display:grid;gap:13px;overflow-y:auto;padding-right:3px}.nav-section{display:grid;gap:5px}.nav-heading{padding:3px 13px;color:#9a9f9b;font-size:10px;font-weight:850;letter-spacing:1.1px;text-transform:uppercase}.main-nav a{min-height:48px;padding:0 13px;border-radius:14px;display:flex;align-items:center;gap:12px;color:#5c6862;font-weight:600;transition:.18s ease}.main-nav a:hover{background:#f5f1e7;color:var(--ink);transform:translate(2px)}.main-nav a.active{background:var(--green-soft);color:var(--green-dark)}.account-card{margin-top:auto;padding:12px;border-radius:17px;background:#f7f3e9;display:flex;gap:10px;align-items:center}.avatar{width:38px;height:38px;border-radius:13px;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:800}.account-copy{min-width:0;flex:1}.account-copy strong,.account-copy span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.account-copy strong{font-size:13px}.account-copy span{font-size:11px;color:var(--muted);margin-top:2px}.icon-button{width:40px;height:40px;border:0;border-radius:12px;display:inline-grid;place-items:center;background:#f3f0e8;cursor:pointer}.icon-button.quiet{background:transparent;width:34px;height:34px;color:var(--muted)}.icon-button.danger{color:var(--red);background:#fff0f0}.mobile-header{display:none}.main-content{margin-left:264px;min-height:100vh;padding:42px clamp(28px,4vw,70px) 70px;max-width:1600px}.password-banner{min-height:47px;margin:-18px 0 25px;padding:10px 14px;border-radius:14px;display:flex;align-items:center;gap:9px;background:var(--orange-soft);color:#86501f;font-size:13px}.password-banner span{flex:1}.password-banner a{font-weight:900;text-decoration:underline;text-underline-offset:3px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:30px}.page-header h1{margin:5px 0 7px;font-size:clamp(30px,3.2vw,45px);line-height:1.08;letter-spacing:-1.5px;color:#283c34}.page-header p{max-width:700px;margin:0;color:var(--muted);line-height:1.6}.eyebrow{color:var(--orange);font-weight:800;font-size:12px;letter-spacing:1.3px;text-transform:uppercase}.eyebrow.light{color:#ffd79e}.card{background:var(--paper);border:1px solid rgba(222,216,202,.88);border-radius:22px;box-shadow:var(--shadow);padding:24px}.button{min-height:43px;border:0;border-radius:13px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:750;cursor:pointer;transition:.16s ease}.button:hover:not(:disabled){transform:translateY(-2px)}.button:disabled{opacity:.58;cursor:wait}.button.primary{background:var(--green);color:#fff;box-shadow:0 7px 17px #2f8f6833}.button.primary:hover:not(:disabled){background:var(--green-dark)}.button.secondary{background:var(--green-soft);color:var(--green-dark)}.button.ghost{background:#f4f1e9;color:#53615a}.button.danger{background:#fff0f0;color:var(--red)}.button.large{min-height:52px;padding-inline:24px;font-size:16px}.button.full{width:100%}.text-link{color:var(--green-dark);text-decoration:underline;text-underline-offset:4px;font-weight:700}.notice{margin:0 0 22px;padding:14px 16px;border-radius:14px;background:var(--blue-soft);color:#354b9d;line-height:1.5}.notice.error{background:#fff0f0;color:#9a3434}.notice.success{background:var(--green-soft);color:var(--green-dark)}.loading{min-height:120px;display:flex;align-items:center;justify-content:center;gap:11px;color:var(--muted)}.spinner{width:21px;height:21px;border:3px solid #d9dedb;border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{min-height:210px;display:grid;place-items:center;align-content:center;text-align:center;color:var(--muted);padding:35px}.empty-state>span{font-size:38px}.empty-state h3{color:var(--ink);margin:10px 0 5px}.empty-state p{margin:0}.boot-screen{min-height:100vh;display:grid;place-items:center;align-content:center;gap:10px}.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(430px,1.15fr) minmax(430px,.85fr);background:#fff}.auth-intro{position:relative;overflow:hidden;padding:44px clamp(42px,6vw,90px);color:#fff;background:linear-gradient(145deg,#286a50,#36926d);display:flex;flex-direction:column}.auth-intro.admin-intro{background:linear-gradient(145deg,#4056c8,#6d7ff0 58%,#55a78a)}.auth-intro:before,.auth-intro:after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;background:#ffffff0b}.auth-intro:before{top:-220px;right:-140px}.auth-intro:after{bottom:-270px;left:-120px}.auth-brand{font-size:20px;font-weight:800;display:flex;align-items:center;gap:10px;position:relative;z-index:1}.auth-brand span{width:45px;height:45px;border-radius:15px;background:#fff2d9;display:grid;place-items:center;font-size:26px}.hero-copy{margin:auto 0 40px;max-width:650px;position:relative;z-index:1}.hero-copy h1{margin:10px 0 20px;font-size:clamp(42px,5vw,68px);line-height:1.04;letter-spacing:-2.8px}.hero-copy p{font-size:18px;line-height:1.7;color:#e6f4ed;max-width:590px}.feature-row{display:flex;gap:12px;position:relative;z-index:1;padding-bottom:70px}.feature-row div{flex:1;min-width:0;padding:14px;border:1px solid rgba(255,255,255,.18);border-radius:15px;background:#ffffff14;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;gap:9px;font-size:13px;font-weight:650}.feature-row svg{width:19px}.hill{position:absolute;bottom:-23px;left:0;right:0;height:88px;border-radius:60% 60% 0 0/80% 80% 0 0;background:#1f583f;display:flex;justify-content:space-around;align-items:flex-start;padding:2px 60px;font-size:36px}.hill span:nth-child(2){font-size:22px;margin-top:12px}.auth-panel{padding:45px clamp(35px,5vw,82px);display:grid;place-items:center;background:#fffdf8}.auth-box{width:min(100%,500px)}.auth-tabs{display:flex;gap:5px;background:#f1eee6;padding:5px;border-radius:14px;margin-bottom:34px}.auth-tabs button{flex:1;min-height:43px;border:0;background:transparent;border-radius:10px;cursor:pointer;font-weight:700;color:var(--muted)}.auth-tabs button.active{background:#fff;color:var(--green-dark);box-shadow:0 4px 12px #283c3214}.auth-heading{display:flex;align-items:center;gap:14px;margin-bottom:24px}.auth-heading h2{margin:0 0 5px;font-size:28px}.auth-heading p{margin:0;color:var(--muted)}.welcome-icon{width:50px;height:50px;border-radius:17px;display:grid;place-items:center;background:var(--orange-soft);color:var(--orange)}.auth-help{text-align:center;color:var(--muted);font-size:12px;margin:18px 0 0}.portal-denied{min-height:100vh;padding:28px;display:grid;place-items:center;align-content:center;gap:13px;text-align:center;background:linear-gradient(135deg,var(--cream),var(--blue-soft))}.portal-denied h1,.portal-denied p{margin:0}.portal-denied p{color:var(--muted)}.form-stack{display:grid;gap:16px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.form-grid .wide{grid-column:1 / -1}label{display:grid;gap:7px;font-size:13px;color:#4c5953;font-weight:700}input,textarea,select{width:100%;border:1.5px solid #dedbd2;border-radius:12px;padding:11px 13px;background:#fff;color:var(--ink);transition:border .15s,box-shadow .15s}input{min-height:46px}textarea{resize:vertical;line-height:1.5}input:focus,textarea:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #2f8f681a;outline:none}input:disabled{background:#f4f2ed;color:#7a837e}.form-card{margin-bottom:24px}.form-card h2{display:flex;align-items:center;gap:9px;margin-bottom:20px;font-size:19px}.form-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:10px}.consent-check{grid-template-columns:auto 1fr;align-items:flex-start;padding:12px;border-radius:12px;background:#f6f5ef;font-weight:600;line-height:1.45}.consent-check input{width:18px;height:18px;min-height:0;margin-top:1px;accent-color:var(--green)}.form-divider{display:flex;align-items:center;gap:7px;border-top:1px solid var(--line);padding-top:18px;margin-top:5px;font-weight:800}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:25px}.metric{display:flex;gap:15px;align-items:center;padding:20px}.metric-icon{width:49px;height:49px;flex:0 0 auto;border-radius:16px;display:grid;place-items:center}.metric-icon.orange{background:var(--orange-soft);color:var(--orange)}.metric-icon.green{background:var(--green-soft);color:var(--green)}.metric-icon.blue{background:var(--blue-soft);color:var(--blue)}.metric-icon.pink{background:var(--pink-soft);color:var(--pink)}.metric strong,.metric span{display:block}.metric strong{font-size:25px;letter-spacing:-.6px}.metric span{color:var(--muted);font-size:12px;margin-top:3px}.section-toolbar,.section-title{display:flex;align-items:center;justify-content:space-between;gap:20px}.section-toolbar{margin:10px 0 18px}.section-toolbar h2,.section-title h2{margin:0;font-size:19px}.section-title{margin-bottom:18px}.section-title a{color:var(--green);font-size:13px;font-weight:700}.two-column{display:grid;grid-template-columns:1.2fr .8fr;gap:20px}.activity-list,.hard-list,.review-list{display:grid}.activity-row{display:grid;grid-template-columns:11px 1fr auto;gap:12px;align-items:center;padding:14px 0;border-top:1px solid #efede7}.activity-row:first-child{border-top:0}.activity-row strong,.activity-row span{display:block}.activity-row strong{font-size:14px}.activity-row span{margin-top:3px;color:var(--muted);font-size:11px}.subject-dot{width:9px;height:38px;border-radius:8px;background:var(--blue)}.subject-dot.maths{background:var(--orange)}.subject-dot.vietnamese{background:var(--pink)}.subject-dot.english{background:var(--blue)}.score-chip{padding:7px 11px;border-radius:12px;background:var(--green-soft);color:var(--green-dark);font-weight:800;font-size:13px}.score-chip small{display:block;text-align:right;font-weight:500;opacity:.75}.hard-list>div{padding:13px 0;border-top:1px solid #efede7}.hard-list>div:first-child{border-top:0}.hard-list p{margin:0 0 5px;line-height:1.4;font-size:13px;font-weight:650}.hard-list span{color:var(--red);font-size:11px}.review-list>div{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:1px solid #efede7;padding:14px 0}.review-list>div:first-child{border-top:0}.review-list strong,.review-list span{display:block}.review-list span{color:var(--muted);font-size:12px;margin-top:4px}.filter-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}.filter-tabs button{border:1px solid var(--line);min-height:39px;border-radius:12px;padding:0 17px;background:#fff;color:var(--muted);cursor:pointer;font-weight:700}.filter-tabs button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.library-card{padding:0;overflow:hidden;display:flex;flex-direction:column}.library-cover{min-height:128px;position:relative;padding:24px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;color:#fff;overflow:hidden}.library-cover:before{content:"";width:130px;height:130px;position:absolute;border-radius:50%;background:#ffffff1f;right:-30px;bottom:-62px}.library-cover.maths{background:linear-gradient(135deg,#f3a14d,#e67835)}.library-cover.vietnamese{background:linear-gradient(135deg,#ee7aa4,#d94d81)}.library-cover.english{background:linear-gradient(135deg,#7390fa,#506de1)}.library-cover>svg,.library-cover>span,.library-cover .cover-spark,.library-cover .visual-game-badge{position:relative;z-index:2}.library-cover span{font-weight:800}.library-world-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.52;filter:saturate(1.08) contrast(.92);z-index:0}.library-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#1623208c,#1623200a);z-index:1}.visual-game-badge{position:absolute!important;right:15px;bottom:13px;padding:5px 9px;border-radius:99px;background:#ffffffe6;color:#3c5c50;box-shadow:0 4px 12px #202c2626;font-size:9px;text-transform:uppercase;letter-spacing:.6px}.cover-spark{position:absolute;right:25px;top:22px;font-size:24px;opacity:.7}.library-body{padding:20px;flex:1;display:flex;flex-direction:column}.library-meta{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px}.library-meta span{display:flex;align-items:center;gap:4px}.library-body h3{margin:12px 0 7px;font-size:18px}.library-body>p{color:var(--muted);line-height:1.5;font-size:13px;flex:1}.owner-line{font-size:11px;color:var(--muted);border-top:1px solid #efede7;padding-top:11px}.card-actions{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}.quiet-text{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.status{display:inline-flex!important;padding:4px 9px;border-radius:99px;font-size:10px!important;font-weight:800;width:fit-content}.status.published,.status.approved,.status.active{background:var(--green-soft);color:var(--green-dark)!important}.status.in_review{background:var(--blue-soft);color:#4059bd!important}.status.draft{background:#f0eee9;color:#696e6b!important}.status.changes_requested,.status.locked{background:#fff0f0;color:var(--red)!important}.assignment-grid{display:grid;gap:15px}.assignment-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center}.assignment-icon{width:57px;height:57px;border-radius:18px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue)}.assignment-icon.maths{background:var(--orange-soft);color:var(--orange)}.assignment-icon.vietnamese{background:var(--pink-soft);color:var(--pink)}.assignment-copy h3{margin:4px 0}.assignment-copy>p{margin:0;color:var(--muted);font-size:12px}.assignment-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:11px}.assignment-meta span{display:flex;align-items:center;gap:4px}.student-grid,.class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.student-card{display:flex;align-items:center;gap:14px;position:relative}.student-avatar{width:55px;height:55px;border-radius:19px;display:grid;place-items:center;background:linear-gradient(145deg,#ffd98f,#f3a95f);color:#744819;font-size:24px;font-weight:900}.student-info{min-width:0;flex:1}.student-card h3{margin:5px 0 3px}.student-card p{margin:0;color:var(--muted);font-size:12px;display:flex;align-items:center;gap:4px}.pill{padding:3px 8px;border-radius:99px;color:var(--green-dark);background:var(--green-soft);font-size:10px;font-weight:800}.xp-badge{margin-left:auto;align-self:flex-start;color:var(--orange);background:var(--orange-soft);border-radius:10px;padding:7px 9px;display:flex;gap:4px;align-items:center;font-size:12px;font-weight:900}.class-card{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center}.class-icon{width:54px;height:54px;border-radius:17px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center}.class-card h3{margin:6px 0 3px}.class-card p{margin:0;color:var(--muted);font-size:12px}.class-stats{text-align:right}.class-stats strong,.class-stats span{display:block}.class-stats strong{font-size:22px}.class-stats span{color:var(--muted);font-size:10px}.join-code{grid-column:1 / -1;min-height:42px;border:1px dashed #cdd4d0;border-radius:11px;background:#f9faf8;display:flex;align-items:center;gap:9px;padding:0 12px;cursor:pointer}.join-code span{color:var(--muted);font-size:11px}.join-code strong{letter-spacing:2px}.join-code small{margin-left:auto;color:var(--green)}.class-management{display:grid;gap:20px;margin-top:24px}.mini-heading{display:flex;align-items:center;gap:8px;font-size:18px;margin-bottom:18px}.ranking-list{display:grid}.ranking-list>div{min-height:54px;display:grid;grid-template-columns:46px minmax(120px,1fr) 110px 90px;gap:12px;align-items:center;border-top:1px solid #efede7}.ranking-list>div:first-child{border-top:0}.ranking-list>div>span:not(.rank){color:var(--muted);font-size:12px}.ranking-list b{color:var(--orange);text-align:right}.admin-ranking>div>div strong,.admin-ranking>div>div small{display:block}.admin-ranking>div>div small{margin-top:3px;color:var(--muted)}.admin-ranking b{display:flex;justify-content:flex-end;align-items:center;gap:5px}.rank{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#f3f0e9;font-weight:900}.rank-1,.rank-2,.rank-3{font-size:21px;background:transparent}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:720px}th,td{text-align:left;padding:14px 12px;border-bottom:1px solid #eeece6;font-size:13px}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px}td strong,td small{display:block}td small{color:var(--muted);margin-top:3px}.role-badge{display:inline-flex;align-items:center;gap:5px}.compact-select{min-height:37px;padding:6px 30px 6px 9px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}.system-details{display:grid;gap:0;margin:0}.system-details>div,.migration-list>div{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-top:1px solid #eeece6}.system-details>div:first-child,.migration-list>div:first-child{border-top:0}.system-details dt,.migration-list span{color:var(--muted)}.system-details dd{margin:0;font-weight:750;text-align:right}.migration-list{display:grid}.migration-list span{font-size:12px}.ocr-card{margin-bottom:24px;background:linear-gradient(135deg,#f8faff,#fff)}.ocr-heading{display:flex;align-items:center;gap:13px}.ocr-heading>div:nth-child(2){flex:1}.ocr-heading h2{margin:0 0 4px;font-size:18px}.ocr-heading p{margin:0;color:var(--muted);font-size:12px}.file-button input{display:none}.ocr-output{margin-top:18px}.ocr-help{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-top:10px;color:var(--muted);font-size:11px}.ocr-help code{background:#eef1ff;padding:3px 5px;border-radius:5px}.question-editor-list{display:grid;gap:18px}.question-editor{display:grid;gap:16px}.question-editor-head{display:flex;align-items:center;justify-content:space-between}.question-editor-head>span{background:var(--orange-soft);color:#9b5820;border-radius:10px;padding:6px 10px;font-weight:900;font-size:12px}.option-editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.option-editor label{grid-template-columns:auto auto 1fr;align-items:center;gap:7px;padding:7px;border:1px solid var(--line);border-radius:12px}.option-editor label.correct-option{background:var(--green-soft);border-color:#8fcbae}.option-editor label>input[type=radio]{width:17px;height:17px;min-height:0;accent-color:var(--green)}.option-editor label>span{width:29px;height:29px;display:grid;place-items:center;border-radius:8px;background:#f1eee7}.option-editor label>input:last-child{min-height:39px;border:0;background:transparent;padding:5px;box-shadow:none}.editor-actions{position:sticky;bottom:18px;margin-top:22px;padding:13px;border:1px solid var(--line);border-radius:17px;background:#fffdf8f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;justify-content:space-between;z-index:5}.game-page{min-height:calc(100vh - 115px)}.game-welcome,.final-screen{display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;max-width:960px;margin:0 auto}.game-mascot{font-size:105px;filter:drop-shadow(0 17px 18px rgba(75,66,40,.15));animation:bob 2.8s ease-in-out infinite}@keyframes bob{50%{transform:translateY(-8px) rotate(2deg)}}.welcome-adventure-art{width:174px;height:150px;position:relative;margin:-10px auto 4px}.welcome-hero{position:absolute;inset:0;background:url(/game-assets/pip-poses.webp) 50% 0 / 300% 200% no-repeat;filter:drop-shadow(0 14px 14px rgba(64,45,28,.2));animation:bob 2.8s ease-in-out infinite}.welcome-adventure-art>span{position:absolute;color:#f3b32f;font-size:24px;animation:twinkle 1.6s ease-in-out infinite alternate}.welcome-adventure-art>span:nth-of-type(1){left:0;top:23px}.welcome-adventure-art>span:nth-of-type(2){right:0;top:5px;animation-delay:.5s}@keyframes twinkle{to{transform:scale(1.4) rotate(18deg);opacity:.55}}.game-welcome h1,.final-screen h1{font-size:clamp(34px,5vw,58px);margin:8px 0 12px;letter-spacing:-1.8px}.game-welcome>p,.final-screen>p{max-width:640px;color:var(--muted);line-height:1.6;margin-bottom:21px}.game-welcome .text-link{margin-top:20px}.game-mode-picker{width:100%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px;margin:0 0 23px}.game-mode-picker button{min-height:130px;padding:13px 11px;border:2px solid #ebe5d9;border-radius:19px;background:#ffffffd9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer;color:var(--ink);transition:.17s ease}.game-mode-picker button:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#b9dcca}.game-mode-picker button.active{border-color:var(--green);background:var(--green-soft);box-shadow:0 9px 24px #2f8f6829}.game-mode-picker button>span{font-size:30px}.game-mode-picker button strong{font-size:13px}.game-mode-picker button small{color:var(--muted);font-size:10px;line-height:1.35}.game-header{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;max-width:1000px;margin:0 auto 46px}.game-close{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:#fff;border:1px solid var(--line);font-size:27px;color:var(--muted)}.game-progress{height:13px;border-radius:99px;background:#e8e4da;overflow:hidden}.game-progress>div{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green),#68bf70);transition:width .3s ease}.live-score{display:flex;align-items:center;gap:10px;color:var(--orange);font-weight:900;white-space:nowrap}.live-score>span{display:inline-flex;align-items:center;gap:4px}.question-stage{max-width:1000px;margin:0 auto;text-align:center}.adventure-scene{--world-art: url(/game-assets/world-candy.webp);height:225px;position:relative;overflow:hidden;margin:-20px 0 20px;border:5px solid #fff;border-radius:28px;background-image:linear-gradient(0deg,rgba(27,40,34,.28),transparent 55%),var(--world-art);background-size:cover;background-position:center;box-shadow:0 18px 44px #34403929;isolation:isolate}.adventure-scene:after{content:"";position:absolute;inset:auto 0 0;height:28%;background:linear-gradient(0deg,rgba(47,73,52,.42),transparent);z-index:-1}.scene-sky-sparkles{position:absolute;left:21px;top:14px;color:#fff;font-size:20px;text-shadow:0 2px 8px rgba(42,46,49,.4);animation:twinkle 2.4s ease-in-out infinite alternate}.scene-boss{position:absolute;right:2.2%;bottom:27px;width:120px;height:150px;background-size:400% 200%;background-position:0 0;background-repeat:no-repeat;filter:drop-shadow(0 11px 8px rgba(31,28,28,.28))}.scene-hero{position:absolute;bottom:17px;width:115px;height:115px;transform:translate(-50%);background:url(/game-assets/pip-poses.webp) 100% 100% / 300% 200% no-repeat;filter:drop-shadow(0 9px 7px rgba(39,35,25,.24));transition:left .55s cubic-bezier(.2,.75,.25,1.25);z-index:3}.scene-path{position:absolute;left:8%;right:20%;bottom:24px;height:27px;padding:0 16px;border-radius:50%;border-bottom:7px solid rgba(255,255,255,.74);display:flex;justify-content:space-between;align-items:flex-end;color:#ffffffc7;text-shadow:0 2px 5px rgba(49,38,26,.42);z-index:1}.scene-path span{font-size:21px;line-height:1}.scene-path span.reached{color:#ffd351;transform:translateY(-2px)}.scene-mode-label{position:absolute;top:13px;right:13px;padding:7px 12px;border-radius:99px;background:#ffffffe8;color:#344b41;box-shadow:0 5px 18px #1b26202b;font-size:11px;font-weight:900;z-index:5}.question-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px}.question-count{color:var(--green);font-weight:900;font-size:12px;text-transform:uppercase;letter-spacing:1px}.read-question{min-height:36px;padding:0 12px;border:0;border-radius:11px;background:var(--blue-soft);color:#4059bd;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;cursor:pointer}.question-stage h1{margin:13px auto 30px;font-size:clamp(28px,4vw,44px);line-height:1.23;letter-spacing:-.8px;max-width:790px}.option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;text-align:left}.option-grid button{min-height:72px;padding:12px 16px;border:2px solid #e4e0d6;border-radius:17px;background:#fff;display:flex;align-items:center;gap:13px;font-weight:750;font-size:15px;cursor:pointer;transition:.16s}.option-grid button:hover:not(:disabled){border-color:#9cccb6;transform:translateY(-2px);box-shadow:var(--shadow)}.option-grid button>span{width:38px;height:38px;flex:0 0 auto;display:grid;place-items:center;border-radius:12px;background:#f1eee7;color:var(--muted);font-weight:900}.visual-options button{min-height:124px;position:relative;display:grid;grid-template-columns:83px 31px minmax(0,1fr);align-items:center;gap:10px;padding:13px;overflow:hidden}.visual-options button:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;background:#ffffff47;right:-45px;top:-45px}.visual-options button>.answer-art{width:80px;height:80px;position:relative;border-radius:22px;background:linear-gradient(145deg,#fff7d8,#ffe08b);color:#754d13;display:grid;place-items:center;box-shadow:inset 0 -5px #97681714}.visual-options button>.option-letter{width:29px;height:29px;border-radius:9px;background:#ffffffd1;color:#6d746f;font-size:11px;z-index:1}.visual-options button>strong{font-size:16px;line-height:1.35;z-index:1}.visual-options button.is-correct{border-color:#59b67f;background:#e3f8eb;animation:correct-pop .38s ease}.visual-options button.is-wrong{border-color:#e28383;background:#fff0f0;animation:wrong-shake .32s ease}@keyframes correct-pop{50%{transform:scale(1.025)}}@keyframes wrong-shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.answer-art .emoji-picture{font-size:37px;line-height:1}.answer-art .dot-picture{max-width:64px;color:#e27d31;font-size:13px;line-height:1.45;letter-spacing:3px;overflow-wrap:anywhere;text-align:center}.answer-shape{display:block;width:48px;height:48px;background:#f18643;filter:drop-shadow(0 5px 4px rgba(113,67,31,.18))}.answer-shape.circle{border-radius:50%}.answer-shape.square{border-radius:7px}.answer-shape.rectangle{width:60px;height:38px;border-radius:6px}.answer-shape.triangle{width:0;height:0;background:transparent;border-left:29px solid transparent;border-right:29px solid transparent;border-bottom:52px solid #f18643}.visual-options.treasure button{background:linear-gradient(145deg,#fff9e8,#fff0bf);border-color:#e9cf82}.visual-options.treasure button:hover:not(:disabled){border-color:#d39a2f}.visual-options button>.treasure-art{background:transparent;box-shadow:none}.treasure-sprite{width:78px;height:78px;border-radius:0!important;background:url(/game-assets/treasure-chest-closed-3d.webp) center / contain no-repeat!important;filter:drop-shadow(0 7px 5px rgba(75,48,20,.2));transition:transform .2s ease}.visual-options.treasure button:hover .treasure-sprite{transform:translateY(-4px) rotate(-2deg)}.visual-options.treasure button.is-correct .treasure-sprite{background-image:url(/game-assets/treasure-chest-open-3d.webp)!important;transform:translateY(-5px) scale(1.08)}.treasure-art>b{position:absolute;right:2px;bottom:2px;width:25px;height:25px;border-radius:50%;background:#fff;color:#9a6417;display:grid;place-items:center;font-size:10px;box-shadow:0 3px 7px #49300c33}.visual-options.bubbles button{border-radius:70px;border-color:#64a4d16b;background:radial-gradient(circle at 25% 20%,#fff 0 7%,#dff7ff 28%,#d8eaff 68%,#bbd1fa);box-shadow:inset -8px -10px 20px #5073be1f,0 8px 18px #46689b17}.visual-options.bubbles button:nth-child(2n){background:radial-gradient(circle at 25% 20%,#fff 0 7%,#fff0fa 28%,#f8d7ef 68%,#eebfde)}.visual-options.bubbles button>.bubble-art{border-radius:50%;background:#ffffffa3;box-shadow:inset -5px -8px 12px #547cba1a}.platformer-shell{--runner-dark:#203a3c;position:relative;margin-top:10px;border:1px solid rgba(63,72,68,.18);border-radius:28px;overflow:hidden;background:var(--runner-dark);box-shadow:0 24px 60px #222f2a38,0 3px #fffc inset;isolation:isolate}.platformer-shell:before{content:"";position:absolute;z-index:9;pointer-events:none;inset:0;border-radius:inherit;box-shadow:0 0 0 1px #ffffff38 inset}.platformer-maths{--runner-accent:#ff8b4d;--runner-accent-dark:#c9542c;--runner-bar:#314f45}.platformer-vietnamese{--runner-accent:#3e9eea;--runner-accent-dark:#2670b3;--runner-bar:#274c55}.platformer-english{--runner-accent:#8871e8;--runner-accent-dark:#5a48b0;--runner-bar:#30345e}.platformer-hud{min-height:58px;padding:8px 11px;display:flex;align-items:center;gap:10px;color:#fff;background:linear-gradient(100deg,var(--runner-bar),#253d3d);font-size:12px}.platformer-hud-brand{min-height:38px;padding:0 12px;display:flex;align-items:center;gap:8px;border-radius:13px;background:#ffffff1a;box-shadow:0 1px #ffffff1f inset}.platformer-hud-brand>span{font-size:18px}.platformer-hud-brand strong{white-space:nowrap;font-size:11px;letter-spacing:.2px}.platformer-stats{display:flex;align-items:center;gap:7px;flex:1}.platformer-stats>span{min-height:36px;padding:0 10px;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#ffffff14;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.platformer-stats .platformer-hearts{letter-spacing:1px}.platformer-stats .combo-chip{color:#fff5b0;background:#f577453d;animation:combo-pop .35s ease both}.platformer-stats .checkpoint-chip{color:#fff1a3}.platformer-coin-icon{width:24px;height:24px;flex:0 0 24px;display:inline-block;background:url(/game-assets/coin-star-3d.webp) center / contain no-repeat;filter:drop-shadow(0 2px 3px rgba(255,205,45,.5))}.platformer-actions{margin-left:auto;display:flex;align-items:center;gap:6px}.platformer-actions button{width:36px;height:36px;padding:0;border:1px solid rgba(255,255,255,.13);border-radius:12px;color:#fff;background:#ffffff17;display:grid;place-items:center;cursor:pointer;transition:transform .16s ease,background .16s ease}.platformer-actions button:hover{transform:translateY(-1px);background:#ffffff2e}.platformer-actions .listen-button{width:auto;padding:0 11px;grid-auto-flow:column;gap:6px;color:#31433d;background:#fff}.platformer-progress{height:6px;overflow:hidden;background:#ffffff26}.platformer-progress span{display:block;width:0;height:100%;border-radius:0 6px 6px 0;background:linear-gradient(90deg,#ffd84d,var(--runner-accent),#ff79a7);box-shadow:0 0 12px #ffda5bcc;transition:width .08s linear}.platformer-question{min-height:70px;padding:9px 18px 11px;display:grid;place-items:center;align-content:center;gap:4px;color:#fff;background:linear-gradient(105deg,#486bd6,#745ac7 60%,#9c62cc);box-shadow:0 7px 22px #38307533 inset}.platformer-question span{color:#e6eaff;font-size:10px;font-weight:900;letter-spacing:.75px;text-transform:uppercase}.platformer-question strong{font-size:clamp(17px,2.4vw,25px);line-height:1.2;text-shadow:0 2px 0 rgba(49,39,100,.25)}.platformer-viewport{position:relative;overflow:hidden;background:#b9e6f4}.platformer-viewport:after{content:"";pointer-events:none;position:absolute;inset:0;z-index:2;box-shadow:0 0 45px #1f2f2e2e inset}.platformer-viewport canvas{width:100%;height:auto;aspect-ratio:960 / 500;display:block;touch-action:none}.platformer-intro{position:absolute;inset:0;z-index:5;padding:24px clamp(22px,5vw,58px);color:#fff;background:linear-gradient(100deg,#182b2bf5,#1c3431d6 57%,#24323aad);display:grid;grid-template-columns:138px minmax(0,1fr) auto;align-content:center;align-items:center;column-gap:26px;text-align:left;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.intro-hero{width:138px;height:138px;background:url(/game-assets/pip-poses.webp) 50% 100% / 300% 200% no-repeat;filter:drop-shadow(0 14px 11px rgba(0,0,0,.3));animation:bob 1.8s ease-in-out infinite}.intro-copy{min-width:0}.intro-kicker{display:inline-flex;margin-bottom:5px;padding:5px 9px;border-radius:999px;color:#ffe87f;background:#ffffff1a;font-size:9px;font-weight:950;letter-spacing:1.5px}.platformer-intro h2{margin:0 0 5px;font-size:clamp(27px,4.2vw,43px);letter-spacing:-1.3px;text-shadow:0 3px 0 rgba(0,0,0,.16)}.platformer-intro p{max-width:500px;margin:0;color:#edf8f2;line-height:1.48;font-size:13px}.platformer-intro small{display:block;color:#cfe1dc;margin-top:10px;font-size:10px}.intro-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}.intro-badges span{padding:6px 9px;border:1px solid rgba(255,255,255,.13);border-radius:10px;background:#ffffff14;font-size:10px;font-weight:800}.intro-actions{display:grid;justify-items:stretch;gap:8px}.platformer-intro .button{min-width:182px;box-shadow:0 6px 0 var(--runner-accent-dark),0 12px 24px #0000002e;background:var(--runner-accent)}.platformer-intro .button:hover{transform:translateY(-2px)}.text-game-button{border:0;background:transparent;color:#fff;text-decoration:underline;text-underline-offset:3px;cursor:pointer;font-size:11px}.platformer-paused{position:absolute;inset:0;z-index:6;color:#fff;background:#182628c4;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:grid;place-content:center;justify-items:center;text-align:center}.platformer-paused>span{font-size:38px}.platformer-paused h3{margin:6px 0 2px;font-size:27px}.platformer-paused p{margin:0 0 15px;color:#dbe9e5}.platformer-paused>div{display:flex;gap:8px}.platformer-controls{min-height:88px;padding:10px 15px;background:linear-gradient(180deg,#fffaf0,#f4ecd9);display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;touch-action:none;-webkit-user-select:none;user-select:none}.move-controls{display:grid;gap:5px}.move-controls small{color:#9a8b72;font-size:8px;font-weight:950;letter-spacing:1.2px;text-align:center}.move-controls>div{display:flex;gap:9px}.platformer-controls button{width:60px;height:58px;border:1px solid #e4dac6;border-radius:18px;color:#3a4b45;background:linear-gradient(180deg,#fff,#f8f5ed);box-shadow:0 5px #d7cfbe,0 9px 20px #4137281c;display:grid;place-items:center;cursor:pointer;touch-action:none;transition:transform .06s ease,box-shadow .06s ease}.platformer-controls button:active{transform:translateY(4px);box-shadow:0 1px #d7cfbe}.platformer-tip{display:grid;justify-items:center;gap:2px;color:#82745f;text-align:center}.platformer-tip strong{color:#4b554f;font-size:12px}.platformer-tip span{font-size:10px}.platformer-controls .jump-control{width:122px;grid-template-columns:auto auto;gap:7px;color:#fff;border-color:transparent;background:linear-gradient(160deg,#ff9d53,var(--runner-accent));box-shadow:0 6px 0 var(--runner-accent-dark),0 10px 22px #7e472433;font-weight:950;letter-spacing:.8px}.platformer-controls .jump-control span{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:#ffffff2e;font-size:20px}.platformer-controls .jump-control:active{box-shadow:0 1px 0 var(--runner-accent-dark)}@keyframes combo-pop{0%{transform:scale(.65) rotate(-5deg)}70%{transform:scale(1.12) rotate(2deg)}to{transform:scale(1)}}.platformer-shell+.answer-feedback{position:sticky;bottom:12px;z-index:11;box-shadow:0 15px 38px #202e272e}.adventure-loot{margin:-10px 0 22px;padding:10px 15px;border-radius:13px;background:#fff4cf;color:#8a6117}.answer-feedback{margin-top:25px;border-radius:17px;padding:16px;display:flex;align-items:center;gap:13px;text-align:left}.answer-feedback.correct{background:var(--green-soft);color:var(--green-dark)}.answer-feedback.wrong{background:#fff0f0;color:#a33e3e}.answer-feedback>svg{flex:0 0 auto}.answer-feedback>div{flex:1}.answer-feedback strong,.answer-feedback span{display:block}.answer-feedback span{font-size:12px;margin-top:3px;opacity:.8}.confetti{color:var(--orange);font-size:28px;letter-spacing:15px}.trophy{margin:25px 0 7px;width:105px;height:105px;border-radius:35px;display:grid;place-items:center;background:var(--orange-soft);color:var(--orange);transform:rotate(-3deg)}.trophy svg{width:56px;height:56px}.final-score{padding:15px 30px;border-radius:20px;background:var(--green-soft);color:var(--green-dark);margin-bottom:25px}.final-score strong{font-size:43px}.final-score span{margin-left:5px;font-weight:700}.achievement-unlocked{display:flex;align-items:center;gap:10px;margin:-8px 0 22px;padding:12px 17px;border-radius:15px;background:var(--orange-soft);color:#89521e;text-align:left}.achievement-unlocked strong,.achievement-unlocked span{display:block}.achievement-unlocked span{margin-top:3px;font-size:12px}.final-actions{display:flex;gap:10px}.profile-card{max-width:650px;display:grid;grid-template-columns:auto 1fr;gap:28px}.profile-avatar{width:95px;height:95px;border-radius:30px;display:grid;place-items:center;background:var(--green-soft);color:var(--green)}.profile-avatar svg{width:49px;height:49px}@media(max-width:1120px){.metric-grid,.library-grid,.student-grid,.class-grid{grid-template-columns:repeat(2,1fr)}.auth-page{grid-template-columns:1fr 1fr}.hero-copy h1{font-size:46px}.feature-row{flex-direction:column}}@media(max-width:780px){.mobile-header{height:69px;padding:10px 16px;display:flex;justify-content:space-between;align-items:center;background:#fffdf8;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:18}.mobile-header .brand{padding:0}.mobile-header .brand-mark{width:40px;height:40px;font-size:22px}.mobile-header .brand strong{font-size:16px}.sidebar{transform:translate(-105%);transition:transform .2s ease;box-shadow:20px 0 50px #1f2f2729}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop{position:fixed;inset:0;z-index:19;border:0;background:#202f2861}.main-content{margin-left:0;padding:27px 17px 55px}.page-header{align-items:flex-start;flex-direction:column;gap:17px}.page-header h1{font-size:33px}.auth-page{display:block;background:#fffdf8}.auth-intro{min-height:340px;padding:25px 22px 60px}.hero-copy{margin:50px 0 15px}.hero-copy h1{font-size:39px;letter-spacing:-1.5px}.hero-copy p{font-size:15px}.feature-row{display:none}.hill{height:60px;font-size:27px}.auth-panel{padding:32px 19px 60px}.two-column,.library-grid,.student-grid,.class-grid,.form-grid,.option-editor,.option-grid{grid-template-columns:1fr}.game-mode-picker{grid-template-columns:repeat(2,1fr)}.game-mode-picker button{min-height:118px}.ocr-heading{align-items:flex-start;flex-wrap:wrap}.ocr-heading .file-button{width:100%}.ocr-help{align-items:stretch;flex-direction:column}.ranking-list>div{grid-template-columns:40px minmax(100px,1fr) 75px}.ranking-list>div>span:not(.rank){display:none}.profile-card{grid-template-columns:1fr}.profile-avatar{width:65px;height:65px;border-radius:21px}.profile-avatar svg{width:34px}.game-page{min-height:calc(100vh - 125px)}.game-header{gap:10px;margin-bottom:27px}.live-score{font-size:12px}.adventure-scene{height:190px;border-radius:22px;margin-top:-8px}.scene-boss{width:91px;height:120px;right:-2px}.scene-hero{width:90px;height:90px}.scene-mode-label{top:9px;right:9px}.question-stage h1{margin-bottom:20px}.visual-options button{min-height:111px}.platformer-hud-brand{display:none}.platformer-intro{padding:18px 22px;grid-template-columns:105px 1fr;column-gap:16px;row-gap:12px}.intro-hero{width:105px;height:105px}.intro-actions{grid-column:1 / -1;grid-template-columns:1fr}.platformer-intro .button{min-height:43px}.text-game-button,.platformer-tip{display:none}.platformer-controls{grid-template-columns:auto 1fr}.answer-feedback{align-items:flex-start;flex-wrap:wrap}.answer-feedback .button{width:100%}.assignment-card{grid-template-columns:auto 1fr}.assignment-card>.button{grid-column:1 / -1;width:100%}}@media(max-width:480px){.metric-grid{grid-template-columns:1fr;gap:11px}.metric{padding:15px}.card{border-radius:18px;padding:18px}.library-card{padding:0}.game-mode-picker{grid-template-columns:1fr 1fr;gap:8px}.game-mode-picker button{min-height:105px;padding:9px}.game-mode-picker button small{display:none}.question-toolbar{align-items:flex-start}.question-count{text-align:left}.read-question{flex:0 0 auto;padding-inline:9px}.read-question svg{width:16px}.adventure-scene{height:164px;border-width:3px}.scene-boss{width:78px;height:101px;bottom:24px}.scene-hero{width:78px;height:78px;bottom:18px}.scene-path{right:22%;left:4%}.scene-sky-sparkles{display:none}.visual-options button{grid-template-columns:66px 26px minmax(0,1fr);min-height:94px;padding:9px}.visual-options button>.answer-art{width:62px;height:62px;border-radius:17px}.visual-options button>strong{font-size:14px}.answer-art .emoji-picture{font-size:30px}.treasure-sprite{width:61px;height:61px}.live-score{gap:5px;font-size:10px!important}.live-score svg{display:none}.platformer-shell{border-radius:18px}.platformer-hud{min-height:51px;padding:6px 7px;gap:6px}.platformer-stats{min-width:0;gap:5px;overflow:hidden}.platformer-stats>span{min-height:33px;padding-inline:7px}.platformer-stats .platformer-hearts{display:none}.platformer-actions{gap:4px}.platformer-actions button{width:33px;height:33px}.platformer-actions .listen-button{width:33px;padding:0}.platformer-actions .listen-button span{display:none}.platformer-question{min-height:54px;padding-inline:10px}.platformer-question span{display:none}.platformer-question strong{font-size:15px}.platformer-intro{padding:10px 14px;grid-template-columns:74px 1fr;column-gap:11px;row-gap:5px}.intro-hero{width:74px;height:74px}.intro-kicker,.intro-badges,.platformer-intro small{display:none}.platformer-intro h2{font-size:23px}.platformer-intro p{font-size:11px;line-height:1.35}.platformer-intro .button{min-height:37px;margin-top:3px;font-size:12px;box-shadow:0 4px 0 var(--runner-accent-dark)}.platformer-controls{min-height:70px;padding:7px 10px;gap:10px}.move-controls small{display:none}.platformer-controls button{width:52px;height:50px;border-radius:15px}.platformer-controls .jump-control{width:104px}.platformer-controls .jump-control span{width:25px;height:25px}.platformer-paused h3{font-size:22px}.editor-actions{flex-direction:column}.editor-actions .button{width:100%}.final-actions{flex-direction:column;width:100%}.final-actions .button{width:100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.memory-board{max-width:860px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:15px;perspective:1000px}.memory-card{min-height:165px;padding:0;position:relative;border:0;border-radius:22px;background:transparent;transform-style:preserve-3d;cursor:pointer;transition:transform .35s ease}.memory-card:hover:not(:disabled){transform:translateY(-5px) rotate(1deg)}.memory-card>span{position:absolute;inset:0;border-radius:22px;display:grid;place-content:center;backface-visibility:hidden;box-shadow:0 10px 22px #42487e24}.memory-back{color:#fff;font-size:42px;background:linear-gradient(145deg,#6d7df1,#9c67d9);border:4px solid rgba(255,255,255,.65)}.memory-front{padding:14px;transform:rotateY(180deg);color:#4e476f;background:#fff8df;border:3px solid #ffd46c}.memory-front small,.memory-front strong{display:block}.memory-front small{margin-bottom:7px;color:#a47a28;font-size:10px;font-weight:900;text-transform:uppercase}.memory-front strong{font-size:18px}.memory-card.open,.memory-card.matched{transform:rotateY(180deg)}.memory-card.matched .memory-front{background:#e6f9ec;border-color:#59b67f}.star-field{min-height:330px;max-width:900px;margin:0 auto;position:relative;overflow:hidden;border-radius:28px;background:radial-gradient(circle at 50% 115%,#95e3df 0 10%,transparent 30%),linear-gradient(155deg,#323c96,#6d5bd0 50%,#925fc0);box-shadow:inset 0 0 50px #0e134859}.star-field:before{content:"✦　·　★　·　✧　　　✦　·　★";position:absolute;inset:20px;color:#fff9;font-size:24px;letter-spacing:16px}.answer-star{width:168px;height:118px;padding:10px;position:absolute;border:0;color:#564317;background:transparent;cursor:pointer;animation:star-float 2.4s ease-in-out infinite}.answer-star>span{position:absolute;inset:-22px;z-index:-1;color:#ffe15c;font-size:150px;line-height:1;filter:drop-shadow(0 9px 8px rgba(20,14,69,.3));text-shadow:0 3px #f3a931}.answer-star strong{display:block;padding:7px 9px;border-radius:13px;background:#ffffffeb;font-size:15px;line-height:1.2}.star-1{left:7%;top:16%}.star-2{right:8%;top:13%;animation-delay:-.7s}.star-3{left:27%;bottom:7%;animation-delay:-1.2s}.star-4{right:26%;bottom:5%;animation-delay:-1.7s}.answer-star.caught{animation:star-caught .5s both}.answer-star.missed{filter:grayscale(.7);animation:wrong-shake .32s ease}.star-squirrel{position:absolute;left:calc(50% - 34px);top:calc(50% - 40px);font-size:68px;filter:drop-shadow(0 7px 5px rgba(0,0,0,.22))}@keyframes star-float{50%{transform:translateY(-10px) rotate(2deg)}}@keyframes star-caught{60%{transform:scale(1.25) rotate(10deg)}to{transform:scale(0);opacity:0}}.knowledge-race{max-width:920px;margin:0 auto;padding:18px;position:relative;overflow:hidden;border-radius:27px;background:linear-gradient(#dff6ff,#f0ffec);border:2px solid #c4e4d9}.race-finish{position:absolute;right:20px;top:10px;bottom:10px;z-index:2;display:grid;place-items:center;font-size:40px}.knowledge-race button{width:100%;min-height:68px;padding:7px 80px 7px 8px;display:grid;grid-template-columns:48px minmax(120px,1fr) minmax(110px,190px);align-items:center;gap:10px;border:0;border-bottom:2px dashed rgba(79,122,102,.25);color:#354d42;background:transparent;cursor:pointer;text-align:left}.knowledge-race button:last-child{border-bottom:0}.race-runner{font-size:36px;transition:transform .45s cubic-bezier(.2,.8,.2,1)}.race-track{height:13px;overflow:hidden;border-radius:99px;background:#d5e5df}.race-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#68c88d,#ffd64f);transition:width .55s ease}.knowledge-race button strong{padding:8px 11px;border-radius:12px;background:#fff;box-shadow:0 4px 10px #36504314;text-align:center}.knowledge-race button.winner .race-runner{transform:translate(calc(100vw / 3))}.knowledge-race button.winner strong{background:#daf5e3}.knowledge-race button.try-again{animation:wrong-shake .32s ease}.student-loadout{min-height:235px;margin-bottom:20px;padding:20px clamp(20px,4vw,42px);position:relative;overflow:hidden;border:1px solid #ded8f2;border-radius:28px;display:grid;grid-template-columns:250px 1fr;align-items:center;gap:28px;background:linear-gradient(135deg,#fff8dc,#eef9ff 52%,#f7edff);box-shadow:0 16px 34px #43426917}.student-loadout:after{content:"✦  ·  ★  ·  ✧";position:absolute;right:25px;top:17px;color:#d1a93b;letter-spacing:9px;opacity:.7}.loadout-stage{width:230px;height:205px;position:relative;display:grid;place-items:center}.loadout-stage img{position:absolute;object-fit:contain;pointer-events:none}.loadout-aura{width:220px;height:220px;z-index:0;animation:loadout-spin 16s linear infinite}.loadout-wings{width:205px;height:180px;z-index:1}.loadout-character{width:152px;height:185px;z-index:2;filter:drop-shadow(0 12px 9px rgba(54,58,79,.2))}.loadout-default{z-index:2;font-size:112px;filter:drop-shadow(0 12px 7px rgba(54,58,79,.18))}.loadout-outfit{width:85px;height:95px;z-index:3;right:4px;bottom:0;filter:drop-shadow(0 7px 5px rgba(54,58,79,.16))}.loadout-effect{width:210px;height:190px;z-index:4;opacity:.75;animation:loadout-spark 2s ease-in-out infinite}.loadout-copy{position:relative;z-index:2}.loadout-copy h2{margin:0 0 7px;font-size:30px}.loadout-copy p{margin:0 0 17px;color:var(--muted)}.loadout-copy>div:last-child{display:flex;gap:9px}.loadout-name{width:min(350px,100%);height:105px;position:relative;display:grid;place-items:center}.loadout-name img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.loadout-name strong{z-index:1;max-width:65%;padding-top:3px;overflow:hidden;color:#684d4f;font-size:22px;text-overflow:ellipsis;white-space:nowrap}.loadout-name+p{margin-top:-5px}.loadout-name.framed{margin-left:-9px}@keyframes loadout-spin{to{transform:rotate(360deg)}}@keyframes loadout-spark{50%{transform:scale(1.06) rotate(3deg);opacity:1}}.reward-balance{padding:12px 17px;border:1px solid #efd78d;border-radius:16px;color:#835b12;background:linear-gradient(145deg,#fff9df,#ffedaf);box-shadow:0 7px 18px #7c5b131a;white-space:nowrap}.reward-balance strong{font-size:20px}.mission-grid{display:grid;gap:14px}.mission-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px}.mission-card.claimed{opacity:.72}.mission-icon{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;color:#8b6516;background:#fff1b9}.mission-card h2{margin:0 0 4px;font-size:18px}.mission-card p{margin:0 0 10px;color:var(--muted);font-size:13px}.mission-progress{max-width:580px;height:9px;overflow:hidden;border-radius:99px;background:#e8ece8}.mission-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#55bd7b,#ffd24e)}.mission-card small{color:var(--muted);font-weight:800}.mission-reward{display:grid;justify-items:end;gap:8px}.mission-reward>strong{color:#8c651a}.mission-footer{margin-top:20px;display:flex;gap:10px}.shop-toolbar{margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:15px}.category-pills{display:flex;flex-wrap:wrap;gap:7px}.category-pills button{padding:8px 12px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:#fff;cursor:pointer;font-weight:800}.category-pills button.active{color:#fff;border-color:#e67b3f;background:#ee8649}.shop-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.shop-card{position:relative;overflow:hidden;display:flex;flex-direction:column}.shop-card:before{content:"";position:absolute;width:120px;height:120px;right:-45px;top:-55px;border-radius:50%;background:#fff2c8}.rarity-epic{border-color:#d8c3ff;background:linear-gradient(#fff,#fbf7ff)}.rarity-rare{border-color:#bfe3ee}.rarity-label{position:absolute;z-index:2;right:12px;top:11px;padding:4px 8px;border-radius:99px;color:#725d2a;background:#fff3b9;font-size:9px;font-weight:950;text-transform:uppercase}.shop-art{height:165px;display:grid;place-items:center;border-radius:20px;background:radial-gradient(circle,#fff 0 35%,#f2f8f2 75%)}.shop-art img{width:145px;height:145px;object-fit:contain;filter:drop-shadow(0 10px 8px rgba(45,63,53,.16))}.shop-card .pill{align-self:flex-start;margin-top:13px}.shop-card h2{margin:9px 0 5px;font-size:18px}.shop-card p{flex:1;margin:0 0 14px;color:var(--muted);font-size:13px;line-height:1.45}.shop-buy{display:flex;align-items:center;justify-content:space-between;gap:8px}.shop-buy>strong{color:#8d661a}.inventory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.inventory-card{display:grid;grid-template-columns:130px 1fr auto;align-items:center;gap:17px}.inventory-card.equipped{border-color:#80c899;background:#f6fff8;box-shadow:0 0 0 3px #58b77b17}.inventory-art{width:125px;height:125px;display:grid;place-items:center;border-radius:22px;background:#f3f6f1}.inventory-art img{width:112px;height:112px;object-fit:contain}.inventory-card h2{margin:8px 0 3px;font-size:18px}.inventory-card p{margin:0;color:var(--muted);font-size:12px}.inventory-note{color:#90702c;font-size:11px;font-weight:800}.admin-item{min-width:210px;display:flex;align-items:center;gap:10px}.admin-item img{width:48px;height:48px;object-fit:contain;border-radius:11px;background:#f4f4ef}.admin-item strong,.admin-item small{display:block}.admin-item small{color:var(--muted)}.price-input{width:95px}.position-input{width:70px}.switch-label{display:flex;align-items:center;gap:6px}.header-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:17px;color:#b26028;background:#fff0dd}.admin-chat-list{display:grid}.admin-chat-list>div{padding:13px 0;display:grid;grid-template-columns:40px 1fr auto;align-items:start;gap:11px;border-bottom:1px solid var(--line)}.admin-chat-list>div:last-child{border-bottom:0}.admin-chat-list strong,.admin-chat-list span{display:block}.admin-chat-list span{margin-top:2px;color:var(--muted);font-size:10px}.admin-chat-list p{margin:7px 0 0}.admin-chat-list img{width:72px;height:72px;margin-top:6px;object-fit:contain}.community-chat{margin-top:22px;padding:0;overflow:visible}.chat-heading{padding:20px 22px 13px;display:flex;justify-content:space-between;gap:20px}.chat-heading h2{margin:4px 0;display:flex;align-items:center;gap:9px;font-size:20px}.chat-heading p{margin:0;color:var(--muted);font-size:12px}.online-dot{color:#42a96b;font-size:11px;font-weight:900;white-space:nowrap}.chat-feed{height:330px;padding:8px 22px 20px;overflow:auto;background:linear-gradient(#fbfcf8,#f6fbf7);border-block:1px solid var(--line)}.chat-message{margin-top:13px;display:grid;grid-template-columns:36px minmax(0,1fr);gap:9px;align-items:start}.chat-avatar{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;color:#4c6d5b;background:#dff3e6;font-weight:950}.chat-meta{display:flex;align-items:center;gap:7px}.chat-meta strong{font-size:12px}.chat-meta span{color:var(--muted);font-size:9px}.chat-meta button{padding:2px;border:0;color:#b56c6c;background:transparent;cursor:pointer}.chat-message p{display:inline-block;max-width:min(560px,90%);margin:4px 0 0;padding:9px 12px;border-radius:5px 15px 15px;color:#3b4a42;background:#fff;box-shadow:0 3px 10px #34463c14;font-size:13px;line-height:1.45}.chat-sticker{width:92px;height:92px;display:block;object-fit:contain}.chat-empty{height:100%;display:grid;place-items:center;color:var(--muted)}.chat-composer{padding:13px 16px;display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center}.chat-composer input{min-width:0}.chat-picker-wrap{position:relative}.chat-picker{width:330px;padding:10px;position:absolute;z-index:20;left:0;bottom:49px;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 18px 45px #27362e2e}.reaction-row{display:flex;justify-content:space-between}.reaction-row button{padding:5px;border:0;background:transparent;font-size:23px;cursor:pointer}.sticker-row{margin-top:8px;padding-top:8px;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;border-top:1px solid var(--line)}.sticker-row button{padding:3px;border:2px solid transparent;border-radius:12px;background:#f5f8f4;cursor:pointer}.sticker-row button.active{border-color:#69bc86}.sticker-row img{width:58px;height:58px;object-fit:contain}.selected-sticker{padding:0 20px 10px 65px;color:var(--muted);font-size:10px}.selected-sticker button{border:0;color:#b65d3f;background:transparent;cursor:pointer;text-decoration:underline}.user-control-panel{margin-bottom:18px;border-color:#c7dfd0;background:linear-gradient(145deg,#fff,#f6fff8)}.control-heading{display:flex;align-items:flex-start;justify-content:space-between}.control-heading h2{margin:3px 0}.control-heading p{margin:0;color:var(--muted)}.control-grid{margin-top:18px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.control-grid form{padding:16px;display:grid;gap:9px;border:1px solid var(--line);border-radius:17px;background:#fff}.control-grid h3{margin:0;display:flex;align-items:center;gap:7px;font-size:15px}.control-grid h3 svg{width:18px}.control-grid p{margin:0;color:var(--muted);font-size:11px}.row-actions{display:flex;gap:6px}@media(max-width:900px){.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inventory-grid{grid-template-columns:1fr}.memory-board{grid-template-columns:repeat(2,1fr)}.control-grid{grid-template-columns:1fr}}@media(max-width:600px){.student-loadout{grid-template-columns:1fr;text-align:center}.loadout-stage{margin:auto}.loadout-copy>div:last-child{justify-content:center;flex-wrap:wrap}.loadout-name{margin-inline:auto!important}.mission-card{grid-template-columns:auto 1fr}.mission-reward{grid-column:1 / -1;grid-template-columns:1fr auto;align-items:center;justify-items:start}.shop-toolbar{align-items:flex-start;flex-direction:column}.shop-grid{grid-template-columns:1fr}.inventory-card{grid-template-columns:90px 1fr}.inventory-art{width:85px;height:85px}.inventory-art img{width:80px;height:80px}.inventory-card>.button,.inventory-note{grid-column:1 / -1}.memory-card{min-height:125px}.star-field{min-height:390px}.answer-star{width:135px;height:100px}.answer-star>span{font-size:126px}.star-1{left:1%;top:9%}.star-2{right:2%;top:25%}.star-3{left:3%;bottom:9%}.star-4{right:3%;bottom:2%}.knowledge-race button{padding-right:45px;grid-template-columns:40px 1fr}.knowledge-race button strong{grid-column:2}.race-finish{right:5px}.chat-picker{width:285px;left:-8px}.chat-composer .button{padding-inline:12px}.chat-composer .button svg{display:none}.chat-heading{align-items:flex-start}.online-dot{display:none}}
