:root{
  --bg:#07111f; --bg2:#0b1c2d; --panel:#102538; --panel2:#132d42;
  --card:#f8fbff; --ink:#132033; --muted:#64748b; --line:#dbe5ef;
  --accent:#13b8b0; --accent2:#5a7cff; --coral:#ff7d8d; --ice:#85dcff;
  --good:#067647; --bad:#b42318; --gold:#f5bd4f; --white:#ffffff;
  --shadow:0 18px 50px rgba(1,13,25,.20);
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:
  radial-gradient(circle at 15% 0%,rgba(19,184,176,.18),transparent 28%),
  radial-gradient(circle at 88% 9%,rgba(90,124,255,.20),transparent 25%),
  linear-gradient(160deg,var(--bg),var(--bg2) 60%,#0a2330);color:var(--ink);min-height:100vh}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.30;background-image:
  radial-gradient(circle at 12% 22%,#fff 0 1px,transparent 1.5px),
  radial-gradient(circle at 63% 18%,#fff 0 1px,transparent 1.5px),
  radial-gradient(circle at 83% 52%,#fff 0 1px,transparent 1.5px),
  radial-gradient(circle at 29% 72%,#fff 0 1px,transparent 1.5px);background-size:190px 190px,230px 230px,260px 260px,310px 310px}
button,input,select{font:inherit}.app{max-width:1460px;margin:0 auto;padding:30px 34px 54px;position:relative}
.top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;color:#fff}.brand-wrap{display:flex;align-items:center;gap:11px}.brand-mark{width:42px;height:42px;border:1px solid rgba(255,255,255,.16);border-radius:13px;background:linear-gradient(145deg,rgba(19,184,176,.25),rgba(90,124,255,.25));display:grid;place-items:center;box-shadow:inset 0 1px rgba(255,255,255,.12)}.brand{font-size:25px;font-weight:850;letter-spacing:-.025em}.sub-light{color:#a9bbca;font-size:13px;margin-top:2px}
.nav{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.nav button{border:1px solid rgba(255,255,255,.12);color:#d8e6ef;background:rgba(255,255,255,.055);border-radius:11px;padding:9px 12px;cursor:pointer}.nav button:hover{background:rgba(255,255,255,.10)}.nav button.active{background:#fff;color:#102235;border-color:#fff}.credit-chip{padding:9px 11px;border-radius:11px;background:rgba(245,189,79,.13);border:1px solid rgba(245,189,79,.30);color:#ffe0a0;font-weight:750;font-size:13px;white-space:nowrap}
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:22px}.card{background:rgba(248,251,255,.985);border:1px solid rgba(219,229,239,.9);border-radius:24px;padding:26px;box-shadow:var(--shadow)}.hero{grid-column:span 8}.side{grid-column:span 4}.full{grid-column:1/-1}.half{grid-column:span 6}.third{grid-column:span 4}
.hero-card{position:relative;overflow:hidden;background:linear-gradient(135deg,#fbfeff 0%,#eefcff 38%,#f4f1ff 100%);min-height:410px}.hero-card:after{content:"";position:absolute;width:310px;height:310px;border-radius:50%;right:-110px;bottom:-150px;background:radial-gradient(circle,rgba(19,184,176,.18),rgba(90,124,255,.05) 55%,transparent 70%)}.hero-copy{max-width:58%;position:relative;z-index:2;padding:12px 0 16px}.hero-mascot{position:absolute;right:18px;bottom:5px;width:42%;min-width:330px;display:flex;justify-content:center;z-index:1}
h1,h2,h3{letter-spacing:-.02em}.metric{font-size:36px;font-weight:850}.label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.09em;font-weight:800}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:#e7fbfa;color:#087b76;font-size:12px;font-weight:800;border:1px solid #beece9}.btn{background:linear-gradient(135deg,#0eaaa3,#159acb);color:#fff;border:none;border-radius:13px;padding:12px 16px;font-weight:800;cursor:pointer;box-shadow:0 7px 18px rgba(19,184,176,.19)}.btn:hover{filter:brightness(1.03)}.btn.secondary{background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:none}.btn.danger{background:#fff;color:var(--bad);border:1px solid #f3c7c3;box-shadow:none}.btn.gold{background:linear-gradient(135deg,#f4c35c,#e9a738);color:#4c3504;box-shadow:none}.btn:disabled{opacity:.5;cursor:not-allowed;filter:none}.btn.large{padding:14px 20px;font-size:16px}.progress{height:10px;background:#e7edf3;border-radius:999px;overflow:hidden}.progress>div{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:999px;transition:width .25s ease}.subjects{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}.subject{border:1px solid var(--line);border-radius:15px;padding:14px;background:rgba(255,255,255,.72)}.subject strong{display:block;margin-bottom:5px}.small{font-size:13px;color:var(--muted)}.tiny{font-size:12px;color:var(--muted)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{height:8px}
.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.stat-box{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fbfdff}.stat-box strong{font-size:20px;display:block}.streak{color:#9b6300;font-weight:800}.daily-meta{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0 20px}.meta-chip{font-size:13px;font-weight:750;color:#405166;border:1px solid #d9e4ee;background:rgba(255,255,255,.72);border-radius:999px;padding:7px 10px}
.question-wrap{max-width:1120px;margin:0 auto}.question-card{padding:34px 38px}.qtop{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:13px}.tag{font-size:12px;font-weight:800;color:#42536a;background:#eef3f7;padding:6px 9px;border-radius:999px}.qstatus{display:flex;align-items:center;gap:9px}.timer{font-variant-numeric:tabular-nums;font-weight:850;color:#22354a;background:#edf7f8;border:1px solid #cce8ea;padding:7px 10px;border-radius:10px;min-width:68px;text-align:center}.timer.warn{background:#fff5e6;border-color:#f2d39a;color:#8a5900}.timer.danger{background:#fff0ef;border-color:#f3c4c0;color:#a32920}.instruction{font-size:14px;color:#53657a;margin:17px 0 0;line-height:1.45}.question{font-size:30px;font-weight:800;line-height:1.42;margin:14px 0 24px;letter-spacing:-.015em}.visual{display:flex;justify-content:center;align-items:center;gap:20px;flex-wrap:wrap;margin:22px 0 30px;min-height:120px}.options{display:grid;grid-template-columns:1fr 1fr;gap:16px}.option{background:#fff;border:2px solid var(--line);border-radius:18px;padding:17px 18px;text-align:left;cursor:pointer;min-height:76px;display:flex;align-items:center;gap:14px;transition:.12s ease;font-size:16px}.option:hover{border-color:#9bc9cd;transform:translateY(-1px)}.option .key{width:27px;height:27px;border-radius:8px;background:#eef3f7;color:#526578;display:grid;place-items:center;font-size:12px;font-weight:850;flex:0 0 auto}.option.selected{border-color:var(--accent);background:#effcfb;box-shadow:0 0 0 3px rgba(19,184,176,.08)}.option.selected .key{background:var(--accent);color:#fff}.option.correct{border-color:#66c89b;background:#ecfdf3}.option.wrong{border-color:#f0a6a0;background:#fff2f1}.answer-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:15px;border-top:1px solid #e6edf3}.keyboard-hint{font-size:12px;color:#78889a}.explain{margin-top:16px;border-radius:15px;padding:15px;background:#f7fafc;border:1px solid var(--line);line-height:1.5}.feedback-good{color:var(--good)}.feedback-bad{color:var(--bad)}
.feedback-host{height:0;overflow:visible}.feedback-dock{position:fixed;left:max(18px,calc((100vw - 1180px)/2));bottom:18px;transform:none;width:min(920px,calc(100vw - 230px));z-index:1200;background:rgba(250,253,255,.985);border:1px solid #cfdde8;border-radius:20px;box-shadow:0 22px 60px rgba(2,20,36,.28);padding:16px 18px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;animation:dockIn .18s ease-out}.feedback-copy{min-width:0;max-height:165px;overflow:auto;padding-right:6px}.feedback-title{font-size:18px;font-weight:900;margin-bottom:5px}.feedback-copy p{margin:5px 0;color:#42586c;line-height:1.45}.feedback-key{margin-top:8px;padding:8px 10px;border-radius:11px;background:#f1f7fa;border:1px solid #dce7ee;font-size:13px;color:#42586c}.feedback-next{display:grid;gap:7px;justify-items:end;min-width:150px}.feedback-next .keyboard-hint{text-align:right}.feedback-dock.good{border-color:#8ed6b4;background:linear-gradient(135deg,#f2fff8,#fbfdff)}.feedback-dock.bad{border-color:#e8c2bd;background:linear-gradient(135deg,#fff8f7,#fbfdff)}
@keyframes dockIn{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
.help-actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:12px 0 2px}.clarity-toggle{border:none;background:none;padding:0;color:#7b5b15;font-size:13px;font-weight:800;cursor:pointer}.clarity-panel{margin-top:9px;padding:14px;background:#fff9e9;border:1px solid #efdca8;border-radius:13px;color:#4f4b3d;font-size:13px;line-height:1.5}.clarity-panel .row{margin-top:10px}.concept-link{border:none;background:none;color:#395fc9;padding:0;font-weight:800;cursor:pointer;font-size:13px}.clarity-note{font-size:12px;color:#7a6b46;margin-top:6px}.issue-toggle{border:none;background:none;padding:0;color:#9a3f46;font-size:13px;font-weight:800;cursor:pointer}.issue-panel{margin-top:9px;padding:13px;background:#fff2f2;border:1px solid #f0c5c8;border-radius:13px;color:#5d3236;font-size:13px;line-height:1.45}
.knowledge-hero{background:linear-gradient(135deg,#f7feff,#f2f0ff);overflow:hidden;position:relative}.knowledge-hero:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;right:-80px;top:-110px;background:radial-gradient(circle,rgba(19,184,176,.22),rgba(90,124,255,.06) 58%,transparent 70%)}.knowledge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.knowledge-card{border:1px solid var(--line);border-radius:17px;padding:16px;background:#fff;cursor:pointer;text-align:left;transition:.14s ease}.knowledge-card:hover{transform:translateY(-2px);border-color:#9fcfd4;box-shadow:0 9px 24px rgba(22,63,81,.08)}.knowledge-card .k-domain{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#71869a;font-weight:850}.knowledge-card h3{margin:7px 0 6px}.knowledge-card p{margin:0;color:#607387;font-size:13px;line-height:1.45}.knowledge-detail{max-width:900px;margin:0 auto}.big-idea{font-size:20px;line-height:1.55;color:#294356;padding:18px 20px;background:#eef9fa;border:1px solid #cde8ea;border-radius:17px;margin:15px 0}.knowledge-columns{display:grid;grid-template-columns:1fr 1fr;gap:15px}.learn-box{padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff}.learn-box h3{margin-top:0}.learn-box ol{padding-left:20px;line-height:1.6;color:#485e72}.mini-example{font-size:16px;line-height:1.55;background:#f8f5ff;border:1px solid #dfd8fa;border-radius:14px;padding:14px}.common-trap{background:#fff7e7;border:1px solid #eedba6;border-radius:14px;padding:14px;color:#654f19}
.fold-steps{display:flex;align-items:stretch;justify-content:center;gap:10px;flex-wrap:wrap}.fold-step{width:174px;background:#f7fafc;border:1px solid #d9e4ec;border-radius:15px;padding:10px;display:grid;place-items:center;gap:6px}.fold-step b{font-size:12px;color:#465d71}.fold-arrow{align-self:center;font-size:28px;color:#8294a6;font-weight:700}.fold-caption{font-size:12px;color:#617488;text-align:center}.nvr-safe-note{font-size:12px;color:#607386;text-align:center;margin-top:8px}
.helpbox{margin:12px 0 2px}.help-toggle{border:none;background:none;padding:0;color:#087d7a;font-size:13px;font-weight:800;cursor:pointer}.help-panel{margin-top:9px;padding:12px 14px;background:#f0f8fa;border:1px solid #cfe7e9;border-radius:13px;color:#44596c;font-size:13px;line-height:1.5}.hidden{display:none!important}
.skill-row{display:grid;grid-template-columns:170px 1fr 64px 92px;gap:10px;align-items:center;margin:10px 0}.bar{height:9px;background:#e9eff4;border-radius:99px;overflow:hidden}.bar span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2))}table{width:100%;border-collapse:collapse}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}th{color:var(--muted);font-weight:700}.setup{max-width:760px;margin:45px auto}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.setup input,.setup select{width:100%;padding:11px;border:1px solid var(--line);border-radius:10px;margin:6px 0 14px}.footer-note{font-size:12px;color:var(--muted);margin-top:16px}
.companion-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0 18px}.companion-choice{border:2px solid var(--line);border-radius:18px;padding:13px;background:#fff;cursor:pointer;text-align:center}.companion-choice.selected{border-color:var(--accent);background:#effcfb}.companion-stage{height:410px;border-radius:24px;display:grid;place-items:center;position:relative;overflow:hidden;background:linear-gradient(160deg,#dff8f5,#e9f5ff 50%,#eceaff)}.companion-stage.aurora{background:radial-gradient(circle at 20% 15%,rgba(101,248,214,.70),transparent 28%),radial-gradient(circle at 80% 18%,rgba(137,114,255,.60),transparent 32%),linear-gradient(170deg,#10253a,#173e53)}.companion-stage.observatory{background:radial-gradient(circle at 70% 25%,#f9d979 0 3px,transparent 4px),radial-gradient(circle at 25% 18%,#fff 0 1px,transparent 2px),linear-gradient(#0d1b35,#182b51)}.companion-stage.lagoon{background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.7),transparent 10%),linear-gradient(160deg,#c6f6ef,#d9f2ff 58%,#e8e5ff)}.companion-svg{filter:drop-shadow(0 18px 18px rgba(12,38,53,.17))}.shop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.shop-item{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff}.shop-item .price{font-size:13px;font-weight:850;color:#855b09}.shop-icon{height:74px;display:grid;place-items:center;font-size:34px;border-radius:12px;background:#f2f7fa;margin-bottom:10px}.owned{font-size:11px;font-weight:800;color:#087b76;background:#e8f9f7;border-radius:999px;padding:4px 7px;display:inline-block}
.session-intro{max-width:880px;margin:0 auto;text-align:center;padding:42px}.session-intro .companion-mini{margin:5px auto 12px;max-width:250px}.intro-points{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.intro-point{border:1px solid var(--line);background:#fbfdff;border-radius:14px;padding:12px}.intro-point strong{display:block;font-size:19px}.result-ring{width:130px;height:130px;border-radius:50%;margin:0 auto 18px;background:conic-gradient(var(--accent) var(--pct),#e7edf3 0);display:grid;place-items:center}.result-ring:after{content:"";position:absolute}.result-inner{width:98px;height:98px;background:#fff;border-radius:50%;display:grid;place-items:center}.result-inner strong{font-size:28px}.reward{display:inline-flex;gap:7px;align-items:center;background:#fff4d5;border:1px solid #f1d38b;color:#7b5506;border-radius:999px;padding:8px 12px;font-weight:850}
.parent-settings{display:grid;grid-template-columns:1fr 1fr;gap:12px}.setting-box{border:1px solid var(--line);border-radius:14px;padding:14px}.setting-box select{width:100%;padding:9px;border:1px solid var(--line);border-radius:10px;margin-top:7px}

.anime-frame{position:relative;isolation:isolate}.anime-frame:before{content:"";position:absolute;inset:10% 7%;border-radius:50%;background:radial-gradient(circle,rgba(118,244,226,.34),rgba(114,118,255,.14) 48%,transparent 70%);filter:blur(18px);z-index:-1}.question-card{background:linear-gradient(180deg,#ffffff,#fbfdff)}.instruction{font-size:15px;max-width:900px}.help-panel{font-size:14px}.qtop{margin-bottom:17px}.companion-stage:after{content:"";position:absolute;inset:auto 8% 5% 8%;height:28px;border-radius:50%;background:rgba(6,22,37,.16);filter:blur(14px)}

/* V9 daily-experience layer */
.route-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}.route-node{position:relative;border:1px solid var(--line);border-radius:14px;padding:11px 12px;background:rgba(255,255,255,.78);min-height:62px}.route-node:before{content:"";display:block;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px rgba(19,184,176,.10);margin-bottom:8px}.route-node span{display:block;font-size:11px;color:#74879a;text-transform:uppercase;letter-spacing:.07em;font-weight:850}.route-node strong{display:block;margin-top:2px;font-size:14px}.daily-done{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:15px;background:#ebfaf6;border:1px solid #bfe9dd;color:#17665c;font-weight:800;margin:14px 0}.practice-card{transition:transform .16s ease,box-shadow .16s ease}.practice-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(27,58,86,.10)}
.session-stage{position:relative}.session-mascot{position:fixed;right:max(22px,calc((100vw - 1180px)/2 + 12px));bottom:22px;width:138px;height:150px;display:grid;place-items:end center;z-index:1250;pointer-events:none;filter:drop-shadow(0 12px 16px rgba(8,31,48,.15))}.session-mascot svg{width:118px;height:auto;overflow:visible}.reaction-bubble{position:absolute;right:96px;bottom:100px;min-width:124px;max-width:190px;padding:9px 11px;border-radius:14px 14px 3px 14px;background:#fff;border:1px solid var(--line);box-shadow:0 8px 22px rgba(13,37,58,.13);font-size:12px;font-weight:800;color:#31485f;opacity:0;transform:translateY(8px) scale(.96);transition:.2s}.reaction-bubble.show{opacity:1;transform:none}.reaction-stars{position:absolute;inset:8px 2px 20px 2px;opacity:0;transform:scale(.7);transition:.18s}.reaction-stars i{position:absolute;font-style:normal;color:#f4c54f;text-shadow:0 2px 8px rgba(245,189,79,.35);font-size:18px}.reaction-stars i:nth-child(1){left:5px;top:34px}.reaction-stars i:nth-child(2){right:3px;top:10px;font-size:14px}.reaction-stars i:nth-child(3){right:20px;bottom:8px;font-size:12px}.session-mascot.reaction-cheer .reaction-stars,.session-mascot.reaction-hop .reaction-stars{opacity:1;transform:scale(1);animation:starsPulse .8s ease}.session-mascot .mascot-arm-left,.session-mascot .mascot-arm-right{transform-box:fill-box}.session-mascot .mascot-arm-left{transform-origin:90% 22%}.session-mascot .mascot-arm-right{transform-origin:10% 22%}.session-mascot.reaction-clap .mascot-arm-left{animation:clapLeft .62s ease-in-out 2}.session-mascot.reaction-clap .mascot-arm-right{animation:clapRight .62s ease-in-out 2}.session-mascot.reaction-cheer .mascot-arm-left{animation:cheerLeft .78s cubic-bezier(.2,.8,.25,1)}.session-mascot.reaction-cheer .mascot-arm-right{animation:cheerRight .78s cubic-bezier(.2,.8,.25,1)}.session-mascot.reaction-cheer svg{animation:happyHop .78s cubic-bezier(.2,.8,.25,1)}.session-mascot.reaction-hop svg{animation:happyHop .68s cubic-bezier(.2,.8,.25,1)}.session-mascot.reaction-wiggle svg{animation:happyWiggle .72s ease-in-out}.session-mascot.reaction-nod svg{animation:reactNod .55s ease}.session-mascot.reaction-soft svg{animation:softBreathe .7s ease}.session-mascot.reaction-clap svg{animation:softBreathe .7s ease}.companion-mini.companion-react svg{animation:happyHop .8s cubic-bezier(.2,.8,.25,1)}@keyframes clapLeft{0%,100%{transform:rotate(0) translate(0)}45%,55%{transform:rotate(-27deg) translate(7px,-3px)}}@keyframes clapRight{0%,100%{transform:rotate(0) translate(0)}45%,55%{transform:rotate(27deg) translate(-7px,-3px)}}@keyframes cheerLeft{0%,100%{transform:rotate(0)}42%{transform:rotate(-48deg) translate(3px,-7px)}}@keyframes cheerRight{0%,100%{transform:rotate(0)}42%{transform:rotate(48deg) translate(-3px,-7px)}}@keyframes happyHop{0%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(-16px) scale(1.035)}68%{transform:translateY(-4px) scale(1.015)}}@keyframes happyWiggle{0%,100%{transform:rotate(0)}20%{transform:rotate(-4deg)}45%{transform:rotate(4deg)}70%{transform:rotate(-2deg)}}@keyframes reactNod{0%,100%{transform:rotate(0)}35%{transform:rotate(-2.5deg)}70%{transform:rotate(2.5deg)}}@keyframes softBreathe{0%,100%{transform:scale(1)}48%{transform:scale(1.025)}}@keyframes starsPulse{0%{opacity:0;transform:scale(.55) rotate(-8deg)}35%{opacity:1;transform:scale(1.1) rotate(3deg)}100%{opacity:0;transform:scale(1.25) rotate(8deg)}}@media(max-width:780px){.feedback-dock{left:12px;bottom:10px;width:calc(100vw - 24px);grid-template-columns:1fr}.feedback-next{justify-items:start}.feedback-next .keyboard-hint{text-align:left}.session-mascot{right:8px;bottom:188px;width:92px;height:103px;z-index:1250}.session-mascot svg{width:78px}.reaction-bubble{right:64px;bottom:66px;max-width:145px}}
.route-progress{display:flex;align-items:center;gap:7px;margin:10px 0 18px}.route-dot{height:7px;flex:1;border-radius:999px;background:#e4ebf0;overflow:hidden}.route-dot.done{background:#9fe4d9}.route-dot.current{background:linear-gradient(90deg,#13b8b0,#6c7cff)}.phase-chip{font-size:11px;font-weight:850;color:#667b90;white-space:nowrap}.microtip{margin-top:10px;padding:10px 12px;border-radius:12px;background:#f5f9fc;border:1px solid #dfe8ef;color:#42586c;font-size:13px}.microtip b{color:#18364d}.feedback-shell{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start}.feedback-companion{width:90px;display:grid;place-items:center}.feedback-companion svg{width:82px;height:auto}.reward-breakdown{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:15px 0}.reward-line{padding:11px 8px;border:1px solid var(--line);background:#fbfdff;border-radius:12px;text-align:center}.reward-line strong{display:block;font-size:18px}.reward-line span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#74879a;font-weight:850}.loot-card{margin:18px auto 0;max-width:610px;padding:14px 16px;border:1px solid #ecd493;background:linear-gradient(135deg,#fff8df,#fffdf7);border-radius:16px;text-align:left}.loot-card strong{display:block;margin-bottom:3px}.collection-progress{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:#f4f8fb;border:1px solid var(--line);margin:12px 0}.collection-progress .progress{flex:1;margin:0}.session-intro.v9{max-width:930px}.session-intro.v9 .companion-mini{max-width:285px}.phase-legend{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;margin:12px 0}.phase-legend span{padding:5px 8px;border-radius:999px;background:#f1f6f9;color:#5d7286;font-size:11px;font-weight:800}.win-note{margin:14px 0;padding:12px 14px;border-radius:14px;background:#eef8ff;border:1px solid #cfe7f7;color:#315977}.world-callout{margin-top:12px;padding:11px 13px;border-radius:13px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);color:#d9e7ef}.world-callout b{color:#fff}
@media(max-width:900px){.route-strip{grid-template-columns:1fr 1fr}.session-mascot{display:none}.reward-breakdown{grid-template-columns:1fr 1fr}.feedback-shell{grid-template-columns:1fr}.feedback-companion{display:none}.knowledge-grid{grid-template-columns:1fr 1fr}.knowledge-columns{grid-template-columns:1fr}.feedback-dock{grid-template-columns:1fr;bottom:8px}.feedback-next{grid-template-columns:1fr auto;align-items:center;justify-items:stretch}.feedback-next .keyboard-hint{text-align:left}.fold-arrow{display:none}}
@media(max-width:850px){.hero,.side,.half,.third{grid-column:1/-1}.subjects{grid-template-columns:1fr 1fr}.options{grid-template-columns:1fr}.top{align-items:flex-start;flex-direction:column}.question{font-size:22px}.skill-row{grid-template-columns:120px 1fr 44px 76px}.hero-copy{max-width:100%}.hero-mascot{position:relative;width:100%;right:auto;bottom:auto;min-width:0;margin-top:10px}.hero-card{min-height:0}.shop-grid{grid-template-columns:1fr 1fr}.parent-settings{grid-template-columns:1fr}.setup-grid{grid-template-columns:1fr}.companion-choices{grid-template-columns:1fr 1fr}}

/* ===== V4 COMPANION / STORE ===== */
.companion-shell{display:grid;grid-template-columns:minmax(520px,1.2fr) minmax(330px,.8fr);gap:24px;align-items:stretch}
.companion-main,.companion-detail{min-height:580px}.companion-main{padding:0;overflow:hidden;background:#0b1c2d;border-color:rgba(255,255,255,.08)}
.companion-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:24px 26px;color:#fff;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,0))}
.companion-head .small{color:#a9bbca}.species-toggle{display:flex;gap:8px}.species-toggle button{border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:#dceaf2;padding:8px 12px;border-radius:11px;cursor:pointer;font-weight:750}.species-toggle button.active{background:#fff;color:#102235}
.companion-stage.v4{height:500px;border-radius:0;isolation:isolate;overflow:hidden;background:#dff8f5}.companion-stage.v4:before,.companion-stage.v4:after{content:"";position:absolute;inset:auto;pointer-events:none;z-index:0}.companion-stage.v4:before{width:520px;height:520px;border-radius:50%;left:50%;top:52%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(255,255,255,.78),rgba(255,255,255,.18) 44%,transparent 70%)}.companion-stage.v4:after{width:100%;height:38%;left:0;bottom:0;background:linear-gradient(180deg,transparent,rgba(7,24,39,.12))}
.companion-stage.v4.lagoon{background:radial-gradient(circle at 20% 16%,rgba(255,255,255,.72),transparent 12%),linear-gradient(145deg,#b9f2e9 0%,#dff6ff 52%,#e7ddff 100%)}
.companion-stage.v4.aurora{background:radial-gradient(circle at 18% 13%,rgba(82,255,213,.62),transparent 27%),radial-gradient(circle at 83% 14%,rgba(144,107,255,.55),transparent 31%),linear-gradient(165deg,#071727 0%,#11354b 58%,#173e53 100%)}
.companion-stage.v4.observatory{background:radial-gradient(circle at 77% 18%,rgba(255,219,105,.95) 0 3px,transparent 4px),radial-gradient(circle at 25% 14%,#fff 0 1px,transparent 2px),radial-gradient(circle at 45% 24%,#fff 0 1px,transparent 2px),linear-gradient(180deg,#071326,#152e50 72%,#1e4258)}
.companion-stage.v4.crystal{background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.82),transparent 13%),linear-gradient(145deg,#dbf8ff,#d6e8ff 48%,#e4d7ff)}
.companion-stage.v4.library{background:radial-gradient(circle at 50% 18%,rgba(255,213,133,.32),transparent 22%),linear-gradient(150deg,#2e2434,#3b2b3b 52%,#173442)}
.stage-floor{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);width:72%;height:45px;border-radius:50%;background:radial-gradient(ellipse,rgba(4,18,31,.28),rgba(4,18,31,.05) 62%,transparent 72%);filter:blur(2px);z-index:1}.stage-character{position:relative;z-index:2;transform:translateY(16px)}
.companion-svg.v4{filter:drop-shadow(0 22px 22px rgba(3,17,31,.28));overflow:visible}.companion-svg .blink{transform-origin:center;animation:mascotFloat 4.4s ease-in-out infinite}.companion-svg .spark{animation:sparkle 2.3s ease-in-out infinite;transform-origin:center}
@keyframes mascotFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes sparkle{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}
.companion-detail{display:flex;flex-direction:column}.detail-preview{height:180px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,#f3f8fb,#fff);display:grid;place-items:center;margin:12px 0 18px;overflow:hidden}.detail-preview svg{width:150px;height:165px}.rarity{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:10px;letter-spacing:.08em;font-weight:900;text-transform:uppercase}.rarity.common{background:#edf2f6;color:#5d6d7e}.rarity.rare{background:#e6f1ff;color:#3267a8}.rarity.epic{background:#f1e9ff;color:#6e42aa}.rarity.legendary{background:#fff2d2;color:#8e5e05}
.store-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.category-tabs{display:flex;gap:7px;flex-wrap:wrap}.category-tabs button{border:1px solid var(--line);background:#fff;color:#526578;padding:8px 11px;border-radius:999px;cursor:pointer;font-size:12px;font-weight:800}.category-tabs button.active{background:#102538;color:#fff;border-color:#102538}
.shop-grid.v4{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.shop-card{border:1px solid var(--line);border-radius:18px;padding:14px;background:#fff;cursor:pointer;transition:.15s ease;position:relative;min-height:180px}.shop-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(14,35,55,.08)}.shop-card.selected{border-color:#13b8b0;box-shadow:0 0 0 3px rgba(19,184,176,.09)}.shop-card.locked{opacity:.64}.shop-card .thumb{height:82px;border-radius:13px;background:linear-gradient(145deg,#eef7f8,#f4f0ff);display:grid;place-items:center;margin-bottom:11px;overflow:hidden}.shop-card .thumb svg{width:92px;height:92px}.shop-card h4{margin:0 0 4px;font-size:14px}.shop-card .meta{display:flex;justify-content:space-between;align-items:center;gap:7px}.shop-card .price{font-size:12px;font-weight:900;color:#875b07}.equipped-tag{position:absolute;right:9px;top:9px;background:#102538;color:#fff;border-radius:999px;padding:5px 7px;font-size:9px;font-weight:900;letter-spacing:.07em}.owned-tag{position:absolute;right:9px;top:9px;background:#e7fbfa;color:#087b76;border-radius:999px;padding:5px 7px;font-size:9px;font-weight:900;letter-spacing:.07em}
.loadout{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:auto}.loadout-slot{border:1px solid var(--line);border-radius:12px;padding:9px;background:#fbfdff}.loadout-slot span{display:block;font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.07em}.loadout-slot strong{display:block;font-size:12px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shop-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}.shop-actions .btn{flex:1}.unlock-note{font-size:12px;color:#7b5c21;background:#fff7e7;border:1px solid #f0dfba;border-radius:11px;padding:9px 10px;margin-top:10px}.world-art{margin-top:18px;border-radius:18px;overflow:hidden;position:relative;height:190px;background:#0e2030}.world-art img{width:100%;height:100%;object-fit:cover;object-position:center 38%;opacity:.88}.world-art:after{content:"Expedition artwork";position:absolute;left:13px;bottom:11px;background:rgba(7,17,31,.72);backdrop-filter:blur(6px);color:#fff;border:1px solid rgba(255,255,255,.13);padding:6px 9px;border-radius:999px;font-size:10px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}

.purpose{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.05em;border:1px solid #dbe5ef;background:#f6f9fb;color:#526578}.purpose.calibration{background:#f1edff;color:#6347a7;border-color:#d8cdfa}.purpose.recall{background:#fff7df;color:#805d08;border-color:#efd894}.purpose.consolidation{background:#edf9f2;color:#246b46;border-color:#c5e9d2}.purpose.stretch{background:#eaf5ff;color:#235f91;border-color:#c6e1f7}.purpose.core{background:#eef8f8;color:#1b6e6a;border-color:#c7e9e7}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}.summary-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;text-align:left}.summary-box strong{display:block;font-size:22px}.summary-box span{font-size:12px;color:var(--muted)}.focus-list{display:grid;gap:10px;margin:15px 0}.focus-item{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fbfdff}.calibration-banner{margin:14px 0;padding:12px 14px;border:1px solid #d8cdfa;border-radius:14px;background:#f5f1ff;color:#584389;font-size:13px}.adaptive-note{padding:14px 16px;border-radius:15px;background:#f0f8fa;border:1px solid #cfe7e9;color:#3f5968;line-height:1.5}.trend-up{color:#067647}.trend-down{color:#b42318}.trend-flat{color:#64748b}
@media(max-width:760px){.summary-grid{grid-template-columns:1fr 1fr}}

@media(max-width:1100px){.companion-shell{grid-template-columns:1fr}.shop-grid.v4{grid-template-columns:repeat(3,1fr)}.companion-main,.companion-detail{min-height:0}}@media(max-width:760px){.shop-grid.v4{grid-template-columns:repeat(2,1fr)}.loadout{grid-template-columns:repeat(2,1fr)}.companion-stage.v4{height:430px}}


.profile-shell{max-width:980px;margin:36px auto}.profile-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px}.profile-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-top:18px}.profile-card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:18px;text-align:left;cursor:pointer;transition:.15s ease;min-height:145px}.profile-card:hover{border-color:#89c7ca;transform:translateY(-2px);box-shadow:0 10px 26px rgba(7,17,31,.09)}.profile-card.test{background:linear-gradient(145deg,#fffaf0,#fff)}.profile-avatar{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:#eaf9f8;font-size:22px;margin-bottom:12px}.profile-card.test .profile-avatar{background:#fff2d8}.profile-type{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.06em;background:#e9f8f6;color:#087a75}.profile-type.test{background:#fff0cd;color:#7a5200}.profile-switch{border:1px solid rgba(255,255,255,.15)!important;background:rgba(255,255,255,.08)!important}.profile-switch:hover{background:rgba(255,255,255,.14)!important}.backend-ok{display:inline-flex;gap:7px;align-items:center;color:#347465;font-size:12px;font-weight:750}.backend-dot{width:8px;height:8px;border-radius:50%;background:#3cc991;box-shadow:0 0 0 3px rgba(60,201,145,.12)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-field label{display:block;font-size:12px;font-weight:800;color:#56697e;margin-bottom:6px}.form-field input,.form-field select{width:100%;padding:12px;border:1px solid var(--line);border-radius:11px;background:#fff}.save-indicator{font-size:11px;color:#89a0b3;min-width:58px;text-align:right}.save-indicator.saving{color:#f1c366}.save-indicator.error{color:#ff9b91}
@media(max-width:850px){.profile-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}}

/* v1.6 stable question workspace: fixed main card + reserved companion lane + fixed response zone */
.question-shell-v15{max-width:1320px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1120px) 170px;gap:18px;align-items:stretch;height:calc(100vh - 108px);min-height:700px;max-height:930px}
.question-card-v15{padding:0!important;min-width:0;height:100%;display:grid;grid-template-rows:minmax(0,1fr) 126px;overflow:hidden}
.question-scroll-v15{min-height:0;overflow:auto;padding:30px 38px 18px;scrollbar-gutter:stable}
.response-zone-v15{height:126px;border-top:1px solid #dfe8ef;background:linear-gradient(180deg,#fbfdff,#f5f9fc);padding:14px 22px 14px 38px;display:grid;align-items:center;overflow:hidden}
.response-zone-v15 .answer-bar{margin:0;padding:0;border:0;min-height:76px}
.feedback-host-v15{min-width:0;height:100%}
.feedback-inline-v15{height:100%;border:1px solid #cfdde8;border-radius:16px;padding:10px 12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;background:#fff;box-shadow:0 7px 20px rgba(2,20,36,.07);animation:inlineFeedbackIn .16s ease-out}
.feedback-inline-v15.good{border-color:#8ed6b4;background:linear-gradient(135deg,#f2fff8,#fbfdff)}
.feedback-inline-v15.bad{border-color:#e8c2bd;background:linear-gradient(135deg,#fff8f7,#fbfdff)}
.feedback-inline-v15 .feedback-copy{max-height:92px;overflow:auto;padding-right:6px}
.feedback-inline-v15 .feedback-title{font-size:16px;margin-bottom:3px}
.feedback-inline-v15 .feedback-copy p{font-size:13px;margin:3px 0;line-height:1.35}
.feedback-inline-v15 .feedback-key{font-size:12px;margin-top:5px;padding:5px 8px}
.feedback-inline-v15 .feedback-next{min-width:142px}
.companion-lane-v15{min-width:0;display:flex;align-items:flex-end;justify-content:center;padding:0 0 24px;position:relative;overflow:visible}
.companion-lane-v15 .session-mascot{position:relative!important;right:auto!important;bottom:auto!important;width:160px;height:190px;z-index:20;display:grid;place-items:end center}
.companion-lane-v15 .session-mascot svg{width:138px}
.companion-lane-v15 .reaction-bubble{right:92px;bottom:122px}
.question-card-v15 .visual{margin:18px 0 22px;min-height:104px}
.question-card-v15 .question{margin-bottom:18px}
.question-card-v15 .options{gap:14px}
.question-card-v15 .option{min-height:72px;padding:14px 16px}
@keyframes inlineFeedbackIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
@media(max-width:1180px){.question-shell-v15{grid-template-columns:minmax(0,1fr) 140px;gap:10px}.companion-lane-v15 .session-mascot{width:130px}.companion-lane-v15 .session-mascot svg{width:112px}.question-scroll-v15{padding-left:28px;padding-right:28px}.response-zone-v15{padding-left:28px}}
@media(max-width:900px){.question-shell-v15{display:block;height:auto;min-height:0;max-height:none}.question-card-v15{height:calc(100vh - 108px);min-height:650px}.companion-lane-v15{display:none}.question-scroll-v15{padding:24px 22px 14px}.response-zone-v15{padding:12px 18px}.feedback-inline-v15{grid-template-columns:1fr auto}.feedback-inline-v15 .feedback-copy{max-height:86px}}


/* v2.3 curriculum readiness/reporting */
.expectation-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.expectation-card{border:1px solid var(--line);border-radius:15px;padding:14px;background:#fbfdff}.expectation-card strong{display:block;font-size:24px}.expectation-card span{font-size:12px;color:var(--muted)}
.status-chip{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:850}.status-chip.below{background:#fff1ef;color:#a5372d}.status-chip.at{background:#eaf8f3;color:#15705f}.status-chip.above{background:#eef2ff;color:#425ac2}.status-chip.learning{background:#f3f5f7;color:#647587}.status-chip.future{background:#f7f8fb;color:#7d8792}
.objective-list{display:grid;gap:8px;margin-top:12px}.objective-row{display:grid;grid-template-columns:1.4fr 120px 100px auto;gap:10px;align-items:center;border:1px solid #e3eaf0;border-radius:12px;padding:10px 12px;background:#fff}.objective-row .obj-title{font-weight:800}.objective-row .obj-sub{font-size:11px;color:var(--muted);margin-top:2px}.coverage-bar{height:8px;background:#e8eef3;border-radius:999px;overflow:hidden}.coverage-bar span{display:block;height:100%;background:linear-gradient(90deg,#13b8b0,#5a7cff)}
.report-note{padding:12px 14px;border-radius:13px;background:#f2f7fb;border:1px solid #dae6ef;font-size:13px;color:#52697b}.weak-focus{background:linear-gradient(135deg,#f4fbff,#eef8f7);border:1px solid #cfe8e5}.weak-list{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.weak-pill{padding:6px 9px;border-radius:999px;background:#fff;border:1px solid #d6e4ea;font-size:12px;font-weight:750;color:#41576a}
@media(max-width:900px){.expectation-grid{grid-template-columns:repeat(2,1fr)}.objective-row{grid-template-columns:1fr auto}.objective-row .coverage-bar,.objective-row .obj-evidence{display:none}}
.recovery-card{border:2px solid #efc66d}.recovery-warning{padding:13px 15px;border-radius:13px;background:#fff6df;border:1px solid #edd49b;color:#6f530e;font-weight:700}.recovery-history{display:grid;gap:8px}

/* v3.2 progress, touch and accessibility */
.skip-link{position:fixed;left:12px;top:10px;transform:translateY(-220%);z-index:10000;background:#fff;color:#102235;padding:10px 14px;border-radius:10px;font-weight:800;box-shadow:var(--shadow)}.skip-link:focus{transform:none}
button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #85dcff;outline-offset:3px}
.progress-shortcut{width:100%;margin-top:12px}.progress-loading{margin-top:18px;padding:18px;border-radius:14px;background:#eef5f8;color:#526578}.progress-hero{display:flex;align-items:center;justify-content:space-between;gap:26px;background:linear-gradient(135deg,#f7feff,#f4f0ff)}.progress-kpis{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:10px;min-width:min(100%,560px)}.progress-kpis>div{padding:13px;border-radius:15px;background:#fff;border:1px solid var(--line);text-align:center}.progress-kpis strong{display:block;font-size:24px}.progress-kpis span{font-size:11px;color:var(--muted)}
.seven-day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:9px}.day-tile{min-width:0;border:1px solid var(--line);border-radius:15px;padding:11px 8px;background:#f8fbfd;text-align:center}.day-tile.active{background:#f0fbfa;border-color:#bce9e5}.day-tile.complete{background:linear-gradient(145deg,#fff8df,#edfcf7);border-color:#e7c97c}.day-name{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#66788b;font-weight:850}.day-orb{width:34px;height:34px;margin:8px auto;display:grid;place-items:center;border-radius:50%;background:#e8eef3;color:#7b8b9a;font-size:18px;font-weight:900}.day-tile.active .day-orb{background:#d9f5f2;color:#087b76}.day-tile.complete .day-orb{background:#f8cd66;color:#62450a}.day-tile strong{display:block;font-size:14px}.day-tile span{display:block;font-size:10px;color:var(--muted);margin-top:3px}
.achievement-head{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.achievement-head strong{font-size:24px}.achievement-head span{font-size:12px;color:var(--muted)}.achievement-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.achievement{display:grid;grid-template-columns:42px 1fr;gap:9px;align-items:start;border:1px solid var(--line);border-radius:15px;padding:12px;background:#fff}.achievement.locked{opacity:.48;filter:saturate(.4)}.achievement-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:#eff5f8;font-size:21px}.achievement.earned .achievement-icon{background:#fff4cf}.achievement strong{font-size:13px}.achievement p{font-size:11px;color:var(--muted);margin:4px 0 0;line-height:1.35}
.leaderboard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.leader-tabs{display:flex;gap:5px;padding:4px;border-radius:12px;background:#edf3f7}.leader-tabs button{border:none;background:transparent;padding:9px 12px;border-radius:9px;font-weight:800;color:#526578;cursor:pointer;min-height:44px}.leader-tabs button.active{background:#fff;color:#102235;box-shadow:0 2px 8px rgba(13,37,58,.08)}.leaderboard-list{display:grid;gap:7px;margin-top:15px}.leader-row{display:grid;grid-template-columns:54px minmax(0,1fr) 90px 110px;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fbfdff}.leader-row.you{border-color:#87d8d3;background:#f0fcfb}.leader-rank{font-weight:900}.leader-name{font-weight:800}.leader-name em{font-size:9px;font-style:normal;text-transform:uppercase;background:#d9f5f2;color:#087b76;border-radius:999px;padding:3px 6px;margin-left:5px}.leader-row>strong{text-align:right;font-size:17px}.leader-sub{text-align:right;font-size:11px;color:var(--muted)}.credits-earned{text-align:center;margin:10px auto 4px;color:#85600c;font-weight:800;font-size:13px}

@media(max-width:900px){.progress-hero{display:block}.progress-kpis{margin-top:18px;grid-template-columns:repeat(2,1fr)}.seven-day-grid{grid-template-columns:repeat(7,minmax(72px,1fr));overflow-x:auto;padding-bottom:6px}.achievement-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){
  .app{padding:14px 12px 34px}.card{padding:18px;border-radius:18px}.grid{gap:14px}.brand{font-size:21px}.top{gap:10px;margin-bottom:13px}.top>.brand-wrap{width:100%}.nav{width:100%;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;padding:2px 0 7px;scrollbar-width:thin}.nav button{min-height:44px;white-space:nowrap;padding:9px 12px}.credit-chip{min-height:44px;display:flex;align-items:center}.profile-switch{flex:0 0 auto}.subjects{grid-template-columns:1fr}.hero-copy{padding-top:0}.hero-card h1{font-size:30px!important}.hero-mascot{max-height:260px;overflow:hidden}.question-card{padding:18px 15px}.question{font-size:20px;margin-bottom:16px}.qtop{align-items:flex-start}.option{min-height:60px;padding:13px 12px}.question-card-v15{height:auto!important;min-height:0!important}.question-scroll-v15{padding:18px 14px 10px!important}.response-zone-v15{padding:10px 12px!important}.feedback-inline-v15{grid-template-columns:1fr!important}.feedback-inline-v15 .feedback-copy{max-height:none!important}.feedback-next{justify-items:stretch}.feedback-next .btn{min-height:48px}.shop-grid,.shop-grid.v4{grid-template-columns:1fr!important}.companion-stage.v4{height:350px!important}.leaderboard-head{display:block}.leader-tabs{margin-top:12px;width:100%}.leader-tabs button{flex:1}.leader-row{grid-template-columns:42px minmax(0,1fr) 72px}.leader-sub{display:none}.achievement-grid{grid-template-columns:1fr}.progress-kpis{grid-template-columns:repeat(2,1fr);min-width:0}.seven-day-grid{grid-template-columns:repeat(7,76px)}.summary-grid{grid-template-columns:1fr 1fr}.btn{min-height:44px}.category-tabs button,.species-toggle button{min-height:44px}}
/* Phone feedback grows with its explanation; a fixed desktop response row clips Next. */
@media(max-width:600px){
  .question-card-v15{display:flex;flex-direction:column;overflow:visible}
  .question-scroll-v15{overflow:visible;scrollbar-gutter:auto}
  .response-zone-v15{display:block;height:auto;min-height:0;overflow:visible}
  .response-zone-v15 .answer-bar{min-height:0}
  .response-zone-v15 .answer-bar>.btn{width:100%}
  .feedback-host-v15,.feedback-inline-v15{height:auto}
  .feedback-inline-v15{align-items:stretch;gap:12px}
  .feedback-inline-v15 .feedback-copy{overflow:visible;padding-right:0;overflow-wrap:anywhere}
  .question-card-v15 .feedback-next{position:sticky;bottom:max(8px,env(safe-area-inset-bottom));z-index:5;min-width:0;padding:8px;background:var(--sq-paper,#fff);border-radius:12px;box-shadow:0 -3px 12px rgba(2,20,36,.06)}
  .response-zone-v15 .keyboard-hint{display:none}
  .feedback-next .btn{width:100%;min-height:48px}
}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
.auth-shell{max-width:900px;margin:30px auto}.auth-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:24px}.auth-grid section{border:1px solid var(--line);border-radius:18px;padding:18px;background:#fbfdff}.auth-grid label{display:block;font-size:12px;font-weight:800;color:#526578;margin:12px 0 5px}.auth-grid input{width:100%;min-height:46px;border:1px solid #cfdbe5;border-radius:11px;padding:10px 12px;background:#fff;color:var(--ink)}.auth-grid .btn{width:100%;margin-top:16px}.auth-error{min-height:24px;margin-top:12px;color:var(--bad);font-weight:750;font-size:13px}
@media(max-width:650px){.auth-grid{grid-template-columns:1fr}.auth-shell{margin:0}}

@media(max-width:600px){.seven-day-grid{grid-template-columns:repeat(7,minmax(0,1fr));overflow:visible;gap:4px}.day-tile{padding:8px 2px;border-radius:11px}.day-name{font-size:9px}.day-orb{width:27px;height:27px;margin:6px auto;font-size:14px}.day-tile strong{font-size:11px}.day-tile span{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:clip}}
/* v3.2 accessibility/privacy-safe leaderboard refinements */
.skip-link{position:fixed!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;transform:none!important}
.skip-link:focus{width:auto!important;height:auto!important;padding:10px 14px!important;margin:0!important;overflow:visible!important;clip:auto!important;white-space:normal!important;left:12px!important;top:10px!important;background:#fff;color:#102235;border-radius:10px;box-shadow:var(--shadow)}
.leader-scope{display:flex;gap:6px;padding:4px;border-radius:12px;background:#eef4f8;align-self:flex-start}.leader-scope button{border:0;background:transparent;color:#52657a;font-weight:800;padding:9px 12px;border-radius:9px;cursor:pointer;min-height:44px}.leader-scope button.active{background:#fff;color:#132033;box-shadow:0 2px 8px rgba(20,50,72,.10)}
.community-settings{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr) auto;gap:12px;align-items:end;margin-top:14px}.community-settings label{font-size:12px;font-weight:800;color:#445a70}.community-settings input[type=text],.community-settings input:not([type]){width:100%;margin-top:6px}.community-toggle{display:flex;align-items:center;gap:9px;min-height:44px}.community-toggle input{width:20px;height:20px}
@media(max-width:700px){.community-settings{grid-template-columns:1fr}.leaderboard-head{align-items:stretch}.leader-scope{width:100%}.leader-scope button{flex:1}}

/* v3.3 family / multi-device */
.family-join-card{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:22px;align-items:center;margin:22px 0;padding:20px;border:1px solid #cfe2ec;border-radius:18px;background:linear-gradient(135deg,#f7fcff,#eef8f3)}
.family-join-card h3{margin:8px 0 5px}.join-code{display:inline-flex;align-items:baseline;gap:10px;margin:8px 0 10px;padding:9px 12px;border-radius:12px;background:#fff;border:1px solid #d4e4ec}.join-code strong{font-size:22px;letter-spacing:.09em}.join-code span{font-size:12px;color:#607586}.join-url{display:block;max-width:100%;overflow-wrap:anywhere;padding:9px 10px;border-radius:10px;background:#102537;color:#eaf8ff;margin-bottom:10px}.join-qr{width:180px;height:180px;justify-self:end;background:#fff;border-radius:14px;padding:8px;border:1px solid #d5e4ec}.family-code-entry,.pin-entry{display:flex;gap:10px;align-items:center;margin:22px 0 6px}.family-code-entry input,.pin-entry input{font-size:24px;letter-spacing:.12em;text-align:center;max-width:220px}.family-dashboard{margin-top:18px}.family-summary-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.family-summary-row>div,.family-profile-progress{padding:13px;border-radius:13px;background:#f5f8fa;border:1px solid #dde7ec}.family-summary-row strong{display:block;font-size:21px}.family-summary-row span,.family-profile-progress span{display:block;font-size:12px;color:#637687;margin-top:3px}.family-profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-top:10px}.family-profile-progress.current{outline:2px solid #6baec9;background:#f1fbff}.family-profile-progress strong{display:block}.profile-avatar{position:relative}
@media(max-width:640px){.family-join-card{grid-template-columns:1fr}.join-qr{justify-self:center;width:170px;height:170px}.family-code-entry,.pin-entry{align-items:stretch;flex-direction:column}.family-code-entry input,.pin-entry input{max-width:none;width:100%}.family-summary-row{grid-template-columns:1fr 1fr}}
.family-week-mini{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:10px}.fw-day{height:8px;border-radius:99px;background:#dfe8ed}.fw-day.active{background:#8ed1df}.fw-day.daily{background:#30a9c3;box-shadow:0 0 0 1px rgba(48,169,195,.12)}

/* v3.4 evidence-based curriculum position */
.curriculum-position{overflow:hidden}
.curriculum-position-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-start}
.curriculum-confidence{min-width:190px;padding:14px 16px;border:1px solid #dce7ef;border-radius:16px;background:#f7fafc;text-align:right}
.curriculum-confidence strong{display:block;font-size:23px;color:#17364d;text-transform:capitalize}
.curriculum-confidence span,.curriculum-confidence small{display:block;color:#63798b}
.curriculum-confidence small{font-size:11px;margin-top:5px;line-height:1.35}
.curriculum-summary-points{margin:12px 0 16px;padding-left:22px;color:#334c5d}
.curriculum-subject{margin-top:20px;padding-top:18px;border-top:1px solid #e3ebf0}
.curriculum-subject-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}
.curriculum-subject-head h3{margin:5px 0 2px;font-size:18px;line-height:1.35;color:#213e53;max-width:760px}
.evidence-badge{white-space:nowrap;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:800;text-transform:capitalize;background:#eef3f6;color:#51697b}
.evidence-badge.high{background:#e5f7ed;color:#28744a}.evidence-badge.medium{background:#fff4d8;color:#86631d}.evidence-badge.low,.evidence-badge.none{background:#f0f3f5;color:#687985}
.curriculum-ladder{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:13px}
.curriculum-stage{border:1px solid #dce5eb;border-radius:14px;padding:11px;background:#fbfcfd;min-width:0}
.curriculum-stage.current{box-shadow:inset 0 0 0 2px #7088ff;border-color:#7088ff;background:#f7f8ff}
.curriculum-stage.secure,.curriculum-stage.strong{background:#f5fbf7}.curriculum-stage.developing{background:#fffaf0}
.curriculum-stage-top{display:flex;justify-content:space-between;gap:7px;align-items:center}.curriculum-stage-top strong{font-size:13px}.curriculum-stage-top span{font-size:10px;font-weight:800;color:#596d7c;text-align:right}
.curriculum-mini{display:flex;flex-direction:column;gap:2px;margin-top:7px;font-size:10px;color:#6b7e8c}
.curriculum-stage-bar{height:5px;border-radius:5px;background:#e4eaee;overflow:hidden;margin-top:8px}.curriculum-stage-bar i{display:block;height:100%;background:#6982ff;border-radius:5px}
.curriculum-method{margin-top:18px;border-top:1px solid #e3ebf0;padding-top:13px;color:#516777}.curriculum-method summary{cursor:pointer;font-weight:800;color:#2b485d}.curriculum-method p{font-size:12px;line-height:1.55}
@media(max-width:760px){.curriculum-position-head,.curriculum-subject-head{display:block}.curriculum-confidence{margin-top:12px;text-align:left;min-width:0}.curriculum-ladder{grid-template-columns:1fr 1fr}.evidence-badge{display:inline-block;margin-top:8px}}
@media(max-width:420px){.curriculum-ladder{grid-template-columns:1fr}.curriculum-stage{padding:10px}.curriculum-stage-top span{text-align:left}}
.curriculum-basis{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.curriculum-basis span{font-size:10px;font-weight:750;color:#506b7e;background:#eef4f7;border:1px solid #dce7ed;border-radius:999px;padding:5px 8px}
.curriculum-source-links a{color:#385fcf;font-weight:700}

/* v3.5 Spelling Lab */
.spelling-hero{overflow:hidden;position:relative;background:linear-gradient(135deg,#fff7dd,#eefaff 60%,#f8efff)}
.spelling-hero:after{content:'ABC';position:absolute;right:22px;top:10px;font-weight:900;font-size:78px;letter-spacing:-7px;color:rgba(54,111,145,.07);transform:rotate(-6deg);pointer-events:none}
.spelling-hero-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:18px 0;max-width:620px}
.spelling-hero-stats>div,.spelling-parent-grid .expectation-card{background:rgba(255,255,255,.78);border:1px solid #dce9ef;border-radius:15px;padding:12px}
.spelling-hero-stats strong{display:block;font-size:24px}.spelling-hero-stats span{font-size:12px;color:#607689}
.spelling-stage{max-width:760px;margin:24px auto;text-align:center;padding:28px}
.spelling-stage h1{margin:10px 0}.spelling-companion,.rescue-burst,.success-burst{font-size:62px;line-height:1;margin:14px 0}
.spell-context{font-size:18px;line-height:1.55;min-height:58px;background:#f5fafc;border:1px dashed #cbdce4;border-radius:14px;padding:14px;margin:16px 0}
.spell-audio-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:12px 0 22px}
.spell-input-label{display:block;font-weight:800;margin:16px 0 8px}.spell-input{display:block;width:min(100%,520px);margin:0 auto 14px;padding:16px 18px;font:700 26px/1.2 system-ui,sans-serif;letter-spacing:.5px;text-align:center;border:2px solid #b9cfda;border-radius:15px;background:white;color:#132f42}.spell-input:focus{outline:3px solid rgba(52,134,186,.18);border-color:#3486ba}
.spell-status{margin-top:14px}.rescue-card{background:linear-gradient(180deg,#fffdf3,#f4fbff)}.rescue-word{font-size:38px;font-weight:900;letter-spacing:1px;color:#163b51;margin:10px 0}.rescue-chunks{display:inline-block;background:#173b50;color:white;border-radius:14px;padding:9px 14px;font-weight:900;letter-spacing:2px;margin-bottom:14px}.memory-link{text-align:left;background:white;border:1px solid #d8e6ed;border-radius:16px;padding:16px;margin:14px auto;max-width:620px;font-size:17px;line-height:1.5}.success-card{background:linear-gradient(180deg,#f4fff7,#eefaff)}
.spell-evidence-row{display:grid;grid-template-columns:36px 1fr;grid-template-areas:'n title' 'n desc';gap:2px 9px;padding:9px 0;border-bottom:1px solid #edf1f3}.spell-evidence-row>span{grid-area:n;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#eaf6fb;font-weight:900}.spell-evidence-row>b{grid-area:title}.spell-evidence-row>small{grid-area:desc;color:#607689}
.spell-band{margin:14px 0}.spell-band .bar{margin-top:7px}.weekly-word-chips{display:flex;flex-wrap:wrap;gap:8px}.weekly-word-chips span{background:#eef7fb;border:1px solid #d6e6ee;border-radius:999px;padding:6px 10px;font-weight:750}.weekly-spellings{width:100%;box-sizing:border-box;border:1px solid #c9dae3;border-radius:13px;padding:12px;font:15px/1.45 system-ui,sans-serif;resize:vertical}.spelling-parent-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.spelling-parent-grid .expectation-card strong{font-size:25px}.spelling-practice-card{background:linear-gradient(145deg,#fff9e7,#effaff)}
@media(max-width:620px){.spelling-hero-stats,.spelling-parent-grid{grid-template-columns:1fr}.spelling-stage{margin:10px 0;padding:20px 14px}.spell-input{font-size:24px}.spelling-hero:after{font-size:52px}.rescue-word{font-size:34px}}

/* NVR spatial options: every diagram gets the same visual canvas.
   SVG viewBox preserves geometry, so tall/skinny nets no longer make an entire grid row enormous. */
.nvr-spatial-options .option>span:last-child{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:190px}
.nvr-spatial-options .option svg{width:180px!important;height:180px!important;max-width:100%;display:block}
@media(max-width:850px){.nvr-spatial-options .option>span:last-child{min-height:160px}.nvr-spatial-options .option svg{width:150px!important;height:150px!important}}

/* v3.5 lesson routing */
.lesson-choices{grid-template-columns:repeat(5,minmax(0,1fr))}
.mix-lesson-card{background:linear-gradient(145deg,#eefcf8,#eef6ff);border-color:#b9e3dc}
.mix-route-note{padding:11px 13px;border-radius:13px;margin:12px 0;background:#eef9f7;border:1px solid #cce9e4;color:#315f5b;font-size:13px;line-height:1.45}
@media(max-width:1100px){.lesson-choices{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.lesson-choices{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.lesson-choices{grid-template-columns:1fr}}

/* v3.5 learner-experience polish: active companion + sound control */
.sound-toggle{min-width:42px!important;padding:8px 10px!important;font-size:17px!important;line-height:1!important}
.lesson-choice-card{min-height:118px}
.companion-svg .mascot-eye-shell{transform-box:fill-box;transform-origin:center;animation:mascotBlink 5.6s ease-in-out infinite}
.companion-svg .mascot-eye-shell-right{animation-delay:.04s}
.companion-svg .mascot-eye-look{transform:translate(var(--eye-x,0px),var(--eye-y,0px));transition:transform .08s linear}
.companion-svg .mascot-gill-left,.companion-svg .mascot-gill-right{transform-box:fill-box;animation:gillWiggle 2.8s ease-in-out infinite}
.companion-svg .mascot-gill-left{transform-origin:90% 55%}.companion-svg .mascot-gill-right{transform-origin:10% 55%;animation-delay:.12s}
.hero-mascot .companion-svg,.companion-stage .stage-character>.companion-svg{animation:companionIdleHop 7.2s ease-in-out infinite}
@keyframes mascotBlink{0%,44%,48%,100%{transform:scaleY(1)}45.2%,46.5%{transform:scaleY(.08)}}
@keyframes gillWiggle{0%,100%{transform:rotate(0deg)}45%{transform:rotate(-2.6deg)}70%{transform:rotate(2deg)}}
@keyframes companionIdleHop{0%,68%,100%{transform:translateY(0)}73%{transform:translateY(-7px) rotate(-1deg)}78%{transform:translateY(0)}82%{transform:translateY(-2px) rotate(1deg)}86%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.companion-svg .blink,.companion-svg .spark,.companion-svg .mascot-eye-shell,.companion-svg .mascot-gill-left,.companion-svg .mascot-gill-right,.hero-mascot .companion-svg,.companion-stage .stage-character>.companion-svg{animation:none!important}.companion-svg .mascot-eye-look{transition:none}}

/* v4.3 learning-mode presentation seam. Production currently uses scale 1.
   Prototype mode CSS can opt into these data attributes without touching questions. */
.session-stage[data-learning-mode]{--sq-learning-font-scale:1}
.session-stage[data-learning-mode] .question-scroll-v15{font-size:calc(1em * var(--sq-learning-font-scale))}

/* v4.5.8 explicit learner/account actions */
.profile-switch small{display:block;font-size:9px;line-height:1.1;opacity:.72;font-weight:750}.account-action{border:1px solid rgba(255,255,255,.32);background:rgba(255,255,255,.08);color:inherit;border-radius:10px;padding:7px 9px;font:800 11px system-ui;cursor:pointer}.account-action:hover{background:rgba(255,255,255,.16)}
/* A failed save keeps its recovery controls above the current activity. */
.progress-save-notice{margin:16px auto;padding:18px;max-width:1100px;border:2px solid #a85c08;border-radius:16px;background:#fff4db;color:#402a14;box-sizing:border-box}
.progress-save-notice p{margin:8px 0 12px;line-height:1.5}
.progress-save-notice .row{display:flex;flex-wrap:wrap;gap:10px}
.progress-save-notice button{min-height:44px;white-space:normal}
/* Optional AI help stays beside the existing explanation, with no grading role. */
.ai-support{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:12px;text-align:left}.ai-support p{line-height:1.5;overflow-wrap:anywhere}.ai-support .btn{min-height:44px}
.ai-support[data-ai-availability="daily_limit"],.ai-support[data-ai-availability="minute_limit"],.ai-support[data-ai-availability="unavailable"],.ai-support[data-ai-availability="unknown"],.ai-support[data-ai-availability="provider_busy"]{background:#fff7dc}.ai-support button{margin-right:8px;margin-top:6px}

.spell-audio-status{min-height:1.5em;font-size:14px;color:#415766;margin:10px 0}.spelling-memory-rhyme{padding:16px;border:1px solid #d8b750;border-radius:14px;background:#fff8dc;margin:14px 0;line-height:1.5}.spelling-memory-rhyme p{white-space:pre-line;font-size:18px;margin:8px 0}.spelling-memory-rhyme small{display:block;color:#415766}
.spell-audio-status[aria-busy=true]::before,.ai-support[aria-busy=true]>strong::before{content:'';display:inline-block;width:13px;height:13px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;margin-right:9px;vertical-align:-2px;animation:duggle-wait .9s linear infinite}
@keyframes duggle-wait{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.spell-audio-status[aria-busy=true]::before,.ai-support[aria-busy=true]>strong::before{animation:none;border-style:dotted}}
