:root{--blue:#123B75;--blue2:#2F6EDB;--blue3:#EAF1FF;--bg:#F7F8FC;--card:#fff;--text:#1F2937;--muted:#7A8597;--line:#E7EBF2;--shadow:0 10px 30px rgba(31,54,95,.08);--success:#5DA36E;--purple:#8466CF;--orange:#E9A43A}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);padding-bottom:92px}.appHeader{position:sticky;top:0;z-index:50;background:rgba(247,248,252,.96);backdrop-filter:blur(10px);border-bottom:1px solid rgba(231,235,242,.75)}.headerInner{max-width:760px;margin:auto;padding:18px 18px 14px;display:flex;justify-content:space-between;align-items:center}.brandTitle{font-weight:950;font-size:23px;letter-spacing:.01em;color:var(--blue)}.brandTitle span{font-size:25px}.brandSub{color:#7F8795;font-size:12px;margin-top:5px}.headerTools{display:flex;gap:8px}.iconBtn,.avatarBtn{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--blue);font-size:22px;box-shadow:var(--shadow)}.avatarBtn{font-size:17px}.pageWrap{max-width:760px;margin:auto;padding:18px 18px 10px}.panel{display:none}.panel.active{display:block}.sectionHeading{margin:22px 4px 14px}.sectionHeading.large{margin-top:12px}.sectionHeading h1,.sectionHeading h2{margin:0;color:var(--blue);font-weight:950;letter-spacing:-.02em}.sectionHeading h1{font-size:28px}.sectionHeading h2{font-size:22px}.sectionHeading p{margin:8px 0 0;color:var(--muted);font-size:15px}.exploreGrid{display:grid;grid-template-columns:1fr 1fr;gap:22px 18px}.exploreCard{border:0;background:transparent;text-align:center;padding:6px}.exploreIcon{width:112px;height:112px;margin:auto;border-radius:28px;display:grid;place-items:center;font-size:62px;box-shadow:0 12px 26px rgba(40,78,145,.08);border:1px solid #edf0f6}.exploreCard.target .exploreIcon{background:#dff7ec}.exploreCard.edu .exploreIcon{background:#e8e0ff}.exploreCard.bank .exploreIcon{background:#e8f1ff}.exploreCard.topic .exploreIcon{background:#fff0d8}.exploreTitle{margin-top:10px;font-weight:900;color:var(--blue);font-size:17px}.continueCard{background:#fff;border:1px solid var(--line);border-radius:28px;padding:18px;display:grid;grid-template-columns:96px 1fr auto;gap:16px;align-items:center;box-shadow:var(--shadow)}.progressRing{width:82px;height:82px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;border:10px solid #E4E9F0;position:relative;color:var(--blue);font-weight:900}.progressRing:before{content:"";position:absolute;inset:-10px;border-radius:50%;border:10px solid transparent;border-right-color:var(--blue2);border-bottom-color:var(--blue2);transform:rotate(18deg)}.progressRing span{font-size:19px}.progressRing small{font-size:11px;margin-top:3px}.eyebrowBlue{color:var(--blue2);font-size:11px;font-weight:900;letter-spacing:.04em}.continueInfo h3{margin:5px 0;font-size:17px}.continueInfo p{margin:0;color:var(--muted);font-size:13px}.continueBtn,.primaryBtn,.courseText button{border:0;background:var(--blue2);color:#fff;font-weight:900;border-radius:14px;padding:12px 18px;white-space:nowrap}.continueBtn span{font-size:12px}.courseCard{background:linear-gradient(135deg,#f1f6ff,#e8f0ff);border-radius:30px;min-height:180px;padding:28px;display:flex;justify-content:space-between;align-items:center;overflow:hidden}.courseText{max-width:75%}.courseText h3{font-size:24px;color:var(--blue);margin:8px 0}.courseText p{color:#6e7786;margin:0 0 18px;line-height:1.5}.courseText button{background:#fff;color:var(--blue);padding:10px 14px}.courseArt{font-size:88px;opacity:.9}.practiceHero{background:#fff;border:1px solid var(--line);border-radius:28px;padding:22px;box-shadow:var(--shadow)}.practiceHero h1{font-size:29px;color:var(--blue);margin:8px 0}.practiceHero p{color:var(--muted)}.practiceFilters,.studyToolbar,.lookupBox{display:flex;gap:8px;flex-wrap:wrap}.practiceFilters select,.practiceFilters input,.studyToolbar select,.studyToolbar input,.lookupBox input{flex:1;min-width:140px;padding:11px 12px;border:1px solid var(--line);border-radius:13px;background:#fff}.gradeList{display:flex;flex-direction:column;gap:14px}.chooseClass{background:linear-gradient(135deg,#3b7ae8,#61b6e6);color:#fff;font-size:22px;font-weight:900;border-radius:26px;padding:22px;text-align:center;margin:14px 0 20px}.gradeRow{display:grid;grid-template-columns:64px 1fr 28px;align-items:center;gap:16px;border:1px solid var(--line);background:#fff;border-radius:26px;padding:17px;text-align:left;box-shadow:var(--shadow)}.gradeBook{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;font-size:26px}.g10 .gradeBook{background:#fff5dd}.g11 .gradeBook{background:#eaf1ff}.g12 .gradeBook{background:#eaf7ee}.gradeRow b{display:block;color:var(--blue);font-size:22px}.gradeRow small{display:block;color:var(--muted);font-size:14px;margin-top:4px}.gradeRow span{font-size:38px;color:#6d8ac0;text-align:center}.studyToolbar{margin:20px 0 8px}.lookupBox{background:#fff;border:1px solid var(--line);padding:12px;border-radius:20px;box-shadow:var(--shadow)}.lookupQuick{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.lookupQuick button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:9px 12px;color:var(--blue);font-weight:800}.lessonList{display:grid;gap:12px}.lesson{background:#fff;border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:var(--shadow)}.lessonTop{display:flex;justify-content:space-between;gap:12px}.lesson h3{margin:4px 0;font-size:18px;color:var(--blue)}.meta{display:block;color:var(--muted);font-size:12px}.lessonIcon{font-size:38px}.pill,.tag{display:inline-block;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900}.pill{background:var(--blue3);color:var(--blue2)}.tag{background:#eef7f0;color:#4d8f61;margin-top:6px}.mini{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.mini>div{background:#f8fafc;border:1px solid #eff2f6;border-radius:14px;padding:12px}.mini b{font-size:13px;color:#334155}.mini ul{margin:7px 0 0 17px;padding:0;color:#64748b}.mini li{font-size:12px;margin:4px 0}.lessonActions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.lessonActions a,.lessonActions button{border:1px solid #dce3ee;background:#fff;color:var(--blue);font-weight:900;padding:9px 12px;border-radius:11px;text-decoration:none}.qcard,.resultCard{background:#fff;border:1px solid var(--line);border-radius:22px;padding:18px;margin-top:14px;box-shadow:var(--shadow)}.qhead{display:flex;justify-content:space-between}.qcard h3{line-height:1.55}.option{display:block;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:13px;margin-top:8px;padding:12px}.option.correct{background:#eef8f0;border-color:#80b18b}.option.wrong{background:#fff0f0;border-color:#d98e8e}.feedback{margin-top:12px;padding:12px;border-radius:13px}.feedback.ok{background:#eef8f0}.feedback.bad{background:#fff1f1}.resultScore{font-size:50px;font-weight:950;color:var(--blue);text-align:center}
.resultTimeInfo{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0 4px;text-align:left}
.resultTimeInfo>div{background:#f7f9fc;border:1px solid #e5e9f1;border-radius:14px;padding:11px 12px;display:flex;flex-direction:column;gap:4px}
.resultTimeInfo b{font-size:12px;color:#526174}.resultTimeInfo span{font-weight:800;color:var(--blue);font-size:13px}
.missionCard,.historyCard,.authorCard{background:#fff;border:1px solid var(--line);border-radius:28px;padding:18px;box-shadow:var(--shadow)}.missionTop{display:flex;align-items:center;gap:12px}.missionIcon{width:56px;height:56px;border-radius:18px;background:#eef3ff;display:grid;place-items:center;font-size:30px}.missionTop h3{margin:0;color:var(--blue);font-size:20px}.missionTop p{margin:6px 0 0;color:var(--muted)}.statusPill{margin-left:auto;background:#e7efff;color:var(--blue2);padding:8px 10px;border-radius:999px;font-size:12px;font-weight:900}.missionStats{display:flex;align-items:baseline;gap:6px;margin:18px 0 10px}.missionStats> b{font-size:40px;color:var(--blue2)}.missionStats span{color:#536070}.missionStats .streak{margin-left:auto;color:#5a6474}.progressBar{height:10px;background:#e6eaf0;border-radius:999px;overflow:hidden}.progressBar span{display:block;height:100%;width:4%;background:var(--blue2);border-radius:999px}.missionBottom{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px}.missionBottom span{font-size:15px;color:#374151}.missionCard>small{display:block;color:#9aa3af;margin-top:10px}.historyCard{margin-top:14px}.historyHead{display:flex;justify-content:space-between;align-items:start}.historyHead h2{color:var(--blue);margin:0;font-size:20px}.historyHead p{color:var(--muted);margin:7px 0 0}.linkBtn{border:0;background:none;color:var(--blue2);font-weight:900}.historyGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:16px}.historyGrid div{background:#f4f6fb;border-radius:18px;padding:15px;text-align:center}.historyGrid small{display:block;color:#6f7784}.historyGrid b{display:block;font-size:26px;color:var(--blue);margin-top:5px}.quickTools{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:16px 2px}.quickTools button{border:0;background:transparent;color:#596575;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:25px}.quickTools span{font-size:12px}.authorCard{display:flex;gap:12px;align-items:center;margin-top:14px}.authorAvatar{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#204e9a,#7cc6ef);color:#fff;display:grid;place-items:center;font-size:24px;font-weight:900}.authorCard b{color:var(--blue);font-size:16px}.authorCard p{margin:5px 0 0;color:var(--muted);font-size:13px}.lookupResults{display:grid;gap:10px;margin-top:14px}.lookupResult{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px}.lookupResult b{color:var(--blue)}.lookupResult small{display:block;color:var(--muted);margin-top:5px}.empty{background:#fff;border:1px dashed #d6dbe5;border-radius:18px;padding:24px;color:var(--muted);text-align:center}.bottomNav{position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(255,255,255,.97);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);padding:8px 8px calc(8px + env(safe-area-inset-bottom));backdrop-filter:blur(12px)}.navItem{border:0;background:none;color:#7d8795;display:flex;flex-direction:column;align-items:center;gap:4px;border-radius:24px;padding:8px 3px}.navItem span{width:52px;height:38px;display:grid;place-items:center;border-radius:22px;font-size:28px;line-height:1}.navItem small{font-size:12px;font-weight:800}.navItem.active{color:var(--blue2)}.navItem.active span{background:var(--blue3)}footer{text-align:center;color:#9aa3af;font-size:11px;padding:26px 10px}
@media(min-width:761px){body{padding-bottom:20px}.bottomNav{position:sticky;max-width:760px;margin:20px auto 0;border:1px solid var(--line);border-radius:22px;bottom:auto}.pageWrap{padding-top:24px}}
@media(max-width:560px){.pageWrap{padding-left:14px;padding-right:14px}.brandTitle{font-size:19px}.brandTitle span{font-size:21px}.brandSub{font-size:11px}.exploreGrid{gap:18px 8px}.exploreIcon{width:95px;height:95px;font-size:50px}.exploreTitle{font-size:15px}.continueCard{grid-template-columns:86px 1fr;gap:12px}.continueBtn{grid-column:1 / -1;width:100%}.courseCard{min-height:175px;padding:22px}.courseText h3{font-size:21px}.courseArt{font-size:64px}.mini{grid-template-columns:1fr}.historyGrid{grid-template-columns:repeat(2,1fr)}.quickTools{grid-template-columns:repeat(5,1fr);gap:2px}.missionTop{align-items:flex-start}.statusPill{font-size:10px}.missionBottom{align-items:stretch;flex-direction:column}.practiceFilters select,.practiceFilters input,.studyToolbar select,.studyToolbar input,.lookupBox input{min-width:100%}.primaryBtn{width:100%}}
body.softBlue{--bg:#eef5ff}

/* ===== v0.5 PRO responsive admin ===== */
.adminEntry{width:100%;margin-top:16px;border:1px solid #dbe5f5;background:#eef4ff;color:var(--blue);border-radius:20px;padding:15px 16px;font-weight:950;text-align:left;box-shadow:var(--shadow)}
.statsStrip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0 16px}.statsStrip div{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;text-align:center;box-shadow:var(--shadow)}.statsStrip small{display:block;color:var(--muted);font-size:11px}.statsStrip b{display:block;color:var(--blue2);font-size:26px;margin-top:3px}
.adminGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.adminCard{background:#fff;border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:var(--shadow);margin-top:14px}.adminCardHead>div:first-child{display:flex;gap:12px;align-items:flex-start}.adminCard h2{color:var(--blue);font-size:20px;margin:0}.adminCardHead p{margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.adminIcon{width:50px;height:50px;border-radius:16px;background:var(--blue3);display:grid;place-items:center;font-size:25px;flex:0 0 auto}
.importForm{display:grid;gap:11px;margin-top:16px}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:150px;border:2px dashed #cbd7ea;border-radius:20px;background:#f8fbff;text-align:center;padding:18px;cursor:pointer;transition:.2s}.dropzone.dragging{border-color:var(--blue2);background:#eef5ff;transform:scale(1.01)}.dropzone input{display:none}.dropzone strong{color:var(--blue);font-size:14px}.dropzone span{color:var(--muted);font-size:11px;margin-top:5px}.importForm label:not(.dropzone){display:flex;flex-direction:column;gap:6px;color:#475569;font-size:12px;font-weight:800}.importForm input,.importForm select,.libraryFilters input,.libraryFilters select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:13px;background:#fff;font:inherit;color:var(--text)}.formRow{display:grid;grid-template-columns:1fr 1fr;gap:9px}.formActions{display:flex;gap:8px;margin-top:2px}.formActions>*{flex:1}.ghostBtn,.dangerBtn{border:1px solid #d8e0eb;background:#fff;color:var(--blue);font-weight:900;border-radius:12px;padding:10px 12px}.dangerBtn{color:#b34a4a;border-color:#efd2d2}.autoTag{background:#f5f8ff;border:1px solid #e6ebf5;border-radius:12px;padding:10px 12px;color:#5b6b82;font-size:12px;line-height:1.4}.autoTag span{color:var(--blue2);font-weight:900}.libraryCard{padding-bottom:8px}.libraryHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.libraryHead h2{margin:0;color:var(--blue);font-size:20px}.libraryHead p{margin:5px 0 0;color:var(--muted);font-size:13px}.libraryFilters{display:grid;grid-template-columns:120px 140px minmax(150px,1fr) auto;gap:7px;align-items:center;max-width:660px}.libraryList{display:grid;gap:9px;margin-top:14px}.libraryItem{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #eef1f5;border-radius:16px;padding:12px}.libraryMain{display:flex;gap:10px;align-items:flex-start;min-width:0}.libraryIcon{width:42px;height:42px;border-radius:13px;background:#f4f7fb;display:grid;place-items:center;flex:0 0 auto}.libraryMain b{display:block;color:var(--blue);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px}.libraryMain small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.libraryMain p{margin:5px 0 0;color:#748092;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:520px}.libraryActions{display:flex;gap:6px;flex:0 0 auto}.importLogList{display:grid;gap:8px;margin-top:10px}.logRow{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #eef1f5}.logRow:last-child{border-bottom:0}.logRow>span{font-size:20px}.logRow b{display:block;color:var(--blue);font-size:13px}.logRow small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.loading{padding:18px;color:var(--muted);text-align:center}.modal{position:fixed;inset:0;background:rgba(13,27,49,.45);backdrop-filter:blur(4px);z-index:120;padding:18px;display:grid;place-items:center}.modal.hidden{display:none}.modalBox{width:min(760px,100%);max-height:min(88vh,920px);overflow:auto;background:#fff;border-radius:26px;box-shadow:0 24px 80px rgba(0,0,0,.2);padding:18px}.modalHead{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.modalHead h2{margin:7px 0 0;color:var(--blue)}.modalHead p{margin:5px 0 0;color:var(--muted);font-size:12px}.closeBtn{border:0;background:#f2f4f8;width:38px;height:38px;border-radius:50%;font-size:26px;color:#6b7483}.viewerBody{margin-top:16px;background:#fafbfd;border:1px solid #edf0f4;border-radius:18px;padding:16px;line-height:1.65}.viewerText{font-size:14px;color:#334155}.viewerBody h1,.viewerBody h2,.viewerBody h3,.viewerBody h4{color:var(--blue)}.viewerBody img{max-width:100%;height:auto}.viewerImage{display:block;margin:0 auto 12px;border-radius:14px;border:1px solid #e6ebf2}.previewBody{margin-top:14px}.previewSummary{display:flex;justify-content:space-between;gap:10px;align-items:center;background:#f5f8ff;border-radius:16px;padding:12px}.previewSummary b{color:var(--blue);font-size:13px}.previewSummary span{color:var(--muted);font-size:11px}.previewItem{padding:10px 0;border-bottom:1px solid #edf0f5}.previewItem b{display:block;color:#334155;font-size:13px}.previewItem span{display:block;color:var(--muted);font-size:11px;margin-top:4px}.textPreview{margin-top:12px;padding:12px;border:1px solid #edf0f4;border-radius:14px;white-space:pre-wrap;max-height:420px;overflow:auto;font-size:12px;color:#465468;line-height:1.55}.modalActions{display:flex;justify-content:flex-end;margin-top:12px}.accountPanelActions{display:flex;justify-content:flex-end;margin-top:18px}.accountPanelActions .primaryBtn{min-width:150px}.shortAnswerWrap{display:grid;gap:9px;margin-top:14px}.shortAnswerWrap label{color:#0B5A35}.shortAnswerWrap .primaryBtn{justify-self:start}.missionRewards{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.missionRewards span{padding:8px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#f7f9fc;color:#94a3b8;font-size:11px;font-weight:800;transition:.2s}.missionRewards span.unlocked{border-color:#f2cc73;background:#fff8dc;color:#9a6510;box-shadow:0 3px 10px #f2cc7333}.answerLockedPanel{margin-top:20px;padding:16px;border:1px solid #f1d9a9;border-radius:14px;background:#fff9eb;color:#78551d;text-align:left}.answerLockedPanel h3{margin:0 0 6px;color:#9a6510;font-size:15px}.answerLockedPanel p{margin:0;font-size:13px;line-height:1.55}.examBlurred{filter:blur(12px);pointer-events:none;user-select:none}.examBlurred::after{content:'Đã tạm ẩn vì rời màn hình làm bài';display:block;filter:none}
@media(max-width:900px){.adminGrid{grid-template-columns:1fr}.libraryHead{flex-direction:column}.libraryFilters{width:100%;max-width:none}}
@media(max-width:560px){.statsStrip{grid-template-columns:repeat(3,1fr)}.adminCard{padding:15px}.formRow{grid-template-columns:1fr}.formActions{flex-direction:column}.libraryFilters{grid-template-columns:1fr 1fr}.libraryFilters input{grid-column:1 / -1}.libraryFilters .ghostBtn{grid-column:1 / -1}.libraryItem{align-items:flex-start;flex-direction:column}.libraryMain{width:100%}.libraryMain b{max-width:calc(100vw - 110px)}.libraryMain p{max-width:calc(100vw - 110px)}.libraryActions{width:100%}.libraryActions button{flex:1}.previewSummary{flex-direction:column;align-items:flex-start}.modal{padding:10px}.modalBox{border-radius:20px;padding:14px}}
@media(min-width:1100px){.pageWrap{max-width:1040px}.headerInner{max-width:1040px}.adminGrid{grid-template-columns:1fr 1fr}.libraryFilters{max-width:760px}}

/* v0.5.1 — danh mục chọn chương/bài */
.importForm select { width:100%; }
.importForm select:disabled { opacity:.6; background:#f1f3f7; cursor:not-allowed; }
.importForm label > select { margin-top:6px; }
@media (max-width: 720px){
  .adminCard .formRow{grid-template-columns:1fr;}
  .importForm .formActions{position:sticky;bottom:8px;z-index:4;background:rgba(247,248,252,.96);padding-top:8px;}
}

.documentFrameWrap{width:100%;background:#e9edf3;border:1px solid #d7dee8;border-radius:16px;padding:10px;box-sizing:border-box}
.documentFrame{display:block;width:100%;height:78vh;min-height:520px;border:0;border-radius:10px;background:#fff}
.textFallback{margin-top:12px;background:#fff;border:1px solid #dfe5ec;border-radius:12px;padding:10px 14px}
.textFallback summary{cursor:pointer;font-weight:700;color:#1f5f9e}
@media(max-width:720px){.documentFrame{height:72vh;min-height:420px}.documentFrameWrap{padding:6px;border-radius:12px}}


/* ===== v0.6 mobile-first visual direction: xanh lá Sinh học ===== */
:root{--blue:#0B5A35;--blue2:#16884E;--blue3:#EAF7F0;--bg:#F6FAF7;--text:#173125;--muted:#6B7C72;--line:#DDEBE2;--shadow:0 10px 30px rgba(11,90,53,.08);--success:#2F9A59;--purple:#6E6A8F;--orange:#D79A2B}
body{background:linear-gradient(180deg,#F8FCF9 0%,#F4F8F5 100%)}
.appHeader{background:rgba(248,252,249,.95);border-bottom-color:#DDEBE2}
.brandTitle{color:#0B5A35;letter-spacing:-.03em}.brandTitle span{color:#16884E}.brandSub{color:#728279}
.iconBtn,.avatarBtn{color:#0B5A35;border-color:#DDEBE2;box-shadow:0 8px 22px rgba(11,90,53,.07)}
.primaryBtn,.continueBtn,.courseText button,.qcard .primaryBtn{background:linear-gradient(135deg,#0B6B3C,#169556);box-shadow:0 7px 18px rgba(22,149,86,.18)}
.sectionHeading h1,.sectionHeading h2,.courseText h3,.practiceHero h1,.lesson h3,.gradeRow b,.authorCard b,.libraryHead h2,.libraryMain b{color:#0B5A35}
.pill{background:#E8F6EE;color:#0F7142}.tag{background:#EEF8F1;color:#2A8A55}
.courseCard{background:linear-gradient(135deg,#EEF8F2,#E2F4E9)}
.chooseClass{background:linear-gradient(135deg,#0D6B3C,#2D9B59)}
.gradeRow{box-shadow:0 10px 26px rgba(11,90,53,.06)}
.g10 .gradeBook{background:#F5F1DD}.g11 .gradeBook{background:#E8F5EF}.g12 .gradeBook{background:#EAF5E8}
.bottomNav{box-shadow:0 -8px 24px rgba(11,90,53,.08)}
.navItem.active{color:#0B7A45}
.missionIcon{background:#EAF7F0}.statusPill{background:#E5F5EC;color:#0B7542}.progressBar span{background:linear-gradient(90deg,#0B6B3C,#37A967)}
.quickTools button{color:#557164}.authorAvatar{background:linear-gradient(135deg,#0B6B3C,#65B87D)}
.adminCard{box-shadow:0 10px 28px rgba(11,90,53,.06)}
.dropzone{border-color:#C9E1D2;background:#F5FBF7}.dropzone strong{color:#0B6B3C}
.viewerBody{background:#F9FCFA;border-color:#DDEBE2}
.documentFrameWrap{background:#EAF2EC;border-color:#D4E3D9}

/* DOCX ordered HTML fallback */
.orderedDocument{font-size:14px;color:#263A2E}.docxParagraph{margin:0 0 10px;line-height:1.65}.docxParagraph:last-child{margin-bottom:0}.docxInlineImage{display:inline-block;max-width:min(100%,720px);height:auto;vertical-align:middle;margin:4px 6px;border-radius:8px}.docxTableWrap{width:100%;overflow-x:auto;margin:12px 0}.docxTable{border-collapse:collapse;width:max-content;min-width:100%;font-size:13px}.docxTable td{border:1px solid #BFD4C6;padding:7px 9px;vertical-align:top}.plainDocument{white-space:pre-wrap;font:inherit;margin:0}

/* ===== v0.6.1: mobile app layout inspired by the supplied product reference ===== */
:root{
  --green-dark:#0B6B3C;
  --green:#168B4F;
  --green-soft:#EAF7F0;
  --green-line:#D5E9DC;
  --ink:#153226;
}
body{padding-bottom:82px}
.appHeader{position:sticky;top:0;z-index:50;background:rgba(250,253,251,.96);backdrop-filter:blur(16px);box-shadow:0 3px 18px rgba(11,90,53,.05)}
.headerInner{max-width:760px;margin:auto}
.brandTitle{font-size:20px;line-height:1}.brandTitle span{color:var(--green)}.brandSub{font-size:11px}
.pageWrap{max-width:760px;margin:auto;padding:12px 12px 30px}
.panel{animation:panelIn .2s ease}
@keyframes panelIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.welcomeCard{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px;border-radius:24px;background:linear-gradient(135deg,#0B6B3C 0%,#199B59 100%);color:#fff;box-shadow:0 14px 30px rgba(11,107,60,.18);overflow:hidden;position:relative}
.welcomeCard:after{content:"";position:absolute;width:150px;height:150px;border-radius:50%;right:-55px;top:-55px;background:rgba(255,255,255,.08)}
.welcomeCopy{position:relative;z-index:1}.welcomeCopy h1{font-size:25px;line-height:1.15;margin:7px 0 7px;color:#fff}.welcomeCopy h1 strong{font-weight:950}.welcomeCopy p{margin:0;font-size:12px;opacity:.92;max-width:270px}.eyebrowGreen{font-size:11px;font-weight:950;letter-spacing:.08em;color:var(--green);text-transform:uppercase}.welcomeCard .eyebrowGreen{color:#DFF6E8}.welcomeArt{font-size:70px;position:relative;z-index:1;filter:drop-shadow(0 5px 8px rgba(0,0,0,.12))}
.statsHome{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.statsHome>div{background:#fff;border:1px solid var(--green-line);border-radius:17px;padding:12px;text-align:center;box-shadow:0 7px 18px rgba(11,90,53,.05)}.statsHome b{display:block;color:var(--green-dark);font-size:22px}.statsHome span{font-size:11px;color:var(--muted)}
.sectionHeading{margin:18px 2px 10px}.sectionHeading h2{font-size:14px;letter-spacing:.02em}.sectionHeading.large h1{font-size:22px}.sectionHeading .linkBtn{font-size:11px}
.dailyCard{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;background:#fff;border:1px solid var(--green-line);border-radius:20px;padding:13px;box-shadow:0 8px 22px rgba(11,90,53,.06)}.dailyIcon{width:48px;height:48px;border-radius:15px;background:var(--green-soft);display:grid;place-items:center;font-size:25px}.dailyMain b{display:block;color:var(--green-dark);font-size:13px}.dailyMain span{display:block;color:var(--muted);font-size:11px;margin-top:4px}.miniProgress{height:6px;background:#edf3ef;border-radius:999px;margin-top:8px;overflow:hidden}.miniProgress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--green-dark),#38a86a);border-radius:999px}.dailyCard .primaryBtn{padding:9px 12px;font-size:11px;white-space:nowrap}
.topicGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.topicGrid button{background:#fff;border:1px solid var(--green-line);border-radius:18px;padding:12px 8px;min-height:92px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:7px;color:var(--ink);box-shadow:0 6px 15px rgba(11,90,53,.04)}.topicGrid button span{font-size:28px}.topicGrid button b{font-size:11px;color:var(--green-dark)}
.examPreview,.resultPreview{background:#fff;border:1px solid var(--green-line);border-radius:20px;padding:14px;box-shadow:0 8px 22px rgba(11,90,53,.05)}.examPreview{display:flex;justify-content:space-between;align-items:center;gap:10px}.examPreview>div{display:flex;flex-direction:column;gap:4px}.examPreview b{font-size:14px;color:var(--ink)}.examPreview small{font-size:11px;color:var(--muted)}.examBadge{display:inline-flex;width:max-content;background:var(--green-soft);color:var(--green-dark);padding:4px 8px;border-radius:999px;font-size:9px;font-weight:950}.outlineBtn{border:1px solid var(--green);color:var(--green-dark);background:#fff;border-radius:10px;padding:8px 11px;font-weight:850}
.resultPreview{display:flex;align-items:center;gap:14px}.scoreRing{width:90px;height:90px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;border:7px solid #dcefe3;background:#fff}.scoreRing b{font-size:20px;color:var(--green-dark)}.scoreRing span{font-size:9px;color:var(--muted)}.resultBars{flex:1;display:grid;gap:9px}.resultBars div{display:grid;gap:4px;font-size:10px;color:var(--muted)}.resultBars b{height:7px;background:linear-gradient(90deg,#198e51,#63b97d);border-radius:999px;display:block}
.lessonActions{margin-top:12px}.lessonActions button,.lessonActions a{flex:1;min-width:0}.disabledAction{opacity:.5;cursor:not-allowed!important;background:#f7faf8!important;color:#839088!important}
.examList{display:grid;gap:10px}.examCard{background:#fff;border:1px solid var(--green-line);border-radius:20px;padding:14px;display:flex;justify-content:space-between;align-items:center;gap:12px;box-shadow:0 8px 22px rgba(11,90,53,.05)}.examCard h3{font-size:15px;margin:8px 0 3px;color:var(--green-dark)}.examCard p{font-size:11px;color:var(--muted);margin:0}.examCard .primaryBtn{white-space:nowrap;padding:10px 12px}
.practiceHero{background:linear-gradient(135deg,#EFFAF3,#E2F3E9);border-color:#CDE6D6}.practiceHero h1{font-size:24px;color:var(--green-dark)}
.bottomNav{max-width:760px;margin:auto;left:0;right:0;border-top:1px solid var(--green-line);grid-template-columns:repeat(5,1fr);padding-left:4px;padding-right:4px}.navItem span{font-size:23px}.navItem small{font-size:10px}.navItem.active span{background:var(--green-soft);color:var(--green-dark)}
.viewerBody img{max-width:100%;height:auto}
@media(max-width:560px){.welcomeCard{padding:16px}.welcomeCopy h1{font-size:22px}.welcomeArt{font-size:54px}.dailyCard{grid-template-columns:auto 1fr}.dailyCard .primaryBtn{grid-column:2;justify-self:start;margin-top:2px}.topicGrid{grid-template-columns:repeat(3,1fr)}.examCard{align-items:flex-start}.examCard .primaryBtn{padding:9px 10px}.sectionHeading.large p{font-size:12px}}
@media(max-width:390px){.topicGrid button{min-height:82px}.topicGrid button span{font-size:24px}.topicGrid button b{font-size:10px}.statsHome b{font-size:20px}}

.examTop{display:flex;justify-content:space-between;position:sticky;top:0;z-index:5;background:#fff;padding:10px;border-bottom:1px solid var(--line);margin-bottom:12px}
.examSection{margin:22px 0 8px;padding:10px 14px;border-radius:14px;background:#eaf6ee;color:#0b5a35}
.examQuestion h3{line-height:1.55}.examOption{display:block;padding:11px 12px;margin:7px 0;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer}
.examOption input{margin-right:7px}.shortAnswer{width:100%;box-sizing:border-box;padding:12px;border:1px solid var(--line);border-radius:10px;font-size:16px}
.examSubmit{position:sticky;bottom:10px;text-align:center;padding:12px;background:rgba(247,248,252,.96);z-index:4}
.scoringCard{margin-top:14px}.scoreMap{margin-top:12px}

.questionMedia{max-width:100%;height:auto;display:block;margin:10px auto;border-radius:8px}


/* v0.8 structured exam rendering */
.questionRich, .questionRich * { max-width:100%; }
.questionRich { font-size:1.05rem; line-height:1.75; color:#1f2937; overflow-wrap:anywhere; }
.questionRich .docxParagraph { margin:10px 0; }
.questionRich img, .examOption img, .option img { max-width:100%; height:auto; display:inline-block; vertical-align:middle; }
.questionRich .docxInlineImage { display:block; margin:12px auto; max-width:min(100%,760px); border-radius:6px; }
.examOption { align-items:flex-start; }
.examOption > span, .option > span { flex:1; line-height:1.6; }
.examOption b { flex:0 0 auto; }
.resultCardDetailed { text-align:center; }
.resultCardDetailed h2 { margin:12px 0 4px; }
.resultBreakdown { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:20px 0; }
.resultBreakdown > div { background:#f5f7fb; border:1px solid #e4e8f0; border-radius:10px; padding:12px; display:flex; flex-direction:column; gap:5px; }
.resultBreakdown span { font-weight:700; color:#4361ee; }
.resultActions { display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-top:18px; }
.mockTarget input { width:100%; }
.curriculumTarget { display:grid; }
.topicTarget { display:block; }
@media (max-width:700px){.resultBreakdown{grid-template-columns:1fr}.resultTimeInfo{grid-template-columns:1fr}.questionRich{font-size:1rem}.examOption{padding:11px 10px}}

/* v0.8.2: rich structured exam fidelity */
.questionRich p{margin:0 0 10px}
.questionRich table,.previewBody table{border-collapse:collapse;width:100%;margin:12px 0;background:#fff}
.questionRich th,.questionRich td,.previewBody th,.previewBody td{border:1.5px solid #63766c;padding:7px 9px;vertical-align:top}
.questionRich tr:nth-child(even),.previewBody tr:nth-child(even){background:#fbfdfb}
.questionRich img,.examOption img,.previewOption img{max-width:100%;height:auto}
.questionRich .docxInlineImage,.examOption .docxInlineImage,.previewOption .docxInlineImage{display:block;max-width:min(100%,760px);height:auto;margin:8px auto;border-radius:6px}
.math-container{display:inline-block;overflow-x:auto;max-width:100%;padding:0 2px;background:transparent;border:0;margin:0}
.examSection{padding:14px 16px;border:1px solid #CFE3D5;border-left:6px solid #168B4F;background:linear-gradient(135deg,#F0FAF4,#E7F5EC);border-radius:15px;margin:20px 0 12px}
.examSection h2{margin:3px 0 4px;font-size:17px;color:#0B6B3C}
.examSection p{margin:0;font-size:12px;color:#557164}
.sectionKicker{font-size:10px;font-weight:950;letter-spacing:.12em;color:#168B4F}
.examQuestion .qhead{margin-bottom:8px}.examQuestion .qhead .pill{font-size:12px}
.answerRevealSetting{display:flex;align-items:center;gap:8px;margin:12px 0 6px;padding:11px 13px;border:1px solid #CFE3D5;background:#F4FBF6;border-radius:12px;font-weight:800;color:#0B6B3C}
.formHint{font-size:11px;color:#6A7C72;margin-bottom:8px}
.answerResultPanel{margin-top:20px;text-align:left;border:1px solid #D8E7DC;border-radius:16px;background:#F8FCF9;padding:14px}
.answerResultPanel h3{margin:0 0 10px;color:#0B6B3C;font-size:15px}
.answerResultRow{display:grid;grid-template-columns:100px 80px 1fr;gap:10px;align-items:center;padding:9px 0;border-top:1px dashed #D9E5DD;font-size:12px}
.answerResultRow:first-of-type{border-top:0}.answerState.ok{color:#15803D;font-weight:900}.answerState.bad{color:#B91C1C;font-weight:900}.answerKey{color:#24382E}
.previewQuestionHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}
.previewOption{display:flex;align-items:flex-start;gap:8px;margin:6px 0;padding:8px 10px;border:1px solid #E1EAE4;border-radius:10px;background:#fff}
.previewOption span{flex:1;min-width:0}.previewOption img{margin:4px 0;display:block}.previewItem .questionRich{margin-bottom:8px}
@media(max-width:700px){.answerResultRow{grid-template-columns:72px 70px 1fr}.answerResultPanel{padding:10px}.examSection h2{font-size:15px}}

/* v0.8.3 */
.scoringTotals{grid-template-columns:repeat(3,1fr)}.scoringAdvanced{opacity:.72;margin-top:8px}.attemptHistoryList{display:grid;gap:8px;margin-top:14px}.attemptRow{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 12px;background:#f8fafc;border:1px solid #e7ecf2;border-radius:13px}.attemptRow b{display:block;color:#0B5A35;font-size:13px}.attemptRow small{display:block;color:#748092;font-size:10px;margin-top:3px}.attemptScore{text-align:right}.attemptScore b{color:#15803D}.examOption.tf{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:8px}.tfLabel{grid-column:1;flex:0 0 auto}.tfText{grid-column:2;min-width:0;width:100%;overflow-wrap:anywhere;line-height:1.65}.tfChoices{grid-column:3;display:flex;gap:5px;flex:0 0 auto}.tfChoice{width:34px;height:32px;border:1px solid #cfd7e3;border-radius:9px;background:#fff;font-weight:900;color:#334155;cursor:pointer}.tfChoice.selected{background:#0B6B3C;color:#fff;border-color:#0B6B3C}.examOption .docxInlineImage,.examOption img,.previewOption img{max-width:220px !important;max-height:150px !important;width:auto !important;height:auto !important;object-fit:contain;display:block;margin:3px 0}.previewOption img{max-width:180px !important;max-height:120px !important}.questionRich table{border:1.5px solid #63766c}.questionRich td,.questionRich th{border:1.5px solid #63766c}
@media(max-width:700px){.scoringTotals{grid-template-columns:1fr}.attemptRow{align-items:flex-start;flex-direction:column}.attemptScore{text-align:left}.examOption.tf{grid-template-columns:auto minmax(0,1fr);}.tfChoices{grid-column:2;align-self:flex-start;margin-top:2px}}

/* v0.8.4: scoring by actual question counts + exam review/editing */
.scoringPerQuestion{grid-template-columns:repeat(3,1fr)}
.examManagementCard{margin-top:14px}
.examAdminList,.examReviewList,.historyDetailList{display:grid;gap:10px;margin-top:14px}
.examAdminRow{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #e5ece7;border-radius:14px;padding:12px;background:#fbfefc}
.examAdminTitle{display:flex;align-items:center;gap:8px}.examAdminTitle b{color:#0B5A35;font-size:13px}.examAdminRow small{display:block;color:#748092;font-size:10px;margin-top:5px}
.reviewExamActions{display:flex;gap:8px;justify-content:flex-end;margin:12px 0}
.reviewQuestion{border:1px solid #e2eae5;border-radius:15px;padding:13px;background:#fff}
.reviewQHead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:9px;color:#0B5A35;font-size:12px}
.reviewQHead span{font-weight:800;color:#1b7a48}.reviewOption{display:flex;align-items:flex-start;gap:7px;padding:8px 10px;border:1px solid #e6ebef;border-radius:10px;margin:6px 0;background:#fff}.reviewOption input{margin-top:3px}.reviewOption span{flex:1;min-width:0}.reviewOption.tf{align-items:flex-start}.answerMark{font-size:10px;padding:3px 6px;border-radius:999px}.answerMark.true{color:#15723f;background:#e3f4e8}.answerMark.false{color:#a43a3a;background:#fdeaea}.reviewExplanation{margin-top:10px;padding:10px;border-left:4px solid #9ed1b2;background:#f6fbf8;border-radius:9px;font-size:12px;color:#34473c}.reviewActions{display:flex;gap:7px;justify-content:flex-end;margin-top:10px}.reviewShort,.previewShortAnswer{padding:9px 10px;border:1px dashed #9eb4a5;border-radius:10px;background:#f8fbf9;margin:8px 0}.previewCorrect{border-color:#8ac9a4!important;background:#f3fbf6!important}.previewOption em{margin-left:auto;color:#15723f;font-style:normal;font-weight:900;font-size:10px}.previewExplanation{margin-top:8px;padding:8px 10px;background:#f8faf9;border-radius:9px;font-size:11px;color:#5c6f63}.editQuestionForm{display:grid;gap:10px}.editQuestionForm label{display:grid;gap:6px;color:#43534a;font-size:12px;font-weight:800}.editQuestionForm textarea,.editQuestionForm input{width:100%;padding:10px;border:1px solid #d9e3dc;border-radius:10px;font:inherit}.editQuestionForm textarea{min-height:90px;resize:vertical}.editOptions{display:grid;gap:8px}.editOptions>label{display:grid;grid-template-columns:90px 1fr;align-items:start;gap:8px}.historyDetailRow{border:1px solid #e6ebef;border-radius:12px;padding:10px;background:#fff;display:grid;gap:5px;font-size:12px}.historyDetailRow span{color:#5f6f65}.historyDetailRow p{margin:4px 0 0;color:#405148}
.attemptRow{border:1px solid #e7ecf2;cursor:pointer;text-align:left;width:100%;font:inherit}
.solutionText{margin-top:7px;padding:7px 8px;background:#f8fbf9;border-left:3px solid #9ed1b2;border-radius:7px;font-size:11px;line-height:1.55}.solutionText b{color:#0B6B3C}
.questionRich table{table-layout:auto}.questionRich table img{max-width:100%;height:auto}.questionRich td img,.questionRich th img{max-width:100%;height:auto}
@media(max-width:700px){.scoringPerQuestion{grid-template-columns:1fr}.examAdminRow{flex-direction:column;align-items:flex-start}.reviewExamActions,.reviewActions{justify-content:stretch}.reviewExamActions>* ,.reviewActions>*{flex:1}.reviewQHead{flex-direction:column;align-items:flex-start}.editOptions>label{grid-template-columns:1fr}}

/* v0.8.5 rich review + games + table fidelity */
.docxTableWrap{overflow:auto;margin:14px 0;max-width:100%}.docxTable{border-collapse:collapse;border-spacing:0;width:max-content;min-width:100%;table-layout:auto;background:#fff}.docxTable td,.docxTable th{border:1px solid #6f8076;padding:7px 10px;vertical-align:middle;white-space:normal}.docxTable th{font-weight:900;background:#f5f8f6}.docxTable p{margin:0 0 4px}.docxTable p:last-child{margin-bottom:0}.gameSelectBox,.reviewGameBox{margin:12px 0;padding:12px;border:1px solid #d9e7dd;background:#f7fbf8;border-radius:14px}.gameSelectHead{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-bottom:9px}.gameSelectHead small,.reviewGameBox small{color:#6b7b72}.gameCheckGrid,.reviewGameGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.gameCheckGrid label,.reviewGameCheck{padding:9px 10px;background:#fff;border:1px solid #e0ebe3;border-radius:10px;font-weight:800;font-size:11px}.gameHubGrid{display:grid;gap:14px}.gameHubCard{background:#fff;border:1px solid var(--line);border-radius:22px;padding:15px;box-shadow:var(--shadow)}.gameHubTitle>div{display:flex;align-items:center;gap:10px}.gameIcon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:#eef4ff;font-size:26px}.gameHubTitle h3{margin:0;color:var(--blue);font-size:17px}.gameHubTitle p{margin:3px 0 0;color:var(--muted);font-size:11px}.gameHubList{display:grid;gap:7px;margin-top:10px}.gameExamItem{border:1px solid #e5ebf2;background:#fff;border-radius:13px;padding:10px 11px;display:flex;justify-content:space-between;align-items:center;text-align:left}.gameExamItem b{display:block;color:var(--blue);font-size:12px}.gameExamItem small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.gameExamItem span{font-size:18px;color:var(--blue2)}.activeGameCard{background:linear-gradient(135deg,#fff,#f5fbf7);border:1px solid #d7e6dc;border-radius:24px;padding:18px;box-shadow:var(--shadow);margin-top:14px}.activeGameTop{display:flex;justify-content:space-between;align-items:center;color:#65776c;font-size:12px}.activeGameCard h2{font-size:22px;line-height:1.6;color:#173b2b;margin:14px 0}.gameProgress{height:8px;background:#e9efeb;border-radius:999px;overflow:hidden}.gameProgress span{display:block;height:100%;background:#148d50;border-radius:999px}.gameOptions{display:grid;gap:9px;margin-top:14px}.gameAnswer{border:1px solid #dce6e1;background:#fff;padding:12px;border-radius:14px;display:flex;gap:9px;text-align:left;font:inherit}.gameAnswer b{width:30px;height:30px;border-radius:50%;background:#eef2f7;display:grid;place-items:center;flex:0 0 30px}.gameAnswer.correct{border-color:#74b38e;background:#eef9f2}.gameAnswer.wrong{border-color:#d98e8e;background:#fff0f0}.gameHint{margin-top:12px;padding:10px;border-radius:12px;background:#f4f8f5;color:#607268;font-size:11px}.prizeLadder{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:11px 0}.prizeLadder span{padding:5px 4px;border-radius:8px;background:#eef3ff;color:#3d5c91;text-align:center;font-size:9px}.prizeLadder span.current{background:#dff5e8;color:#0b6b3c;font-weight:900}.historyFullList{gap:12px}.historyFullCard{background:#fff;border:1px solid #e3ebe6;border-radius:16px;padding:13px}.historyFullHead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.historyFullHead .good{color:#177542;font-weight:900}.historyFullHead .bad{color:#b53c3c;font-weight:900}.historyQuestion{padding:11px 12px;border-left:4px solid #4da878;background:#f7fbf8;border-radius:10px;line-height:1.65;margin-bottom:9px}.historyOption{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border:1px solid #e6ebef;border-radius:10px;margin:6px 0}.historyOption.right{border-color:#8bc7a0;background:#f3fbf6}.historyOption.chosen{box-shadow:inset 0 0 0 2px #6b8de3}.historyOption span{flex:1;min-width:0}.historyOption em,.historyOption strong{font-size:10px;padding:3px 6px;border-radius:999px;white-space:nowrap}.historyOption em{background:#eef2ff;color:#405d9a;font-style:normal}.historyOption strong{background:#e3f4e9;color:#15723f}.historyShort{padding:10px;border:1px dashed #9eb4a5;border-radius:10px;background:#fafcfb;line-height:1.7}.reviewExplanation{line-height:1.65}
@media(max-width:700px){.gameCheckGrid,.reviewGameGrid{grid-template-columns:1fr 1fr}.gameSelectHead{flex-direction:column}.activeGameCard h2{font-size:18px}.prizeLadder{grid-template-columns:repeat(3,1fr)}.historyFullHead{flex-direction:column;align-items:flex-start}.bottomNav{grid-template-columns:repeat(6,1fr)}.navItem span{font-size:22px;width:44px}}

/* v0.8.6 game hub + visual game engines */
.gameSectionBucket{margin:18px 0 24px}.gameBucketHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.gameBucketHead>div{display:flex;align-items:center;gap:10px}.gameBucketIcon{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(145deg,#eef8f1,#edf3ff);font-size:25px;box-shadow:0 8px 18px rgba(33,77,55,.08)}.gameBucketHead h2{margin:0;color:#0b5a35;font-size:18px}.gameBucketHead p{margin:2px 0 0;color:#78867e;font-size:11px}.gameLessonGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.gameLessonCard{position:relative;overflow:hidden;background:linear-gradient(160deg,#ffffff 0%,#f6fbf7 100%);border:1px solid #dce9df;border-radius:22px;padding:15px;box-shadow:0 10px 28px rgba(22,72,45,.08)}.gameLessonCard:before{content:"";position:absolute;inset:auto -25px -35px auto;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#d9f7e6,rgba(217,247,230,0));opacity:.75}.gameLessonHead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.gameLessonHead h3{margin:4px 0 3px;color:#0b5a35;font-size:15px;line-height:1.35}.gameLessonHead small{color:#718077;font-size:10px}.gameMiniPill{display:inline-block;padding:3px 7px;border-radius:999px;background:#e9f8ef;color:#157344;font-size:9px;font-weight:900}.gameSticker{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:#fff;border:1px solid #e5ece7;box-shadow:0 6px 12px rgba(50,80,65,.08);font-size:22px}.gameLessonBlurb{color:#64736a;font-size:11px;line-height:1.45;margin:9px 0 11px}.gameLessonActions{display:grid;grid-template-columns:1fr 1fr;gap:8px;position:relative;z-index:1}.gameLaunchBtn{border:1px solid #dbe7e0;border-radius:14px;background:#fff;padding:10px 9px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;text-align:left;font:inherit;cursor:pointer;transition:transform .18s,box-shadow .18s,border-color .18s,background .18s}.gameLaunchBtn:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(30,80,55,.10);border-color:#9bc9af}.gameLaunchBtn span{font-size:18px}.gameLaunchBtn b{font-size:10px;color:#194b33;line-height:1.3}.gameLaunchBtn em{font-style:normal;color:#197b48;font-size:10px;font-weight:900}.game-emptyHero{}.gameEmptyHero{text-align:center;padding:28px;border:1px dashed #c8dbcf;border-radius:20px;background:linear-gradient(145deg,#fff,#f6fbf7)}.gameEmptyIcon{font-size:42px}.gameEmptyHero h2{margin:8px 0 3px;color:#0b5a35}.gameEmptyHero p{max-width:560px;margin:0 auto;color:#718077;line-height:1.6;font-size:12px}.lessonGames{margin-top:11px;padding:10px 11px;background:linear-gradient(145deg,#f7fcf8,#f1f8ff);border:1px solid #dce9df;border-radius:15px}.lessonGamesTitle{display:block;color:#0b5a35;font-size:11px;font-weight:900;margin-bottom:7px}.lessonGameChips{display:flex;gap:7px;flex-wrap:wrap}.lessonGameChip{border:1px solid #cfe3d5;background:#fff;border-radius:999px;padding:7px 10px;font:inherit;font-size:10px;font-weight:800;color:#16663d;cursor:pointer}.lessonGameChip:hover{background:#effbf3;transform:translateY(-1px)}
.activeGameCard{position:relative;overflow:hidden}.activeGameCard:before{content:"";position:absolute;inset:-80px auto auto -80px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,#dff6e8 0%,rgba(223,246,232,0) 70%);pointer-events:none}.gameHeroBar{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:12px 0}.gameHeroBar b{display:block;color:#0c5d37;font-size:14px}.gameHeroBar small{display:block;color:#718078;font-size:11px;margin-top:2px}.gameScoreBadge{padding:7px 11px;border-radius:999px;background:#fff4d6;color:#9a6c06;font-weight:900;border:1px solid #f3dfaa}.gameQuestionCard{position:relative;padding:16px 17px;margin-top:14px;border-radius:18px;background:linear-gradient(145deg,#fff,#f5fbf7);border:1px solid #d7e7dc;box-shadow:0 10px 25px rgba(26,78,49,.07)}.gameQuestionNo{font-size:9px;letter-spacing:.12em;color:#1b7c4c;font-weight:900}.gameQuestionCard h2{margin:7px 0 0;font-size:20px;line-height:1.55;color:#1b3b2b}.gameFooterHint{margin-top:13px;padding:9px 11px;border-radius:12px;background:#f5f8f6;color:#66756d;font-size:10px}.gameAnswer{position:relative;z-index:2;border:1px solid #dfe8e2;background:#fff;padding:12px 13px;border-radius:15px;display:flex;gap:10px;text-align:left;font:inherit;align-items:flex-start;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}.gameAnswer:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(25,75,50,.08);border-color:#8fc6a4}.gameAnswer b{width:32px;height:32px;border-radius:50%;background:#edf3f7;display:grid;place-items:center;flex:0 0 32px;font-size:12px}.gameAnswer.correct{border-color:#6fba8e;background:#effaf3;box-shadow:0 8px 18px rgba(33,120,74,.10)}.gameAnswer.wrong{border-color:#db9c9c;background:#fff2f2}.gameAnswer img{max-width:180px;max-height:110px;width:auto;height:auto;object-fit:contain;border-radius:8px}.gameAnswer table{max-width:100%;font-size:11px}.millionaireStage{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px;border-radius:18px;background:radial-gradient(circle at 50% 30%,#1e7b9f,#0c2540);color:#fff;box-shadow:inset 0 0 40px rgba(0,0,0,.18);margin-top:12px}.millionaireGlow{font-size:38px;filter:drop-shadow(0 4px 12px rgba(255,214,79,.4))}.millionaireStage b{display:block;font-size:9px;letter-spacing:.12em;opacity:.8}.millionaireStage strong{display:block;font-size:21px;margin-top:2px}.prizeLadder.premium{background:#071e2c;padding:8px;border-radius:16px}.prizeLadder.premium span{background:#12364a;color:#d8edf6;border:1px solid rgba(255,255,255,.08)}.prizeLadder.premium span.current{background:#f7c948;color:#352500;border-color:#f9d66f}.wheelStage{display:grid;place-items:center;padding:16px 0}.spinWheel{width:210px;height:210px;border-radius:50%;position:relative;background:conic-gradient(#2e9f6b 0 16.66%,#f1c75b 16.66% 33.32%,#5b8def 33.32% 49.98%,#ec6a76 49.98% 66.64%,#8e6ce4 66.64% 83.3%,#ff9f56 83.3% 100%);border:8px solid #fff;box-shadow:0 14px 32px rgba(24,78,49,.18);transition:transform 1.2s cubic-bezier(.17,.67,.2,1);display:grid;place-items:center}.spinWheel:after{content:"🎡";font-size:35px;background:#fff;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;box-shadow:0 8px 18px rgba(0,0,0,.12)}.spinWheel span{position:absolute;inset:12px 50%;font-weight:900;color:#fff;transform-origin:0 93px;transform:rotate(calc(var(--i)*60deg)) translateX(-50%);font-size:16px}.spinWheel.spinning{transform:rotate(1440deg)}.wheelPointer{color:#d74e4e;font-size:24px;position:relative;top:9px;z-index:3}.spinBtn{margin:13px auto 4px;border:0;border-radius:999px;padding:12px 20px;background:linear-gradient(135deg,#e7a92d,#f05a4b);color:#fff;font:inherit;font-weight:900;box-shadow:0 10px 18px rgba(218,122,42,.2);cursor:pointer}.wheelStage p,.blindIntro span{margin:3px 0;color:#718078;font-size:11px}.blindStage{text-align:center;padding:18px 0}.blindIntro{display:grid;gap:5px;justify-items:center;font-size:14px;color:#0c5d37}.blindIntro:first-letter{font-size:34px}.blindGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}.blindBox{border:1px solid #dbe7e0;border-radius:18px;background:linear-gradient(160deg,#fff,#f5faf7);padding:18px 10px;cursor:pointer;transition:transform .16s,box-shadow .16s}.blindBox:hover{transform:translateY(-5px) rotate(-1deg);box-shadow:0 12px 24px rgba(24,77,50,.10)}.blindBox span{display:block;font-size:36px}.blindBox b{display:block;color:#1b6b43;font-size:11px;margin-top:7px}.blindBox.opened{animation:pop .5s ease}.pairStage{padding-top:5px}.pairScore{display:inline-block;padding:7px 10px;background:#fff1f7;color:#a43a68;border:1px solid #f3cbdc;border-radius:999px;font-size:11px;margin-top:10px}.raceTrack{padding:14px;border-radius:18px;background:linear-gradient(90deg,#dbeadf,#f5f5f5);border:1px solid #d2e0d6;margin:10px 0 2px;display:grid;gap:9px}.raceLane{position:relative;height:30px;border-radius:999px;background:#fff;overflow:hidden;border:1px solid #dbe3de}.raceLane i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#83d8a4,#20965c);border-radius:999px}.raceLane span{position:absolute;z-index:2;left:8px;top:2px;font-size:22px}.raceLane.rival i{background:linear-gradient(90deg,#e9c6c6,#c44747)}.raceLabels{display:flex;justify-content:space-between;font-size:9px;color:#63736a}.tugStage{display:grid;grid-template-columns:1fr 2fr 1fr;gap:8px;align-items:center;margin:10px 0 2px}.team{padding:8px;border-radius:13px;text-align:center;font-size:10px;font-weight:900;background:#f4f8f6;border:1px solid #dfe8e2}.team b{display:block;font-size:18px;margin-top:3px;color:#1c7a49}.teamBot{background:#fff5f5}.rope{height:16px;background:repeating-linear-gradient(90deg,#d6c4a4 0 15px,#c4ad87 15px 30px);border-radius:999px;position:relative}.rope i{position:absolute;left:50%;top:-8px;bottom:-8px;width:4px;background:#d74e4e;border-radius:4px}.rope span{position:absolute;top:-26px;z-index:3;font-size:25px;transform:translateX(-50%);transition:left .35s}.resultCard.gameResultCard{text-align:center;padding:30px 18px;background:radial-gradient(circle at 50% 0,#effff3,#fff);border:1px solid #cfe7d7}.resultTrophy{font-size:52px;animation:bounceIn .7s ease}.gameConfetti{position:fixed;inset:0;pointer-events:none;z-index:9999;overflow:hidden}.gameConfetti i{position:absolute;top:-14px;width:8px;height:14px;border-radius:2px;background:linear-gradient(180deg,#43b57a,#f7c948);animation:confettiFall 1.5s linear forwards}.gameConfetti i:nth-child(3n){background:#5b8def}.gameConfetti i:nth-child(4n){background:#e86c7c}.gameConfetti i:nth-child(5n){background:#9a73e8}@keyframes confettiFall{to{top:110%;transform:translateY(20vh) rotate(720deg);opacity:0}}@keyframes pop{0%{transform:scale(.85)}55%{transform:scale(1.08)}100%{transform:scale(1)}}@keyframes bounceIn{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.08);opacity:1}100%{transform:scale(1)}}
@media(max-width:800px){.gameLessonGrid{grid-template-columns:1fr}.gameLessonActions{grid-template-columns:1fr}.blindGrid{grid-template-columns:1fr 1fr 1fr}.tugStage{grid-template-columns:1fr 1.5fr 1fr}.gameQuestionCard h2{font-size:18px}}
@media(max-width:520px){.blindGrid{gap:7px}.blindBox{padding:14px 7px}.spinWheel{width:180px;height:180px}.spinWheel span{transform-origin:0 78px}.millionaireStage strong{font-size:17px}}

/* v0.8.7: app identity + topic settings */
.appLogo{width:42px;height:42px;border-radius:12px;box-shadow:0 6px 14px rgba(11,90,53,.12);flex:0 0 auto}.brandArea{display:flex;align-items:center;gap:10px}.homeSectionHint{margin:3px 0 0;color:var(--muted);font-size:11px}.topicHomeCard{background:#fff;border:1px solid var(--green-line);border-radius:18px;padding:12px 8px;min-height:104px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;color:var(--ink);box-shadow:0 6px 15px rgba(11,90,53,.04);cursor:pointer}.topicHomeCard:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(11,90,53,.08)}.topicHomeIcon{font-size:31px;line-height:1}.topicHomeCard b{font-size:11px;color:var(--green-dark);text-align:center;line-height:1.25}.topicHomeCard small{font-size:9px;color:var(--muted);text-align:center}.topicHomeEmpty{grid-column:1/-1}.settingsCard{background:#fff;border:1px solid var(--green-line);border-radius:24px;padding:16px;box-shadow:0 8px 22px rgba(11,90,53,.05);margin-top:14px}.settingsCardHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.settingsCardHead>div{display:flex;gap:12px;align-items:flex-start}.settingsHeroIcon{width:48px;height:48px;border-radius:16px;background:#eef7f1;display:grid;place-items:center;font-size:25px}.settingsCard h2{margin:0;color:var(--green-dark);font-size:17px}.settingsCard p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.settingsState{background:#eef7f1;color:var(--green-dark);border-radius:999px;padding:7px 10px;font-size:10px;font-weight:900;white-space:nowrap}.settingsTopicGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px}.settingsTopicItem{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:9px;border:1px solid #e3ece6;border-radius:15px;padding:10px;background:#fbfefc;cursor:pointer}.settingsTopicItem input{accent-color:#0b6b3a;width:17px;height:17px}.settingsTopicIcon{font-size:26px}.settingsTopicItem b{display:block;color:#16492f;font-size:12px}.settingsTopicItem small{display:block;color:#7a877f;font-size:9px;margin-top:2px}.settingsActions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:14px}.settingsInfoGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.settingsInfoGrid>div{background:#f7faf8;border:1px solid #e6eee8;border-radius:16px;padding:14px}.settingsInfoGrid span{font-size:23px}.settingsInfoGrid b{display:block;color:var(--green-dark);margin:5px 0}.settingsInfoGrid small{display:block;color:var(--muted);font-size:10px;line-height:1.45;min-height:42px}.settingsInfoGrid .outlineBtn{margin-top:8px}.topicGrid{align-items:stretch}.lessonIcon{width:54px;height:54px;border-radius:18px;background:linear-gradient(135deg,#eef7f1,#e1f1e7);display:grid;place-items:center;font-size:29px;flex:0 0 auto;box-shadow:0 7px 14px rgba(11,90,53,.06)}
@media(max-width:700px){.settingsTopicGrid{grid-template-columns:1fr}.settingsInfoGrid{grid-template-columns:1fr}.settingsState{white-space:normal}.settingsCardHead{flex-direction:column}.appLogo{width:38px;height:38px}.brandTitle{font-size:15px}}

.authGate{position:fixed;inset:0;z-index:9999;background:rgba(247,248,252,.98);display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto}.authShell{width:min(720px,100%);background:#fff;border:1px solid #e5e7eb;border-radius:28px;padding:34px;box-shadow:0 24px 70px rgba(15,23,42,.15)}.authBrand{display:flex;gap:12px;align-items:center;margin-bottom:24px}.authBrand .appLogo{width:54px;height:54px}.authBrand small{display:block;color:#64748b}.authShell h1{font-size:32px;line-height:1.1}.roleGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:22px}.roleCard{border:1px solid #e2e8f0;background:#fff;border-radius:18px;padding:24px;text-align:left;cursor:pointer}.roleCard span{font-size:34px;display:block}.roleCard b{display:block;font-size:18px;margin:10px 0 4px}.roleCard small{color:#64748b}.textBack{border:0;background:none;cursor:pointer}.authTabs{display:flex;gap:10px;margin:20px 0;border-bottom:1px solid #e2e8f0}.authTabs button{border:0;background:none;padding:10px;cursor:pointer}.authTabs .active{font-weight:700;border-bottom:2px solid currentColor}.authShell>label{display:block;margin:12px 0}.authShell input{width:100%;box-sizing:border-box;padding:12px;border:1px solid #dbe2ea;border-radius:10px;margin-top:5px}.authSubmit{width:100%;margin-top:10px}.authError{color:#dc2626;min-height:20px}.hiddenAuth{display:none!important}.authLocked{visibility:hidden}.accountChip{position:fixed;right:15px;top:10px;z-index:20;background:#fff;border:1px solid #e2e8f0;border-radius:999px;padding:7px 9px 7px 13px;display:flex;align-items:center;gap:8px;box-shadow:0 8px 20px rgba(15,23,42,.08)}.accountChip button{border:0;border-radius:999px;padding:6px 9px}.examTimingChecks{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px}.examTimingSettings input{width:100%;box-sizing:border-box}.examTop{position:sticky;top:0;z-index:7;background:rgba(247,248,252,.95);padding:8px 0;display:flex;justify-content:space-between}@media(max-width:640px){.authShell{padding:22px}.roleGrid{grid-template-columns:1fr}.accountChip{right:6px}}

/* v0.8.9 teacher dashboard + exam security */
.teacherDashboardCard{margin:18px 0;padding:22px;border:1px solid #dbe5e0;border-radius:18px;background:#fff;box-shadow:0 10px 28px rgba(15,23,42,.06)}
.teacherDashGrid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:16px}.dashForm{padding:16px;border:1px solid #e3e8ef;border-radius:14px;background:#fbfcfe}.dashForm label,.teacherDashToolbar label{display:block;font-weight:700;font-size:13px;margin-bottom:10px}.dashForm input,.dashForm select,.dashForm textarea,.teacherDashToolbar select{width:100%;box-sizing:border-box;padding:10px;border:1px solid #d8e0e8;border-radius:10px;margin-top:5px;font:inherit}.dashForm textarea{resize:vertical}.dashForm small{display:block;color:#64748b;font-weight:400;margin-top:4px}.teacherDashToolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:18px 0}.teacherDashToolbar label{min-width:220px}.analyticsSummary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0}.analyticsSummary>div{padding:14px;border-radius:12px;background:#f5f8f6;text-align:center}.analyticsSummary b{display:block;font-size:24px}.analyticsSummary span{font-size:12px;color:#64748b}.analyticsTable{overflow:auto}.analyticsTable table{width:100%;border-collapse:collapse}.analyticsTable th,.analyticsTable td{padding:10px;border-bottom:1px solid #e8edf1;text-align:left}.analyticsTable td small{display:block;color:#64748b}.bulkCreds{margin-top:10px;padding:12px;border-radius:12px;background:#f6fbf8;border:1px solid #d8eee0}.credTable{display:grid;gap:6px;margin:10px 0}.credTable>div{display:grid;grid-template-columns:1.2fr .9fr .7fr;gap:8px;align-items:center;padding:7px 0;border-bottom:1px dashed #dce7df}.credTable code{background:#fff;padding:4px 6px;border-radius:6px}.examBlurred{filter:blur(14px)!important;user-select:none!important}.authGate .authShell{max-width:780px}.authGate #authRoleView .roleGrid{margin-top:8px}
@media(max-width:760px){.teacherDashGrid{grid-template-columns:1fr}.analyticsSummary{grid-template-columns:1fr}.credTable>div{grid-template-columns:1fr}.teacherDashToolbar{align-items:stretch}.teacherDashToolbar label{min-width:100%}}

/* v0.9.0 — license/admin security */
.licenseStatusCard{margin-bottom:18px;padding:16px 18px;border:1px solid #cce6d7;border-radius:18px;background:linear-gradient(135deg,#f1fbf5,#ffffff);box-shadow:0 8px 22px rgba(11,90,53,.06)}
.licenseInner{display:flex;justify-content:space-between;gap:16px;align-items:center}.licenseInner h3{margin:5px 0;color:#0b5a35}.licenseInner p{margin:0;color:#617268;font-size:13px}.systemAdminCard{margin-bottom:18px}.adminLicenseToolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-top:16px}.adminLicenseToolbar label{font-weight:700;font-size:13px;min-width:180px}.adminLicenseToolbar select{display:block;width:100%;padding:10px;border:1px solid #d8e0e8;border-radius:10px;margin-top:5px;background:#fff}.newLicense{margin:12px 0;padding:14px;border:1px dashed #92c9a8;background:#f5fbf7;border-radius:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.newLicense code{font-size:16px;letter-spacing:.08em;background:#fff;padding:8px 10px;border-radius:10px;border:1px solid #d6e9dc}.newLicense small{color:#65766c}.systemAdminCard .analyticsSummary{grid-template-columns:repeat(6,1fr)}
@media(max-width:900px){.systemAdminCard .analyticsSummary{grid-template-columns:repeat(3,1fr)}}@media(max-width:560px){.licenseInner{flex-direction:column;align-items:flex-start}.licenseInner .primaryBtn{width:100%}.systemAdminCard .analyticsSummary{grid-template-columns:repeat(2,1fr)}.adminLicenseToolbar label{width:100%}.adminLicenseToolbar button{flex:1}}

.googleLoginWrap{margin-top:14px;text-align:center}.googleDivider{display:flex;align-items:center;gap:10px;margin:8px 0;color:#7b8794;font-size:13px}.googleDivider:before,.googleDivider:after{content:'';height:1px;background:#dde3ea;flex:1}.googleNote{display:block;margin-top:7px;color:#7b8794}.googleUnavailable{padding:10px 12px;border:1px solid #ead6a5;border-radius:10px;background:#fffaf0;color:#7a5a00;font-size:13px}

.teacherSectionTitle{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:22px 0 10px}.teacherSectionTitle h3{margin:0}.teacherSectionTitle span{font-size:.85rem;opacity:.7}.classListGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}.classListItem{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--border,#ddd);background:var(--card,#fff);border-radius:14px;padding:12px;cursor:pointer}.classListItem.selected{outline:2px solid var(--accent,#4f46e5)}.classListItem b,.classListItem small{display:block}.classListItem small{opacity:.7;margin-top:3px}.classBadge{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:rgba(79,70,229,.1);font-weight:700}.classDetailCard,.assignmentProgressHead,.assignmentCard{border:1px solid var(--border,#ddd);border-radius:14px;padding:14px;margin-top:12px;background:var(--card,#fff)}.classDetailHead,.assignmentCard{display:flex;align-items:center;justify-content:space-between;gap:12px}.classDetailHead h3{margin:0}.classDetailHead p{margin:4px 0 0;opacity:.7}.teacherAssignForm{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;align-items:end}.teacherAssignForm label{display:grid;gap:5px}.teacherAssignForm input,.teacherAssignForm select{min-height:40px}.assignmentCard{box-shadow:0 1px 6px rgba(0,0,0,.04)}.assignmentCard>div:first-child{flex:1}.assignmentCard small{display:block;opacity:.7;margin-top:4px}.assignmentMetrics{display:flex;align-items:center;gap:8px}.assignmentMetrics span{font-size:.85rem}.assignmentList{display:grid;gap:8px;margin-top:10px}@media(max-width:720px){.teacherSectionTitle{display:block}.classDetailHead,.assignmentCard{align-items:flex-start;flex-wrap:wrap}.assignmentMetrics{width:100%}}

.assignedStudentCard{border:1px solid var(--border,#ddd);border-radius:16px;padding:16px;margin-top:14px;background:var(--card,#fff)}.studentAssignmentRow{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border,#eee)}.studentAssignmentRow:last-child{border-bottom:0}.studentAssignmentRow>div:first-child{display:grid;gap:3px}.studentAssignmentRow small{opacity:.7}@media(max-width:720px){.studentAssignmentRow{align-items:flex-start;flex-direction:column}}

/* v0.9.6 account/class/license polish */
.classListItemWrap{display:flex;gap:8px;align-items:stretch}
.classListItemWrap .classListItem{flex:1}
.dangerMiniBtn{border:1px solid #e7c9c9;background:#fff7f7;border-radius:12px;padding:0 12px;cursor:pointer}
.licenseActivateForm{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.licenseActivateForm input{min-width:280px;padding:12px 14px;border:1px solid #d9e0e8;border-radius:12px}
.identityCard,.accountSecurityCard{margin:16px 0;padding:20px;border:1px solid #dfe8e2;border-radius:18px;background:#fff}.identityHead,.accountSecurityHead{display:flex;gap:14px;align-items:center}.studentAvatar{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:24px;background:#e8f7ef}.profileCustomizeGrid,.passwordChangeGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.passwordChangeGrid button{align-self:end}.identityCard p{margin:4px 0}
@media(max-width:700px){.profileCustomizeGrid,.passwordChangeGrid{grid-template-columns:1fr}.licenseActivateForm input{min-width:0;width:100%}}
html{font-size:calc(16px * var(--student-font-scale,1))}

/* v0.9.7 student personalization */
:root{--accent-color:#0a8f4d}
.primaryBtn,.adminEntry,.navItem.active,.statusPill{--local-accent:var(--accent-color)}
.studentCompact .pageWrap .panel{padding-top:14px;padding-bottom:14px}
.studentCompact .lesson{padding:12px}
.studentCompact .historyCard,.studentCompact .assignedStudentCard,.studentCompact .accountSecurityCard{padding:14px}
.checkLine{display:flex;align-items:center;gap:8px}

/* v0.9.8 — science/academic UI refresh */
:root{--science-navy:#12324a;--science-teal:#0b8f77;--science-green:#18a67a;--science-mint:#eaf9f3;--science-border:#dce9e5;--science-paper:#fbfefd}
body{background:radial-gradient(circle at 10% 0%,#eefaf5 0,transparent 28%),radial-gradient(circle at 90% 10%,#eef6fb 0,transparent 26%),#f5f8f9;color:#173427}
.teacherDashboardCard{border:1px solid var(--science-border);background:linear-gradient(180deg,#ffffff 0,#fbfefd 100%);box-shadow:0 18px 48px rgba(18,50,74,.08);overflow:hidden;position:relative}
.teacherDashboardCard:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(11,143,119,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(11,143,119,.04) 1px,transparent 1px);background-size:28px 28px;pointer-events:none;mask-image:linear-gradient(to bottom,black,transparent 70%)}
.teacherDashboardCard>*{position:relative;z-index:1}
.scienceDashboardHero{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px 26px;border-radius:20px;background:linear-gradient(135deg,#12324a 0%,#0d6f62 55%,#13a079 100%);color:#fff;box-shadow:0 12px 34px rgba(18,50,74,.18);margin-bottom:18px}
.scienceKicker{font-size:11px;letter-spacing:.18em;font-weight:800;opacity:.8}.scienceDashboardHero h2{margin:6px 0 6px;font-size:28px}.scienceDashboardHero p{margin:0;opacity:.86}.scienceOrb{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;font-size:40px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);box-shadow:inset 0 0 0 8px rgba(255,255,255,.05)}
.scienceForm{background:rgba(255,255,255,.9);border:1px solid var(--science-border);box-shadow:0 8px 22px rgba(18,50,74,.06);border-radius:18px}.scienceForm h3{margin:2px 0 5px;color:var(--science-navy)}.scienceForm .formLead{margin:0 0 14px;color:#5b6e68;font-size:13px;line-height:1.5}.scienceForm .formIcon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--science-mint);font-size:24px;margin-bottom:10px}.scienceForm input,.scienceForm select,.scienceForm textarea{border-color:#cfe0db;background:#fff;transition:.2s box-shadow,.2s border-color}.scienceForm input:focus,.scienceForm select:focus,.scienceForm textarea:focus{outline:none;border-color:var(--science-teal);box-shadow:0 0 0 4px rgba(11,143,119,.1)}.sciencePrimary{background:linear-gradient(135deg,var(--science-teal),var(--science-green));border:0;box-shadow:0 8px 18px rgba(11,143,119,.18)}
.teacherSectionTitle{margin-top:28px;padding-bottom:9px;border-bottom:1px solid #e4ece9}.teacherSectionTitle h3{color:var(--science-navy);font-size:18px}.teacherSectionTitle span{color:#6a7d77}.classListGrid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.classListItemWrap{min-width:0}.classListItem{min-height:72px;transition:.2s transform,.2s box-shadow,.2s border-color}.classListItem:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(18,50,74,.08);border-color:#acd7ca}.classListItem.selected{outline:2px solid rgba(11,143,119,.3);box-shadow:0 10px 26px rgba(11,143,119,.1)}.classBadge{background:linear-gradient(135deg,#e7f8f1,#eaf5fb);color:var(--science-navy)}.dangerMiniBtn{min-width:44px;color:#b42318}.dangerMiniBtn:hover{background:#fff0f0;border-color:#efb7b0}
.studentUsernamePreview{margin:8px 0 12px;padding:10px 12px;border:1px dashed #c7ddd5;border-radius:12px;background:#f8fcfa;max-height:160px;overflow:auto}.studentUsernamePreview>div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed #e1ece8}.studentUsernamePreview>div:last-child{border-bottom:0}.studentUsernamePreview code{background:#edf8f3;color:#096b55;padding:3px 7px;border-radius:7px;font-weight:700}.muted{color:#70807a;font-size:13px}.assignedStudentCard,.accountSecurityCard,.identityCard{border-color:var(--science-border);box-shadow:0 12px 28px rgba(18,50,74,.06)}.identityCard{background:linear-gradient(135deg,#ffffff,#f2fbf7)}.assignedStudentCard{background:linear-gradient(180deg,#ffffff,#fbfefd)}
@media(max-width:760px){.scienceDashboardHero{padding:20px;align-items:flex-start}.scienceOrb{width:58px;height:58px;font-size:28px}.scienceDashboardHero h2{font-size:22px}.classListGrid{grid-template-columns:1fr}}

.studentScienceHero{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:0 0 18px;padding:22px 24px;border-radius:20px;background:linear-gradient(135deg,#12324a,#135d63 58%,#0b8f77);color:#fff;box-shadow:0 14px 36px rgba(18,50,74,.14)}.studentScienceHero h2{margin:5px 0;font-size:26px}.studentScienceHero p{margin:0;opacity:.86}.studentScienceOrb{width:68px;height:68px;border-radius:18px;display:grid;place-items:center;font-size:32px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2)}
@media(max-width:760px){.studentScienceHero{padding:18px}.studentScienceHero h2{font-size:21px}.studentScienceOrb{width:54px;height:54px;font-size:25px}}

.libraryScopeTabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.libraryScopeTabs .active{border-color:#1b8a69;background:#e9f8f1;color:#126a50}.libraryOwner{display:block;color:#5f6f7a;margin-top:3px}.libraryItem{transition:transform .15s ease,box-shadow .15s ease}.libraryItem:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(20,60,50,.08)}

/* ===== Luyện theo chủ đề và chọn lớp lý thuyết ===== */
.topicBuilder{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.topicBuilder label{display:flex;flex-direction:column;gap:6px;color:#dbeafe;font-size:12px;font-weight:850}.topicBuilder select{width:100%;padding:12px;border:1px solid #d7e2f0;border-radius:14px;background:#fff;color:#17335f;font:inherit}.topicBuilderWide{grid-column:1 / span 2}.topicCreateBtn{align-self:end;min-height:44px}.practiceTopicList,.topicExamList{display:grid;gap:10px;margin-top:12px}.practiceTopicCard,.topicExamCard{width:100%;display:flex;align-items:center;gap:12px;text-align:left;border:1px solid #e5ebf3;border-radius:18px;background:#fff;padding:13px 15px;box-shadow:0 5px 18px #13294b0a}.practiceTopicCard{cursor:pointer}.practiceTopicCard:hover{border-color:#b7cce8;transform:translateY(-1px)}.practiceTopicIcon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#eff7f1;font-size:23px;flex:0 0 auto}.practiceTopicCard>span:nth-child(2),.topicExamCard>div{min-width:0;flex:1}.practiceTopicCard b,.topicExamCard b{display:block;color:var(--blue);font-size:14px}.practiceTopicCard small,.topicExamCard small{display:block;margin-top:4px;color:var(--muted);font-size:11px}.practiceTopicCard>strong{color:var(--blue2);font-size:26px;font-weight:500}.topicExamHead,.studyBackRow{display:flex;align-items:center;gap:12px;margin:12px 0}.topicExamHead>b,.studyBackRow>b{color:var(--blue);font-size:16px}.topicExamCard .pill{display:inline-block;margin-bottom:6px}.topicExamCard .primaryBtn{flex:0 0 auto}.studyBackRow{justify-content:flex-start}.studyBackRow .ghostBtn,.topicExamHead .ghostBtn{white-space:nowrap}
@media(max-width:560px){.topicBuilder{grid-template-columns:1fr 1fr}.topicBuilderWide{grid-column:1 / -1}.topicCreateBtn{grid-column:1 / -1}.topicExamCard{align-items:flex-start;flex-direction:column}.topicExamCard .primaryBtn{width:auto;min-width:78px;padding:8px 12px;align-self:stretch}.topicExamHead,.studyBackRow{align-items:flex-start;flex-direction:column}.topicExamHead .ghostBtn,.studyBackRow .ghostBtn{width:100%}}

/* mobile polish: topic builder and true/false exam options */
.topicBuilder label{color:#17335f;text-shadow:none}.topicBuilder label select{color:#17335f;background:#fff;opacity:1}.topicBuilder label select option{color:#17335f;background:#fff}.topicBuilder{grid-template-columns:repeat(3,minmax(0,1fr))}.topicBuilderWide{grid-column:1 / span 2}
@media(max-width:700px){.topicBuilder{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.topicBuilder label{font-size:11px}.topicBuilder select{padding:10px 7px;font-size:12px}.topicBuilderWide{grid-column:1 / -1}.topicCreateBtn{grid-column:1 / -1}.examOption.tf{grid-template-columns:auto minmax(0,1fr) auto;gap:6px}.tfChoices{grid-column:3;align-self:start;margin-top:0}.tfChoice{width:32px;height:30px}.tfText{font-size:.95rem;line-height:1.5}}
@media(max-width:380px){.topicBuilder{gap:5px}.topicBuilder select{font-size:11px;padding-left:5px;padding-right:3px}.topicBuilder label{font-size:10px}}

/* v1.0 — Luyện đề theo thư mục */
.examFolder{margin:16px 0 22px;padding:14px;border:1px solid #e6ebf3;border-radius:20px;background:linear-gradient(135deg,#fbfdff,#f7faff)}
.examFolderHead{display:flex;align-items:center;gap:11px;margin-bottom:10px}.examFolderHead>span{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:#e9f1ff;font-size:22px}.examFolderHead h2{margin:0;color:var(--blue);font-size:18px}.examFolderHead p{margin:3px 0 0;color:var(--muted);font-size:12px}.examFolderList{display:grid;gap:8px}.examFolderEmpty{padding:12px;background:#fff;border-radius:13px;text-align:left}.mockTarget{display:grid;grid-template-columns:1fr 1.5fr;gap:9px}.mockTarget>label{display:flex;flex-direction:column;gap:6px;color:#475569;font-size:12px;font-weight:800}.mockTarget input,.mockTarget select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:13px;background:#fff;font:inherit;color:var(--text)}
@media(max-width:560px){.examFolder{padding:11px;border-radius:17px}.examFolderHead h2{font-size:16px}.mockTarget{grid-template-columns:1fr}}

.mockFolderGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.mockFolderCard{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;text-align:left;padding:16px;border:1px solid var(--green-line);border-radius:20px;background:linear-gradient(135deg,#fbfdff,#f7faff);color:var(--text);box-shadow:0 8px 22px rgba(11,90,53,.05);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.mockFolderCard:hover{transform:translateY(-2px);border-color:#b8d8c8;box-shadow:0 12px 28px rgba(11,90,53,.1)}.mockFolderCard:active{transform:scale(.98)}.mockFolderCard strong{color:var(--blue2)}.mockFolderCard small,.mockFolderToolbar small{display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.4}.mockFolderIcon{display:grid;place-items:center;width:46px;height:46px;border-radius:15px;background:#e9f1ff;font-size:24px}.mockFolderToolbar{display:flex;align-items:center;gap:12px;margin:16px 0 12px}.mockFolderToolbar>div{flex:1}.mockFolderToolbar b{font-size:16px;color:var(--blue)}
@media(max-width:720px){.mockFolderGrid{grid-template-columns:1fr;gap:10px}.mockFolderCard{padding:14px;border-radius:17px}.mockFolderIcon{width:40px;height:40px;font-size:21px}.mockFolderToolbar{align-items:flex-start}.mockFolderToolbar .ghostBtn{white-space:nowrap;padding:9px 10px}}

/* Mobile navigation: keep every tab reliably tappable above sticky content. */
.bottomNav{isolation:isolate;touch-action:manipulation;-webkit-tap-highlight-color:transparent;pointer-events:auto;min-height:64px}.navItem{position:relative;z-index:61;min-width:0;min-height:54px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:rgba(47,110,219,.14);user-select:none}.navItem span,.navItem small{pointer-events:none}@media(max-width:560px){body{padding-bottom:86px}.bottomNav{padding-top:6px;padding-bottom:calc(8px + env(safe-area-inset-bottom));}.navItem{padding:5px 1px;gap:2px}.navItem span{width:38px;height:34px;font-size:21px}.navItem small{font-size:10px;line-height:1.1;white-space:nowrap}}


/* v1.3.3 — mobile touch reliability */
.bottomNav{grid-template-columns:repeat(6,minmax(0,1fr));z-index:1000;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}
.navItem{width:100%;min-height:56px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;cursor:pointer}
.navItem span,.navItem small{pointer-events:none}
.navItem:active{transform:translateY(1px)}
.examOption.examMcqOption{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:flex-start;gap:8px;min-height:50px;padding:13px 12px;margin:8px 0;touch-action:manipulation;-webkit-tap-highlight-color:rgba(47,110,219,.10);-webkit-user-select:none;user-select:none}
.examOption.examMcqOption input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--blue2);flex:0 0 auto}
.examOption.examMcqOption span{min-width:0;line-height:1.6}
.examOption.examMcqOption:has(input:checked){border-color:#8eb6ef;background:#f4f8ff;box-shadow:0 0 0 2px rgba(47,110,219,.06)}
.examQuestion{scroll-margin-top:72px}
.examQuestion,.examOption,.tfChoice,.examSubmit button{touch-action:manipulation}
@media(max-width:560px){body{padding-bottom:calc(82px + env(safe-area-inset-bottom));}.bottomNav{padding:5px 3px calc(5px + env(safe-area-inset-bottom));}.navItem{min-height:58px;padding:4px 0}.navItem span{width:40px;height:34px;font-size:21px}.navItem small{font-size:9.5px;line-height:1;white-space:nowrap}.examOption.examMcqOption{min-height:54px;padding:14px 11px}.examOption.examMcqOption input{width:22px;height:22px}}

/* v1.3.4 — daily 6/2/2 + mobile navigation touch fix */
#actionToast.actionToast{pointer-events:none;z-index:1100;right:18px;bottom:18px;max-width:min(420px,calc(100vw - 36px));padding:12px 16px;border-radius:12px;background:#123b32;color:#fff;box-shadow:0 10px 30px #0002;font-weight:600;transition:opacity .18s,transform .18s}
.dailyPracticeToolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 10px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow);position:sticky;top:62px;z-index:8}
.dailyPracticeToolbar span{font-size:12px;font-weight:900;color:var(--blue)}
.dailyStopBtn{white-space:nowrap;min-height:40px}
@media(max-width:760px){#actionToast.actionToast{bottom:calc(82px + env(safe-area-inset-bottom) + 12px);}}
@media(max-width:560px){.dailyPracticeToolbar{top:58px;padding:9px 10px}.dailyPracticeToolbar span{font-size:10.5px}.dailyStopBtn{min-height:38px;padding:8px 11px}}

/* v1.3.5 authentication UX */
.authSubmit[aria-busy="true"]{opacity:.88;cursor:wait}
@media(max-width:640px){.authShell input{font-size:16px}.authSubmit{min-height:44px}}

/* v1.4.1 instant catalog + compact exam action */
.compactExamStart{flex:0 0 auto!important;width:auto!important;min-width:72px!important;padding:8px 12px!important;white-space:nowrap}
@media(max-width:560px){.examCard{align-items:center!important;flex-direction:row!important;gap:10px!important}.examCard>div{min-width:0;flex:1}.examCard h3{font-size:14px!important;line-height:1.35}.compactExamStart{width:72px!important;min-width:72px!important;padding:8px 9px!important;font-size:12px!important}.examFolderList{gap:8px}}

/* v1.4.5 */
.studentQuickNotifications{margin:14px 0 20px;border:1px solid #d9efe3;border-radius:18px;background:#f5fbf7;padding:14px 16px;box-shadow:0 8px 24px rgba(24,90,54,.06)}.studentQuickNotifyHead{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:8px}.studentQuickNotifyHead>div{display:grid;gap:3px}.studentQuickNotifyHead b{font-size:13px;color:#2d5f45}.studentQuickNotifyItem{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px 4px;border-top:1px dashed #d9e7df}.studentQuickNotifyItem small{display:block;color:#6b7d74;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.studentQuickNotifyItem.unread{background:linear-gradient(90deg,rgba(56,142,86,.06),transparent);border-radius:12px;padding-left:8px;padding-right:8px}.assignmentActionRow{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.formHint{color:#64766d;font-size:12px;margin-top:-4px}.adminControlHub{margin:12px 0 18px;padding:18px;border:1px solid #d9e8df;border-radius:22px;background:linear-gradient(180deg,#fbfffd,#f5faf7);box-shadow:0 10px 28px rgba(26,83,50,.07)}.adminControlHub h2{margin:4px 0 5px;font-size:22px;color:#165d3b}.adminControlHub p{margin:0;color:#66766e}.adminControlGrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:14px}.adminControlGrid button{border:1px solid #d9e5df;background:#fff;border-radius:16px;padding:13px;text-align:left;display:grid;gap:4px;cursor:pointer}.adminControlGrid b{color:#214d39}.adminControlGrid small{color:#718078}.adminSectionFocus{outline:3px solid rgba(44,145,89,.15);outline-offset:3px;scroll-margin-top:18px}@media(max-width:900px){.adminControlGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.studentQuickNotifyItem{grid-template-columns:auto 1fr}.studentQuickNotifyItem>.ghostBtn{grid-column:2;justify-self:start}.assignmentActionRow{justify-content:flex-start}}


/* v1.4.7 — teacher/admin personal management center */
#profile.teacherMode .teacherAdminHub{display:block}
#profile.teacherMode > :not(.sectionHeading):not(#teacherAdminHub){display:none !important}
.teacherAdminHub{margin-top:16px}
.teacherAdminHero{background:linear-gradient(135deg,#eefaf3,#f7fbf9);border:1px solid #d8ebdf;border-radius:22px;padding:20px;margin-bottom:14px}
.teacherAdminHero h2{margin:.35rem 0 .25rem;color:#145b38;font-size:26px}
.teacherAdminHero p{margin:0;color:#61756a}
.teacherAdminMenu{display:grid;gap:10px}
.teacherAdminMenuItem{display:grid;grid-template-columns:44px 1fr 20px;gap:12px;align-items:center;text-align:left;background:#fff;border:1px solid #dfe9e3;border-radius:18px;padding:15px 16px;box-shadow:0 4px 14px rgba(26,72,49,.05);cursor:pointer}
.teacherAdminMenuItem>span{width:44px;height:44px;border-radius:14px;background:#eef8f1;display:grid;place-items:center;font-size:23px}
.teacherAdminMenuItem b{display:block;color:#173d2a;font-size:16px}
.teacherAdminMenuItem small{display:block;color:#718177;margin-top:3px;line-height:1.35}
.teacherAdminMenuItem strong{font-size:25px;color:#83a18f}
.teacherAdminSubHead{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.teacherAdminSubHead h2{margin:.15rem 0 0;color:#175d39;font-size:23px}
.teacherAdminSubList{display:grid;gap:9px}
.teacherAdminSubList button{width:100%;display:grid;grid-template-columns:34px 1fr 18px;align-items:center;gap:10px;text-align:left;border:1px solid #dfe9e3;background:#fff;border-radius:15px;padding:14px;cursor:pointer}
.teacherAdminSubList button span{font-size:20px}.teacherAdminSubList button b{font-size:15px;color:#254534}.teacherAdminSubList button strong{font-size:23px;color:#8aa091}
@media(max-width:700px){.teacherAdminHero{padding:17px;border-radius:18px}.teacherAdminHero h2{font-size:22px}.teacherAdminMenuItem{padding:13px}.teacherAdminMenuItem>span{width:40px;height:40px}.teacherAdminSubHead{align-items:flex-start;flex-direction:column}.teacherAdminSubHead .ghostBtn{align-self:flex-start}}

/* v1.4.8 — Dedicated teacher/admin control center */
.teacherAdminHeroV148{display:flex;justify-content:space-between;align-items:center;gap:16px}
.teacherAdminHeroIcon{width:58px;height:58px;border-radius:18px;background:#fff;display:grid;place-items:center;font-size:30px;border:1px solid #dcebe2;flex:none}
.teacherAdminMenuV148{gap:12px}
.teacherAdminSubHeadV148{border:1px solid #dce9e1;background:#f8fcfa;border-radius:18px;padding:14px 16px}
.teacherAdminSubListV148 button{min-height:66px}
.teacherAdminSubListV148 button div{min-width:0}
.teacherAdminSubListV148 button small{display:block;color:#728278;margin-top:3px}
@media(max-width:700px){.teacherAdminHeroV148{align-items:flex-start}.teacherAdminHeroIcon{width:48px;height:48px;font-size:24px}.teacherAdminSubHeadV148{padding:12px}.teacherAdminSubListV148 button{grid-template-columns:32px 1fr 18px;padding:12px}}

/* v1.4.8 patch: focused admin workspaces + responsive teacher assignment UI */
.adminFocusBar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;padding:10px 12px;border:1px solid #dce9e1;border-radius:16px;background:#f8fcfa;position:sticky;top:74px;z-index:20;box-shadow:0 8px 18px rgba(22,82,50,.06)}
.adminFocusBar>div{display:grid;gap:2px;text-align:right}.adminFocusBar b{color:#175d39}.adminFocusMode .adminControlHub,.adminFocusMode .statsStrip,.adminFocusMode #licenseStatusCard{display:none!important}.adminFocusMode .adminSectionPanel{display:none!important}.adminFocusMode .adminSectionPanel.adminSectionFocus{display:block!important}.adminFocusMode .adminGrid>section:not(.adminSectionFocus){display:none!important}.adminFocusMode .teacherDashboardCard:not(.adminSectionFocus){display:none!important}
.adminAssignModeBar{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:16px 0 18px;padding:8px;border:1px solid #dceae2;border-radius:20px;background:#f7fbf9}.teacherAssignModeBtn{min-width:0;border:1px solid transparent;background:transparent;border-radius:14px;padding:11px 10px;text-align:left;display:grid;grid-template-columns:auto 1fr;column-gap:9px;row-gap:2px;cursor:pointer;color:#365345}.teacherAssignModeBtn>span{grid-row:1 / span 2;font-size:23px;line-height:1.1;align-self:center}.teacherAssignModeBtn b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.teacherAssignModeBtn small{font-size:10px;color:#78887f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.teacherAssignModeBtn:hover{background:#fff;border-color:#dce9e1}.teacherAssignModeBtn.active{background:#fff;border-color:#b9dbc7;box-shadow:0 7px 17px rgba(18,83,52,.08)}.teacherAssignModeBtn.active b{color:#0b6b3a}.teacherAssignHidden{display:none!important}
.teacherDashboardCard .scienceDashboardHero{margin-bottom:0}.teacherDashboardCard{overflow:hidden}.teacherDashboardCard .teacherSectionTitle{margin-top:19px}.teacherAssignForm{background:#fbfefd;border:1px solid #e0ece5;border-radius:18px;padding:15px}.teacherAssignForm label{font-size:12px;color:#355144}.teacherAssignForm input,.teacherAssignForm select{background:#fff;border-radius:11px;border-color:#d7e3dc;padding:10px 11px}.teacherAssignForm .primaryBtn{min-height:42px}.assignmentList{margin-top:12px}.assignmentCard{border-color:#dfeae4;border-radius:16px}.classListGrid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.classListItemWrap{display:grid;grid-template-columns:1fr auto;gap:6px;min-width:0}.classListItem{width:100%;min-width:0}.classListItem>span:nth-child(2){min-width:0}.classListItem b,.classListItem small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analyticsTable{border-radius:16px}.analyticsTable table{min-width:620px;background:#fff;border:1px solid #e5ece8;border-radius:16px;overflow:hidden}.analyticsTable th{background:#f6faf8;color:#3d5a4b;font-size:12px;font-weight:850}.analyticsTable td{font-size:12px}.formHint{line-height:1.45}

/* Scoring workspace redesign */
.scoringCard{padding:18px;border-color:#d8e8df;background:linear-gradient(180deg,#ffffff,#fbfefd)}.scoringHeader{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:12px;padding-bottom:16px;border-bottom:1px solid #e5eee9}.scoringIcon{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:#ecf8f1;border:1px solid #d6ebdf;font-size:25px}.scoringHeader h2{margin:3px 0;color:#145b38;font-size:22px}.scoringHeader p{margin:4px 0 0;color:#6b7c72;font-size:12px;line-height:1.55;max-width:610px}.scoringTotalBadge{background:#eef8f2;color:#0c6d3d;border:1px solid #d2eadd;border-radius:999px;padding:8px 10px;font-size:10px;font-weight:900;white-space:nowrap}.scoreSectionCard{margin-top:14px;padding:15px;border:1px solid #e0ebe5;border-radius:17px;background:#fff}.scoreSectionHead{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.scoreSectionHead>div{display:flex;align-items:center;gap:9px}.scoreSectionHead>div>span{width:27px;height:27px;border-radius:9px;display:grid;place-items:center;background:#edf7f1;color:#0b6b3a;font-size:10px;font-weight:950}.scoreSectionHead b{color:#204a37;font-size:13px}.scoreSectionHead>small{color:#7a897f;font-size:10px}.scorePartGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.scorePartField{display:grid;gap:4px;padding:12px;border:1px solid #e2ece6;border-radius:14px;background:#fbfefc}.scorePartTag{width:max-content;padding:4px 7px;border-radius:999px;background:#eef7f2;color:#167044;font-size:9px;font-weight:950}.scorePartField>b{font-size:12px;color:#294d3b}.scorePartField>small{font-size:10px;color:#78867f}.scorePartField input{margin-top:4px;height:40px;border:1px solid #d2e1d8;border-radius:10px;padding:8px 10px;font-weight:850;color:#164d34;background:#fff}.scoreRubricGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.scoreRubricGrid label{display:grid;gap:5px;padding:10px;border:1px solid #e3ece7;border-radius:13px;background:#fbfefd}.scoreRubricGrid label>span{font-size:11px;font-weight:800;color:#355546}.scoreRubricGrid input{height:38px;border:1px solid #d5e2d9;border-radius:9px;padding:7px 9px;font-weight:850;color:#174c35}.scoreRubricGrid small{font-size:10px;color:#718279}.scoreFormula{display:flex;gap:10px;align-items:flex-start;margin-top:11px;padding:10px 12px;background:#f6faf8;border:1px dashed #d4e5dc;border-radius:13px}.scoreFormula>span{font-size:16px}.scoreFormula b{font-size:11px;color:#2c5944}.scoreFormula p{margin:3px 0 0;color:#6a7a71;font-size:10px;line-height:1.5}.scoreRevealCard{background:linear-gradient(180deg,#fbfefc,#f7fbf9)}.answerRevealSetting{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;background:#fff;border:1px solid #dce9e1;border-radius:13px;cursor:pointer}.answerRevealSetting input{margin-top:2px;width:17px;height:17px;accent-color:#0b6b3a;flex:none}.answerRevealSetting span{display:grid;gap:3px}.answerRevealSetting b{font-size:12px;color:#204d38}.answerRevealSetting small{font-size:10px;color:#718078}.scoreThresholdRow{display:grid;grid-template-columns:minmax(180px,240px) 1fr;align-items:end;gap:10px;margin-top:10px}.scoreThresholdRow label{display:grid;gap:5px;font-size:11px;font-weight:800;color:#365344}.scoreThresholdRow input{height:39px;border:1px solid #d5e2d9;border-radius:10px;padding:7px 9px;background:#fff}.scoreThresholdHint{min-height:39px;display:flex;align-items:center;padding:9px 11px;border-radius:10px;background:#eef8f2;color:#5f7268;font-size:10px}.scoringFooter{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding-top:13px;border-top:1px solid #e3ece7}.scoringFooter span{color:#718078;font-size:10px}.scoringFooter .primaryBtn{min-height:42px}

@media(max-width:720px){.adminFocusBar{top:60px}.adminAssignModeBar{grid-template-columns:1fr 1fr;padding:7px}.teacherAssignModeBtn{padding:10px 9px}.teacherAssignModeBtn b{font-size:11px}.teacherAssignModeBtn small{font-size:9px}.scoringHeader{grid-template-columns:44px 1fr}.scoringIcon{width:44px;height:44px;font-size:21px}.scoringTotalBadge{grid-column:2;justify-self:start}.scoringHeader h2{font-size:19px}.scorePartGrid{grid-template-columns:1fr}.scoreRubricGrid{grid-template-columns:1fr 1fr}.scoreThresholdRow{grid-template-columns:1fr}.scoringFooter{flex-direction:column;align-items:stretch}.scoringFooter .primaryBtn{width:100%}}
@media(max-width:430px){.adminAssignModeBar{gap:6px}.teacherAssignModeBtn{grid-template-columns:28px 1fr}.teacherAssignModeBtn>span{font-size:19px}.teacherAssignModeBtn small{display:none}.scoreRubricGrid{grid-template-columns:1fr 1fr}.scoreSectionCard{padding:12px}.scoreSectionHead>small{display:none}.scorePartField input{height:38px}.scoringCard{padding:13px}}

/* v1.4.8 — single workspace focus fix */
.adminFocusMode .adminGrid{display:block!important;margin:0!important}.adminFocusMode .adminSectionPanel.adminSectionFocus{width:100%;margin-left:0;margin-right:0}.adminFocusBar .ghostBtn{white-space:nowrap}
@media(max-width:720px){.adminFocusBar{align-items:flex-start}.adminFocusBar>div{text-align:left;flex:1}.adminFocusMode .adminSectionPanel.adminSectionFocus{border-radius:16px}}


/* v1.4.8 patch 2 — compact scoring workspace + no horizontal overflow */
.scoringCard{width:100%;max-width:100%;min-width:0;box-sizing:border-box;overflow:hidden;margin-top:18px;padding:14px;border:1px solid #d8e8df;border-radius:18px;background:linear-gradient(180deg,#ffffff,#fbfefd)}
.scoringCard *{min-width:0;box-sizing:border-box}
.scoringHeader{grid-template-columns:42px minmax(0,1fr) auto;gap:9px;padding-bottom:12px}
.scoringIcon{width:42px;height:42px;border-radius:13px;font-size:20px}
.scoringHeader h2{font-size:18px;line-height:1.2}
.scoringHeader p{font-size:11px;line-height:1.4}
.scoringTotalBadge{padding:6px 8px;font-size:9px}
.scoreSectionCard{margin-top:10px;padding:11px;border-radius:14px}
.scoreSectionHead{margin-bottom:8px;gap:8px}
.scoreSectionHead>div{gap:7px}
.scoreSectionHead>div>span{width:24px;height:24px;border-radius:8px}
.scoreSectionHead b{font-size:12px}
.scoreSectionHead>small{font-size:9px}
.scorePartGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.scorePartField{min-width:0;padding:9px;border-radius:12px}
.scorePartTag{padding:3px 6px;font-size:8px}
.scorePartField>b{font-size:11px}
.scorePartField>small{font-size:9px}
.scorePartField input,.scoreRubricGrid input,.scoreThresholdRow input{width:100%;max-width:100%;font-size:13px}
.scoreRubricGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.scoreRubricGrid label{min-width:0;padding:8px;border-radius:11px}
.scoreRubricGrid label>span{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scoreRubricGrid small{font-size:9px}
.scoreFormula{margin-top:8px;padding:8px 10px;gap:8px}
.scoreFormula p{font-size:9px;line-height:1.4}
.answerRevealSetting{padding:9px 10px}
.answerRevealSetting b{font-size:11px}
.answerRevealSetting small{font-size:9px}
.scoreThresholdRow{grid-template-columns:minmax(150px,200px) minmax(0,1fr);gap:8px;margin-top:8px}
.scoreThresholdHint{font-size:9px;min-height:36px;padding:8px}
.scoringFooter{margin-top:10px;padding-top:10px;gap:8px}
.scoringFooter span{font-size:9px}
.scoringFooter .primaryBtn{min-height:38px;padding:8px 12px}
@media(max-width:720px){
  .scoringCard{padding:10px;margin-top:14px}
  .scoringHeader{grid-template-columns:38px minmax(0,1fr);gap:8px}
  .scoringIcon{width:38px;height:38px}
  .scoringTotalBadge{grid-column:2;justify-self:start}
  .scorePartGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .scoreRubricGrid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .scoreThresholdRow{grid-template-columns:1fr}
  .scoringFooter{align-items:stretch}
}
@media(max-width:520px){
  .scorePartGrid{grid-template-columns:1fr}
  .scoreRubricGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .scoreSectionHead>small{display:none}
  .scoringFooter .primaryBtn{width:100%}
}

/* v1.4.8 FIX3 — scoring luôn nằm gọn trong đúng bề rộng workspace cha */
#admin .adminGrid,
#admin .adminGrid > section,
#adminExamSection,
#adminScoringSection{min-width:0;max-width:100%;box-sizing:border-box}
#adminExamSection{overflow:visible}
#adminScoringSection{display:block;width:100%;inline-size:100%;max-inline-size:100%;overflow:hidden;margin-inline:0}
#adminScoringSection .scorePartGrid,
#adminScoringSection .scoreRubricGrid{width:100%;max-width:100%;min-width:0;grid-template-columns:repeat(3,minmax(0,1fr))}
#adminScoringSection .scoreRubricGrid{grid-template-columns:repeat(4,minmax(0,1fr))}
#adminScoringSection .scorePartField,
#adminScoringSection .scoreRubricGrid label,
#adminScoringSection .scoreSectionCard{min-width:0;max-width:100%;overflow:hidden}
#adminScoringSection input{min-width:0;width:100%;max-width:100%}
#adminScoringSection .scoringHeader{min-width:0}
#adminScoringSection .scoringHeader > div{min-width:0}
#adminScoringSection .scoringHeader p{max-width:100%}
#adminScoringSection .scoreFormula,
#adminScoringSection .scoreThresholdRow,
#adminScoringSection .scoringFooter{min-width:0;max-width:100%}
#adminScoringSection .scoreFormula p,
#adminScoringSection .scoreThresholdHint,
#adminScoringSection .scoringFooter span{overflow-wrap:anywhere}
@media(max-width:720px){
  #adminScoringSection .scorePartGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  #adminScoringSection .scoreRubricGrid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:520px){
  #adminScoringSection .scorePartGrid{grid-template-columns:1fr}
  #adminScoringSection .scoreRubricGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}



/* v1.4.8 FIX4 — single return destination + hard-contained scoring workspace */
#admin.adminFocusMode{width:100%;max-width:100%;min-width:0;overflow-x:clip}
#admin.adminFocusMode .adminFocusBar{width:100%;max-width:100%;box-sizing:border-box}
#admin.adminFocusMode .adminSectionPanel.adminSectionFocus,
#admin.adminFocusMode .teacherDashboardCard.adminSectionFocus{width:100%;max-width:100%;min-width:0;box-sizing:border-box;margin-left:0;margin-right:0}

#adminScoringSection.scoringEmbedded{display:block;position:relative;width:100%;max-width:100%;min-width:0;box-sizing:border-box;overflow:hidden;overflow-x:clip}
#adminScoringSection.scoringEmbedded .scoringHeader,
#adminScoringSection.scoringEmbedded .scoreSectionCard,
#adminScoringSection.scoringEmbedded .scorePartGrid,
#adminScoringSection.scoringEmbedded .scoreRubricGrid,
#adminScoringSection.scoringEmbedded .scoreFormula,
#adminScoringSection.scoringEmbedded .scoreThresholdRow,
#adminScoringSection.scoringEmbedded .scoringFooter{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
#adminScoringSection.scoringEmbedded .scorePartGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#adminScoringSection.scoringEmbedded .scoreRubricGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
#adminScoringSection.scoringEmbedded .scorePartField,
#adminScoringSection.scoringEmbedded .scoreRubricGrid>label{display:grid;width:100%;min-width:0;max-width:100%;box-sizing:border-box;overflow:hidden}
#adminScoringSection.scoringEmbedded .scorePartField input,
#adminScoringSection.scoringEmbedded .scoreRubricGrid input,
#adminScoringSection.scoringEmbedded .scoreThresholdRow input{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box}
#adminScoringSection.scoringEmbedded .scoreRubricGrid>label>span,
#adminScoringSection.scoringEmbedded .scoreRubricGrid>label>small{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#adminScoringSection.scoringEmbedded .scoreFormula p,
#adminScoringSection.scoringEmbedded .scoreThresholdHint,
#adminScoringSection.scoringEmbedded .scoringFooter span{min-width:0;max-width:100%;overflow-wrap:anywhere}
#adminScoringSection.scoringEmbedded .scoringFooter{flex-wrap:wrap}

@media (max-width:720px){
  #adminScoringSection.scoringEmbedded .scorePartGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  #adminScoringSection.scoringEmbedded .scoreRubricGrid{grid-template-columns:repeat(4,minmax(0,1fr))}
  #adminScoringSection.scoringEmbedded .scorePartField,
  #adminScoringSection.scoringEmbedded .scoreRubricGrid>label{padding:7px}
  #adminScoringSection.scoringEmbedded .scorePartField>b{font-size:10px}
  #adminScoringSection.scoringEmbedded .scorePartField>small{font-size:8px}
}
@media (max-width:560px){
  #adminScoringSection.scoringEmbedded{padding:10px}
  #adminScoringSection.scoringEmbedded .scorePartGrid{grid-template-columns:1fr 1fr 1fr}
  #adminScoringSection.scoringEmbedded .scoreRubricGrid{grid-template-columns:1fr 1fr}
  #adminScoringSection.scoringEmbedded .scoringHeader{grid-template-columns:36px minmax(0,1fr)}
  #adminScoringSection.scoringEmbedded .scorePartField input,
  #adminScoringSection.scoringEmbedded .scoreRubricGrid input{height:36px;padding:6px 8px}
}


/* v1.4.8 FIX5 — compact one-line answer permission + no checkbox width leak */
#adminScoringSection .answerRevealSetting{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important;width:100%!important;min-height:40px!important;height:auto!important;padding:8px 10px!important;margin:8px 0 6px!important;box-sizing:border-box!important;overflow:hidden!important;white-space:nowrap!important;background:#f8fcfa!important}
#adminScoringSection .answerRevealSetting input[type="checkbox"]{display:block!important;appearance:auto!important;width:17px!important;min-width:17px!important;max-width:17px!important;height:17px!important;min-height:17px!important;margin:0!important;flex:0 0 17px!important}
#adminScoringSection .answerRevealSetting b{display:block!important;flex:0 1 auto!important;min-width:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;font-size:11px!important}
#adminScoringSection .answerRevealSetting small{display:block!important;flex:0 1 auto!important;min-width:0!important;margin-left:2px!important;color:#718078!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;font-size:9px!important}
#adminScoringSection .scoreRevealCard{overflow:hidden!important}
#adminScoringSection .scorePartGrid,#adminScoringSection .scoreRubricGrid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
#adminScoringSection .scoreRubricGrid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
#adminScoringSection .scorePartField,#adminScoringSection .scoreRubricGrid>label{min-width:0!important}
#adminScoringSection .scorePartField input:not([type="checkbox"]),#adminScoringSection .scoreRubricGrid input:not([type="checkbox"]),#adminScoringSection .scoreThresholdRow input:not([type="checkbox"]){width:100%!important;min-width:0!important;max-width:100%!important}
@media(max-width:560px){
  #adminScoringSection .scoringHeader{grid-template-columns:36px minmax(0,1fr)!important}
  #adminScoringSection .scorePartGrid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  #adminScoringSection .scoreRubricGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  #adminScoringSection .answerRevealSetting{gap:6px!important;padding:7px 8px!important}
  #adminScoringSection .answerRevealSetting b{font-size:10px!important}
  #adminScoringSection .answerRevealSetting small{font-size:8px!important}
}

/* v1.5.0 · structured exam matrix */
.structureBox{margin:16px 0;padding:18px;border:1px solid #d9e7e2;border-radius:18px;background:linear-gradient(180deg,#fbfffd,#f3faf7);box-shadow:0 10px 28px rgba(24,75,61,.08)}
.structureHead{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.structureHead b{display:block;font-size:15px;letter-spacing:.03em}.structureHead small{display:block;color:#61756e;margin-top:4px;line-height:1.45;max-width:820px}.structureTotalBadge{white-space:nowrap;padding:8px 12px;border-radius:999px;background:#0b7f61;color:#fff;font-weight:700}.matrixTableWrap{overflow:auto;border:1px solid #d8e5e0;border-radius:14px;background:#fff}.matrixTable{width:100%;min-width:610px;border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed}.matrixTable th,.matrixTable td{padding:6px 5px;border-right:1px solid #dfe9e5;border-bottom:1px solid #dfe9e5;text-align:center;vertical-align:middle}.matrixTable th:first-child{width:78px}.matrixTable th:last-child{width:78px}.matrixTable thead th{background:#fff0ad;color:#0a4b36;font-weight:800}.matrixTable thead tr:nth-child(2) th{background:#f6fbf9}.matrixTable tbody th{background:#f5faf8;color:#174f3e}.matrixTable tfoot th{background:#edf7f2;color:#174f3e}.matrixTable th:last-child,.matrixTable td:last-child{border-right:0}.matrixTable tr:last-child td,.matrixTable tr:last-child th{border-bottom:0}.matrixAvail{font-size:11px;font-weight:800;color:#697e75;margin-bottom:2px;white-space:nowrap}.matrixTable .matrixLevel{font-size:10px;line-height:1.15;margin:2px 0}.matrixTable td small{font-size:10px;line-height:1.1}.matrixInput{width:50px;max-width:100%;padding:5px 3px;border:1px solid #c9dcd5;border-radius:7px;text-align:center;font-weight:800;color:#0b5e49;background:#fbfffd;font-size:13px}.matrixInput:focus{outline:none;border-color:#16906d;box-shadow:0 0 0 3px rgba(22,144,109,.12)}.matrixTable td small{color:#768981}.matrixRowTotal,#matrixGrandTotal{font-size:16px;color:#0b7055}.structureActions{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px}.structureHint{color:#687c74;font-size:13px}.structureHint:has(+ .primaryBtn){}
@media(max-width:700px){.structureHead,.structureActions{align-items:stretch;flex-direction:column}.structureTotalBadge{align-self:flex-start}.matrixTable{min-width:610px}.matrixInput,.matrixImportTable input{width:42px;font-size:12px}}
.importExamResult{margin-top:18px}.importResultCard{border:1px solid #cfe0ff;border-radius:18px;background:linear-gradient(180deg,#f8fbff,#fff);box-shadow:0 10px 30px rgba(30,80,160,.10);padding:18px}.importResultTop{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}.importResultTop h3{margin:6px 0}.importResultTop p{margin:6px 0 0;color:#516070}.importResultBadge{font-weight:800;padding:10px 12px;border-radius:999px;background:#eef5ff;white-space:nowrap}.matrixInstruction,.importNextHint{margin-top:12px;padding:10px 12px;border-radius:12px;background:#f6f8fb;color:#536173}.matrixLevel{font-size:12px;font-weight:700;margin:4px 0}.matrixImportTable input{width:50px;font-size:13px;font-weight:800;text-align:center}.importResultCard .structureActions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:14px}


/* v1.5.5 · import -> analyse -> matrix -> import workflow */
.importAnalysisStatus{display:flex;align-items:center;gap:9px;margin:10px 0;padding:10px 12px;border:1px solid #dbe9e4;border-radius:12px;background:#f7fbf9;color:#4e6f64;font-size:12px}.importAnalysisStatus.analyzing{background:#fffaf0;border-color:#f0dfad;color:#8a6c13}.importAnalysisStatus.importing{background:#eef7ff;border-color:#c9def2;color:#2b5f82}.importAnalysisStatus.error{background:#fff5f5;border-color:#edcccc;color:#a33a3a}.importAnalysisStatus.ready{background:#eefaf3;border-color:#c4e4d2;color:#0b7055}
.adminMatrixSetup{margin:16px 0 18px}.matrixSetupCard{border:1px solid #cfe3db;border-radius:18px;background:linear-gradient(180deg,#fcfffd,#f4faf7);box-shadow:0 12px 32px rgba(14,75,58,.08);padding:16px}.matrixSetupHead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.matrixSetupHead h3{margin:4px 0 4px;font-size:18px;color:#0b513d}.matrixSetupHead p{margin:0;color:#61756e;font-size:12px;line-height:1.5}.matrixSetupBadge{padding:9px 12px;border-radius:999px;background:#0b7f61;color:#fff;font-weight:800;white-space:nowrap}.matrixProgress{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0;padding:8px;border-radius:12px;background:#eef6f2;color:#65786f;font-size:11px}.matrixProgress span{padding:5px 8px;border-radius:999px}.matrixProgress .done{background:#dff2e8;color:#0b7055}.matrixProgress .active{background:#fff0ad;color:#725e08;font-weight:800}.matrixQuickBar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:10px 0}.matrixAllToggle{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:10px;background:#fff;border:1px solid #d3e4de;color:#0b5d47;cursor:pointer}.matrixAllToggle input{width:16px;height:16px;margin:0}.compactMatrixBtn{min-height:34px;padding:6px 10px;font-size:11px}.matrixLiveSummary{margin-left:auto;font-weight:800;color:#0b7055}.matrixChoice{display:flex;align-items:center;justify-content:center;gap:4px}.matrixChoice span{font-size:11px;color:#7a8f87}.matrixImportTable .matrixAvail{margin-bottom:2px}.matrixImportTable .matrixLevel{font-size:11px;color:#45685c}.matrixImportTable td{min-width:118px}.matrixInstruction{border:1px dashed #cfe0d9;background:#f8fcfa}.structureHint.valid{color:#0b7055;font-weight:800}.importMatrixTip{color:#62776e;font-size:12px}.adminMatrixSetup .structureActions{justify-content:flex-start;flex-wrap:wrap}.adminMatrixSetup .matrixTable{min-width:610px}.examManagementCard{margin-top:18px}
@media(max-width:700px){.matrixSetupHead{flex-direction:column}.matrixSetupBadge{align-self:flex-start}.matrixLiveSummary{margin-left:0}.adminMatrixSetup .matrixTable{min-width:610px}.matrixTable th:first-child,.matrixTable th:last-child{width:62px}.matrixTable th,.matrixTable td{padding:5px 3px}.matrixInput{width:42px;font-size:12px}}

/* v1.5.6: explicit four-step import workflow */
.importWorkflowFooter{margin-top:14px}.workflowNote{padding:10px 12px;border:1px dashed #cfe0d9;border-radius:12px;background:#f8fcfa;color:#4f685f;font-size:12px}.matrixAnalyzingCard{display:flex;align-items:center;gap:14px;min-height:74px}.matrixAnalysisPulse{font-size:30px;animation:matrixPulse 1.2s ease-in-out infinite}@keyframes matrixPulse{50%{transform:scale(1.12);opacity:.65}}#questionImportSubmit:disabled{opacity:.48;cursor:not-allowed;filter:grayscale(.15)}

/* v1.5.8: keep imported exam list directly below scoring card in the exam column */
.adminGrid #adminExamManagementSection{grid-column:2;margin-top:0}
@media(max-width:900px){.adminGrid #adminExamManagementSection{grid-column:1}}
/* Structured practice result feedback */
.examTopTitle{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.examMatrixSummary{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:rgba(31,41,55,.06);font-size:.84rem;font-weight:700;letter-spacing:.01em}
.resultFeedback{margin:16px 0;padding:16px 18px;border:1px solid rgba(31,41,55,.1);border-radius:16px;background:rgba(248,250,252,.9);text-align:left}
.resultFeedbackTitle{font-size:1.05rem;font-weight:800;margin-bottom:6px}
.resultFeedback p{margin:0 0 8px;line-height:1.55}
.feedbackSectionLine{margin-top:6px;line-height:1.5}
@media (max-width:640px){.examMatrixSummary{font-size:.76rem}.resultFeedback{padding:13px 14px}}



/* v1.5.8 MATRIX-FIX11 */
.matrixInput{appearance:textfield;-moz-appearance:textfield;}
.matrixInput::-webkit-outer-spin-button,.matrixInput::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0;}
.matrixChoice{display:flex;align-items:center;justify-content:center;gap:0;min-height:34px;}
.examOption.examMcqOption{align-items:center;}
.examOption.examMcqOption input{margin:0;}
.examOption.examMcqOption>b{display:flex;align-items:center;line-height:1.4;margin:0;}
.examOption.examMcqOption>span{display:block;line-height:1.6;}
.option>b{display:inline-flex;align-items:center;line-height:1.4;margin:0;}
.option>span{display:inline-block;line-height:1.6;vertical-align:middle;}
.examOption.tf{align-items:center;}
.examOption.tf .tfLabel{display:flex;align-items:center;line-height:1.4;margin:0;}
.examOption.tf .tfText{display:block;line-height:1.6;}
.historyOption{align-items:center;}
.historyOption>b{display:flex;align-items:center;line-height:1.4;margin:0;}

/* FIX12 — đồng hồ luôn bám theo màn hình và cảnh báo rời màn hình */
.examTop{position:sticky!important;top:56px!important;z-index:40!important;background:rgba(247,248,252,.97)!important;backdrop-filter:blur(10px);box-shadow:0 4px 12px rgba(15,23,42,.06);border-radius:0 0 12px 12px}
#examTimer{min-width:106px;text-align:center;font-variant-numeric:tabular-nums;font-weight:900;letter-spacing:.3px}
#examTimer.timerDanger{background:#fff0f0!important;color:#b91c1c!important;border-color:#fecaca!important;box-shadow:0 0 0 2px rgba(220,38,38,.08)}
.examAwayWarning{position:fixed;inset:0;z-index:10000;background:rgba(127,29,29,.28);display:flex;align-items:flex-start;justify-content:center;padding:78px 16px 16px;backdrop-filter:blur(2px)}
.examAwayWarning.hidden{display:none}
.examAwayBox{width:min(720px,100%);display:flex;align-items:center;gap:14px;background:#fff1f2;border:2px solid #dc2626;border-left-width:8px;border-radius:16px;padding:16px 18px;box-shadow:0 18px 50px rgba(127,29,29,.28);color:#7f1d1d}
.examAwayIcon{font-size:30px;line-height:1}
.examAwayContent{flex:1;min-width:0}.examAwayContent strong{display:block;font-size:16px;color:#991b1b;letter-spacing:.2px}.examAwayContent p{margin:5px 0;color:#7f1d1d;font-size:13px;line-height:1.45}.examAwayContent small{display:block;color:#b91c1c;font-weight:800}
.examAwayClose{border:0;background:#b91c1c;color:#fff;border-radius:10px;padding:10px 14px;font-weight:800;cursor:pointer;white-space:nowrap}
@media(max-width:640px){.examTop{top:52px!important}.examAwayWarning{padding:66px 10px 10px;align-items:flex-start}.examAwayBox{align-items:flex-start;flex-wrap:wrap;padding:14px}.examAwayClose{width:100%}}


/* FIX14 — exam workspace, fixed timer, horizontal swipe mode, progress & history */
.matrixGenerating{min-height:110px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:7px}.matrixGenerating b{font-size:16px;color:var(--blue)}.matrixGenerating span{font-size:12px;color:var(--muted)}
.examTop{position:sticky!important;top:56px!important;z-index:41!important;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0!important;background:rgba(247,248,252,.97)!important;backdrop-filter:blur(12px);box-shadow:0 4px 12px rgba(15,23,42,.06)}
.examTopTitle{min-width:0;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.examProgressMini{display:inline-flex;align-items:center;gap:8px;padding:6px 9px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:10px;font-weight:800}.examProgressMini b{color:var(--green-dark)}
.examTopTools{display:flex;align-items:center;gap:6px;flex:0 0 auto}.examModeSwitch{display:flex;border:1px solid var(--green-line);border-radius:12px;padding:3px;background:#fff}.examModeBtn{border:0;background:transparent;color:var(--muted);padding:6px 9px;border-radius:9px;font-weight:900;font-size:10px;cursor:pointer}.examModeBtn.active{background:var(--green-soft);color:var(--green-dark)}
.examTimerDockWrap{height:64px;position:relative;z-index:44}.examTimerDock{position:fixed;top:74px;right:max(12px,calc((100vw - 760px)/2 + 12px));z-index:70;min-width:136px;padding:11px 17px!important;border:1px solid #BFE2CC;background:linear-gradient(135deg,#F0FBF4,#E2F5E9)!important;color:#0B6B3C!important;box-shadow:0 8px 24px rgba(11,107,60,.16);font-size:17px;font-variant-numeric:tabular-nums;letter-spacing:.5px;text-align:center}.examTimerDock.timerDanger{background:#fff0f0!important;color:#b91c1c!important;border-color:#fecaca!important;box-shadow:0 0 0 3px rgba(220,38,38,.08),0 10px 28px rgba(127,29,29,.14)}
.examQuestion{scroll-margin-top:148px}.examBookmark{border:1px solid var(--green-line);background:#fff;color:#8BA496;border-radius:10px;min-width:36px;height:32px;font-size:18px;cursor:pointer}.examBookmark.active{color:#0B6B3C;background:#EAF7F0;border-color:#9DD0AF}.examSubmit{position:sticky;bottom:8px;z-index:45;border:1px solid var(--green-line);border-radius:18px;margin:16px 0 22px;padding:10px 12px;background:rgba(250,253,251,.96);backdrop-filter:blur(12px);box-shadow:0 -6px 22px rgba(11,90,53,.08)}.examSubmitMeta{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:11px;margin-bottom:8px}.examSubmitMeta b{color:var(--green-dark)}
.examSlides{display:flex;width:100%;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;gap:0;-webkit-overflow-scrolling:touch}.examSlides::-webkit-scrollbar{display:none}.examSlide{flex:0 0 100%;width:100%;scroll-snap-align:start;padding:0 1px}.examSlide .examQuestion{min-height:55vh;margin-top:0}.examStepNav{display:flex;justify-content:space-between;gap:12px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--green-line)}.examStepBtn{border:1px solid var(--green-line);background:#fff;color:var(--green-dark);border-radius:11px;padding:9px 12px;font-weight:900;cursor:pointer}.examDotNav{display:flex;gap:5px;overflow-x:auto;padding:8px 2px 4px;scrollbar-width:none}.examDotNav::-webkit-scrollbar{display:none}.examDotBtn{flex:0 0 auto;min-width:28px;height:28px;padding:0 7px;border:1px solid var(--line);background:#fff;color:#64748b;border-radius:9px;font-weight:850;font-size:10px}.examDotBtn.active{border-color:#8fc5a1;background:#EAF7F0;color:#0B6B3C}.examDotBtn:has(+ .examDotBtn){}
.historyDetailBack{margin-bottom:10px}.historyDetailBack .ghostBtn{border:1px solid var(--green-line);border-radius:11px;padding:8px 11px;background:#fff}
@media(max-width:760px){.examTimerDock{right:10px;top:69px;min-width:122px;font-size:16px;padding:10px 14px!important}.examTop{top:52px!important}.examTimerDockWrap{height:60px}.examProgressMini{font-size:9px}.examModeBtn{padding:6px 7px;font-size:9px}}
@media(max-width:520px){.examTopTitle>.pill{max-width:44vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.examTop{align-items:flex-start}.examTopTools{align-self:center}.examSlides .qcard{padding:15px}.examSlide .examQuestion{min-height:62vh}.examDotBtn{min-width:30px;height:30px}.examSubmit{margin-bottom:14px}.examSubmitMeta{font-size:10px;gap:10px}}

/* FIX14 — modal lịch sử bài làm */
.attemptHistoryModalBox{width:min(860px,100%);max-height:min(86vh,900px);overflow:hidden;display:flex;flex-direction:column}.attemptHistoryModalBody{overflow:auto;padding:2px 3px 8px}.attemptHistoryModalRow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:11px 12px;border:1px solid var(--line);background:#fff;border-radius:14px;margin-bottom:8px}.attemptHistoryModalRow b{display:block;color:var(--green-dark);font-size:13px}.attemptHistoryModalRow small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.attemptHistoryModalScore{text-align:right}.attemptHistoryModalScore b{color:#15803D}.attemptHistoryModalRow .ghostBtn{white-space:nowrap}.historyDetailBack{position:sticky;top:-2px;z-index:2;padding-bottom:8px;background:#fff}
@media(max-width:640px){.attemptHistoryModalRow{grid-template-columns:1fr auto;align-items:start}.attemptHistoryModalRow .ghostBtn{grid-column:1 / -1;width:100%}.attemptHistoryModalScore{text-align:right}}


/* FIX15 — daily practice / stable exam workspace */
.examTimerDockWrap{height:78px!important}
.examTimerDock{min-width:170px!important;min-height:50px!important;font-size:22px!important;display:flex;align-items:center;justify-content:center;top:76px!important;right:max(12px,calc((100vw - 760px)/2 + 12px))!important}
.examTop{padding-right:190px!important}
.examSlides{padding-bottom:8px}
@media(max-width:760px){.examTimerDockWrap{height:72px!important}.examTimerDock{top:68px!important;right:10px!important;min-width:150px!important;font-size:20px!important}.examTop{padding-right:162px!important}}
@media(max-width:520px){.examTimerDock{min-width:144px!important;font-size:19px!important}.examTop{padding-right:154px!important}}

/* FIX16 — attempt timing + compact matrix labels */
.matrixImportTable .matrixLevel,.matrixTable .matrixLevel{display:none!important}
.attemptRow small{line-height:1.35}.attemptScore small:last-child{color:var(--green-dark);font-weight:800}.previewSummary small{display:block;color:var(--muted);line-height:1.5;margin-top:5px}


/* FIX20 — mobile exam status navigator */
.examStatusBtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--green-line);background:#fff;color:var(--green-dark);border-radius:12px;padding:7px 10px;min-height:38px;font-weight:900;cursor:pointer}.examStatusBtn span{font-size:10px;color:var(--muted);font-weight:700}.examStatusBtn b{font-variant-numeric:tabular-nums}.examQuestionNavigator{position:sticky;top:0;z-index:50;margin:0 0 10px;padding:12px;border:1px solid var(--green-line);border-radius:15px;background:rgba(255,255,255,.98);box-shadow:0 12px 32px rgba(15,23,42,.12)}.examQuestionNavigator.hidden{display:none}.examQuestionNavigatorHead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.examQuestionNavigatorHead span{font-size:11px;color:var(--muted);font-weight:800}.examQuestionNavigator section{margin-top:8px}.examQuestionNavigator section>b{display:block;margin-bottom:6px;font-size:12px}.examNavGrid{display:flex;flex-wrap:wrap;gap:6px}.examNavQ{min-width:36px;height:34px;border:1px solid var(--line);border-radius:9px;background:#fff;color:#475569;font-weight:900;cursor:pointer}.examNavQ.answered{background:#EAF7F0;border-color:#9DD0AF;color:#0B6B3C}.examNavQ.marked{box-shadow:0 0 0 2px rgba(245,158,11,.28)}.examNavLegend{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px;font-size:10px;color:var(--muted);font-weight:700}.examNavLegend i{display:inline-block;width:10px;height:10px;border-radius:3px;border:1px solid var(--line);vertical-align:-1px}.examNavLegend i.done{background:#EAF7F0;border-color:#9DD0AF}.examSubmitStatusBtn{border:0;background:transparent;color:var(--green-dark);font-weight:900;cursor:pointer}.examSubmitStatusBtn{padding:4px 8px;border-radius:9px}.examSubmitStatusBtn:hover{background:#eef8f2}.adminTrialSettingsBar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px 0;padding:12px 14px;border:1px solid var(--green-line);border-radius:14px;background:#f8fcf9}.adminTrialSettingsBar>div{flex:1;min-width:230px}.adminTrialSettingsBar b{display:block}.adminTrialSettingsBar small{display:block;color:var(--muted);margin-top:3px}.adminTrialSettingsBar label{display:flex;align-items:center;gap:6px;font-weight:900}.adminTrialSettingsBar input{width:90px}.examSlides{touch-action:pan-x;overscroll-behavior-x:contain}.examModeBtn{min-width:72px}.examStatusBtn:active,.examModeBtn:active,.examStepBtn:active{transform:scale(.98)}
@media(max-width:640px){.examTop{gap:8px}.examTopTitle{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.examTopTitle>.pill{max-width:none}.examStatusBtn{justify-content:center;min-width:126px;padding:7px 8px}.examStatusBtn span{max-width:66px;text-align:left;line-height:1.1}.examTopTools{width:100%}.examModeSwitch{width:100%;padding:3px}.examModeBtn{flex:1;min-height:40px;font-size:11px}.examQuestionNavigator{margin-left:0;margin-right:0}.examNavQ{min-width:38px;height:36px}.adminTrialSettingsBar{align-items:stretch}.adminTrialSettingsBar label,.adminTrialSettingsBar button{width:100%;justify-content:center}.examSlides{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.examStepBtn{min-height:42px;padding:10px 14px}}


/* FIX21 — mobile exam workspace refinement */
.examStatusFloating{position:fixed!important;right:max(12px,calc((100vw - 760px)/2 + 12px));top:132px;z-index:79!important;width:52px;min-width:52px!important;height:52px;min-height:52px!important;padding:0!important;border-radius:50%!important;display:flex!important;align-items:center;justify-content:center;gap:2px;box-shadow:0 10px 26px rgba(15,23,42,.18)!important;background:#fff!important;border:1px solid var(--green-line)!important}
.examStatusFloating .examStatusIcon{font-size:22px;line-height:1}.examStatusFloating b{font-size:9px;position:absolute;right:5px;bottom:4px;min-width:20px;padding:2px 4px;border-radius:999px;background:var(--green-soft);color:var(--green-dark)}
.examTop{position:relative!important;top:auto!important;z-index:30!important}
.examTimerDockWrap{height:34px!important}
.examQuestion{scroll-margin-top:104px!important}
.examSlides{touch-action:pan-x pan-y!important}
@media(max-width:760px){
  .examTop{padding:6px 0!important}
  .examTimerDockWrap{height:30px!important}
  .examTimerDock{top:66px!important;right:10px!important;min-width:142px!important;min-height:46px!important;font-size:19px!important}
  .examStatusFloating{top:116px!important;right:10px!important;width:48px!important;min-width:48px!important;height:48px!important;min-height:48px!important}
  .examQuestion{scroll-margin-top:86px!important}
  .examSlides{padding-top:4px!important;overflow-y:visible!important}
  .examSlide{padding-top:0!important}
  .examSlide .examQuestion{min-height:0!important;margin-top:0!important}
}
@media(max-width:520px){
  .examTimerDockWrap{height:26px!important}
  .examTimerDock{top:64px!important;min-width:134px!important;min-height:44px!important;font-size:18px!important;padding:9px 12px!important}
  .examStatusFloating{top:112px!important;width:46px!important;min-width:46px!important;height:46px!important;min-height:46px!important}
  .examStatusFloating .examStatusIcon{font-size:20px}
  .examStatusFloating b{font-size:8px}
  .examQuestion{scroll-margin-top:78px!important}
}


/* FIX23 — mobile swipe question strip + compact exam workspace */
.examDotNavFixed{position:sticky!important;top:108px!important;z-index:68!important;margin:0 0 8px!important;padding:7px 4px 6px!important;background:rgba(247,248,252,.98)!important;backdrop-filter:blur(10px);border:1px solid var(--green-line);border-radius:12px;box-shadow:0 6px 18px rgba(15,23,42,.08);overflow-x:auto;display:flex;gap:5px;scrollbar-width:none}
.examDotNavFixed::-webkit-scrollbar{display:none}
.examDotNavFixed .examDotBtn{min-width:32px;height:31px;border-radius:8px;font-size:10px}
.examDotNavFixed .examDotBtn.answered{background:#EAF7F0;border-color:#9DD0AF;color:#0B6B3C}
.examDotNavFixed .examDotBtn.marked{box-shadow:0 0 0 2px rgba(245,158,11,.28)}
.examStatusFloating{display:none!important}
.examSubmitStatusBtn{display:none!important}
.examStopBtn{min-height:36px;padding:7px 11px!important;font-weight:900}
.examSlides{min-width:0;overflow-x:auto;overflow-y:visible;touch-action:pan-x pan-y!important}
.examSlide{min-width:0;box-sizing:border-box}
.examSlide .examQuestion{overflow:visible!important}
.examQuestion{scroll-margin-top:154px!important}
@media(max-width:760px){
  .examTimerDockWrap{height:24px!important}
  .examTimerDock{top:62px!important;right:10px!important;min-width:132px!important;min-height:42px!important;font-size:18px!important;padding:8px 11px!important}
  .examDotNavFixed{top:110px!important;margin-top:0!important;margin-bottom:7px!important}
  .examQuestion{scroll-margin-top:156px!important}
  .examSlides{padding-top:0!important}
  .examSlide .examQuestion{min-height:0!important;padding:13px!important}
  .examTop{padding:4px 0!important}
  .examSection{margin-top:4px!important;padding-top:0!important}
}
@media(max-width:520px){
  .examTimerDockWrap{height:22px!important}
  .examTimerDock{top:60px!important;right:9px!important;min-width:126px!important;min-height:40px!important;font-size:17px!important}
  .examDotNavFixed{top:106px!important;padding:6px 3px!important}
  .examDotNavFixed .examDotBtn{min-width:31px;height:30px}
  .examQuestion{scroll-margin-top:151px!important}
  .examSubmitMeta{gap:8px!important;justify-content:space-between!important}
  .examStopBtn{font-size:10px!important}
}


/* PERFORMANCE PASS — instant mock catalog */
.mockCatalogIntro{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:16px 0 10px;padding:0 2px;color:var(--muted);font-size:12px}
.mockCatalogIntro b{color:var(--blue);font-size:15px}.mockCatalogIntro span{font-size:11px}
.mockCatalogGrid{display:grid;gap:14px}.mockCatalogSection{padding:13px;border:1px solid var(--green-line);border-radius:18px;background:linear-gradient(135deg,#fbfdff,#f7faff);box-shadow:0 8px 22px rgba(11,90,53,.05)}
.mockCatalogHead{display:flex;align-items:center;gap:10px;margin-bottom:10px}.mockCatalogHead .mockFolderIcon{width:38px;height:38px;font-size:20px}.mockCatalogHead h2{margin:0;color:var(--blue);font-size:16px}.mockCatalogHead small{display:block;margin-top:3px;color:var(--muted);font-size:11px}.mockCatalogSection .examCard{box-shadow:0 4px 12px rgba(15,23,42,.04);border-radius:14px;padding:11px}.mockCatalogSection .examCard h3{margin:5px 0 2px;font-size:13px}.mockCatalogSection .examCard small{display:block;color:var(--muted);font-size:10px}.mockCatalogLoading{padding:12px;border-radius:12px;background:#fff;color:var(--muted);font-size:11px;text-align:center}
@media(max-width:640px){.mockCatalogIntro{display:block}.mockCatalogIntro span{display:block;margin-top:3px}.mockCatalogSection{padding:10px;border-radius:15px}.mockCatalogHead{margin-bottom:8px}.mockCatalogSection .examCard{align-items:center!important}.mockCatalogSection .examCard .primaryBtn{padding:8px 10px;font-size:11px}}


/* PERFORMANCE PASS — progress belongs to the top exam bar */
.examProgressMini{white-space:nowrap}.examStatusIcon{font-size:15px;line-height:1;color:var(--green-dark)}.examProgressLabel{color:var(--muted)}.examMarkedMini{padding-left:3px;border-left:1px solid var(--line)}.examSubmitHint{color:var(--muted);font-size:10px}
@media(max-width:640px){.examProgressMini{gap:5px;padding:5px 7px;font-size:9px}.examStatusIcon{font-size:14px}.examProgressLabel{display:none}.examSubmitHint{font-size:9px}}


@media(max-width:640px){
  .examTop{flex-wrap:wrap!important;align-items:center!important}
  .examTopTitle{width:100%!important;flex:1 1 100%!important}
  .examTopTools{width:100%!important;flex:1 1 100%!important}
}


/* FIX25 — bottom question dock + centered swipe question */
.examDotNavFixed{
  position:fixed!important;
  top:auto!important;
  bottom:16px!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  width:min(760px,calc(100vw - 24px))!important;
  min-height:48px;
  box-sizing:border-box;
  z-index:900!important;
  margin:0!important;
  padding:8px 7px!important;
  display:flex!important;
  align-items:center;
  justify-content:flex-start;
  overflow-x:auto;
  background:rgba(247,248,252,.98)!important;
  box-shadow:0 -7px 22px rgba(15,23,42,.14),0 0 0 1px rgba(191,226,204,.85)!important;
}
.examSlides{padding-bottom:86px!important;scroll-padding-top:72px;scroll-padding-bottom:110px}
.examSlide{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 250px);padding:10px 1px 28px!important;box-sizing:border-box}
.examSlide .examQuestion{width:100%;max-height:none;margin:0!important}
.examStepNav{margin-top:18px}
@media(max-width:760px){
  .examDotNavFixed{bottom:calc(82px + env(safe-area-inset-bottom))!important;width:calc(100vw - 16px)!important;min-height:48px;padding:7px 5px!important}
  .examSlides{padding-bottom:108px!important}
  .examSlide{min-height:calc(100vh - 276px);padding:8px 0 28px!important}
  .examSlide .examQuestion{max-width:100%;}
}
@media(max-width:520px){
  .examDotNavFixed{bottom:calc(78px + env(safe-area-inset-bottom))!important;min-height:46px}
  .examSlides{padding-bottom:104px!important}
  .examSlide{min-height:calc(100vh - 256px);padding-bottom:22px!important}
}


/* FIX25 — per-exam scoring editor */
.examScoreSetup{margin:14px 0 18px;padding:14px;border:1px solid #cfe3db;border-radius:16px;background:linear-gradient(135deg,#fbfffd,#f1faf5);box-shadow:0 8px 22px rgba(11,90,53,.06)}
.examScoreHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.examScoreHead b{display:block;color:#0b513d;font-size:14px}.examScoreHead small{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.45}.examScoreBadge{padding:6px 9px;border-radius:999px;background:#e1f5e8;color:#0b6b3c;font-size:10px;font-weight:900;white-space:nowrap}
.examScoreDefault{display:flex;align-items:center;gap:7px;margin:12px 0 10px;color:#0b513d;font-size:12px;font-weight:800}.examScoreDefault input{width:16px;height:16px;margin:0}.examScoreGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.examScoreGrid label,.examScoreRubric label{display:grid;gap:5px;padding:9px;border:1px solid #d7e8df;border-radius:11px;background:#fff;color:#45685c;font-size:10px;font-weight:800}.examScoreGrid input,.examScoreRubric input{width:100%;min-width:0;box-sizing:border-box;padding:7px 8px;border:1px solid #c9ddd3;border-radius:8px;font-weight:900;color:#0b513d;background:#fff}.examScoreGrid input:disabled,.examScoreRubric input:disabled{opacity:.58;background:#eef3f0}.examScoreRubric{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:9px}.examScoreRubric>b{grid-column:1/-1;color:#0b513d;font-size:11px}.examScoreActions{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:11px}.examScoreActions span{color:var(--muted);font-size:10px}.examScoreActions .primaryBtn{font-size:11px;padding:8px 11px}
@media(max-width:640px){.examScoreHead{display:block}.examScoreBadge{display:inline-block;margin-top:7px}.examScoreGrid{grid-template-columns:1fr 1fr}.examScoreGrid label:last-child{grid-column:1/-1}.examScoreRubric{grid-template-columns:repeat(2,minmax(0,1fr))}.examScoreRubric>b{grid-column:1/-1}.examScoreActions .primaryBtn{width:100%;justify-content:center}}

/* v163 · Interactive learning */
.lessonAccordion .lessonOpenBtn{width:100%;border:0;background:transparent;color:inherit;text-align:left;display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:0}
.lessonAccordion .lessonExpandable{display:none;padding-top:14px}
.lessonAccordion.is-open .lessonExpandable{display:block}
.lessonAccordion.is-open .lessonChevron{transform:rotate(180deg)}
.lessonChevron{display:inline-block;margin-left:8px;transition:transform .18s ease;font-size:20px}
.lessonActionsGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.lessonActionBtn{min-height:42px}
.interactiveLessonBtn{position:relative}
.interactiveLessonBtn::after{content:'NEW';position:absolute;right:6px;top:4px;font-size:8px;font-weight:800;letter-spacing:.08em;opacity:.65}
.interactiveRunner{max-width:900px;margin:0 auto}
.interactiveRunnerHead h2{margin:10px 0 6px}.interactiveRunnerHead p{margin:0 0 14px;line-height:1.6}.interactiveProgress{height:7px;background:rgba(0,0,0,.08);border-radius:999px;overflow:hidden}.interactiveProgress span{display:block;height:100%;border-radius:inherit;background:currentColor}
.interactiveActivityBody{padding:22px 0}.interactiveChoice{width:100%;display:flex;gap:12px;align-items:flex-start;text-align:left;border:1px solid rgba(0,0,0,.1);background:var(--surface,#fff);border-radius:14px;padding:14px;margin:9px 0;cursor:pointer}.interactiveChoice.selected{outline:2px solid currentColor;transform:translateY(-1px)}.interactiveChoice span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(0,0,0,.13);font-weight:800;flex:0 0 auto}.interactiveChoice b{line-height:1.45}
.interactiveFill{width:100%;font-size:18px;padding:14px 16px;border:1px solid rgba(0,0,0,.14);border-radius:12px;box-sizing:border-box}
.interactiveMatchGrid,.interactiveClassifyList{display:grid;gap:12px}.interactiveMatchRow,.interactiveClassifyRow{display:grid;gap:10px;padding:14px;border:1px solid rgba(0,0,0,.09);border-radius:14px}.interactiveMatchRow{grid-template-columns:1fr minmax(240px,1fr)}.interactiveMatchRow select{padding:11px;border-radius:10px;border:1px solid rgba(0,0,0,.13)}
.interactiveOrderList{display:grid;gap:10px}.interactiveOrderItem{display:flex;gap:10px;align-items:center;text-align:left;border:1px solid rgba(0,0,0,.1);background:var(--surface,#fff);padding:14px;border-radius:12px;cursor:pointer}.interactiveOrderItem span{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:rgba(0,0,0,.06);font-weight:800}.interactiveHint{display:block;margin-top:10px;opacity:.7}
.classifyChip{margin:4px 6px 0 0;border:1px solid rgba(0,0,0,.12);background:transparent;border-radius:999px;padding:8px 12px;cursor:pointer}.classifyChip.selected{outline:2px solid currentColor}
.interactiveRunnerFoot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:12px;border-top:1px solid rgba(0,0,0,.08)}
.interactiveResult{text-align:center;padding:18px 8px}.interactiveResultScore{font-size:48px;font-weight:900;margin:18px 0 6px}.interactiveDetailGrid{display:grid;gap:8px;text-align:left;margin:22px 0}.interactiveResultRow{display:grid;grid-template-columns:32px 1fr auto;gap:8px;align-items:center;padding:10px 12px;border:1px solid rgba(0,0,0,.08);border-radius:12px}.interactiveResultRow small{opacity:.7}
@media(max-width:820px){.lessonActionsGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.interactiveMatchRow{grid-template-columns:1fr}.interactiveResultScore{font-size:40px}}
@media(max-width:520px){.lessonActionsGrid{gap:8px}.lessonActionBtn{font-size:13px;padding:10px 8px}.interactiveActivityBody{padding:16px 0}.interactiveRunnerFoot{align-items:flex-start;flex-direction:column}.interactiveRunnerFoot>div{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.interactiveRunnerFoot .primaryBtn,.interactiveRunnerFoot .ghostBtn{width:100%}}
.learningBundleCard{padding:14px;border:1px solid rgba(11,81,61,.12);border-radius:16px;background:var(--surface,#fff);margin:10px 0;box-shadow:0 7px 20px rgba(15,23,42,.04)}
.learningBundleHead{display:flex;align-items:center;justify-content:space-between;gap:10px}.learningBundleHead h3{margin:7px 0 0}.learningBundleHead small{opacity:.65}.learningBundleActions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.learningBundleActions .lessonActionBtn{width:100%}
.interactiveHistorySection{margin-top:16px;padding-top:14px;border-top:1px dashed rgba(0,0,0,.12)}.interactiveSkillStats{display:grid;gap:8px;margin:14px 0}.skillStatRow{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:9px 11px;border:1px solid rgba(0,0,0,.08);border-radius:10px}.skillStatRow span{font-weight:900}.skillStatRow small{opacity:.65}.interactiveTeacherDetailList{display:grid;gap:10px;margin-top:14px}.interactiveTeacherDetailCard{padding:13px;border:1px solid rgba(0,0,0,.09);border-radius:14px;background:var(--surface,#fff)}.interactiveTeacherDetailCard>div{display:grid;gap:4px}.interactiveTeacherDetailCard>div b{font-size:14px}.interactiveTeacherDetailCard>div small{opacity:.6}.interactiveTeacherDetailCard p{line-height:1.55}.interactiveTeacherAnswer{display:flex;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:10px;background:rgba(0,0,0,.035)}
@media(max-width:700px){.learningBundleActions{grid-template-columns:1fr}.skillStatRow{grid-template-columns:1fr auto}.skillStatRow small{grid-column:1/-1}.interactiveTeacherAnswer{flex-direction:column}}


/* FIX37 — compact swipe exam spacing */
.examSlides .examSlide{
  align-items:flex-start!important;
  min-height:0!important;
  padding:4px 1px 12px!important;
}
.examSlides{
  padding-bottom:16px!important;
}
.examSlides .examSlide .examQuestion{
  margin-top:0!important;
}
.examSubmit{
  margin:4px 0 10px!important;
}
.examStepNav{
  margin-top:8px!important;
  padding-top:8px!important;
}
@media(max-width:760px){
  .examSlides{padding-bottom:16px!important}
  .examSlides .examSlide{padding:3px 0 10px!important}
  .examSubmit{margin:3px 0 8px!important}
}
@media(max-width:520px){
  .examSlides{padding-bottom:14px!important}
  .examSlides .examSlide{padding-bottom:8px!important}
  .examSubmit{margin:2px 0 6px!important}
}


/* FIX39 — always-visible submit dock in swipe mode */
.examSlides + .examDotNavFixed + .examSubmit{
  position:fixed!important;
  left:50%!important;
  bottom:8px!important;
  transform:translateX(-50%)!important;
  width:min(760px,calc(100vw - 24px))!important;
  box-sizing:border-box;
  margin:0!important;
  z-index:950!important;
  padding:8px 12px!important;
  border-radius:16px!important;
  box-shadow:0 -8px 24px rgba(15,23,42,.16),0 0 0 1px rgba(191,226,204,.9)!important;
}
.examSlides + .examDotNavFixed + .examSubmit .examSubmitMeta{
  margin-bottom:5px!important;
}
.examSlides + .examDotNavFixed + .examSubmit + *{}
.examSlides{
  padding-bottom:112px!important;
}
.examSlides + .examDotNavFixed{
  bottom:78px!important;
}
@media(max-width:760px){
  .examSlides{padding-bottom:126px!important}
  .examSlides + .examDotNavFixed{bottom:calc(76px + env(safe-area-inset-bottom))!important}
  .examSlides + .examDotNavFixed + .examSubmit{bottom:8px!important;width:calc(100vw - 16px)!important;padding:7px 10px!important}
}
@media(max-width:520px){
  .examSlides{padding-bottom:118px!important}
  .examSlides + .examDotNavFixed{bottom:calc(70px + env(safe-area-inset-bottom))!important}
  .examSlides + .examDotNavFixed + .examSubmit{bottom:6px!important;padding:6px 9px!important}
}


/* FIX40 — cumulative daily practice achievements */
.dailyAchievementCard{margin:12px 0 24px;padding:18px;border:1px solid #cfe3db;border-radius:20px;background:linear-gradient(135deg,#fbfffd,#f1faf5);box-shadow:0 10px 28px rgba(11,90,53,.08)}
.dailyAchievementSummary{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:center}.dailyAchievementMetrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.dailyAchievementMetrics>div{display:grid;gap:4px;padding:12px;border-radius:14px;background:#fff;border:1px solid #e0eee7}.dailyAchievementMetrics b{font-size:22px;color:#0b6b3c}.dailyAchievementMetrics span{font-size:11px;color:var(--muted)}
.dailyAchievementProgress{margin-top:16px}.achievementProgressHead{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px;font-size:12px;color:#0b513d}.achievementProgressHead span{color:var(--muted);font-size:11px}.dailyAchievementProgress .progressBar{height:9px;margin:0;background:#dcefe4;border-radius:999px;overflow:hidden}.dailyAchievementProgress .progressBar span{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#18a558,#77d69a);transition:width .25s ease}
.achievementGrid{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.achievementBadge{display:grid;gap:2px;min-width:64px;padding:8px 10px;border:1px solid #d6e7de;border-radius:12px;background:#fff;color:#7b9188;text-align:center}.achievementBadge b{font-size:12px}.achievementBadge small{font-size:9px}.achievementBadge.is-earned{border-color:#83c8a3;background:#e6f7ed;color:#0b6b3c}.achievementBadge.is-current{border-color:#e5b85c;box-shadow:0 0 0 2px rgba(229,184,92,.18);color:#8a5a00}.achievementEmpty{color:var(--muted);font-size:11px}
@media(max-width:640px){.dailyAchievementSummary{grid-template-columns:1fr}.dailyAchievementSummary .scoreRing{margin:0 auto}.dailyAchievementMetrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.dailyAchievementMetrics>div{padding:9px 6px;text-align:center}.dailyAchievementMetrics b{font-size:18px}.achievementProgressHead{display:grid;gap:4px}.achievementGrid{gap:6px}.achievementBadge{min-width:55px;padding:7px 6px}}


/* FIX41 — rank ladder presentation */
.rankBadge{min-width:74px;position:relative;overflow:hidden}.rankBadge b{font-size:13px}.rankBadge small{font-weight:800}.rankBadge.is-earned{background:linear-gradient(145deg,#e8fff0,#d8f4e4);box-shadow:0 5px 12px rgba(11,107,60,.1)}.rankBadge.is-current{transform:translateY(-2px);border-color:#e2ae45;box-shadow:0 0 0 2px rgba(226,174,69,.22),0 6px 14px rgba(226,174,69,.14)}.rankBadge.is-current::after{content:'ĐANG Ở ĐÂY';display:block;margin-top:3px;font-size:7px;font-weight:900;letter-spacing:.04em;color:#8a5a00}.rankBadge:not(.is-earned):not(.is-current){opacity:.72}


/* FIX42 — mobile swipe: submit dock visible, centered Prev/Next navigation, safe-area aware */
@media(max-width:760px){
  body.examSessionActive{padding-bottom:0!important}
  body.examSessionActive .bottomNav{display:none!important}
  body.examSessionActive .examSlides{padding-bottom:calc(128px + env(safe-area-inset-bottom))!important}
  body.examSessionActive .examSlides + .examDotNavFixed{
    bottom:calc(70px + env(safe-area-inset-bottom))!important;
    z-index:1190!important;
    width:calc(100vw - 16px)!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit{
    bottom:calc(8px + env(safe-area-inset-bottom))!important;
    z-index:1200!important;
    width:calc(100vw - 16px)!important;
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr);
    align-items:center;
    gap:8px;
    padding:7px 8px!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examSubmitMeta{
    margin:0!important;
    gap:6px!important;
    justify-content:flex-start!important;
    align-items:center;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examSubmitHint{display:none!important}
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examStopBtn{
    min-height:42px!important;
    padding:8px 10px!important;
    white-space:nowrap;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit > .primaryBtn{
    width:100%!important;
    min-width:0;
    min-height:44px;
    padding:10px 12px!important;
  }
}
@media(max-width:380px){
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit{gap:5px;padding:6px!important}
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examStopBtn{font-size:9px!important;padding:7px 8px!important}
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit > .primaryBtn{font-size:11px!important;padding:9px 8px!important}
}
.resultCardDetailed{scroll-margin-top:76px}

/* FIX44 — theory/library correctness + close button always reachable */
#contentViewer{overflow:hidden}
#contentViewer .modalBox{
  position:relative;
  width:min(760px,calc(100vw - 24px));
  max-width:100%;
  overflow-y:auto;
  overflow-x:hidden;
  box-sizing:border-box;
}
#contentViewer .modalHead{
  position:sticky;
  top:0;
  z-index:8;
  min-width:0;
  padding:2px 0 10px;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(8px);
}
#contentViewer .modalHead>div{min-width:0;max-width:calc(100% - 52px)}
#contentViewer #viewerTitle{
  max-width:100%;
  overflow-wrap:anywhere;
  word-break:break-word;
  line-height:1.22;
}
#contentViewer .closeBtn,
#contentEditModal .closeBtn{
  flex:0 0 42px;
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  padding:0;
  line-height:1;
  cursor:pointer;
  position:sticky;
  top:0;
  z-index:12;
  box-shadow:0 3px 12px rgba(15,23,42,.10);
}
#contentViewer .viewerBody{min-width:0;overflow-x:auto}
#contentViewer .orderedDocument{max-width:100%;overflow-wrap:anywhere}
.contentEditBox{width:min(680px,calc(100vw - 24px));overflow-x:hidden}
.contentEditBox .modalHead{position:sticky;top:0;z-index:8;background:#fff;padding-bottom:10px}
.editReplaceDrop{margin-top:4px}
@media(max-width:560px){
  #contentViewer{padding:6px!important;place-items:stretch center}
  #contentViewer .modalBox{width:calc(100vw - 12px)!important;max-height:calc(100dvh - 12px)!important;border-radius:18px!important;padding:12px!important}
  #contentViewer .modalHead{gap:8px;padding-top:0}
  #contentViewer .modalHead>div{max-width:calc(100% - 48px)}
  #contentViewer #viewerTitle{font-size:20px!important;margin-top:6px!important}
  #contentViewer .closeBtn,#contentEditModal .closeBtn{flex-basis:40px;width:40px;height:40px;font-size:25px}
  #contentViewer .viewerBody{margin-top:8px;padding:12px}
  .contentEditBox{width:calc(100vw - 16px)!important;max-height:calc(100dvh - 16px)!important}
}


/* FIX45 — library action visibility, fast feedback, replace-file state */
.libraryItem{min-width:0;overflow:hidden}
.libraryMain{flex:1 1 auto;min-width:0}
.libraryActions{display:flex;flex:0 1 auto;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:min(46%,430px)}
.libraryActions button{flex:0 0 auto;white-space:nowrap;min-height:40px}
.editReplaceDrop.hasFile{border-color:#16906d!important;background:#eefbf5!important;box-shadow:0 0 0 3px rgba(22,144,109,.08)}
.editReplaceDrop.hasFile strong{color:#0b6b4e!important}
.editReplaceDrop.hasFile span{color:#315f50!important;font-weight:800;overflow-wrap:anywhere;max-width:100%}
@media(max-width:900px){
  .libraryItem{align-items:flex-start;flex-direction:column}
  .libraryMain{width:100%}
  .libraryActions{width:100%;max-width:none;justify-content:flex-start;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .libraryActions button{width:100%;min-width:0;padding:9px 8px;font-size:12px}
}
@media(max-width:430px){
  .libraryActions{grid-template-columns:1fr 1fr}
  .libraryActions .dangerBtn{display:flex!important;align-items:center;justify-content:center}
}

/* FIX46 — richer, section-aware interactive learning */
.interactiveHeadMeta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.interactiveSkillPill{font-size:12px;font-weight:800;padding:6px 10px;border-radius:999px;background:rgba(11,129,84,.08);border:1px solid rgba(11,129,84,.12);max-width:100%}
.interactiveTrueFalseList,.interactiveMultiList{display:grid;gap:12px}
.interactiveTFRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px;border:1px solid rgba(0,0,0,.09);border-radius:14px;background:var(--surface,#fff)}
.interactiveTFRow>div:first-child{display:flex;gap:10px;align-items:flex-start;line-height:1.5}
.interactiveStatementNo{width:28px;height:28px;display:grid;place-items:center;flex:0 0 auto;border-radius:9px;background:rgba(0,0,0,.05);font-weight:900}
.interactiveTFButtons{display:grid;grid-template-columns:1fr 1fr;gap:7px;min-width:150px}
.interactiveTFButtons button{border:1px solid rgba(0,0,0,.12);background:transparent;border-radius:10px;padding:9px 12px;font-weight:800;cursor:pointer}
.interactiveTFButtons button.selected{outline:2px solid currentColor;background:rgba(11,129,84,.06)}
.interactiveTFButtons .falsePick.selected{background:rgba(180,35,45,.06)}
.interactiveMultiOption{width:100%;display:flex;gap:12px;align-items:flex-start;text-align:left;border:1px solid rgba(0,0,0,.1);background:var(--surface,#fff);border-radius:14px;padding:14px;cursor:pointer}
.interactiveMultiOption>span{width:30px;height:30px;display:grid;place-items:center;flex:0 0 auto;border:1px solid rgba(0,0,0,.13);border-radius:9px;font-weight:900}
.interactiveMultiOption.selected{outline:2px solid currentColor;transform:translateY(-1px)}
.interactiveResultRow.detailed{display:block;padding:13px 14px}
.interactiveResultTop{display:grid;grid-template-columns:32px 1fr;gap:8px;align-items:start}.interactiveResultTop>div{display:grid;gap:3px}
.interactiveFeedback{margin:10px 0 0 40px;padding:9px 11px;border-radius:10px;background:rgba(0,0,0,.035);line-height:1.5;font-size:13px}
@media(max-width:620px){.interactiveTFRow{grid-template-columns:1fr}.interactiveTFButtons{min-width:0}.interactiveFeedback{margin-left:0}.interactiveSkillPill{font-size:11px}.interactiveRunnerHead h2{font-size:20px}}

/* FIX47 — mobile theory reader: fixed chrome + independent content scroller */
#contentViewer .modalBox{
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  overflow:hidden!important;
}
#contentViewer .modalHead{
  position:relative!important;
  top:auto!important;
  z-index:20;
  margin:0;
  padding:2px 0 10px;
  border-bottom:1px solid rgba(221,235,226,.78);
  background:#fff;
}
#contentViewer .viewerBody{
  min-height:0;
  overflow-y:auto!important;
  overflow-x:auto!important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scroll-behavior:smooth;
  scroll-padding-top:14px;
  margin-top:10px;
}
#contentViewer .modalHead .closeBtn{
  position:relative!important;
  top:auto!important;
  align-self:flex-start;
}
#contentViewer.viewerScrolled .modalHead{
  box-shadow:0 10px 24px rgba(15,23,42,.06);
}
@media(max-width:560px){
  #contentViewer .modalBox{
    height:calc(100dvh - 12px)!important;
    max-height:calc(100dvh - 12px)!important;
    padding:10px 12px 8px!important;
  }
  #contentViewer .modalHead{
    flex:0 0 auto;
    gap:8px;
    padding:0 0 8px!important;
  }
  #contentViewer .viewerBody{
    height:auto!important;
    max-height:none!important;
    min-height:0!important;
    margin-top:7px!important;
    padding:12px!important;
    padding-bottom:calc(18px + env(safe-area-inset-bottom))!important;
  }
  #contentViewer.viewerScrolled .modalHead{
    align-items:center;
    padding-bottom:6px!important;
  }
  #contentViewer.viewerScrolled #viewerKind,
  #contentViewer.viewerScrolled #viewerMeta{
    display:none!important;
  }
  #contentViewer.viewerScrolled .modalHead>div{
    display:flex;
    align-items:center;
    min-height:40px;
    max-width:calc(100% - 48px)!important;
  }
  #contentViewer.viewerScrolled #viewerTitle{
    margin:0!important;
    font-size:16px!important;
    line-height:1.25!important;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    word-break:normal;
    overflow-wrap:normal;
  }
  #contentViewer.viewerScrolled .closeBtn{
    width:38px!important;
    height:38px!important;
    flex-basis:38px!important;
  }
}

/* FIX48 — interactive mobile viewport + polished activity presentation (scoped only to interactive viewer) */
#contentViewer.interactiveMode{z-index:1320!important}
#contentViewer.interactiveMode .viewerBody{
  background:linear-gradient(180deg,#f7fbf8 0%,#fbfdfb 100%);
  border-color:#d8e8df;
  padding:14px 16px 22px;
  overflow-x:hidden!important;
}
#contentViewer.interactiveMode .interactiveRunner{max-width:820px;margin:0 auto;padding-bottom:4px}
#contentViewer.interactiveMode .interactiveRunnerHead{
  padding:14px;border:1px solid #d8e9df;border-radius:18px;background:#fff;
  box-shadow:0 8px 24px rgba(11,90,53,.06)
}
#contentViewer.interactiveMode .interactiveQuestionCard{margin-top:12px;padding:14px 15px;border-radius:15px;background:#f5faf7;border:1px solid #e0eee6}
#contentViewer.interactiveMode .interactiveQuestionLabel{display:inline-block;font-size:10px;font-weight:950;letter-spacing:.08em;color:#0b6b3c;margin-bottom:6px}
#contentViewer.interactiveMode .interactiveQuestionCard h2{margin:0 0 8px!important;font-size:20px;line-height:1.35;color:#114b37}
#contentViewer.interactiveMode .interactiveQuestionCard p{margin:0!important;font-size:16px;line-height:1.62;color:#243d34;font-weight:720}
#contentViewer.interactiveMode .interactiveQuestionCard small{display:block;margin-top:9px;color:#6b7e76;font-size:11px;line-height:1.45}
#contentViewer.interactiveMode .interactiveProgressWrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:12px}
#contentViewer.interactiveMode .interactiveProgressWrap>b{font-size:11px;color:#5e746a}
#contentViewer.interactiveMode .interactiveActivityBody{padding:14px 0 18px}
#contentViewer.interactiveMode .interactiveChoice,
#contentViewer.interactiveMode .interactiveMultiOption,
#contentViewer.interactiveMode .interactiveOrderItem,
#contentViewer.interactiveMode .interactiveTFRow,
#contentViewer.interactiveMode .interactiveMatchRow,
#contentViewer.interactiveMode .interactiveClassifyRow{
  border-color:#dbe7e0;background:#fff;box-shadow:0 4px 13px rgba(15,23,42,.035)
}
#contentViewer.interactiveMode .interactiveChoice{padding:13px 14px;margin:8px 0;align-items:center}
#contentViewer.interactiveMode .interactiveChoice span{width:34px;height:34px;background:#f7faf8;color:#174f3b}
#contentViewer.interactiveMode .interactiveChoice b{font-size:15px;line-height:1.48;color:#263a32;font-weight:780}
#contentViewer.interactiveMode .interactiveChoice.selected{outline:2px solid #157a52;border-color:#157a52;background:#f0faf5;box-shadow:0 7px 18px rgba(21,122,82,.09)}
#contentViewer.interactiveMode .interactiveHint{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:#f3f8f5;color:#536b61;opacity:1;font-size:12px;line-height:1.5}
#contentViewer.interactiveMode .interactiveRunnerFoot{
  position:sticky;bottom:-1px;z-index:18;margin:0 -4px;padding:10px 4px 2px;
  background:linear-gradient(180deg,rgba(247,251,248,0),#f7fbf8 24%,#f7fbf8 100%);
  border-top:0
}
#contentViewer.interactiveMode .interactiveRunnerFoot>small{color:#586e65;font-size:11px}
#contentViewer.interactiveMode .interactiveRunnerFoot>div{display:flex;gap:8px}
#contentViewer.interactiveMode .interactiveRunnerFoot button{min-height:42px}

@media(max-width:760px){
  body.interactiveSessionActive{padding-bottom:0!important;overflow:hidden}
  body.interactiveSessionActive .bottomNav{display:none!important}
  #contentViewer.interactiveMode{padding:4px!important;place-items:stretch center}
  #contentViewer.interactiveMode .modalBox{height:calc(100dvh - 8px)!important;max-height:calc(100dvh - 8px)!important;width:calc(100vw - 8px)!important;padding:9px 10px 7px!important;border-radius:18px!important}
  #contentViewer.interactiveMode .modalHead{padding:0 0 7px!important}
  #contentViewer.interactiveMode #viewerTitle{font-size:17px!important;line-height:1.25!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #contentViewer.interactiveMode #viewerMeta{font-size:10px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #contentViewer.interactiveMode .viewerBody{margin-top:5px!important;padding:10px 10px calc(16px + env(safe-area-inset-bottom))!important;border-radius:15px!important;scroll-padding-bottom:86px}
  #contentViewer.interactiveMode .interactiveRunnerHead{padding:10px;border-radius:15px}
  #contentViewer.interactiveMode .interactiveHeadMeta{gap:6px}
  #contentViewer.interactiveMode .interactiveHeadMeta .pill{font-size:9px;padding:6px 8px}
  #contentViewer.interactiveMode .interactiveSkillPill{font-size:9px;padding:5px 7px;max-width:58%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #contentViewer.interactiveMode .interactiveQuestionCard{margin-top:9px;padding:11px 12px}
  #contentViewer.interactiveMode .interactiveQuestionCard h2{font-size:17px!important;margin-bottom:6px!important}
  #contentViewer.interactiveMode .interactiveQuestionCard p{font-size:14px!important;line-height:1.55!important;font-weight:700}
  #contentViewer.interactiveMode .interactiveQuestionCard small{font-size:10px;margin-top:7px}
  #contentViewer.interactiveMode .interactiveActivityBody{padding:10px 0 76px}
  #contentViewer.interactiveMode .interactiveChoice{padding:11px 10px;margin:7px 0;border-radius:13px;gap:9px}
  #contentViewer.interactiveMode .interactiveChoice span{width:31px;height:31px;font-size:13px}
  #contentViewer.interactiveMode .interactiveChoice b{font-size:13.5px;line-height:1.42;font-weight:760}
  #contentViewer.interactiveMode .interactiveTFRow{padding:11px;gap:9px}
  #contentViewer.interactiveMode .interactiveTFRow b{font-size:13px;line-height:1.45}
  #contentViewer.interactiveMode .interactiveTFButtons button{padding:8px 10px;font-size:12px}
  #contentViewer.interactiveMode .interactiveMultiOption{padding:11px;font-size:13px}
  #contentViewer.interactiveMode .interactiveMatchRow,.interactiveClassifyRow{padding:11px}
  #contentViewer.interactiveMode .interactiveMatchRow b,.interactiveClassifyRow b{font-size:13px;line-height:1.45}
  #contentViewer.interactiveMode .interactiveRunnerFoot{
    position:sticky;bottom:calc(-1px - env(safe-area-inset-bottom));margin:0 -10px;
    padding:13px 10px calc(7px + env(safe-area-inset-bottom));background:#f7fbf8;
    border-top:1px solid #dce9e1;box-shadow:0 -8px 20px rgba(15,23,42,.07);align-items:center;flex-direction:row
  }
  #contentViewer.interactiveMode .interactiveRunnerFoot>small{flex:1;min-width:0}
  #contentViewer.interactiveMode .interactiveRunnerFoot>div{width:auto;display:grid;grid-template-columns:auto auto;gap:6px}
  #contentViewer.interactiveMode .interactiveRunnerFoot button{width:auto!important;min-width:92px;padding:9px 10px;font-size:11px}
}
@media(max-width:390px){
  #contentViewer.interactiveMode .interactiveRunnerFoot>small{font-size:9px}
  #contentViewer.interactiveMode .interactiveRunnerFoot button{min-width:82px;padding:8px 8px;font-size:10px}
  #contentViewer.interactiveMode .interactiveQuestionCard p{font-size:13.5px!important}
}

/* ===== FIX49: quản lý tài khoản học sinh nhanh + sửa/xóa ===== */
.studentAccountTable table{min-width:760px}
.studentUsernameCode{display:inline-block;padding:5px 8px;border-radius:8px;background:#eef8f3;color:#096b55;font-weight:800;white-space:nowrap}
.studentAccountActions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;min-width:150px}
.studentAccountActions .ghostBtn,.studentAccountActions .dangerMiniBtn{min-height:36px;padding:7px 10px;white-space:nowrap}
.studentAccountEditBox{width:min(560px,calc(100vw - 28px))}
.studentEditGrid{display:grid;grid-template-columns:120px 1fr;gap:12px;margin-top:14px}
.studentEditGrid label{display:grid;gap:6px;font-weight:800;color:#29473b}
.studentEditGrid input{width:100%;box-sizing:border-box;padding:11px 12px;border:1px solid #d6e4dc;border-radius:11px;font:inherit;background:#fff}
.studentEditUsernameField{grid-column:1/-1}
.studentEditUsernameField input[readonly]{background:#f1f8f4;color:#08745c;font-weight:850}
.studentEditUsernameField small{font-weight:500;color:#6c7d75;line-height:1.4}
.studentAccountEditBox .modalActions{display:flex;justify-content:flex-end;gap:9px;margin-top:16px;flex-wrap:wrap}
.bulkCreateProgress{display:grid;gap:5px}
.bulkCreateProgress small{display:block;color:#61766c}
.bulkReuseNote{display:grid;gap:5px;margin-top:9px;padding-top:9px;border-top:1px dashed #cfe1d7;font-size:13px}
.bulkErrorDetails{margin-top:9px;padding-top:9px;border-top:1px dashed #efd5b5;color:#7a4d12}
.bulkErrorDetails summary{cursor:pointer;font-weight:800}
.bulkErrorDetails>div{padding:4px 0;font-size:12px}
@media(max-width:720px){
  .studentAccountTable{margin-left:-4px;margin-right:-4px}
  .studentAccountActions{min-width:130px;gap:5px}
  .studentAccountActions .ghostBtn,.studentAccountActions .dangerMiniBtn{padding:7px 9px}
  .studentEditGrid{grid-template-columns:1fr}
  .studentEditUsernameField{grid-column:auto}
  .studentAccountEditBox .modalActions>*{flex:1}
}


/* FIX51 — student profile, notifications, history; scoped to student surfaces only */
.studentNotificationBell{position:relative;display:grid;place-items:center;font-size:17px;overflow:visible}.studentNotificationBell.hasUnread{background:#f4fbf7;border-color:#b9ddc8}.studentNotificationBadge{position:absolute;right:-5px;top:-6px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:#dc2626;color:#fff;border:2px solid #fff;font-size:10px;font-weight:950;display:grid;place-items:center;line-height:1}.studentNotificationBadge.hiddenAuth{display:none!important}.notificationCenterBox{max-width:620px}.notificationCenterActions{display:flex;justify-content:flex-end;margin:10px 0}.notificationCenterRow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:13px 4px;border-top:1px solid #edf2ef}.notificationCenterRow.unread{background:linear-gradient(90deg,#eefaf3,transparent);border-radius:13px;padding-left:9px;padding-right:9px}.notificationCenterIcon{font-size:22px}.notificationCenterRow b{display:block;color:#174d35}.notificationCenterRow p{margin:3px 0;color:#53675d;font-size:13px;line-height:1.4}.notificationCenterRow small{color:#899890}.historyStatBtn,.historyStatReadOnly{border:0;background:#f4f6fb;border-radius:18px;padding:15px;text-align:center;font:inherit;min-width:0}.historyStatBtn{cursor:pointer}.historyStatBtn.active{outline:2px solid #62a982;background:#eef8f2}.historyStatBtn small,.historyStatReadOnly small{display:block;color:#6f7784}.historyStatBtn b,.historyStatReadOnly b{display:block;font-size:26px;color:var(--blue);margin-top:5px}.inProgressAttemptCard{margin-top:12px;padding:15px;border:1px solid #d9e8df;border-radius:16px;background:#fbfefc;display:flex;justify-content:space-between;gap:14px;align-items:center}.inProgressAttemptCard h3{margin:8px 0;color:#174d35}.inProgressAttemptCard small{display:block;color:#6b7d74;margin-top:4px}.missionRankRewards{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.missionRankRewards span{flex:0 0 auto;display:grid;gap:1px;text-align:center;min-width:74px}.missionRankRewards span b{font-size:11px}.missionRankRewards span small{font-size:10px}.missionRankRewards span.unlocked{border-color:#f2cc73;background:#fff8dc;color:#9a6510}
@media(max-width:700px){#profile .historyHead h2,#profile .missionTop h3{font-size:clamp(13px,3.7vw,16px);line-height:1.15;white-space:nowrap;letter-spacing:-.01em}#profile .historyHead p{font-size:12px;line-height:1.3}.historyGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.historyStatBtn,.historyStatReadOnly{padding:11px 8px}.historyStatBtn b,.historyStatReadOnly b{font-size:22px}.notificationCenterRow{grid-template-columns:auto minmax(0,1fr)}.notificationCenterRow .primaryBtn{grid-column:2;width:auto;justify-self:start}.inProgressAttemptCard{align-items:stretch;flex-direction:column}.inProgressAttemptCard .primaryBtn{width:100%}.missionRankRewards{margin-left:-2px;margin-right:-2px}.studentNotificationBell{width:38px;height:38px}}


/* ===== FIX52: student identity, notification flow, resilient exam resume ===== */
.appHeader .headerInner{gap:12px}
.brandArea{min-width:0;gap:11px}
.brandArea .appLogo{width:48px;height:48px;padding:5px;border-radius:15px;background:linear-gradient(145deg,#e6f7ee,#ffffff);box-shadow:0 7px 18px rgba(15,118,75,.13);border:1px solid #d0eadc}
.brandArea>div{min-width:0}.brandTitle{font-size:18px;letter-spacing:-.025em;font-weight:950;color:#16613f;line-height:1.05}.brandTitle span{color:#15915a}.brandSub{font-size:10.5px;line-height:1.25;color:#6e8077;margin-top:4px;white-space:nowrap}
.headerTools{gap:8px}.studentNotificationBell{background:#fff;border:1px solid #dbe8e1;box-shadow:0 5px 14px rgba(31,74,55,.08)}
#installBtn{display:none!important}
.studentProfileHeading{position:relative;overflow:hidden;padding:17px 18px!important;border:1px solid #dcece4;border-radius:22px;background:linear-gradient(135deg,#fbfffd 0%,#eef9f3 100%);box-shadow:0 10px 28px rgba(16,91,61,.07)}
.studentProfileHeading:after{content:'🧬';position:absolute;right:17px;top:50%;transform:translateY(-50%);font-size:38px;opacity:.18}.studentProfileHeading h1{margin:4px 0 2px!important;color:#165e3f!important;letter-spacing:-.03em}.studentProfileHeading p{margin:0!important;color:#667a70!important}.studentProfileKicker{font-size:10px;font-weight:950;letter-spacing:.15em;color:#15915a}
.studentProfileRibbon{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0 14px}.studentProfileRibbon button{border:1px solid #dceae3;background:#fff;border-radius:18px;padding:13px 8px;display:grid;place-items:center;gap:3px;font:inherit;box-shadow:0 7px 18px rgba(27,86,61,.055);cursor:pointer}.studentProfileRibbon button span{font-size:22px}.studentProfileRibbon button b{font-size:12px;color:#165e3f}.studentProfileRibbon button small{font-size:9.5px;color:#839089}
#profile .missionCard,#profile .historyCard,#profile .assignedStudentCard,#profile .identityCard,#profile .accountSecurityCard{border-color:#dceae3;box-shadow:0 9px 24px rgba(28,84,61,.055)}
#profile .missionCard{background:linear-gradient(180deg,#fff,#fbfefc)}
.notificationCenterBox{width:min(620px,calc(100vw - 18px));max-height:min(88dvh,820px);display:flex;flex-direction:column}.notificationCenterBox #studentNotificationModalList{overflow:auto;min-height:0}.notificationCenterButton{width:100%;border:0;font:inherit;text-align:left;cursor:pointer;background:#fff}.notificationCenterButton:hover{background:#f6fbf8}.notificationCenterIndex{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#edf7f1;color:#147247;font-size:10px;font-weight:950}.notificationCenterCopy{min-width:0}.notificationCenterRow>strong{color:#3d725c;font-size:21px}.notificationTaskDetail{padding:14px 7px 8px}.notificationBackBtn{border:0;background:none;color:#18724d;font-weight:850;padding:6px 0 14px;cursor:pointer}.notificationTaskIcon{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;font-size:28px;background:#ecf8f1;margin-bottom:12px}.notificationTaskDetail h3{font-size:21px;line-height:1.25;color:#165e3f;margin:10px 0 7px}.notificationTaskDetail p{font-size:14px;line-height:1.6;color:#4d6258;margin:0 0 9px}.notificationTaskDetail small{color:#8b9891}.notificationTaskActions{display:flex;gap:8px;margin-top:18px}.notificationTaskActions>*{flex:1}.notificationRowButton{width:100%;border:0;font:inherit;text-align:left;cursor:pointer;grid-template-columns:auto auto minmax(0,1fr) auto!important;align-items:center}.notificationListNo{width:23px;height:23px;display:grid;place-items:center;border-radius:50%;background:#edf7f1;color:#18734d;font-size:10px;font-weight:900}.notificationRowButton>strong{font-size:20px;color:#4a7562}.studentQuickNotifyItem{width:100%;border:0;text-align:left;font:inherit;cursor:pointer}.studentQuickNotifyItem>strong{align-self:center;color:#4a7562;font-size:20px}
@media(max-width:700px){
 .appHeader .headerInner{padding-left:12px;padding-right:12px}.brandArea .appLogo{width:42px;height:42px;border-radius:13px}.brandTitle{font-size:16px}.brandSub{font-size:9.5px;max-width:210px;overflow:hidden;text-overflow:ellipsis}.headerTools{gap:6px}.studentProfileHeading{padding:14px 15px!important}.studentProfileHeading h1{font-size:22px!important;white-space:nowrap}.studentProfileHeading p{font-size:11px!important;line-height:1.3}.studentProfileHeading:after{font-size:31px}.studentProfileRibbon{gap:7px}.studentProfileRibbon button{padding:10px 5px;border-radius:15px}.studentProfileRibbon button span{font-size:19px}.studentProfileRibbon button b{font-size:11px}.studentProfileRibbon button small{font-size:8.5px}.notificationCenterRow{grid-template-columns:auto auto minmax(0,1fr) auto!important;padding:11px 7px}.notificationCenterIcon{font-size:19px}.notificationCenterCopy b{font-size:12px}.notificationCenterCopy p{font-size:11px;line-height:1.35}.notificationCenterCopy small{font-size:9px}.notificationCenterActions{margin:6px 0 9px}.notificationTaskDetail h3{font-size:18px}
}

/* =====================================================================
   FIX53 — BRANDING / DESKTOP HERO ONLY
   Scope: logo + desktop home banner. No application logic changed.
   ===================================================================== */
.brandArea .appLogo,
.authBrand .appLogo{
  object-fit:cover;
  object-position:center;
  padding:0;
  background:#fff;
  border:1px solid #d8eadf;
  box-shadow:0 7px 18px rgba(10,91,53,.14);
}
.brandArea .appLogo{width:50px;height:50px;border-radius:16px}
.authBrand .appLogo{width:58px;height:58px;border-radius:18px}

.welcomeDesktopBanner{display:none}
@media (min-width:701px){
  .pageWrap{max-width:1180px}
  .headerInner{max-width:1180px}
  .welcomeCard{
    min-height:0;
    padding:0;
    border-radius:26px;
    background:#0b6b3c;
    box-shadow:0 18px 42px rgba(9,93,52,.18);
    border:1px solid rgba(10,100,57,.12);
    overflow:hidden;
  }
  .welcomeCard:after{display:none}
  .welcomeDesktopBanner{
    display:block;
    width:100%;
    height:auto;
    aspect-ratio:3/1;
    object-fit:cover;
    object-position:center;
  }
  .welcomeCard .welcomeCopy,
  .welcomeCard .welcomeArt{display:none}
}

@media (min-width:701px) and (max-width:1000px){
  .welcomeCard{border-radius:22px}
  .brandArea .appLogo{width:46px;height:46px;border-radius:15px}
}

@media (max-width:700px){
  .brandArea .appLogo{width:42px;height:42px;border-radius:13px}
  .authBrand .appLogo{width:52px;height:52px;border-radius:16px}
  .welcomeDesktopBanner{display:none!important}
}
/* FIX55 — multi-file exam matrix */
.batchMatrixFileCard{margin:14px 0;padding:14px;border:1px solid #d7eadf;border-radius:18px;background:#fff;box-shadow:0 6px 18px rgba(20,84,55,.05)}
.batchMatrixFileHead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.batchMatrixFileHead>div{min-width:0}.batchMatrixFileHead b{display:block;color:#0b623c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.batchMatrixFileHead small{display:block;color:#6b7e74;margin-top:3px}.batchFileSelected{flex:0 0 auto;background:#ecf8f1;color:#087546;border:1px solid #cce8d8;border-radius:999px;padding:6px 10px;font-weight:800;font-size:.82rem}
.batchMatrixOverall{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px;padding:13px 15px;border-radius:16px;background:linear-gradient(135deg,#eaf8ef,#f8fcfa);border:1px solid #cae7d5}.batchMatrixOverall>b{color:#0c6b43}.batchMatrixOverall span{flex:1;color:#5c7267}.batchMatrixOverall strong{color:#087746;font-size:1.05rem}
@media(max-width:760px){.batchMatrixFileCard{padding:10px}.batchMatrixFileHead{align-items:flex-start}.batchMatrixOverall{align-items:flex-start}.batchMatrixOverall span{flex-basis:100%;font-size:.86rem}.matrixTable.batchMatrixTable{min-width:720px}}

/* ===== FIX56: Giao nhiệm vụ nhiều lớp + thống kê khoa học ===== */
.teacherAssignWorkspace{border:1px solid #d9ebe1;border-radius:22px;background:linear-gradient(180deg,#fbfffd,#f5fbf8);padding:18px;margin:12px 0 18px;box-shadow:0 10px 28px rgba(14,91,57,.06)}
.assignWorkspaceIntro{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:4px 4px 16px}.assignWorkspaceIntro>div{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;align-items:center}.assignWorkspaceIntro b{font-size:1.02rem;color:#154f37}.assignWorkspaceIntro small{grid-column:2;color:#64786f}.assignStepNo{grid-row:1/3;display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:#e6f7ee;color:#087444;font-weight:900}.assignWorkspaceIcon{font-size:2rem;background:#fff;border:1px solid #dcece3;border-radius:16px;width:52px;height:52px;display:grid;place-items:center}
.teacherAssignFormV56{display:grid!important;grid-template-columns:minmax(0,1.25fr) minmax(240px,.75fr);gap:14px 16px;align-items:start}.teacherAssignFormV56 .assignWide{grid-column:1/-1}.assignClassField{display:flex;flex-direction:column;gap:8px}.fieldTitle{font-weight:800;color:#1e4f3a;font-size:.92rem}.classMultiPicker{border:1px solid #d7e7de;border-radius:16px;background:#fff;padding:10px;max-height:290px;overflow:auto}.classPickerGrade+.classPickerGrade{margin-top:10px;padding-top:10px;border-top:1px dashed #d8e6df}.classPickerGradeHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;color:#13613f}.miniLinkBtn{border:0;background:#edf8f2;color:#087b49;border-radius:999px;padding:5px 9px;font-size:.75rem;font-weight:800;cursor:pointer}.classPickerChips{display:grid;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:8px}.classPickChip{display:flex!important;align-items:center!important;gap:8px!important;border:1px solid #d9e8e0!important;border-radius:13px!important;padding:9px 10px!important;background:#fbfefc!important;cursor:pointer!important;min-width:0}.classPickChip.selected{border-color:#14965c!important;background:#eaf8f0!important;box-shadow:inset 0 0 0 1px #14965c}.classPickChip input{width:16px!important;height:16px!important;accent-color:#0b8b51}.classPickChip span{display:flex;flex-direction:column;min-width:0}.classPickChip b{font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.classPickChip small{font-size:.72rem;color:#718078}.assignSubmitBar{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #d4e8dd;border-radius:16px;background:#eef9f3;padding:12px 14px}.assignSubmitBar>div{display:flex;flex-direction:column;gap:3px}.assignSubmitBar b{color:#0d613c}.assignSubmitBar small{color:#64796f}.assignSubmitBar .primaryBtn{white-space:nowrap}
.assignmentProgressHeadV56{display:flex;flex-direction:column;gap:12px}.assignmentProgressHeadV56 h3{margin:6px 0 4px}.assignmentProgressHeadV56 p{margin:0;color:#697a72}.assignmentCharts{display:grid;grid-template-columns:minmax(230px,.7fr) minmax(0,1.3fr);gap:14px;margin:16px 0}.completionDonutCard,.classChartCard{background:#fff;border:1px solid #dbeae2;border-radius:18px;padding:16px;box-shadow:0 8px 24px rgba(20,89,59,.05)}.completionDonutCard{display:flex;align-items:center;gap:16px}.completionDonutCard>div:last-child{display:flex;flex-direction:column;gap:4px}.completionDonut{--p:0;width:108px;height:108px;border-radius:50%;background:conic-gradient(#16945a calc(var(--p)*1%),#e6efe9 0);display:grid;place-items:center;flex:0 0 auto}.completionDonut:before{content:"";position:absolute}.completionDonut>div{width:78px;height:78px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 1px #eef3f0}.completionDonut b{font-size:1.35rem;color:#087744}.completionDonut small{font-size:.67rem;color:#6a7a72;text-align:center}.classChartTitle{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}.classChartTitle b{color:#174f38}.classChartTitle small{color:#75847d}.classBars{display:flex;flex-direction:column;gap:9px}.classBarRow{display:grid;grid-template-columns:72px minmax(90px,1fr) 28px 36px;gap:8px;align-items:center;font-size:.78rem}.classBarTrack{height:10px;border-radius:999px;background:#edf2ef;overflow:hidden}.classBarTrack i{display:block;height:100%;min-width:0;border-radius:999px;background:linear-gradient(90deg,#0c8b50,#52b881)}.classBarRow b{text-align:right;color:#174f38}.classBarRow small{color:#708078}.learningMetricBars{display:grid;gap:9px}.learningMetricBars>div{display:flex;justify-content:space-between;gap:12px;border:1px solid #e2ece6;border-radius:12px;padding:10px 12px;background:#f9fcfa}.learningMetricBars b{color:#087744}.teacherDataTable{overflow:auto;border:1px solid #dce9e2;border-radius:16px;background:#fff}.teacherDataTable table{margin:0;min-width:780px}.clickableStudentRow{cursor:pointer;transition:.15s ease}.clickableStudentRow:hover{background:#f0faf5}.clickableStudentRow td:nth-child(2) b,.teacherDataTable td b{display:block}.clickableStudentRow td:nth-child(2) small{display:block;color:#76847d;margin-top:2px}.studentHistoryHead{display:flex;align-items:flex-start;gap:14px;margin:8px 0 18px}.studentHistoryHead>div{flex:1}.studentHistoryHead h3{margin:5px 0}.studentHistoryHead p{margin:0;color:#65786e}.attemptTimeline{display:flex;flex-direction:column;gap:10px}.attemptTimelineItem{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid #dce9e2;background:#fff;border-radius:15px;padding:11px 12px}.attemptTimelineItem>div:nth-child(2){display:flex;flex-direction:column;gap:3px}.attemptTimelineItem small{color:#718079}.attemptTimelineItem span{font-size:.82rem;color:#2f5e48}.attemptNo{width:36px;height:36px;border-radius:12px;background:#e7f7ee;color:#087847;display:grid;place-items:center;font-weight:900}.learningStudentJourney{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.learningStudentJourney>div{display:flex;flex-direction:column;gap:6px;border:1px solid #dbe9e2;border-radius:16px;background:#fff;padding:14px}.learningStudentJourney b{color:#14543b}.learningStudentJourney small{color:#718078}.historySubTitle{margin:18px 0 9px;color:#155239}.teacherAttemptQuestion{border:1px solid #dce9e2;border-radius:14px;background:#fff;padding:12px;margin:8px 0}.teacherAttemptQuestion>div{display:flex;justify-content:space-between;gap:10px;align-items:center}.teacherAttemptQuestion p{margin:10px 0;line-height:1.55}.teacherAttemptQuestion small{display:block;margin-top:5px;color:#596e63}.teacherAttemptDetail{max-height:62vh;overflow:auto;padding-right:4px}
@media(max-width:760px){.teacherAssignWorkspace{padding:12px;border-radius:17px}.teacherAssignFormV56{grid-template-columns:1fr}.teacherAssignFormV56 .assignWide{grid-column:1}.assignSubmitBar{flex-direction:column;align-items:stretch}.assignSubmitBar .primaryBtn{width:100%}.assignmentCharts{grid-template-columns:1fr}.completionDonutCard{justify-content:center}.learningStudentJourney{grid-template-columns:1fr}.attemptTimelineItem{grid-template-columns:38px minmax(0,1fr)}.attemptTimelineItem .ghostBtn{grid-column:1/-1;width:100%}.classPickerChips{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* FIX52 retained: student profile/notification/resume behavior */


/* ===== FIX57: compact assignment composer + explicit feedback ===== */
#adminAssignContentBlock .learningAssignForm label:has(#assignContentIncludePractice){
  display:inline-flex;align-items:center;gap:10px;width:auto;min-height:42px;padding:8px 12px;
  border:1px solid #d8ebe1;border-radius:12px;background:#f8fcfa;font-weight:700;color:#285b45;
}
#adminAssignContentBlock #assignContentIncludePractice{width:18px;height:18px;margin:0;accent-color:#118652;}
#adminAssignContentBlock .learningAssignForm label:has(#assignContentIncludePractice) br{display:none;}
.assignmentSubmitResult{margin-top:12px;}
.assignmentSuccessCard,.assignmentErrorCard{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;border:1px solid #cce8d8;background:#effaf4;}
.assignmentSuccessCard{color:#145c3b}.assignmentSuccessIcon{font-size:24px}.assignmentSuccessCard>div{flex:1;min-width:0}.assignmentSuccessCard b,.assignmentSuccessCard small{display:block}.assignmentSuccessCard small{margin-top:3px;color:#557065}
.assignmentErrorCard{background:#fff4f4;border-color:#f0cccc;color:#9c2d2d;font-weight:700}.compactBtn{padding:8px 10px!important;white-space:nowrap}
@media(max-width:720px){.assignmentSuccessCard{align-items:flex-start;flex-wrap:wrap}.assignmentSuccessCard .compactBtn{width:100%}}

.assignPracticeToggle{position:relative;display:flex!important;align-items:center!important;gap:10px!important;width:max-content!important;max-width:100%;min-height:46px!important;padding:8px 12px!important;border:1px solid #d3e8dc!important;border-radius:13px!important;background:#f7fbf9!important;color:#245740!important;cursor:pointer}
.assignPracticeToggle>input{position:absolute;opacity:0;pointer-events:none}
.assignPracticeCheck{display:grid;place-items:center;width:24px;height:24px;border:2px solid #76b696;border-radius:7px;background:#fff;color:transparent;font-weight:900;flex:0 0 auto}
.assignPracticeToggle>input:checked+.assignPracticeCheck{background:#138b56;border-color:#138b56;color:#fff}
.assignPracticeToggle>span:last-child{display:flex;flex-direction:column;line-height:1.2}.assignPracticeToggle b{font-size:14px}.assignPracticeToggle small{margin-top:3px;font-size:11.5px;font-weight:500;color:#698176}
@media(max-width:720px){.assignPracticeToggle{width:100%!important}.assignPracticeToggle small{font-size:11px}}

/* === FIX58: Bell-only notifications + compact task center + closable exam result === */
.notificationCenterBox{max-width:540px!important}
.notificationCenterBox .modalHead p{display:none}
.notificationCenterActions{margin:4px 0 6px!important}
.notificationCenterActions .ghostBtn{padding:7px 10px;font-size:11px}
.notificationCenterRow{grid-template-columns:34px minmax(0,1fr) 18px!important;gap:8px!important;padding:9px 8px!important;border-radius:12px}
.notificationCenterIcon{width:32px;height:32px;border-radius:10px;background:#f0f8f3;display:grid;place-items:center;font-size:17px!important}
.notificationCenterCopy b{font-size:12.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notificationCenterCopy p{font-size:10.5px!important;line-height:1.25!important;margin:2px 0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notificationCenterCopy small{font-size:9px!important}
.notificationCenterRow>strong{font-size:18px!important}
.notificationTaskDetail{padding:8px 4px 4px!important}
.notificationTaskDetail h3{margin:8px 0 4px!important;font-size:18px!important}
.notificationTaskText{margin-bottom:6px!important;line-height:1.4!important}
.notificationLessonHub{margin-top:12px;padding:12px;border:1px solid #d7e9df;border-radius:15px;background:#f8fcf9;width:100%}
.notificationLessonTitle{display:flex;gap:9px;align-items:center}.notificationLessonTitle>span{font-size:25px}.notificationLessonTitle b{display:block;color:#174f36}.notificationLessonTitle small{display:block;color:#718178;margin-top:2px;font-size:10px}
.notificationLessonHub>p{font-size:11px!important;margin:7px 0 9px!important}.notificationLessonChoices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.notificationLessonChoices button{min-height:40px}
.resultCardDetailed{position:relative}.resultCloseBtn{position:absolute;top:12px;right:12px;width:38px;height:38px;border-radius:50%;border:1px solid #dbe7e0;background:#fff;color:#52645b;font-size:25px;line-height:1;display:grid;place-items:center;cursor:pointer;box-shadow:0 5px 16px rgba(22,77,53,.10);z-index:3}.resultCloseBtn:hover{background:#f3faf6;color:#17623f}
@media(max-width:700px){.notificationCenterBox{width:min(94vw,520px)!important}.notificationCenterRow{grid-template-columns:32px minmax(0,1fr) 16px!important;padding:8px 6px!important}.notificationCenterIcon{width:30px;height:30px;font-size:16px!important}.notificationCenterCopy b{font-size:11.5px}.notificationCenterCopy p{font-size:9.5px!important}.notificationLessonChoices{grid-template-columns:1fr}.resultCloseBtn{top:9px;right:9px;width:34px;height:34px;font-size:22px}}

/* FIX59 · school-year / course-stable student account status */
.teacherSchoolYearStatus{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:14px 0;padding:14px 16px;border:1px solid rgba(20,120,72,.18);border-radius:16px;background:linear-gradient(135deg,rgba(238,252,244,.98),rgba(249,253,250,.98));box-shadow:0 8px 24px rgba(20,90,55,.06)}
.teacherSchoolYearStatus>div{display:flex;flex-direction:column;gap:4px;min-width:0}.teacherSchoolYearStatus b{font-size:15px;color:#145b3b}.teacherSchoolYearStatus small{color:#5d6f65;line-height:1.45}.schoolYearAutoBadge{flex:none;border-radius:999px;padding:6px 10px;background:#dff7e9;color:#147a48;font-weight:800;font-size:11px;letter-spacing:.04em}
@media(max-width:640px){.teacherSchoolYearStatus{align-items:flex-start;flex-direction:column}.teacherSchoolYearStatus .ghostBtn{width:100%}}

/* FIX61 — Luyện ngay theo tuần + phản hồi tức thì */
.dailyWeekScope{
  margin:10px 0 12px;padding:11px 14px;border:1px solid #bfe5cf;border-radius:16px;
  background:linear-gradient(135deg,#f2fbf6,#eef8ff);display:flex;gap:8px 16px;align-items:center;flex-wrap:wrap;
  color:#195f3a;font-size:13px
}
.dailyWeekScope b{font-size:14px;color:#0f6b3d}.dailyWeekScope span{font-weight:700}.dailyWeekScope small{color:#60746a}
.dailyInstantFeedback{margin:12px 0 4px;padding:10px 12px;border-radius:12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px}
.dailyInstantFeedback.isCorrect{background:#eaf9ef;border:1px solid #9ed8b2;color:#166534}
.dailyInstantFeedback.isWrong{background:#fff1f1;border:1px solid #f0b2b2;color:#9b1c1c}
.examOption.dailyCorrectOption{border-color:#28a45f!important;background:#effaf3!important;box-shadow:0 0 0 1px #28a45f inset}
.examOption.dailyWrongOption{border-color:#dc5a5a!important;background:#fff3f3!important;box-shadow:0 0 0 1px #dc5a5a inset}
.examOption.tf.dailyTfCorrect{border-color:#8bd0a4!important;background:#f1fbf4!important}
.examOption.tf.dailyTfWrong{border-color:#efaaaa!important;background:#fff4f4!important}
.dailyTfMini{display:inline-flex;margin-left:8px;font-weight:800;font-size:12px}
.shortAnswer.dailyShortCorrect{border-color:#2ba663!important;background:#f0fbf4!important}
.shortAnswer.dailyShortWrong{border-color:#d95c5c!important;background:#fff3f3!important}
@media(max-width:640px){
  .dailyWeekScope{display:grid;gap:3px;padding:9px 11px;margin:7px 0 10px}.dailyWeekScope b{font-size:13px}.dailyWeekScope span,.dailyWeekScope small{font-size:12px}
  .dailyInstantFeedback{font-size:13px;padding:8px 10px}
}


/* FIX67 — chapter topics + focused student practice */
#practice.topicFocused .practiceHero .topicBuilder{display:none}
.topicFocusCard{padding:18px;border:1px solid #d4e8dc;border-radius:20px;background:linear-gradient(145deg,#fff,#f3fbf6);box-shadow:0 10px 30px rgba(22,85,54,.07)}
.topicFocusIdentity{display:flex;align-items:center;gap:14px;margin-bottom:16px}.topicFocusIcon{width:64px;height:64px;display:grid;place-items:center;border-radius:18px;background:#eef8f2;font-size:34px;flex:none}.topicFocusIdentity b{display:block;font-size:22px;color:#17613f}.topicFocusIdentity small{display:block;margin-top:4px;color:#6d7f74;line-height:1.35}
.topicFocusControls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:10px;align-items:end}.topicFocusControls label{display:grid;gap:6px;font-weight:800;color:#285b43}.topicFocusControls select{min-height:44px;border:1px solid #cfe1d7;border-radius:12px;padding:0 12px;background:#fff}.topicFocusControls .primaryBtn{min-height:44px;padding-inline:22px}.topicFocusHint{margin:12px 0 0;font-size:12px;color:#667970;line-height:1.45}
@media(max-width:700px){.topicFocusCard{padding:14px}.topicFocusIdentity{align-items:flex-start}.topicFocusIcon{width:54px;height:54px;font-size:29px}.topicFocusIdentity b{font-size:19px}.topicFocusControls{grid-template-columns:1fr 1fr}.topicFocusControls .primaryBtn{grid-column:1/-1;width:100%}}

/* FIX68 — native image learning materials */
.imageDocument{width:100%;display:flex;justify-content:center;align-items:flex-start;padding:8px 0;overflow:auto}
.imageDocument img{display:block;max-width:100%;width:auto;height:auto;max-height:none;object-fit:contain;border-radius:10px;box-shadow:0 1px 8px rgba(15,81,50,.08)}
@media(max-width:700px){.imageDocument{padding:4px 0}.imageDocument img{max-width:100%;border-radius:8px}}

/* FIX71 — account menu moved to top-right avatar */
.accountSheetModal{place-items:start center;padding-top:68px;background:rgba(16,40,29,.28);backdrop-filter:blur(3px)}
.accountModalBox{width:min(430px,calc(100vw - 24px));max-height:calc(100vh - 92px);border-radius:24px;padding:14px;box-shadow:0 22px 64px rgba(16,61,40,.22);border:1px solid #dcebe3}
.accountSheetHead{display:grid;grid-template-columns:48px minmax(0,1fr) 36px;gap:11px;align-items:center;padding:4px 2px 12px;border-bottom:1px solid #edf3ef}
.accountSheetAvatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#e9f8f0,#dff2e8);color:#176c45;font-size:20px;font-weight:950;border:1px solid #d7eade}
.accountSheetIdentity{min-width:0}.accountSheetIdentity h2{font-size:18px;margin:2px 0;color:#184c35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accountSheetIdentity p{margin:0;color:#6d7f75;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accountSheetHead .closeBtn{width:34px;height:34px;font-size:22px}
.accountQuickMenu{display:grid;gap:7px;padding-top:10px}.accountQuickMenu>button{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) 18px;align-items:center;gap:10px;border:1px solid #e3eee8;background:#fff;border-radius:15px;padding:11px 12px;text-align:left;color:#234d39;cursor:pointer}.accountQuickMenu>button:hover{background:#f7fcf9}.accountQuickMenu>button>span{width:40px;height:40px;border-radius:12px;background:#eef8f3;display:grid;place-items:center;font-size:19px}.accountQuickMenu b{display:block;font-size:13px}.accountQuickMenu small{display:block;color:#7b8982;font-size:10.5px;margin-top:2px}.accountQuickMenu strong{font-size:22px;color:#91a49a}.accountQuickMenu .accountLogoutRow{border-color:#f0dddd}.accountQuickMenu .accountLogoutRow>span{background:#fff2f2}.accountQuickMenu .accountLogoutRow b{color:#a43e3e}
.studentAccountSection{margin-top:10px;padding:14px;border:1px solid #dcebe3;border-radius:17px;background:#fbfefc}.accountSectionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.accountSectionHead>div{display:flex;gap:9px;align-items:flex-start}.accountSectionHead>div>span{font-size:22px}.accountSectionHead b{display:block;color:#174d34;font-size:15px}.accountSectionHead small{display:block;color:#728078;font-size:10.5px;line-height:1.35;margin-top:2px}.accountSectionHead>button{border:0;background:#edf4f0;border-radius:50%;width:28px;height:28px;color:#61736a;font-size:18px;cursor:pointer}
.accountSettingGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.accountSettingGrid label{display:grid;gap:5px;color:#445f51;font-size:11px;font-weight:800}.accountSettingGrid select{width:100%;min-width:0;padding:10px;border:1px solid #d9e6df;border-radius:11px;background:#fff;font:inherit;color:#274b39}.accountToggleRow{grid-column:1/-1;display:flex!important;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px;border:1px solid #e1ebe6;border-radius:12px;background:#fff}.accountToggleRow span{display:block}.accountToggleRow b{display:block;font-size:11.5px}.accountToggleRow small{display:block;font-weight:500;color:#819087;font-size:9.5px;margin-top:2px}.accountToggleRow input{width:19px;height:19px}
.accountPasswordForm{display:grid;gap:10px}.accountPasswordForm label{display:grid;gap:5px;color:#445f51;font-size:11px;font-weight:800}.passwordField{display:grid;grid-template-columns:minmax(0,1fr) 40px;border:1px solid #d9e6df;border-radius:11px;overflow:hidden;background:#fff}.passwordField:focus-within{border-color:#4fa773;box-shadow:0 0 0 3px rgba(79,167,115,.11)}.passwordField input{width:100%;min-width:0;border:0;outline:0;padding:10px 11px;font:inherit;background:transparent}.passwordField button{border:0;border-left:1px solid #edf2ef;background:#f8fbf9;cursor:pointer}.accountPasswordHint{margin-top:10px;padding:9px 10px;border-radius:10px;background:#eef8f3;color:#47705a;font-size:10px;line-height:1.4}.accountSectionActions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.accountSectionActions.single .primaryBtn{width:100%}.accountSectionActions .primaryBtn,.accountSectionActions .ghostBtn{padding:10px 12px;border-radius:11px;font-size:11px}
#profile #accountSecurityCard{display:none!important}
@media(max-width:520px){.accountSheetModal{padding:58px 8px 8px;place-items:start center}.accountModalBox{width:100%;max-height:calc(100vh - 70px);border-radius:20px}.accountSettingGrid{grid-template-columns:1fr}.accountToggleRow{grid-column:auto}.accountQuickMenu>button{padding:10px}.studentAccountSection{padding:12px}}


/* FIX72 — account detail uses full popup and stays above bottom navigation */
.accountSheetModal{z-index:1400}
.accountModalBox.accountDetailMode .accountSheetHead,
.accountModalBox.accountDetailMode .accountQuickMenu{display:none!important}
.accountModalBox.accountDetailMode{padding:12px;max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain}
.accountModalBox.accountDetailMode .studentAccountSection{margin-top:0;border:0;padding:4px 2px 12px;background:#fff}
.accountModalBox.accountDetailMode .accountSectionHead{position:sticky;top:-4px;z-index:3;background:#fff;padding:8px 2px 10px;margin:0 0 10px;border-bottom:1px solid #edf3ef}
.accountModalBox.accountDetailMode .accountSectionActions{padding-bottom:max(8px,env(safe-area-inset-bottom))}
@media(max-width:520px){
  .accountSheetModal{padding:8px;place-items:start center}
  .accountModalBox.accountDetailMode{width:100%;max-height:calc(100dvh - 16px);border-radius:20px;padding:10px 12px calc(14px + env(safe-area-inset-bottom))}
  .accountModalBox.accountDetailMode .studentAccountSection{padding:0 0 8px}
  .accountModalBox.accountDetailMode .accountPasswordHint{margin-bottom:4px}
}


/* FIX73 — account detail: real full-height scroll surface, no bottom-nav overlap */
body.accountDetailOpen{overflow:hidden!important}
body.accountDetailOpen .bottomNav{display:none!important}
.accountSheetModal{z-index:9999!important}
.accountModalBox.accountDetailMode .accountSheetHead,
.accountModalBox.accountDetailMode .accountQuickMenu{display:none!important}
.accountModalBox.accountDetailMode{display:block;width:min(500px,calc(100vw - 16px));height:auto;max-height:calc(100dvh - 16px);overflow-y:auto!important;overscroll-behavior:contain;padding:12px 14px calc(20px + env(safe-area-inset-bottom))!important;scroll-padding-bottom:110px;background:#fff}
.accountModalBox.accountDetailMode .studentAccountSection{display:block!important;margin:0!important;border:0!important;padding:0 0 calc(26px + env(safe-area-inset-bottom))!important;background:#fff!important;min-height:min-content}
.accountModalBox.accountDetailMode .accountSectionHead{position:sticky;top:0;z-index:5;margin:0 0 14px!important;padding:8px 0 12px!important;background:#fff;border-bottom:1px solid #e8f0eb}
.accountModalBox.accountDetailMode .accountPasswordForm,.accountModalBox.accountDetailMode .accountSettingGrid{padding-bottom:2px}
.accountModalBox.accountDetailMode .accountPasswordHint{margin:12px 0 10px!important}
.accountModalBox.accountDetailMode .accountSectionActions{position:relative;z-index:2;margin-top:12px!important;padding:0 0 calc(18px + env(safe-area-inset-bottom))!important;background:#fff}
.accountModalBox.accountDetailMode .accountSectionActions.single .primaryBtn{min-height:46px}
@media(max-width:520px){
  .accountSheetModal{padding:8px!important;place-items:start center!important;align-items:flex-start!important}
  .accountModalBox.accountDetailMode{width:100%!important;height:calc(100dvh - 16px)!important;max-height:calc(100dvh - 16px)!important;border-radius:18px!important;padding:10px 14px calc(24px + env(safe-area-inset-bottom))!important}
  .accountModalBox.accountDetailMode .accountSettingGrid{grid-template-columns:1fr!important}
  .accountModalBox.accountDetailMode .studentAccountSection{padding-bottom:calc(34px + env(safe-area-inset-bottom))!important}
}

/* FIX73 — lesson icons are one clear, characteristic symbol per lesson */
.lessonIcon{font-size:28px;line-height:1;min-width:54px}
.lessonIcon .lessonChevron{font-size:14px;margin-top:6px}

/* FIX74 · Class lesson learning analytics */
.classLearningToolbar{grid-template-columns:minmax(220px,320px) minmax(260px,1fr) auto!important;align-items:end}.classLearningMode{padding:10px 14px;border:1px solid #dbece4;border-radius:14px;background:#f8fdf9}.classLearningMode b,.classLearningMode small{display:block}.classLearningMode b{color:#155f40;font-size:13px}.classLearningMode small{margin-top:3px;color:#718178;font-size:11px;line-height:1.35}.lessonAnalyticsIntro,.lessonAnalyticsBack{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:16px;border:1px solid #dcebe4;border-radius:18px;background:linear-gradient(135deg,#fff,#f1faf5)}.lessonAnalyticsIntro h3,.lessonAnalyticsBack h3{margin:4px 0;color:#155f40}.lessonAnalyticsIntro p{margin:4px 0 0;color:#718178;font-size:12px}.lessonAnalyticsIntro>span{font-size:34px}.lessonTrackingGrid{display:grid;gap:10px;margin-top:12px}.lessonTrackingCard{width:100%;border:1px solid #dce9e2;background:#fff;border-radius:18px;padding:14px;text-align:left;box-shadow:0 7px 18px rgba(28,84,61,.05);cursor:pointer}.lessonTrackingCard.warn{border-color:#efd39c;background:#fffdf8}.lessonTrackingCard.weak{border-color:#efc5c5}.lessonTrackingTop{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center}.lessonTrackNo{width:30px;height:30px;border-radius:10px;background:#edf8f2;color:#14724a;display:grid;place-items:center;font-weight:900}.lessonTrackingTop small,.lessonTrackingTop b{display:block}.lessonTrackingTop small{color:#7a887f;font-size:10px}.lessonTrackingTop b{color:#155f40;font-size:14px;margin-top:2px}.lessonTrackingTop strong{font-size:23px;color:#7aa18d}.lessonTrackMetrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:11px}.lessonTrackMetrics span{padding:8px;border-radius:12px;background:#f7faf8;text-align:center;color:#45685a}.lessonTrackMetrics b,.lessonTrackMetrics small{display:block}.lessonTrackMetrics b{font-size:15px}.lessonTrackMetrics small{font-size:9px;color:#86938c}.lessonTrackingCard em{display:block;margin-top:9px;font-style:normal;font-size:10px;color:#9b6214}.lessonTrackingCard em.ok{color:#218453}.lessonDetailSummary{margin:12px 0}.classLearningComments{margin:12px 0;padding:13px 15px;border-radius:15px;background:#fff9e9;border:1px solid #f0dfa8}.classLearningComments b{color:#7b5a11}.classLearningComments p{margin:5px 0;color:#665b3c;font-size:12px}.classLearningStudentList{display:grid;gap:8px}.classLearningStudentList>button{display:grid;grid-template-columns:34px minmax(0,1fr) 75px 18px;gap:9px;align-items:center;width:100%;border:1px solid #e2ebe6;border-radius:14px;background:#fff;padding:10px;text-align:left}.classLearningStudentList .studentNo{width:30px;height:30px;border-radius:50%;background:#edf7f2;display:grid;place-items:center;font-weight:800;color:#176542}.classLearningStudentList b,.classLearningStudentList small,.studentLessonScore{display:block}.classLearningStudentList small{margin-top:3px;color:#78867f;font-size:10px}.studentLessonScore{text-align:right;color:#176542;font-weight:900}.studentLessonScore small{font-weight:500;font-size:8px}.questionErrorList{display:grid;gap:8px}.questionErrorRow{display:grid;grid-template-columns:28px minmax(0,1fr) 86px;gap:10px;align-items:center;border:1px solid #e8ecea;border-radius:14px;padding:11px;background:#fff}.questionErrorRow>span{width:26px;height:26px;border-radius:9px;background:#f5f6f5;display:grid;place-items:center;font-weight:800}.questionErrorRow b,.questionErrorRow small{display:block}.questionErrorRow b{font-size:12px;color:#334b40;line-height:1.35}.questionErrorRow small{font-size:9px;color:#849087;margin-top:3px}.questionErrorRow>strong{text-align:right;font-size:11px;color:#9d721d}.questionErrorRow>strong.danger{color:#b84646}.studentHistoryHead{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}
@media(max-width:700px){.classLearningToolbar{grid-template-columns:1fr!important}.lessonTrackMetrics{grid-template-columns:repeat(2,minmax(0,1fr))}.classLearningStudentList>button{grid-template-columns:30px minmax(0,1fr) 64px 14px}.questionErrorRow{grid-template-columns:24px minmax(0,1fr);}.questionErrorRow>strong{grid-column:2;text-align:left}.lessonAnalyticsBack{align-items:flex-start;flex-direction:column}}
/* FIX76 — history review: explicit selected/correct/wrong states and safe mobile viewport */
.historyOption.wrongChoice{border-color:#e6a0a0;background:#fff4f4;box-shadow:inset 0 0 0 1px #d86464}
.historyOption.wrongChoice em{background:#fde8e8;color:#a53030}
.historyReviewLegend{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 12px}.historyReviewLegend span{padding:6px 9px;border:1px solid #e1e8e4;border-radius:999px;background:#fff;font-size:11px;font-weight:800;color:#52645a}
.historyShort>div+div{margin-top:6px}.answerGood{color:#15723f;font-weight:900}.answerBad{color:#b53c3c;font-weight:900}
.historyReviewModal .previewModal{max-height:calc(100dvh - 24px);padding-bottom:max(18px,env(safe-area-inset-bottom))}.historyReviewModal .previewBody{padding-bottom:22px}
@media(max-width:700px){.historyReviewModal{padding:6px;align-items:stretch}.historyReviewModal .previewModal{width:100%;max-height:calc(100dvh - 12px);border-radius:20px;padding:14px}.historyFullHead{align-items:flex-start}.historyFullHead span{font-size:11px;text-align:right}.historyOption{align-items:flex-start;flex-wrap:wrap}.historyOption span{flex-basis:calc(100% - 34px)}.historyOption em,.historyOption strong{margin-left:34px}.historyReviewLegend{position:sticky;top:-1px;z-index:2;background:#fff;padding:7px 0}.historyReviewModal .modalActions{position:sticky;bottom:0;background:#fff;padding-top:8px;padding-bottom:max(2px,env(safe-area-inset-bottom))}}

/* FIX77 — full teacher attempt review + Top 10 answered-only wrong-question analysis */
.teacherAttemptDetail .historyFullCard{margin:10px 0}.teacherAttemptDetail .historyQuestion{font-size:14px}.teacherAttemptDetail .reviewExplanation{margin-top:10px;padding:10px 12px;border-radius:12px;background:#f8fbf9;border:1px solid #e1ebe5}.wrongQuestionRule{margin:4px 0 12px;color:#687a70;font-size:12px}.questionErrorRow.questionErrorDetail{grid-template-columns:34px minmax(0,1fr);align-items:start;padding:14px}.questionErrorRank{width:30px;height:30px;border-radius:10px;background:#fff1f1;color:#a43e3e;display:grid;place-items:center;font-weight:900}.questionErrorBody{min-width:0}.questionErrorTitle{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.questionErrorTitle>b{font-size:13px;line-height:1.55;color:#27483a;min-width:0}.questionErrorTitle>strong{flex:0 0 auto;font-size:12px;padding:5px 8px;border-radius:999px;background:#fff5df;color:#94620a}.questionErrorTitle>strong.danger{background:#fff0f0;color:#b53b3b}.questionErrorBody>small{display:block;margin:5px 0 9px;color:#75847c}.wrongOptionStats{display:grid;gap:7px;margin-top:8px}.wrongOptionStat{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(100px,.7fr) 78px;gap:9px;align-items:center;border:1px solid #e5ece8;border-radius:11px;padding:8px 9px;background:#fbfdfc}.wrongOptionStat>div:first-child{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:6px;align-items:start}.wrongOptionStat>div:first-child>b{color:#174e37}.wrongOptionStat>div:first-child span{font-size:11px;line-height:1.4;color:#405c4f;min-width:0}.wrongOptionStat em{font-size:9px;font-style:normal;color:#117140;background:#e8f7ee;padding:3px 6px;border-radius:999px}.wrongOptionStat>strong{text-align:right;color:#9d4141;font-size:11px}.wrongOptionStat>strong small{font-weight:500;color:#7b8982}.wrongOptionBar{height:8px;background:#edf1ef;border-radius:999px;overflow:hidden}.wrongOptionBar i{display:block;height:100%;border-radius:999px;background:#dc7373}.wrongOptionStat.correctOption .wrongOptionBar i{background:#55a879}.wrongOptionStat.correctOption>strong{color:#22774b}
@media(max-width:700px){.questionErrorTitle{flex-direction:column;gap:6px}.wrongOptionStat{grid-template-columns:1fr 74px}.wrongOptionStat>div:first-child{grid-column:1/-1}.teacherAttemptDetail{max-height:none;overflow:visible}.historyReviewLegend{display:flex;flex-wrap:wrap;gap:5px;font-size:10px}}

/* FIX78 — class lesson analytics controls, charts and exports */
.learningCharts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0}.learningChartCard{border:1px solid #dfeae4;border-radius:18px;background:#fff;padding:16px;box-shadow:0 8px 22px rgba(28,84,61,.055)}.learningChartHead{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}.learningChartHead b{color:#155f40;font-size:14px}.learningChartHead small{color:#7a8a82;font-size:11px}.scoreBarChart,.engagementBars{display:grid;gap:10px}.scoreBarChart>div,.engagementBars>div{display:grid;grid-template-columns:76px minmax(100px,1fr) 52px;gap:9px;align-items:center;font-size:11px}.scoreBarChart i,.engagementBars i{height:10px;background:#edf4f0;border-radius:999px;overflow:hidden;display:block}.scoreBarChart i em,.engagementBars i em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#3b8f62,#65b982)}.scoreBarChart b,.engagementBars b{text-align:right;color:#355c4a}.lessonScoreExport{display:grid;grid-template-columns:minmax(0,1fr) 180px auto;gap:10px;align-items:end;margin:16px 0;padding:15px;border:1px solid #dceae3;border-radius:18px;background:linear-gradient(135deg,#fbfffd,#f2faf6)}.lessonScoreExport>div{display:flex;flex-direction:column;gap:3px}.lessonScoreExport b{color:#155f40}.lessonScoreExport small{color:#728178}.lessonScoreExport select{width:100%;padding:11px 12px;border:1px solid #cfe0d7;border-radius:12px;background:#fff;font:inherit}.questionRankToggle{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 10px}.questionRankToggle button{border:1px solid #d6e6dd;background:#fff;color:#315f49;border-radius:999px;padding:9px 13px;font-weight:800;cursor:pointer}.questionRankToggle button.active{background:#e8f7ef;border-color:#6cb78c;color:#0d6b42}.questionCorrectDetail .questionErrorRank{background:#e9f7ee;color:#187647}.successText{color:#17824f!important}
@media(max-width:700px){.learningCharts{grid-template-columns:1fr}.lessonScoreExport{grid-template-columns:1fr}.lessonScoreExport .primaryBtn{width:100%}.scoreBarChart>div,.engagementBars>div{grid-template-columns:70px minmax(80px,1fr) 48px}}

/* FIX79 — compact analytics, fast class flow, site traffic */
#teacherAnalyticsSummary{display:none!important}
.learningCharts.singleEngagement{grid-template-columns:1fr;margin-top:12px}
.learningChartCard.engagementOnly{max-width:none}
.engagementMetric{display:grid!important;grid-template-columns:minmax(150px,1fr) auto!important;gap:8px 16px!important;align-items:center;padding:12px 0;border-top:1px solid #e8f0ec}
.engagementMetric>b{font-size:20px;color:#0f6b45}.engagementMetric>small{grid-column:1/-1;color:#728078;font-size:11px}
.siteTrafficHead{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.siteTrafficHead h3{margin:4px 0;color:#125f42}.siteTrafficHead p{margin:4px 0;color:#728078;font-size:12px}
.siteTrafficKpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:15px}.siteTrafficKpis>div{padding:15px;border:1px solid #deebe4;border-radius:16px;background:#f9fcfa;text-align:center}.siteTrafficKpis b{display:block;font-size:25px;color:#0d6643}.siteTrafficKpis span{font-size:11px;color:#6f7d75}
.siteTrafficChart{border:1px solid #e0ebe5;border-radius:17px;padding:14px;background:#fff}.trafficMonthRow{display:grid;grid-template-columns:58px minmax(120px,1fr) 48px;gap:10px;align-items:center;margin-top:9px;font-size:12px}.trafficMonthRow>i{height:9px;background:#edf4f0;border-radius:99px;overflow:hidden}.trafficMonthRow>i>em{display:block;height:100%;background:#41a372;border-radius:99px;min-width:2px}.trafficMonthRow strong{text-align:right;color:#235b45}
@media(max-width:700px){.siteTrafficKpis{grid-template-columns:1fr 1fr}.siteTrafficKpis>div:last-child{grid-column:1/-1}.siteTrafficHead{align-items:center}.trafficMonthRow{grid-template-columns:52px minmax(80px,1fr) 42px}.engagementMetric{grid-template-columns:1fr auto!important}}


/* FIX80 — traffic moved to Personal/Admin and question ranking is on-demand */
.siteTrafficPersonalCard{margin-top:0}
.siteTrafficPersonalCard .analyticsTable{margin-top:0}
.questionRankToggle{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0 8px}
.questionRankToggle button{border:1px solid #d8e9df;background:#fff;color:#185f42;font-weight:850;border-radius:14px;padding:11px 14px;cursor:pointer}
.questionRankToggle button.active{background:#eaf8f0;border-color:#77bd94;box-shadow:0 5px 16px rgba(26,116,74,.09)}
#questionRankingHost.hiddenAuth{display:none!important}

/* FIX81 — page-open traffic line chart + compact recent student history */
.siteTrafficLineChart{overflow:hidden}.trafficSvgWrap{width:100%;overflow-x:auto;margin-top:12px}.trafficSvgWrap svg{display:block;width:100%;min-width:660px;height:auto}.trafficGridLine{stroke:#e6eee9;stroke-width:1}.trafficAxisText{fill:#6f7d75;font-size:10px}.trafficLinePath{fill:none;stroke:#239463;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.trafficLineDot{fill:#fff;stroke:#239463;stroke-width:3}.historyRecentNote{margin:0 0 10px;padding:9px 11px;border:1px solid #dce9e2;border-radius:12px;background:#f7fbf9;color:#64756c;font-size:11px;line-height:1.45}
@media(max-width:700px){.trafficSvgWrap svg{min-width:620px}.siteTrafficLineChart{padding-left:10px;padding-right:10px}}


/* FIX84 — inline PDF pages: Word-like mobile viewer, no download prompt */
.pdfInlineDocument{display:grid;gap:12px;width:100%;margin:0;padding:0}
.pdfInlinePage{margin:0;background:#fff;border:1px solid #e1ebe5;border-radius:14px;overflow:hidden;box-shadow:0 3px 14px rgba(20,76,51,.06)}
.pdfInlinePage img{display:block;width:100%;height:auto;max-width:100%;margin:0;background:#fff;object-fit:contain}
.pdfInlinePage figcaption{padding:6px 10px;text-align:center;font-size:10px;color:#7c8b83;background:#f8fbf9;border-top:1px solid #edf3ef}
@media(max-width:700px){#contentViewer .viewerBody:has(.pdfInlineDocument){padding:8px!important;background:#f5faf7}.pdfInlineDocument{gap:8px}.pdfInlinePage{border-radius:10px}.pdfInlinePage figcaption{font-size:9px;padding:5px}}
\n/* FIX85 — bỏ hồ sơ học sinh khỏi trang Cá nhân + thống kê theo dõi từng lượt làm */\n#profile #studentIdentityCard,#profile #accountSecurityCard{display:none!important}\n.attemptSecurityTracking{margin:14px 0 16px;padding:14px;border:1px solid #e6d7a7;border-radius:18px;background:#fffdf6}.attemptSecurityTracking.securityClean{border-color:#d8eadf;background:#f8fdf9}.attemptSecurityTitle{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.attemptSecurityTitle b{display:block;color:#184d36}.attemptSecurityTitle small{display:block;margin-top:3px;color:#718078}.attemptSecurityTitle>span{white-space:nowrap;font-weight:900;font-size:12px}.attemptSecurityGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.attemptSecurityGrid>div{padding:10px;border:1px solid #e8eee9;border-radius:13px;background:#fff}.attemptSecurityGrid b{display:block;font-size:20px;color:#0d6a43}.attemptSecurityGrid span{display:block;font-size:11px;line-height:1.3;color:#67756e;margin-top:2px}@media(max-width:640px){.attemptSecurityTitle{flex-direction:column}.attemptSecurityGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}\n
/* FIX98 — DOCX solution fidelity + compact mobile rendering */
#contentViewer .solutionDocument .docxParagraph{margin:0 0 8px;line-height:1.58}
#contentViewer .solutionDocument .docxSolutionHeading{margin:12px 0 8px!important;text-align:center!important;text-indent:0!important;font-weight:700;color:#7a167d}
#contentViewer .solutionDocument .docxSolutionHeadingText{font-weight:700;color:inherit}
#contentViewer .solutionDocument .docxParagraph:empty{display:none!important}
#contentViewer .solutionDocument .docxTab{display:inline-block;min-width:1.15em}
@media(max-width:700px){
  #contentViewer .solutionDocument .docxParagraph{margin-bottom:7px;line-height:1.52}
  #contentViewer .solutionDocument .docxSolutionHeading{margin:10px 0 7px!important}
}

/* FIX99 — solution question list + on-demand answers */
#contentViewer .solutionDocument{display:block}
#contentViewer .solutionQuestionCard{position:relative;padding:14px 16px;margin:0 0 12px;border:1px solid #dce9e1;border-radius:16px;background:#fff}
#contentViewer .solutionQuestionBody .docxParagraph{margin:0 0 6px;line-height:1.58}
#contentViewer .solutionQuestionBody .docxParagraph:last-child{margin-bottom:0}
#contentViewer .solutionRevealBtn{display:block;margin:9px 0 0 auto;border:0;background:transparent;color:#0b63d1;font:inherit;font-size:13px;font-style:italic;font-weight:500;padding:5px 7px;cursor:pointer;text-decoration:none}
#contentViewer .solutionRevealBtn:hover{text-decoration:underline}
#contentViewer .solutionAnswerBody{margin-top:10px;padding-top:10px;border-top:1px dashed #d9e6de}
#contentViewer .solutionAnswerBody[hidden]{display:none!important}
#contentViewer .solutionAnswerBody .docxSolutionHeading{display:block;margin:0 auto 9px!important;text-align:center!important;text-indent:0!important}
#contentViewer .solutionAnswerBody .docxParagraph{margin:0 0 7px;line-height:1.58}
#contentViewer .solutionAnswerBody .docxParagraph:last-child{margin-bottom:0}
@media(max-width:700px){#contentViewer .solutionQuestionCard{padding:12px 13px;margin-bottom:10px;border-radius:14px}#contentViewer .solutionRevealBtn{font-size:13px;margin-top:7px}.solutionAnswerBody{scroll-margin-top:86px}}

/* FIX100: preserve visibility of legacy practice history and compact solution accordion */
.legacyAttemptNotice{margin:8px 0 0;color:#8a5b00;font-size:12px;line-height:1.4;background:#fff8df;border:1px solid #f0dda2;border-radius:10px;padding:8px 10px}
#contentViewer .solutionQuestionBody>.docxParagraph{margin:0;line-height:1.55}
#contentViewer .solutionQuestionBody{padding-right:4px}
#contentViewer .solutionQuestionCard:not(.answer-open) .solutionQuestionBody{margin-bottom:0}
/* FIX103 — offline-first status */
.offlineSyncBadge{position:fixed;right:14px;bottom:84px;z-index:190;background:#fff7df;border:1px solid #e7c56a;border-radius:999px;padding:9px 12px;font-size:12px;font-weight:850;color:#7a5a08;box-shadow:0 8px 24px rgba(20,50,35,.13)}
.offlineSyncBadge.isClear{background:#eef9f2;border-color:#b9dfc5;color:#176a3d}
.offlineQueuedResult{text-align:center}.offlineQueueNotice{display:grid;gap:6px;margin:18px 0;padding:16px;border:1px solid #cfe6d8;border-radius:16px;background:#f3fbf6}.offlineQueueNotice span{color:#5d7065;line-height:1.45}
@media(max-width:700px){.offlineSyncBadge{bottom:82px;right:10px;max-width:calc(100vw - 20px)}}


/* ===== FIX107 — typography/readability normalization =====
   SEO does not prescribe one font size; these rules standardize readable
   typography, heading hierarchy, tap targets and mobile legibility. */
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  text-rendering:optimizeLegibility;
  font-synthesis:none;
}
body{
  font-family:Inter,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:16px;
  line-height:1.6;
  letter-spacing:0;
  color:var(--text,#173125);
}
button,input,select,textarea{font:inherit}
p,li,label,input,select,textarea{font-size:1rem;line-height:1.55}
h1,h2,h3,h4{
  font-family:inherit;
  line-height:1.25;
  text-wrap:balance;
  letter-spacing:-.015em;
}
.sectionHeading.large h1{font-size:clamp(1.65rem,4.2vw,2.1rem);line-height:1.2}
.sectionHeading h2{font-size:clamp(1.15rem,3vw,1.4rem);line-height:1.3}
.sectionHeading p,.adminCardHead p,.historyHead p,.libraryHead p{font-size:.95rem;line-height:1.55}
.teacherAdminMenuItem b{font-size:1.08rem;line-height:1.35}
.teacherAdminMenuItem small{font-size:.92rem;line-height:1.45}
.statsHome b{font-size:clamp(1.4rem,4vw,1.75rem);font-variant-numeric:tabular-nums}
.statsHome span{font-size:.875rem;line-height:1.35}
.navItem small{font-size:.78rem;line-height:1.25}
.primaryBtn,.ghostBtn,.outlineBtn,.linkBtn,.adminEntry{font-size:.95rem;line-height:1.3}
.lesson h3,.examCard h3{font-size:1.08rem;line-height:1.4}
.meta,.lesson small,.examCard p{font-size:.9rem;line-height:1.45}
.teacherAdminMenuNoHero{margin-top:4px}

/* Keep dense admin controls readable without making the mobile layout oversized. */
@media(max-width:560px){
  body{font-size:16px;line-height:1.55}
  .pageWrap{padding-left:14px;padding-right:14px}
  .sectionHeading.large h1{font-size:1.65rem}
  .sectionHeading h2{font-size:1.15rem}
  .teacherAdminMenuItem b{font-size:1rem}
  .teacherAdminMenuItem small{font-size:.875rem}
  .primaryBtn,.ghostBtn,.outlineBtn{min-height:44px}
  input,select,textarea{font-size:16px} /* prevents iOS input zoom */
}


/* ===== FIX108 — Luyện bài theo phần ===== */
.lessonPracticePartTarget{display:grid;gap:7px;padding:12px 14px;border:1px solid var(--green-line,#D5E9DC);border-radius:15px;background:#F7FCF9}
.lessonPracticePartTarget label{display:grid;gap:7px;font-weight:800;color:#315b47}
.lessonPracticePartTarget select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}
.lessonPracticePartTarget small{font-size:.86rem;line-height:1.45;color:var(--muted)}
.lessonPartChooser{max-width:760px;margin:8px auto 30px;background:#fff;border:1px solid var(--green-line);border-radius:24px;padding:18px;box-shadow:var(--shadow)}
.lessonPartChooserHead{display:flex;gap:13px;align-items:flex-start;margin-bottom:16px}
.lessonPartChooserHead>span{width:50px;height:50px;display:grid;place-items:center;border-radius:15px;background:var(--green-soft);font-size:25px}
.lessonPartChooserHead b{display:block;color:var(--green-dark);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lessonPartChooserHead h2{margin:3px 0 4px;color:var(--green-dark);font-size:1.35rem}
.lessonPartChooserHead p{margin:0;color:var(--muted);font-size:.93rem}
.lessonPartGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.lessonPartCard{border:1px solid var(--green-line);background:linear-gradient(145deg,#fff,#F1FAF5);border-radius:19px;padding:16px;text-align:left;min-height:145px;display:flex;flex-direction:column;align-items:flex-start;gap:5px;box-shadow:0 7px 18px rgba(11,90,53,.05)}
.lessonPartCard>span{font-size:.72rem;font-weight:900;letter-spacing:.11em;color:var(--muted)}
.lessonPartCard>strong{font-size:2rem;line-height:1;color:var(--green-dark)}
.lessonPartCard>small{font-size:.84rem;line-height:1.4;color:var(--muted);margin-top:4px}
.lessonPartCard>b{margin-top:auto;color:var(--green);font-size:.92rem}
.lessonPartCard:hover{border-color:var(--green);transform:translateY(-1px)}
.lessonPartBack{margin-top:14px}
@media(max-width:560px){.lessonPartGrid{grid-template-columns:1fr 1fr}.lessonPartChooser{padding:14px;border-radius:20px}.lessonPartCard{min-height:132px;padding:14px}.lessonPartCard>strong{font-size:1.75rem}}
@media(max-width:360px){.lessonPartGrid{grid-template-columns:1fr}}


/* ===== FIX109 — Tổng cả bài tự động ===== */
.lessonPartTotalCard{
  background:linear-gradient(145deg,#0B6B3C,#169556);
  border-color:#0B6B3C;
  color:#fff;
  box-shadow:0 10px 24px rgba(11,107,60,.18);
}
.lessonPartTotalCard>span,.lessonPartTotalCard>strong,.lessonPartTotalCard>small,.lessonPartTotalCard>b{color:#fff}
.lessonPartTotalCard>strong{font-size:2.15rem}
.lessonPartTotalCard:hover{border-color:#0B6B3C;box-shadow:0 13px 28px rgba(11,107,60,.24)}
.lessonPartAutoNote{margin-top:13px;padding:11px 13px;border:1px solid #CFE8D8;border-radius:14px;background:#F0FAF4;color:#315B47;font-size:.9rem;line-height:1.5}


/* ===== FIX111 · Video bài học có điểm dừng ===== */
.videoLessonBuilder{display:grid;gap:13px;padding:15px;border:1px solid var(--green-line,#D5E9DC);border-radius:18px;background:#F7FCF9}
.videoBuilderHead>div{display:flex;gap:11px;align-items:center}.videoBuilderHead b{display:block;color:var(--green-dark);font-size:1.05rem}.videoBuilderHead small{display:block;color:var(--muted);margin-top:3px}
.videoCheckpointToolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:4px}.videoCheckpointToolbar small{display:block;color:var(--muted);font-size:.88rem;margin-top:3px}
.videoCheckpointList{display:grid;gap:11px}.videoCheckpointCard{display:grid;gap:10px;padding:13px;border:1px solid #DCEAE1;border-radius:15px;background:#fff}.videoCheckpointHead{display:flex;justify-content:space-between;align-items:center}.videoCheckpointHead b{color:var(--green-dark)}
.videoBatchPaste{border:1px dashed #C9DDD0;border-radius:14px;padding:11px 12px;background:#fff}.videoBatchPaste summary{cursor:pointer;font-weight:800;color:var(--green-dark)}.videoBatchPaste p{font-size:.88rem;color:var(--muted);line-height:1.5}.videoBatchPaste textarea{width:100%;box-sizing:border-box;margin:8px 0;padding:11px;border:1px solid var(--line);border-radius:12px;font:inherit}
.videoDraftPreview{display:grid;gap:10px;margin-top:12px}.videoAspect{position:relative;width:100%;aspect-ratio:16/9;background:#0b0f0d;border-radius:17px;overflow:hidden}.videoAspect iframe,.videoAspect>#videoYoutubePlayer,.videoAspect iframe#videoYoutubePlayer{position:absolute;inset:0;width:100%;height:100%;border:0}
.videoLessonBtn{position:relative}.videoLessonBtn::after{content:'VIDEO';position:absolute;right:6px;top:4px;font-size:7px;font-weight:900;letter-spacing:.06em;opacity:.55}
.videoPartChooser{max-width:820px;margin:auto}.videoPartChooserHead{display:flex;gap:13px;align-items:flex-start;margin-bottom:15px}.videoPartChooserHead>span{width:52px;height:52px;border-radius:16px;background:#EAF7F0;display:grid;place-items:center;font-size:27px}.videoPartChooserHead h2{margin:2px 0 4px;color:var(--green-dark)}.videoPartChooserHead p{margin:0;color:var(--muted)}
.videoPartGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.videoPartCard{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:15px;border:1px solid var(--green-line);border-radius:17px;background:linear-gradient(145deg,#fff,#F2FAF5);min-height:128px}.videoPartCard>span{font-size:.75rem;font-weight:900;color:var(--green)}.videoPartCard>b{font-size:1rem;color:var(--green-dark)}.videoPartCard>small{color:var(--muted)}.videoPartCard>strong{margin-top:auto;color:var(--green)}
.videoLessonRunner{max-width:900px;margin:auto}.videoLessonInfo{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.videoLessonInfo>b{font-size:.9rem;color:var(--muted)}.videoPlayerWrap{overflow:hidden}.videoCheckpointTimeline{display:flex;gap:7px;overflow:auto;padding:10px 2px}.videoCheckpointTimeline span{min-width:62px;padding:6px 8px;border:1px solid var(--green-line);border-radius:11px;background:#fff;text-align:center}.videoCheckpointTimeline span b{display:block;font-size:.82rem}.videoCheckpointTimeline span small{font-size:.72rem;color:var(--muted)}.videoCheckpointTimeline span.passed{background:#EAF8EF;border-color:#6DB98A;color:#0B6B3C}.videoLessonStatus{padding:10px 12px;border-radius:12px;background:#F3F8F5;color:#426153;font-size:.9rem}
.videoQuestionOverlay{position:absolute;inset:0;z-index:5;background:rgba(8,20,14,.88);display:grid;place-items:center;padding:14px;overflow:auto}.videoQuestionCard{width:min(680px,100%);max-height:96%;overflow:auto;background:#fff;border-radius:20px;padding:18px;box-sizing:border-box;box-shadow:0 20px 70px rgba(0,0,0,.35)}.videoQuestionBadge{font-size:.78rem;font-weight:900;color:var(--green);letter-spacing:.05em}.videoQuestionCard h3{margin:7px 0 13px;color:#153226;line-height:1.45}.videoQuestionBody{display:grid;gap:8px}.videoAnswerChoice{display:grid;grid-template-columns:auto 32px 1fr;gap:9px;align-items:center;padding:10px;border:1px solid #DDE8E1;border-radius:12px}.videoAnswerChoice>span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#EEF8F2;color:var(--green-dark);font-weight:900}.videoAnswerChoice>b{font-weight:600}.videoTFRow{display:grid;grid-template-columns:1fr 130px;gap:9px;align-items:center;padding:10px;border:1px solid #E2EAE5;border-radius:12px}.videoTFRow select,.videoOrderRows select,.videoMatchRows select,.videoFillAnswer{padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit}.videoFillAnswer{width:100%;box-sizing:border-box}.videoOrderRows,.videoMatchRows{display:grid;gap:8px}.videoOrderRows label,.videoMatchRows label{display:grid;grid-template-columns:100px 1fr;gap:9px;align-items:center}.videoMatchRows label{grid-template-columns:1fr 1fr}.videoQuestionHint{padding:9px 11px;background:#FFF9E8;border-radius:10px;color:#7A5A16}.videoCorrectFeedback,.videoWrongFeedback{margin:12px 0;padding:11px 13px;border-radius:12px;line-height:1.5}.videoCorrectFeedback{background:#EAF8EF;color:#0B6B3C}.videoWrongFeedback{background:#FFF4E8;color:#8A5614}.videoCorrectFeedback p{margin:5px 0 0}.videoQuestionCard>.primaryBtn{width:100%;margin-top:11px}
@media(max-width:620px){.videoCheckpointToolbar{align-items:stretch;flex-direction:column}.videoPartGrid{grid-template-columns:1fr}.videoQuestionOverlay{padding:8px}.videoQuestionCard{padding:14px;border-radius:16px}.videoTFRow{grid-template-columns:1fr}.videoOrderRows label,.videoMatchRows label{grid-template-columns:1fr}.videoLessonInfo{align-items:flex-start;flex-direction:column}}


/* ===== FIX112 · Video editor khoa học + trạng thái lưu rõ ràng ===== */
.videoQuestionSource{border:1px solid #D8E8DE;border-radius:16px;background:#fff;overflow:hidden}.videoSourceTabs{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-bottom:1px solid #E4ECE7}.videoSourceTab{border:0;background:#F6FAF7;padding:11px 8px;font:inherit;font-weight:800;color:#557064;cursor:pointer}.videoSourceTab.active{background:#E9F7EF;color:#0B6B3C;box-shadow:inset 0 -3px 0 #149456}.videoSourcePane{padding:13px;display:grid;gap:10px}.videoSourcePane p{margin:0;color:var(--muted);font-size:.9rem}.videoSourcePane textarea{width:100%;box-sizing:border-box;padding:11px;border:1px solid var(--line);border-radius:12px;font:inherit;line-height:1.55}.videoQuestionFileDrop{min-height:84px}.videoRecognitionStatus{margin:0 13px 13px;padding:10px 12px;border-radius:11px;background:#F3F7F5;color:#557064;font-size:.9rem;line-height:1.45}.videoRecognitionStatus.success{background:#EAF8EF;color:#0B6B3C}.videoRecognitionStatus.error{background:#FFF0EE;color:#A13A2E}.videoRecognitionStatus.loading{background:#EEF5FF;color:#315D8B}
.videoAutoTimeBox{display:grid;gap:10px;padding:13px;border:1px solid #D8E8DE;border-radius:15px;background:#F9FCFA}.videoAutoTimeBox>div:first-child small{display:block;margin-top:3px;color:var(--muted);font-size:.87rem}.videoAutoTimeControls{display:grid;grid-template-columns:150px 150px auto;gap:9px;align-items:end}.videoAutoTimeControls label{display:grid;gap:5px;font-size:.86rem;font-weight:700}.videoAutoTimeControls input{padding:9px 10px;border:1px solid var(--line);border-radius:10px;font:inherit}
.videoCheckpointCard.needsReview{border-color:#E5B548;background:#FFFCF2}.videoCheckpointCard.needsReview::before{content:'⚠️ Hệ thống chưa chắc chắn đáp án — vui lòng rà lại';display:block;font-size:.8rem;font-weight:800;color:#8A6618;margin-bottom:2px}.videoSaveStatus{min-height:0;padding:0;font-size:.92rem;line-height:1.45}.videoSaveStatus.loading,.videoSaveStatus.success,.videoSaveStatus.error{padding:10px 12px;border-radius:11px}.videoSaveStatus.loading{background:#EEF5FF;color:#315D8B}.videoSaveStatus.success{background:#EAF8EF;color:#0B6B3C}.videoSaveStatus.error{background:#FFF0EE;color:#A13A2E}
@media(max-width:620px){.videoSourceTabs{grid-template-columns:1fr}.videoSourceTab{border-bottom:1px solid #E7EFEA}.videoAutoTimeControls{grid-template-columns:1fr 1fr}.videoAutoTimeControls button{grid-column:1/-1}.videoCheckpointCard .formRow{grid-template-columns:1fr}}


/* ===== FIX113 · Video playback hidden checkpoints + teacher analytics ===== */
.videoCheckpointTimeline{display:none!important}
.videoAnalytics{display:grid;gap:14px}
.videoSummaryGrid{grid-template-columns:repeat(4,minmax(0,1fr))}
.videoScoreFormula{padding:11px 13px;border:1px solid #D7E8DE;border-radius:13px;background:#F5FBF7;color:#315B47;font-size:.9rem;line-height:1.5}
.videoAnalyticsToolbar{display:flex;align-items:center;justify-content:space-between;gap:10px}
.videoAnalyticsToolbar label{display:flex;align-items:center;gap:7px;font-size:.88rem;color:var(--muted)}
.videoAnalyticsToolbar select{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit}
.videoStudentTableWrap{overflow:auto;border:1px solid #E0EAE4;border-radius:14px}
.videoStudentTable{min-width:850px;width:100%;border-collapse:collapse}.videoStudentTable th,.videoStudentTable td{padding:10px 9px;border-bottom:1px solid #EDF2EF;text-align:left;vertical-align:middle}.videoStudentTable th{background:#F7FAF8;font-size:.82rem;color:#567064}.videoStudentTable td small{display:block;color:var(--muted);font-size:.78rem}.goodText{color:#0B7A43;font-weight:800}.badText{color:#B5483F;font-weight:800}
.miniBar{width:86px;height:5px;border-radius:999px;background:#E7EFEA;overflow:hidden;margin-top:4px}.miniBar span{display:block;height:100%;background:#159657;border-radius:inherit}
.videoQuestionStatsGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.videoQuestionStatsGrid>section{border:1px solid #E0EAE4;border-radius:14px;padding:12px;background:#fff}.videoQuestionStatsGrid h4{margin:0 0 9px}.videoQuestionStat{display:grid;grid-template-columns:1fr auto;gap:9px;padding:9px 0;border-bottom:1px dashed #E6ECE8}.videoQuestionStat:last-child{border-bottom:0}.videoQuestionStat b{font-size:.88rem;line-height:1.4}.videoQuestionStat span{font-size:.8rem;color:var(--muted);white-space:nowrap}
@media(max-width:700px){.videoSummaryGrid{grid-template-columns:1fr 1fr}.videoAnalyticsToolbar{align-items:stretch;flex-direction:column}.videoAnalyticsToolbar label{justify-content:space-between}.videoQuestionStatsGrid{grid-template-columns:1fr}}


/* ===== FIX117 · Video fast/fullscreen/compact questions/result feedback ===== */
#contentViewer.videoLessonMode .modalBox{width:min(1180px,calc(100vw - 20px));max-width:1180px}
#contentViewer.videoLessonMode .viewerBody{padding:10px!important;background:#f8fbf9}
#contentViewer.videoLessonMode .videoLessonRunner{max-width:1120px;width:100%;margin:0 auto}
.videoLessonInfo{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 8px}
.videoLessonTools{display:flex;align-items:center;gap:8px}.videoLessonTools>b{font-size:.85rem;color:var(--muted)}
.videoFullscreenBtn{border:1px solid #cfe1d6;background:#fff;color:#0b6b3c;border-radius:10px;padding:7px 10px;font-weight:800;cursor:pointer}
.videoPlayerWrap{width:100%;max-height:min(76vh,720px);aspect-ratio:16/9;border-radius:18px;background:#06130d;box-shadow:0 12px 34px rgba(5,40,24,.14)}
.videoPlayerWrap>#videoYoutubePlayer,.videoPlayerWrap>#videoYoutubePlayer iframe{width:100%!important;height:100%!important;position:absolute!important;inset:0!important}
.videoPlayerWrap:fullscreen,.videoPlayerWrap.isFullscreen{width:100vw!important;height:100vh!important;max-height:none!important;aspect-ratio:auto!important;border-radius:0!important;background:#000}
.videoPlayerWrap:fullscreen>#videoYoutubePlayer,.videoPlayerWrap:fullscreen>#videoYoutubePlayer iframe{width:100%!important;height:100%!important}
.videoLessonStatus{padding:8px 11px;font-size:.84rem;line-height:1.4;margin-top:8px}

/* Question overlay: compact enough for one screen, with sticky answer button. */
.videoQuestionOverlay{padding:10px;background:rgba(4,18,11,.91);overscroll-behavior:contain}
.videoQuestionCard{width:min(760px,96%);max-height:94%;padding:14px 15px 12px;border-radius:18px;display:flex;flex-direction:column;overflow:hidden}
.videoQuestionTop{display:flex;align-items:center;justify-content:space-between;gap:10px}.videoQuestionTop small{font-size:.75rem;color:#718179}
.videoQuestionCard h3{font-size:clamp(1.05rem,2.2vw,1.35rem);margin:6px 0 9px;line-height:1.3}
.videoQuestionBody{gap:6px;overflow:auto;min-height:0;padding-right:2px}
.videoAnswerChoice{grid-template-columns:auto 30px 1fr;gap:7px;padding:8px 9px;border-radius:11px;min-height:42px}
.videoAnswerChoice>span{width:27px;height:27px;font-size:.83rem}.videoAnswerChoice>b{font-size:.92rem;line-height:1.3}
.videoTFRow{padding:8px 9px;gap:7px}.videoTFRow b{font-size:.9rem;line-height:1.3}.videoTFRow select{padding:7px 8px}
.videoQuestionSubmitBar{position:sticky;bottom:-1px;padding-top:8px;margin-top:2px;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 30%)}
.videoQuestionSubmitBar .primaryBtn{width:100%;min-height:42px;margin:0;font-size:.95rem}

/* On phones, a checkpoint temporarily uses the full viewport so the question and
   submit button never disappear below a tiny 16:9 video. */
@media(max-width:760px){
  #contentViewer.videoLessonMode{padding:2px!important}
  #contentViewer.videoLessonMode .modalBox{width:calc(100vw - 4px)!important;height:calc(100dvh - 4px)!important;max-height:calc(100dvh - 4px)!important;padding:6px!important;border-radius:14px!important}
  #contentViewer.videoLessonMode .modalHead{padding-bottom:5px!important}
  #contentViewer.videoLessonMode .viewerBody{padding:5px!important;margin-top:3px!important}
  .videoLessonInfo{margin-bottom:5px}.videoLessonInfo>.pill{font-size:.74rem;padding:6px 8px}.videoLessonTools>b{display:none}
  .videoFullscreenBtn{padding:6px 8px;font-size:.78rem}
  .videoPlayerWrap{border-radius:13px;max-height:none}
  .videoLessonStatus{font-size:.78rem;padding:7px 8px;margin-top:5px}
  .videoPlayerWrap.questionActive:not(:fullscreen){position:fixed!important;inset:3px!important;width:calc(100vw - 6px)!important;height:calc(100dvh - 6px)!important;max-height:none!important;aspect-ratio:auto!important;border-radius:15px!important;z-index:2200!important}
  .videoPlayerWrap.questionActive:not(:fullscreen)>#videoYoutubePlayer{opacity:.18}
  .videoQuestionOverlay{padding:7px}
  .videoQuestionCard{width:100%;max-height:100%;height:auto;padding:10px;border-radius:15px}
  .videoQuestionTop small{display:none}.videoQuestionBadge{font-size:.68rem}
  .videoQuestionCard h3{font-size:1.02rem;margin:5px 0 7px}
  .videoAnswerChoice{padding:7px 8px;min-height:39px}.videoAnswerChoice>b{font-size:.87rem}.videoAnswerChoice>span{width:25px;height:25px}
  .videoQuestionBody{max-height:calc(100dvh - 158px)}
  .videoQuestionSubmitBar .primaryBtn{min-height:44px}
}
@media(max-width:760px) and (orientation:landscape){
  .videoPlayerWrap{height:calc(100dvh - 70px);aspect-ratio:auto}
  .videoQuestionCard{width:min(820px,96%);max-height:96%}
  .videoQuestionBody{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:calc(100dvh - 140px)}
  .videoQuestionBody>.videoTFRow,.videoQuestionBody>.videoOrderRows,.videoQuestionBody>.videoMatchRows,.videoQuestionBody>.videoFillAnswer,.videoQuestionBody>.videoQuestionHint{grid-column:1/-1}
}

/* Friendly result screen inspired by game feedback, without external image assets. */
.videoResultOverlay{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:rgba(246,250,252,.96);padding:12px;opacity:0;transform:scale(.98);transition:.18s ease}
.videoResultOverlay.show{opacity:1;transform:scale(1)}
.videoResultCard{position:relative;text-align:center;max-width:520px;width:min(92%,520px);padding:18px 16px 16px;border-radius:24px;background:#fff;box-shadow:0 18px 55px rgba(15,23,42,.16);overflow:hidden}
.videoResultMark{display:inline-grid;place-items:center;width:54px;height:54px;border-radius:50%;font-size:34px;font-weight:1000;color:#fff;margin-bottom:6px}
.videoResultOverlay.correct .videoResultMark{background:#13b981}.videoResultOverlay.wrong .videoResultMark{background:#ef6461}
.videoResultTitle{font-size:1.35rem;font-weight:950;color:#113e2f}.videoResultOverlay.wrong .videoResultTitle{color:#933c3a}
.videoResultMascot{font-size:4.5rem;line-height:1.1;margin:5px 0;animation:videoMascotBounce .5s ease}
.videoResultMessage{font-weight:800;color:#52645c;line-height:1.4}.videoResultExplain{margin-top:7px;font-size:.86rem;color:#61736b}
.videoConfetti i{position:absolute;width:8px;height:8px;border-radius:2px;background:#64d5e1;animation:videoConfetti .85s ease-out forwards}.videoConfetti i:nth-child(1){left:18%;top:18%}.videoConfetti i:nth-child(2){left:30%;top:28%;background:#d7a6ff}.videoConfetti i:nth-child(3){right:22%;top:22%;background:#ffd84a}.videoConfetti i:nth-child(4){right:34%;top:14%;background:#75dfa3}.videoConfetti i:nth-child(5){left:12%;top:44%;background:#ff8d6b}.videoConfetti i:nth-child(6){right:12%;top:45%;background:#66b8ff}
@keyframes videoMascotBounce{0%{transform:translateY(15px) scale(.8)}65%{transform:translateY(-5px) scale(1.06)}100%{transform:none}}
@keyframes videoConfetti{0%{transform:translateY(-12px) rotate(0);opacity:0}25%{opacity:1}100%{transform:translateY(70px) rotate(220deg);opacity:0}}
@media(max-width:520px){.videoResultCard{padding:14px 12px}.videoResultMascot{font-size:3.8rem}.videoResultTitle{font-size:1.15rem}.videoResultMessage{font-size:.9rem}}


/* ===== FIX118 · Compact answer button + Video analytics workspace ===== */
.videoQuestionSubmitBar{display:flex;justify-content:center;align-items:center}
.videoQuestionSubmitBar .primaryBtn{width:auto!important;min-width:190px;max-width:260px;padding:9px 22px!important;min-height:40px!important}
.analyticsSubmodeBar{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 12px}
.analyticsSubmodeBtn{border:1px solid #d6e7dd;background:#fff;color:#315b47;border-radius:12px;padding:9px 13px;font:inherit;font-weight:850;cursor:pointer}
.analyticsSubmodeBtn.active{background:#0f8650;color:#fff;border-color:#0f8650;box-shadow:0 6px 16px rgba(15,134,80,.16)}
.videoAnalyticsPicker{display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1.3fr);gap:12px;align-items:end;margin:0 0 14px;padding:13px;border:1px solid #dceae2;border-radius:15px;background:#f8fcfa}
.videoAnalyticsPicker label{display:grid;gap:6px;font-weight:850;color:#315b47}.videoAnalyticsPicker select{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:11px;background:#fff;font:inherit}
.videoAnalyticsPicker>div{padding:10px 12px;border-radius:12px;background:#edf8f2;color:#315b47}.videoAnalyticsPicker>div b,.videoAnalyticsPicker>div small{display:block}.videoAnalyticsPicker>div small{margin-top:3px;color:#60736a;line-height:1.4}
#teacherVideoAnalytics{margin-top:4px}
.videoStudentTable{min-width:980px}
@media(max-width:760px){
  .videoQuestionSubmitBar .primaryBtn{min-width:150px;max-width:210px;width:58%!important;padding:8px 14px!important;font-size:.88rem!important}
  .videoAnalyticsPicker{grid-template-columns:1fr}
  .analyticsSubmodeBar{display:grid;grid-template-columns:1fr 1fr}
  .analyticsSubmodeBtn{padding:9px 8px;font-size:.86rem}
}
@media(max-width:420px){
  .videoQuestionSubmitBar .primaryBtn{width:62%!important;min-width:140px;max-width:190px}
}


/* ===== FIX119 · Mobile balance + fullscreen landscape fallback ===== */
.videoPlayerWrap.forceLandscape:fullscreen{
  position:fixed!important;
  left:50%!important;
  top:50%!important;
  width:100vh!important;
  height:100vw!important;
  max-width:none!important;
  max-height:none!important;
  transform:translate(-50%,-50%) rotate(90deg)!important;
  transform-origin:center center!important;
}
.videoPlayerWrap.forceLandscape:fullscreen>#videoYoutubePlayer,
.videoPlayerWrap.forceLandscape:fullscreen>#videoYoutubePlayer iframe,
.videoPlayerWrap.forceLandscape:fullscreen>.videoQuestionOverlay,
.videoPlayerWrap.forceLandscape:fullscreen>.videoResultOverlay{
  width:100%!important;height:100%!important;
}

/* Home rank ladder: equal columns and equal heights on phone browsers. */
@media(max-width:700px){
  .achievementGrid{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:8px!important;
    align-items:stretch!important;
  }
  .achievementBadge,.rankBadge{
    min-width:0!important;
    width:100%!important;
    min-height:78px!important;
    padding:9px 5px!important;
    box-sizing:border-box!important;
    place-content:center!important;
    align-content:center!important;
    justify-content:center!important;
    transform:none!important;
  }
  .rankBadge.is-current{transform:none!important}
  .rankBadge.is-current::after{min-height:10px}
}
@media(max-width:390px){
  .achievementGrid{gap:6px!important}
  .achievementBadge,.rankBadge{min-height:72px!important;padding:7px 3px!important}
  .achievementBadge b,.rankBadge b{font-size:11px!important}
  .achievementBadge small,.rankBadge small{font-size:8.5px!important}
}

/* Analytics selector should remain readable on narrow browsers. */
@media(max-width:760px){
  .videoAnalyticsPicker{padding:10px!important;gap:9px!important}
  .videoAnalyticsPicker select{font-size:14px!important;min-height:44px}
  #teacherVideoAnalytics{overflow-x:auto}
}


/* ===== FIX120b · Mobile bottom navigation + Home counter polish ===== */
@media(max-width:700px){
  .bottomNav{
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    padding:5px 4px calc(6px + env(safe-area-inset-bottom))!important;
    min-height:68px!important;
    column-gap:0!important;
  }
  .navItem{
    min-width:0!important;
    min-height:56px!important;
    padding:4px 1px!important;
    gap:2px!important;
    border-radius:16px!important;
    overflow:hidden!important;
  }
  .navItem span{
    width:34px!important;
    height:30px!important;
    font-size:20px!important;
    line-height:1!important;
  }
  .navItem small{
    display:block!important;
    width:100%!important;
    margin:0!important;
    padding:0 1px!important;
    font-size:clamp(8.5px,2.35vw,10.5px)!important;
    line-height:1.08!important;
    font-weight:800!important;
    letter-spacing:-.025em!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:clip!important;
    text-align:center!important;
  }
  .navItem.active span{border-radius:14px!important}
  .statsHome{gap:8px!important}
  .statsHome>div{min-width:0!important;padding:12px 5px!important}
  .statsHome b{font-size:clamp(1.45rem,7vw,1.9rem)!important;line-height:1.15!important}
  .statsHome span{font-size:clamp(.72rem,3.2vw,.9rem)!important;white-space:nowrap!important}
}
@media(max-width:380px){
  .navItem small{font-size:8.4px!important;letter-spacing:-.04em!important}
  .navItem span{font-size:19px!important;width:32px!important}
}


/* ===== FIX120 · Rank ladder 16 mốc · 4x4 hiện đại ===== */
.achievementGrid{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:10px!important;
  align-items:stretch!important;
}
.achievementBadge,.rankBadge{
  position:relative;
  min-width:0!important;
  width:100%!important;
  min-height:104px!important;
  padding:12px 8px 10px!important;
  box-sizing:border-box!important;
  border:1px solid rgba(29,93,64,.14)!important;
  border-radius:16px!important;
  background:linear-gradient(180deg,#ffffff 0%,#f7fbf8 100%)!important;
  box-shadow:0 5px 15px rgba(29,75,53,.07)!important;
  display:grid!important;
  place-items:center!important;
  align-content:center!important;
  text-align:center!important;
  gap:3px!important;
  overflow:hidden;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.achievementBadge:hover,.rankBadge:hover{
  transform:translateY(-2px)!important;
  box-shadow:0 9px 20px rgba(29,75,53,.11)!important;
  border-color:rgba(21,132,79,.28)!important;
}
.achievementBadge b,.rankBadge b{
  font-size:15px!important;
  line-height:1.1!important;
  color:#1d5b3f!important;
  font-weight:900!important;
}
.achievementBadge small,.rankBadge small{
  font-size:11px!important;
  line-height:1.2!important;
  color:#66786f!important;
  font-weight:700!important;
}
.achievementBadge .rankIcon,.rankBadge .rankIcon{
  font-size:24px!important;
  line-height:1!important;
}
.rankBadge.is-current,.achievementBadge.is-current{
  background:linear-gradient(160deg,#fffdf7 0%,#fff7d9 100%)!important;
  border:2px solid #d4a72c!important;
  box-shadow:0 0 0 3px rgba(226,180,58,.12),0 9px 22px rgba(142,101,10,.12)!important;
}
.rankBadge.is-current::after,.achievementBadge.is-current::after{
  content:'ĐANG Ở ĐÂY';
  display:block;
  margin-top:3px;
  padding:3px 7px;
  border-radius:999px;
  background:#7a5600;
  color:#fff9dc;
  font-size:9px;
  line-height:1;
  font-weight:900;
  letter-spacing:.03em;
}

/* Desktop giữ 4 cột rõ nét */
@media(min-width:761px){
  .achievementGrid{grid-template-columns:repeat(4,minmax(130px,1fr))!important}
  .achievementBadge,.rankBadge{min-height:112px!important}
}

/* Điện thoại: vẫn 4x4 nhưng gọn, rõ và cân đối */
@media(max-width:760px){
  .dailyAchievementCard{padding:12px!important}
  .achievementGrid{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:7px!important;
  }
  .achievementBadge,.rankBadge{
    min-height:82px!important;
    padding:8px 3px!important;
    border-radius:12px!important;
    gap:2px!important;
  }
  .achievementBadge b,.rankBadge b{
    font-size:12px!important;
    line-height:1.05!important;
  }
  .achievementBadge small,.rankBadge small{
    font-size:8.5px!important;
    line-height:1.08!important;
  }
  .achievementBadge .rankIcon,.rankBadge .rankIcon{
    font-size:18px!important;
  }
  .rankBadge.is-current::after,.achievementBadge.is-current::after{
    font-size:7px;
    padding:3px 4px;
    letter-spacing:0;
  }
}

/* Màn hình rất hẹp: vẫn 4 cột, giảm thêm để không lệch */
@media(max-width:390px){
  .achievementGrid{gap:5px!important}
  .achievementBadge,.rankBadge{
    min-height:76px!important;
    padding:7px 2px!important;
  }
  .achievementBadge b,.rankBadge b{font-size:10.5px!important}
  .achievementBadge small,.rankBadge small{font-size:7.5px!important}
  .achievementBadge .rankIcon,.rankBadge .rankIcon{font-size:16px!important}
}


/* ===== FIX122 · Luyện ngay live stats + milestone celebration ===== */
.rankUnlockOverlay{
  position:fixed;inset:0;z-index:10000;display:grid;place-items:center;
  padding:18px;background:rgba(7,28,18,.62);backdrop-filter:blur(5px);
  opacity:0;transition:opacity .22s ease;
}
.rankUnlockOverlay.show{opacity:1}
.rankUnlockCard{
  width:min(420px,94vw);text-align:center;padding:24px 20px 20px;
  border-radius:26px;background:linear-gradient(160deg,#ffffff 0%,#f2fff7 100%);
  border:1px solid rgba(23,128,74,.18);box-shadow:0 24px 70px rgba(0,0,0,.25);
  transform:translateY(12px) scale(.96);transition:transform .25s ease;
}
.rankUnlockOverlay.show .rankUnlockCard{transform:none}
.rankUnlockSpark{font-size:24px}
.rankUnlockIcon{font-size:64px;line-height:1;margin:7px 0}
.rankUnlockCard>span{display:block;color:#16814c;font-size:12px;font-weight:950;letter-spacing:.08em}
.rankUnlockCard h2{margin:5px 0 7px;color:#155e3b;font-size:29px}
.rankUnlockCard p{margin:0 0 16px;color:#5c6e65;line-height:1.5}
.rankUnlockCard .primaryBtn{min-width:210px}
@media(max-width:520px){
  .rankUnlockCard{padding:20px 15px 17px;border-radius:22px}
  .rankUnlockIcon{font-size:54px}.rankUnlockCard h2{font-size:24px}
}


/* FIX172 — Trên máy tính luôn hiện thanh điều hướng ở CUỐI trang khi Luyện tập / Luyện ngay / Luyện đề.
   Chỉ ẩn khi đang mở modal lịch sử hoặc xem chi tiết để tránh che nội dung modal. */
@media (min-width: 761px){
  body:has(#attemptHistoryModal) .bottomNav,
  body:has(#previewModal) .bottomNav{
    display:none !important;
  }
  body:has(#attemptHistoryModal),
  body:has(#previewModal){
    padding-bottom: 20px !important;
  }
}


/* ===== FIX129 · Khôi phục Trang chủ cũ + đưa thống kê nhanh xuống cuối ===== */
.statsHomeBottom{margin-top:8px;margin-bottom:4px}
.homeBottomStatsHeading{margin-top:22px}
@media(max-width:560px){
  .homeBottomStatsHeading{margin-top:18px}
  .statsHomeBottom{margin-bottom:8px}
}


/* ===== FIX130 · 16 mốc, mặc định ẩn; mốc đang đạt hiển thị nổi bật ===== */
.homeCurrentRankCard{
  margin-top:14px;
  display:flex;
  align-items:center;
  gap:12px;
  padding:13px 15px;
  border:1px solid #e4c46d;
  border-radius:16px;
  background:linear-gradient(135deg,#fffdf5,#fff5d8);
  box-shadow:0 7px 18px rgba(160,112,10,.10);
}
.currentRankIcon{
  width:50px;height:50px;flex:0 0 50px;
  display:grid;place-items:center;
  border-radius:15px;
  background:#fff;
  font-size:27px;
  box-shadow:0 4px 12px rgba(138,90,0,.10);
}
.homeCurrentRankCard>div:last-child{display:grid;gap:2px;min-width:0}
.homeCurrentRankCard span{font-size:9px;font-weight:950;letter-spacing:.08em;color:#9a6900}
.homeCurrentRankCard b{font-size:18px;line-height:1.1;color:#684500}
.homeCurrentRankCard small{font-size:10px;color:#7c7258;line-height:1.35}
.achievementToggleBtn{
  display:block;
  margin:11px auto 0;
  min-height:36px;
  padding:7px 14px;
  border:1px solid #cfe3d8;
  border-radius:999px;
  background:#fff;
  color:#0b6b3c;
  font:inherit;
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}
.achievementToggleBtn:hover{background:#eff9f3;border-color:#98c9ac}
#homeAchievementGrid.achievementGridCollapsed{
  display:none!important;
}
#homeAchievementGrid.achievementGridCollapsed.is-open{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:8px!important;
  margin-top:12px;
}
#homeAchievementGrid .rankBadge{
  min-width:0!important;
  width:100%;
  min-height:72px;
  padding:8px 5px;
  place-content:center;
  box-sizing:border-box;
}
#homeAchievementGrid .rankBadge.is-current{
  opacity:1!important;
  transform:none!important;
  border:2px solid #e1aa35!important;
  background:linear-gradient(145deg,#fffdf3,#fff0be)!important;
  color:#7b5000!important;
  box-shadow:0 0 0 3px rgba(225,170,53,.14),0 7px 16px rgba(123,80,0,.10)!important;
}
#homeAchievementGrid .rankBadge.is-current::after{
  content:'MỐC ĐANG ĐẠT';
  display:block;
  margin-top:3px;
  font-size:6.5px;
  font-weight:950;
  color:#8a5a00;
}
#homeAchievementGrid .rankBadge.is-next{
  opacity:1!important;
  border-color:#8bb9e8!important;
  background:#f2f7ff!important;
}
@media(max-width:640px){
  .homeCurrentRankCard{padding:11px 12px;gap:9px}
  .currentRankIcon{width:44px;height:44px;flex-basis:44px;font-size:24px}
  .homeCurrentRankCard b{font-size:16px}
  #homeAchievementGrid.achievementGridCollapsed.is-open{gap:6px!important}
  #homeAchievementGrid .rankBadge{min-height:66px;padding:6px 3px}
  #homeAchievementGrid .rankBadge b{font-size:10px}
  #homeAchievementGrid .rankBadge small{font-size:7.5px}
}


/* ===== FIX131 · Trang chủ khoa học, hài hòa, đồng bộ PC + mobile ===== */
.homeBiologyDashboard{
  --home-green:#0f6b45;
  --home-green2:#15935a;
  --home-mint:#eef9f3;
  --home-line:#d8eae0;
  position:relative;
}
.homeBiologyDashboard:before{
  content:"";
  position:absolute;
  inset:-16px -10px auto -10px;
  height:430px;
  pointer-events:none;
  z-index:-1;
  background:
    radial-gradient(circle at 10% 18%,rgba(40,177,100,.09),transparent 28%),
    radial-gradient(circle at 88% 9%,rgba(56,142,102,.08),transparent 26%);
}

/* One banner asset on every screen size: no more separate desktop/mobile designs. */
.homeHeroUnified{
  display:block!important;
  padding:0!important;
  min-height:0!important;
  border-radius:24px!important;
  overflow:hidden!important;
  background:#eaf8ef!important;
  border:1px solid rgba(15,107,69,.12)!important;
  box-shadow:0 14px 34px rgba(14,92,58,.13)!important;
}
.homeHeroUnified:after{display:none!important}
.homeHeroUnified .welcomeDesktopBanner{
  display:block!important;
  width:100%!important;
  height:auto!important;
  aspect-ratio:3/1;
  object-fit:cover!important;
  object-position:center!important;
}
.homeHeroUnified .welcomeCopy,
.homeHeroUnified .welcomeArt{display:none!important}

.homeDashboardGrid{
  display:grid;
  grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);
  gap:18px;
  align-items:start;
  margin-top:20px;
}
.homeDashboardBlock{
  min-width:0;
  border:1px solid var(--home-line);
  border-radius:23px;
  background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(249,253,251,.96));
  box-shadow:0 9px 26px rgba(21,82,57,.055);
  padding:16px;
  position:relative;
  overflow:hidden;
}
.homeDashboardBlock:after{
  content:"🧬";
  position:absolute;
  right:-4px;
  top:-12px;
  font-size:62px;
  opacity:.035;
  transform:rotate(18deg);
  pointer-events:none;
}
.homeSectionHead{
  margin:0 2px 12px!important;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.homeSectionHead>div{min-width:0}
.homeSectionKicker{
  display:block;
  margin-bottom:4px;
  color:#27845b;
  font-size:9px;
  font-weight:950;
  letter-spacing:.09em;
}
.homeSectionHead h2{
  color:#125f3d!important;
  font-size:18px!important;
  letter-spacing:-.025em!important;
}
.homeSectionHead .linkBtn{
  flex:0 0 auto;
  border:1px solid #d8e9df;
  border-radius:999px;
  background:#fff;
  padding:7px 10px;
  color:#167046;
  font-weight:850;
}

/* Daily mission becomes compact and intentional. */
.homeMissionBlock .dailyCard{
  margin:0;
  min-height:142px;
  grid-template-columns:auto minmax(0,1fr);
  gap:12px 13px;
  align-items:center;
  border:0;
  background:linear-gradient(145deg,#effaf4 0%,#f9fdfb 100%);
  box-shadow:none;
}
.homeMissionBlock .dailyIcon{
  width:58px;height:58px;border-radius:18px;
  display:grid;place-items:center;
  background:#fff;
  box-shadow:0 7px 18px rgba(20,100,62,.08);
  font-size:30px;
}
.homeMissionBlock .dailyMain b{font-size:15px;color:#155e3f}
.homeMissionBlock .dailyMain span{font-size:10.5px;line-height:1.4}
.homeMissionBlock .dailyCard .primaryBtn{
  grid-column:2;
  justify-self:start;
  min-width:150px;
  border-radius:13px;
}

/* Results area: same visual language on both devices. */
.homeResultsBlock .dailyAchievementCard{
  margin:0;
  padding:14px;
  border:0;
  border-radius:17px;
  box-shadow:none;
  background:linear-gradient(145deg,#f7fcf9,#eef8f3);
}
.homeResultsBlock .dailyAchievementSummary{
  grid-template-columns:118px minmax(0,1fr);
  gap:12px;
}
.homeResultsBlock .dailyAchievementMetrics{gap:7px}
.homeResultsBlock .dailyAchievementMetrics>div{
  border-color:#dbece3;
  box-shadow:0 4px 12px rgba(23,83,58,.04);
}
.homeResultsBlock .homeCurrentRankCard{margin-top:12px}

/* Bottom library summary: deliberately last and visually lighter. */
.homeLibrarySummary{
  margin-top:20px;
  padding:16px;
  border:1px solid var(--home-line);
  border-radius:22px;
  background:
    linear-gradient(135deg,rgba(248,253,250,.98),rgba(241,249,245,.98));
  box-shadow:0 8px 24px rgba(21,82,57,.045);
}
.homeLibrarySummary .homeBottomStatsHeading{margin-top:0!important}
.statsHomeBottom{
  margin:0!important;
  gap:10px!important;
}
.statsHomeBottom>div{
  position:relative;
  overflow:hidden;
  min-height:92px;
  padding:13px 10px!important;
  border:1px solid #dcebe3!important;
  background:#fff!important;
  box-shadow:0 5px 14px rgba(17,81,54,.045)!important;
}
.statsHomeBottom>div:after{
  content:"";
  position:absolute;
  width:55px;height:55px;border-radius:50%;
  right:-22px;top:-22px;
  background:rgba(31,157,91,.06);
}
.homeStatIcon{
  display:block!important;
  margin-bottom:3px;
  font-size:20px!important;
  line-height:1!important;
}
.statsHomeBottom b{color:#145f3e!important}

/* Desktop: slightly wider workspace, unified proportions. */
@media(min-width:901px){
  .pageWrap,.headerInner{max-width:1120px!important}
  .homeHeroUnified{border-radius:26px!important}
  .homeDashboardGrid{grid-template-columns:minmax(330px,.78fr) minmax(520px,1.22fr)}
}

/* Tablet */
@media(max-width:900px){
  .homeDashboardGrid{grid-template-columns:1fr}
  .homeMissionBlock .dailyCard{min-height:0}
}

/* Mobile: exact same banner/design language, only responsive sizing/cropping changes. */
@media(max-width:700px){
  .pageWrap{padding-left:12px!important;padding-right:12px!important}
  .homeHeroUnified{
    border-radius:18px!important;
    box-shadow:0 9px 24px rgba(14,92,58,.11)!important;
  }
  .homeHeroUnified .welcomeDesktopBanner{
    aspect-ratio:2.22/1!important;
    object-fit:cover!important;
    object-position:center!important;
  }
  .homeDashboardGrid{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
    margin-top:14px;
  }
  .homeDashboardBlock,
  .homeLibrarySummary{
    padding:12px;
    border-radius:18px;
    box-shadow:0 6px 18px rgba(21,82,57,.045);
  }
  .homeSectionHead{margin-bottom:9px!important}
  .homeSectionKicker{font-size:7.5px}
  .homeSectionHead h2{font-size:15px!important}
  .homeSectionHead .linkBtn{font-size:9px;padding:6px 8px}

  .homeMissionBlock .dailyCard{
    grid-template-columns:46px minmax(0,1fr) auto;
    min-height:0;
    padding:11px 10px;
    gap:8px;
  }
  .homeMissionBlock .dailyIcon{
    width:44px;height:44px;border-radius:14px;font-size:23px;
  }
  .homeMissionBlock .dailyMain b{font-size:12px}
  .homeMissionBlock .dailyMain span{font-size:8.5px}
  .homeMissionBlock .dailyCard .primaryBtn{
    grid-column:auto;
    min-width:0;
    padding:8px 10px;
    font-size:10px;
  }

  .homeResultsBlock .dailyAchievementCard{padding:10px}
  .homeResultsBlock .dailyAchievementSummary{
    grid-template-columns:86px minmax(0,1fr);
    gap:8px;
  }
  .homeResultsBlock .dailyAchievementSummary .scoreRing{
    width:78px;height:78px;
  }
  .homeResultsBlock .dailyAchievementMetrics{gap:5px}
  .homeResultsBlock .dailyAchievementMetrics>div{padding:8px 4px}
  .homeResultsBlock .dailyAchievementMetrics b{font-size:16px}
  .homeResultsBlock .dailyAchievementMetrics span{font-size:8px}
  .homeResultsBlock .achievementProgressHead{font-size:10px}
  .homeResultsBlock .achievementProgressHead span{font-size:8.5px}

  .homeLibrarySummary{margin-top:12px}
  .statsHomeBottom{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important}
  .statsHomeBottom>div{min-height:75px;padding:9px 3px!important}
  .homeStatIcon{font-size:16px!important}
  .statsHomeBottom b{font-size:18px!important}
  .statsHomeBottom span:not(.homeStatIcon){font-size:8.5px!important}
}

@media(max-width:390px){
  .homeMissionBlock .dailyCard{grid-template-columns:42px minmax(0,1fr)}
  .homeMissionBlock .dailyCard .primaryBtn{
    grid-column:2;
    justify-self:start;
  }
  .homeResultsBlock .dailyAchievementSummary{
    grid-template-columns:1fr;
  }
  .homeResultsBlock .dailyAchievementSummary .scoreRing{margin:auto}
}


/* ===== FIX133 · Mobile banner alignment + one-line result subtitle ===== */
@media(max-width:700px){
  .homeHeroUnified .welcomeDesktopBanner{
    width:100%!important;
    height:auto!important;
    aspect-ratio:auto!important;
    object-fit:contain!important;
    object-position:center center!important;
    background:#eaf8ef;
  }
  .homeHeroUnified{
    min-height:0!important;
    overflow:hidden!important;
  }
  .homeResultsBlock .homeSectionHint{
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    font-size:8.2px!important;
    letter-spacing:-.01em;
  }
}
@media(min-width:701px){
  .homeResultsBlock .homeSectionHint{white-space:nowrap!important}
}


/* ===== FIX135 · Generic YouTube viewer ===== */
.viewerVideoShell{display:grid;gap:10px;max-width:1100px;margin:0 auto}
.viewerVideoFrame{position:relative;width:100%;aspect-ratio:16/9;border-radius:18px;overflow:hidden;background:#06130d;box-shadow:0 12px 32px rgba(4,34,20,.16)}
.viewerVideoFrame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.viewerVideoHint{padding:9px 12px;border-radius:12px;background:#f1f8f4;color:#45685a;font-size:.88rem}
@media(max-width:700px){
  .viewerVideoFrame{border-radius:13px}
  .viewerVideoHint{font-size:.78rem}
}


/* ===== FIX136 · Video bài học + chọn Phần luyện bài ===== */
.videoLessonBtn{background:linear-gradient(180deg,#fff,#f7fbff)!important}
.lessonPartChooser{max-width:860px;margin:16px auto;padding:18px;border:1px solid #d9e9e0;border-radius:22px;background:#fff;box-shadow:0 10px 28px rgba(20,78,54,.08)}
.lessonPartChooserHead{text-align:center;margin-bottom:15px}
.lessonPartChooserHead>span{display:inline-block;padding:5px 10px;border-radius:999px;background:#eaf7ef;color:#0d7546;font-size:11px;font-weight:900}
.lessonPartChooserHead h2{margin:8px 0 4px;color:#155f3e;font-size:24px}
.lessonPartChooserHead p{margin:0;color:#6a7a72}
.lessonPartGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.lessonPartBtn{display:grid;gap:4px;text-align:left;padding:14px;border:1px solid #dce9e2;border-radius:15px;background:linear-gradient(180deg,#fff,#f8fcfa);cursor:pointer;font:inherit}
.lessonPartBtn:hover{border-color:#6eb28c;box-shadow:0 7px 18px rgba(16,112,65,.09)}
.lessonPartBtn span{font-size:9px;font-weight:900;color:#2d8a5d;letter-spacing:.06em}
.lessonPartBtn b{font-size:16px;color:#185e3f}
.lessonPartBtn small{font-size:10px;color:#748178}
.lessonPartAll{background:linear-gradient(135deg,#eaf9f0,#f8fdf9);border-color:#99caae}
@media(max-width:640px){
  .lessonPartChooser{margin:10px 0;padding:12px;border-radius:17px}
  .lessonPartGrid{grid-template-columns:1fr}
  .lessonPartChooserHead h2{font-size:20px}
}


/* ===== FIX137 · Parts detection for Video + Practice ===== */
.videoPartChooser{max-width:900px}
.videoPartChooser .lessonPartGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:720px){
  .videoPartChooser .lessonPartGrid{grid-template-columns:1fr}
}

/* ===== WINUI 3.0 CUSTOM VIDEO PLAYER & CHECKPOINT MARKERS ===== */
.win-player-wrapper {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  background: #000;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 16/9;
  margin: 15px 0;
  box-shadow: 0 8px 25px rgba(0,0,0,0.3);
  border: 1px solid rgba(255,255,255,0.1);
  user-select: none;
}
.win-player-wrapper iframe {
  pointer-events: none;
}
.win-player-click-overlay {
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  z-index: 2;
  cursor: pointer;
}
.win-player-controls {
  position: absolute;
  bottom: 12px;
  left: 12px;
  right: 12px;
  background: rgba(15, 23, 42, 0.85);
  backdrop-filter: blur(20px) saturate(140%);
  -webkit-backdrop-filter: blur(20px) saturate(140%);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 10px;
  padding: 10px 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  opacity: 0;
  transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  color: #fff;
  z-index: 10;
}
.win-player-wrapper:hover .win-player-controls,
.win-player-wrapper.force-show-controls .win-player-controls {
  opacity: 1;
}
.win-progress-container {
  width: 100%;
  height: 6px;
  background: rgba(255, 255, 255, 0.25);
  border-radius: 4px;
  cursor: pointer;
  position: relative;
  transition: height 0.15s;
}
.win-progress-container:hover {
  height: 8px;
}
.win-progress-filled {
  height: 100%;
  background: linear-gradient(90deg, #0284c7, #38bdf8);
  border-radius: 4px;
  width: 0%;
  pointer-events: none;
}
.win-progress-thumb {
  width: 14px;
  height: 14px;
  background: #fff;
  border-radius: 50%;
  position: absolute;
  top: 50%;
  left: 0%;
  transform: translate(-50%, -50%) scale(0);
  transition: transform 0.15s;
  box-shadow: 0 0 6px rgba(0,0,0,0.5);
  pointer-events: none;
}
.win-progress-container:hover .win-progress-thumb {
  transform: translate(-50%, -50%) scale(1);
}
.win-checkpoint-tick {
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 6px;
  background: #10b981;
  border-radius: 3px;
  box-shadow: 0 0 8px #10b981;
  z-index: 5;
  cursor: pointer;
  transition: transform 0.15s, background 0.15s;
}
.win-checkpoint-tick:hover {
  transform: scaleY(1.5) scaleX(1.3);
  background: #34d399;
}
.win-checkpoint-tick::after {
  content: attr(data-time);
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  background: #0f172a;
  color: #10b981;
  font-size: 11px;
  font-family: monospace;
  font-weight: 700;
  padding: 3px 7px;
  border-radius: 5px;
  border: 1px solid #10b981;
  white-space: nowrap;
  display: none;
  pointer-events: none;
  box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.win-checkpoint-tick:hover::after {
  display: block;
}
.win-controls-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.win-player-btn {
  background: none;
  border: none;
  color: #fff;
  font-size: 16px;
  cursor: pointer;
  transition: background 0.2s, transform 0.1s;
  width: 34px;
  height: 34px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.win-player-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}
.win-player-btn:active {
  transform: scale(0.95);
}
.win-time-display {
  font-size: 13px;
  font-weight: 600;
  font-family: monospace;
  opacity: 0.9;
  letter-spacing: 0.5px;
}

/* FIX168: Sau khi nộp Luyện đề, đóng bảng điểm sẽ quay lại đúng đề vừa làm. */
#mockQuiz.submittedExamReview .examQuestion input:disabled,
#mockQuiz.submittedExamReview .examQuestion textarea:disabled,
#mockQuiz.submittedExamReview .examQuestion button:disabled {
  opacity: 1;
}
#mockQuiz.submittedExamReview .examMcqOption:has(input:disabled),
#mockQuiz.submittedExamReview .tfChoice:disabled,
#mockQuiz.submittedExamReview .examBookmark:disabled {
  cursor: default;
}
#mockQuiz.submittedExamReview .examModeBtn,
#mockQuiz.submittedExamReview .examStepBtn,
#mockQuiz.submittedExamReview .examDotBtn {
  cursor: pointer;
}
.submittedExamFooter {
  display: block !important;
  padding: 18px 0 8px !important;
  border-top: 1px solid rgba(15, 23, 42, .10);
}
.submittedExamSummary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(15, 23, 42, .045);
}
.submittedExamSummary b { font-size: 14px; }
.submittedExamSummary span { color: var(--text2); font-size: 13px; font-weight: 700; }
.submittedExamActions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  width: 100%;
}
.submittedExamAction {
  min-height: 46px;
  border: 0;
  border-radius: 10px;
  padding: 11px 14px;
  color: #fff;
  font-size: 14px;
  font-weight: 800;
  box-shadow: 0 5px 14px rgba(15, 23, 42, .12);
  cursor: pointer;
  transition: transform .12s ease, filter .12s ease;
}
.submittedExamAction:hover { filter: brightness(.96); transform: translateY(-1px); }
.submittedExamAction:active { transform: translateY(0); }
.submittedExamAction.retry { background: #f57c00; }
.submittedExamAction.answers { background: #2e9f43; }
.submittedExamAction.details { background: #2563c9; }
.submittedAnswerPanel {
  margin-top: 16px;
  scroll-margin-top: 88px;
}
@media (max-width: 680px) {
  .submittedExamSummary { align-items: flex-start; flex-direction: column; }
  .submittedExamActions { grid-template-columns: 1fr; }
  .submittedExamAction { width: 100%; }
}


/* FIX169 — scoring snapshot + exam controls never overlap */
.examTop{padding-right:0!important}
.examTimerDockWrap{height:auto!important;min-height:0!important;display:flex!important;justify-content:flex-end!important;align-items:center!important;margin:6px 0 10px!important;position:relative!important;z-index:32!important}
.examTimerDock{position:static!important;top:auto!important;right:auto!important;left:auto!important;transform:none!important;min-width:146px!important;min-height:44px!important;font-size:19px!important;padding:9px 14px!important;margin:0!important}
.examSubmit{position:relative!important;bottom:auto!important;z-index:20!important;margin:18px 0 104px!important}
.examDotNavFixed{z-index:80!important}
.examSlides{padding-bottom:96px!important}
@media(max-width:760px){
  .examTimerDockWrap{justify-content:center!important;margin:6px 0 9px!important}
  .examTimerDock{min-width:140px!important;min-height:42px!important;font-size:18px!important;padding:8px 12px!important}
  .examSubmit{margin-bottom:176px!important}
  .examSlides{padding-bottom:164px!important}
}
@media(max-width:520px){
  .examTimerDock{min-width:132px!important;min-height:40px!important;font-size:17px!important}
  .examSubmit{margin-bottom:170px!important}
  .examSlides{padding-bottom:158px!important}
}

/* FIX173 — mobile exam dock: question-number strip and submit controls must never overlap */
@media(max-width:760px){
  body.examSessionActive .examSlides{
    padding-bottom:calc(154px + env(safe-area-inset-bottom))!important;
    scroll-padding-bottom:calc(160px + env(safe-area-inset-bottom))!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed{
    position:fixed!important;
    left:50%!important;
    right:auto!important;
    top:auto!important;
    bottom:calc(76px + env(safe-area-inset-bottom))!important;
    transform:translateX(-50%)!important;
    width:calc(100vw - 16px)!important;
    min-height:46px!important;
    max-height:50px!important;
    margin:0!important;
    padding:6px 5px!important;
    z-index:1210!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit{
    position:fixed!important;
    left:50%!important;
    right:auto!important;
    top:auto!important;
    bottom:calc(8px + env(safe-area-inset-bottom))!important;
    transform:translateX(-50%)!important;
    width:calc(100vw - 16px)!important;
    min-height:58px!important;
    max-height:64px!important;
    margin:0!important;
    padding:7px 8px!important;
    z-index:1200!important;
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr)!important;
    align-items:center!important;
    gap:8px!important;
    overflow:hidden!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examSubmitMeta{
    margin:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:0!important;
    min-width:0!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examSubmitHint{
    display:none!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examStopBtn{
    min-height:42px!important;
    max-height:46px!important;
    padding:8px 10px!important;
    margin:0!important;
    white-space:nowrap!important;
    font-size:10px!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit > .primaryBtn{
    width:100%!important;
    min-width:0!important;
    min-height:44px!important;
    max-height:48px!important;
    margin:0!important;
    padding:9px 12px!important;
    font-size:13px!important;
  }
}
@media(max-width:420px){
  body.examSessionActive .examSlides{padding-bottom:calc(148px + env(safe-area-inset-bottom))!important}
  body.examSessionActive .examSlides + .examDotNavFixed{
    bottom:calc(72px + env(safe-area-inset-bottom))!important;
    width:calc(100vw - 12px)!important;
    min-height:44px!important;
    max-height:48px!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit{
    width:calc(100vw - 12px)!important;
    bottom:calc(6px + env(safe-area-inset-bottom))!important;
    min-height:56px!important;
    max-height:62px!important;
    gap:5px!important;
    padding:6px!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit .examStopBtn{
    padding:7px 8px!important;
    font-size:9px!important;
  }
  body.examSessionActive .examSlides + .examDotNavFixed + .examSubmit > .primaryBtn{
    padding:8px 9px!important;
    font-size:11px!important;
  }
}

/* FIX173 — rich question media: preserve natural size, cap oversized images, keep wide tables readable */
.questionRich,
.examOption>span,
.tfText,
.previewOption>span{
  min-width:0;
}
.questionRich img,
.examOption img,
.option img,
.previewOption img,
.teacherAttemptQuestion img,
.examRichImage{
  display:block!important;
  width:auto;
  height:auto!important;
  max-width:min(100%,640px)!important;
  max-height:min(72vh,620px)!important;
  object-fit:contain!important;
  margin:10px auto!important;
  vertical-align:middle;
}
/* Old imports had width:100%; do not upscale those figures. New imports with an explicit DOCX size keep that size. */
.questionRich img.docx-image:not([data-docx-sized]),
.examOption img.docx-image:not([data-docx-sized]),
.previewOption img.docx-image:not([data-docx-sized]){
  width:auto!important;
}
.examTableScroll{
  display:block;
  width:100%;
  max-width:100%;
  margin:10px 0 12px;
  overflow-x:auto;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  scrollbar-width:thin;
}
.examTableScroll>.examRichTable,
.questionRich table.examRichTable,
.examOption table.examRichTable,
.option table.examRichTable,
.previewOption table.examRichTable,
.teacherAttemptQuestion table.examRichTable{
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  margin:0 auto!important;
  border-collapse:collapse!important;
  table-layout:auto!important;
  background:#fff;
}
.examRichTable th,
.examRichTable td{
  box-sizing:border-box;
  vertical-align:top;
  white-space:normal;
  overflow-wrap:break-word;
  word-break:normal;
}
@media(max-width:700px){
  .questionRich img,
  .examOption img,
  .option img,
  .previewOption img,
  .teacherAttemptQuestion img,
  .examRichImage{
    max-width:100%!important;
    max-height:min(66vh,520px)!important;
    margin:8px auto!important;
  }
  .examTableScroll{margin:8px 0 10px}
  .examRichTable{font-size:.92em!important}
  .examRichTable th,.examRichTable td{padding:5px 6px!important}
}

/* ===== FIX174 · Daily PPCT personalization + restored video answer feedback ===== */
.dailyWeekScope b{display:block}
.dailyWeekScope span{line-height:1.45}
.videoQuestionFeedback:empty{display:none}
.videoCorrectFeedback,.videoWrongFeedback{
  position:relative;
  display:grid;
  gap:4px;
  margin:10px 0 2px;
  padding:12px 14px;
  border-radius:13px;
  border:1px solid transparent;
  font-weight:700;
  animation:videoFeedbackPop .18s ease-out;
}
.videoCorrectFeedback{background:#EAF8EF;color:#0B6B3C;border-color:#9DD2B1}
.videoWrongFeedback{background:#FFF0EE;color:#A13A2E;border-color:#EDB5AE}
.videoCorrectFeedback>b,.videoWrongFeedback>b{font-size:1rem;font-weight:950}
.videoWrongFeedback>span{font-weight:750}
.videoCorrectFeedback>p{margin:3px 0 0;font-weight:600;line-height:1.45}
.videoCorrectFeedback>small,.videoWrongFeedback>small{font-weight:600;opacity:.82}
@keyframes videoFeedbackPop{from{opacity:0;transform:translateY(4px) scale(.985)}to{opacity:1;transform:none}}
@media(max-width:620px){
  .videoCorrectFeedback,.videoWrongFeedback{padding:10px 11px;margin-top:8px}
  .videoCorrectFeedback>b,.videoWrongFeedback>b{font-size:.94rem}
}

/* ===== FIX175 · Cá nhân hóa Luyện tập + khóa lịch sử theo ngưỡng + điều hướng cuối mục ===== */
.studentPracticeGradeLocked select:disabled{
  opacity:1!important;
  color:#0b513d!important;
  -webkit-text-fill-color:#0b513d!important;
  background:#eef9f3!important;
  border-color:#b8ddc8!important;
  cursor:not-allowed!important;
  font-weight:800!important;
}
.historyAttemptLocked{
  cursor:not-allowed!important;
  opacity:.82!important;
  background:#f8fafb!important;
  border-color:#dde5e1!important;
}
.historyAttemptLocked .attemptScore small:last-child{
  color:#8a5a00!important;
  font-weight:800!important;
}
.attemptHistoryModalRow.historyAttemptLocked{
  background:#f8fafb!important;
}
.attemptHistoryModalRow.historyAttemptLocked button:disabled{
  opacity:.78!important;
  cursor:not-allowed!important;
}
.sectionInlineNav{display:none}
@media(min-width:761px){
  /* FIX176 · thanh điều hướng cuối Luyện tập/Luyện đề đồng bộ 1:1 với thanh chính desktop. */
  .sectionInlineNav{
    display:grid;
    width:calc(100% + 24px);
    max-width:760px;
    grid-template-columns:repeat(6,minmax(0,1fr));
    column-gap:4px;
    margin:28px -12px 12px;
    padding:8px 10px;
    border:1px solid var(--green-line,#D5E9DC);
    border-radius:22px;
    background:rgba(255,255,255,.98);
    box-shadow:0 10px 26px rgba(11,90,53,.07);
    overflow:hidden;
  }
  .sectionInlineNav .navItem{
    border:0!important;
    background:transparent!important;
    color:#7d8795!important;
    width:100%!important;
    min-width:0!important;
    min-height:72px!important;
    padding:7px 3px!important;
    border-radius:18px!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:4px!important;
    cursor:pointer!important;
    font:inherit!important;
    box-shadow:none!important;
    transform:none!important;
  }
  .sectionInlineNav .navItem span{
    width:52px!important;
    height:38px!important;
    border-radius:22px!important;
    display:grid!important;
    place-items:center!important;
    font-size:23px!important;
    line-height:1!important;
    background:transparent!important;
    color:inherit!important;
  }
  .sectionInlineNav .navItem small{
    display:block!important;
    width:auto!important;
    margin:0!important;
    font-size:12px!important;
    line-height:1.2!important;
    font-weight:900!important;
    letter-spacing:0!important;
    white-space:nowrap!important;
    color:inherit!important;
    overflow:visible!important;
  }
  .sectionInlineNav .navItem.active{color:#0B7A45!important}
  .sectionInlineNav .navItem.active span{background:var(--green-soft,#EAF7F0)!important;color:#0B7A45!important}
  body.examSessionActive .sectionInlineNav{display:grid!important}
}

/* FIX176: HS được chọn khối khác sau khi hệ thống chọn mặc định theo lớp. */
#practiceTopicGrade:disabled{opacity:1}
.studentPracticeGradeLocked{opacity:1}


/* ===== FIX177 · Horizontal desktop section navigation, isolated from legacy nav rules ===== */
@media(min-width:761px){
  #practice>.sectionBottomDesktopNav,#mock>.sectionBottomDesktopNav{
    display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:stretch!important;justify-content:space-between!important;
    width:min(760px,100%)!important;max-width:760px!important;margin:28px auto 12px!important;padding:8px 10px!important;gap:4px!important;
    border:1px solid var(--green-line,#D5E9DC)!important;border-radius:22px!important;background:rgba(255,255,255,.98)!important;
    box-shadow:0 10px 26px rgba(11,90,53,.07)!important;overflow:hidden!important;box-sizing:border-box!important;
  }
  #practice>.sectionBottomDesktopNav>.navItem,#mock>.sectionBottomDesktopNav>.navItem{
    flex:1 1 0!important;width:auto!important;min-width:0!important;max-width:none!important;min-height:72px!important;margin:0!important;padding:7px 3px!important;
    display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:4px!important;
    border:0!important;border-radius:18px!important;background:transparent!important;box-shadow:none!important;transform:none!important;
  }
}
@media(max-width:760px){#practice>.sectionBottomDesktopNav,#mock>.sectionBottomDesktopNav{display:none!important}}

/* FIX182 — honor roll, scoped to avoid changing authentication/catalog layouts. */
.honorExercise{margin:12px 0;border:1px solid #ecd5a9;border-radius:14px;background:#fffdf6;color:#25334a}
.honorExercise>summary{padding:12px 16px;cursor:pointer;font-weight:800;list-style:revert}
.honorExercise>.honorMount{padding:0 12px 12px}
.honorAfterSubmit{max-width:860px;margin:16px auto;padding-bottom:30px}
.honorBoard{border:1px solid #e3e7ef;border-radius:20px;background:white;overflow:hidden;color:#25334a;box-shadow:0 8px 30px #1521390b}
.honorBoard>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px;background:linear-gradient(115deg,#ffbb09,#ff9000);color:#13213c}
.honorBoard h3{margin:0;font-size:20px;font-weight:900;line-height:1.3}
.honorBoard header label{display:flex;align-items:center;gap:6px;border-radius:30px;background:#fff5e6;padding:6px 10px;font-size:13px;font-weight:800;white-space:nowrap}
.honorBoard select{width:auto;min-width:55px;margin:0;padding:5px;border-radius:18px;background:#fff;color:#7e3814;border:1px solid #f0d5ad}
.honorBoardBody{padding:16px}.honorTitle{font-weight:800;margin:0 0 12px;overflow-wrap:anywhere}
.honorToolbar{display:flex;gap:7px;flex-wrap:wrap}.honorToolbar button{width:auto;padding:8px 12px;border-radius:10px;border:1px solid #dce3ef;background:#f6f8fc;color:#334155;font-weight:700;cursor:pointer}.honorToolbar .active{background:#172c4d;color:white;border-color:#172c4d}.honorToolbar button:disabled{opacity:.5;cursor:default}
.honorRule{font-size:12px;line-height:1.6;color:#64748b;margin:12px 0}
.honorPodium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.honorPodiumCard{min-width:0;border:1px solid #ead6ad;border-radius:16px;padding:13px 8px;text-align:center;background:linear-gradient(#fff,#fff7e3);display:flex;flex-direction:column;align-items:center;gap:7px;overflow-wrap:anywhere}
.honorPodiumCard.place2{background:linear-gradient(#fff,#e8eef6);border-color:#d3deec}.honorPodiumCard.place3{background:linear-gradient(#fff,#ffddb7);border-color:#ffd0a0}
.honorPodiumCard>span{font-size:12px;font-weight:900;background:#ffffffb8;border-radius:20px;padding:6px;color:#67768b}.honorPodiumCard>b{font-size:15px;line-height:1.3}.honorPodiumCard>small{font-size:12px;color:#64748b}.honorPodiumCard>div{font-size:12px;font-weight:700;line-height:1.5}.honorPodiumCard strong{color:#e43c36;font-size:14px}
.honorList{padding:0;margin:14px 0;list-style:none;font-size:14px;line-height:1.6}.honorList li{padding:7px 8px;border-bottom:1px solid #edf0f5;overflow-wrap:anywhere}.honorList span{color:#69788f}.honorSelf{box-shadow:inset 0 0 0 2px #21836c;background-color:#ecfdf5}.honorBoard em{font-size:11px;background:#d8f5e9;color:#156447;border-radius:9px;padding:2px 6px;font-style:normal}
.honorMyRank{padding:13px;border-radius:12px;background:#eff7ff;font-size:13px;line-height:1.6}.honorLoading,.honorEmpty{padding:20px;text-align:center;color:#65748b}
.honorRanks{margin:18px 0;padding:16px;border:1px solid #e4d7b9;background:#fffbf1;border-radius:16px;text-align:left}.honorRanks h3{margin:0 0 12px;font-size:17px}.honorRankGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.honorRankGrid>div{display:flex;flex-direction:column;gap:5px;padding:12px;background:white;border-radius:12px}.honorRankGrid strong{font-size:22px;color:#975b13}.honorRanks small{font-size:12px;line-height:1.5;color:#64748b}.honorAttemptRank{font-size:13px;line-height:1.6}
@media(max-width:480px){.honorBoard>header{padding:16px 12px}.honorBoard h3{font-size:17px}.honorBoardBody{padding:10px}.honorPodium{gap:6px}.honorPodiumCard{padding:10px 5px}.honorPodiumCard>b{font-size:13px}.honorPodiumCard>div{font-size:11px}.honorList{font-size:13px}.honorRankGrid>div{padding:10px}.honorRanks{padding:12px}}

/* FIX183: BioLearn footer */
footer.biolearnFooter{padding:24px 16px;text-align:center;line-height:1.7;overflow-wrap:break-word}
footer.biolearnFooter strong{font-weight:700}

/* FIX184: result opens above an already-rendered honor roll. */
dialog.honorResultDialog{width:min(860px,calc(100% - 24px));max-width:860px;max-height:88vh;max-height:88dvh;margin:auto;padding:0;border:0;border-radius:20px;background:#fff;box-shadow:0 24px 90px #102b3555;overflow:auto;overscroll-behavior:contain;color:#17382d}
dialog.honorResultDialog:not([open]){display:none!important}
dialog.honorResultDialog::backdrop{background:rgba(12,32,37,.55)}
dialog.honorResultDialog .resultCard{margin:0;width:100%;box-sizing:border-box;border:0;box-shadow:none}
dialog.honorResultDialog .resultCloseBtn{z-index:2;min-width:42px;min-height:42px;cursor:pointer}
dialog.honorDialogFallback{position:fixed;inset:5vh 0 auto;z-index:100000;outline:100vmax solid #102b3577}
.honorAfterSubmit{scroll-margin-top:88px;padding-bottom:100px}
@media(max-width:480px){dialog.honorResultDialog{width:calc(100% - 16px);max-height:86dvh;border-radius:16px}dialog.honorResultDialog .resultCard{padding:24px 14px}dialog.honorResultDialog h2{padding-right:30px;overflow-wrap:anywhere}}

/* FIX185: option content can shrink and wrap inside small screens. */
.examOption.examMcqOption>span,.examOption.tf>.tfText,.reviewOption>span,.historyOption>span,.gameAnswer>span{min-width:0;overflow-wrap:anywhere;}
.examOption sup,.examOption sub,.reviewOption sup,.reviewOption sub,.historyOption sup,.historyOption sub{font-size:.75em;line-height:0;position:relative;vertical-align:baseline;}
.examOption sup,.reviewOption sup,.historyOption sup{top:-.5em;}
.examOption sub,.reviewOption sub,.historyOption sub{bottom:-.2em;}

/* FIX189: compact, scoped lesson/video part pickers. */
.compactPartChooser{box-sizing:border-box;width:100%;max-width:760px;margin:12px auto;padding:18px;border:1px solid #d8e9e1;border-radius:20px;background:#fff;box-shadow:0 6px 22px rgba(16,74,46,.05);text-align:left;}
.compactPartChooser .partChooserHeading{margin:0 0 14px;text-align:left;}
.compactPartChooser .partChooserEyebrow{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#23724f;font-size:11px;font-weight:800;letter-spacing:.06em;}
.compactPartChooser .partChooserEyebrow>span{padding:4px 9px;border-radius:20px;background:#edf6f1;white-space:nowrap;font-size:11px;letter-spacing:0;}
.compactPartChooser h2{margin:7px 0 4px;font-size:21px;line-height:1.4;color:#174f38;overflow-wrap:anywhere;}
.compactPartChooser .partChooserHeading p{margin:0;color:#687d73;font-size:13px;line-height:1.5;}
.compactPartChooser .compactLessonParts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.compactPartChooser .partChoiceTile,.compactPartChooser .partChoiceTotal,.compactPartChooser .partChoiceVideo{box-sizing:border-box;display:flex;align-items:center;gap:12px;min-width:0;width:100%;margin:0;padding:12px 14px;border:1px solid #d9e9e1;border-radius:13px;background:#f8fcfa;color:#195c3e;text-align:left;cursor:pointer;font:inherit;}
.compactPartChooser .partChoiceTile{min-height:72px;}
.compactPartChooser .partChoiceText{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0;overflow-wrap:anywhere;}
.compactPartChooser .partChoiceText>b{font-size:16px;line-height:1.4;}
.compactPartChooser .partChoiceText>small{font-size:12px;color:#667d71;line-height:1.4;}
.compactPartChooser .partChoiceArrow{flex:none;font-size:24px;line-height:1;font-weight:400;}
.compactPartChooser .partChoiceTotal{min-height:72px;margin-bottom:12px;background:#117c4c;color:#fff;border-color:#117c4c;}
.compactPartChooser .partChoiceTotal small{color:#e4f3eb;}
.compactPartChooser .partChoiceBadge,.compactPartChooser .partVideoPlay{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:rgba(255,255,255,.15);font-size:25px;}
.compactPartChooser .compactPartsBack{margin-top:14px;min-height:44px;padding:8px 12px;font-size:13px;}
.compactPartChooser .compactVideoParts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.compactPartChooser .partChoiceVideo{min-height:84px;align-items:flex-start;}
.compactPartChooser .partChoiceVideo>.partChoiceArrow{align-self:center;}
.compactPartChooser .partVideoPlay{background:#e7f3ed;font-size:16px;color:#13804e;}
.compactPartChooser .partVideoTitle{font-size:13px;color:#345848;line-height:1.5;}
.compactPartChooser button:focus-visible{outline:3px solid #e7aa30;outline-offset:3px;}
@media(hover:hover){.compactPartChooser .partChoiceTile:hover,.compactPartChooser .partChoiceVideo:hover{background:#eef8f2;border-color:#78b99b;}.compactPartChooser .partChoiceTotal:hover{background:#096c3f;}}
@media(max-width:600px){.compactPartChooser{padding:14px;margin:8px auto;border-radius:16px;}.compactPartChooser h2{font-size:18px;}.compactPartChooser .compactVideoParts{grid-template-columns:minmax(0,1fr);}.compactPartChooser .compactLessonParts{gap:8px;}.compactPartChooser .partChoiceTile{min-height:68px;padding:10px 12px;}.compactPartChooser .partChoiceTotal{min-height:68px;}.compactPartChooser .partChoiceVideo{padding:12px;}.compactPartChooser .partChoiceText>b{font-size:15px;}}

/* FIX190: keep choice and correct-answer labels readable on narrow screens. */
.gradedTFOption>em,.gradedTFOption>strong{white-space:normal;line-height:1.4;font-size:12px;}
@media(max-width:600px){.historyOption.gradedTFOption{display:grid;grid-template-columns:22px minmax(0,1fr);gap:7px 8px;align-items:start;}.historyOption.gradedTFOption>em,.historyOption.gradedTFOption>strong{grid-column:2;justify-self:start;margin:0;}}

/* FIX191: choices stay inside the current lesson card. */
.lessonInlinePanel{grid-column:1/-1;min-width:0;margin:10px 0 2px;padding:12px;border:1px solid #d6e9df;border-radius:14px;background:#f6fbf8;text-align:left}
.lessonInlinePanel .compactPartChooser{max-width:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent}
.lessonInlinePanel .partChooserHeading,.lessonInlinePanel .compactPartsBack{display:none}
.lessonInlinePanel .compactLessonParts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.lessonInlinePanel .partChoiceTotal{min-height:48px;margin:0 0 8px;padding:10px 12px;border-radius:10px}
.lessonInlinePanel .partChoiceTotal small,.lessonInlinePanel .partChoiceTile small,.lessonInlinePanel .partChoiceBadge{display:none}
.lessonInlinePanel .partChoiceTile{min-height:46px;padding:10px 12px;border-radius:10px;background:#fff}
.lessonInlinePanel .partChoiceText>b{font-size:14px;line-height:1.4}
.lessonInlinePanel .compactVideoParts{grid-template-columns:minmax(0,1fr);gap:8px}
.lessonInlinePanel .partChoiceVideo{min-height:54px;padding:10px;border-radius:10px;background:#fff;gap:9px}
.lessonInlinePanel .partVideoPlay{width:30px;height:30px;border-radius:9px;font-size:12px}
.lessonInlinePanel .partVideoTitle{font-size:12px;overflow-wrap:anywhere}
.lessonInlinePanel .partChoiceText>small{font-size:11px}
.lessonInlinePanel .inlineLessonStatus{margin:0;font-size:13px;line-height:1.5}
.lessonInlinePanel .inlineLessonStart{width:100%;min-height:46px;border:0;border-radius:10px;padding:10px 12px;background:#117c4c;color:#fff;font-weight:700;text-align:left}
.lessonActionBtn[aria-expanded="true"]{background:#e4f4eb;border-color:#178354;color:#11613d}

/* FIX194: a compact, readable lesson list after selecting a class. */
#lessonList{display:flex;flex-direction:column;gap:7px}
#lessonList .compactLessonRow{padding:0;margin:0;min-height:0;border:1px solid #dbe9e2;border-radius:12px;background:#fff;box-shadow:none;overflow:hidden}
#lessonList .compactLessonRow .lessonOpenBtn{display:flex;align-items:center;gap:11px;min-height:56px;width:100%;padding:11px 13px;margin:0;border:0;border-radius:0;background:transparent;text-align:left}
#lessonList .lessonRowIcon{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;font-size:23px;line-height:1;background:#edf7f1;border-radius:9px}
#lessonList .lessonRowTitle{flex:1;min-width:0;margin:0;padding:0;font-size:15px;line-height:1.45;font-weight:650;color:#145b3e;overflow-wrap:anywhere}
#lessonList .lessonRowChevron{flex:0 0 16px;color:#638371;font-size:19px;line-height:1;transition:transform .15s}
#lessonList .is-open .lessonRowChevron{transform:rotate(180deg)}
#lessonList .is-open .lessonOpenBtn{background:#f1f9f4}
#lessonList .compactLessonRow .lessonExpandable{padding:10px 12px 12px;border-top:1px solid #e5eee9}
#lessonList .lessonOpenBtn:focus-visible{outline:2px solid #18784d;outline-offset:-3px}
@media(max-width:600px){
 #study:has(#studyLessonView:not(.hiddenAuth))>.sectionHeading{display:none}
 #studyLessonView .studyBackRow{gap:8px;align-items:center;margin:0 0 10px;flex-wrap:wrap}
 #studyLessonView .studyBackRow>b{font-size:14px}
 #studyLessonView .studyBackRow .ghostBtn{padding:8px 10px;min-height:40px;font-size:12px}
 #studyLessonView .studyToolbar{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:6px;margin-bottom:12px}
 #studyLessonView .studyToolbar>*{min-width:0;width:auto;padding:9px 8px;font-size:12px}
 #lessonList{gap:6px}
 #lessonList .compactLessonRow .lessonOpenBtn{min-height:54px;gap:9px;padding:10px}
 #lessonList .lessonRowTitle{font-size:14px;line-height:1.45}
 #lessonList .lessonRowIcon{flex-basis:29px;width:29px;height:29px;font-size:21px}
}

/* FIX195: role correction beside the login message. */
#authRoleSwitch{width:100%;min-height:44px;margin:8px 0;color:#12633f;border:1px solid #93c7a9;background:#eff9f3;white-space:normal}
