:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#10233f;background:#eef4f8;font-synthesis:none;text-rendering:optimizeLegibility;--navy: #071d36;--navy-2: #0e335d;--blue: #1c8fdf;--sky: #8fd8ff;--gold: #ffd15c;--paper: #ffffff;--soft: #edf7ff;--border: #cfdae5;--danger: #9b2c2c}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.app-shell{min-height:100vh;display:grid;grid-template-columns:250px 1fr}.sidebar{background:var(--navy);color:#fff;padding:24px 18px;display:flex;flex-direction:column;gap:30px}.brand{display:flex;align-items:center;gap:12px}.brand strong,.brand small{display:block;color:#fff}.brand small{opacity:.75}.brand-mark{width:44px;height:44px;border-radius:13px;display:inline-grid;place-items:center;background:var(--gold);color:var(--navy);font-weight:900}.brand-mark.large{width:64px;height:64px;font-size:1.35rem}.sidebar nav{display:grid;gap:7px}.sidebar nav button,.sign-out{border:0;border-radius:10px;padding:12px 14px;text-align:left;color:#fff;background:transparent}.sidebar nav button:hover{background:#ffffff1a}.sign-out{margin-top:auto;border:1px solid rgba(255,255,255,.25)}.main-content{padding:30px;overflow:hidden}.page-header{margin-bottom:24px}.page-header h1{margin:0;font-size:clamp(1.8rem,3vw,2.5rem)}.page-header p{margin:6px 0 0;color:#52647a}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.stat-card,.panel,.student-card{background:var(--paper);border:1px solid var(--border);border-radius:18px;box-shadow:0 8px 24px #071d360f}.stat-card{padding:20px;display:grid;gap:7px}.stat-card span,.stat-card small{color:#607187}.stat-card strong{font-size:2rem}.panel{padding:24px;margin-top:20px}.panel h2{margin-top:0}.action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.action-card{border:1px solid var(--border);border-radius:14px;background:var(--soft);padding:18px;text-align:left;display:grid;gap:7px;color:var(--navy)}.action-card span{color:#52647a}.toolbar{display:flex;gap:12px;margin-bottom:18px}.toolbar input{flex:1}input{width:100%;border:1px solid #aebdca;border-radius:10px;padding:11px 12px;background:#fff;color:var(--navy)}.primary{border:0;border-radius:10px;padding:12px 17px;background:var(--blue);color:#fff;font-weight:800}.danger{border:1px solid #efb8b8;border-radius:10px;padding:10px 14px;background:#fff1f1;color:var(--danger);font-weight:700}.text-button{border:0;background:transparent;color:var(--blue);padding:0;font-weight:700}.danger-zone{border:1px solid #efb8b8}.danger-zone h2{color:var(--danger)}.form-grid{display:grid;gap:14px;max-width:680px}.form-grid label,.login-card label,.file-picker,.backup-actions label{display:grid;gap:6px;font-weight:700}.student-grid{display:grid;gap:14px}.student-card{width:100%;padding:18px 20px;text-align:left;color:var(--navy);display:flex;align-items:center;justify-content:space-between}.student-card h2{margin:3px 0}.student-card p{margin:0;color:#617288}.student-card-status{display:grid;justify-items:end;gap:8px}.student-code{font-size:.8rem;letter-spacing:.1em;font-weight:900;color:var(--blue)}.stage-badge{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:.75rem;font-weight:900;letter-spacing:.04em}.stage-discover{background:#e9edf2;color:#36475b}.stage-develop{background:#e4f5ff;color:#075985}.stage-master{background:#fff2c6;color:#704d00}.stage-champion{background:#efe5ff;color:#5c278a}.profile-hero{display:flex;justify-content:space-between;align-items:center}.profile-hero h2{font-size:2rem;margin:4px 0}.profile-hero>div:last-child{display:grid;gap:12px;justify-items:end}.inline-form{display:flex;align-items:center;gap:8px}.inline-form input{margin:0}.world-tree-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.skill-card{border:1px solid var(--border);border-radius:14px;padding:16px}.skill-card header{display:flex;justify-content:space-between;gap:14px}.skill-card h3{margin:4px 0}.skill-card small{color:var(--blue);font-weight:900}.skill-card dl{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:0}.skill-card dl div{background:var(--soft);border-radius:9px;padding:9px}.skill-card dt{font-size:.75rem;color:#607187}.skill-card dd{margin:3px 0 0;font-weight:800;text-transform:capitalize}.evidence-list,.review-list{display:grid;gap:10px}.evidence-list article,.review-list article{border:1px solid var(--border);border-radius:12px;padding:14px}.evidence-list article>div,.review-list article{display:flex;flex-wrap:wrap;gap:9px;justify-content:space-between}.evidence-list p,.review-list p{flex-basis:100%;margin:5px 0}.evidence-list span,.review-list span{color:var(--blue);text-transform:capitalize}.backup-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:end}.file-picker{padding:12px;border:1px dashed #8ba2b8;border-radius:12px;background:var(--soft)}.warning-box{margin-top:20px;padding:14px;border-radius:12px;background:#fff6db;color:#624600}.question-review-summary{display:grid;gap:10px}.question-review-summary p{margin:0;color:#52647a}.question-review-filters{flex-direction:column;align-items:flex-start;gap:10px}.question-review-list{display:grid;gap:14px;margin-top:18px}.question-review-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:10px}.question-review-card header small{color:var(--blue);font-weight:800;display:flex;align-items:center;gap:6px}.question-review-card header h3{margin:3px 0 0}.question-review-card button.primary,.question-review-card button.danger{flex-shrink:0}.question-preview-prompt{font-weight:700;margin:0 0 8px}.question-preview-statement{margin:0;color:#445267}.question-preview-options{margin:0;padding-left:20px;display:grid;gap:4px;color:#52647a}.question-preview-options li.correct{color:#176b3a;font-weight:700}.login-page,.loading-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,var(--navy),var(--navy-2))}.login-card{width:min(440px,100%);padding:32px;border-radius:20px;background:#fff;display:grid;gap:16px}.login-card h1{margin:0;color:var(--navy)}.login-card p{margin:0;color:#5c6f84}.error{color:#a61b1b;font-weight:700}.success{color:#176b3a;font-weight:700}.empty-state{padding:30px;text-align:center;color:#607187}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:static}.sidebar nav{grid-template-columns:repeat(2,1fr)}.sign-out{margin-top:0}.stat-grid,.action-grid,.world-tree-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.main-content{padding:18px}.stat-grid,.action-grid,.world-tree-grid{grid-template-columns:1fr}.student-card,.profile-hero{align-items:flex-start;flex-direction:column;gap:14px}.student-card-status,.profile-hero>div:last-child{justify-items:start}.sidebar nav{grid-template-columns:1fr}}.hero-builder{min-height:100vh;padding:24px;display:grid;place-items:center;background:linear-gradient(135deg,var(--navy),var(--navy-2))}.hero-builder-card{width:min(920px,100%);background:#fff;border-radius:22px;padding:28px;display:grid;gap:20px}.hero-builder-header{display:flex;align-items:center;gap:16px}.hero-builder-header h1{margin:0;color:var(--navy)}.hero-builder-header p{margin:4px 0 0;color:#5c6f84}.hero-builder-body{display:grid;grid-template-columns:220px 1fr;gap:26px}.hero-preview{background:var(--soft);border:1px solid var(--border);border-radius:18px;display:grid;place-items:center;padding:20px}.hero-controls{display:grid;gap:16px}.hero-controls fieldset{border:0;padding:0;margin:0;display:grid;gap:8px}.hero-controls legend{font-weight:800;color:var(--navy);padding:0;margin-bottom:2px;font-size:.9rem}.swatch-row,.option-row{display:flex;flex-wrap:wrap;gap:10px}.swatch{width:34px;height:34px;border-radius:999px;border:3px solid white;box-shadow:0 0 0 1.5px var(--border);cursor:pointer;padding:0}.swatch.selected{box-shadow:0 0 0 3px var(--blue)}.option-chip{border:1px solid var(--border);border-radius:999px;padding:8px 16px;background:#fff;color:var(--navy);font-weight:700}.option-chip.selected{background:var(--navy);color:#fff;border-color:var(--navy)}.hero-builder-footer{display:flex;justify-content:space-between;align-items:center}.hero-builder-footer-actions{display:flex;gap:12px}.dungeon-page{min-height:100vh;background:#14101c;color:#f1ecff;display:grid;grid-template-rows:auto 1fr auto;padding-bottom:30px}.dungeon-topbar{display:flex;align-items:center;gap:14px;padding:16px 26px;background:#00000059}.dungeon-topbar strong{display:block}.dungeon-topbar small{opacity:.7}.dungeon-topbar-hp{margin-left:18px;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#a89bd6}.dungeon-topbar-hp span{color:#f1ecff;font-weight:800;letter-spacing:0;text-transform:none}.dungeon-topbar-actions{margin-left:auto;display:flex;gap:16px}.text-button.light{color:var(--gold)}.dungeon-scene{position:relative;margin:26px;border-radius:24px;overflow:hidden;padding:34px;display:flex;background:repeating-linear-gradient(0deg,#372c22 0 34px,#2e2419 34px 37px),repeating-linear-gradient(90deg,rgba(0,0,0,.28) 0 3px,transparent 3px 70px);box-shadow:inset 0 0 60px #000000b3;border:1px solid rgba(255,255,255,.06)}.dungeon-scene:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:radial-gradient(ellipse at 50% 40%,transparent 55%,rgba(0,0,0,.5) 100%)}.dungeon-torch{position:absolute;top:4px;width:10px;height:22px;border-radius:4px;background:linear-gradient(0deg,#6b4423,#6b4423 60%,transparent 60%);z-index:2}.dungeon-torch-left{left:6%}.dungeon-torch-right{right:6%}.dungeon-torch:before{content:"";position:absolute;left:50%;top:-14px;translate:-50% 0;width:18px;height:24px;border-radius:50%/60% 60% 40% 40%;background:radial-gradient(circle,#ffe9a8,#ffb545 55%,transparent 75%);filter:blur(1px);animation:torch-flicker 1.6s ease-in-out infinite alternate}@keyframes torch-flicker{0%{opacity:.85;scale:1}to{opacity:1;scale:1.08}}.dungeon-floor{position:relative;flex:1;min-height:360px;border-radius:12px;overflow:hidden;background:repeating-conic-gradient(#332a44 0% 25%,#2b2338 0% 50%) 0 0 / 44px 44px;box-shadow:inset 0 0 40px #0009,inset 0 0 0 3px #00000059}.dungeon-mover{position:absolute;transform:translate(-50%,-100%);transition:left .12s linear,top .12s linear}.dungeon-mover.clickable{border:none;background:none;padding:0;font:inherit;color:inherit;cursor:pointer}.dungeon-figure{position:relative;z-index:1;display:grid;justify-items:center;gap:8px;animation:figure-bob 3.2s ease-in-out infinite;image-rendering:pixelated}.dungeon-figure-monster{animation-delay:.4s}@keyframes figure-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.dungeon-figure-label{background:#00000073;padding:4px 12px;border-radius:999px;font-size:.8rem;font-weight:700;letter-spacing:.02em}.dungeon-flavor{text-align:center;font-size:1.05rem;color:#d9cfff;margin:0 26px}.dungeon-hint{text-align:center;font-size:.85rem;color:#7d7292;margin:6px 26px 0}.dungeon-minimap-wrap{position:absolute;top:44px;right:44px;z-index:3;background:#0a081299;border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px;display:grid;gap:5px;justify-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dungeon-minimap-label{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#a89bd6}.dungeon-minimap{display:grid;gap:3px}.minimap-cell{width:14px;height:14px;border-radius:3px;display:grid;place-items:center}.minimap-cell.known{background:#ffffff0f;border:1px solid rgba(255,255,255,.3)}.minimap-cell.visited{background:#6b5a3f;border:1px solid #8a734f}.minimap-cell.current{box-shadow:0 0 0 2px var(--gold)}.minimap-hero-dot{width:5px;height:5px;border-radius:999px;background:var(--gold)}@media(max-width:620px){.hero-builder-body{grid-template-columns:1fr}}.battle-screen{min-height:100vh;box-sizing:border-box;padding:22px;background:radial-gradient(ellipse at 50% 0%,rgba(255,175,90,.08),transparent 60%),linear-gradient(160deg,#1a1424,#0d0a14 60%);color:#e9e2f5;display:grid;grid-template-columns:300px 1fr 300px;gap:18px;align-items:start}.battle-panel-group{display:grid;gap:14px}.placement-battle-screen{grid-template-columns:300px 1fr;max-width:1000px;margin:0 auto}.rpg-panel{background:#0f0c18d1;border:1px solid rgba(212,175,90,.35);border-radius:10px;padding:14px 16px}.rpg-panel-title{font-family:Cinzel,serif;margin:0 0 8px;font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;color:#d9b45c}.rpg-panel-body{margin:4px 0;font-size:.88rem;color:#cdc3e0;line-height:1.5}.battle-hero-panel>div:first-child small{display:block;color:#9a8fbe;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em}.battle-hero-row{display:flex;gap:12px;align-items:flex-start;margin-top:8px}.battle-hero-stats{flex:1;display:grid;gap:4px}.battle-name-row{display:flex;justify-content:space-between;align-items:baseline;font-family:Cinzel,serif}.battle-name-row strong{font-size:1rem}.battle-name-row span{font-size:.75rem;color:#a89bd6}.battle-hero-stats label{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:#8b7fb0;margin-top:2px}.battle-gold{margin-top:4px;font-size:.85rem;color:#e8c96a;font-weight:700}.portrait-frame{width:64px;height:64px;border-radius:10px;flex-shrink:0;background:radial-gradient(circle at 30% 20%,#2c2440,#17111f);border:1px solid rgba(212,175,90,.4);display:grid;place-items:center;image-rendering:pixelated}.portrait-frame.small{width:48px;height:48px}.stat-bar-track{position:relative;height:14px;border-radius:999px;overflow:hidden;background:#ffffff14;border:1px solid rgba(255,255,255,.12)}.stat-bar-fill{position:absolute;inset:0;border-radius:999px}.stat-bar-value{position:relative;z-index:1;display:block;text-align:center;font-size:.62rem;font-weight:800;line-height:14px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}.checklist{list-style:none;margin:0;padding:0;display:grid;gap:6px}.checklist li{display:flex;align-items:center;gap:8px;font-size:.85rem;color:#cdc3e0}.checklist li span{color:#6b5f8a;width:14px}.checklist li.complete span{color:#5fd68a}.checklist li.complete{color:#a9e0bd}.checklist li em{margin-left:auto;font-style:normal;color:#8b7fb0;font-size:.75rem}.rewards-row{display:flex;flex-wrap:wrap;gap:10px;font-size:.85rem}.rewards-row span{background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:4px 10px}.battle-objective-banner{font-family:Cinzel,serif;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#f4d98a;background:#0f0c18d1;border:1px solid rgba(212,175,90,.4);border-radius:10px;padding:10px 16px;font-size:.95rem}.battle-enemy-row{display:flex;align-items:center;gap:12px}.battle-enemy-row .stat-bar-track{flex:1}.battle-stage{position:relative;border-radius:14px;overflow:hidden;min-height:220px;display:flex;align-items:center;justify-content:space-between;padding:0 60px;background:repeating-linear-gradient(0deg,#372c22 0 34px,#2e2419 34px 37px),repeating-linear-gradient(90deg,rgba(0,0,0,.28) 0 3px,transparent 3px 70px);box-shadow:inset 0 0 60px #000000b3;border:1px solid rgba(255,255,255,.08)}.battle-stage-figure{image-rendering:pixelated;animation:figure-bob 3.2s ease-in-out infinite}.battle-stage-monster{animation-delay:.4s}.battle-question-header{display:flex;align-items:center;justify-content:space-between}.question-tag{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:#1c2530;background:#d9b45c;padding:3px 9px;border-radius:6px}.battle-stimulus{margin:10px 0 0;padding:10px 14px;border-left:3px solid rgba(212,175,90,.5);background:#ffffff0a;color:#cdc3e0;font-style:italic;font-size:.92rem}.battle-question-prompt{font-size:1.05rem;margin:10px 0 14px;color:#f1ecff;line-height:1.4}.answer-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.answer-option{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid rgba(255,255,255,.14);background:#ffffff0a;color:#e9e2f5;border-radius:8px;padding:10px 12px;font-size:.9rem}.answer-option:hover:not(:disabled){background:#ffffff17}.answer-option.selected{border-color:#1c8fdf;background:#1c8fdf2e}.answer-option.correct{border-color:#5fd68a;background:#5fd68a2e}.answer-option.incorrect{border-color:#e0554a;background:#e0554a2e}.answer-option.disabled{opacity:.35;text-decoration:line-through}.answer-option:disabled{cursor:default}.answer-letter{width:22px;height:22px;border-radius:6px;background:#ffffff1a;display:grid;place-items:center;font-weight:800;font-size:.78rem;flex-shrink:0}.continue-button{margin-top:12px;width:100%}.tf-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tf-option{justify-content:center;text-align:center;font-weight:700}.ordering-pool{display:grid;gap:8px}.ordering-item{text-align:left}.ordering-item.picked .answer-letter{background:#1c8fdf59}.ordering-result{margin-top:12px;padding:10px 14px;border-radius:8px;background:#ffffff0a;font-size:.85rem;color:#cdc3e0}.ordering-result ol{margin:6px 0 0;padding-left:20px}.ordering-result li{margin-bottom:4px}.short-response-input{width:100%;border:1px solid rgba(255,255,255,.14);background:#ffffff0a;color:#e9e2f5;border-radius:8px;padding:10px 12px;font-size:.9rem;font-family:inherit;resize:vertical;margin-bottom:10px}.short-response-input:disabled{opacity:.7}.self-assess-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.battle-outcome{text-align:center}.battle-outcome.victory .rpg-panel-title{color:#5fd68a}.battle-outcome.defeat .rpg-panel-title{color:#e0554a}.battle-outcome .rpg-button{margin-top:10px}.battle-outcome .level-up{color:#f4d98a;font-weight:800}.placement-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(160deg,#1a1424,#0d0a14 60%);color:#e9e2f5}.placement-card{width:min(640px,100%);background:#0f0c18eb;border:1px solid rgba(212,175,90,.35);border-radius:20px;padding:32px;display:grid;gap:16px;text-align:center}.placement-card h1{margin:0;font-family:Cinzel,serif;color:#f4d98a}.placement-card>p{margin:0;color:#cdc3e0}.placement-progress{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:#a89bd6}.placement-card .battle-question-header,.placement-card .answer-grid,.placement-card .battle-question-prompt{text-align:left}.placement-results-portrait{display:grid;place-items:center;margin:6px 0}.placement-card .rpg-button{justify-self:center;padding:12px 28px}.battle-toolbar{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.rpg-button{border:1px solid rgba(212,175,90,.35);background:#0f0c18b3;color:#e9e2f5;border-radius:8px;padding:9px 14px;font-size:.82rem;font-weight:700}.rpg-button:hover:not(:disabled){background:#ffffff0f}.rpg-button:disabled{opacity:.4;cursor:default}.rpg-button.warn{border-color:#d9b45c80;color:#e8c96a}.rpg-button.danger{border-color:#c1352b80;color:#e59a94}.battle-log{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.82rem}.battle-log .log-hero{color:#8fe0a8}.battle-log .log-info{color:#8fd0ff}.battle-log .log-enemy{color:#e59a94}@media(max-width:980px){.battle-screen{grid-template-columns:1fr}}.button-row{display:flex;flex-wrap:wrap;gap:10px}.parent-report-panel small{font-weight:500;color:#617288}.parent-shell{min-height:100vh;background:var(--soft)}.parent-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px clamp(16px,4vw,48px);background:var(--navy);color:#fff}.parent-header>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.parent-header>div>span:last-child{color:var(--sky);font-weight:700}.parent-main{max-width:860px;margin:0 auto;padding:28px 16px 60px}.parent-main h1{color:var(--navy);margin-bottom:6px}.parent-intro{color:#4d6177;margin-top:0}.parent-report>header{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.parent-report>header h2{margin:0}.parent-report>header p{margin:2px 0 0;color:#617288}.tutor-message{margin:18px 0;padding:16px;border-left:4px solid var(--gold);background:#fffaf0;border-radius:8px}.tutor-message h3{margin:0 0 6px;font-size:1rem}.tutor-message p{margin:0 0 8px;white-space:pre-line}.parent-skills{list-style:none;padding:0;margin:0;display:grid;gap:10px}.parent-skills li{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fff}.parent-skills li>div:first-child{display:grid;gap:2px}.parent-skills li span{color:#617288;font-size:.92rem}.parent-stage{display:grid;justify-items:end;gap:2px;text-align:right}.parent-stage small{color:#617288}@media(max-width:600px){.parent-skills li{flex-direction:column;align-items:flex-start}.parent-stage{justify-items:start;text-align:left}}.parent-report-panel textarea{font:inherit;padding:10px;border:1px solid var(--border);border-radius:10px}.parent-header .text-button{white-space:nowrap}
