
:root{
  --forest-950:#0f2b22;--forest-900:#173f31;--forest-800:#245541;--forest-700:#356a53;
  --sage-600:#6f927b;--sage-400:#9db9a6;--sage-200:#d7e5da;--mint-100:#edf5ef;
  --lime-muted:#c8d7a8;--ivory:#f7f4ec;--paper:#fffdf8;--ink:#173029;--muted:#6b7973;
  --line:#dce5df;--danger:#a34646;--danger-bg:#fff2f1;--gold:#a8782c;--gold-bg:#fff8e8;
  --shadow:0 20px 60px rgba(23,63,49,.10);--radius:22px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:radial-gradient(circle at 15% 0%,#eef6ef 0,transparent 38%),linear-gradient(180deg,var(--ivory),#f3f6f2 42%,#eef3ef);color:var(--ink);font-family:"Be Vietnam Pro",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}
button,input,select{font:inherit}.top{min-height:72px;background:rgba(255,253,248,.90);backdrop-filter:blur(18px);border-bottom:1px solid rgba(23,63,49,.10);display:flex;align-items:center;justify-content:space-between;padding:10px 28px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px;font-weight:900;letter-spacing:.02em}.logo{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,var(--forest-900),var(--forest-700));color:#fff;box-shadow:0 10px 28px rgba(23,63,49,.22)}.brand-name{font-size:16px}.brand-name small{display:block;font-size:9px;letter-spacing:.17em;color:var(--sage-600);font-weight:800;margin-top:2px}.navwrap{display:flex;align-items:center;gap:14px}.nav{display:flex;gap:5px;background:#f2f5f1;padding:4px;border-radius:14px}.nav button,.ghost{border:0;background:transparent;color:var(--muted);padding:9px 11px;border-radius:10px;cursor:pointer;font-weight:650}.nav button:hover,.nav button.active{background:#fff;color:var(--forest-900);box-shadow:0 3px 12px rgba(23,63,49,.08)}.lang{display:flex;gap:3px;background:var(--forest-900);padding:4px;border-radius:13px}.lang button{border:0;background:transparent;color:#bdd0c4;padding:7px 9px;border-radius:9px;cursor:pointer;font-size:12px;font-weight:800}.lang button.active{background:#fff;color:var(--forest-900)}
main{max-width:1120px;margin:auto;padding:34px 20px 72px}.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;align-items:stretch}.card{background:rgba(255,253,248,.94);border:1px solid rgba(23,63,49,.10);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow)}.hero-card{min-height:430px;padding:44px;position:relative;overflow:hidden;background:linear-gradient(135deg,#fffdf8 0%,#f0f6ef 100%)}.hero-card:after{content:"";position:absolute;width:300px;height:300px;border-radius:50%;background:linear-gradient(145deg,rgba(111,146,123,.20),rgba(200,215,168,.28));right:-90px;top:-70px}.hero-mark{position:absolute;right:34px;bottom:26px;font-size:96px;font-weight:950;color:rgba(23,63,49,.055);letter-spacing:-.08em}.dark{background:linear-gradient(155deg,var(--forest-950),var(--forest-800));color:#fff;border:none}.dark .mut{color:#c7d7ce}.ey{font-size:11px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:var(--forest-700);margin-bottom:10px}.dark .ey{color:#bdd2c4}h1{font-family:"Be Vietnam Pro",ui-sans-serif,sans-serif;font-size:54px;line-height:1.02;letter-spacing:-.035em;margin:14px 0 18px;max-width:720px}h2{font-size:28px;letter-spacing:-.025em;margin:8px 0 12px}h3{font-size:17px}.mut{color:var(--muted);line-height:1.65}.subhead{font-size:18px;max-width:650px}.feature-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:24px}.mini{background:rgba(23,63,49,.06);color:var(--forest-800);padding:8px 10px;border-radius:999px;font-size:12px;font-weight:750;border:1px solid rgba(23,63,49,.06)}
.grid{display:grid;gap:14px}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.stat{position:relative;overflow:hidden}.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(var(--forest-700),var(--sage-400))}.stat b{font-size:30px;display:block;color:var(--forest-900);margin-top:5px}.stat span{font-size:12px;color:var(--muted)}.field{margin:11px 0}.field label{display:block;font-size:12px;font-weight:800;margin-bottom:6px}.field input,.field select{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:var(--paper);outline:none}.field input:focus,.field select:focus{border-color:var(--sage-600);box-shadow:0 0 0 3px rgba(111,146,123,.13)}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.btn{border:0;border-radius:12px;padding:12px 16px;font-weight:800;cursor:pointer;transition:.18s transform,.18s box-shadow,.18s background}.btn:hover{transform:translateY(-1px)}.primary{background:linear-gradient(135deg,var(--forest-900),var(--forest-700));color:#fff;box-shadow:0 10px 20px rgba(23,63,49,.18)}.primary:hover{box-shadow:0 14px 26px rgba(23,63,49,.23)}.secondary{background:#fff;border:1px solid var(--line);color:var(--forest-900)}.actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:17px}.pill{display:inline-flex;align-items:center;background:var(--mint-100);color:var(--forest-800);padding:6px 9px;border-radius:999px;font-size:11px;font-weight:850;border:1px solid var(--sage-200)}.alert{padding:12px 14px;border-radius:12px;margin:12px 0;background:var(--gold-bg);color:#6d511f;border:1px solid #ebddb7}.success{background:#e8f4ec;color:#176144;border-color:#c9e2d2}.error{background:var(--danger-bg);color:var(--danger);border-color:#efd0cd}
.test-shell{max-width:850px;margin:auto}.progress{height:8px;background:#e4ece6;border-radius:999px;overflow:hidden;margin:14px 0 20px}.progress > span{display:block;height:100%;background:linear-gradient(90deg,var(--forest-900),var(--sage-600),var(--lime-muted));border-radius:999px;transition:width .25s}.question-card{padding:32px}.qhead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.qmeta{display:flex;gap:7px;flex-wrap:wrap}.options{display:grid;gap:11px;margin-top:20px}.opt{padding:15px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;text-align:left;cursor:pointer;color:var(--ink);font-weight:650;transition:.15s}.opt:hover:not(:disabled){border-color:var(--sage-600);background:#f5faf6;transform:translateY(-1px)}.opt.ok{background:#e7f4ea!important;border-color:#82b693!important;color:#14533a}.opt.bad{background:#fff1f0!important;border-color:#d99b96!important;color:#8e3434}.feedback{margin-top:18px;border-radius:16px;padding:18px;background:linear-gradient(145deg,#eff7f1,#fffdf8);border:1px solid var(--sage-200);animation:fade .2s ease}.feedback.wrong{background:linear-gradient(145deg,#fff3f1,#fffdf8);border-color:#efd0cd}.feedback-title{font-weight:900;font-size:17px;margin-bottom:8px}.explain-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;margin-top:12px}.explain-item{font-size:13px}.explain-item b{display:block;color:var(--forest-800);font-size:11px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}.continue-row{display:flex;justify-content:flex-end;margin-top:15px}@keyframes fade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.priority{min-height:180px;position:relative}.priority .rank{position:absolute;right:18px;top:14px;font-family:"Be Vietnam Pro",ui-sans-serif,sans-serif;font-size:46px;color:rgba(23,63,49,.08);font-weight:900}.priority h3{margin-top:18px}.priority-meter{height:6px;background:#e5ece7;border-radius:99px;margin-top:18px;overflow:hidden}.priority-meter i{display:block;height:100%;background:linear-gradient(90deg,var(--forest-800),var(--sage-400));border-radius:99px}.section-title{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:30px 0 14px}.section-title h2{margin:0}.account-grid{display:grid;grid-template-columns:1fr .65fr;gap:14px}table{width:100%;border-collapse:collapse}th,td{font-size:12px;text-align:left;padding:11px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-weight:800}.footer-note{margin-top:28px;color:var(--muted);font-size:12px}
@media(max-width:800px){.hero,.g3,.g4,.formgrid,.account-grid,.explain-grid{grid-template-columns:1fr}.nav{display:none}.top{padding:10px 14px}.brand-name small{display:none}.hero-card{padding:30px;min-height:auto}h1{font-size:40px}.question-card{padding:22px}.lang button{padding:7px 8px}}

/* V3 learning architecture + gamification */
.learn-landing{max-width:1120px}
.learn-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:20px}
.learn-intro h1{font-size:42px;margin:6px 0 6px}
.breadcrumb{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-bottom:16px;color:var(--muted);font-size:12px;font-weight:750}
.breadcrumb button{border:0;background:transparent;color:var(--forest-700);padding:0;cursor:pointer;font-weight:850}
.topic-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.topic-card{position:relative;min-height:150px;text-align:left;cursor:pointer;overflow:hidden;transition:.2s transform,.2s box-shadow,.2s border;background:linear-gradient(145deg,rgba(255,253,248,.98),rgba(239,247,241,.92));border:1px solid rgba(23,63,49,.10)}
.topic-card:hover{transform:translateY(-3px);box-shadow:0 22px 48px rgba(23,63,49,.14);border-color:var(--sage-400)}
.topic-card .topic-icon{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:var(--forest-900);color:#fff;font-weight:900;font-size:20px;box-shadow:0 10px 24px rgba(23,63,49,.18)}
.topic-card h3{font-size:20px;margin:17px 0 6px}.topic-card p{font-size:13px;margin:0;max-width:85%}.topic-card .topic-no{position:absolute;right:18px;top:16px;font:900 42px "Be Vietnam Pro",ui-sans-serif,sans-serif;color:rgba(23,63,49,.07)}
.level-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.level-card,.skill-card{cursor:pointer;transition:.2s transform,.2s border,.2s box-shadow;text-align:left}
.level-card:disabled{cursor:not-allowed;opacity:.52;box-shadow:none}.level-card:disabled:hover{transform:none;border-color:var(--line)}
.level-card:hover,.skill-card:hover{transform:translateY(-3px);border-color:var(--sage-400);box-shadow:0 18px 40px rgba(23,63,49,.12)}
.level-code{font:900 30px "Be Vietnam Pro",ui-sans-serif,sans-serif;color:var(--forest-900);margin-bottom:9px}.level-desc{font-size:12px;color:var(--muted);line-height:1.45}
.skill-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.skill-card{min-height:185px;padding:20px}.skill-card.general{background:linear-gradient(145deg,var(--forest-950),var(--forest-700));color:#fff;border:none}.skill-card.general .mut{color:#d4e0d8}.skill-icon{font-size:24px;font-weight:900;color:var(--forest-700)}.skill-card.general .skill-icon{color:var(--lime-muted)}
.skill-card h3{margin:28px 0 7px;font-size:18px}.skill-card p{font-size:12px;line-height:1.55;margin:0}
.gamebar{position:sticky;top:83px;z-index:12;display:grid;grid-template-columns:1.3fr repeat(3,.7fr);gap:8px;margin:0 0 12px;background:rgba(247,244,236,.91);backdrop-filter:blur(14px);border:1px solid rgba(23,63,49,.08);border-radius:17px;padding:9px;box-shadow:0 9px 26px rgba(23,63,49,.08)}
.gamecell{padding:9px 12px;border-radius:12px;background:rgba(255,255,255,.7)}.gamecell span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:850}.gamecell b{display:block;font-size:18px;color:var(--forest-900);margin-top:3px}
.combo-hot{background:linear-gradient(145deg,#fff8e8,#fffdf8)}.combo-hot b{color:#8c6424}
.unlock-track{height:7px;background:#e3ebe5;border-radius:99px;overflow:hidden;margin-top:7px}.unlock-track i{display:block;height:100%;background:linear-gradient(90deg,var(--forest-900),var(--sage-600),var(--lime-muted));border-radius:99px;transition:width .3s}
.session-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.session-badges{display:flex;gap:6px;flex-wrap:wrap}
.task-kicker{font-size:11px;font-weight:900;letter-spacing:.13em;text-transform:uppercase;color:var(--forest-700);margin-bottom:8px}
.context-box{background:#f1f6f2;border-left:4px solid var(--sage-600);padding:14px 16px;border-radius:4px 14px 14px 4px;margin:13px 0;color:#355247;line-height:1.6;font-size:14px}
.audio-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:14px 0}.accent{display:flex;background:#e7eee9;border-radius:10px;padding:3px}.accent button{border:0;background:transparent;border-radius:8px;padding:6px 8px;font-size:11px;font-weight:850;color:var(--muted);cursor:pointer}.accent button.active{background:#fff;color:var(--forest-900);box-shadow:0 2px 8px rgba(23,63,49,.08)}.voice-status{font-size:11px;color:var(--muted)}
.reward-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:11px}.xp-chip{background:#173f31;color:#fff;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900}.combo-chip{background:#fff4d6;color:#7f5c20;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900}
.complete-card{text-align:center;padding:42px}.complete-mark{width:84px;height:84px;border-radius:27px;margin:0 auto 18px;display:grid;place-items:center;background:linear-gradient(145deg,var(--forest-900),var(--sage-600));color:#fff;font:900 30px "Be Vietnam Pro",ui-sans-serif,sans-serif;box-shadow:0 20px 42px rgba(23,63,49,.24)}.complete-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:24px 0}.complete-stats .card{box-shadow:none;padding:18px}.complete-stats b{font-size:28px;color:var(--forest-900)}
.sfx-toggle{border:1px solid rgba(23,63,49,.10);background:#fff;border-radius:11px;padding:8px 9px;color:var(--forest-800);font-size:11px;font-weight:900;cursor:pointer}
.reward-pop{position:fixed;left:50%;top:20%;transform:translate(-50%,0);z-index:100;color:#fff;background:var(--forest-900);border-radius:999px;padding:10px 16px;font-weight:900;box-shadow:0 18px 45px rgba(23,63,49,.25);animation:rewardPop .8s ease forwards;pointer-events:none}
.confetti{position:fixed;z-index:99;width:8px;height:8px;border-radius:2px;pointer-events:none;animation:confettiFly .9s ease-out forwards}
@keyframes rewardPop{0%{opacity:0;transform:translate(-50%,10px) scale(.85)}25%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-30px) scale(1.05)}}
@keyframes confettiFly{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(320deg)}}
@media(max-width:980px){.level-grid,.skill-grid{grid-template-columns:repeat(2,1fr)}.gamebar{grid-template-columns:1fr 1fr}.topic-grid{grid-template-columns:1fr}}
@media(max-width:620px){.level-grid,.skill-grid,.gamebar,.complete-stats{grid-template-columns:1fr}.learn-intro{align-items:flex-start;flex-direction:column}.learn-intro h1{font-size:34px}.gamebar{position:relative;top:auto}}

/* V11 vocabulary-only extensions on the V8 visual system */
button{font:inherit}.primary,.secondary,.danger,.text-btn{border-radius:12px;padding:12px 16px;font-weight:800;cursor:pointer;transition:.18s transform,.18s box-shadow,.18s background}.primary{border:0;background:linear-gradient(135deg,var(--forest-900),var(--forest-700));color:#fff;box-shadow:0 10px 20px rgba(23,63,49,.18)}.primary:hover:not(:disabled),.secondary:hover:not(:disabled){transform:translateY(-1px)}.secondary{background:#fff;border:1px solid var(--line);color:var(--forest-900)}.danger{background:var(--danger-bg);border:1px solid #efd0cd;color:var(--danger)}.text-btn{border:0;background:transparent;color:var(--forest-700);box-shadow:none}.primary:disabled,.secondary:disabled,.card:disabled{opacity:.48;cursor:not-allowed;transform:none!important;box-shadow:none!important}.wide{width:100%}
.lang-switch{display:flex;gap:3px;background:var(--forest-900);padding:4px;border-radius:13px}.lang-switch button{border:0;background:transparent;color:#bdd0c4;padding:7px 9px;border-radius:9px;cursor:pointer;font-size:12px;font-weight:800}.lang-switch button.active{background:#fff;color:var(--forest-900)}
.login-top{position:relative}.auth-card h2{font-size:28px}.auth-card input{width:100%;padding:12px 13px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.96);color:var(--ink);outline:none}.auth-card .secondary{background:#fff;color:var(--forest-900)}.auth-msg{min-height:22px;color:#dce9e0;font-size:12px;line-height:1.45}.onboard-wrap{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 15% 0%,#eef6ef 0,transparent 38%),linear-gradient(180deg,var(--ivory),#eef3ef)}.v8-onboard{max-width:760px;width:100%;padding:38px}.v8-onboard h1{font-size:44px}
.bottom-nav{display:none}.home-hero{margin-top:18px}.home-main{min-height:360px}.memory-card{padding:34px;display:flex;flex-direction:column;justify-content:center}.big-retention{font:900 72px Georgia,serif;line-height:1;color:#fff;margin:18px 0}.mini-dark{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;border:1px solid rgba(255,255,255,.15);border-radius:14px;background:rgba(255,255,255,.06);margin-top:10px}.mini-dark b{font-size:24px}.priority{text-align:left;width:100%;cursor:pointer}.priority:disabled{cursor:not-allowed}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.v11-lower{margin-top:20px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.metric{background:var(--paper);border:1px solid rgba(23,63,49,.10);border-radius:18px;padding:20px;box-shadow:var(--shadow)}.metric span{display:block;color:var(--muted);font-size:12px}.metric strong{display:block;color:var(--forest-900);font-size:30px;margin:6px 0}.metric small{color:var(--muted);font-size:11px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:18px}.page-head h1{font-size:42px;margin:6px 0}.eyebrow{font-size:11px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:var(--forest-700)}.hero-number{font:900 58px Georgia,serif;color:var(--forest-900);margin:15px 0}.bars{display:grid;gap:12px}.bar-row{display:grid;grid-template-columns:130px 1fr 44px;align-items:center;gap:10px;font-size:12px}.bar{height:8px;background:#e5ece7;border-radius:99px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--forest-900),var(--sage-600),var(--lime-muted));border-radius:99px}.big-label{font-size:28px!important;color:var(--forest-900)!important;font-weight:900}.flow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}.flow span{background:var(--mint-100);border:1px solid var(--sage-200);padding:8px 10px;border-radius:10px;font-size:12px}.flow b{color:var(--sage-600)}.learning-method{margin-top:18px}.level-card small{display:block;color:var(--muted);line-height:1.4;margin-top:10px}.diag-card{min-height:310px}.breadcrumb b{color:var(--forest-900)}
.toolbar{display:flex;gap:10px;margin-bottom:16px}.toolbar input{flex:1}.toolbar input,.toolbar select,textarea,.answer-input{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);outline:none}.toolbar input:focus,.toolbar select:focus,textarea:focus,.answer-input:focus{border-color:var(--sage-600);box-shadow:0 0 0 3px rgba(111,146,123,.13)}.word-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.word-tile{border:1px solid var(--line);border-radius:14px;background:#fff;padding:14px;text-align:left;cursor:pointer;display:grid;gap:8px}.word-tile:hover{border-color:var(--sage-400);background:#f5faf6}.word-tile b,.word-tile small{display:block}.word-tile small{color:var(--muted);margin-top:2px}.state-dot{justify-self:start;font-size:10px;text-transform:uppercase;background:var(--mint-100);color:var(--forest-800);border-radius:999px;padding:4px 7px}.state-dot.weak{background:var(--gold-bg);color:#8a5b17}.word-meaning{font-size:13px;color:#4b5f56}.state-list{display:grid;gap:10px;margin-top:16px}.state-list>div{display:grid;grid-template-columns:1fr 70px 70px;padding:10px;border-bottom:1px solid var(--line)}.outcome{padding:4px 7px;border-radius:99px;font-size:11px}.outcome.correct{background:#e8f4ec;color:#176144}.outcome.incorrect{background:#fff1f0;color:#8e3434}.outcome.skipped{background:#f1f3f1;color:#68756f}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{font-size:12px;text-align:left;padding:11px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-weight:800;background:#f7faf7}td small{display:block;color:var(--muted);margin-top:3px}
.session-shell{max-width:850px;margin:auto}.session-top{display:grid;grid-template-columns:120px 1fr 52px;align-items:center;gap:14px;margin-bottom:14px}.session-progress{display:flex;align-items:center;gap:10px}.session-progress>div{height:8px;background:#e4ece6;border-radius:999px;overflow:hidden;flex:1}.session-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--forest-900),var(--sage-600),var(--lime-muted))}.task-card{background:rgba(255,253,248,.96);border:1px solid rgba(23,63,49,.10);border-radius:24px;padding:30px;box-shadow:var(--shadow);min-height:470px}.task-meta{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px}.task-title{text-align:center;color:var(--forest-700);font-weight:850;font-size:13px;margin-top:18px}.word-hero{text-align:center;padding:34px 0 22px}.word-hero h1{font-size:50px;margin:0 0 10px}.ipa{color:#65756d}.audio-btn,.big-audio{border:1px solid var(--line);background:#fff;border-radius:11px;padding:7px 10px;cursor:pointer;color:var(--forest-900)}.big-audio{font-size:18px;padding:18px 22px}.reveal-block{background:linear-gradient(145deg,#eff7f1,#fffdf8);border:1px solid var(--sage-200);border-radius:16px;padding:18px}.meaning-main{font-size:20px;font-weight:850;color:var(--forest-900);margin-bottom:10px}.colloc-chips{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.colloc-chips span{background:var(--mint-100);color:var(--forest-800);border:1px solid var(--sage-200);border-radius:999px;padding:6px 9px;font-size:12px}.example{line-height:1.65;color:#3f574d}.example mark{background:#e4eebc;border-radius:4px;padding:0 2px}.learning-tip,.retrieval-prompt{color:var(--muted);line-height:1.6;text-align:center;margin:18px auto;max-width:620px}.prompt-box{font-size:22px;line-height:1.5;max-width:650px;margin:auto}.options{display:grid;gap:11px;margin-top:10px}.option{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:center;border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px;text-align:left;cursor:pointer;color:var(--ink);font-weight:650}.option:hover{border-color:var(--sage-600);background:#f5faf6;transform:translateY(-1px)}.option>span:first-child{width:28px;height:28px;border-radius:8px;background:var(--mint-100);display:grid;place-items:center;font-weight:900;color:var(--forest-800);flex:0 0 28px}.option-word,.option-text{width:auto!important;height:auto!important;min-width:0;background:transparent!important;display:grid!important;place-items:initial!important;border-radius:0!important;color:inherit!important}.option-word small,.option-word b,.option-meaning{width:auto!important;height:auto!important;background:transparent!important;display:block!important;place-items:initial!important;border-radius:0!important}.answer-input{font-size:20px;margin-bottom:12px}.skip-btn{display:block;margin:14px auto 0}.recall-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.feedback-overlay,.modal-overlay{position:fixed;inset:0;background:rgba(15,43,34,.48);display:grid;place-items:center;padding:20px;z-index:100}.feedback-card,.modal{background:var(--paper);border-radius:22px;box-shadow:0 24px 70px rgba(15,43,34,.25);max-width:700px;width:100%;padding:26px;max-height:90vh;overflow:auto}.feedback-head{color:var(--danger);font-weight:900;margin-bottom:10px}.repair-note{background:var(--gold-bg);padding:10px;border-radius:10px;color:#7d5b24}.modal{position:relative}.modal-close{position:absolute;right:16px;top:14px;border:0;background:transparent;font-size:30px;color:var(--muted);cursor:pointer}.word-detail-head{display:flex;justify-content:space-between;gap:15px;align-items:center;margin:16px 0}.word-detail-head h1{font-size:42px;margin:0 0 5px}.save-toggle{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 11px}.definition{font-size:14px}.family-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.family-list>div{border:1px solid var(--line);border-radius:12px;padding:11px}.family-list span{font-size:11px;color:var(--muted);margin-left:6px}.family-list p{margin:5px 0 0}.mini-memory{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.mini-memory div{display:flex;justify-content:space-between;background:#f1f6f2;padding:9px;border-radius:10px;font-size:12px}.toast{position:fixed;left:50%;bottom:32px;transform:translate(-50%,18px);background:var(--forest-950);color:#fff;padding:10px 14px;border-radius:10px;opacity:0;pointer-events:none;transition:.2s;z-index:200}.toast.show{opacity:1;transform:translate(-50%,0)}.session-done{max-width:760px;margin:30px auto;text-align:center}.done-icon{width:68px;height:68px;border-radius:22px;display:grid;place-items:center;background:linear-gradient(145deg,var(--forest-900),var(--sage-600));color:#fff;font-size:32px;margin:0 auto 12px}.compact-metrics{margin-top:20px}.danger-zone{border-color:#efd0cd}.loading,.fatal{text-align:center;padding:40px}.fatal{min-height:100vh;display:grid;place-items:center}.account-grid{align-items:start}
.teacher-login{min-height:100vh;display:grid;place-items:center;padding:24px}.teacher-login .card{max-width:480px;width:100%}.teacher-login input{width:100%;padding:12px;border:1px solid var(--line);border-radius:11px;margin:7px 0}.teacher-main{padding:28px;max-width:1200px;margin:auto}.teacher-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}.teacher-cols{align-items:start}.teacher-row{display:grid;grid-template-columns:1fr 80px 150px;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:13px}.teacher-row small{color:var(--muted)}.question-card{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}.reply{background:#edf7f3;padding:8px;border-radius:8px}.error-box{background:var(--danger-bg);border:1px solid #efd0cd;padding:16px;border-radius:12px}
@media(max-width:1020px){.navwrap{gap:7px}.nav button{padding:8px 7px;font-size:11px}.sfx-toggle{display:none}.g4,.metric-grid{grid-template-columns:repeat(2,1fr)}.word-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){body{padding-bottom:72px}.top{position:sticky}.nav{display:none}.ghost,.sfx-toggle{display:none}.lang-switch button{padding:7px 8px}.bottom-nav{display:grid;grid-template-columns:repeat(7,1fr);position:fixed;bottom:0;left:0;right:0;background:rgba(255,253,248,.97);border-top:1px solid rgba(23,63,49,.12);z-index:40;padding-bottom:max(6px,env(safe-area-inset-bottom));box-shadow:0 -10px 30px rgba(23,63,49,.08)}.bottom-btn{border:0;background:transparent;color:var(--muted);display:grid;place-items:center;gap:2px;padding:8px 2px;font-size:9px}.bottom-btn.active{color:var(--forest-900);font-weight:900}.ico{font-size:17px}.hero,.g3,.g4,.formgrid,.account-grid,.two-col,.metric-grid{grid-template-columns:1fr}.home-hero{grid-template-columns:1fr}.memory-card{min-height:260px}.topic-grid{grid-template-columns:1fr}.level-grid{grid-template-columns:repeat(2,1fr)}.word-grid{grid-template-columns:repeat(2,1fr)}.page-head{align-items:flex-start}.page-head h1{font-size:36px}.session-top{grid-template-columns:80px 1fr 42px}.task-card{padding:21px;min-height:420px}.word-hero h1{font-size:40px}.family-list,.mini-memory{grid-template-columns:1fr}.v11-lower{grid-template-columns:1fr}.teacher-cols{grid-template-columns:1fr}.toolbar{flex-direction:column}}
@media(max-width:500px){main{padding:22px 14px 84px}.top{padding:9px 12px}.brand-name{font-size:14px}.lang-switch{margin-left:auto}.hero-card{padding:25px}.hero-card h1{font-size:36px}.big-retention{font-size:58px}.level-grid,.word-grid,.metric-grid{grid-template-columns:1fr}.word-hero h1{font-size:35px}.task-card{padding:17px}.session-top{grid-template-columns:62px 1fr 38px}.session-progress span{display:none}.recall-actions{grid-template-columns:1fr}.bar-row{grid-template-columns:105px 1fr 38px}.v8-onboard{padding:24px}.v8-onboard h1{font-size:34px}}

.gamebar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 22px}.gamebar>div{background:linear-gradient(145deg,#173f31,#245744);color:#fff;border-radius:18px;padding:16px;box-shadow:var(--shadow)}.gamebar span,.gamebar small{display:block;color:rgba(255,255,255,.72);font-size:11px}.gamebar b{display:block;font-size:20px;margin:5px 0;line-height:1.2}.quest-card{margin:18px 0}.quest-row{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line)}.quest-row.done{color:var(--forest-800)}.quest-row.done span{font-weight:800}.achievement-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.achievement{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:14px;padding:12px;opacity:.55}.achievement.unlocked{opacity:1;background:var(--mint-100);border-color:var(--sage-200)}.achievement>span{font-size:24px}.achievement small{display:block;color:var(--muted);margin-top:3px}.gamification-details{margin:16px 0}.gamification-details .bar{margin:12px 0}.achievement-card{margin:18px 0}
@media(max-width:800px){.gamebar{grid-template-columns:repeat(2,minmax(0,1fr))}.achievement-grid{grid-template-columns:1fr}}
@media(max-width:500px){.gamebar{grid-template-columns:1fr 1fr}.gamebar>div{padding:13px}.gamebar b{font-size:16px}}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #e2b84a;outline-offset:3px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* V13 vocabulary reinforcement additions */
.voice-note{margin-top:8px;font-size:11px;color:var(--sage-600);font-weight:800;letter-spacing:.03em}
.task-support{display:flex;justify-content:flex-end;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.pronunciation-hero{padding-bottom:10px}.pron-card,.listening-mini,.sentence-task{max-width:650px;margin:0 auto;background:linear-gradient(145deg,#eff7f1,#fffdf8);border:1px solid var(--sage-200);border-radius:18px;padding:20px;text-align:center}.pron-card p,.listening-mini p,.sentence-task p{line-height:1.6;color:#435a50}.mic-btn{border:0;border-radius:16px;background:linear-gradient(135deg,var(--forest-900),var(--forest-700));color:#fff;font-weight:900;padding:16px 22px;cursor:pointer;box-shadow:0 12px 26px rgba(23,63,49,.2);min-width:190px}.mic-btn:disabled{opacity:.6;cursor:wait}.pron-status{min-height:42px;margin:14px 0 6px;display:grid;gap:4px;place-items:center}.pron-status b{font-size:18px}.pron-status small{color:var(--muted)}.pron-status .bad{color:var(--danger)}
.listen-icon{width:58px;height:58px;border-radius:18px;background:var(--forest-900);color:#fff;display:grid;place-items:center;font-size:25px;margin:0 auto 12px}.gap-prompt{margin:16px auto 0;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;font-size:17px;line-height:1.55;text-align:left}.reading-mini{max-width:680px;margin:26px auto 18px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;font-size:20px;line-height:1.7}.reading-mini mark{background:#e4eebc;border-radius:4px;padding:1px 3px}.sentence-task{text-align:left}.sentence-task .word-pill{display:inline-flex;background:var(--forest-900);color:#fff;border-radius:999px;padding:8px 12px;font-weight:900;margin-bottom:10px}.sentence-task textarea{margin:12px 0;min-height:120px;resize:vertical}
.question-history-card{margin-top:14px}.student-questions{display:grid;gap:10px}.student-questions article{border:1px solid var(--line);border-radius:14px;padding:13px;background:#fff}.student-questions article small{display:block;color:var(--muted);margin-top:2px}.student-questions article p{margin:8px 0;line-height:1.5}
.teacher-metrics{grid-template-columns:repeat(6,1fr)}.teacher-work{border:1px solid var(--line);border-radius:13px;padding:12px;margin-bottom:10px;background:#fff}.teacher-work small{display:block;color:var(--muted);margin-top:3px}.teacher-work p{line-height:1.55}.teacher-activity{display:grid;gap:6px}.teacher-activity>div{display:grid;grid-template-columns:1fr 110px 160px;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding:9px 0}.teacher-activity small{color:var(--muted)}.teacher-activity span small{display:block}.teacher-mini{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.teacher-mini span{background:var(--mint-100);border:1px solid var(--sage-200);padding:7px 10px;border-radius:999px;font-size:12px}.question-cue{display:block;background:#f5f8f5;border-radius:8px;padding:7px;margin-top:7px;color:var(--muted)}
.outcome.submitted_ungraded{background:#eef0fb;color:#4c5594}
@media(max-width:1100px){.teacher-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.teacher-metrics{grid-template-columns:repeat(2,1fr)}.teacher-activity>div{grid-template-columns:1fr 90px}.teacher-activity>div>small:last-child{grid-column:1/-1}.reading-mini{font-size:17px}.pron-card,.listening-mini,.sentence-task{padding:16px}}
@media(max-width:500px){.teacher-metrics{grid-template-columns:1fr}.mic-btn{width:100%}.gap-prompt{font-size:15px}}
.memory-detail{border:1px solid var(--line);border-radius:13px;padding:0 13px;margin:9px 0;background:#fff}.memory-detail summary{cursor:pointer;display:flex;justify-content:space-between;gap:12px;padding:12px 0}.memory-detail summary span{color:var(--muted);font-size:12px}.memory-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:0 0 13px}.memory-detail-grid>div{background:#f7faf7;border-radius:11px;padding:10px}.memory-detail-grid h4{margin:0 0 7px}.memory-detail-grid p{font-size:12px;line-height:1.5;margin:5px 0}
@media(max-width:800px){.memory-detail-grid{grid-template-columns:1fr}.memory-detail summary{display:grid}}


/* V13 American-English pronunciation assessment */
.pron-score{display:flex;align-items:center;justify-content:center;gap:14px;margin:10px auto 4px;padding:12px 16px;border-radius:14px;background:#f4f7f5;max-width:360px}.pron-score strong{font-size:34px;line-height:1}.pron-score.good{background:#e9f6ee;color:#1d6a3c}.pron-score.warn{background:#fff5dd;color:#8b6219}.pron-score.bad{background:#fff0ed;color:#a23e35}.pron-word{font-size:28px;font-weight:950;color:var(--forest-950);margin:8px 0}.phoneme-row{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin:10px 0}.phoneme{min-width:48px;border:1px solid var(--line);border-radius:11px;padding:7px 8px;display:grid;gap:2px;background:#fff}.phoneme b{font-size:18px}.phoneme small{font-size:10px}.phoneme.good,.teacher-ph.good,.good{color:#216a42;border-color:#aed8bd;background:#edf8f1}.phoneme.warn,.teacher-ph.warn,.warn{color:#8a611a;border-color:#ead092;background:#fff8e7}.phoneme.bad,.teacher-ph.bad,.bad{color:#a13d34;border-color:#e8b0aa;background:#fff1ef}.phoneme-note{margin-top:8px;padding:8px 10px;border-radius:10px;font-size:12px}.teacher-phonemes{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}.teacher-ph{padding:4px 6px;border-radius:8px;border:1px solid;font-size:11px}.play-recording{margin-top:6px}

/* V13.1.5: short listening with a real seekable audio bar */
.passage-player{display:block;width:min(100%,560px);margin:12px auto 8px;accent-color:var(--forest-800)}
.passage-fallback{display:block;margin:8px auto}.passage-fallback[hidden]{display:none}
.listening-feedback .feedback-head.good{color:#216a42}.listening-transcript{font-size:18px;line-height:1.7;background:#f4f8f5;border:1px solid var(--line);border-radius:14px;padding:15px}.listening-transcript mark{background:#e4eebc;border-radius:4px;padding:1px 3px}.listening-answer-review{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.listening-answer-review span{background:#fff;border:1px solid var(--line);border-radius:11px;padding:10px}

/* V13.1.5: clickable learner profiles */
.student-row{cursor:pointer;transition:.15s}.student-row:hover,.student-row:focus{background:#f0f7f2;outline:2px solid rgba(38,103,78,.16);outline-offset:-2px}.student-row td:first-child b{color:var(--forest-800);text-decoration:underline;text-decoration-color:rgba(38,103,78,.25);text-underline-offset:3px}
.teacher-student-head{align-items:flex-start}.teacher-student-head #back-dashboard{margin-bottom:12px}.teacher-profile-metrics{grid-template-columns:repeat(8,1fr);margin-bottom:16px}
.teacher-tabs{display:flex;gap:7px;overflow-x:auto;padding:6px 2px 12px;margin-bottom:8px;scrollbar-width:thin}.teacher-tab{white-space:nowrap;border:1px solid var(--line);background:#fff;border-radius:999px;padding:9px 13px;color:var(--forest-800);font-weight:800;cursor:pointer}.teacher-tab.active{background:var(--forest-900);color:#fff;border-color:var(--forest-900)}
.teacher-chip-list{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0 18px}.teacher-chip-list span{background:var(--mint-100);border:1px solid var(--sage-200);border-radius:999px;padding:6px 9px;font-size:12px}.teacher-note{border-bottom:1px solid var(--line);padding:8px 0}.teacher-note p{margin:4px 0 0;color:var(--muted)}.student-vocab-table td,.student-vocab-table th{font-size:12px}.student-vocab-table .weak-row{background:#fff8e7}.student-sentence{font-size:17px}.legacy-invalid{background:#fffaf0}
@media(max-width:1100px){.teacher-profile-metrics{grid-template-columns:repeat(4,1fr)}}
@media(max-width:800px){.teacher-profile-metrics{grid-template-columns:repeat(2,1fr)}.teacher-student-head{display:grid;gap:12px}.listening-answer-review{grid-template-columns:1fr}.teacher-tabs{margin-left:-4px;margin-right:-4px}}


/* IELTS UNLOCK VOCABULARY branding and access management */
.brand-logo{width:42px;height:42px;object-fit:contain;display:block;flex:0 0 auto}.teacher-login-logo{width:86px;height:86px;object-fit:contain;display:block;margin:0 auto 14px}.teacher-brand{align-items:flex-start}.teacher-brand .brand-logo{width:52px;height:52px}.access-logo{width:110px;height:110px;object-fit:contain;margin:0 auto 12px}.access-page{min-height:100vh;display:grid;place-items:center;padding:24px}.access-block-card{max-width:720px;width:100%;text-align:center}.access-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:22px 0}.access-facts>div{background:#f5f8f5;border:1px solid var(--line);border-radius:14px;padding:14px;text-align:left}.access-facts span{display:block;font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.05em}.access-facts b{display:block;margin-top:4px;overflow-wrap:anywhere}.access-summary,.student-access-strip,.access-manager-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.access-status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:900;letter-spacing:.04em;border:1px solid var(--line);white-space:nowrap}.access-status.active{background:#e9f6ee;color:#1d6a3c;border-color:#b9dec5}.access-status.permanent{background:#eef3ff;color:#405a96;border-color:#cad5ef}.access-status.expired{background:#fff5dd;color:#8b6219;border-color:#ecd9a3}.access-status.revoked{background:#fff0ed;color:#a23e35;border-color:#e8b0aa}.access-status.not_started{background:#f1f4f2;color:#51645b}.access-status.no_access{background:#f4f4f4;color:#6b6b6b}.add-student-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.inline-field{display:flex;gap:8px}.inline-field input{min-width:0}.teacher-add-title{margin-top:0}.student-access-strip{margin-bottom:14px}.student-access-strip strong{display:block;font-size:20px;margin-top:4px}.access-actions{display:grid;gap:20px;margin-top:20px}.access-form-row{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.access-form-row label{display:grid;gap:5px;font-size:12px;font-weight:800}.access-form-row input,.access-form-row select{padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:#fff}.access-history{display:grid;gap:8px}.access-history article{display:flex;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);padding:10px 0}.access-history article div{display:grid;gap:2px}.access-history small,.access-history p{color:var(--muted);font-size:12px;margin:0}.wide{width:100%}
@media(max-width:900px){.add-student-grid{grid-template-columns:1fr 1fr}.access-facts{grid-template-columns:1fr}.access-summary,.student-access-strip,.access-manager-head{align-items:flex-start}.access-history article{display:grid;gap:5px}}
@media(max-width:600px){.add-student-grid{grid-template-columns:1fr}.inline-field{display:grid}.brand-name{font-size:13px;line-height:1.2}.brand-logo{width:36px;height:36px}}

/* Assignments, classes and coverage */
.assignment-panel{margin-bottom:18px;border-left:5px solid var(--forest-700)}
.assignment-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.assignment-head h2,.assignment-head h3{margin:6px 0}
.assignment-list{display:grid;gap:10px;margin-top:14px}
.assignment-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px;border:1px solid var(--line);border-radius:16px;background:#fff}
.assignment-card h3{margin:7px 0 4px}.assignment-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.assignment-card.checkpoint{background:#fff9ec;border-color:#ead8a8}
.teacher-head-actions{margin-top:0}.manager-tabs{margin:14px 0 16px}.assignment-builder{margin-top:4px}
.assignment-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.checkbox-field{align-self:end}.checkbox-field label{display:flex;align-items:center;gap:8px}.checkbox-field input{width:auto}
.selected-students,.member-picker{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:14px 0}.selected-students label,.member-picker label{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:9px 10px;background:#fff;font-size:12px}.selected-students input,.member-picker input{width:auto}
.word-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:380px;overflow:auto;padding:3px}.word-pick{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:9px;background:#fff;cursor:pointer}.word-pick input{width:auto;margin-top:3px}.word-pick span{display:grid;gap:2px}.word-pick small{color:var(--muted);font-size:10px;line-height:1.4}
.preview-box{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.preview-box details{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0;background:#fff}.preview-box summary{cursor:pointer}.preview-words{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.preview-words>span{display:grid;gap:2px;padding:7px 9px;border-radius:10px;background:var(--mint-100);border:1px solid var(--sage-200);font-size:12px}.preview-words small{color:var(--muted);font-size:9px;max-width:180px}
.class-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:14px}.class-card{min-width:0}.auto-rule-list{display:grid;gap:9px}.auto-rule-list article{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.auto-rule-list small{display:block;color:var(--muted);margin-top:3px}
.level-card .pill{white-space:normal;line-height:1.4}
@media(max-width:1000px){.assignment-form-grid,.word-picker{grid-template-columns:repeat(2,1fr)}.class-grid{grid-template-columns:1fr}}
@media(max-width:700px){.assignment-card,.assignment-head{display:grid}.assignment-card button{width:100%}.assignment-form-grid,.word-picker,.selected-students,.member-picker{grid-template-columns:1fr}.auto-rule-list article{grid-template-columns:1fr auto}.auto-rule-list .secondary{grid-column:1/-1}.teacher-head-actions{width:100%}.teacher-head-actions button{flex:1}}
.word-picker-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0 12px}.word-picker-tools label{display:flex;align-items:center;gap:8px;font-weight:700}.word-picker-tools input{width:84px;margin:0}.picker-empty{border:1px dashed var(--line);border-radius:14px;padding:22px;background:#fff;text-align:center;color:var(--muted)}.word-pick{position:relative;align-items:center;padding-right:92px}.word-pick em.word-assign-state{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-style:normal;font-size:10px;font-weight:800;padding:5px 7px;border-radius:999px;white-space:nowrap}.word-assign-state.new{background:#eef7f1;color:#205c43}.word-assign-state.old{background:#f3f0e9;color:#786a54}.word-pick.assigned-before{opacity:.78}.word-pick.not-assigned{border-color:#cfe1d6}
@media(max-width:700px){.word-pick{padding-right:10px;display:grid;grid-template-columns:auto 1fr}.word-pick em.word-assign-state{position:static;transform:none;grid-column:2;justify-self:start;margin-top:4px}.word-picker-tools{align-items:stretch}.word-picker-tools label{width:100%}}

/* Teacher analytics drilldown + parent-facing progress reports */
.assignment-result-row,.assignment-student-row,.analytics-student-row{cursor:pointer;transition:.15s}.assignment-result-row:hover,.assignment-result-row:focus,.assignment-student-row:hover,.assignment-student-row:focus,.analytics-student-row:hover,.analytics-student-row:focus{background:#eef6f0;outline:2px solid rgba(53,106,83,.14);outline-offset:-2px}.assignment-detail-card{margin-top:16px;border-left:5px solid var(--forest-700)}.assignment-student-detail{margin-top:18px}.assignment-student-panel{background:#f7faf7;border:1px solid var(--line);border-radius:16px;padding:16px}.assignment-word-detail th,.assignment-word-detail td{vertical-align:top}.analytics-date{display:grid;gap:5px;font-size:12px;font-weight:800}.analytics-date input{padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#fff}.analytics-note{font-size:11px;margin:12px 0 0}
.report-controls{margin-bottom:18px}.report-print-shell{margin-top:18px;display:flex;justify-content:center}.progress-report{width:min(100%,940px);background:#fffdf8;border:1px solid #dfe7df;border-radius:28px;box-shadow:0 28px 80px rgba(15,43,34,.13);padding:34px;overflow:hidden;color:#173029;position:relative}.progress-report:before{content:"";position:absolute;right:-90px;top:-110px;width:280px;height:280px;border-radius:48% 52% 62% 38%;background:linear-gradient(135deg,rgba(200,215,168,.32),rgba(111,146,123,.12));pointer-events:none}.report-header{position:relative;display:flex;justify-content:space-between;align-items:center;gap:22px;padding-bottom:22px;border-bottom:1px solid #dce5df}.report-brand{display:flex;align-items:center;gap:15px}.report-brand img{width:70px;height:70px;object-fit:contain}.report-brand small{display:block;color:#356a53;font-size:10px;font-weight:900;letter-spacing:.15em}.report-brand h1{font-family:"Be Vietnam Pro",sans-serif;font-size:30px;margin:4px 0 2px;letter-spacing:-.025em}.report-brand p{margin:0;color:#6b7973;font-size:11px;font-weight:800;letter-spacing:.06em}.report-student{text-align:right;display:grid;gap:4px}.report-student strong{font-size:19px}.report-student span{color:#6b7973;font-size:11px}.report-summary{display:flex;justify-content:space-between;gap:20px;align-items:center;background:linear-gradient(135deg,#edf5ef,#f7f4ec);border-radius:20px;padding:18px 20px;margin:20px 0}.report-summary p{margin:5px 0 0;line-height:1.55;font-size:13px}.report-period-pill{white-space:nowrap;background:#173f31;color:#fff;border-radius:999px;padding:8px 12px;font-size:11px;font-weight:900}.report-section-label{font-size:9px;font-weight:900;letter-spacing:.14em;color:#356a53}.report-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:14px}.report-kpi{min-height:116px;border-radius:20px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;border:1px solid rgba(23,48,41,.07)}.report-kpi span{font-size:11px;font-weight:800;color:#52665d}.report-kpi strong{font-size:28px;line-height:1;color:#173f31}.report-kpi small{font-size:9px;line-height:1.35;color:#6b7973}.report-kpi.mint{background:#eaf5ed}.report-kpi.blue{background:#edf2fb}.report-kpi.gold{background:#fff5db}.report-kpi.rose{background:#faeeee}.report-middle{display:grid;grid-template-columns:1.45fr .8fr;gap:12px;margin-bottom:12px}.report-chart-card,.report-quality-card{border:1px solid #dfe7df;border-radius:20px;padding:17px;background:#fff}.report-section-title{display:flex;justify-content:space-between;align-items:end;gap:10px}.report-section-title h2{font-size:16px;margin:4px 0 0}.report-section-title>small{color:#6b7973;font-size:9px}.report-bars{height:150px;display:grid;grid-template-columns:repeat(7,1fr);gap:8px;align-items:end;margin-top:14px}.monthly .report-bars{grid-template-columns:repeat(5,1fr)}.report-bar-col{height:100%;display:grid;grid-template-rows:1fr auto auto;gap:4px;align-items:end;text-align:center;font-size:9px;color:#6b7973}.report-bar-track{height:100%;min-height:72px;background:#eef3ef;border-radius:10px;display:flex;align-items:end;overflow:hidden}.report-bar{width:100%;background:linear-gradient(180deg,#6f927b,#245541);border-radius:10px 10px 4px 4px;min-height:5px}.report-bar-col b{font-size:10px;color:#173f31}.report-quality-card{display:grid;gap:9px;align-content:start}.report-quality-row{display:grid;grid-template-columns:1fr auto;gap:2px 10px;background:#f7faf7;border-radius:13px;padding:10px}.report-quality-row span{font-size:10px;color:#6b7973}.report-quality-row strong{font-size:18px;color:#173f31}.report-quality-row small{grid-column:1/-1;font-size:8px;color:#7a8781}.report-topics{margin-top:3px}.report-topics>span{font-size:9px;color:#6b7973}.report-topics>div{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.report-topics b{font-size:8px;background:#edf5ef;border-radius:999px;padding:5px 7px}.report-insights{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.report-insight{border-radius:18px;padding:14px;min-height:120px}.report-insight.strength{background:#edf7f0}.report-insight.focus{background:#fff5e2}.report-insight.next{background:#eef2fb}.report-insight p{font-size:10px;line-height:1.48;margin:7px 0;color:#344b42}.report-teacher-comment{margin-top:11px;padding:14px 16px;border:1px dashed #a9b9ae;border-radius:16px;background:#fff}.report-teacher-comment p{font-size:11px;line-height:1.55;margin:7px 0 0}.report-footer{display:flex;justify-content:space-between;gap:20px;margin-top:14px;padding-top:12px;border-top:1px solid #e1e8e2;color:#78847f;font-size:8px}.report-footer span:last-child{text-align:right;font-weight:800}
@media(max-width:800px){.report-header,.report-summary,.report-section-title,.report-footer{align-items:flex-start}.report-header{display:grid}.report-student{text-align:left}.report-kpis{grid-template-columns:1fr 1fr}.report-middle{grid-template-columns:1fr}.report-insights{grid-template-columns:1fr}.progress-report{padding:22px;border-radius:20px}.report-brand h1{font-size:24px}.report-bars{height:130px}.report-footer{display:grid}.report-footer span:last-child{text-align:left}}
@media print{
  @page{size:A4 portrait;margin:10mm}
  body{background:#fff!important;padding:0!important}
  body *{visibility:hidden!important}
  #report-preview-host,#report-preview-host *{visibility:visible!important}
  #report-preview-host{position:absolute!important;left:0!important;top:0!important;width:100%!important;margin:0!important;padding:0!important}
  .report-print-shell{margin:0!important;display:block!important}
  .progress-report{width:100%!important;max-width:none!important;min-height:277mm!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding:8mm!important;background:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .progress-report:before{display:none!important}
  .report-kpi,.report-summary,.report-insight,.report-quality-row,.report-bar{ -webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* Student management lifecycle */
.student-management-toolbar{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:14px 0 16px}
.student-filter-tabs{display:flex;gap:8px;flex-wrap:wrap}
.student-filter-btn{border:1px solid #dbe2ea;background:#fff;border-radius:999px;padding:9px 13px;font:inherit;font-weight:700;cursor:pointer;color:#334155}
.student-filter-btn span{display:inline-flex;min-width:24px;height:24px;align-items:center;justify-content:center;margin-left:7px;border-radius:999px;background:#eef2f7;font-size:12px}
.student-filter-btn.active{background:#0f172a;color:#fff;border-color:#0f172a}
.student-filter-btn.active span{background:rgba(255,255,255,.16)}
.student-search{min-width:260px;max-width:360px;width:100%;border:1px solid #dbe2ea;border-radius:12px;padding:10px 12px;font:inherit;background:#fff}
.student-stage{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;letter-spacing:.03em;white-space:nowrap}
.student-stage.active{background:#e9f8ef;color:#167247}
.student-stage.completed{background:#edf0ff;color:#4a4fc4}
.student-stage-manager{margin-top:18px;padding:16px;border:1px solid #e2e8f0;border-radius:16px;background:#f8fafc;display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.student-stage-manager h3{margin:2px 0 4px}
@media(max-width:760px){.student-management-toolbar{align-items:stretch}.student-search{max-width:none;min-width:0}.student-filter-tabs{width:100%}.student-filter-btn{flex:1 1 46%}}

/* Dynamic educational email draft bank */
.report-email-card{margin-top:16px;border:1px solid #dbe5df;border-radius:18px;background:linear-gradient(135deg,#f7fbf8,#fffaf0);padding:16px 18px}.report-email-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.report-email-head h3{font-size:15px;margin:4px 0 0;color:#173f31}.report-email-meta{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0;color:#66766f;font-size:11px}.report-email-meta span{background:#fff;border:1px solid #e1e8e3;border-radius:999px;padding:6px 9px}.report-email-card pre{white-space:pre-wrap;font-family:"Be Vietnam Pro",sans-serif;font-size:12px;line-height:1.65;margin:0;background:#fff;border:1px solid #e1e8e3;border-radius:14px;padding:14px;color:#31483f}.report-email-card .pill{white-space:nowrap}
@media(max-width:700px){.report-email-head{display:grid}.report-email-meta{display:grid;gap:7px}.report-email-meta span{border-radius:11px}}
@media print{.report-email-card{display:none!important}}

/* Diagnostic answer review + My Words dictionary/topic browser */
.mywords-search-card{margin-bottom:16px}.dictionary-search{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:16px;background:#fff;padding:8px 12px}.dictionary-search>span{font-size:22px;color:var(--forest-700)}.dictionary-search input{flex:1;border:0;outline:0;background:transparent;padding:8px 0;font:inherit;min-width:0}.dictionary-results-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:14px 0 10px}.dictionary-results-head small{color:var(--muted)}.mywords-topic-card{display:grid;align-content:start}.mywords-topic-counts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.mywords-topic-counts span{display:grid;gap:2px;border-radius:12px;padding:10px;font-size:11px;text-align:left}.mywords-topic-counts b{font-size:18px}.mywords-topic-counts .learned-count{background:#edf7f0;color:#216a42}.mywords-topic-counts .unlearned-count{background:#f5f6f7;color:#67726c}.mywords-tabs{display:flex;gap:8px;margin:16px 0}.mywords-tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:9px 13px;font:inherit;font-weight:800;cursor:pointer}.mywords-tabs button span{display:inline-flex;min-width:24px;height:22px;align-items:center;justify-content:center;border-radius:999px;background:#eef2ef;margin-left:5px;font-size:11px}.mywords-tabs button.active{background:var(--forest-900);color:#fff;border-color:var(--forest-900)}.mywords-tabs button.active span{background:rgba(255,255,255,.16)}.state-dot.new{background:#f0f2f3;color:#65716b}.word-tile.unlearned-word{background:#fbfcfb}.word-tile.unlearned-word:hover{background:#f3f7f4}.mywords-topic-head{margin-bottom:8px}
.diagnostic-review{margin-top:24px;text-align:left}.diagnostic-review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.diagnostic-review-head h2{margin:4px 0 3px}.diagnostic-review-list{display:grid;gap:12px}.diagnostic-review-item{border:1px solid var(--line);border-radius:16px;background:#fff;padding:15px}.diagnostic-review-item.good{border-left:5px solid #3f8a5f}.diagnostic-review-item.bad{border-left:5px solid #c4564b}.diagnostic-review-item.skip{border-left:5px solid #9aa39f}.diagnostic-review-top{display:flex;justify-content:space-between;gap:14px;align-items:center}.diagnostic-review-top>div{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.diagnostic-review-top .qno{font-weight:900;color:var(--forest-800)}.answer-status{display:inline-flex;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:900}.answer-status.good{background:#e9f6ee;color:#1d6a3c}.answer-status.bad{background:#fff0ed;color:#a23e35}.answer-status.skip{background:#f1f3f2;color:#65716b}.diagnostic-question{margin:13px 0}.diagnostic-question p{margin:6px 0;line-height:1.55}.review-audio-btn{margin-bottom:8px}.answer-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px}.answer-compare>div{border:1px solid #e2e8e3;background:#f8faf8;border-radius:12px;padding:10px;display:grid;gap:4px}.answer-compare small{color:var(--muted);font-size:10px}.diagnostic-word-fix{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:11px;padding-top:10px;border-top:1px dashed #d8e0da}.diagnostic-word-fix span{font-size:12px}
@media(max-width:700px){.dictionary-results-head,.diagnostic-review-head,.diagnostic-review-top,.diagnostic-word-fix{display:grid;align-items:start}.answer-compare,.mywords-topic-counts{grid-template-columns:1fr}.mywords-tabs{display:grid;grid-template-columns:1fr 1fr}.dictionary-search{align-items:center}}

/* Final learning-flow polish */
.feedback-persistent .feedback-card{animation:feedbackIn .16s ease-out}.manual-next-note{display:block;margin-top:12px;color:var(--muted);text-align:center}.accepted-answer-note{background:#eef6ef;border:1px solid var(--sage-200);border-radius:10px;padding:10px 12px;line-height:1.5}.ipa-accent{display:inline-block;font-size:10px;font-weight:850;letter-spacing:.05em;background:var(--mint-100);color:var(--forest-800);padding:2px 5px;border-radius:999px;margin-left:4px;vertical-align:middle}@keyframes feedbackIn{from{transform:translateY(8px);opacity:.4}to{transform:none;opacity:1}}

/* 7-issue final fix: vocabulary identity is consistent across learner-facing contexts */
.word-identity{display:grid;gap:5px;justify-items:center;margin:8px 0 12px}.word-identity.compact{justify-items:start;margin:6px 0 10px}.word-identity-main{display:flex;gap:9px;align-items:baseline;flex-wrap:wrap}.word-identity-main b{font-size:clamp(20px,3vw,32px);line-height:1.15}.word-identity.compact .word-identity-main b{font-size:18px}.word-pos{font-size:11px;font-weight:800;color:var(--muted);text-transform:none}.word-identity-ipa{font-size:13px;color:var(--forest-700);display:flex;align-items:center;gap:5px}.option.word-option{align-items:flex-start}.option-word{display:grid;gap:3px;text-align:left}.option-word b{font-size:15px}.option-word small{font-size:11px;color:var(--muted);font-weight:650}.feedback-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}.feedback-actions button{min-width:140px}.pron-continue{margin-top:12px}.feedback-persistent{cursor:default}

/* P0 learner clarity: every selectable word and every answer review carries its lexical identity. */
.option-meaning{font-size:12px;line-height:1.4;color:var(--forest-800);font-weight:700}.bilingual-example{display:grid;gap:5px;margin:10px 0}.bilingual-example p{margin:0}.example-vi{color:var(--forest-800);font-size:13px;line-height:1.55}.example-usage{background:var(--mint-100);border-radius:10px;padding:9px 11px;color:var(--forest-800);font-size:12px;line-height:1.5}.inline-answer-identity{display:grid;gap:3px}.inline-answer-identity small{color:var(--muted);font-weight:700}.inline-answer-identity>span{font-size:12px;color:var(--forest-800);font-weight:700}

/* 2026-08-26: reveal distractor meanings only after grading; keep answer choices uncluttered. */
.option-meaning-review{display:grid;gap:8px;margin:14px 0}.option-meaning-row{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;align-items:start;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px}.option-meaning-row .review-letter{width:28px;height:28px;border-radius:8px;background:var(--mint-100);display:grid;place-items:center;font-weight:900;color:var(--forest-800)}.option-meaning-row .review-word{display:grid;gap:3px;min-width:0}.option-meaning-row .review-word b{font-size:14px}.option-meaning-row .review-meta{font-size:11px;color:var(--muted);font-weight:650}.option-meaning-row .review-vi{font-size:12px;line-height:1.45;color:var(--forest-800);font-weight:750}.option-meaning-row.correct-option{border-color:#aed8bd;background:#edf8f1}.option-meaning-row.selected-wrong{border-color:#e8b0aa;background:#fff1ef}.option-review-title{margin:16px 0 8px;font-size:13px;color:var(--forest-800)}

/* 2026-08-26 simple XP → Coin economy */
.score-rules{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 18px;padding:10px 12px;border:1px solid var(--line);background:#fff;border-radius:13px;color:var(--forest-800);font-size:12px}
.score-rules>b{margin-right:2px}
.score-rules span{background:var(--mint-100);border-radius:999px;padding:5px 8px}
.score-rules.compact{margin:-4px 0 12px;background:transparent;border-style:dashed;justify-content:center}
.session-economy{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:-4px 0 12px}
.session-economy span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 11px;font-size:12px;color:var(--forest-800);box-shadow:0 4px 12px rgba(23,63,49,.05)}
.xp-feedback{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-radius:12px;padding:10px 12px;margin:10px 0 14px;font-size:13px}
.xp-feedback.good{background:#eaf7ef;border:1px solid #b8dfc5;color:#205f3d}
.xp-feedback.reset{background:#f6f2ea;border:1px solid #e2d8c6;color:#6b5b42}
.coin-pop{font-weight:900}
.family-line{line-height:1.55}
.family-line span{color:var(--muted);font-size:12px}
@media(max-width:500px){.score-rules{gap:6px}.score-rules span{font-size:10px}.session-economy{gap:6px}.session-economy span{padding:6px 8px;font-size:11px}}

/* V14 bidirectional translation + Coin reward centre */
.gamebar>.gamebar-coin{border:0;background:linear-gradient(145deg,#173f31,#245744);color:#fff;border-radius:18px;padding:16px;box-shadow:var(--shadow);text-align:left;cursor:pointer;font:inherit;transition:.16s}
.gamebar>.gamebar-coin:hover,.gamebar>.gamebar-coin:focus{transform:translateY(-2px);outline:2px solid rgba(183,210,191,.55);outline-offset:2px}
.gamebar>.gamebar-coin span,.gamebar>.gamebar-coin small{display:block;color:rgba(255,255,255,.72);font-size:11px}.gamebar>.gamebar-coin b{display:block;font-size:20px;margin:5px 0;line-height:1.2}
.session-coin{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 11px;font-size:12px;color:var(--forest-800);box-shadow:0 4px 12px rgba(23,63,49,.05);cursor:pointer}.session-coin:hover{background:#f1f7f3;border-color:var(--sage-600)}
.rewards-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.coin-wallet{min-width:220px;background:linear-gradient(145deg,#173f31,#245744);color:#fff;border-radius:20px;padding:18px 20px;box-shadow:var(--shadow)}.coin-wallet span,.coin-wallet small{display:block;color:rgba(255,255,255,.72)}.coin-wallet strong{display:block;font-size:30px;margin:5px 0}.reward-return{margin-bottom:16px}.reward-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:16px 0 22px}.reward-card{position:relative;display:flex;flex-direction:column;min-height:235px}.reward-card h2{padding-right:58px}.reward-card p{color:var(--muted);line-height:1.55;flex:1}.reward-card.grand{border-color:#d8bd69;background:linear-gradient(145deg,#fffaf0,#fff)}.reward-cost{position:absolute;right:16px;top:16px;background:var(--mint-100);border:1px solid var(--sage-200);border-radius:999px;padding:6px 9px;font-weight:900;color:var(--forest-800)}.reward-gate{display:block;background:#fff5dd;border:1px solid #ead39b;border-radius:10px;padding:9px;margin:0 0 12px;color:#795a22;line-height:1.4}.reward-request-card{margin-bottom:28px}.reward-history{display:grid;gap:9px}.reward-history article{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:11px 13px;background:#fff}.reward-history small{display:block;color:var(--muted);margin-top:3px}.reward-status{display:inline-flex;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:850;border:1px solid var(--line);white-space:nowrap}.reward-status.pending{background:#fff7e6;color:#835f20}.reward-status.received{background:#eef3ff;color:#405a96}.reward-status.completed{background:#e9f6ee;color:#1d6a3c}.reward-status.rejected,.reward-status.cancelled{background:#fff0ed;color:#a23e35}.reward-form .field{margin:12px 0}.reward-form textarea{width:100%;resize:vertical}
.teacher-reward-inbox{margin:16px 0}.teacher-reward{border:1px solid var(--line);border-radius:15px;padding:14px;margin:10px 0;background:#fff}.teacher-reward-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.teacher-reward-head small{display:block;color:var(--muted);margin-top:4px}.teacher-reward-info{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.teacher-reward-info span{border-radius:10px;background:#f5f8f5;padding:9px;overflow-wrap:anywhere}.teacher-reward-info span.wide{grid-column:1/-1}.teacher-reward-info b{display:block;font-size:10px;text-transform:uppercase;color:var(--muted);margin-bottom:3px}
@media(max-width:980px){.reward-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rewards-head{align-items:stretch}.coin-wallet{min-width:190px}}
@media(max-width:620px){.reward-grid{grid-template-columns:1fr}.rewards-head{display:grid}.coin-wallet{min-width:0}.teacher-reward-info{grid-template-columns:1fr}.teacher-reward-info span.wide{grid-column:auto}.reward-history article{align-items:flex-start;display:grid}.gamebar>.gamebar-coin{padding:13px}.gamebar>.gamebar-coin b{font-size:16px}}


/* V15 — dark, lightly gamified learning journey */
.gamified-session{max-width:920px;margin:auto;border-radius:28px;padding:18px;background:
  radial-gradient(circle at 15% 8%,rgba(94,155,126,.18),transparent 24%),
  radial-gradient(circle at 88% 24%,rgba(191,157,74,.12),transparent 24%),
  linear-gradient(165deg,#071b18 0%,#0c2822 45%,#102f29 100%);box-shadow:0 30px 80px rgba(4,20,17,.28);color:#eaf4ee}
.gamified-session .session-top{color:#dcebe3}.gamified-session .text-btn{color:#c8ddd1}.gamified-session .session-progress>div{background:rgba(255,255,255,.12)}.gamified-session .session-progress i{background:linear-gradient(90deg,#65b887,#b7cf86)}
.game-task-card{background:rgba(255,253,248,.975);color:var(--ink);border:1px solid rgba(255,255,255,.26);box-shadow:0 22px 55px rgba(0,0,0,.25);backdrop-filter:blur(10px)}
.game-rule-hint{text-align:center;color:#aac4b6;font-size:11px;margin:10px 4px 0}
.game-journey{position:relative;min-height:185px;border:1px solid rgba(255,255,255,.11);border-radius:22px;margin:10px 0 14px;padding:18px 18px 20px;overflow:hidden;background:
 linear-gradient(180deg,rgba(16,47,41,.35),rgba(3,17,15,.28)),linear-gradient(135deg,#102f2a,#0a201c);box-shadow:inset 0 1px rgba(255,255,255,.06)}
.game-sky i{position:absolute;width:3px;height:3px;background:#d7e5c6;border-radius:50%;opacity:.5;animation:twinkle 2.4s ease-in-out infinite}.game-sky i:nth-child(1){left:12%;top:24%}.game-sky i:nth-child(2){left:35%;top:15%;animation-delay:.6s}.game-sky i:nth-child(3){left:62%;top:27%;animation-delay:1.2s}.game-sky i:nth-child(4){left:82%;top:13%;animation-delay:1.8s}@keyframes twinkle{50%{opacity:1;transform:scale(1.5)}}
.game-mountains{position:absolute;left:0;right:0;bottom:43px;height:72px;opacity:.35;background:linear-gradient(140deg,transparent 0 12%,#173f36 12% 26%,transparent 26% 31%,#1d4b3f 31% 49%,transparent 49% 57%,#14392f 57% 78%,transparent 78%);clip-path:polygon(0 100%,0 74%,13% 30%,28% 82%,42% 25%,58% 78%,72% 38%,88% 84%,100% 56%,100% 100%)}
.journey-label{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2;font-size:11px;letter-spacing:.12em;color:#9bbcad}.journey-label b{font-size:16px;letter-spacing:0;color:#fff}
.journey-track{position:absolute;left:24px;right:24px;bottom:35px;height:20px;border-radius:999px;background:#071713;border:1px solid rgba(255,255,255,.10);box-shadow:inset 0 3px 12px rgba(0,0,0,.38)}
.journey-fill{position:absolute;left:0;top:0;bottom:0;width:var(--journey-pct);border-radius:999px;background:linear-gradient(90deg,#3f8d66,#7fbd83,#c0ce77);opacity:.72;transition:width .65s cubic-bezier(.2,.85,.25,1)}
.journey-check{position:absolute;top:-28px;transform:translateX(-50%);font-size:9px;color:#789d8b}.journey-check:after{content:"";display:block;width:1px;height:22px;background:rgba(255,255,255,.12);margin:4px auto}.journey-check.c25{left:25%}.journey-check.c50{left:50%}.journey-check.c75{left:75%}
.game-runner{position:absolute;left:clamp(2%,var(--journey-pct),88%);bottom:-4px;width:34px;height:48px;transform:translateX(-50%);transition:left .65s cubic-bezier(.2,.85,.25,1);z-index:3;filter:drop-shadow(0 7px 8px rgba(0,0,0,.35));animation:runnerBob .9s ease-in-out infinite alternate}.runner-head{position:absolute;width:15px;height:15px;border-radius:50%;background:#e5c6a5;left:9px;top:0;border:2px solid #102b24}.runner-body{position:absolute;width:20px;height:25px;border-radius:9px 9px 6px 6px;background:linear-gradient(#d9e7c7,#7ead83);left:7px;top:14px;border:2px solid #102b24}.runner-body:before,.runner-body:after{content:"";position:absolute;width:5px;height:17px;background:#88b68f;border-radius:5px;bottom:-12px}.runner-body:before{left:2px;transform:rotate(8deg)}.runner-body:after{right:2px;transform:rotate(-8deg)}.runner-pack{position:absolute;width:9px;height:15px;border-radius:5px;background:#ba8a42;left:3px;top:18px;border:2px solid #102b24}@keyframes runnerBob{to{transform:translate(-50%,-2px)}}
.journey-coin{position:absolute;right:-4px;bottom:-22px;width:58px;height:58px;border-radius:50%;border:0;background:transparent;display:grid;place-items:center;z-index:4;cursor:default}.journey-coin span{font-size:34px;filter:drop-shadow(0 7px 10px rgba(0,0,0,.38));opacity:.55;transition:.25s}.journey-coin small{position:absolute;top:58px;white-space:nowrap;color:#9bb8a9;font-size:9px;font-weight:850}.game-journey.near-coin .journey-coin span{opacity:1;animation:coinGlow 1.2s ease-in-out infinite alternate}.journey-coin.ready{cursor:pointer}.journey-coin.ready span{font-size:42px;animation:coinClaim .7s ease-in-out infinite alternate}.journey-coin.ready small{color:#f4d98a;font-size:10px}@keyframes coinGlow{to{transform:scale(1.08);filter:drop-shadow(0 0 16px rgba(244,210,96,.68))}}@keyframes coinClaim{to{transform:translateY(-4px) scale(1.1);filter:drop-shadow(0 0 20px rgba(244,210,96,.85))}}
.journey-caption{position:absolute;left:18px;right:18px;bottom:8px;color:#8eaa9c;font-size:10px;z-index:2}
.coin-claim-overlay{position:fixed;inset:0;background:rgba(1,10,8,.75);backdrop-filter:blur(8px);z-index:90;display:grid;place-items:center;padding:20px}.coin-claim-card{width:min(430px,100%);text-align:center;border-radius:26px;padding:34px;background:linear-gradient(155deg,#102f29,#071b18);color:#fff;border:1px solid rgba(245,214,111,.28);box-shadow:0 35px 100px rgba(0,0,0,.55)}.coin-claim-card h2{font-size:34px}.coin-claim-card p{color:#b9cfc4;line-height:1.6}.claim-coin-orb{font-size:74px;animation:coinClaim .7s ease-in-out infinite alternate;filter:drop-shadow(0 0 28px rgba(244,210,96,.6))}.coin-claim-card .primary{margin-top:12px;background:linear-gradient(135deg,#c39a45,#e2c76e);color:#193128}
.mini-journey{min-width:170px}.mini-journey-track{height:8px;margin:9px 0 7px;border-radius:99px;background:#e2e9e3;position:relative}.mini-journey-track i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#3f8d66,#c0ce77)}.mini-journey-track b{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:10px;color:#163e31}.mini-journey-track em{position:absolute;right:-3px;top:50%;transform:translateY(-50%);font-style:normal;font-size:16px}
.focus-words{margin:18px 0}.focus-head,.memory-map-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.focus-head h2,.memory-map-head h2{margin:4px 0}.focus-head small{color:var(--muted);max-width:370px;line-height:1.5}.focus-word-list{display:grid;gap:8px;margin-top:14px}.focus-word{width:100%;display:grid;grid-template-columns:32px minmax(0,1.2fr) minmax(0,.9fr) 24px;align-items:center;gap:12px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px 14px;cursor:pointer;color:var(--ink);transition:.16s}.focus-word:hover{transform:translateY(-1px);border-color:var(--sage-400);background:#f6faf7;box-shadow:0 10px 22px rgba(23,63,49,.08)}.focus-rank{width:28px;height:28px;border-radius:9px;background:var(--forest-900);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:900}.focus-main,.focus-state{display:grid;gap:3px}.focus-main b{font-size:15px}.focus-main small,.focus-state small{font-size:10px;color:var(--muted)}.focus-state b{font-size:11px;color:var(--forest-700)}.focus-arrow{font-size:18px;color:var(--sage-600)}
.memory-map-large{margin:18px 0}.memory-map-large .bars{margin-top:18px}.memory-map-large .bar-row{grid-template-columns:minmax(140px,220px) 1fr 54px;padding:10px 0}.memory-map-large .bar{height:12px}
.translation-sentence-card{display:grid;gap:14px}.translation-prompt{font-size:21px;line-height:1.55;font-weight:700;margin:4px 0;padding:18px;border-radius:16px;background:#f3f7f3;border:1px solid var(--line)}.translation-sentence-card textarea{width:100%;border:1px solid var(--line);border-radius:14px;padding:14px;font:inherit;resize:vertical;background:#fff}.translation-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px}.translation-compare>div{border:1px solid var(--line);border-radius:14px;background:#fff;padding:13px}.translation-compare small{font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase}.translation-compare p{line-height:1.55}.translation-self-buttons{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:700px){.gamified-session{padding:10px;border-radius:18px}.game-journey{min-height:170px}.game-runner{left:clamp(3%,var(--journey-pct),82%)}.focus-head,.memory-map-head{display:grid}.focus-word{grid-template-columns:30px 1fr 22px}.focus-state{grid-column:2/3}.focus-arrow{grid-column:3/4;grid-row:1/3}.memory-map-large .bar-row{grid-template-columns:1fr}.translation-compare{grid-template-columns:1fr}.journey-caption{font-size:9px}.game-rule-hint{font-size:9px}}

/* V16 — adaptive full-screen game world */
body.learning-mode{padding-bottom:0!important;overflow-x:hidden;background:#061712}
body.learning-mode .bottom-nav{display:none!important}
main.learning-main{max-width:none;width:100%;min-height:calc(100dvh - 72px);margin:0;padding:16px max(14px,env(safe-area-inset-right)) 24px max(14px,env(safe-area-inset-left));overflow:hidden;background:
  radial-gradient(circle at 8% 12%,rgba(70,137,101,.12),transparent 24%),
  radial-gradient(circle at 92% 18%,rgba(180,143,61,.08),transparent 20%),
  linear-gradient(180deg,#071713,#0a211b 58%,#081a16)}
.learning-main .gamified-session{max-width:none;width:100%;min-height:calc(100dvh - 112px);margin:0;border-radius:30px;padding:14px clamp(12px,1.6vw,24px) 18px;position:relative;overflow:hidden;background:
  radial-gradient(circle at 12% 2%,rgba(103,179,133,.13),transparent 22%),
  radial-gradient(circle at 88% 16%,rgba(215,181,85,.08),transparent 20%),
  linear-gradient(160deg,#061814 0%,#0a241e 48%,#0d2c24 100%);box-shadow:0 30px 90px rgba(0,0,0,.34)}
.learning-main .gamified-session:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(to bottom,rgba(0,0,0,.75),transparent 72%)}
.learning-main .session-top,.learning-main .game-journey,.learning-main .session-economy,.learning-main .game-world,.learning-main .game-rule-hint{position:relative;z-index:2}
.learning-main .session-top{margin:0 auto 8px;width:min(1480px,100%)}
.learning-main .game-journey{width:min(1480px,100%);margin:6px auto 10px;min-height:150px}
.learning-main .session-economy{width:min(980px,92%);margin:0 auto 10px}
.learning-main .game-rule-hint{margin-top:9px;color:#a9c3b5;font-size:11px}

/* Full world uses the side space instead of leaving it blank. */
.game-world{--side-min:170px;position:relative;width:min(1600px,100%);margin:0 auto;display:grid;grid-template-columns:minmax(var(--side-min),1fr) minmax(620px,900px) minmax(var(--side-min),1fr);align-items:stretch;gap:clamp(10px,1.4vw,24px);min-height:clamp(520px,63dvh,760px);border-radius:28px;overflow:hidden;padding:18px 18px 44px;background:
  radial-gradient(circle at 50% 20%,rgba(255,255,255,.035),transparent 30%),
  linear-gradient(180deg,rgba(9,38,31,.96),rgba(5,23,19,.98));border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px rgba(255,255,255,.05)}
.world-atmosphere{position:absolute;inset:0;pointer-events:none;overflow:hidden}.world-atmosphere i{position:absolute;border-radius:50%;filter:blur(1px);background:rgba(210,236,219,.16);animation:worldFloat 8s ease-in-out infinite}.world-atmosphere i:nth-child(1){width:8px;height:8px;left:8%;top:14%}.world-atmosphere i:nth-child(2){width:5px;height:5px;right:10%;top:28%;animation-delay:2s}.world-atmosphere i:nth-child(3){width:7px;height:7px;left:46%;top:8%;animation-delay:4s}@keyframes worldFloat{50%{transform:translateY(-12px);opacity:.95}}
.world-side{position:relative;min-width:0;overflow:hidden;border-radius:22px;background:linear-gradient(180deg,rgba(255,255,255,.028),rgba(255,255,255,.008));border:1px solid rgba(255,255,255,.045)}
.world-center{position:relative;z-index:4;display:flex;flex-direction:column;justify-content:center;min-width:0}
.mission-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 8px 8px;padding:8px 12px;border-radius:999px;background:rgba(8,26,22,.72);border:1px solid rgba(255,255,255,.08);color:#d9e8df}.mission-strip span{font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.mission-strip small{color:#8fb1a1;font-size:10px}
.game-world .game-task-card{width:100%;min-height:470px;padding:clamp(20px,2vw,32px);border-radius:26px;background:linear-gradient(160deg,rgba(255,253,248,.985),rgba(246,248,244,.975));box-shadow:0 28px 70px rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.44)}
.game-world .word-hero h1{font-size:clamp(38px,4vw,54px)}
.game-world .prompt-box{font-size:clamp(19px,2vw,24px)}
.game-world .option{min-height:58px;transition:transform .18s,border-color .18s,background .18s,box-shadow .18s}.game-world .option:hover{transform:translateY(-2px) scale(1.005);box-shadow:0 10px 24px rgba(23,63,49,.08)}
.scene-caption{position:absolute;left:14px;right:14px;bottom:16px;padding:11px 12px;border-radius:14px;background:rgba(5,24,19,.72);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.07);color:#dce9e2;z-index:6}.scene-caption b,.scene-caption span{display:block}.scene-caption b{font-size:12px}.scene-caption span{font-size:9px;color:#86aa99;margin-top:3px}
.scene-star{position:absolute;width:4px;height:4px;border-radius:50%;background:#d9ebdd;opacity:.5;box-shadow:0 0 10px rgba(216,235,221,.55)}.scene-star.s1{left:16%;top:13%}.scene-star.s2{right:18%;top:24%}
.world-goal-card{position:absolute;left:14px;right:14px;top:18px;padding:12px;border-radius:16px;background:rgba(7,26,21,.68);border:1px solid rgba(255,255,255,.07);color:#b4cabf;opacity:.72;transition:.25s}.world-goal-card.visible{opacity:1;border-color:rgba(224,195,102,.28);box-shadow:0 0 24px rgba(211,177,76,.10)}.world-goal-card span{display:block;font-size:28px;margin-bottom:5px}.world-goal-card b{font-size:10px;line-height:1.45}

/* Shared world path: runner moves through the side spaces, disappearing behind the center card naturally. */
.world-path{position:absolute;left:3%;right:3%;bottom:20px;height:11px;border-radius:999px;background:#03100d;border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 3px 8px rgba(0,0,0,.45);z-index:2}.world-path-fill{position:absolute;left:0;top:0;bottom:0;width:var(--journey-pct);border-radius:999px;background:linear-gradient(90deg,#3d8c64,#7fba7f,#c6c974);opacity:.72;transition:width .65s cubic-bezier(.2,.85,.25,1)}.world-runner{position:absolute;left:clamp(2%,var(--journey-pct),94%);bottom:2px;width:36px;height:50px;transform:translate(-50%,0);transition:left .65s cubic-bezier(.2,.85,.25,1);z-index:5;filter:drop-shadow(0 8px 8px rgba(0,0,0,.42));animation:runnerBob .9s ease-in-out infinite alternate}.world-runner .runner-head{left:10px}.world-runner .runner-body{left:8px}.world-runner .runner-pack{left:4px}.world-goal{position:absolute;right:-2px;bottom:-22px;font-size:28px;filter:drop-shadow(0 6px 12px rgba(0,0,0,.35));opacity:.68}.world-near-coin .world-goal{font-size:36px;opacity:1;animation:coinGlow 1.1s ease-in-out infinite alternate}.world-claim-ready .world-goal{font-size:42px;opacity:1;animation:coinClaim .7s ease-in-out infinite alternate}

/* Scene-specific props, inspired by the mini-game language but kept in IELTS UNLOCK's darker visual system. */
.prop-tree{position:absolute;bottom:46px;width:78px;height:180px}.prop-tree.left{left:8%}.prop-tree.right{right:7%}.prop-tree.t2{transform:scale(.72);opacity:.65;bottom:36px}.prop-tree.left.t2{left:52%}.prop-tree.right.t2{right:50%}.prop-tree:before{content:"";position:absolute;left:34px;bottom:0;width:12px;height:82px;border-radius:8px;background:#5a4630}.prop-tree i,.prop-tree i:before,.prop-tree i:after{position:absolute;border-radius:50%;background:#285d49;box-shadow:0 0 22px rgba(67,128,95,.18)}.prop-tree i{width:70px;height:70px;left:4px;top:22px}.prop-tree i:before,.prop-tree i:after{content:"";width:55px;height:55px;top:30px}.prop-tree i:before{left:-16px}.prop-tree i:after{right:-18px}.prop-lantern{position:absolute;right:18%;bottom:56px;width:5px;height:112px;background:#32483c;border-radius:4px}.prop-lantern i{position:absolute;left:-10px;top:-8px;width:26px;height:30px;border-radius:8px;background:#d8bd72;box-shadow:0 0 28px rgba(221,191,103,.35)}
.prop-bookshelf{position:absolute;left:8%;right:8%;top:12%;height:285px;border:8px solid #2c493d;border-radius:12px;background:linear-gradient(#18392f,#112a23);box-shadow:inset 0 0 30px rgba(0,0,0,.35)}.prop-bookshelf:before,.prop-bookshelf:after{content:"";position:absolute;left:0;right:0;height:7px;background:#38594b}.prop-bookshelf:before{top:32%}.prop-bookshelf:after{top:66%}.prop-bookshelf i{position:relative;display:inline-block;width:12px;height:62px;margin:18px 4px 0 7px;border-radius:3px 3px 1px 1px;background:#7da188;box-shadow:18px 0 #b48a59,36px 0 #8d6b9f}.prop-bookshelf.right{transform:scaleX(-1)}.prop-lamp{position:absolute;right:20%;bottom:58px;width:56px;height:76px}.prop-lamp:before{content:"";position:absolute;left:25px;bottom:0;width:5px;height:56px;background:#56685f}.prop-lamp b{position:absolute;left:4px;top:0;width:52px;height:28px;border-radius:50% 50% 14px 14px;background:#c7a96b;box-shadow:0 0 22px rgba(218,181,91,.2)}
.prop-lockers{position:absolute;left:9%;right:9%;top:13%;display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.prop-lockers i{height:270px;border-radius:8px;background:linear-gradient(180deg,#36574a,#1d3b31);border:1px solid rgba(255,255,255,.08);box-shadow:inset -8px 0 15px rgba(0,0,0,.16)}.prop-lockers i:before{content:"";display:block;width:26px;height:3px;border-radius:4px;background:rgba(255,255,255,.22);margin:26px auto 0;box-shadow:0 8px rgba(255,255,255,.16),0 16px rgba(255,255,255,.12)}.prop-folder-stack{position:absolute;right:11%;bottom:54px;width:120px;height:70px}.prop-folder-stack span{position:absolute;left:0;right:0;height:30px;border-radius:8px;background:#697f66;border:1px solid rgba(255,255,255,.08)}.prop-folder-stack span:nth-child(2){top:16px;left:12px;background:#a58358}.prop-folder-stack span:nth-child(3){top:32px;left:24px;background:#6f748c}
.prop-skyline{position:absolute;left:3%;right:3%;bottom:45px;height:320px;display:flex;align-items:flex-end;gap:5px}.prop-skyline i{display:block;flex:1;min-width:18px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#234a3e,#102e27);border-top:1px solid rgba(255,255,255,.07)}.prop-skyline i:nth-child(1){height:45%}.prop-skyline i:nth-child(2){height:72%}.prop-skyline i:nth-child(3){height:58%}.prop-skyline i:nth-child(4){height:88%}.prop-skyline i:after{content:"";display:block;width:4px;height:4px;background:#ceb66d;margin:18px auto;box-shadow:14px 0 rgba(206,182,109,.6),-14px 16px rgba(206,182,109,.38),12px 32px rgba(206,182,109,.28)}.prop-skyline.right{transform:scaleX(-1)}.prop-signpost{position:absolute;left:24%;bottom:62px}.prop-signpost:before{content:"";position:absolute;left:30px;top:15px;width:5px;height:90px;background:#53675c}.prop-signpost span{position:relative;display:block;width:70px;margin-bottom:8px;padding:6px;border-radius:5px;background:#8c754c;color:#e8ddbc;text-align:right;font-weight:900}
.prop-radio{position:absolute;left:10%;right:10%;top:24%;height:190px;border-radius:18px;background:linear-gradient(150deg,#263d35,#132820);border:1px solid rgba(255,255,255,.09);box-shadow:0 22px 44px rgba(0,0,0,.25)}.radio-screen{position:absolute;left:12%;right:12%;top:18px;height:78px;border-radius:10px;background:#071511;border:1px solid rgba(129,190,150,.18);display:flex;align-items:center;justify-content:center;gap:7px;overflow:hidden}.radio-screen i{width:4px;border-radius:3px;background:#77b88a;box-shadow:0 0 10px rgba(83,174,113,.25);animation:waveBars 1s ease-in-out infinite}.radio-screen i:nth-child(1){height:18px}.radio-screen i:nth-child(2){height:44px;animation-delay:.1s}.radio-screen i:nth-child(3){height:62px;animation-delay:.2s}.radio-screen i:nth-child(4){height:36px;animation-delay:.3s}.radio-screen i:nth-child(5){height:22px;animation-delay:.4s}@keyframes waveBars{50%{transform:scaleY(.55)}}.prop-radio>span{position:absolute;bottom:24px;width:32px;height:32px;border-radius:50%;border:5px solid #60786b}.prop-radio>span:nth-of-type(1){left:25%}.prop-radio>span:nth-of-type(2){right:25%}.prop-wave{position:absolute;left:12%;right:12%;bottom:70px;display:flex;justify-content:center;align-items:center;gap:5px}.prop-wave i{width:3px;height:14px;border-radius:5px;background:#9ec7aa;animation:waveBars .8s ease-in-out infinite}.prop-wave i:nth-child(2),.prop-wave i:nth-child(4){height:28px}.prop-wave i:nth-child(3){height:42px}
.prop-mic{position:absolute;left:50%;top:22%;transform:translateX(-50%);width:100px;height:230px}.prop-mic i{position:absolute;left:29px;top:0;width:42px;height:82px;border-radius:22px;background:linear-gradient(#7d9989,#334d40);border:5px solid #1d3228;box-shadow:0 0 24px rgba(133,188,153,.12)}.prop-mic b{position:absolute;left:47px;top:78px;width:6px;height:110px;background:#6c7d74}.prop-mic b:after{content:"";position:absolute;left:-30px;bottom:0;width:66px;height:7px;border-radius:99px;background:#6c7d74}.prop-sound-panels{position:absolute;left:8%;right:8%;bottom:60px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.prop-sound-panels i{height:80px;border-radius:8px;background:repeating-linear-gradient(90deg,#1a372e 0 8px,#23463a 8px 14px);border:1px solid rgba(255,255,255,.04)}
.prop-desk{position:absolute;left:8%;right:8%;bottom:58px;height:120px;border-radius:12px 12px 4px 4px;background:linear-gradient(180deg,#795f40,#4e3d2c)}.prop-notebook{position:absolute;left:16%;top:-55px;width:120px;height:86px;border-radius:8px;background:#e8dfc6;transform:rotate(-7deg);box-shadow:0 10px 20px rgba(0,0,0,.2)}.prop-notebook:before{content:"";position:absolute;left:14px;right:10px;top:18px;height:2px;background:#a9a68e;box-shadow:0 14px #a9a68e,0 28px #a9a68e,0 42px #a9a68e}.prop-cup{position:absolute;right:17%;top:-30px;width:46px;height:56px;border-radius:8px 8px 15px 15px;background:#819884}.prop-desk-lamp{position:absolute;right:15%;top:18%;width:90px;height:180px}.prop-desk-lamp:before{content:"";position:absolute;left:43px;top:38px;width:5px;height:125px;background:#64776d;transform:rotate(13deg);transform-origin:bottom}.prop-desk-lamp i{position:absolute;left:20px;top:10px;width:58px;height:34px;border-radius:50% 50% 8px 8px;background:#c19d59;box-shadow:0 0 28px rgba(213,174,79,.18)}

/* Task mechanics borrow the visual language of mini-games while preserving the adaptive scheduler. */
.scene-library .option{border-radius:18px 8px 18px 8px;border-left:5px solid #9ab39f}
.scene-archive .option{position:relative;border-radius:12px 12px 16px 16px;background:linear-gradient(#fff,#f7f2e8)}.scene-archive .option:after{content:"";position:absolute;left:18px;top:-6px;width:70px;height:8px;border-radius:6px 6px 0 0;background:#d7c28f;opacity:.65}
.scene-city .option{border-left:5px solid #6f927b}.scene-radio .listening-mini{background:linear-gradient(145deg,#112b25,#0b1f1a);color:#e5f0e9;border-color:#31594a}.scene-radio .gap-prompt{background:#071611;color:#d7eadf;border-color:#2f5a48}.scene-studio .pron-card{background:linear-gradient(145deg,#f7f4ec,#edf5ef);border:1px solid #cfe0d4;border-radius:20px}.scene-study .translation-sentence-card textarea,.scene-study .sentence-task textarea{background:#fffdf5;background-image:linear-gradient(#d7e3db 1px,transparent 1px);background-size:100% 30px;line-height:30px}

/* Motion: correct = real progress; continue = scene travel without fake XP. */
.gamified-session.xp-step .world-runner,.gamified-session.xp-step .game-runner{animation:runnerDash .62s ease both}.gamified-session.streak-boost .world-runner,.gamified-session.streak-boost .game-runner{animation:runnerBoost .72s cubic-bezier(.16,.84,.3,1) both}.gamified-session.scene-travel .world-runner{animation:travelHop .42s ease both}.gamified-session.scene-travel .world-side{animation:sceneSlide .42s ease both}@keyframes runnerDash{35%{transform:translate(-50%,-9px) rotate(-3deg)}70%{transform:translate(-50%,1px) rotate(3deg)}}@keyframes runnerBoost{22%{transform:translate(-50%,-14px) scale(1.08)}55%{filter:drop-shadow(-18px 5px 8px rgba(143,208,160,.3))}100%{transform:translate(-50%,0)}}@keyframes softMiss{20%{transform:translateX(-3px)}50%{transform:translateX(3px)}100%{transform:none}}@keyframes travelHop{25%{transform:translate(-50%,-10px) rotate(-4deg)}60%{transform:translate(12px,-5px) rotate(5deg)}100%{transform:translate(-50%,0)}}@keyframes sceneSlide{50%{filter:brightness(1.15);transform:translateX(-3px)}}

/* Large tablet / compact desktop */
@media(max-width:1180px){
  .game-world{--side-min:105px;grid-template-columns:minmax(105px,.55fr) minmax(560px,1fr) minmax(105px,.55fr);gap:10px;padding-left:10px;padding-right:10px}
  .scene-caption{left:8px;right:8px;padding:8px}.scene-caption span{display:none}.prop-bookshelf,.prop-lockers{left:4%;right:4%}.world-goal-card{left:8px;right:8px}.mission-strip{margin-left:2px;margin-right:2px}
}

/* Tablet portrait: keep a visible game world, but reduce side decoration. */
@media(max-width:900px){
  main.learning-main{padding:8px 8px 16px}.learning-main .gamified-session{border-radius:20px;min-height:calc(100dvh - 88px);padding:10px}
  .learning-main .game-journey{min-height:138px;border-radius:18px}.learning-main .session-economy{width:100%}
  .game-world{grid-template-columns:72px minmax(0,1fr) 72px;gap:6px;min-height:570px;padding:10px 6px 42px;border-radius:20px}.game-world .game-task-card{min-height:450px;border-radius:22px;padding:20px}
  .world-side{opacity:.8}.scene-caption,.world-goal-card{display:none}.prop-tree{transform:scale(.7);transform-origin:bottom}.prop-bookshelf,.prop-lockers,.prop-radio{left:-25px;right:-25px}.prop-skyline{left:-12px;right:-12px}.prop-signpost,.prop-folder-stack,.prop-wave,.prop-lamp,.prop-desk-lamp,.prop-sound-panels{display:none}.prop-mic{transform:translateX(-50%) scale(.72);transform-origin:top}.prop-desk{left:-20px;right:-20px}.mission-strip small{display:none}
}

/* Phone: switch from side-by-side to vertical adaptive game layout. */
@media(max-width:700px){
  body.learning-mode{padding-bottom:0!important}.learning-mode .top{min-height:58px;padding:7px 10px}.learning-mode .brand-logo{width:30px;height:30px}.learning-mode .brand-name{font-size:12px}.learning-mode .lang{transform:scale(.9);transform-origin:right center}
  main.learning-main{min-height:calc(100dvh - 58px);padding:0;background:#071713}.learning-main .gamified-session{min-height:calc(100dvh - 58px);border-radius:0;padding:8px 8px max(12px,env(safe-area-inset-bottom));box-shadow:none}
  .learning-main .session-top{grid-template-columns:74px 1fr 38px;gap:8px;margin:0 0 5px}.learning-main .session-top .text-btn{font-size:11px;padding:7px 4px}.learning-main .session-progress span{font-size:10px}
  .learning-main .game-journey{min-height:112px;margin:4px 0 7px;padding:10px 10px 16px}.game-mountains{height:48px;bottom:36px}.journey-track{left:16px;right:16px;bottom:29px;height:14px}.journey-check{top:-24px}.game-runner{transform:translateX(-50%) scale(.82);transform-origin:bottom}.journey-coin{transform:scale(.82);transform-origin:center}.journey-caption{left:10px;right:10px;bottom:5px;font-size:8px}.journey-label{font-size:9px}.journey-label b{font-size:12px}
  .learning-main .session-economy{display:flex;justify-content:center;gap:6px;margin:0 auto 7px}.learning-main .session-economy>span,.learning-main .session-economy>button{font-size:10px;padding:6px 9px}
  .game-world{display:flex;flex-direction:column;min-height:0;padding:0 0 34px;border-radius:18px;overflow:hidden;background:linear-gradient(180deg,#0a251f,#071713)}
  .world-left{order:0;display:block;height:96px;min-height:96px;border:0;border-radius:0;background:linear-gradient(180deg,rgba(255,255,255,.02),transparent)}.world-right{display:none}.world-center{order:1;padding:0 5px 4px;margin-top:-2px}
  .mission-strip{margin:0 4px 6px;padding:6px 9px}.mission-strip span{font-size:9px}.mission-strip small{display:block;font-size:8px}
  .game-world .game-task-card{min-height:0;padding:17px 14px 18px;border-radius:18px}.game-world .task-meta{font-size:10px}.game-world .task-title{font-size:12px;margin-top:12px}.game-world .word-hero{padding:20px 0 14px}.game-world .word-hero h1{font-size:clamp(31px,10vw,42px)}.game-world .prompt-box,.translation-prompt{font-size:17px}.game-world .option{min-height:54px;padding:12px 11px}.game-world .options{gap:8px}.game-world textarea,.game-world input{font-size:16px!important}.game-world .reveal-block{padding:14px}.game-world .meaning-main{font-size:18px}.task-support{margin-top:10px}
  .world-path{left:18px;right:18px;top:76px;bottom:auto;height:8px}.world-path-fill{transition:width .55s ease}.world-runner{bottom:-2px;transform:translate(-50%,0) scale(.74);transform-origin:bottom}.world-goal{bottom:-17px;font-size:23px}
  .scene-caption{display:block;left:10px;right:auto;bottom:6px;width:min(190px,64%);padding:6px 8px;background:rgba(4,19,15,.64)}.scene-caption b{font-size:9px}.scene-caption span{display:none}
  .prop-tree{width:52px;height:100px;bottom:5px}.prop-tree:before{left:24px;width:8px;height:44px}.prop-tree i{width:46px;height:46px;left:3px;top:10px}.prop-tree i:before,.prop-tree i:after{width:34px;height:34px;top:19px}.prop-lantern{height:55px;bottom:9px}.prop-lantern i{transform:scale(.7)}
  .prop-bookshelf{left:4%;right:52%;top:7px;height:70px;border-width:4px}.prop-bookshelf i{width:6px;height:23px;margin:8px 2px 0 4px;box-shadow:9px 0 #b48a59,18px 0 #8d6b9f}.prop-lamp{display:block;right:9%;bottom:7px;transform:scale(.55);transform-origin:bottom right}
  .prop-lockers{left:4%;right:54%;top:6px;gap:3px}.prop-lockers i{height:72px}.prop-lockers i:before{width:12px;margin-top:10px}.prop-folder-stack{display:block;right:5%;bottom:10px;transform:scale(.55);transform-origin:bottom right}
  .prop-skyline{left:1%;right:38%;bottom:5px;height:84px}.prop-signpost{display:block;right:4%;left:auto;bottom:5px;transform:scale(.55);transform-origin:bottom right}
  .prop-radio{left:4%;right:54%;top:8px;height:72px;border-radius:10px}.radio-screen{top:7px;height:30px}.radio-screen i{transform:scaleY(.45)}.prop-radio>span{bottom:8px;width:14px;height:14px;border-width:2px}.prop-wave{display:flex;right:7%;left:auto;width:90px;bottom:16px;transform:scale(.7);transform-origin:right bottom}
  .prop-mic{left:28%;top:5px;transform:translateX(-50%) scale(.34);transform-origin:top}.prop-sound-panels{display:grid;right:4%;left:58%;bottom:7px;gap:3px}.prop-sound-panels i{height:50px}
  .prop-desk{left:3%;right:50%;bottom:7px;height:48px}.prop-notebook{transform:scale(.52) rotate(-7deg);transform-origin:left bottom;left:8%;top:-37px}.prop-cup{transform:scale(.55);transform-origin:right bottom;right:8%;top:-18px}.prop-desk-lamp{display:block;right:6%;top:0;transform:scale(.4);transform-origin:top right}
  .game-rule-hint{font-size:8px!important;margin:6px 2px 0!important;padding-bottom:2px}
  .feedback-overlay,.modal-overlay{padding:10px;align-items:end}.feedback-card,.modal{width:100%;max-height:88dvh;border-radius:20px 20px 8px 8px;padding:20px 16px max(20px,env(safe-area-inset-bottom))}.feedback-actions{position:sticky;bottom:0;background:var(--paper);padding-top:10px}
}

@media(max-width:420px){
  .learning-mode .brand-name{display:none}.learning-main .session-economy>span,.learning-main .session-economy>button{padding:5px 7px}.mission-strip{border-radius:12px}.game-world .game-task-card{padding:15px 11px}.game-world .option{grid-template-columns:30px 1fr}.game-world .word-hero h1{font-size:31px}.learning-main .game-journey{min-height:104px}.world-left{height:88px;min-height:88px}.world-path{top:69px}
}

@media(prefers-reduced-motion:reduce){
  .world-atmosphere i,.game-sky i,.game-runner,.world-runner,.journey-coin span,.world-goal,.radio-screen i,.prop-wave i{animation:none!important}.journey-fill,.world-path-fill,.game-runner,.world-runner{transition-duration:.01ms!important}.gamified-session.scene-travel .world-side{animation:none!important}
}

/* V18 — split-world layout: large question card stays centered, worlds live on the left and right wings */
body.learning-mode{height:100dvh;min-height:100dvh;overflow:hidden!important;background:#061713}
body.learning-mode #app{height:100dvh;min-height:100dvh;display:flex;flex-direction:column;overflow:hidden}
body.learning-mode #app>.top{flex:0 0 auto}
body.learning-mode #app>main.learning-main{flex:1 1 auto;min-height:0!important;height:auto!important;padding:8px 10px 10px!important;overflow:hidden!important;display:block}
.learning-main .gamified-session{height:100%;min-height:0!important;max-height:100%;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:6px;padding:8px 10px 8px!important;border-radius:24px;overflow:hidden!important}
.learning-main .game-journey{display:none!important}
.learning-main .session-top{width:min(1540px,100%);margin:0 auto 2px;min-height:34px}
.learning-main .session-economy{position:relative!important;top:auto!important;left:auto!important;transform:none!important;z-index:20!important;margin:0 auto 2px!important}
.learning-main .session-economy span,.learning-main .session-economy button{background:rgba(255,255,255,.94);box-shadow:0 8px 24px rgba(0,0,0,.17)}
.learning-main .game-rule-hint{margin:0!important;padding:2px 6px 0;color:#9fb9ab;font-size:10px;text-align:center}

.game-world{position:relative!important;width:100%!important;height:100%!important;min-height:0!important;margin:0!important;display:grid!important;grid-template-columns:minmax(170px,1fr) minmax(620px,900px) minmax(170px,1fr);align-items:stretch!important;justify-items:stretch!important;gap:18px;padding:54px clamp(14px,2vw,34px) 18px!important;border-radius:22px!important;overflow:hidden!important;background:#09221b;border:1px solid rgba(255,255,255,.075);isolation:isolate}
.game-world:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 0 26%,rgba(1,10,8,.05) 49%,rgba(1,10,8,.18) 76%,rgba(1,10,8,.27) 100%)}
.world-scenery{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.world-stars i{position:absolute;width:4px;height:4px;border-radius:50%;background:#e6f4e9;opacity:.3;box-shadow:0 0 10px rgba(226,243,232,.34);animation:v17twinkle 3.4s ease-in-out infinite}.world-stars i:nth-child(1){left:8%;top:14%}.world-stars i:nth-child(2){left:27%;top:9%;animation-delay:.6s}.world-stars i:nth-child(3){right:28%;top:16%;animation-delay:1.2s}.world-stars i:nth-child(4){right:9%;top:11%;animation-delay:1.8s}.world-stars i:nth-child(5){left:50%;top:6%;animation-delay:2.4s}@keyframes v17twinkle{50%{opacity:.85;transform:scale(1.8)}}
.world-route-svg{position:absolute;inset:4% 1.5% 3%;width:97%;height:93%;z-index:1;pointer-events:none;overflow:visible}.world-route-svg polyline{fill:none;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.world-route-shadow{stroke:rgba(0,0,0,.35);stroke-width:14}.world-route-base{stroke:rgba(214,235,220,.20);stroke-width:5;stroke-dasharray:10 14}.world-route-progress{stroke:#9bc78f;stroke-width:6;filter:drop-shadow(0 0 7px rgba(144,202,145,.34));transition:stroke-dashoffset .72s cubic-bezier(.18,.82,.2,1)}
.world-side{position:relative;z-index:2;align-self:stretch;min-height:0;display:flex;align-items:flex-end;padding:12px;border-radius:24px;background:linear-gradient(180deg,rgba(4,25,20,.10),rgba(4,25,20,.28));border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.world-side.side-left{grid-column:1;justify-content:flex-start}.world-side.side-right{grid-column:3;justify-content:flex-end}
.world-side .side-chip{display:grid;gap:2px;max-width:160px;padding:12px 14px;border-radius:18px;background:rgba(4,25,20,.64);border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 24px rgba(0,0,0,.18)}
.world-side .side-chip b{font-size:12px;letter-spacing:.03em;color:#e4f0e8;text-transform:uppercase}.world-side .side-chip small{font-size:11px;color:#a7c0b4;line-height:1.35}
.world-center{grid-column:2;position:relative;z-index:4;width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;padding:0!important;margin:0!important;contain:layout paint}
.game-world .game-task-card{position:absolute;left:0;right:0;top:50%;bottom:auto;transform:translateY(-50%);flex:none;width:100%;height:min(590px,calc(100% - 16px));min-height:0!important;max-height:none;overflow:hidden;overscroll-behavior:none;padding:22px 24px 16px!important;border-radius:26px;background:linear-gradient(160deg,rgba(255,253,248,.985),rgba(246,248,244,.975));box-shadow:0 28px 75px rgba(0,0,0,.38);border:1px solid rgba(255,255,255,.48);display:flex;flex-direction:column;contain:layout paint}
.task-content-slot{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.game-task-card .task-support{flex:0 0 auto;margin-top:auto;padding-top:8px;border-top:1px dashed var(--line)}
.task-content-slot .task-meta{flex:0 0 auto}.task-content-slot .task-title{margin-top:10px}.task-content-slot .word-hero{padding:18px 0 12px}.task-content-slot .word-hero h1{font-size:clamp(38px,3.4vw,48px)}.task-content-slot .word-identity.compact .word-identity-main b{font-size:22px}.task-content-slot .prompt-box{font-size:clamp(18px,1.6vw,22px)}
.task-content-slot .options{gap:8px;margin-top:8px}.task-content-slot .option{min-height:50px;padding:10px 12px}.task-content-slot .reading-mini{margin:12px auto 10px;padding:14px 16px;font-size:18px;line-height:1.55}.task-content-slot .reveal-block{padding:14px}.task-content-slot .meaning-main{font-size:18px;margin-bottom:7px}.task-content-slot .colloc-chips{margin:7px 0}.task-content-slot .bilingual-example{margin:7px 0}.task-content-slot .retrieval-prompt{margin:12px auto}.task-content-slot .skip-btn{margin:9px auto 0}
.task-content-slot .pron-card,.task-content-slot .listening-mini,.task-content-slot .sentence-task{padding:14px 16px}.task-content-slot .pronunciation-hero{padding-bottom:6px}.task-content-slot .pron-status{min-height:32px;margin:8px 0 4px}.task-content-slot .listen-icon{width:48px;height:48px;margin-bottom:8px}.task-content-slot .gap-prompt{margin:10px auto 0;padding:10px 12px}.task-content-slot .answer-input{font-size:18px;margin-bottom:9px;padding:10px 12px}
.task-content-slot .translation-sentence-card{gap:9px}.task-content-slot .translation-prompt{font-size:18px;line-height:1.45;margin:2px 0;padding:12px 14px}.task-content-slot .translation-sentence-card textarea,.task-content-slot .sentence-task textarea{height:96px;min-height:96px;max-height:96px;resize:none;padding:11px 12px}.task-content-slot .translation-compare{gap:8px}.task-content-slot .translation-compare>div{padding:10px 11px}.task-content-slot .translation-compare p{margin:6px 0;line-height:1.42}.task-content-slot .translation-self-buttons{gap:8px}

.world-hud{position:absolute;z-index:6;left:18px;right:18px;top:14px;display:flex;justify-content:space-between;align-items:flex-start;gap:14px;pointer-events:none;color:#e1eee7;text-shadow:0 2px 10px rgba(0,0,0,.35)}.world-hud>div:first-child{display:grid;gap:2px}.world-hud span{font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.world-hud small{font-size:9px;color:#9bb8aa}.world-hud-progress{display:grid;text-align:right;gap:2px}.world-hud-progress b{font-size:13px}.world-hud-progress em{font-size:9px;font-style:normal;color:#bdd2c7}
.world-runner{position:absolute;z-index:3;left:var(--runner-x);top:var(--runner-y);width:38px;height:53px;transform:translate(-50%,-78%);transition:left .72s cubic-bezier(.18,.82,.2,1),top .72s cubic-bezier(.18,.82,.2,1);filter:drop-shadow(0 9px 10px rgba(0,0,0,.35));pointer-events:none}.world-runner .runner-head{position:absolute;width:16px;height:16px;border-radius:50%;background:#e8c9a6;left:10px;top:0;border:2px solid #102b24}.world-runner .runner-body{position:absolute;width:21px;height:27px;border-radius:9px 9px 6px 6px;background:linear-gradient(#dcebcf,#82b58a);left:8px;top:15px;border:2px solid #102b24}.world-runner .runner-body:before,.world-runner .runner-body:after{content:"";position:absolute;width:5px;height:17px;background:#86b68d;border-radius:5px;bottom:-12px}.world-runner .runner-body:before{left:2px;transform:rotate(8deg)}.world-runner .runner-body:after{right:2px;transform:rotate(-8deg)}.world-runner .runner-pack{position:absolute;width:9px;height:18px;border-radius:5px;background:#c89f50;right:2px;top:21px;border:2px solid #102b24}
.world-coin{position:absolute;z-index:3;transform:translate(-50%,-50%);border:0;background:transparent;color:#fff;display:grid;place-items:center;gap:2px;pointer-events:none;filter:drop-shadow(0 8px 14px rgba(0,0,0,.35))}.world-coin span{font-size:36px;filter:grayscale(.45) brightness(.72);opacity:.64;transition:.25s}.world-coin small{font-size:8px;font-weight:900;color:#99b5a5;background:rgba(5,25,19,.72);border:1px solid rgba(255,255,255,.08);padding:3px 6px;border-radius:999px;white-space:nowrap}.world-coin.near span{filter:none;opacity:.95;animation:coinPulse 1.2s ease-in-out infinite}.world-coin.ready{pointer-events:auto;cursor:pointer}.world-coin.ready span{font-size:44px;filter:none;opacity:1;animation:coinReady .75s ease-in-out infinite alternate}.world-coin.ready small{color:#ffe7a0;border-color:#d7b85a;background:#594717}@keyframes coinPulse{50%{transform:translateY(-3px);filter:drop-shadow(0 0 10px #e7c86d)}}@keyframes coinReady{to{transform:scale(1.13) rotate(4deg);filter:drop-shadow(0 0 15px #e6c45d)}}
.world-xp-layer{position:absolute;inset:0;z-index:3;pointer-events:none}.world-xp-orb{position:absolute;left:calc(var(--runner-x) + 4%);top:calc(var(--runner-y) - 4%);font-size:18px;color:#d9f49b;text-shadow:0 0 12px #a7d792;animation:xpGather .9s var(--orb-delay,0ms) ease-out forwards;opacity:0}.world-xp-badge{position:absolute;left:var(--runner-x);top:var(--runner-y);transform:translate(-50%,-72px);padding:5px 8px;border-radius:999px;background:rgba(8,34,27,.88);border:1px solid rgba(173,218,170,.42);color:#ddf3c2;font-size:10px;animation:xpBadge 1s ease forwards}@keyframes xpGather{0%{opacity:0;transform:translate(30px,-16px) scale(.7)}25%{opacity:1}100%{opacity:0;transform:translate(-22px,22px) scale(.25)}}@keyframes xpBadge{0%{opacity:0;transform:translate(-50%,-45px) scale(.8)}20%{opacity:1}75%{opacity:1;transform:translate(-50%,-72px)}100%{opacity:0;transform:translate(-50%,-86px)}}

/* Scene 1 — forest */
.world-forest{background:radial-gradient(circle at 52% 8%,rgba(78,137,104,.20),transparent 31%),linear-gradient(180deg,#0a2d24 0%,#0a221b 58%,#06150f 100%)}.forest-tree{position:absolute;bottom:-5%;width:95px;height:250px}.forest-tree:before{content:"";position:absolute;left:43px;bottom:0;width:13px;height:132px;background:#604a35;border-radius:12px}.forest-tree:after{content:"";position:absolute;left:6px;top:13px;width:84px;height:105px;border-radius:52% 48% 46% 54%;background:#245f49;box-shadow:-26px 32px 0 #1c513e,29px 35px 0 #2a6950}.ft1{left:2%}.ft2{left:17%;transform:scale(.72);opacity:.78}.ft3{right:4%;transform:scale(.92)}.forest-bush{position:absolute;bottom:1%;width:120px;height:45px;border-radius:55% 50% 0 0;background:#174b39}.fb1{left:27%}.fb2{right:20%}.forest-lamp{position:absolute;right:15%;bottom:9%;width:7px;height:115px;background:#5f6d61}.forest-lamp:after{content:"";position:absolute;left:-13px;top:-15px;width:33px;height:36px;border-radius:9px;background:#d8b65a;box-shadow:0 0 24px rgba(218,181,82,.24)}
/* Scene 2 — river */
.world-river{background:linear-gradient(180deg,#153b35 0%,#12302a 48%,#09201b 100%)}.river-water{position:absolute;left:-5%;right:-5%;bottom:0;height:34%;background:linear-gradient(180deg,rgba(51,128,136,.68),rgba(22,77,84,.82));clip-path:polygon(0 22%,12% 13%,25% 21%,40% 9%,56% 18%,70% 7%,84% 15%,100% 5%,100% 100%,0 100%)}.river-bank{position:absolute;bottom:27%;width:34%;height:24%;background:#254f36;border-radius:50% 50% 0 0}.rb1{left:-10%}.rb2{right:-8%}.river-bridge{position:absolute;left:32%;right:31%;bottom:26%;height:38px;display:flex;gap:5px;transform:rotate(-4deg)}.river-bridge i{flex:1;background:#947049;border:2px solid rgba(63,39,23,.4);border-radius:4px}.river-reed{position:absolute;bottom:23%;width:5px;height:68px;background:#638058;box-shadow:10px 8px 0 #638058,18px -3px 0 #6c8c60}.rr1{left:10%}.rr2{right:14%}
/* Scene 3 — village */
.world-village{background:linear-gradient(180deg,#16372f,#102922 55%,#0b1d18)}.village-house{position:absolute;bottom:8%;width:115px;height:105px;background:#d1b484;border-radius:8px 8px 3px 3px;box-shadow:0 12px 28px rgba(0,0,0,.18)}.village-house:before{content:"";position:absolute;left:-10px;right:-10px;top:-45px;border-left:67px solid transparent;border-right:67px solid transparent;border-bottom:48px solid #7f5040}.village-house i{position:absolute;left:42px;bottom:0;width:28px;height:51px;background:#664b35}.vh1{left:5%;transform:scale(.82)}.vh2{right:6%;transform:scale(.95)}.vh3{right:22%;bottom:4%;transform:scale(.63);opacity:.75}.village-road{position:absolute;left:25%;right:18%;bottom:-8%;height:39%;background:#a58e68;opacity:.18;clip-path:polygon(31% 0,58% 0,100% 100%,0 100%)}.village-lamp{position:absolute;left:20%;bottom:14%;width:6px;height:100px;background:#59645d}.village-lamp:after{content:"";position:absolute;left:-11px;top:-15px;width:28px;height:31px;border-radius:7px;background:#e1bf63;box-shadow:0 0 25px rgba(224,188,95,.26)}
/* Scene 4 — meadow */
.world-meadow{background:linear-gradient(180deg,#21463b,#1a3b31 52%,#12291f)}.meadow-hill{position:absolute;bottom:-18%;border-radius:50% 50% 0 0;background:#416a42}.mh1{left:-10%;width:68%;height:50%;opacity:.48}.mh2{right:-18%;width:74%;height:46%;opacity:.38}.windmill{position:absolute;right:8%;bottom:13%;width:56px;height:125px;background:#b79d75;border-radius:8px 8px 3px 3px}.windmill b{position:absolute;left:-11px;right:-11px;top:-29px;border-left:39px solid transparent;border-right:39px solid transparent;border-bottom:31px solid #795646}.windmill i{position:absolute;left:26px;top:12px;width:5px;height:95px;background:#d7c598;transform-origin:2px 47px}.windmill i:nth-of-type(1){transform:rotate(0)}.windmill i:nth-of-type(2){transform:rotate(90deg)}.windmill i:nth-of-type(3){transform:rotate(45deg)}.windmill i:nth-of-type(4){transform:rotate(-45deg)}.meadow-grass{position:absolute;bottom:2%;height:68px;width:5px;background:#6f8d4d;box-shadow:12px 7px 0 #6f8d4d,24px -4px 0 #789654,36px 9px 0 #6f8d4d}.mg1{left:6%}.mg2{left:18%}
/* Scene 5 — academy */
.world-academy{background:linear-gradient(180deg,#183b34,#102c26 55%,#091d18)}.academy-building{position:absolute;right:4%;bottom:4%;width:245px;height:165px;background:#9aa98f;border-radius:6px 6px 0 0;opacity:.55}.academy-building:before{content:"";position:absolute;left:-18px;right:-18px;top:-47px;border-left:140px solid transparent;border-right:140px solid transparent;border-bottom:50px solid #b2b594}.academy-building div{position:absolute;left:93px;bottom:0;width:58px;height:94px;background:#455c50}.academy-building i{position:relative;display:inline-block;margin:35px 5px 0 20px;width:22px;height:60px;background:#dde1cf;border-radius:3px}.academy-tree{position:absolute;bottom:5%;width:64px;height:150px}.academy-tree:before{content:"";position:absolute;left:28px;bottom:0;width:9px;height:75px;background:#684d36}.academy-tree:after{content:"";position:absolute;left:0;top:0;width:62px;height:78px;border-radius:50%;background:#34664c}.at1{left:5%}.at2{left:16%;transform:scale(.75)}.academy-lamp{position:absolute;bottom:8%;width:5px;height:85px;background:#58675e}.academy-lamp:after{content:"";position:absolute;left:-8px;top:-10px;width:21px;height:24px;background:#d9b55a;border-radius:5px}.al1{left:27%}.al2{right:29%}
/* Scene 6 — castle */
.world-castle{background:linear-gradient(180deg,#21362f,#162721 56%,#0d1915)}.castle-wall{position:absolute;right:2%;bottom:0;width:40%;height:48%;background:#626f68;opacity:.53}.castle-wall i{display:inline-block;width:23%;height:24px;background:#7e8a82;margin:0 1%}.castle-tower{position:absolute;bottom:0;width:92px;height:58%;background:#707a74;opacity:.62}.castle-tower:before{content:"";position:absolute;left:-8px;right:-8px;top:-24px;height:31px;background:repeating-linear-gradient(90deg,#7f8983 0 18px,transparent 18px 29px)}.ct1{right:34%}.ct2{right:2%}.castle-gate{position:absolute;right:17%;bottom:0;width:92px;height:112px;border-radius:48px 48px 0 0;background:#283b34}.castle-flag{position:absolute;bottom:58%;width:4px;height:93px;background:#7d827f}.castle-flag:after{content:"";position:absolute;top:0;left:4px;border-top:13px solid transparent;border-bottom:13px solid transparent;border-left:42px solid #b7974d}.cf1{right:36%}.cf2{right:5%}
/* Scene 7 — crystal cave */
.world-crystal{background:radial-gradient(circle at 72% 70%,rgba(121,100,199,.18),transparent 32%),linear-gradient(180deg,#151d2a,#111924 55%,#090e16)}.cave-ceiling{position:absolute;left:0;right:0;top:0;height:20%;background:#111a21;clip-path:polygon(0 0,100% 0,100% 38%,90% 59%,82% 35%,70% 65%,58% 32%,49% 57%,37% 29%,24% 63%,12% 35%,0 58%)}.crystal-group{position:absolute;bottom:3%;display:flex;align-items:flex-end;gap:5px}.crystal-group i{display:block;width:25px;height:90px;background:linear-gradient(160deg,#a49ce0,#594f9b);clip-path:polygon(50% 0,100% 28%,82% 100%,18% 100%,0 28%);box-shadow:0 0 22px rgba(124,108,210,.25)}.crystal-group i:nth-child(2){height:130px;width:34px}.crystal-group i:nth-child(3){height:72px}.cg1{left:5%}.cg2{right:7%;transform:scale(.85)}.crystal-glow{position:absolute;left:42%;right:38%;bottom:-8%;height:35%;border-radius:50%;background:rgba(96,81,175,.16);filter:blur(22px)}
/* Scene 8 — harbor */
.world-harbor{background:linear-gradient(180deg,#153844,#12323b 52%,#0a2026)}.harbor-water{position:absolute;left:0;right:0;bottom:0;height:31%;background:linear-gradient(#2e6671,#173e48)}.harbor-pier{position:absolute;left:4%;bottom:22%;width:43%;height:35px;display:flex;gap:3px;transform:rotate(2deg)}.harbor-pier i{flex:1;background:#8f6c49;border-radius:3px}.lighthouse{position:absolute;right:8%;bottom:19%;width:53px;height:176px;background:repeating-linear-gradient(180deg,#e6dcc5 0 36px,#a95b4d 36px 55px)}.lighthouse:before{content:"";position:absolute;left:-9px;right:-9px;top:-24px;border-left:35px solid transparent;border-right:35px solid transparent;border-bottom:26px solid #4e5a55}.lighthouse i{position:absolute;left:-14px;right:-14px;top:-3px;height:13px;background:#d3b45d;box-shadow:0 0 27px rgba(216,182,86,.4)}.harbor-boat{position:absolute;right:25%;bottom:14%;width:90px;height:34px;background:#75543a;border-radius:0 0 50% 50%;transform:rotate(-4deg)}.harbor-wave{position:absolute;bottom:8%;width:145px;height:14px;border-top:3px solid rgba(178,221,225,.35);border-radius:50%}.hw1{left:50%}.hw2{right:4%}
/* Scene 9 — night city */
.world-nightcity{background:radial-gradient(circle at 82% 14%,rgba(216,181,93,.14),transparent 17%),linear-gradient(180deg,#101d2d,#0d1826 54%,#090f18)}.night-moon{position:absolute;right:8%;top:8%;width:72px;height:72px;border-radius:50%;background:#d8c987;box-shadow:0 0 28px rgba(219,204,139,.19)}.night-buildings{position:absolute;left:0;right:0;bottom:0;height:43%;display:flex;align-items:flex-end;gap:2%}.night-buildings i{flex:1;min-width:70px;background:#17293b;border-radius:6px 6px 0 0;box-shadow:inset 13px 15px 0 rgba(226,188,92,.08),inset -16px 43px 0 rgba(104,167,145,.05)}.night-buildings i:nth-child(1){height:58%}.night-buildings i:nth-child(2){height:88%}.night-buildings i:nth-child(3){height:71%}.night-buildings i:nth-child(4){height:96%}.night-buildings i:nth-child(5){height:65%}.lantern{position:absolute;top:20%;width:20px;height:27px;border-radius:5px;background:#d89d52;box-shadow:0 0 22px rgba(224,155,75,.31)}.ln1{left:9%}.ln2{left:20%;top:31%}.ln3{right:24%;top:25%}
/* Scene 10 — summit */
.world-summit{background:linear-gradient(180deg,#21384a,#1a2d3d 48%,#0c1c24)}.summit-mountain{position:absolute;bottom:-12%;background:#304d59;clip-path:polygon(50% 0,100% 100%,0 100%)}.sm1{left:-10%;width:62%;height:78%;opacity:.68}.sm2{right:-8%;width:70%;height:88%;opacity:.78}.summit-snow{position:absolute;right:18%;bottom:59%;width:145px;height:85px;background:#dbe7e3;opacity:.68;clip-path:polygon(50% 0,100% 100%,70% 73%,51% 86%,32% 67%,0 100%)}.summit-flag{position:absolute;right:10%;bottom:53%;width:5px;height:110px;background:#b7c2bc}.summit-flag:after{content:"";position:absolute;top:0;left:5px;border-top:17px solid transparent;border-bottom:17px solid transparent;border-left:54px solid #d1ad52}.summit-cloud{position:absolute;width:160px;height:42px;border-radius:50%;background:rgba(223,234,232,.12);filter:blur(1px)}.sc1{left:3%;top:16%}.sc2{right:24%;top:9%;transform:scale(.68)}

/* Answer motion belongs to the world, never inside the question. */
.gamified-session.xp-step .world-runner{animation:v17Run .72s ease both}.gamified-session.streak-boost .world-runner{animation:v17Boost .76s cubic-bezier(.15,.82,.26,1) both}.gamified-session.scene-travel .world-runner{animation:v17Travel .42s ease both}.gamified-session.scene-travel .world-scenery{animation:v17Scenery .42s ease both}@keyframes v17Run{30%{margin-top:-11px;filter:drop-shadow(-12px 10px 11px rgba(130,194,142,.22))}70%{margin-top:2px}}@keyframes v17Boost{25%{margin-top:-18px;transform:translate(-50%,-78%) scale(1.1)}55%{filter:drop-shadow(-25px 8px 12px rgba(158,220,146,.34))}100%{margin-top:0}}@keyframes v17Travel{30%{margin-top:-9px;transform:translate(-50%,-78%) rotate(-5deg)}65%{margin-top:-2px;transform:translate(-50%,-78%) rotate(5deg)}}@keyframes v17Scenery{50%{filter:brightness(1.08);transform:translateX(-3px)}}

/* Stable-frame task density: long context questions use two columns without changing the outer frame. */
@media(min-width:701px){.game-world.task-context .task-content-slot .options{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Compact desktop / tablet: preserve the scene, shrink the card before shrinking the world. */
@media(max-width:1180px){.game-world{grid-template-columns:minmax(90px,.55fr) minmax(620px,820px) minmax(90px,.55fr);gap:10px;padding-left:10px!important;padding-right:10px!important}.world-hud{left:12px;right:12px}.world-runner{transform:translate(-50%,-78%) scale(.9)}.world-coin span{font-size:32px}.world-side{padding:10px}.world-side .side-chip{max-width:132px;padding:10px 12px}}
@media(max-width:900px){body.learning-mode{height:100dvh}.learning-main .gamified-session{border-radius:18px}.game-world{grid-template-columns:minmax(80px,.45fr) minmax(0,1fr) minmax(80px,.45fr);gap:10px;padding-top:50px!important}.game-world .game-task-card{padding:18px!important}.world-hud span{font-size:10px}.world-hud small{display:none}.world-side .side-chip{display:none}.forest-tree,.academy-tree{transform:scale(.72);transform-origin:bottom}.village-house{transform:scale(.7);transform-origin:bottom}.windmill,.lighthouse{transform:scale(.74);transform-origin:bottom}.night-moon{transform:scale(.7)}}


@media(max-height:820px) and (min-width:901px){
  .game-world{padding-top:42px!important;padding-bottom:12px!important}
  .learning-main .session-top{min-height:30px}.learning-main .session-economy span,.learning-main .session-economy button{padding:5px 8px;font-size:10px}
  .task-content-slot .word-hero{padding:8px 0 5px}.task-content-slot .word-hero h1{font-size:32px}.task-content-slot .word-identity{margin:4px 0 7px}.task-content-slot .word-identity.compact .word-identity-main b{font-size:19px}.task-content-slot .word-identity-ipa{font-size:11px}
  .task-content-slot .task-title{margin-top:5px;font-size:11px}.task-content-slot .options{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:6px}.task-content-slot .option{min-height:40px;padding:7px 9px;font-size:13px}.task-content-slot .option>span:first-child{width:24px;height:24px;font-size:11px}
  .task-content-slot .reading-mini{margin:5px auto 6px;padding:8px 10px;font-size:14px;line-height:1.38}.task-content-slot .reveal-block{padding:10px}.task-content-slot .meaning-main{font-size:16px;margin-bottom:5px}.task-content-slot .colloc-chips{margin:5px 0}.task-content-slot .bilingual-example{gap:3px;margin:5px 0}.task-content-slot .example-vi{font-size:11px;line-height:1.35}
  .task-content-slot .pron-card,.task-content-slot .listening-mini,.task-content-slot .sentence-task{padding:8px 10px}.task-content-slot .pron-card p,.task-content-slot .sentence-task p{font-size:13px;line-height:1.35;margin:5px 0}.task-content-slot .pronunciation-hero{padding-bottom:3px}.task-content-slot .pron-status{min-height:26px;margin:5px 0 2px}.task-content-slot .mic-btn{padding:10px 16px;min-width:160px}
  .task-content-slot .listening-mini>p{display:none}.task-content-slot .listen-icon{width:34px;height:34px;margin-bottom:3px;font-size:18px}.task-content-slot .voice-status{font-size:10px}.task-content-slot .passage-player{height:32px;margin:5px auto 4px}.task-content-slot .gap-prompt{margin:5px auto 0;padding:7px 9px;font-size:14px;line-height:1.35}.task-content-slot .answer-input{font-size:15px;margin-bottom:5px;padding:7px 9px}
  .task-content-slot .translation-sentence-card{gap:6px}.task-content-slot .translation-prompt{font-size:14px;line-height:1.35;padding:7px 9px}.task-content-slot .translation-sentence-card textarea,.task-content-slot .sentence-task textarea{height:64px;min-height:64px;max-height:64px;padding:8px 9px}.task-content-slot .translation-compare{gap:6px}.task-content-slot .translation-compare>div{padding:7px 8px}.task-content-slot .translation-compare p{margin:4px 0;line-height:1.3;font-size:12px}.task-content-slot .translation-self-buttons{gap:6px}.task-content-slot .translation-self-buttons button{padding:8px 10px}
  .task-content-slot .skip-btn{margin:5px auto 0;padding:7px 11px}.task-content-slot .primary.wide{padding:9px 12px}.game-task-card .task-support{padding-top:4px}.game-task-card .task-support .text-btn{padding:7px 10px;font-size:10px}
}

/* Phone: use the same world, but keep a visible journey band above the card. */
@media(max-width:700px){
 body.learning-mode{height:100dvh!important;min-height:100dvh!important;overflow:hidden!important}.learning-mode .top{min-height:54px;padding:6px 8px}.learning-main{padding:0!important}.learning-main .gamified-session{height:100%;border-radius:0;grid-template-rows:auto auto minmax(0,1fr) auto;padding:6px!important}.learning-main .session-economy{position:static!important;transform:none!important;margin:0 auto 2px!important}.learning-main .session-top{margin-bottom:0}.game-world{grid-template-columns:1fr!important;padding:86px 7px 7px!important;border-radius:14px!important;align-items:stretch!important}.world-side{display:none}.world-center{grid-column:1;width:100%;height:100%;align-items:stretch;justify-content:stretch}.game-world .game-task-card{position:relative;inset:auto;max-height:100%;height:auto;margin:auto 0;padding:15px 12px!important;border-radius:18px;overflow:auto}.world-hud{top:7px;left:9px;right:9px}.world-hud span{font-size:9px}.world-hud-progress b{font-size:10px}.world-hud-progress em{font-size:7px}.world-route-svg{inset:0 1% auto;width:98%;height:105px}.world-runner{transform:translate(-50%,-78%) scale(.67);transform-origin:center}.world-coin{transform:translate(-50%,-50%) scale(.72)}.world-scenery{opacity:.72}.world-scenery>*{max-height:110px}.forest-tree,.academy-tree,.village-house,.windmill,.castle-wall,.castle-tower,.crystal-group,.lighthouse,.night-buildings,.summit-mountain{transform:scale(.55);transform-origin:bottom}.forest-tree,.academy-tree,.village-house,.crystal-group{bottom:auto;top:3px}.windmill,.lighthouse,.castle-tower{bottom:auto;top:0}.river-water,.harbor-water{height:40px;bottom:auto;top:65px}.river-bridge,.harbor-pier{bottom:auto;top:55px}.night-buildings{bottom:auto;top:16px;height:90px}.summit-mountain{bottom:auto;top:2px;height:130px}.game-world .word-hero{padding:17px 0 12px}.game-world .word-hero h1{font-size:clamp(30px,9vw,40px)}.game-world .prompt-box,.translation-prompt{font-size:16px}.game-world .option{min-height:50px;padding:10px}.game-world textarea,.game-world input{font-size:16px!important}.game-rule-hint{font-size:8px!important}.feedback-overlay,.modal-overlay{padding:8px;align-items:end}.feedback-card,.modal{max-height:86dvh}}
@media(max-height:720px) and (min-width:701px){.learning-main .gamified-session{padding-top:5px!important}.learning-main .session-top{min-height:27px}.game-world{padding-top:36px!important;padding-bottom:8px!important}.game-world .game-task-card{padding:14px 16px 10px!important}.world-hud{top:8px}.game-rule-hint{font-size:8px}.task-content-slot .option{min-height:36px;padding:5px 8px;font-size:12px}.task-content-slot .reading-mini{font-size:13px;line-height:1.3;padding:6px 8px}.task-content-slot .translation-sentence-card textarea,.task-content-slot .sentence-task textarea{height:54px;min-height:54px;max-height:54px}.task-content-slot .sentence-task p{font-size:12px;line-height:1.28}.task-content-slot .translation-prompt{font-size:13px}.task-content-slot .gap-prompt{font-size:13px;padding:5px 7px}.task-content-slot .passage-player{height:28px}.task-content-slot .listen-icon{width:30px;height:30px}.task-content-slot .word-hero h1{font-size:29px}.task-content-slot .task-title{margin-top:3px}}
@media(max-width:420px){.learning-mode .brand-name{display:none}.learning-main .session-economy>span,.learning-main .session-economy>button{padding:5px 7px;font-size:9px}.game-world{padding-top:82px!important}.game-world .game-task-card{padding:13px 10px!important}.world-hud-progress em{display:none}}
@media(prefers-reduced-motion:reduce){.world-stars i,.world-coin span,.world-xp-orb,.world-xp-badge,.world-runner,.world-scenery{animation:none!important}.world-route-progress,.world-runner{transition-duration:.01ms!important}}
/* V18 keeps HUD in flow so the center card can stay large while the split world fills the side wings. */


/* V22 rebuild — stable learner frame content fitting. Outer card geometry never changes. */
@media(min-width:701px){
  .task-content-slot.density-compact .task-title{margin-top:6px;font-size:11px}
  .task-content-slot.density-compact .word-hero{padding:10px 0 7px}
  .task-content-slot.density-compact .word-hero h1{font-size:34px}
  .task-content-slot.density-compact .word-identity{margin:4px 0 7px}
  .task-content-slot.density-compact .word-identity.compact .word-identity-main b{font-size:20px}
  .task-content-slot.density-compact .options{gap:6px;margin-top:6px}
  .task-content-slot.density-compact .option{min-height:42px;padding:7px 9px}
  .task-content-slot.density-compact .reading-mini{margin:7px auto 6px;padding:9px 11px;font-size:15px;line-height:1.4}
  .task-content-slot.density-compact .reveal-block{padding:10px}
  .task-content-slot.density-compact .bilingual-example{margin:5px 0;gap:3px}
  .task-content-slot.density-compact .pron-card,.task-content-slot.density-compact .listening-mini,.task-content-slot.density-compact .sentence-task{padding:9px 11px}
  .task-content-slot.density-compact .translation-prompt{font-size:15px;line-height:1.38;padding:8px 10px}
  .task-content-slot.density-compact .translation-sentence-card textarea,.task-content-slot.density-compact .sentence-task textarea{height:68px;min-height:68px;max-height:68px}
  .task-content-slot.density-compact .skip-btn{margin-top:5px}

  .task-content-slot.density-tight .task-title{margin-top:4px;font-size:10px}
  .task-content-slot.density-tight .word-hero{padding:6px 0 4px}
  .task-content-slot.density-tight .word-hero h1{font-size:30px}
  .task-content-slot.density-tight .word-identity{margin:2px 0 5px}
  .task-content-slot.density-tight .word-identity.compact .word-identity-main b{font-size:18px}
  .task-content-slot.density-tight .word-identity-ipa{font-size:11px}
  .task-content-slot.density-tight .options{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin-top:5px}
  .task-content-slot.density-tight .option{min-height:36px;padding:5px 7px;font-size:12px}
  .task-content-slot.density-tight .reading-mini{margin:4px auto 5px;padding:6px 8px;font-size:13px;line-height:1.32}
  .task-content-slot.density-tight .reveal-block{padding:8px}
  .task-content-slot.density-tight .meaning-main{font-size:15px;margin-bottom:4px}
  .task-content-slot.density-tight .colloc-chips,.task-content-slot.density-tight .bilingual-example{margin:4px 0}
  .task-content-slot.density-tight .pron-card,.task-content-slot.density-tight .listening-mini,.task-content-slot.density-tight .sentence-task{padding:7px 9px}
  .task-content-slot.density-tight .listening-mini>p{display:none}
  .task-content-slot.density-tight .listen-icon{width:30px;height:30px;margin-bottom:3px}
  .task-content-slot.density-tight .gap-prompt{margin-top:4px;padding:6px 8px;font-size:13px}
  .task-content-slot.density-tight .answer-input{font-size:14px;margin-bottom:4px;padding:6px 8px}
  .task-content-slot.density-tight .translation-sentence-card{gap:5px}
  .task-content-slot.density-tight .translation-prompt{font-size:13px;line-height:1.32;padding:6px 8px}
  .task-content-slot.density-tight .translation-sentence-card textarea,.task-content-slot.density-tight .sentence-task textarea{height:52px;min-height:52px;max-height:52px;padding:6px 8px}
  .task-content-slot.density-tight .translation-compare{gap:5px}
  .task-content-slot.density-tight .translation-compare>div{padding:6px 7px}
  .task-content-slot.density-tight .translation-compare p{margin:3px 0;line-height:1.28;font-size:11px}
  .task-content-slot.density-tight .translation-self-buttons{gap:5px}
  .task-content-slot.density-tight .skip-btn{margin-top:3px;padding:6px 9px}
}


/* V2BA — learner fixes + zero-cost local semantic writing */
.pron-card{display:flex;flex-direction:column;min-height:0}
.pron-status{flex:1 1 auto;min-height:0;overflow:hidden}
.pron-action-footer{flex:0 0 auto;display:flex;justify-content:center;padding-top:8px;min-height:48px}
.pron-action-footer .pron-continue{width:min(360px,100%);margin:0!important}
.pron-action-footer .pron-continue[hidden]{display:none!important}
.long-reading-meta{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:3px 0 5px}
.long-reading-meta span{font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:3px 7px;border-radius:999px;background:rgba(6,78,59,.08)}
.long-reading-mini{font-size:clamp(13px,1.12vw,16px)!important;line-height:1.43!important;text-align:left!important;max-width:820px!important;padding:11px 14px!important}
.local-writing-task{display:flex;flex-direction:column;min-height:0}
.sentence-grade-status{min-height:20px;margin:4px 0;font-size:11px;font-weight:700;color:var(--muted,#64748b)}
.writing-score-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0}
.writing-score-grid span{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:10px;background:rgba(15,23,42,.06);font-size:12px}
.writing-score-grid b{font-size:14px}
@media(min-width:901px){
  .task-content-slot .long-reading-mini{margin:5px auto 6px;max-height:150px;overflow:hidden}
  .task-content-slot.density-tight .long-reading-mini{font-size:12px!important;line-height:1.32!important;padding:6px 8px!important;max-height:150px}
  .task-content-slot .pron-card{max-height:330px}
  .task-content-slot.density-tight .pron-card{max-height:285px}
  .task-content-slot .pron-status .word-identity{margin:3px 0 4px}
  .task-content-slot .pron-status .phoneme-row{margin:4px 0}
  .task-content-slot .pron-status .xp-feedback{margin:4px 0}
  .task-content-slot .pron-status .manual-next-note{font-size:10px;line-height:1.25;margin:4px 0}
}
/* V2BB · learner-centered writing translation */
.task-content-slot .writing-translation-card{margin:2px 0 4px;gap:7px}
.task-content-slot .writing-translation-card .translation-prompt{margin:0}

/* V25 verified-source credits */
.source-credit{margin-top:7px;font-size:11px;line-height:1.35;color:rgba(31,55,46,.58);letter-spacing:.01em}.source-credit em{font-style:italic;font-weight:500}.source-context-sentence,.speaking-source-sentence{margin-top:10px;padding:10px 12px;border-radius:13px;background:rgba(23,63,49,.055);font-size:14px;line-height:1.5;text-align:left}.source-context-sentence mark,.speaking-source-sentence mark{font-weight:800;background:rgba(201,174,91,.18);border-radius:4px;padding:0 2px}.word-listening-card{text-align:center}.translation-sentence-card .source-credit{margin-top:8px}


/* V25 learning-flow blocker fix — 2026-09-04
   Keeps every action reachable, makes Listen active, and gives context gaps a semantic cue. */
.definition-hint{
  margin:8px auto 10px;
  width:min(760px,100%);
  border:1px solid rgba(23,63,49,.12);
  background:rgba(238,246,239,.92);
  border-radius:12px;
  padding:9px 12px;
  text-align:left;
}
.definition-hint small{
  display:block;
  margin-bottom:3px;
  color:var(--forest-700);
  font-weight:850;
  font-size:10px;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.definition-hint p{margin:0;color:var(--forest-900);font-size:13px;line-height:1.45}
.word-listening-card{display:grid;justify-items:center;gap:8px;margin:10px 0 12px}
.word-listening-card p{margin:0;max-width:620px;color:var(--muted);line-height:1.5}

.task-content-slot>.pron-card{
  flex:1 1 auto;
  min-height:0;
  max-height:none!important;
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.pron-scroll-body{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  padding:0 4px 4px 0;
}
.pron-scroll-body .pron-status{
  min-height:34px;
  overflow:visible!important;
  margin:8px 0 4px;
}
.pron-action-footer{
  flex:0 0 auto;
  position:relative;
  z-index:3;
  display:grid;
  grid-template-columns:minmax(130px,1fr) minmax(130px,1fr) auto;
  gap:8px;
  align-items:center;
  padding:10px 0 0;
  margin-top:8px;
  border-top:1px solid var(--line);
  background:linear-gradient(180deg,rgba(255,253,248,.72),rgba(255,253,248,1) 30%);
}
.pron-action-footer .mic-btn,.pron-action-footer .pron-continue{width:100%;margin:0!important}
.pron-action-footer .skip-btn{margin:0!important;white-space:nowrap}
.pron-action-footer .pron-continue[hidden],.pron-action-footer .mic-btn[hidden]{display:none!important}

.feedback-persistent{padding:clamp(8px,2vw,20px)}
.feedback-persistent .feedback-shell{
  width:min(760px,100%);
  max-height:min(90dvh,760px);
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  border-radius:22px;
  background:var(--paper);
  box-shadow:0 24px 70px rgba(15,43,34,.25);
}
.feedback-persistent .feedback-scroll{
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
}
.feedback-persistent .feedback-scroll>.feedback-card{
  width:100%;
  max-width:none;
  max-height:none;
  overflow:visible;
  border-radius:0;
  box-shadow:none;
  padding-bottom:14px;
}
.feedback-persistent .feedback-actions{
  flex:0 0 auto;
  position:relative;
  bottom:auto;
  margin:0;
  padding:10px 16px max(14px,env(safe-area-inset-bottom));
  border-top:1px solid var(--line);
  background:var(--paper);
}

@media(max-width:700px){
  .pron-action-footer{grid-template-columns:1fr 1fr}
  .pron-action-footer .skip-btn{grid-column:1/-1;justify-self:center}
  .feedback-persistent .feedback-shell{max-height:92dvh;border-radius:18px 18px 8px 8px}
}
@media(max-height:720px) and (min-width:701px){
  .task-content-slot>.pron-card{padding:7px 9px!important}
  .pron-scroll-body .speaking-source-sentence{margin-top:4px;padding:7px 9px;font-size:12px;line-height:1.35}
  .pron-scroll-body .source-credit{margin-top:4px;font-size:9px;line-height:1.25}
  .pron-scroll-body .pron-instruction{font-size:11px;line-height:1.35;margin:6px 0}
  .pron-action-footer{padding-top:7px;margin-top:5px;min-height:42px}
  .definition-hint{margin:5px auto 6px;padding:6px 8px}
  .definition-hint p{font-size:12px;line-height:1.32}
}


/* V25 diagnostic assessment shell: neutral, no XP/streak/coin feedback during placement. */
.diagnostic-session-shell{max-width:1120px;margin:0 auto;padding:18px 18px 34px;min-height:calc(100vh - 92px);display:grid;grid-template-rows:auto 1fr auto;gap:16px}
.diagnostic-session-top{background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:18px;padding:10px 14px;box-shadow:0 12px 30px rgba(15,48,37,.08)}
.diagnostic-live-card{align-self:center;max-width:940px;width:100%;margin:0 auto;padding:24px 26px;overflow:visible}
.diagnostic-live-kicker{text-align:center;font-size:11px;font-weight:900;letter-spacing:.08em;color:var(--forest-700);margin-bottom:8px}
.diagnostic-task-slot{min-height:360px;overflow:visible;display:flex;flex-direction:column;justify-content:center}
.diagnostic-task-slot .task-meta{margin-bottom:10px}
.diagnostic-task-slot .task-title{text-align:center;margin-bottom:12px}
.diagnostic-task-slot .word-hero{max-width:820px;margin-left:auto;margin-right:auto}
.diagnostic-task-slot .options{max-width:820px;width:100%;margin-left:auto;margin-right:auto}
.diagnostic-task-slot .answer-input,.diagnostic-task-slot .primary.wide{max-width:820px;width:100%;margin-left:auto;margin-right:auto}
.diagnostic-live-note{text-align:center;color:var(--muted);font-size:12px;max-width:760px;margin:0 auto}
@media(max-width:760px){
 .diagnostic-session-shell{padding:10px 10px 24px;gap:10px}
 .diagnostic-live-card{padding:16px 14px;border-radius:18px}
 .diagnostic-task-slot{min-height:0}
 .diagnostic-session-top{grid-template-columns:auto 1fr auto}
}
