:root {
  --ink: #18182b;
  --muted: #6f7187;
  --line: #e7e7f1;
  --bg: #f7f7fb;
  --panel: #fff;
  --brand: #665cf6;
  --brand-dark: #4f46c9;
  --yellow: #ffd43b;
  --green: #2f9e44;
  --red: #e03131;
  --orange: #f08c00;
  --blue: #4f6ef7;
  --shadow: 0 16px 40px rgba(58, 46, 130, .09);
}

* { box-sizing: border-box; }
body {
  margin: 0;
  min-height: 100vh;
  color: var(--ink);
  background: var(--bg);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", Arial, sans-serif;
  letter-spacing: 0;
}
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
.sync-status{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap}.sync-status:hover{border-color:#c9c7fa;color:var(--brand-dark)}.sync-dot{width:8px;height:8px;border-radius:50%;background:#32a852;box-shadow:0 0 0 3px rgba(50,168,82,.12)}.sync-status[data-state="syncing"] .sync-dot{background:var(--brand);animation:syncPulse .8s ease-in-out infinite}.sync-status[data-state="error"]{border-color:#ffc9c9;color:var(--red);background:#fff5f5}.sync-status[data-state="error"] .sync-dot{background:var(--red)}@keyframes syncPulse{50%{opacity:.35;transform:scale(.75)}}
button[data-yj-busy="true"],
button[aria-busy="true"] {
  cursor: wait;
  opacity: .68;
  transform: none !important;
  pointer-events: none;
}
@media(max-width:680px){.account{gap:6px}.sync-status{width:36px;min-width:36px;padding:7px;justify-content:center}.sync-status #workspaceSyncText{display:none}.sync-dot{width:9px;height:9px}}

.app {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 248px minmax(0, 1fr);
}

.is-hidden { display: none !important; }

.login-screen {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 24px;
  background:
    radial-gradient(circle at 18% 10%, rgba(102,92,246,.18), transparent 34%),
    radial-gradient(circle at 86% 86%, rgba(89,147,255,.14), transparent 32%),
    var(--bg);
}

.login-card {
  width: min(440px, 100%);
  display: grid;
  gap: 14px;
  margin: auto 0;
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #fff;
  box-shadow: var(--shadow);
}

.login-card img {
  width: 210px;
  height: 70px;
  object-fit: contain;
  object-position: left center;
}

.login-card h1 {
  font-size: 26px;
}

.login-card p {
  margin: 0;
  color: var(--muted);
  line-height: 1.7;
  font-size: 14px;
}

.login-card label {
  display: grid;
  gap: 7px;
  color: #344054;
  font-size: 13px;
  font-weight: 900;
}

.login-error {
  min-height: 20px;
  color: var(--red);
  font-size: 13px;
}

.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 18px;
  border-right: 1px solid var(--line);
  background: #fff;
  overflow-y: auto;
}

.brand {
  display: block;
  padding: 10px 10px 18px;
  border-bottom: 1px solid var(--line);
  text-decoration: none;
  color: var(--ink);
}

.brand img {
  display: block;
  width: 172px;
  height: 56px;
  object-fit: contain;
  object-position: left center;
}

.brand span {
  display: block;
  margin-top: 6px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.menu {
  display: grid;
  gap: 14px;
  margin-top: 18px;
}

.menu-group {
  display: grid;
  gap: 6px;
}

.menu-group-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 0 10px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-align: left;
  cursor: pointer;
}

.menu-group-items {
  display: grid;
  gap: 6px;
}

.menu-group-arrow {
  display: none;
  color: var(--brand-dark);
  font-size: 18px;
  line-height: 1;
  transition: transform .18s ease;
}

.menu-item {
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: #3d4b5c;
  font-weight: 800;
  text-align: left;
}

.menu-item.active,
.menu-item:hover {
  border-color: rgba(34,184,207,.35);
  background: rgba(34,184,207,.1);
  color: #06697a;
}

.mobile-nav-toggle {
  display: none;
  min-height: 42px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  font-weight: 900;
}

.main {
  min-width: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  padding: 26px;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 20px;
}

.eyebrow {
  margin: 0 0 6px;
  color: var(--brand-dark);
  font-size: 13px;
  font-weight: 900;
}

.page-crumb {
  min-height: 18px;
  margin: 0 0 4px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

h1 {
  margin: 0;
  font-size: 30px;
  line-height: 1.2;
}

.account {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px 8px 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 8px 20px rgba(23,32,42,.04);
}

.account label { color: var(--muted); font-size: 13px; font-weight: 800; }
select, input, textarea {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
}
select, input { min-height: 38px; padding: 0 10px; }
textarea {
  width: 100%;
  min-height: 96px;
  padding: 12px;
  resize: vertical;
}

.view-stack {
  flex: 1 0 auto;
  min-width: 0;
}

.view {
  display: none;
  min-width: 0;
}

.view.active {
  display: block;
}

.simple-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  box-shadow: var(--shadow);
}

.simple-hero h2 {
  margin: 0 0 8px;
  font-size: 24px;
  line-height: 1.25;
}

.simple-hero p {
  margin: 0;
  color: var(--muted);
  line-height: 1.7;
}

.simple-hero p:not(.eyebrow),
.card-head p,
.page-detail-head p {
  display: none;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: flex-end;
}

.quick-task-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.task-card {
  display: grid;
  gap: 8px;
  min-height: 138px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  text-align: left;
  box-shadow: 0 8px 24px rgba(23,32,42,.05);
}

.task-card:hover {
  border-color: rgba(34,184,207,.45);
  transform: translateY(-1px);
}

.task-card b {
  align-self: end;
  color: var(--brand-dark);
}

.task-card.blue { border-top: 4px solid var(--blue); }
.task-card.green { border-top: 4px solid var(--green); }
.task-card.orange { border-top: 4px solid var(--orange); }

.teacher-task-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.teacher-task-row {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 10px;
  background: #fff;
  color: var(--ink);
  text-align: left;
}

.teacher-task-row:hover { background: #f8fbff; transform: translateY(-1px); }
.teacher-task-row.orange { border-left-color: var(--orange); }
.teacher-task-row.red { border-left-color: var(--red); }
.teacher-task-row.green { border-left-color: var(--green); }
.teacher-task-row > span:nth-child(2) { display: grid; gap: 4px; min-width: 0; }
.teacher-task-row small { color: var(--muted); line-height: 1.45; }
.teacher-task-row i { color: var(--brand-dark); font-style: normal; font-weight: 800; white-space: nowrap; }
.teacher-task-count { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: #eef6ff; color: var(--brand-dark); font-size: 18px; font-weight: 900; }
.teacher-task-row.orange .teacher-task-count { background: #fff4df; color: #b86b00; }
.teacher-task-row.red .teacher-task-count { background: #fff0f0; color: #d93025; }
.teacher-task-row.green .teacher-task-count { background: #eaf8ef; color: #16883e; }
.teacher-task-empty { display: grid; gap: 6px; grid-column: 1 / -1; padding: 24px; border-radius: 10px; background: #effaf3; color: #176b36; text-align: center; }

.feature-overview-head{display:flex;justify-content:space-between;gap:20px;margin-bottom:18px;padding:22px 24px;border-radius:22px;background:linear-gradient(125deg,#242360,#4d49c8 58%,#14849b);color:#fff;box-shadow:0 18px 42px rgba(43,44,112,.18)}
.feature-overview-head h2,.feature-overview-head p{margin:0}.feature-overview-head h2{margin:5px 0 8px}.feature-overview-head .page-crumb,.feature-overview-head p{color:#e6e9ff}
.feature-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.feature-status-card{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;min-height:165px;padding:20px;border:1px solid #dfe4f1;border-radius:20px;background:#fff;box-shadow:0 10px 28px rgba(45,54,96,.07)}
.feature-status-card h3{margin:10px 0 6px}.feature-status-card p,.feature-status-card small{display:block;margin:0;color:#667085;line-height:1.55}.feature-status-card small{margin-top:8px}.feature-state{display:inline-flex;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:800}.feature-status-card.ready .feature-state{background:#eaf8f0;color:#187a45}.feature-status-card.warning{border-color:#f0cf8d;background:#fffdf7}.feature-status-card.warning .feature-state{background:#fff1cf;color:#936000}.feature-status-card.locked{background:#f6f7fa}.feature-status-card.locked .feature-state{background:#e8ebf1;color:#697386}
.actionable-empty{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:20px;border:1px dashed #cbd3e5;border-radius:17px;background:#f8faff;color:#243047}.actionable-empty.compact{min-height:105px}.actionable-empty h3,.actionable-empty p{margin:0}.actionable-empty p{margin-top:5px;color:#687287;line-height:1.55}.actionable-empty-icon{display:grid;flex:0 0 38px;width:38px;height:38px;place-items:center;border-radius:50%;background:#fff0cf;color:#936000;font-weight:900}
@media(max-width:1100px){.feature-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.feature-status-grid{grid-template-columns:1fr}.feature-status-card{min-height:0;padding:16px}.feature-overview-head{padding:18px}.actionable-empty{align-items:flex-start;flex-wrap:wrap;padding:16px}.actionable-empty>div{flex:1 1 calc(100% - 56px)}}

.task-title {
  font-weight: 900;
  font-size: 16px;
}

.task-text {
  color: var(--muted);
  line-height: 1.55;
}

.menu-item { position: relative; }
.menu-unread-badge {
  display: inline-grid;
  place-items: center;
  min-width: 20px;
  height: 20px;
  margin-left: auto;
  padding: 0 6px;
  border-radius: 999px;
  background: #e03131;
  color: #fff;
  font-size: 11px;
  font-weight: 900;
  line-height: 1;
}
.message-item.is-unread { border-left: 4px solid var(--blue); background: #f7fbff; }
.message-item.is-read { opacity: .82; }
.unread-dot { display: inline-block; width: 9px; height: 9px; margin-right: 8px; border-radius: 50%; background: #e03131; box-shadow: 0 0 0 4px rgba(224,49,49,.1); }
.quality-dashboard { margin-top: 14px; }
.quality-dashboard .quality-metrics { margin-bottom: 14px; }
.quality-filterbar { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.quality-batch-actions { margin: 12px 0; }
.quality-table { min-width: 1120px; }
.quality-table td { vertical-align: top; }
.quality-issue { display: block; width: 100%; padding: 5px 8px; border-radius: 7px; background: #fff5f5; color: #b42318; font-size: 12px; line-height: 1.45; }
.quality-issue + .quality-issue { margin-top: 4px; }
@media (max-width: 900px) { .quality-filterbar { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .quality-filterbar { grid-template-columns: 1fr; } .quality-dashboard .card-body { padding: 12px; } }

.highlight-item {
  border-color: rgba(240,140,0,.35);
  background: #fff9ef;
}

.page-detail-head {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 14px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}

.page-detail-head h2 {
  margin: 0 0 4px;
  font-size: 22px;
}

.page-detail-head p {
  margin: 0;
  color: var(--muted);
}

.workflow-layout {
  display: grid;
  grid-template-columns: minmax(360px, .88fr) minmax(460px, 1.12fr);
  gap: 14px;
  align-items: start;
}

.workflow-layout.single {
  grid-template-columns: minmax(0, 1fr);
}

.workflow-sidebar,
.workflow-main,
.workflow-detail {
  min-width: 0;
}

.workflow-sidebar {
  display: grid;
  gap: 14px;
}

.workflow-main {
  display: grid;
  gap: 14px;
}

.workflow-detail {
  margin-top: 14px;
}

.workflow-list .card-body {
  max-height: 680px;
  overflow: auto;
  scrollbar-gutter: stable;
}

.workflow-list .item,
.workflow-list .question-row {
  scroll-margin: 16px;
}

.report-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.report-layout .card {
  min-width: 0;
}

.report-wide {
  grid-column: 1 / -1;
}

.grid {
  display: grid;
  gap: 14px;
}

.grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  box-shadow: 0 6px 18px rgba(23,32,42,.035);
  transition: border-color .15s ease, box-shadow .15s ease;
}

.card-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  padding: 18px 18px 12px;
  border-bottom: 1px solid var(--line);
}

.card-head h2,
.card-head h3 {
  margin: 0;
  font-size: 20px;
}

.card-head p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}

.card-body { padding: 18px; }

.card + .card,
article.card + article.card {
  margin-top: 14px;
}

.attendance-students {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  background: #fbfdfe;
}

.attendance-row {
  display: grid;
  grid-template-columns: minmax(90px, 1fr) 120px minmax(160px, 2fr);
  gap: 10px;
  align-items: center;
  padding: 8px 0;
  border-top: 1px solid var(--line);
}

.attendance-row:first-of-type {
  border-top: 0;
}

.metric {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}
.metric b { display: block; font-size: 28px; }
.metric span { display: block; margin-top: 5px; color: var(--muted); font-size: 13px; }

.language-overview { margin-bottom: 14px; }

.language-card {
  width: 100%;
  text-align: left;
}

.language-card b { font-size: 20px; }

.active-item {
  border-color: rgba(34,184,207,.55) !important;
  background: rgba(34,184,207,.08) !important;
}

.list { display: grid; gap: 10px; }
.item {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}

.item:hover {
  border-color: rgba(34,184,207,.34);
  background: #fbfeff;
}

.item-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.item h3 {
  margin: 0;
  font-size: 17px;
}

.item.compact {
  padding: 10px;
  box-shadow: none;
}

.flow-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.flow-card {
  display: grid;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}

.flow-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.flow-card p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}

.flow-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.flow-steps span {
  min-height: 24px;
  padding: 4px 8px;
  border-radius: 8px;
  background: #f6fafc;
  color: #425466;
  font-size: 12px;
  font-weight: 800;
}

.question-flow-shell {
  margin-bottom: 14px;
}

.question-flow-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.question-flow-card {
  display: grid;
  gap: 8px;
  min-height: 132px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  text-align: left;
}

.question-flow-card:hover {
  border-color: rgba(34,184,207,.45);
  background: rgba(34,184,207,.06);
}

.question-flow-card b {
  font-size: 24px;
}

.question-flow-card small {
  color: var(--muted);
  line-height: 1.55;
}

.builder-panel {
  display: grid;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
}

.builder-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.builder-head b {
  display: block;
  font-size: 16px;
}

.builder-head span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
}

.lesson-detail {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.course-learning-layout { display: grid; grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); gap: 16px; align-items: start; }
.lesson-outline { position: sticky; top: 12px; min-width: 0; }
.lesson-outline-title { margin: 0 0 8px; font-weight: 800; color: var(--muted); }
.lesson-outline .item { padding: 12px; }
.lesson-outline .active-item { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(91,91,214,.12); box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 12%, transparent); }
.material-viewer { display: grid; gap: 12px; min-width: 0; }
.material-toolbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.material-toolbar h3, .material-toolbar p { margin: 0; }
.material-toolbar p { margin-top: 4px; color: var(--muted); font-size: 13px; }
.lesson-notes { padding: 16px 18px; border-left: 4px solid var(--primary); border-radius: 8px; background: #f7f8ff; line-height: 1.8; white-space: pre-wrap; }
.lesson-notes h4 { margin: 0 0 8px; }
.material-placeholder { min-height: 220px; display: grid; place-content: center; gap: 8px; padding: 24px; text-align: center; color: var(--muted); border: 1px dashed var(--line); border-radius: 10px; background: #fafbff; }
.lesson-document-frame { display: block; width: 100%; height: min(72vh, 820px); min-height: 520px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.web-lesson-frame { height: max(72vh, 680px); min-height: 680px; }
.lesson-material-image { display: block; max-width: 100%; max-height: 72vh; margin: auto; object-fit: contain; border-radius: 8px; }

@media (max-width: 900px) {
  .course-learning-layout { grid-template-columns: 1fr; }
  .lesson-outline { position: static; }
  .lesson-document-frame { min-height: 440px; }
  .web-lesson-frame { height: 72vh; min-height: 520px; }
}

/* Stable, compact question-bank workspace. */
.question-taxonomy { margin-bottom: 18px; }
.question-taxonomy .card-body { padding: 18px 20px; }
.question-taxonomy .taxonomy-section { margin: 0; }
.question-taxonomy .taxonomy-section + .taxonomy-section { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.question-taxonomy .taxonomy-section h3 { margin: 0 0 10px; font-size: 15px; color: #3f4960; }
.question-taxonomy .taxonomy-grid { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; }
.question-taxonomy .taxonomy-grid.knowledge { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); max-height: 236px; overflow: auto; padding: 2px 4px 4px 2px; }
.question-taxonomy .taxonomy-chip { min-height: 58px; padding: 12px 14px; border-radius: 13px; }
.question-taxonomy .taxonomy-chip span { line-height: 1.35; }
.question-taxonomy-v2 .card-body{display:grid;gap:16px}.taxonomy-primary-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.question-taxonomy-v2 .taxonomy-primary-tabs .taxonomy-chip{min-height:76px;padding:16px;border-radius:16px;font-size:16px}.taxonomy-secondary{padding:15px;border:1px solid #e3e8f3;border-radius:16px;background:#f8faff}.taxonomy-secondary h3{margin:0 0 11px}.taxonomy-levels{display:grid;grid-template-columns:repeat(8,minmax(76px,1fr));gap:8px}.question-taxonomy-v2 .taxonomy-levels .taxonomy-chip{min-height:48px;padding:9px 11px}.taxonomy-stage-levels{grid-template-columns:repeat(3,minmax(150px,1fr))}.taxonomy-tag-select{width:min(100%,520px);min-height:46px;padding:0 13px;border:1px solid #dce3ef;border-radius:12px;background:#fff}.taxonomy-empty-guide{padding:16px;border:1px dashed #ccd5e5;border-radius:14px;color:#667085;background:#fafbfe}.friendly-web-editor{display:grid;gap:10px}.friendly-editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.friendly-editor-head b,.friendly-editor-head small{display:block}.friendly-editor-head small{margin-top:3px;color:#667085}.friendly-editor-frame,.friendly-editor-source{width:100%;min-height:620px;border:1px solid #dce3ef;border-radius:14px;background:#fff}.friendly-editor-source{padding:14px;background:#111827;color:#e5efff;font-family:Consolas,monospace}.scale-filterbar input[list]{background:#fff}
@media(max-width:1000px){.taxonomy-primary-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.taxonomy-levels{grid-template-columns:repeat(4,minmax(70px,1fr))}}
@media(max-width:600px){.taxonomy-primary-tabs{display:flex;overflow-x:auto;padding-bottom:4px;scroll-snap-type:x proximity}.question-taxonomy-v2 .taxonomy-primary-tabs .taxonomy-chip{flex:0 0 76%;min-height:64px;scroll-snap-align:start}.taxonomy-levels{grid-template-columns:repeat(4,minmax(0,1fr))}.question-taxonomy-v2 .taxonomy-levels .taxonomy-chip{min-width:0;min-height:44px}.taxonomy-stage-levels{grid-template-columns:1fr}.question-taxonomy-v2 .card-head p{font-size:12px}}
@media(max-width:700px){.friendly-editor-head{align-items:stretch;flex-direction:column}.friendly-editor-frame,.friendly-editor-source{min-height:70dvh}}
.question-bank-layout { display: grid; grid-template-columns: minmax(390px, .78fr) minmax(0, 1.22fr); gap: 18px; align-items: start; }
.question-bank-layout .workflow-sidebar { position: sticky; top: 12px; width: auto; min-width: 0; }
.question-bank-layout .workflow-main { min-width: 0; }
.question-bank-layout .scale-filterbar { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 14px; border-radius: 14px; background: #f7f8fc; }
.question-bank-layout .scale-filterbar label.wide { grid-column: 1 / -1; }
.question-bank-layout .question-list { max-height: 68vh; overflow-y: auto; overscroll-behavior: contain; }
.question-bank-layout .question-row { min-height: 72px; padding: 12px 14px; border-radius: 12px; }
.question-bank-layout .question-detail { max-height: calc(100vh - 180px); overflow: auto; scrollbar-gutter: stable; }
@media (max-width: 1180px) {
  .question-bank-layout { grid-template-columns: 1fr; }
  .question-bank-layout .workflow-sidebar { position: static; }
  .question-bank-layout .workflow-main { min-height: 240px; }
  .question-bank-layout .question-detail { max-height: none; }
}
@media (max-width: 700px) {
  .question-taxonomy .card-body { padding: 12px; }
  .question-taxonomy .taxonomy-grid,
  .question-taxonomy .taxonomy-grid.knowledge { display: flex; max-height: none; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x proximity; }
  .question-taxonomy .taxonomy-chip { flex: 0 0 min(78vw, 280px); scroll-snap-align: start; }
  .question-bank-layout .scale-filterbar { grid-template-columns: 1fr 1fr; }
  .question-bank-layout .scale-filterbar label.wide { grid-column: 1 / -1; }
  .question-bank-layout .question-list { max-height: 58vh; }
}

.selfstudy-hero { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 28px; margin-bottom: 18px; border-radius: 18px; color: #fff; background: linear-gradient(135deg, #4f46e5, #2563eb 58%, #0891b2); box-shadow: 0 18px 45px rgba(37, 99, 235, .18); }
.selfstudy-hero h2 { margin: 4px 0 8px; font-size: clamp(26px, 4vw, 42px); }
.selfstudy-hero p { margin: 0; color: rgba(255,255,255,.84); }
.selfstudy-hero .page-crumb { color: #bfdbfe; font-weight: 800; }
.selfstudy-summary { min-width: 120px; padding: 16px 20px; text-align: center; border: 1px solid rgba(255,255,255,.24); border-radius: 14px; background: rgba(255,255,255,.12); }
.selfstudy-summary b { display: block; font-size: 34px; }
.selfstudy-summary span { font-size: 13px; color: #dbeafe; }
.selfstudy-library { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 16px; }
.selfstudy-course-card { display: grid; gap: 12px; min-height: 250px; padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: #fff; box-shadow: var(--shadow); }
.selfstudy-course-card h2, .selfstudy-course-card p { margin: 0; }
.selfstudy-course-card p { color: var(--muted); line-height: 1.65; }
.selfstudy-course-top { display: flex; justify-content: space-between; gap: 12px; }
.study-progress { height: 8px; margin-top: auto; overflow: hidden; border-radius: 999px; background: #e9edf7; }
.study-progress i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4f46e5, #06b6d4); }
.selfstudy-head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 16px; margin-bottom: 16px; }
.selfstudy-head h2, .selfstudy-head p { margin: 0; }
.selfstudy-head p { color: var(--muted); font-size: 13px; }
.selfstudy-room { display: grid; grid-template-columns: minmax(250px, 300px) minmax(0, 1fr); gap: 18px; align-items: start; }
.selfstudy-outline { position: sticky; top: 12px; display: grid; gap: 8px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: var(--shadow); }
.selfstudy-outline h3 { margin: 0 0 6px; }
.selfstudy-node { display: grid; gap: 6px; padding-top: 10px; border-top: 1px solid var(--line); }
.selfstudy-node:first-of-type { padding-top: 4px; border-top: 0; }
.selfstudy-node h4 { margin: 0; font-size: 15px; color: var(--text); }
.selfstudy-node > p { margin: 0 0 3px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.selfstudy-lesson { display: grid; grid-template-columns: 32px 1fr; gap: 10px; width: 100%; padding: 11px; text-align: left; color: var(--text); border: 1px solid transparent; border-radius: 10px; background: transparent; cursor: pointer; }
.selfstudy-lesson:hover, .selfstudy-lesson.active { border-color: #c7d2fe; background: #eef2ff; }
.selfstudy-lesson > span { display: grid; place-items: center; width: 30px; height: 30px; color: #4338ca; font-weight: 800; border-radius: 50%; background: #e0e7ff; }
.selfstudy-lesson b, .selfstudy-lesson small { display: block; }
.selfstudy-lesson small { margin-top: 3px; color: var(--muted); }
.selfstudy-content { display: grid; gap: 16px; min-width: 0; }
.study-step, .study-section { padding: 22px; border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: var(--shadow); }
.study-step h1 { margin: 6px 0 12px; font-size: clamp(25px, 3.4vw, 38px); }
.study-step{min-width:0;overflow:hidden}.study-step h1{max-width:100%;overflow-wrap:anywhere;line-height:1.25}.study-objectives{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}.study-objectives .tag{flex:0 1 auto;max-width:100%;height:auto;min-height:30px;padding:6px 11px;white-space:normal;line-height:1.45;text-align:left}
.study-step > span { color: var(--primary); font-weight: 800; }
.study-section-title { display: grid; grid-template-columns: 44px 1fr; gap: 12px; margin-bottom: 18px; }
.study-section-title > span { display: grid; place-items: center; width: 42px; height: 42px; color: #fff; font-weight: 800; border-radius: 12px; background: var(--primary); }
.study-section-title h2, .study-section-title p { margin: 0; }
.study-section-title p { margin-top: 4px; color: var(--muted); }
.study-question-list { display: grid; gap: 10px; }
.study-question-list > .item { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.selfstudy-actions { display: flex; justify-content: space-between; gap: 12px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }

.review-attachment-preview { display: block; max-width: min(100%, 720px); max-height: 520px; margin: 12px 0; object-fit: contain; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.review-cases { margin-top: 12px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: #fafbff; }
.review-cases summary { cursor: pointer; font-weight: 800; }
tr[data-review-history] { cursor: pointer; }

.resource-center-head { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 24px 26px; margin-bottom: 16px; border: 1px solid #c7d2fe; border-radius: 16px; background: linear-gradient(135deg, #eef2ff, #ecfeff); }
.resource-center-head h2, .resource-center-head p { margin: 0; }
.resource-center-head h2 { margin: 4px 0 6px; font-size: clamp(28px, 3vw, 40px); }
.resource-center-head > div > p:last-child { color: var(--muted); }
.resource-center-metrics { display: flex; gap: 10px; }
.resource-center-metrics > div { min-width: 86px; padding: 12px; text-align: center; border: 1px solid rgba(79,70,229,.14); border-radius: 12px; background: rgba(255,255,255,.78); }
.resource-center-metrics b, .resource-center-metrics span { display: block; }
.resource-center-metrics b { font-size: 25px; }
.resource-center-metrics span { color: var(--muted); font-size: 12px; }
.resource-center-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); gap: 16px; align-items: start; }
.resource-course-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 12px; }
.resource-course-card { display: grid; gap: 10px; min-height: 190px; padding: 18px; text-align: left; color: var(--text); border: 1px solid var(--line); border-radius: 13px; background: #fff; cursor: pointer; }
.resource-course-card:hover { border-color: #818cf8; transform: translateY(-1px); box-shadow: 0 12px 28px rgba(79,70,229,.10); }
.resource-course-card h3, .resource-course-card p { margin: 0; }
.resource-course-card p { color: var(--muted); line-height: 1.55; }
.resource-publish-layout { display: grid; grid-template-columns: minmax(420px, .95fr) minmax(0, 1.05fr); gap: 16px; align-items: start; }
.resource-preview { display: grid; gap: 14px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.resource-preview h2, .resource-preview h3 { margin: 0; }

@media (max-width: 1000px) {
  .resource-center-grid, .resource-publish-layout { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .resource-center-head { align-items: flex-start; flex-direction: column; }
  .resource-center-metrics { width: 100%; }
  .resource-center-metrics > div { flex: 1; min-width: 0; }
}

/* CSP-J/S knowledge tree v3 */
.knowledge-tree-toolbar { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:18px; }
.knowledge-tree-legend { display:flex; gap:8px; flex-wrap:wrap; }
.knowledge-tree-legend span { padding:5px 9px; border:1px solid var(--line); border-radius:999px; font-size:12px; }
.knowledge-tree-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:16px; align-items:start; }
.knowledge-tree-layout.has-detail { grid-template-columns:minmax(0,1fr) minmax(280px,360px); }
.knowledge-tree-scroll { display:grid; grid-template-columns:repeat(3,minmax(300px,1fr)); gap:16px; overflow-x:auto; padding:2px 2px 14px; scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch; }
.knowledge-tree-domain { min-width:0; overflow:hidden; border:1px solid #dfe5f2; border-radius:18px; background:#f8faff; scroll-snap-align:start; }
.knowledge-tree-domain > header { display:grid; grid-template-columns:42px minmax(0,1fr) auto; gap:12px; align-items:start; padding:16px; border-bottom:1px solid #e4e9f4; background:linear-gradient(145deg,#f1f4ff,#fff); }
.knowledge-tree-domain > header h3,.knowledge-tree-domain > header p { margin:0; }
.knowledge-tree-domain > header p { margin-top:5px; color:#667085; font-size:13px; line-height:1.55; }
.knowledge-tree-domain > header > b { text-align:center; font-size:20px; }
.knowledge-tree-domain > header > b small { display:block; color:#7b8498; font-size:11px; font-weight:500; }
.knowledge-domain-order { display:grid; width:38px; height:38px; place-items:center; border-radius:12px; background:#625bf6; color:#fff; font-weight:900; }
.knowledge-tree-groups { display:grid; gap:14px; padding:14px; }
.knowledge-tree-group { min-width:0; }
.knowledge-tree-group h4 { margin:0 0 8px; color:#596278; font-size:13px; }
.knowledge-tree-path { position:relative; display:grid; gap:8px; padding-left:12px; }
.knowledge-tree-path::before { content:""; position:absolute; top:8px; bottom:8px; left:5px; width:2px; background:#dce3f5; }
.knowledge-tree-point { position:relative; display:grid; grid-template-columns:12px minmax(0,1fr) auto; gap:9px; align-items:center; width:100%; padding:10px 11px; border:1px solid #e0e5ef; border-radius:12px; background:#fff; color:#18213a; text-align:left; transition:border-color .18s,transform .18s,box-shadow .18s; }
.knowledge-tree-point:hover,.knowledge-tree-point:focus-visible { transform:translateY(-1px); border-color:#8c86f8; box-shadow:0 7px 18px rgba(44,55,100,.1); }
.knowledge-tree-point.selected { outline:3px solid rgba(98,91,246,.17); border-color:#625bf6; }
.knowledge-tree-point b,.knowledge-tree-point small { display:block; overflow-wrap:anywhere; }
.knowledge-tree-point small { margin-top:3px; color:#6e778b; font-size:11px; line-height:1.45; }
.knowledge-tree-point > i { color:#8c94a8; font-size:20px; font-style:normal; }
.knowledge-point-dot { position:relative; z-index:1; width:10px; height:10px; margin-left:-18px; border:2px solid #fff; border-radius:50%; background:#8792aa; box-shadow:0 0 0 2px #dce3f5; }
.knowledge-tree-point.graph-mastered .knowledge-point-dot { background:#22a85a; }
.knowledge-tree-point.graph-learning .knowledge-point-dot { background:#e6a817; }
.knowledge-tree-point.graph-weak .knowledge-point-dot { background:#e55757; }
.knowledge-detail-panel { position:sticky; top:12px; padding:18px; border:1px solid #dce2f0; border-radius:18px; background:#fff; box-shadow:0 12px 32px rgba(40,50,90,.11); }
.knowledge-detail-panel h3 { margin:7px 0 0; }
.knowledge-detail-panel > p { color:#505b70; line-height:1.7; }
.knowledge-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:14px 0; }
.knowledge-detail-grid > div { padding:10px; border-radius:10px; background:#f6f8fc; }
.knowledge-detail-grid b,.knowledge-detail-grid span { display:block; }
.knowledge-detail-grid b { color:#737d91; font-size:11px; }
.knowledge-detail-grid span { margin-top:3px; font-weight:750; }
.knowledge-prerequisites,.knowledge-demo,.knowledge-mastery { margin-top:14px; }
.knowledge-prerequisites > b,.knowledge-demo > b,.knowledge-mastery > b { display:block; margin-bottom:7px; }
.knowledge-linked-lessons{margin-top:16px;padding:14px;border:1px solid #dfe4f3;border-radius:16px;background:rgba(255,255,255,.78)}.knowledge-linked-lessons>.item-row small{display:block;margin-top:3px;color:#727b8f}.knowledge-linked-lessons>div:last-child{display:grid;gap:8px;margin-top:11px;max-height:330px;overflow:auto}.knowledge-linked-lessons>div:last-child>button{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:10px;border:1px solid #e4e8f2;border-radius:12px;background:#fff;color:#17203a;text-align:left;cursor:pointer}.knowledge-linked-lessons>div:last-child>button:hover,.knowledge-linked-lessons>div:last-child>button:focus-visible{border-color:#756df0;background:#f5f5ff}.knowledge-linked-lessons>div:last-child>button>span{display:grid;width:28px;height:28px;place-items:center;border-radius:9px;background:#ebeaff;color:#554dde;font-weight:900}.knowledge-linked-lessons>div:last-child>button b,.knowledge-linked-lessons>div:last-child>button small{display:block}.knowledge-linked-lessons>div:last-child>button small{margin-top:2px;color:#747d91}.knowledge-linked-lessons>div:last-child>button i{color:#5d55e6;font-style:normal;font-weight:800}
.knowledge-whole-tree-shell{overflow-x:auto;padding:8px 4px 22px}.knowledge-whole-tree{position:relative;min-width:1080px;padding:16px 18px 30px;border-radius:28px;background:radial-gradient(circle at 50% 3%,rgba(102,204,151,.24),transparent 24%),linear-gradient(180deg,#f0fbf6 0%,#f8fbff 46%,#f6f2eb 100%);box-shadow:inset 0 0 0 1px rgba(76,135,105,.14)}.whole-tree-root{position:relative;z-index:3;display:flex;align-items:center;gap:14px;width:max-content;max-width:420px;margin:0 auto;padding:15px 22px;border:1px solid rgba(255,255,255,.55);border-radius:22px;background:linear-gradient(135deg,#176b48,#279d68);color:#fff;box-shadow:0 14px 35px rgba(25,107,72,.25)}.whole-tree-root>span{display:grid;width:48px;height:48px;place-items:center;border-radius:16px;background:rgba(255,255,255,.16);font-size:25px}.whole-tree-root small,.whole-tree-root b,.whole-tree-root p{display:block;margin:0}.whole-tree-root b{font-size:21px}.whole-tree-root p{color:rgba(255,255,255,.78);font-size:12px}.whole-tree-trunk{width:12px;height:44px;margin:0 auto;background:linear-gradient(90deg,#70472b,#a46d3b,#70472b);box-shadow:0 0 0 4px rgba(113,72,42,.08)}.whole-tree-domains{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;padding-top:32px}.whole-tree-domains::before{content:"";position:absolute;top:0;left:16.66%;right:16.66%;height:5px;border-radius:999px;background:linear-gradient(90deg,#44a970,#6bbf83,#44a970)}.whole-tree-domain{position:relative;min-width:0;padding:0 12px 16px;border:1px solid rgba(62,130,93,.17);border-radius:24px;background:rgba(255,255,255,.82);box-shadow:0 14px 36px rgba(43,83,61,.1)}.whole-tree-domain::before{content:"";position:absolute;top:-34px;left:50%;width:5px;height:34px;transform:translateX(-50%);background:#55ae75}.whole-tree-domain>header{display:flex;align-items:center;gap:11px;margin:12px 0;padding:13px;border-radius:18px;color:#fff}.whole-tree-domain.branch-1>header{background:linear-gradient(135deg,#4b57d7,#6c75ee)}.whole-tree-domain.branch-2>header{background:linear-gradient(135deg,#087f91,#19a6a9)}.whole-tree-domain.branch-3>header{background:linear-gradient(135deg,#b14c73,#e66a78)}.whole-tree-domain>header>span{display:grid;width:42px;height:42px;place-items:center;border-radius:14px;background:rgba(255,255,255,.16);font-size:21px}.whole-tree-domain h3,.whole-tree-domain header p{margin:0}.whole-tree-domain header small{opacity:.78}.whole-tree-domain header p{color:rgba(255,255,255,.8);font-size:12px}.whole-tree-groups{display:grid;gap:12px}.whole-tree-group{position:relative;padding-top:16px}.whole-tree-group::before{content:"";position:absolute;top:0;left:22px;width:3px;height:17px;background:#92c4a3}.whole-tree-group>h4{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px;padding:9px 12px;border:1px solid #d9eadf;border-radius:13px;background:#edf8f1;color:#236143}.whole-tree-group>h4 small{display:grid;min-width:24px;height:24px;place-items:center;border-radius:8px;background:#d8efe1}.whole-tree-group>div{position:relative;display:grid;gap:7px;padding-left:16px}.whole-tree-group>div::before{content:"";position:absolute;top:0;bottom:14px;left:5px;width:2px;background:#c7ddcf}.whole-tree-point{position:relative;display:grid;grid-template-columns:14px minmax(0,1fr) 14px;align-items:center;gap:8px;width:100%;min-height:59px;padding:9px;border:1px solid #e2e8e4;border-radius:13px;background:#fff;color:#17231c;text-align:left;cursor:pointer;box-shadow:0 5px 14px rgba(39,75,53,.06)}.whole-tree-point::before{content:"";position:absolute;left:-12px;top:50%;width:11px;height:2px;background:#c7ddcf}.whole-tree-point:hover,.whole-tree-point:focus-visible,.whole-tree-point.selected{transform:translateY(-2px);border-color:#5b9e73;box-shadow:0 9px 20px rgba(39,107,65,.16)}.whole-tree-point.selected{background:#edf9f2}.whole-tree-point b,.whole-tree-point small{display:block}.whole-tree-point b{font-size:13px}.whole-tree-point small{margin-top:3px;color:#778177;font-size:10px}.whole-tree-point>i{color:#3b8657;font-style:normal;font-weight:900}.knowledge-tree-selected-detail{display:grid;gap:12px;max-width:920px;margin:20px auto 0;padding:16px;border:1px solid #dfe5ee;border-radius:22px;background:#f8faff}.knowledge-tree-selected-detail>.btn{justify-self:start}.knowledge-tree-selected-detail .knowledge-detail-panel{position:static}.knowledge-tree-selected-detail .knowledge-issue-panel{margin:0}@media(max-width:760px){.knowledge-whole-tree-shell{margin-inline:-10px;padding:4px 10px 16px;scroll-snap-type:x proximity}.knowledge-whole-tree{min-width:920px;padding:12px}.whole-tree-domains{gap:12px}.whole-tree-domain{padding-inline:8px;scroll-snap-align:center}.whole-tree-domain>header{padding:9px}.whole-tree-domain>header>span{width:35px;height:35px}.whole-tree-domain h3{font-size:16px}.whole-tree-root{padding:11px 16px}.knowledge-tree-selected-detail{margin-top:12px;padding:10px;border-radius:15px}}
.knowledge-whole-tree.compact{padding-bottom:18px}.whole-tree-group-gates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.whole-tree-group-gates>button{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:48px;padding:8px;border:1px solid #dce8df;border-radius:12px;background:#fff;color:#244330;text-align:left;cursor:pointer}.whole-tree-group-gates>button:hover,.whole-tree-group-gates>button.active{border-color:#56a873;background:#eaf8ef;box-shadow:0 6px 16px rgba(45,111,68,.12)}.whole-tree-group-gates>button>span{font-size:15px}.whole-tree-group-gates b,.whole-tree-group-gates small{display:block}.whole-tree-group-gates b{font-size:12px}.whole-tree-group-gates small{color:#718078;font-size:9px}.whole-tree-group-gates i{color:#3f8f5d;font-style:normal}.whole-tree-focus{max-width:980px;margin:16px auto 0;padding:16px;border:1px solid #dce6df;border-radius:20px;background:linear-gradient(145deg,#fff,#f3faf6);box-shadow:0 12px 28px rgba(42,88,59,.09)}.whole-tree-focus h3,.whole-tree-focus small{margin:0}.whole-tree-focus>.knowledge-point-portal{margin-top:12px}@media(max-width:760px){.whole-tree-group-gates{grid-template-columns:1fr}.whole-tree-group-gates>button{min-height:42px}.whole-tree-focus{padding:10px;border-radius:14px}.knowledge-whole-tree-shell.compact{overflow-x:auto}}
.knowledge-demo pre { max-height:220px; margin:0; overflow:auto; white-space:pre-wrap; }
.knowledge-mastery { display:flex; justify-content:space-between; gap:10px; padding:11px; border-radius:10px; background:#f1f8f4; }
@media (max-width:1180px) {
  .knowledge-tree-layout.has-detail { grid-template-columns:1fr; }
  .knowledge-detail-panel { position:static; }
  .knowledge-tree-scroll { grid-template-columns:repeat(3,minmax(280px,85vw)); }
}
@media (max-width:680px) {
  .knowledge-tree-scroll { grid-template-columns:repeat(3,minmax(270px,88vw)); gap:10px; }
  .knowledge-tree-domain > header { grid-template-columns:38px minmax(0,1fr); }
  .knowledge-tree-domain > header > b { grid-column:2; text-align:left; }
  .knowledge-detail-grid { grid-template-columns:1fr 1fr; }
}
.taxonomy-guide { display:flex; gap:8px; flex-direction:column; margin-top:12px; padding:14px 16px; border:1px dashed #bdc7dc; border-radius:12px; background:#f8faff; color:#657089; }
.taxonomy-guide b { color:#28324b; }
.taxonomy-topic-groups { display:grid; gap:14px; margin-top:14px; }
.taxonomy-topic-groups > section { padding:12px; border:1px solid #e4e8f1; border-radius:14px; background:#fbfcff; }
.taxonomy-topic-groups h4 { margin:0 0 9px; color:#596278; }

@media (max-width: 820px) {
  .selfstudy-hero { align-items: flex-start; flex-direction: column; }
  .selfstudy-head { grid-template-columns: auto 1fr; }
  .selfstudy-head > .tag { grid-column: 1 / -1; }
  .selfstudy-room { grid-template-columns: 1fr; }
  .selfstudy-outline { position: static; max-height: 320px; overflow: auto; }
  .selfstudy-actions { flex-wrap: wrap; }
  .study-step,.study-section{padding:16px}.study-step h1{font-size:clamp(24px,7vw,34px)}
}
@media(max-width:520px){.selfstudy-head{grid-template-columns:1fr}.selfstudy-head>.btn,.selfstudy-head>.tag{grid-column:1;width:100%}.selfstudy-head>.tag{justify-content:center}.study-step,.study-section{padding:13px}.study-objectives{display:grid}.study-objectives .tag{width:100%}}

.reader {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
}

.reader iframe {
  display: block;
  width: 100%;
  height: 460px;
  border: 0;
  background: #fff;
}

.text-reader {
  padding: 14px;
  line-height: 1.75;
  white-space: pre-wrap;
}

.muted { color: var(--muted); }
.small { font-size: 13px; }

.tag {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 0 9px;
  border-radius: 999px;
  background: #edf8fa;
  color: #087287;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}

.tag.green { background: #edf9f0; color: var(--green); }
.tag.orange { background: #fff4e6; color: var(--orange); }
.tag.red { background: #fff0f0; color: var(--red); }
.tag.blue { background: #edf6ff; color: var(--blue); }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 38px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  font-weight: 900;
  transition: border-color .15s ease, background .15s ease, color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.btn:hover {
  border-color: rgba(34,184,207,.55);
  background: #f7fcfd;
}

.btn:active {
  transform: translateY(1px);
}

.btn:focus-visible,
.menu-item:focus-visible,
.link-btn:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid rgba(34,184,207,.24);
  outline-offset: 2px;
}

.btn.primary {
  border-color: var(--brand);
  background: var(--brand);
  color: #fff;
}

.btn.primary:hover {
  border-color: var(--brand-dark);
  background: var(--brand-dark);
}

.btn.danger { border-color: #ffc9c9; color: var(--red); }

.btn.danger:hover {
  background: #fff5f5;
}

.btn-outline-primary {
  border-color: rgba(34,184,207,.45);
  background: #fff;
  color: var(--brand-dark);
}

.btn-outline-primary:hover {
  background: rgba(34,184,207,.1);
}

.link-btn {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--blue);
  font-weight: 900;
  text-align: left;
}

.metric-link,
.language-card {
  cursor: pointer;
  transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}

.metric-link:hover,
.language-card:hover {
  border-color: rgba(34,184,207,.55);
  transform: translateY(-1px);
  box-shadow: 0 12px 28px rgba(23,32,42,.08);
}

.management-tabs {
  position: sticky;
  top: 0;
  z-index: 4;
  padding: 10px 0;
  background: rgba(246, 248, 251, .94);
  backdrop-filter: blur(10px);
}

.item.compact {
  padding: 10px 12px;
}

form.item {
  margin: 0;
}

input:disabled,
select:disabled,
textarea:disabled {
  background: #f3f6f8;
  color: #667085;
  cursor: not-allowed;
}

.password-prompt {
  margin-bottom: 14px;
  border-color: rgba(245, 158, 11, .35);
  background: #fffaf0;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.form-grid label { display: grid; gap: 6px; color: #344054; font-size: 13px; font-weight: 900; }
.form-grid .full { grid-column: 1 / -1; }

.check-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.check {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  font-size: 13px;
}

.editor-layout {
  display: grid;
  grid-template-columns: minmax(280px, .78fr) minmax(420px, 1.22fr);
  gap: 14px;
}

.codebox {
  min-height: 360px;
  font-family: Consolas, Monaco, monospace;
  font-size: 14px;
  line-height: 1.55;
  color: #dbe7ef;
  background: #111923;
  border-color: #243243;
}

.console {
  min-height: 138px;
  padding: 14px;
  border: 1px solid #dce7ee;
  border-radius: 8px;
  background: #0f1720;
  color: #dbe7ef;
  font-family: Consolas, Monaco, monospace;
  white-space: pre-wrap;
}

.toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin-top: 12px;
}

.table {
  width: 100%;
  border-collapse: collapse;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}

.card-body > .table,
.item > .table {
  display: block;
  overflow-x: auto;
}

.table th,
.table td {
  padding: 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
  font-size: 14px;
}
.table th { background: #f8fbfc; color: #435266; font-size: 13px; }
.table tr:last-child td { border-bottom: 0; }

.table-hover tbody tr:hover {
  background: #f5fbfd;
}

.question-picker-table {
  max-height: 430px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
}

.question-picker-table .table {
  min-width: 880px;
  border: 0;
}

.question-picker-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f8fcfd;
}

.assignment-review-students { display: grid; gap: 12px; }
.assignment-student-review { border: 1px solid var(--line); border-radius: 16px; background: #fff; overflow: hidden; }
.assignment-student-review > summary { display: grid; grid-template-columns: minmax(100px, 180px) auto minmax(140px, 1fr); align-items: center; gap: 14px; padding: 16px 18px; cursor: pointer; background: #f8faff; }
.assignment-student-review > summary::marker { color: var(--primary); }
.assignment-student-review > summary .progress { margin: 0; }
.assignment-question-review-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; padding: 14px; }
.assignment-question-review { min-width: 0; border: 1px solid var(--line); border-radius: 14px; padding: 14px; background: #fff; }
.assignment-question-review.missing { background: #fafbfc; }
.assignment-question-review h3 { margin: 0; font-size: 16px; overflow-wrap: anywhere; }
.assignment-question-review pre { max-height: 320px; overflow: auto; white-space: pre-wrap; word-break: break-word; }
.assignment-grade-form { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--line); }
.assignment-grade-form textarea { min-height: 76px; }
.score-template-panel { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: #f7f7ff; background: color-mix(in srgb, var(--primary) 5%, white); }
.score-template-panel > .toolbar { margin-top: 2px; }
.score-template-panel .btn { min-height: 40px; }
@media (max-width: 720px) {
  .score-template-panel .toolbar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
  .score-template-panel .btn { width: 100%; white-space: normal; }
}
.full-question-detail { margin: 10px 0; border: 1px solid #dfe5f2; border-radius: 12px; background: #fbfcff; }
.full-question-detail > summary { padding: 10px 12px; cursor: pointer; color: var(--primary); font-weight: 700; }
.full-question-content { display: grid; gap: 12px; padding: 0 12px 12px; }
.full-question-content .formatted-statement { margin: 0; white-space: pre-wrap; line-height: 1.8; overflow-wrap: anywhere; }
.full-question-content pre { margin: 6px 0 0; max-height: 360px; overflow: auto; white-space: pre-wrap; word-break: break-word; }
.programming-public-examples { display: grid; gap: 12px; margin: 16px 0; padding: 16px; border: 1px solid #b9e7ee; border-radius: 16px; background: #f7fcfd; }
.programming-public-examples h4 { margin: 0; color: #075f70; font-size: 18px; }
.programming-public-examples .item { min-width: 0; background: #fff; }
.programming-public-examples pre { margin: 7px 0 0; padding: 12px; border-radius: 10px; background: #17212b; color: #eef7fa; white-space: pre-wrap; overflow-wrap: anywhere; overflow-x: auto; }
.programming-public-examples .sample-io { display: grid; gap: 6px; margin-top: 8px; }
.programming-public-examples .sample-io > span { color: var(--muted); font-size: 13px; font-weight: 700; }
.full-question-options { display: grid; gap: 8px; }
.full-question-options > div { display: grid; grid-template-columns: 28px 1fr; gap: 8px; padding: 9px 10px; border-radius: 10px; background: #fff; border: 1px solid var(--line); }
@media (max-width: 760px) {
  .assignment-student-review > summary { grid-template-columns: 1fr auto; }
  .assignment-student-review > summary .progress { grid-column: 1 / -1; }
  .assignment-question-review-grid { grid-template-columns: 1fr; padding: 10px; }
}

.scale-picker {
  gap: 14px;
}

.scale-filterbar {
  grid-template-columns: repeat(6, minmax(120px, 1fr));
  align-items: end;
}

.scale-filterbar .wide {
  grid-column: span 2;
}

.scale-table {
  max-height: 520px;
}

.scale-table .table {
  min-width: 980px;
}

.selected-tray {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid #d8edf2;
  border-radius: 8px;
  background: #f7fcfd;
}

.selected-tray-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.selected-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.selected-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  max-width: 260px;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid rgba(34,184,207,.28);
  border-radius: 999px;
  background: #fff;
  color: #244052;
  font-size: 12px;
  font-weight: 900;
}

.selected-chip span {
  color: var(--muted);
  font-weight: 800;
}

.selected-chip:hover {
  border-color: rgba(224,49,49,.35);
  background: #fff8f8;
}

.pager {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  padding-top: 2px;
}

.scale-list .card-body {
  display: grid;
  gap: 12px;
}

.class-filterbar {
  grid-template-columns: repeat(4, minmax(120px, 1fr));
}

.scale-card-list {
  max-height: 620px;
  overflow: auto;
  padding-right: 4px;
}

.class-list-item {
  width: 100%;
  color: var(--ink);
  text-align: left;
}

.compact-list {
  max-height: 320px;
  overflow: auto;
  padding-right: 4px;
}

.roster-check-list {
  max-height: 360px;
  overflow: auto;
  padding-right: 4px;
}
.roster-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0; }
.roster-tools select { width: auto; min-width: 130px; }
.roster-tools [data-roster-count] { margin-left: auto; }
[data-roster-check][hidden] { display: none !important; }

.exam-score-builder { margin-top: 14px; padding: 14px; border: 1px solid #d8e6f2; border-radius: 12px; background: #f8fbff; }
.exam-score-builder .table input { min-width: 86px; }
.exam-score-total-ok { color: #16813d; font-weight: 800; }
.exam-score-total-error { color: #d92d20; font-weight: 800; }
.exam-rework-toolbar { padding: 12px 14px 0; border-top: 1px solid var(--line); }

.check span {
  display: grid;
  gap: 2px;
}

.check small {
  color: var(--muted);
  font-size: 12px;
}

.exam-paper .card-body {
  background: #f8fbfd;
}

.exam-sheet {
  display: grid;
  gap: 16px;
}

.exam-workspace {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}

.exam-answer-card {
  position: sticky;
  top: 16px;
  display: grid;
  gap: 12px;
}

.exam-card-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
}

.exam-card-dot {
  min-height: 38px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  font-weight: 900;
}

.exam-card-dot.done {
  border-color: rgba(34,184,207,.45);
  background: #edf8fa;
  color: var(--brand-dark);
}

.exam-card-dot.marked {
  border-color: rgba(240,140,0,.45);
  background: #fff4e6;
  color: var(--orange);
}

.exam-card-dot.right {
  border-color: rgba(47,158,68,.45);
  background: #edf9f0;
  color: var(--green);
}

.exam-card-dot.wrong {
  border-color: rgba(224,49,49,.45);
  background: #fff0f0;
  color: var(--red);
}

.exam-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.exam-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.exam-legend i {
  width: 10px;
  height: 10px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #fff;
}

.exam-legend i.done { background: var(--brand); border-color: var(--brand); }
.exam-legend i.marked { background: var(--orange); border-color: var(--orange); }
.exam-legend i.right { background: var(--green); border-color: var(--green); }
.exam-legend i.wrong { background: var(--red); border-color: var(--red); }

.review-workspace {
  display: grid;
  grid-template-columns: minmax(300px, .85fr) minmax(460px, 1.2fr) minmax(320px, .95fr);
  gap: 14px;
  align-items: start;
}

.review-workspace .workflow-list .card-body {
  max-height: 760px;
}

.review-detail-card {
  min-width: 0;
}

.review-detail-card pre {
  max-height: 320px;
  overflow: auto;
  padding: 12px;
  border-radius: 8px;
  background: #f8fbfd;
  border: 1px solid var(--line);
  white-space: pre-wrap;
}

.review-filterbar {
  grid-template-columns: repeat(3, minmax(120px, 1fr));
}

.message-workspace {
  display: grid;
  grid-template-columns: minmax(340px, .9fr) minmax(460px, 1.1fr);
  gap: 14px;
  align-items: start;
}

.message-filterbar {
  grid-template-columns: minmax(180px, 1.4fr) minmax(120px, .8fr) minmax(120px, .8fr);
}

.message-detail-card {
  min-width: 0;
}

.management-stack {
  display: grid;
  gap: 14px;
}

.split-grid {
  display: grid;
  grid-template-columns: minmax(360px, 1fr) minmax(360px, 1fr);
  gap: 14px;
  align-items: start;
}

.message-list .scale-card-list,
.course-list {
  max-height: none;
  overflow: visible;
  padding-right: 0;
}

.schedule-layout {
  display: grid;
  gap: 14px;
}

.schedule-filterbar {
  grid-template-columns: minmax(180px, 1.4fr) repeat(3, minmax(130px, .8fr));
}

.schedule-card .card-body {
  overflow-x: auto;
}

.schedule-calendar {
  min-width: 980px;
  display: grid;
  grid-template-columns: repeat(7, minmax(132px, 1fr));
  gap: 10px;
}

.schedule-day {
  min-height: 360px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
}

.schedule-day-head {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  background: #f4fafc;
  color: #334155;
  font-size: 13px;
  font-weight: 900;
}

.schedule-day-body {
  display: grid;
  align-content: start;
  gap: 8px;
  padding: 10px;
}

.schedule-event {
  width: 100%;
  display: grid;
  gap: 5px;
  padding: 10px;
  border: 1px solid rgba(34,184,207,.25);
  border-left: 4px solid var(--brand);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  text-align: left;
}

.schedule-event:hover {
  border-color: rgba(34,184,207,.55);
  background: #f7fcfd;
}

.schedule-time {
  color: var(--brand-dark);
  font-size: 12px;
  font-weight: 900;
}

.schedule-event b {
  font-size: 14px;
}

.schedule-event small,
.schedule-meta {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.schedule-empty {
  min-height: 78px;
  display: grid;
  place-items: center;
  border: 1px dashed #d8e5eb;
  border-radius: 8px;
  color: var(--muted);
  font-size: 13px;
}

.calendar-head {
  align-items: center;
}

.calendar-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
  align-items: center;
}

.schedule-month-calendar {
  min-width: 1080px;
  display: grid;
  grid-template-columns: repeat(7, minmax(140px, 1fr));
  gap: 8px;
}

.schedule-month-week {
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f5fbfd;
  color: #435266;
  font-size: 13px;
  font-weight: 900;
  text-align: center;
}

.schedule-month-day {
  min-height: 176px;
  display: grid;
  align-content: start;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}

.schedule-month-day.today {
  border-color: rgba(34,184,207,.65);
  box-shadow: 0 0 0 3px rgba(34,184,207,.12);
}

.schedule-month-day.blank {
  background: #f8fbfc;
  border-style: dashed;
}

.schedule-month-day-head {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: center;
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  background: #fbfdff;
  color: #344054;
  font-size: 12px;
  font-weight: 900;
}

.schedule-month-day-head b {
  font-size: 16px;
}

.schedule-month-calendar .schedule-event {
  min-height: 0;
  padding: 8px;
}

.schedule-month-calendar .schedule-event b {
  font-size: 13px;
}

.schedule-month-calendar .schedule-empty {
  min-height: 54px;
}

.card-foot {
  padding: 10px 18px 16px;
  border-top: 1px solid var(--line);
}

.exam-question {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}

.exam-question.is-right {
  border-color: rgba(47,158,68,.35);
}

.exam-question.is-wrong {
  border-color: rgba(224,49,49,.35);
}

.exam-question-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 12px;
}

.exam-question-head h3 {
  margin: 4px 0 0;
  font-size: 20px;
}

.choice-grid {
  display: grid;
  gap: 10px;
}

.modal-choice-grid {
  margin: 14px 0;
}

.modal-choice-grid .choice-option {
  cursor: pointer;
}

.modal-choice-grid .choice-option input {
  flex: 0 0 auto;
}

.choice-option {
  display: flex;
  gap: 10px;
  align-items: center;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
  font-weight: 800;
}

.choice-option.is-selected,
.choice-option:has(input:checked) {
  border-color: rgba(34,184,207,.55);
  background: rgba(34,184,207,.08);
}

.student-choice-card {
  position: relative;
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  min-height: 58px;
  padding: 12px 16px;
  border: 2px solid var(--line);
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, transform .16s ease, box-shadow .16s ease;
}

.student-choice-card:hover {
  border-color: rgba(102, 92, 246, .45);
  box-shadow: 0 8px 20px rgba(43, 49, 78, .08);
  transform: translateY(-1px);
}

.student-choice-card input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.student-choice-card .choice-letter {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #f5f6ff;
  color: var(--brand-dark);
  font-weight: 900;
}

.student-choice-card .choice-text { line-height: 1.55; font-weight: 700; }

.student-choice-card.is-selected,
.student-choice-card:has(input:checked) {
  border-color: var(--brand);
  background: rgba(102, 92, 246, .07);
  box-shadow: 0 0 0 3px rgba(102, 92, 246, .12);
}

.student-choice-card.is-selected .choice-letter,
.student-choice-card:has(input:checked) .choice-letter {
  border-color: var(--brand);
  background: var(--brand);
  color: #fff;
}

.answer-analysis {
  display: grid;
  gap: 8px;
  margin-top: 14px;
  padding: 12px;
  border-radius: 8px;
  background: #f8fbfd;
  border: 1px solid var(--line);
}

.answer-analysis pre {
  margin: 6px 0 0;
  white-space: pre-wrap;
}

.exam-submit {
  justify-self: end;
  min-width: 180px;
}

.progress {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e9f0f4;
}
.progress i {
  display: block;
  height: 100%;
  background: var(--brand);
}

.toast {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 30;
  display: none;
  max-width: 360px;
  padding: 13px 15px;
  border-radius: 8px;
  background: #111923;
  color: #fff;
  box-shadow: var(--shadow);
  font-size: 14px;
}
.toast.show { display: block; }

.modal {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 22px;
  background: rgba(15, 23, 32, .48);
}

.modal.show { display: flex; }

.modal-panel {
  width: min(980px, 100%);
  max-height: 88vh;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  box-shadow: var(--shadow);
}

.modal-panel p {
  color: #344054;
  line-height: 1.7;
}

.modal-panel select,
.modal-panel input {
  width: 100%;
  margin: 8px 0 12px;
}

.assignment-programming-modal { width: min(1380px, 96vw); max-height: 94vh; }
.modal-sticky-head { position: sticky; top: 0; z-index: 4; background: #fff; border-bottom: 1px solid var(--line); }
.assignment-answer-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(420px, .9fr); gap: 18px; align-items: start; }
.assignment-statement-panel,
.assignment-answer-panel { min-width: 0; }
.assignment-answer-panel { position: sticky; top: 92px; }
.assignment-code-panel { display: grid; gap: 12px; }
.assignment-code-panel .codebox { min-height: 390px; resize: vertical; }
.assignment-code-panel textarea:not(.codebox) { width: 100%; min-height: 86px; }

@media (max-width: 900px) {
  .assignment-answer-layout { grid-template-columns: 1fr; }
  .assignment-answer-panel { position: static; }
  .assignment-code-panel .codebox { min-height: 300px; }
}

.question-bank-layout {
  grid-template-columns: minmax(360px, .9fr) minmax(420px, 1.1fr);
}

.filterbar {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.filterbar label {
  display: grid;
  gap: 6px;
  color: #344054;
  font-size: 13px;
  font-weight: 900;
}

.segmented {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.question-list {
  max-height: 560px;
  overflow: auto;
  padding-right: 4px;
}

.question-row {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  text-align: left;
}

.question-row.active,
.question-row:hover {
  border-color: rgba(34,184,207,.5);
  background: #f0fbfd;
}

.question-row b,
.question-row small {
  display: block;
}

.question-row small {
  margin-top: 5px;
  color: var(--muted);
}

.question-detail h3 {
  margin: 0 0 10px;
}

.tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.choice-options {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
}

.choice-option {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}

.editor-title {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid #243243;
  border-bottom: 0;
  border-radius: 8px 8px 0 0;
  background: #172331;
  color: #dbe7ef;
  font-family: Consolas, Monaco, monospace;
  font-size: 13px;
}

.editor-title + .codebox {
  border-radius: 0 0 8px 8px;
}

.oj-layout {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  gap: 14px;
}

.oj-problem-list {
  min-width: 0;
}

.oj-main {
  display: grid;
  grid-template-columns: minmax(320px, .9fr) minmax(420px, 1.1fr);
  gap: 14px;
}

.oj-main.oj-stack {
  grid-template-columns: 1fr !important;
}

.oj-stack .oj-statement,
.oj-stack .oj-editor-card,
.oj-stack .oj-submissions {
  grid-column: 1 / -1;
}

.oj-stack .oj-statement .card-body {
  display: grid;
  gap: 14px;
}

.oj-submissions {
  grid-column: 1 / -1;
}

.oj-editor-card .codebox {
  min-height: 420px;
}

.oj-stack .oj-editor-card .codebox {
  min-height: 540px;
}

.programming-panel-stacked {
  display: grid;
  gap: 14px;
}

.program-statement-block,
.program-editor-block {
  min-width: 0;
}

.program-editor-block .codebox {
  min-height: 480px;
}

.course-category-admin .compact-actions {
  align-items: center;
  gap: 8px;
  justify-content: flex-end;
}

.course-system-shell{display:grid;gap:16px}.course-system-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:20px 22px;border:1px solid #dfe4f1;border-radius:20px;background:linear-gradient(135deg,#fff,#f5f7ff)}.course-system-toolbar h2,.course-system-toolbar p{margin:0}.course-system-toolbar h2{margin:4px 0 7px}.course-system-toolbar>div:first-child>p:last-child{color:var(--muted)}.course-system-tabs{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.course-system-content{margin-top:0}.course-admin-panels{display:contents}.course-system-shell .course-panel{display:none}.course-system-shell[data-course-panel="library"] .course-panel-library,.course-system-shell[data-course-panel="create"] .course-panel-create,.course-system-shell[data-course-panel="categories"][data-course-role="admin"] .course-panel-categories{display:block}.course-system-shell[data-course-panel="library"] .language-overview{display:grid}.course-panel-create,.course-panel-categories{max-width:920px;width:100%;margin:0 auto}.course-system-shell[data-course-role="teacher"] .course-category-admin{display:none!important}
.course-module-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}.course-module-link{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:92px;padding:15px;border:1px solid #dfe4f1;border-radius:18px;background:#fff;color:var(--text);text-align:left;cursor:pointer}.course-module-link>span{display:grid;width:40px;height:40px;place-items:center;border-radius:13px;background:#eeefff;color:#5149d9;font-weight:900}.course-module-link b,.course-module-link small{display:block}.course-module-link small{margin-top:5px;color:var(--muted)}.course-module-link i{color:#5750d9;font-style:normal;font-weight:800}.course-module-link.active{border-color:#8edbe7;background:#f3fcfd;cursor:default}.course-module-link.active>span{background:#1596ab;color:#fff}.lesson-structure-summary{margin:12px 0}
@media(max-width:760px){.course-system-toolbar{align-items:stretch;flex-direction:column;padding:16px}.course-system-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.course-system-tabs .btn{width:100%}.course-system-tabs .btn:last-child:nth-child(3){grid-column:1/-1}}
@media(max-width:900px){.course-module-links{grid-template-columns:1fr}.course-module-link{min-height:76px}}

.teacher-pay-report {
  width: 100%;
}

.teacher-pay-table {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}

.teacher-pay-table table {
  min-width: 920px;
}

.teacher-pay-table th,
.teacher-pay-table td {
  vertical-align: top;
}

.question-taxonomy .card-body {
  display: grid;
  gap: 14px;
}

.taxonomy-section {
  display: grid;
  gap: 10px;
}

.taxonomy-section h3 {
  margin: 0;
  color: #344054;
  font-size: 16px;
}

.taxonomy-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
  gap: 10px;
}

.taxonomy-grid.compact,
.taxonomy-grid.knowledge {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 132px), 1fr));
}

.taxonomy-chip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 48px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: #17212f;
  font-weight: 900;
  text-align: left;
  box-shadow: 0 6px 16px rgba(23, 32, 42, .04);
}

.taxonomy-chip b {
  display: inline-grid;
  min-width: 30px;
  min-height: 28px;
  padding: 0 8px;
  place-items: center;
  border-radius: 999px;
  background: #eef9fb;
  color: #078096;
  font-size: 13px;
}

.taxonomy-chip:hover,
.taxonomy-chip.active {
  border-color: rgba(34,184,207,.55);
  background: #eafcff;
  color: #06697a;
}

.training-shell {
  display: grid;
  grid-template-columns: minmax(300px, 380px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}

.training-index {
  position: sticky;
  top: 18px;
  overflow: hidden;
  background:
    linear-gradient(135deg, rgba(34,184,207,.08), rgba(255,255,255,0) 42%),
    #fff;
}

.training-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  padding: 18px;
  border-bottom: 1px solid var(--line);
}

.training-head h2 {
  margin: 0 0 4px;
}

.training-head span {
  color: var(--muted);
  font-weight: 800;
  font-size: 13px;
}

.training-filters {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
}

.training-filters label {
  display: grid;
  gap: 6px;
  color: #344054;
  font-size: 13px;
  font-weight: 900;
}

.training-list {
  display: grid;
  gap: 10px;
  max-height: calc(100vh - 290px);
  overflow: auto;
  padding: 14px;
}

.training-row {
  position: relative;
  border-color: #dcebf2;
  background:
    linear-gradient(90deg, rgba(34,184,207,.08), rgba(255,255,255,0) 60%),
    #fff;
}

.training-row em {
  display: block;
  margin-top: 6px;
  color: #0b7c8c;
  font-style: normal;
  font-size: 12px;
  font-weight: 900;
}

.training-main {
  min-width: 0;
}

.training-detail-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  margin-bottom: 14px;
  padding: 16px;
  border: 1px solid rgba(34,184,207,.24);
  border-radius: 8px;
  background:
    radial-gradient(circle at 96% 10%, rgba(34,184,207,.18), transparent 28%),
    linear-gradient(135deg, #fff, #f7fcff);
}

.training-detail-head h2 {
  margin: 0 0 8px;
}

.training-empty,
.training-empty-inline {
  display: grid;
  place-items: center;
  min-height: 360px;
  padding: 36px;
  text-align: center;
  border: 1px dashed rgba(34,184,207,.36);
  background:
    linear-gradient(135deg, rgba(34,184,207,.10), rgba(255,255,255,.95)),
    #fff;
}

.training-empty h2 {
  margin: 8px 0 6px;
}

.training-empty p {
  max-width: 520px;
  margin: 0 auto 18px;
  color: var(--muted);
  line-height: 1.8;
}

.training-empty-icon {
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  border: 1px solid rgba(34,184,207,.38);
  border-radius: 50%;
  color: #0b7c8c;
  background: #f0fbfd;
  font-weight: 1000;
  letter-spacing: 0;
}

.training-empty-inline {
  min-height: 180px;
  border-radius: 8px;
  color: var(--muted);
  font-weight: 900;
}

.scratch-layout {
  display: grid;
  grid-template-columns: minmax(360px, .9fr) minmax(360px, 1.1fr);
  gap: 14px;
}

.scratch-stage-card {
  grid-row: span 2;
}

.scratch-stage {
  position: relative;
  height: 300px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: linear-gradient(#dff8ff, #f8fdff 56%, #d7f5dd 56%);
}

.scratch-sprite {
  position: absolute;
  left: 42%;
  top: 48%;
  display: grid;
  place-items: center;
  width: 82px;
  height: 58px;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-weight: 900;
  transition: transform .25s ease;
}

.scratch-score {
  position: absolute;
  right: 12px;
  top: 12px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #fff;
  border: 1px solid var(--line);
  font-weight: 900;
}

.scratch-blocks {
  min-height: 180px;
  display: grid;
  align-content: start;
  gap: 8px;
  padding: 12px;
  border: 1px dashed #b6cad6;
  border-radius: 8px;
  background: #f8fbfc;
}

.scratch-block {
  padding: 9px 11px;
  border-radius: 8px;
  background: #ffd43b;
  color: #3b2f00;
  font-weight: 900;
}

.compact-panel .card-body,
.compact-form {
  gap: 12px;
}

.section-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.section-title {
  display: grid;
  gap: 4px;
  margin-bottom: 12px;
}

.section-title h3 {
  margin: 0;
  font-size: 20px;
}

.section-title p {
  margin: 0;
  color: var(--muted);
}

.class-delivery-panel {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}

.delivery-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(280px, 1fr));
  gap: 14px;
  align-items: start;
}

.delivery-card {
  display: grid;
  gap: 12px;
  background: linear-gradient(180deg, #ffffff 0%, #f9fdff 100%);
}

.compact-checks {
  max-height: 260px;
  overflow: auto;
  padding-right: 4px;
}

.schedule-slot-row {
  display: grid;
  grid-template-columns: minmax(110px, 1fr) minmax(104px, 1fr) minmax(104px, 1fr) minmax(88px, .8fr) auto;
  gap: 10px;
  align-items: end;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fcff;
}

.schedule-slot-row + .schedule-slot-row {
  margin-top: 10px;
}

.icon-btn {
  min-width: 42px;
  height: 42px;
  padding: 0 10px;
}

.table-wrap {
  width: 100%;
  overflow-x: auto;
}

.table-wrap .table {
  min-width: 720px;
}

.schedule-filter-card {
  align-self: start;
}

.schedule-calendar {
  align-items: stretch;
}

.schedule-event {
  min-height: 132px;
}

@media (max-width: 1040px) {
  .oj-layout,
  .training-shell,
  .oj-main,
  .exam-workspace,
  .review-workspace,
  .message-workspace,
  .schedule-filterbar,
  .scratch-layout,
  .workflow-layout,
  .split-grid,
  .delivery-steps,
  .report-layout {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1040px) {
  .app { grid-template-columns: 1fr; }
  .sidebar {
    position: static;
    height: auto;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    padding: 12px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
    overflow: visible;
  }
  .brand {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    padding: 0;
    border-bottom: 0;
  }
  .brand img {
    width: min(170px, 58vw);
    height: 48px;
  }
  .brand span {
    display: none;
  }
  .mobile-nav-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .mobile-nav-toggle::after {
    content: "⌄";
    margin-left: 8px;
    color: var(--brand-dark);
    transition: transform .18s ease;
  }
  .app.nav-open .mobile-nav-toggle::after {
    transform: rotate(180deg);
  }
  .menu {
    grid-column: 1 / -1;
    display: none;
    grid-template-columns: 1fr;
    gap: 10px;
    max-height: min(68vh, 560px);
    margin-top: 4px;
    padding-top: 10px;
    overflow-y: auto;
    border-top: 1px solid var(--line);
  }
  .app.nav-open .menu {
    display: grid;
  }
  .menu-group {
    gap: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
  }
  .menu-group-title {
    min-height: 44px;
    padding: 0 12px;
    background: #f8fbfd;
    color: #516274;
    font-size: 14px;
  }
  .menu-group-arrow {
    display: inline-block;
  }
  .menu-group.is-collapsed .menu-group-arrow {
    transform: rotate(-90deg);
  }
  .menu-group.is-collapsed .menu-group-items {
    display: none;
  }
  .menu-group-items {
    padding: 8px;
  }
  .menu-item {
    min-height: 42px;
    padding: 0 12px;
  }
  .editor-layout,
  .quick-task-grid,
  .grid.cols-2,
  .grid.cols-3,
  .grid.cols-4 { grid-template-columns: 1fr; }
  .schedule-slot-row {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 640px) {
  .main { padding: 18px; }
  .simple-hero { align-items: flex-start; flex-direction: column; }
  .hero-actions { width: 100%; justify-content: stretch; }
  .hero-actions .btn { flex: 1; }
  .topbar { align-items: flex-start; flex-direction: column; }
  .account { width: 100%; justify-content: space-between; }
  .menu { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .form-grid,
  .check-list { grid-template-columns: 1fr; }
  .attendance-row { grid-template-columns: 1fr; }
  .item-row { align-items: flex-start; flex-direction: column; }
  .teacher-task-list { grid-template-columns: 1fr; }
  .teacher-task-row { grid-template-columns: 40px minmax(0, 1fr); }
  .teacher-task-row i { grid-column: 2; }
}
/* Responsive hardening layer: keep complex teacher/admin workflows usable on desktop, tablet and phone. */
*, *::before, *::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  min-width: 0;
  overflow-x: hidden;
}

img,
svg,
video,
canvas {
  max-width: 100%;
}

input,
select,
textarea,
button {
  max-width: 100%;
  min-width: 0;
  font: inherit;
}

input,
select,
textarea {
  width: 100% !important;
  max-width: 100% !important;
}

input[type="file"] {
  min-width: 0 !important;
  width: 100% !important;
  white-space: normal;
}

input[type="checkbox"],
input[type="radio"] {
  width: auto !important;
  min-width: 16px !important;
  max-width: 16px !important;
  height: 16px;
  flex: 0 0 auto;
}

.check input[type="checkbox"],
.check input[type="radio"],
.question-row input[type="checkbox"],
.question-row input[type="radio"],
.attendance-row input[type="checkbox"],
.attendance-row input[type="radio"],
.selected-chip input[type="checkbox"],
.selected-chip input[type="radio"] {
  margin-top: 2px;
}

textarea {
  resize: vertical;
}

button,
.btn,
.button,
[role="button"] {
  white-space: normal;
  overflow-wrap: anywhere;
}

.app,
.page,
.page-shell,
.main,
.content,
.workspace,
.panel,
.card,
.section,
.form-card,
.table-card {
  min-width: 0;
}

.container,
.page,
.page-shell,
.main,
.content,
.workspace {
  max-width: 100%;
}

.grid,
.cards,
.card-grid,
.form-grid,
.stats-grid,
.dashboard-grid,
.management-grid,
.workflow-grid,
.lesson-grid,
.teaching-grid,
.course-grid,
.exam-grid,
.schedule-grid,
.two-column,
.three-column {
  min-width: 0;
}

.workflow-layout,
.split-grid,
.report-layout,
.message-workspace,
.exam-workspace,
.review-workspace,
.oj-layout,
.oj-main,
.training-shell,
.scratch-layout,
.delivery-steps,
.schedule-layout {
  min-width: 0;
}

.delivery-steps {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)) !important;
}

.delivery-card,
.delivery-card .form-grid,
.class-delivery-panel,
.workflow-detail,
.lesson-detail,
.question-detail,
.exam-paper,
.oj-editor-card,
.oj-statement {
  min-width: 0;
  max-width: 100%;
}

.grid.cols-3,
.grid.cols-4,
.language-overview,
.dashboard-actions {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)) !important;
}

.grid.cols-2,
.split-grid,
.report-layout {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)) !important;
}

.workflow-layout,
.question-bank-layout,
.message-workspace,
.exam-workspace,
.review-workspace {
  grid-template-columns: minmax(280px, .9fr) minmax(0, 1.1fr) !important;
}

.oj-layout,
.training-shell {
  grid-template-columns: minmax(260px, 360px) minmax(0, 1fr) !important;
}

.oj-main {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)) !important;
}

.schedule-slot-row,
.attendance-row {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)) !important;
}

.card-head,
.section-line,
.item-row,
.topbar,
.account {
  min-width: 0;
}

.card-head > *,
.section-line > *,
.item-row > *,
.topbar > *,
.account > * {
  min-width: 0;
}

.muted,
.card p,
.item-row,
.schedule-event,
.question-row,
.training-row,
.task-card,
.metric {
  overflow-wrap: anywhere;
}

.form-grid,
.workflow-grid,
.lesson-grid,
.teaching-grid,
.course-grid,
.exam-grid,
.schedule-grid,
.management-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)) !important;
}

.stats-grid,
.cards,
.card-grid,
.dashboard-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)) !important;
}

.field,
.form-field,
.form-control,
.input-group,
.select-group,
.upload-row,
.toolbar,
.actions,
.button-row,
.filters,
.filter-grid {
  min-width: 0;
}

.input-group,
.upload-row,
.toolbar,
.actions,
.button-row {
  flex-wrap: wrap;
}

.toolbar > *,
.actions > *,
.button-row > *,
.upload-row > * {
  min-width: 0 !important;
  max-width: 100% !important;
}

.card,
.panel,
.section,
.form-card,
.table-card {
  overflow: hidden;
}

.table-wrap,
.table-container,
.scroll-x,
.data-table-wrap {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

table {
  max-width: 100%;
}

.ai-assistant,
.floating-assistant,
.assistant-bot,
.chat-float,
.robot-float {
  right: clamp(12px, 2vw, 28px) !important;
  bottom: clamp(12px, 2vw, 28px) !important;
  max-width: min(96px, 18vw) !important;
  max-height: min(96px, 18vw) !important;
  pointer-events: auto;
}

@media (max-width: 1280px) {
  .page,
  .page-shell,
  .main,
  .content,
  .workspace {
    padding-left: clamp(12px, 2vw, 24px);
    padding-right: clamp(12px, 2vw, 24px);
  }

  .form-grid,
  .filter-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)) !important;
  }

  .workflow-layout,
  .question-bank-layout,
  .message-workspace,
  .exam-workspace,
  .review-workspace,
  .split-grid,
  .report-layout,
  .delivery-steps,
  .oj-layout,
  .training-shell {
    grid-template-columns: 1fr !important;
  }
}

.code-preview {
  margin: 0 0 14px;
  padding: 16px;
  border-radius: 8px;
  background: #101b28;
  color: #d8ecff;
  overflow: auto;
  line-height: 1.6;
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: 14px;
}

.program-objective-panel .objective-option {
  align-items: flex-start;
  gap: 12px;
}

.program-objective-panel .objective-option span {
  flex: 1 1 auto;
  min-width: 0;
}

.program-objective-panel .objective-option input {
  flex: 0 0 220px;
  max-width: 100%;
}

@media (max-width: 720px) {
  .program-objective-panel .objective-option {
    display: grid;
  }

  .program-objective-panel .objective-option input {
    width: 100%;
    flex-basis: auto;
  }
}

@media (max-width: 900px) {
  body {
    overflow-x: hidden;
  }

  .page,
  .page-shell,
  .main,
  .content,
  .workspace {
    padding: 12px !important;
  }

  .grid,
  .cards,
  .card-grid,
  .form-grid,
  .stats-grid,
  .dashboard-grid,
  .management-grid,
  .workflow-grid,
  .lesson-grid,
  .teaching-grid,
  .course-grid,
  .exam-grid,
  .schedule-grid,
  .two-column,
  .three-column {
    display: grid;
    grid-template-columns: 1fr !important;
  }

  .filters,
  .filter-grid,
  .toolbar,
  .actions,
  .button-row,
  .upload-row {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px;
  }

  .toolbar button,
  .actions button,
  .button-row button,
  .toolbar .btn,
  .actions .btn,
  .button-row .btn {
    width: 100%;
  }

  .card,
  .panel,
  .section,
  .form-card,
  .table-card {
    border-radius: 8px;
  }

  .oj-main,
  .oj-main.oj-stack,
  .programming-panel-stacked,
  .report-layout {
    grid-template-columns: 1fr !important;
  }

  .oj-stack .oj-editor-card .codebox,
  .program-editor-block .codebox {
    min-height: 420px;
  }

  .card-body:has(table) {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .teacher-pay-report {
    grid-column: 1 / -1;
  }

  .teacher-pay-table table,
  .table {
    min-width: 760px;
  }
}

@media (max-width: 640px) {
  h1 {
    font-size: clamp(26px, 8vw, 36px) !important;
    line-height: 1.15;
  }

  h2 {
    font-size: clamp(22px, 6vw, 30px) !important;
    line-height: 1.2;
  }

  h3 {
    font-size: clamp(18px, 5vw, 24px) !important;
  }

  input,
  select,
  textarea {
    min-height: 44px;
  }

  .card,
  .panel,
  .section,
  .form-card,
  .table-card {
    padding-left: 14px !important;
    padding-right: 14px !important;
  }

  .ai-assistant,
  .floating-assistant,
  .assistant-bot,
  .chat-float,
  .robot-float {
    display: none !important;
  }

  .main,
  .content,
  .workspace,
  .page,
  .page-shell {
    padding-left: 10px !important;
    padding-right: 10px !important;
  }

  .card-head,
  .training-detail-head,
  .page-detail-head {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .oj-stack .oj-editor-card .codebox,
  .program-editor-block .codebox {
    min-height: 340px;
  }

  .teacher-pay-table table,
  .table {
    min-width: 680px;
  }
}

/* OJ workspace upgrade: Luogu-style statement first, full-width editor second, detailed judge panel third. */
.training-index-toggle {
  display: none;
}

.oj-meta-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.oj-meta-strip > div {
  min-width: 0;
  padding: 14px;
  border: 1px solid rgba(34, 184, 207, .22);
  border-radius: 8px;
  background: linear-gradient(135deg, #ffffff, #f5fbfe);
}

.oj-meta-strip b {
  display: block;
  color: #0f2437;
  font-size: 22px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.oj-meta-strip span {
  color: #66788a;
  font-size: 13px;
  font-weight: 800;
}

.oj-result-panel {
  min-height: 150px;
  display: grid;
  gap: 12px;
  margin-top: 12px;
}

.oj-result-empty {
  display: grid;
  min-height: 120px;
  place-items: center;
  border: 1px dashed rgba(34, 184, 207, .32);
  border-radius: 8px;
  color: #66788a;
  background: #f8fcff;
  font-weight: 900;
}

.oj-result-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-width: 0;
  padding: 16px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: #fff;
}

.oj-result-summary b {
  display: block;
  margin-bottom: 4px;
  font-size: 22px;
}

.oj-result-summary span {
  color: #66788a;
  font-weight: 800;
}

.oj-result-score {
  display: grid;
  place-items: center;
  width: 78px;
  height: 62px;
  border-radius: 8px;
  background: #f3f7fa;
  color: #0f2437;
  font-size: 24px;
  font-weight: 1000;
}

.oj-result-score small {
  font-size: 12px;
  color: #66788a;
}

.oj-result-summary.accepted,
.oj-case.accepted {
  border-color: rgba(18, 183, 106, .35);
  background: #f0fff7;
}

.oj-result-summary.wrong,
.oj-case.wrong {
  border-color: rgba(240, 68, 56, .32);
  background: #fff5f5;
}

.oj-result-summary.timeout,
.oj-case.timeout,
.oj-result-summary.memory,
.oj-case.memory {
  border-color: rgba(247, 144, 9, .34);
  background: #fff8ed;
}

.oj-result-summary.error,
.oj-case.error {
  border-color: rgba(177, 64, 255, .25);
  background: #fbf6ff;
}

.oj-case-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: 10px;
}

.oj-case-grid.compact {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
}

.oj-case {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}

.oj-case summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  padding: 12px;
  cursor: pointer;
}

.oj-case-static {
  display: grid;
  gap: 8px;
  padding: 12px;
}

.oj-case summary span,
.oj-case summary em,
.oj-case-static span,
.oj-case-static em {
  min-width: 0;
  overflow-wrap: anywhere;
}

.oj-case summary b {
  font-size: 13px;
}

.oj-case summary em {
  grid-column: 1 / -1;
  color: #66788a;
  font-style: normal;
  font-size: 12px;
  font-weight: 800;
}

.oj-case-static em {
  color: #66788a;
  font-style: normal;
  font-size: 12px;
  font-weight: 800;
}

.oj-case-detail {
  display: grid;
  gap: 10px;
  padding: 0 12px 12px;
}

.oj-case-detail label {
  display: grid;
  gap: 6px;
  color: #344054;
  font-size: 13px;
  font-weight: 900;
}

.oj-case-detail pre,
.oj-test-overview pre,
.oj-case pre {
  max-height: 180px;
  margin: 0;
  overflow: auto;
  padding: 10px;
  border-radius: 8px;
  background: #101b28;
  color: #d8ecff;
  font-family: Consolas, Monaco, monospace;
  font-size: 13px;
  white-space: pre-wrap;
}

.oj-test-overview {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  background: #f8fcff;
}

.oj-test-overview > summary {
  cursor: pointer;
  font-weight: 900;
  color: #0b7c8c;
}

.oj-editor-card .toolbar label {
  min-width: min(100%, 220px);
}

@media (max-width: 900px) {
  .training-shell {
    position: relative;
    display: block;
  }

  .training-index-toggle {
    position: sticky;
    top: 8px;
    z-index: 6;
    display: inline-flex;
    margin-bottom: 10px;
  }

  .training-index {
    display: none;
    position: static;
    margin-bottom: 14px;
  }

  .training-shell.show-index .training-index {
    display: block;
  }

  .training-list {
    max-height: 52vh;
  }

  .oj-meta-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .oj-result-summary {
    align-items: stretch;
    flex-direction: column;
  }

  .oj-result-score {
    width: 100%;
    height: auto;
    min-height: 54px;
  }
}

@media (max-width: 520px) {
  .oj-meta-strip {
    grid-template-columns: 1fr;
  }

  .oj-case summary {
    grid-template-columns: 1fr;
  }

  .training-row {
    display: grid !important;
    grid-template-columns: 1fr;
  }
}

/* System-wide navigation and page-completeness rules. */
.topbar { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; }
.topbar-title { min-width: 0; }
.topbar-title h1, .topbar-title p { overflow-wrap: anywhere; }
.topbar-back { display: inline-flex; align-items: center; gap: 7px; max-width: 220px; }
.page-detail-head > div { min-width: 0; }
.page-detail-head h2, .page-detail-head p { overflow-wrap: anywhere; }
fieldset, details, summary { min-width: 0; max-width: 100%; }
.item, .item-row, .toolbar, .actions, .button-row { max-width: 100%; }
.card-body > table.table,
.card-body > table,
.item > table.table {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.card-body > table.table > thead,
.card-body > table.table > tbody,
.card-body > table > thead,
.card-body > table > tbody { min-width: 720px; }
.question-row, .task-card, .schedule-event, .class-list-item { max-width: 100%; }
.site-footer { flex-wrap: wrap; gap: 8px 16px; }
@media (max-width: 820px) {
  .topbar { grid-template-columns: auto minmax(0, 1fr); align-items: start; }
  .topbar .account { grid-column: 1 / -1; width: 100%; }
  .topbar-back { max-width: min(42vw, 190px); }
  .page-detail-head { align-items: stretch; flex-wrap: wrap; }
  .page-detail-head > .btn { flex: 0 1 auto; }
}
@media (max-width: 600px) {
  .topbar { grid-template-columns: 1fr; }
  .topbar-back { width: 100%; max-width: none; justify-content: flex-start; }
  .topbar .account { grid-column: auto; }
  .page-detail-head > .btn { width: 100%; }
  .site-footer { justify-content: center; }
}

/* 拾数者品牌层：保持原业务组件兼容，仅统一视觉与交互质感。 */
.brand {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 8px 8px 18px;
}

.brand-mark {
  display: inline-grid;
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 13px;
  color: #fff;
  background: linear-gradient(135deg, #765ff4 0%, #4e6ff5 100%);
  box-shadow: 0 8px 18px rgba(91, 82, 222, .24);
  font-size: 22px;
  font-weight: 1000;
}

.brand-mark-login { width: 52px; height: 52px; border-radius: 15px; font-size: 27px; }
.brand-copy { display: grid; gap: 2px; }
.brand-copy strong { color: var(--ink); font-size: 18px; letter-spacing: .08em; }
.brand-copy small { color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .12em; }
.login-card .login-brand-logo {
  width: 100%;
  height: auto;
  max-height: 104px;
  object-fit: contain;
  object-position: left center;
}
.brand .brand-logo {
  width: 100%;
  max-width: 204px;
  height: 64px;
  object-fit: contain;
  object-position: left center;
}
.site-filing,
.site-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px 10px;
  width: 100%;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
  text-align: center;
}
.site-filing span,
.site-footer span { margin-right: 0; }
.site-filing a,
.site-footer a { color: inherit; text-decoration: none; }
.site-filing a:hover,
.site-footer a:hover { color: var(--brand-dark); text-decoration: underline; }
.site-filing { flex: 0 0 auto; padding: 18px 8px 0; }
.site-footer { flex: 0 0 auto; padding: 18px 24px 0; }
.login-kicker { margin: 0 0 7px; color: var(--brand-dark); font-size: 11px; font-weight: 900; letter-spacing: .16em; }
.login-intro { margin-top: 8px !important; }
.login-submit { min-height: 46px; }

.menu-item.active,
.menu-item:hover {
  border-color: rgba(102,92,246,.24);
  background: rgba(102,92,246,.09);
  color: #4d43ca;
}

.panel, .card, .stat-card, .account { border-color: var(--line); }
.panel, .card, .stat-card { box-shadow: 0 8px 24px rgba(42, 35, 92, .045); }
.btn.primary { background: linear-gradient(135deg, #675cf5, #536ff4); border-color: transparent; }
.btn.primary:hover { filter: brightness(.96); box-shadow: 0 7px 16px rgba(91, 82, 222, .22); }
input:focus, select:focus, textarea:focus { outline: 3px solid rgba(102,92,246,.12); border-color: #756cf0; }

@media (max-width: 760px) {
  .login-screen { padding: 14px; }
  .login-card { padding: 22px; }
  .site-filing,
  .site-footer { flex-direction: column; gap: 2px; }
  .brand { border-bottom: 0; padding-bottom: 8px; }
  .brand-copy small { display: none; }
}

/* 教师作业管理：列表优先，新建按需展开。 */
.assignment-management-shell { display: grid; gap: 16px; }

.assignment-overview {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.assignment-overview > div {
  display: grid;
  gap: 8px;
  min-width: 0;
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 6px 18px rgba(42, 35, 92, .035);
}

.assignment-overview span { color: var(--muted); font-size: 13px; font-weight: 800; }
.assignment-overview b { color: var(--ink); font-size: 25px; line-height: 1; }

.assignment-create-panel {
  border-color: rgba(102, 92, 246, .24);
  box-shadow: 0 14px 34px rgba(79, 70, 201, .08);
}

.assignment-create-panel .card-head {
  align-items: flex-start;
  background: linear-gradient(100deg, rgba(102, 92, 246, .07), rgba(79, 110, 247, .025));
}

.step-kicker {
  display: block;
  margin-bottom: 5px;
  color: var(--brand-dark);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
}

.assignment-create-form { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.assignment-question-step {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fafaff;
  overflow: hidden;
}

.assignment-question-step > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 15px 17px;
  cursor: pointer;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.assignment-question-step > summary span:first-child { display: grid; gap: 3px; }
.assignment-question-step > summary b { color: var(--ink); font-size: 15px; }
.assignment-question-step > summary small { color: var(--muted); font-weight: 700; }
.assignment-question-step .builder-panel { border: 0; border-top: 1px solid var(--line); border-radius: 0; }

.assignment-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding-top: 2px;
}

.assignment-list-card .class-filterbar {
  grid-template-columns: minmax(220px, 1.5fr) minmax(170px, .8fr) minmax(150px, .7fr) auto;
  align-items: end;
}

.assignment-list-card .class-filterbar > .small { align-self: center; white-space: nowrap; }
.assignment-list-card .scale-card-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }

@media (max-width: 1100px) {
  .assignment-create-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .assignment-list-card .class-filterbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  .assignment-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .assignment-create-form,
  .assignment-list-card .class-filterbar,
  .assignment-list-card .scale-card-list { grid-template-columns: 1fr; }
  .assignment-create-panel .card-head,
  .assignment-list-card .card-head { align-items: stretch; }
  .assignment-create-panel .card-head > .btn,
  .assignment-list-card .card-head > .btn { width: 100%; }
  .assignment-form-actions { position: sticky; bottom: 0; z-index: 3; padding: 12px; margin: 0 -12px -12px; background: rgba(255,255,255,.96); }
  .assignment-form-actions .btn { flex: 1; }
}
.question-taxonomy .card-body > .taxonomy-section:not(:first-child) { display: none; }
.question-taxonomy[data-selected-language="C++"] .card-body > .taxonomy-section:nth-child(2),
.question-taxonomy[data-selected-language="C++"] .card-body > .taxonomy-section:nth-child(4),
.question-taxonomy[data-selected-language="Python"] .card-body > .taxonomy-section:nth-child(3),
.question-taxonomy[data-selected-language="Scratch"] .card-body > .taxonomy-section:nth-child(5) { display: block; }
.question-taxonomy[data-selected-language="C++"][data-selected-track="CSP"] .card-body > .taxonomy-section:nth-child(4) { display: none; }
.question-taxonomy[data-selected-language="C++"][data-selected-track="CSP"] .card-body > .taxonomy-section:nth-child(6) { display: block; }
.source-image-panel { margin: 16px 0; border: 1px solid var(--line, #dfe5ef); border-radius: 12px; background: #f8fbff; overflow: hidden; }
.source-image-panel summary { cursor: pointer; padding: 12px 14px; font-weight: 700; color: #075985; }
.source-image-panel img { display: block; width: 100%; height: auto; max-height: 900px; object-fit: contain; background: #fff; border-top: 1px solid var(--line, #dfe5ef); }
.formatted-statement,
.statement-text {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.75;
}
.submission-answer-detail { margin-top: 8px; min-width: 130px; }
.submission-answer-detail > summary { cursor: pointer; color: var(--brand-dark); font-weight: 800; white-space: nowrap; }
.submission-answer-detail pre { max-width: 520px; max-height: 280px; margin: 8px 0; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; }
.exam-answer-detail { min-width: 220px; }
.exam-answer-row { display: grid; gap: 7px; min-width: 320px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.exam-answer-row:last-child { border-bottom: 0; }
.formatted-statement { margin: 10px 0 18px; color: var(--ink); }
.statement-text {
  margin: 8px 0 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
}

/* Cross-browser touch and responsive hardening. */
.roster-field { display: grid; gap: 7px; color: #344054; font-size: 13px; font-weight: 900; }
.roster-field .check { font-weight: 700; }
.checkbox-field { display: grid; gap: 7px; min-width: 0; }
.field-label { color: #344054; font-size: 13px; font-weight: 900; }
html { text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
body { min-height: 100vh; min-height: 100dvh; }
button, .btn, input, select, textarea { touch-action: manipulation; }
button, .btn, [role="button"] { min-height: 42px; }
summary, label, button, .btn, .menu-item { -webkit-tap-highlight-color: rgba(91, 91, 214, .14); }
.view-stack, .workflow-detail, .workflow-builder, .workflow-list, .card-body, .item, .metric, details { min-width: 0; max-width: 100%; }
.formatted-statement, pre, code { overflow-wrap: anywhere; word-break: break-word; }
.modal { overscroll-behavior: contain; }
.modal-panel { width: min(1180px, calc(100vw - 24px)); max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); overflow: auto; }

@media (pointer: coarse) {
  button, .btn, .menu-item, summary { min-height: 44px; }
  input[type="checkbox"], input[type="radio"] { width: 20px !important; min-width: 20px !important; max-width: 20px !important; height: 20px; }
}

@media (max-width: 900px) {
  .main { padding: 16px; }
  .card-head, .card-body { padding-left: 14px; padding-right: 14px; }
  .filterbar, .builder-filters, .scale-filterbar, .class-filterbar { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .roster-tools > * { flex: 1 1 150px; }
  .roster-tools [data-roster-count] { flex-basis: 100%; margin-left: 0; }
  .assignment-question-review-grid { grid-template-columns: 1fr; }
  .exam-score-builder .item-row { align-items: stretch; }
}

@media (max-width: 600px) {
  .main { padding: 10px; }
  .topbar { padding: 14px; }
  .topbar h1 { font-size: clamp(24px, 8vw, 34px); }
  .card-head, .card-body, .item { padding-left: 12px; padding-right: 12px; }
  .filterbar, .builder-filters, .scale-filterbar, .class-filterbar { grid-template-columns: 1fr !important; }
  .toolbar > .btn, .actions > .btn, .button-row > .btn { flex: 1 1 140px; }
  .roster-tools > * { flex-basis: 100%; width: 100%; }
  input, select, textarea { font-size: 16px !important; }
  .site-footer { flex-direction: column; text-align: center; }
  .modal { padding: 6px; }
  .modal-panel { width: calc(100vw - 12px); max-height: calc(100vh - 12px); max-height: calc(100dvh - 12px); border-radius: 12px; }
}

@supports (padding: max(0px)) {
  .sidebar { padding-left: max(12px, env(safe-area-inset-left)); }
  .main { padding-right: max(10px, env(safe-area-inset-right)); padding-bottom: max(18px, env(safe-area-inset-bottom)); }
}

/* Question taxonomy visibility follows the selected certification system. */
.question-taxonomy[data-selected-language="C++"] .taxonomy-section:nth-child(2),
.question-taxonomy[data-selected-language="C++"] .taxonomy-section:nth-child(3),
.question-taxonomy[data-selected-language="C++"] .taxonomy-section:nth-child(5),
.question-taxonomy[data-selected-language="C++"] .taxonomy-section:nth-child(7),
.question-taxonomy[data-selected-language="Python"] .taxonomy-section:nth-child(2),
.question-taxonomy[data-selected-language="Python"] .taxonomy-section:nth-child(4),
.question-taxonomy[data-selected-language="Scratch"] .taxonomy-section:nth-child(2),
.question-taxonomy[data-selected-language="Scratch"] .taxonomy-section:nth-child(6) { display: block; }
.question-taxonomy[data-selected-language="C++"][data-selected-track="GESP"] .taxonomy-section:nth-child(3),
.question-taxonomy[data-selected-language="C++"][data-selected-track="GESP"] .taxonomy-section:nth-child(7) { display: none; }
.question-taxonomy[data-selected-language="C++"][data-selected-track="CSP-J"] .taxonomy-section:nth-child(2),
.question-taxonomy[data-selected-language="C++"][data-selected-track="CSP-J"] .taxonomy-section:nth-child(5),
.question-taxonomy[data-selected-language="C++"][data-selected-track="CSP-S"] .taxonomy-section:nth-child(2),
.question-taxonomy[data-selected-language="C++"][data-selected-track="CSP-S"] .taxonomy-section:nth-child(5) { display: none; }
.question-taxonomy[data-selected-language="C++"] .taxonomy-section:nth-child(4),
.question-taxonomy[data-selected-language="C++"] .taxonomy-section:nth-child(6) { display: none; }

/* Phase 2: curriculum, mastery, intervention and parent reporting. */
.learning-hero { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:28px; margin-bottom:20px; border:1px solid #dfe5ff; border-radius:24px; background:linear-gradient(135deg,#fff 0%,#f1f4ff 100%); }
.learning-hero h2 { margin:4px 0 8px; font-size:clamp(26px,3vw,42px); }
.learning-layout { display:grid; grid-template-columns:minmax(0,2fr) minmax(280px,1fr); gap:18px; margin-top:18px; align-items:start; }
.learning-side { display:grid; gap:18px; }
.learning-course-list,.chapter-list { display:grid; gap:14px; }
.learning-course { padding:16px; border:1px solid var(--line); border-radius:18px; }
.learning-progress { height:9px; overflow:hidden; margin:10px 0 14px; border-radius:999px; background:#e9ecf7; }
.learning-progress i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#5b5bd6,#39b6cc); }
.chapter-card { display:grid; grid-template-columns:42px minmax(0,1fr) auto; align-items:center; gap:12px; padding:13px; border-radius:14px; background:#f8f9fc; }
.chapter-card.locked { color:#7b8195; background:#f3f4f8; }
.chapter-card small,.mastery-row small,.item small { display:block; margin-top:4px; color:var(--muted); }
.chapter-index { display:grid; place-items:center; width:36px; height:36px; border-radius:50%; background:#e5e8ff; color:#4545bd; font-weight:900; }
.mastery-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 0; border-bottom:1px solid var(--line); }
.mastery-row:last-child { border-bottom:0; }
.report-course { padding:12px 0; }
.parent-term-reviews { margin-top:18px; }
.parent-term-review { border:1px solid var(--line, #e2e6f0); border-radius:14px; overflow:hidden; margin-bottom:12px; background:#fff; }
.parent-term-review summary { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px; cursor:pointer; list-style:none; }
.parent-term-review summary::-webkit-details-marker { display:none; }
.parent-term-review summary span:first-child { display:grid; gap:5px; min-width:0; }
.parent-term-review summary small { color:var(--muted, #69748b); font-weight:400; }
.parent-term-review-content { border-top:1px solid var(--line, #e2e6f0); padding:18px; line-height:1.9; overflow-wrap:anywhere; color:#303b52; }
@media (max-width:600px) { .parent-term-review summary { align-items:flex-start; } .parent-term-review-content { padding:15px; } }
.report-advice { margin-top:18px; padding:16px; border-radius:14px; background:#f0f7ff; }
.training-picker { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; max-height:360px; padding:10px; overflow:auto; border:1px solid var(--line); border-radius:14px; }

@media (max-width:900px) { .learning-layout { grid-template-columns:1fr; } .learning-hero { align-items:flex-start; flex-direction:column; } }
@media (max-width:600px) { .learning-hero { padding:18px; border-radius:16px; } .chapter-card { grid-template-columns:36px minmax(0,1fr); } .chapter-card > :last-child { grid-column:2; width:100%; } .training-picker { grid-template-columns:1fr; } }

/* Layout integrity layer: one predictable responsive contract for every module. */
.view.active, .view.active > *, .management-stack, .workflow-detail, .class-detail-card,
.class-detail-card .card-body, .class-delivery-panel, .delivery-steps, .delivery-card {
  width: 100%; min-width: 0; max-width: 100%;
}
.card { overflow: hidden; }
.card-head, .card-body, .card-foot { min-width: 0; max-width: 100%; }
.card-body { overflow-wrap: anywhere; }
.card-body > :first-child { margin-top: 0; }
.card-body > :last-child { margin-bottom: 0; }
.filterbar, .class-filterbar, .scale-filterbar, .builder-filters {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr)) !important;
  gap: 12px; align-items: end;
}
.filterbar > *, .class-filterbar > *, .form-grid > *, .grid > *, .split-grid > *, .delivery-steps > * { min-width: 0; }
.class-list-item { display: block; width: 100%; max-width: 100%; overflow: hidden; text-align: left; }
.class-list-item h3, .class-detail-card h2, .class-detail-card h3 { overflow-wrap: anywhere; }
#classScheduleForm .schedule-slot-row, #classForm .schedule-slot-row {
  grid-template-columns: minmax(112px, 1.15fr) minmax(108px, 1fr) minmax(108px, 1fr) minmax(84px, .7fr) 48px !important;
  align-items: end;
}
#classScheduleForm .schedule-slot-row > label, #classForm .schedule-slot-row > label { min-width: 0; }
#classScheduleForm .schedule-slot-row .icon-btn, #classForm .schedule-slot-row .icon-btn {
  width: 48px; min-width: 48px !important; padding: 0 6px;
}
.roster-tools { display: grid; grid-template-columns: minmax(150px, 1fr) repeat(3, auto); gap: 8px; align-items: center; }
.roster-tools [data-roster-count] { grid-column: 1 / -1; }
.roster-check-list {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); gap: 8px;
  max-height: 420px; overflow: auto; overscroll-behavior: contain;
}
.table-wrap, .scale-table-wrap, .data-table-wrap {
  width: 100%; max-width: 100%; overflow-x: auto; overflow-y: visible; scrollbar-gutter: stable;
}
.table-wrap table, .scale-table-wrap table, .data-table-wrap table { width: 100%; }
table th, table td { vertical-align: top; overflow-wrap: anywhere; }
table td .toolbar, table td .actions { min-width: max-content; }
.lesson-document-frame, iframe, .material-viewer, .lesson-material-image, .source-image-panel img { width: 100%; max-width: 100%; }
.modal { padding: clamp(6px, 2vw, 24px); }
.modal-panel { max-width: min(1180px, calc(100vw - 12px)); overscroll-behavior: contain; }
.codebox, pre, .console { max-width: 100%; overflow: auto; }
@media (max-width: 1180px) {
  .split-grid, .class-detail-card .grid.cols-2, .delivery-steps { grid-template-columns: 1fr !important; }
  .workflow-list .card-body { max-height: none; overflow: visible; }
}
@media (max-width: 820px) {
  #classScheduleForm .schedule-slot-row, #classForm .schedule-slot-row { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  #classScheduleForm .schedule-slot-row .icon-btn, #classForm .schedule-slot-row .icon-btn { width: 100%; max-width: none; }
  .roster-tools { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .roster-tools > * { width: 100%; }
  .calendar-actions { width: 100%; justify-content: stretch; }
  .calendar-actions > * { flex: 1 1 160px; }
  .schedule-card .card-body { padding-left: 10px; padding-right: 10px; }
}
@media (max-width: 600px) {
  .card, .panel, .section, .form-card, .table-card { padding-left: 0 !important; padding-right: 0 !important; }
  .card-head, .card-body, .card-foot { padding-left: 12px; padding-right: 12px; }
  #classScheduleForm .schedule-slot-row, #classForm .schedule-slot-row, .roster-tools { grid-template-columns: 1fr !important; }
  .roster-tools [data-roster-count] { grid-column: auto; }
  .roster-check-list { grid-template-columns: 1fr; max-height: 360px; }
  .section-line { align-items: stretch; flex-direction: column; }
  .section-line .btn { width: 100%; }
  .account { display: grid; grid-template-columns: minmax(0,1fr) auto; }
  .account label { grid-column: 1 / -1; }
  .table-wrap .table, .scale-table-wrap table, .data-table-wrap table { min-width: 620px; }
}

/* Curriculum manager stays inside the learning-system route. */
.analytics-report-layout {
  display: block !important;
  width: 100%;
  min-width: 0;
}

/* Touch browsers (including Huawei Browser/WebView): keep taps stable and prevent editor zoom. */
button,
[role="button"],
input,
select,
textarea { touch-action: manipulation; }
@media (pointer: coarse) {
  input,
  select,
  textarea,
  .codebox { font-size: 16px; }
  .btn,
  .link-btn,
  .icon-btn { min-height: 44px; }
  .table-wrap { -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
}
.analytics-report-layout > .report-wide,
.analytics-mode-panel,
.analytics-mode-panel > .card {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.analytics-mode-panel { margin-top: 14px; }
.analytics-student-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.analytics-mode-panel .table-wrap {
  width: 100%;
  max-width: 100%;
}
.analytics-mode-panel .table { table-layout: auto; }
.analytics-mode-panel .table th,
.analytics-mode-panel .table td { white-space: normal; }
@media (min-width: 1700px) {
  .analytics-student-split {
    grid-template-columns: minmax(720px, .95fr) minmax(520px, 1.05fr);
  }
}
@media (max-width: 820px) {
  .analytics-mode-panel .card-head {
    align-items: stretch;
    flex-direction: column;
  }
  .analytics-mode-panel .card-head > .btn { width: 100%; }
}

/* Curriculum manager stays inside the learning-system route. */
.curriculum-manager { display: grid; gap: 16px; min-width: 0; }
.curriculum-manager .page-detail-head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; }
.curriculum-warning { border-color: rgba(240,140,0,.35); background: #fffaf0; }
.chapter-manage-list { display: grid; gap: 12px; }
.chapter-manage-card { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 14px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: #fbfcff; }
.chapter-manage-index { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: #e7e9ff; color: var(--brand-dark); font-size: 18px; font-weight: 900; }
.chapter-manage-content { min-width: 0; }
.chapter-manage-content h3 { margin: 0; }
.chapter-manage-content p { margin: 10px 0; color: var(--muted); }
.chapter-lesson-list { display: flex; flex-wrap: wrap; gap: 8px; }
.chapter-lesson-chip { max-width: 100%; padding: 7px 10px; border: 1px solid #dfe3f3; border-radius: 999px; background: #fff; overflow-wrap: anywhere; }
.chapter-lesson-picker { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; max-height: 360px; padding: 10px; overflow: auto; border: 1px solid var(--line); border-radius: 10px; }
.curriculum-course-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
@media (max-width: 720px) {
  .curriculum-manager .page-detail-head { grid-template-columns: 1fr; align-items: stretch; }
  .curriculum-manager .page-detail-head .btn { width: 100%; }
  .chapter-lesson-picker { grid-template-columns: 1fr; }
  .curriculum-course-row { align-items: stretch; flex-direction: column; }
  .curriculum-course-row .btn { width: 100%; }
}
@media (max-width: 520px) {
  .chapter-manage-card { grid-template-columns: 1fr; padding: 12px; }
  .chapter-manage-index { width: 36px; height: 36px; }
}
.assignment-answer-shell {
  width: 100%;
  min-width: 0;
  display: grid;
  gap: 14px;
}

.assignment-answer-head {
  position: relative;
  z-index: 1;
}

.assignment-answer-shell .training-main {
  width: 100%;
  min-width: 0;
}

@media (max-width: 900px) {
  .assignment-answer-head {
    grid-template-columns: 1fr !important;
    align-items: stretch;
  }

  .assignment-answer-head > .btn {
    width: 100%;
  }

  .assignment-answer-shell .oj-main {
    margin-top: 0;
  }
}
.knowledge-graph-card{margin-top:18px}.graph-quality{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.graph-quality span{padding:8px 12px;border-radius:10px;background:#f4f6fb}.graph-quality .danger{background:#fff0f0;color:#c62828}.knowledge-domain-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.knowledge-domain{border:1px solid #e3e7f2;border-radius:16px;padding:16px;background:#fbfcff}.knowledge-domain h3{margin:0 0 6px}.knowledge-domain>p{color:#667085;min-height:42px}.knowledge-node-list{display:grid;gap:8px}.knowledge-node{width:100%;text-align:left;border:1px solid #dce2ee;border-radius:12px;padding:10px 12px;background:#fff;color:#101828}.knowledge-node b,.knowledge-node small{display:block}.knowledge-node small{margin-top:4px;color:#667085}.graph-mastered{border-color:#5ecb8a;background:#effbf4}.graph-learning{border-color:#f2bd50;background:#fff9e9}.graph-weak{border-color:#ef7b7b;background:#fff2f2}.graph-unlearned{background:#f5f6f8;color:#667085}.graph-neutral{border-left:4px solid #625bf6}@media(max-width:900px){.knowledge-domain-grid{grid-template-columns:1fr}.knowledge-domain>p{min-height:0}}

/* AI coach: structured, readable and touch-friendly instead of a raw model paragraph. */
.ai-help-actions { margin-top: 10px; }
.ai-help-result { margin-top: 12px; }
.ai-practice-panel { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; align-items:center; margin-top:16px; padding:16px; border:1px solid #d9e2ff; border-radius:16px; background:linear-gradient(135deg,#f5f7ff,#fff); }
.ai-practice-panel p { margin:4px 0 0; color:#667085; line-height:1.55; }
.ai-practice-result { grid-column:1/-1; }
.ai-practice-result:not([hidden]) { display:block !important; }
.ai-practice-result,.ai-practice-result * { animation:none !important; transition:none !important; }
.ai-practice-result { contain:layout paint; overflow-anchor:none; }
.ai-practice-error { padding:12px 14px; border:1px solid #fecaca; border-radius:12px; background:#fff1f2; color:#b42318; line-height:1.6; }
.ai-practice-answer { padding:15px 16px; border-radius:13px; background:#eef2ff; color:#17213b; line-height:1.75; }
.ai-practice-answer span { display:block; margin-bottom:5px; color:#5149df; font-weight:900; }
.ai-practice-answer p { margin:0; color:#17213b; overflow-wrap:anywhere; }
.ai-practice-text { margin:0; color:#17213b; line-height:1.85; overflow-wrap:anywhere; white-space:pre-wrap; }
.ai-practice-answer small { display:block; margin-top:9px; color:#667085; }
@media(max-width:720px){.ai-practice-panel{grid-template-columns:1fr}.ai-practice-panel .btn{width:100%}.ai-practice-result{grid-column:1}}
.ai-coach-card { overflow: hidden; border: 1px solid #d9e2ff; border-radius: 18px; background: linear-gradient(145deg,#f7f9ff 0%,#fff 62%); box-shadow: 0 10px 28px rgba(52,73,140,.09); color: #17213b; }
.ai-coach-head { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: 1px solid #e5eaff; background: rgba(239,243,255,.72); }
.ai-coach-head > div { min-width: 0; }
.ai-coach-head b, .ai-coach-head small { display: block; }
.ai-coach-head b { font-size: 16px; }
.ai-coach-head small { margin-top: 3px; color: #667085; line-height: 1.5; }
.ai-coach-avatar { display: grid; flex: 0 0 40px; width: 40px; height: 40px; place-items: center; border-radius: 13px; background: linear-gradient(135deg,#625bf6,#4b8dff); color: #fff; font-size: 13px; font-weight: 900; box-shadow: 0 6px 16px rgba(98,91,246,.25); }
.ai-coach-body { display: grid; gap: 14px; padding: 18px; }
.ai-coach-summary { padding: 14px 16px; border-left: 4px solid #625bf6; border-radius: 0 12px 12px 0; background: #f5f6ff; }
.ai-coach-summary span { display: block; margin-bottom: 5px; color: #625bf6; font-size: 12px; font-weight: 800; }
.ai-coach-summary p, .ai-coach-followup p { margin: 0; line-height: 1.75; overflow-wrap: anywhere; }
.ai-coach-steps > b { display: block; margin-bottom: 9px; }
.ai-coach-steps ol { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; counter-reset: ai-step; }
.ai-coach-steps li { position: relative; min-height: 34px; padding: 8px 10px 8px 44px; border: 1px solid #e5e9f4; border-radius: 11px; background: #fff; line-height: 1.65; overflow-wrap: anywhere; counter-increment: ai-step; }
.ai-coach-steps li::before { content: counter(ai-step); position: absolute; top: 8px; left: 10px; display: grid; width: 25px; height: 25px; place-items: center; border-radius: 8px; background: #edf0ff; color: #5149df; font-size: 12px; font-weight: 900; }
.ai-coach-followup { padding: 14px 16px; border: 1px solid #f3d79a; border-radius: 12px; background: #fffaf0; }
.ai-coach-followup[hidden] { display: none; }
.ai-coach-followup b { display: block; margin-bottom: 6px; color: #8a5a00; }
.ai-coach-followup p + p { margin-top: 7px; }
.ai-coach-actions { display: flex; flex-wrap: wrap; gap: 9px; padding: 0 18px 14px; }
.ai-coach-actions .btn { min-height: 42px; }
.ai-coach-status { min-height: 20px; padding: 0 18px 10px; color: #166534; font-weight: 700; }
.ai-coach-note { display: block; padding: 11px 18px; border-top: 1px solid #edf0f6; background: #fafbfc; color: #7a8295; line-height: 1.55; }
@media (max-width: 680px) {
  .ai-coach-card { border-radius: 14px; }
  .ai-coach-head, .ai-coach-body { padding: 14px; }
  .ai-coach-actions { display: grid; grid-template-columns: 1fr; padding: 0 14px 14px; }
  .ai-coach-actions .btn { width: 100%; white-space: normal; }
  .ai-coach-status { padding-inline: 14px; }
}
.smart-paper-panel{border:1px solid #cfd5ff;border-radius:16px;padding:16px;background:#f8f8ff}.smart-paper-panel .form-grid{margin-top:12px}.smart-paper-panel fieldset{display:flex;gap:8px;flex-wrap:wrap}.smart-paper-panel .check{display:flex;align-items:center;gap:5px}
.knowledge-route-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px;margin:4px 0 20px}.knowledge-route-wrap{position:relative;min-width:0}.knowledge-route-arrow{position:absolute;top:50%;right:-30px;transform:translateY(-50%);color:#625bf6;font-size:26px;font-weight:900}.knowledge-route-step{width:100%;min-height:112px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px;border:1px solid #dfe4f2;border-radius:18px;background:linear-gradient(145deg,#fff,#f7f8ff);text-align:left;color:#101828;box-shadow:0 8px 24px rgba(45,55,100,.07);cursor:pointer}.knowledge-route-step>span{display:grid;width:42px;height:42px;place-items:center;border-radius:14px;background:#625bf6;color:#fff;font-weight:900}.knowledge-route-step b,.knowledge-route-step small{display:block}.knowledge-route-step b{font-size:18px}.knowledge-route-step small{margin:5px 0 8px;color:#667085}.knowledge-route-step>i{font-style:normal;color:#625bf6;font-size:12px}.knowledge-route-step.has-weak{border-color:#f0a0a0;background:linear-gradient(145deg,#fff,#fff5f5)}.knowledge-route-step.has-weak>span{background:#e5484d}.knowledge-route-step.is-mastered{border-color:#8ed6aa;background:linear-gradient(145deg,#fff,#f2fff7)}.knowledge-route-step.is-mastered>span{background:#209b59}.knowledge-tree-domain{display:block;margin-bottom:14px;border:1px solid #e1e6f1;border-radius:18px;background:#fff;overflow:hidden}.knowledge-tree-domain>summary{display:grid;grid-template-columns:46px minmax(0,1fr) auto 24px;align-items:center;gap:14px;padding:16px;cursor:pointer;list-style:none;background:#f8f9fd}.knowledge-tree-domain>summary::-webkit-details-marker,.knowledge-tree-group>summary::-webkit-details-marker{display:none}.knowledge-tree-domain>summary h3,.knowledge-tree-domain>summary p{margin:0}.knowledge-tree-domain>summary p{margin-top:4px;color:#667085}.knowledge-tree-domain>summary>b{text-align:center;font-size:20px}.knowledge-tree-domain>summary>b small{display:block;color:#7a8295;font-size:11px}.knowledge-tree-domain>summary>i{font-style:normal;transition:transform .2s}.knowledge-tree-domain[open]>summary>i{transform:rotate(180deg)}.knowledge-tree-groups{padding:14px}.knowledge-tree-group{border:1px solid #edf0f6;border-radius:14px;margin-bottom:10px;overflow:hidden}.knowledge-tree-group>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;list-style:none;background:#fbfcff}.knowledge-tree-group>summary h4{margin:0}.knowledge-tree-group>summary span{color:#7a8295;font-size:12px}.knowledge-tree-path{padding:10px}.knowledge-detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.knowledge-detail-actions .btn{min-height:44px}.knowledge-weak-link{min-width:0;flex:1;border:0;background:transparent;padding:0;text-align:left;color:inherit;cursor:pointer}.knowledge-weak-link b,.knowledge-weak-link small{display:block}.knowledge-weak-link small{margin-top:4px;color:#667085}.weak-knowledge-card .mastery-row{gap:10px}.weak-knowledge-card .mastery-row .btn{flex:0 0 auto}@media(max-width:1000px){.knowledge-route-overview{grid-template-columns:1fr;gap:12px}.knowledge-route-arrow{display:none}.knowledge-route-step{min-height:90px}.knowledge-tree-layout.has-detail{grid-template-columns:1fr}.knowledge-detail-panel{position:static}}@media(max-width:600px){.knowledge-route-step{grid-template-columns:38px minmax(0,1fr);padding:13px}.knowledge-route-step>span{width:38px;height:38px}.knowledge-route-step>i{grid-column:2}.knowledge-tree-domain>summary{grid-template-columns:38px minmax(0,1fr) auto;padding:12px}.knowledge-tree-domain>summary>i{display:none}.knowledge-tree-domain>summary p{display:none}.knowledge-tree-groups{padding:9px}.knowledge-detail-actions{grid-template-columns:1fr}.weak-knowledge-card .mastery-row{align-items:stretch;flex-direction:column}.weak-knowledge-card .mastery-row .btn{width:100%}}
/* Visual knowledge constellation. */
.knowledge-graph-card{overflow:hidden;background:radial-gradient(circle at 8% 12%,rgba(99,91,246,.12),transparent 27%),radial-gradient(circle at 92% 20%,rgba(22,184,214,.11),transparent 24%),#fbfcff}.knowledge-graph-card>.card-head{position:relative;background:linear-gradient(120deg,#191b49 0%,#34328d 55%,#155b78 100%);color:#fff}.knowledge-graph-card>.card-head p{color:#dce4ff}.knowledge-route-overview{position:relative;padding:12px;border-radius:24px;background:linear-gradient(120deg,rgba(36,35,96,.96),rgba(50,49,139,.93),rgba(20,91,120,.94));box-shadow:0 18px 45px rgba(36,39,94,.18)}.knowledge-route-step{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.11);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 10px 24px rgba(8,12,47,.2);backdrop-filter:blur(12px)}.knowledge-route-step:hover,.knowledge-route-step:focus-visible{transform:translateY(-4px) scale(1.01);border-color:rgba(255,255,255,.55);box-shadow:0 16px 36px rgba(8,12,47,.3)}.knowledge-route-step small,.knowledge-route-step>i{color:#dce7ff}.knowledge-route-step>span{border:1px solid rgba(255,255,255,.5);background:linear-gradient(145deg,#8c7cff,#4d5de8);box-shadow:0 0 0 6px rgba(138,124,255,.12),0 0 24px rgba(126,113,255,.52)}.knowledge-route-step.has-weak,.knowledge-route-step.is-mastered{background:rgba(255,255,255,.11)}.knowledge-route-arrow{z-index:2;color:#a9eaff;text-shadow:0 0 14px #64d8ff}.knowledge-tree-scroll{display:block;overflow:visible;padding:4px}.knowledge-tree-domain{min-width:0;border:0;background:transparent;box-shadow:0 14px 36px rgba(48,56,100,.08)}.knowledge-tree-domain>summary{border:1px solid #dfe4f4;border-radius:18px;background:linear-gradient(110deg,#fff 0%,#f1f3ff 65%,#eafaff 100%)}.knowledge-domain-order{box-shadow:0 0 0 5px rgba(98,91,246,.1),0 7px 18px rgba(67,60,190,.2)}.knowledge-tree-groups{border-radius:0 0 20px 20px;background:linear-gradient(180deg,rgba(245,247,255,.9),rgba(250,253,255,.96))}.knowledge-tree-group{border:0;background:transparent;overflow:visible}.knowledge-tree-group>summary{border-bottom:1px solid #e4e8f5;background:transparent}.knowledge-tree-path{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;padding:16px 10px 18px}.knowledge-tree-path::before{display:none}.knowledge-tree-point{min-height:92px;grid-template-columns:18px minmax(0,1fr) 20px;padding:14px;border:1px solid rgba(206,213,236,.9);border-radius:18px;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(245,247,255,.94));box-shadow:0 10px 24px rgba(52,62,110,.08);overflow:hidden}.knowledge-tree-point::after{content:"";position:absolute;right:-24px;bottom:-28px;width:82px;height:82px;border-radius:50%;background:radial-gradient(circle,rgba(105,97,246,.16),transparent 68%)}.knowledge-tree-point:hover,.knowledge-tree-point:focus-visible{z-index:2;transform:translateY(-5px);border-color:#817af4;box-shadow:0 18px 34px rgba(73,65,180,.18)}.knowledge-tree-point.selected{background:linear-gradient(145deg,#fff,#eeefff);box-shadow:0 0 0 4px rgba(98,91,246,.13),0 18px 34px rgba(73,65,180,.2)}.knowledge-point-dot{width:15px;height:15px;margin:0;border:3px solid #fff;box-shadow:0 0 0 3px #dce3f5,0 0 16px currentColor}.knowledge-tree-point.graph-weak{border-color:#f1b5b8;background:linear-gradient(145deg,#fff,#fff3f4)}.knowledge-tree-point.graph-learning{border-color:#f2d28c;background:linear-gradient(145deg,#fff,#fff9eb)}.knowledge-tree-point.graph-mastered{border-color:#9bddb7;background:linear-gradient(145deg,#fff,#effcf5)}.knowledge-detail-panel{border:1px solid rgba(112,105,238,.25);background:linear-gradient(160deg,#fff,#f5f6ff);box-shadow:0 20px 50px rgba(45,44,115,.18)}.knowledge-detail-panel::before{content:"知识导航";display:inline-flex;margin-bottom:12px;padding:5px 10px;border-radius:999px;background:#ecebff;color:#5149d9;font-size:11px;font-weight:900;letter-spacing:.08em}.mastery-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}.mastery-summary span{display:flex;flex-direction:column;align-items:center;padding:10px 5px;border-radius:13px;font-size:11px}.mastery-summary b{font-size:20px}.mastery-summary .weak{background:#fff0f1;color:#c9363e}.mastery-summary .basic{background:#fff8e7;color:#a56b00}.mastery-summary .mastered{background:#edf9f2;color:#178048}.knowledge-weak-link .learning-progress{margin-top:8px}.mastery-empty{display:flex;gap:12px;align-items:center;padding:14px;border-radius:14px;background:#effaf4}.mastery-empty>span{display:grid;width:34px;height:34px;place-items:center;border-radius:50%;background:#1d9b57;color:#fff;font-weight:900}.mastery-empty p{margin:4px 0 0;color:#667085;font-size:12px}
@media(max-width:760px){.knowledge-route-overview{padding:9px}.knowledge-tree-path{grid-template-columns:1fr;padding:10px 4px}.knowledge-tree-point{min-height:82px}.mastery-summary{gap:5px}.knowledge-graph-card>.card-head{padding:16px}}
.mastery-summary.four{grid-template-columns:repeat(4,1fr)}.mastery-summary .unlearned{background:#f1f3f7;color:#647087}.mastery-groups{display:grid;gap:9px}.mastery-group{overflow:hidden;border:1px solid #e4e8f2;border-radius:14px;background:#fff}.mastery-group>summary{display:grid;grid-template-columns:10px minmax(0,1fr) auto 18px;align-items:center;gap:8px;padding:11px 12px;cursor:pointer;list-style:none}.mastery-group>summary::-webkit-details-marker{display:none}.mastery-group>summary>span{width:9px;height:9px;border-radius:50%;background:#8792a6}.mastery-group.weak>summary>span{background:#e5484d;box-shadow:0 0 10px rgba(229,72,77,.45)}.mastery-group.basic>summary>span{background:#e6a817}.mastery-group.mastered>summary>span{background:#22a85a}.mastery-group>summary em{color:#667085;font-size:11px;font-style:normal}.mastery-group>summary i{font-style:normal;transition:transform .2s}.mastery-group[open]>summary i{transform:rotate(180deg)}.mastery-group>div{max-height:330px;overflow:auto;border-top:1px solid #edf0f6}.mastery-point-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:10px 11px;border-bottom:1px solid #f0f2f7}.mastery-point-row:last-child{border-bottom:0}.mastery-point-row>button:first-child{min-width:0;border:0;background:transparent;padding:0;text-align:left;color:inherit;cursor:pointer}.mastery-point-row b,.mastery-point-row small{display:block;overflow-wrap:anywhere}.mastery-point-row small{margin-top:3px;color:#778095;font-size:10px}.mastery-point-row>strong{color:#4b5568;font-size:12px}.mastery-point-row>.btn{min-height:32px;padding:5px 8px;font-size:11px}@media(max-width:760px){.mastery-summary.four{grid-template-columns:repeat(2,1fr)}}
.mastery-stage-list{display:grid;gap:14px}.mastery-stage-card{display:grid;grid-template-columns:46px minmax(0,1fr) 22px;align-items:center;gap:14px;width:100%;padding:17px;border:1px solid #e0e5f2;border-radius:18px;background:linear-gradient(145deg,#fff,#f6f8ff);color:#11182d;text-align:left;cursor:pointer;box-shadow:0 8px 22px rgba(48,57,105,.06)}.mastery-stage-card:hover,.mastery-stage-card:focus-visible{transform:translateY(-2px);border-color:#7a73ef;box-shadow:0 14px 30px rgba(73,65,180,.14)}.mastery-stage-card>span{display:grid;width:44px;height:44px;place-items:center;border-radius:15px;background:linear-gradient(145deg,#7169f6,#4c79eb);color:#fff;font-weight:900;box-shadow:0 7px 18px rgba(80,73,214,.25)}.mastery-stage-card h3{margin:0}.mastery-stage-card small{display:block;margin-top:8px;color:#687287}.mastery-stage-card>i{color:#625bf6;font-size:24px;font-style:normal}.resource-chapter-list{display:grid;gap:14px}.resource-chapter-list>details{overflow:hidden;border:1px solid #e1e6f1;border-radius:16px;background:#fafbff}.resource-chapter-list>details>summary{display:grid;grid-template-columns:38px minmax(0,1fr) 20px;align-items:center;gap:12px;padding:14px;cursor:pointer;list-style:none;background:linear-gradient(120deg,#f4f5ff,#eefaff)}.resource-chapter-list>details>summary::-webkit-details-marker{display:none}.resource-chapter-list>details>summary>span{display:grid;width:36px;height:36px;place-items:center;border-radius:12px;background:#625bf6;color:#fff;font-weight:900}.resource-chapter-list h3,.resource-chapter-list small{margin:0}.resource-chapter-list small{color:#6f788c}.resource-chapter-list>details>section{display:grid;gap:8px;padding:10px}.resource-catalog-lesson{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px;border:1px solid #e8ebf3;border-radius:13px;background:#fff}.resource-catalog-lesson>span{display:grid;width:30px;height:30px;place-items:center;border-radius:10px;background:#eef0ff;color:#5149dd;font-weight:800}.resource-catalog-lesson h3{font-size:14px}.resource-catalog-lesson.active-item{border-color:#5ccfe3;background:#f3fdff}@media(max-width:720px){.mastery-stage-card{grid-template-columns:38px minmax(0,1fr);padding:13px}.mastery-stage-card>span{width:38px;height:38px}.mastery-stage-card>i{display:none}.resource-catalog-lesson{grid-template-columns:30px minmax(0,1fr)}.resource-catalog-lesson>.toolbar{grid-column:2}.resource-catalog-lesson>.toolbar .btn{flex:1}}
.knowledge-drill-card>.card-body{min-height:440px}.knowledge-drill-breadcrumb{display:flex;align-items:center;gap:8px;overflow-x:auto;margin-bottom:18px;padding:10px 13px;border-radius:13px;background:#f0f2ff;white-space:nowrap}.knowledge-drill-breadcrumb button{border:0;background:transparent;color:#5149dd;font-weight:800;cursor:pointer}.knowledge-drill-breadcrumb span{color:#9aa1b2}.knowledge-drill-head{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin-bottom:18px}.knowledge-drill-head h2,.knowledge-drill-head p{margin:0}.knowledge-drill-head p{margin-top:5px;color:#687287}.knowledge-stage-portal{display:grid;gap:18px}.knowledge-stage-gate{position:relative;display:grid;grid-template-columns:76px minmax(0,1fr) auto;align-items:center;gap:22px;min-height:155px;width:100%;padding:24px;border:0;border-radius:26px;color:#fff;text-align:left;cursor:pointer;overflow:hidden;box-shadow:0 20px 45px rgba(40,43,110,.2);transition:transform .22s,box-shadow .22s}.knowledge-stage-gate::after{content:"";position:absolute;right:-60px;top:-80px;width:250px;height:250px;border:1px solid rgba(255,255,255,.18);border-radius:50%;box-shadow:0 0 0 35px rgba(255,255,255,.05),0 0 0 75px rgba(255,255,255,.035)}.knowledge-stage-gate:hover,.knowledge-stage-gate:focus-visible{transform:translateY(-5px) scale(1.005);box-shadow:0 28px 55px rgba(40,43,110,.28)}.knowledge-stage-gate.gate-1{background:linear-gradient(120deg,#5750d9,#765eff)}.knowledge-stage-gate.gate-2{background:linear-gradient(120deg,#087c9d,#18a8bd)}.knowledge-stage-gate.gate-3{background:linear-gradient(120deg,#bd4e78,#ef6d79)}.knowledge-stage-gate>span{display:grid;width:70px;height:70px;place-items:center;border:1px solid rgba(255,255,255,.45);border-radius:22px;background:rgba(255,255,255,.14);font-size:25px;font-weight:900;box-shadow:inset 0 1px rgba(255,255,255,.25)}.knowledge-stage-gate h3{margin:3px 0 7px;font-size:25px}.knowledge-stage-gate p{margin:0 0 9px;color:rgba(255,255,255,.82)}.knowledge-stage-gate small,.knowledge-stage-gate b{display:block}.knowledge-stage-gate>i{z-index:1;padding:10px 15px;border-radius:999px;background:rgba(255,255,255,.16);font-style:normal;font-weight:800}.knowledge-group-portal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.knowledge-group-portal>button{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:14px;min-height:105px;padding:18px;border:1px solid #dce2f2;border-radius:20px;background:linear-gradient(145deg,#fff,#f3f6ff);color:#151b30;text-align:left;cursor:pointer;box-shadow:0 10px 25px rgba(49,59,109,.08)}.knowledge-group-portal>button:hover{transform:translateY(-3px);border-color:#7770ee}.knowledge-group-portal>button>span{display:grid;width:46px;height:46px;place-items:center;border-radius:15px;background:#625bf6;color:#fff;font-weight:900}.knowledge-group-portal h3,.knowledge-group-portal p{margin:0}.knowledge-group-portal p{margin-top:5px;color:#697287}.knowledge-group-portal i{color:#625bf6;font-style:normal;font-weight:800}.knowledge-point-portal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.knowledge-drill-point{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:104px;padding:17px;border:1px solid #e0e5f0;border-radius:20px;background:#fff;color:#141a2e;text-align:left;cursor:pointer;box-shadow:0 9px 24px rgba(45,54,96,.07)}.knowledge-drill-point:hover{transform:translateY(-3px);border-color:#7770ee}.knowledge-drill-point b,.knowledge-drill-point small,.knowledge-drill-point em{display:block}.knowledge-drill-point small{margin-top:5px;color:#70798c}.knowledge-drill-point em{margin-top:7px;color:#d43b43;font-size:11px;font-style:normal;font-weight:800}.knowledge-drill-point>i{color:#625bf6;font-style:normal;font-weight:800}.knowledge-point-detail-screen{display:grid;gap:14px}.knowledge-point-detail-screen>.btn{justify-self:start}.knowledge-point-detail-screen .knowledge-detail-panel{position:static}.knowledge-issue-panel{padding:18px;border:1px solid #dfe4f1;border-radius:18px;background:#fff}.knowledge-issue-panel h3{margin-top:0}.issue-alert,.issue-empty,.issue-ok{padding:15px;border-radius:14px}.issue-alert{background:#fff1f2;color:#a92932}.issue-empty{background:#f2f4f8;color:#596276}.issue-ok{background:#edf9f2;color:#167641}.knowledge-issue-panel p{margin:6px 0 0;line-height:1.65}@media(max-width:760px){.knowledge-drill-head{align-items:stretch;flex-direction:column}.knowledge-stage-gate{grid-template-columns:54px minmax(0,1fr);min-height:130px;padding:17px;gap:14px}.knowledge-stage-gate>span{width:52px;height:52px;border-radius:17px;font-size:19px}.knowledge-stage-gate>i{grid-column:2;justify-self:start}.knowledge-stage-gate h3{font-size:20px}.knowledge-group-portal,.knowledge-point-portal{grid-template-columns:1fr}.knowledge-group-portal>button{min-height:90px;padding:14px}.knowledge-drill-breadcrumb{margin-inline:-4px}}

/* Semantic taxonomy visibility: the renderer owns visibility; DOM order no longer does. */
.question-taxonomy .taxonomy-section[hidden]{display:none!important}
.question-taxonomy .taxonomy-section:not([hidden]){display:block!important}
.knowledge-visual-tabs{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.knowledge-visual-tabs>button{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid #dfe4f1;border-radius:17px;background:#fff;color:#18203a;text-align:left;cursor:pointer}.knowledge-visual-tabs>button.active{border-color:#625bf6;background:linear-gradient(145deg,#f4f3ff,#edf6ff);box-shadow:0 8px 24px rgba(74,65,185,.14)}.knowledge-visual-tabs>button>span{font-size:25px}.knowledge-visual-tabs b,.knowledge-visual-tabs small{display:block}.knowledge-visual-tabs small{margin-top:3px;color:#6f788d}.knowledge-tree-scene{position:relative;min-height:380px;padding:20px 16px 30px;border-radius:28px;background:radial-gradient(circle at 50% 0,rgba(96,196,119,.18),transparent 34%),linear-gradient(180deg,#f5fbf6,#f7f8ff);overflow:hidden}.knowledge-tree-crown{position:absolute;top:-100px;left:50%;width:530px;height:250px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(81,178,99,.2),rgba(99,91,246,.06) 55%,transparent 70%);filter:blur(2px)}.knowledge-tree-trunk{position:absolute;top:45px;bottom:18px;left:50%;width:16px;transform:translateX(-50%);border-radius:20px;background:linear-gradient(90deg,#74482b,#a86f45,#684027);box-shadow:0 0 0 6px rgba(116,72,43,.07)}.knowledge-stage-portal{position:relative;z-index:1;max-width:920px;margin:auto;padding:30px 0}.knowledge-stage-gate{width:44%;min-height:140px}.knowledge-stage-gate:nth-child(odd){margin-right:auto}.knowledge-stage-gate:nth-child(even){margin-left:auto}.knowledge-stage-gate:nth-child(odd)::before,.knowledge-stage-gate:nth-child(even)::before{content:"";position:absolute;top:50%;width:15%;height:10px;background:linear-gradient(#895837,#6e4329);z-index:-1}.knowledge-stage-gate:nth-child(odd)::before{right:-15%;transform:rotate(8deg)}.knowledge-stage-gate:nth-child(even)::before{left:-15%;transform:rotate(-8deg)}.knowledge-group-portal,.knowledge-point-portal,.knowledge-point-detail-screen{position:relative;z-index:1;max-width:980px;margin:auto;padding:18px;border-radius:24px;background:rgba(255,255,255,.84);box-shadow:0 15px 40px rgba(42,65,70,.1);backdrop-filter:blur(8px)}.knowledge-map-canvas{padding:22px;border-radius:26px;background:radial-gradient(circle at 12% 8%,rgba(98,91,246,.16),transparent 28%),radial-gradient(circle at 90% 80%,rgba(30,175,195,.15),transparent 30%),#f7f9ff}.knowledge-map-root{display:flex;flex-direction:column;align-items:center;max-width:360px;margin:0 auto 20px;padding:18px;border:1px solid rgba(99,91,246,.24);border-radius:22px;background:linear-gradient(135deg,#27255f,#4d49a8);color:#fff;box-shadow:0 16px 35px rgba(40,37,105,.25)}.knowledge-map-root span,.knowledge-map-root small{color:#dce3ff}.knowledge-map-root b{margin:4px 0;font-size:20px}.knowledge-map-flow{display:grid;gap:12px}.knowledge-map-stage{padding:16px;border:1px solid #dfe5f3;border-radius:22px;background:rgba(255,255,255,.91);box-shadow:0 10px 25px rgba(44,53,100,.08)}.knowledge-map-stage>header{display:flex;align-items:center;gap:12px;margin-bottom:13px}.knowledge-map-stage>header>span{display:grid;width:42px;height:42px;place-items:center;border-radius:14px;background:#625bf6;color:#fff;font-weight:900}.knowledge-map-stage>header b,.knowledge-map-stage>header small{display:block}.knowledge-map-stage>header small{color:#727b8e}.knowledge-map-stage>div{display:flex;flex-wrap:wrap;gap:9px}.knowledge-map-stage>div>button{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid #e0e5f0;border-radius:999px;background:#f9faff;color:#26304a;cursor:pointer}.knowledge-map-stage>div>button:hover{border-color:#625bf6;background:#f0efff}.knowledge-map-stage>div>button>span{width:8px;height:8px;border-radius:50%;background:#625bf6;box-shadow:0 0 8px rgba(98,91,246,.5)}.knowledge-map-stage>div>button small{color:#778095}.knowledge-map-arrow{display:block;text-align:center;color:#625bf6;font-size:24px;font-style:normal}@media(max-width:760px){.knowledge-visual-tabs{grid-template-columns:1fr}.knowledge-tree-scene{padding-inline:9px}.knowledge-tree-trunk{left:25px;width:10px}.knowledge-stage-portal{padding-left:40px}.knowledge-stage-gate,.knowledge-stage-gate:nth-child(odd),.knowledge-stage-gate:nth-child(even){width:100%;margin:0 0 14px}.knowledge-stage-gate::before{display:none}.knowledge-group-portal,.knowledge-point-portal,.knowledge-point-detail-screen{padding:10px}.knowledge-map-canvas{padding:12px}}
.learning-hero.compact{min-height:auto;padding:18px 22px}.learning-hero.compact h2{font-size:27px}.learning-quick-stats{display:flex;gap:8px;flex-wrap:wrap}.learning-quick-stats span{display:flex;align-items:baseline;gap:4px;padding:8px 12px;border:1px solid rgba(255,255,255,.3);border-radius:12px;background:rgba(255,255,255,.12)}.learning-quick-stats b{font-size:18px}.learning-section-tabs{position:sticky;top:8px;z-index:12;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0;padding:8px;border:1px solid #e1e5f0;border-radius:18px;background:rgba(248,249,253,.94);box-shadow:0 8px 24px rgba(45,54,95,.08);backdrop-filter:blur(14px)}.learning-section-tabs>button{display:flex;align-items:center;justify-content:center;gap:10px;min-height:58px;padding:9px 14px;border:0;border-radius:13px;background:transparent;color:#4b556b;text-align:left;cursor:pointer}.learning-section-tabs>button.active{background:#fff;color:#171d35;box-shadow:0 6px 18px rgba(55,61,105,.12)}.learning-section-tabs>button>span{display:grid;width:30px;height:30px;place-items:center;border-radius:10px;background:#e9ecf5;color:#697286;font-size:11px;font-weight:900}.learning-section-tabs>button.active>span{background:#625bf6;color:#fff}.learning-section-tabs b,.learning-section-tabs small{display:block}.learning-section-tabs small{margin-top:2px;color:#7a8294;font-size:10px}.learning-section-panel{min-width:0}.knowledge-compact-layout{display:grid;grid-template-columns:minmax(250px,310px) minmax(0,1fr);gap:14px;align-items:start}.knowledge-compact-layout .knowledge-graph-card{margin-top:0}.mastery-compact-card{position:sticky;top:92px}.mastery-compact-card .card-head,.compact-learning-panel .card-head{padding:14px 16px}.mastery-compact-card .card-body{padding:12px}.mastery-compact-card .mastery-summary{gap:5px}.mastery-compact-card .mastery-summary span{padding:7px 3px}.mastery-compact-card .mastery-summary b{font-size:17px}.mastery-groups.compact>details>summary{padding:9px 10px}.mastery-groups.compact .mastery-point-row{grid-template-columns:minmax(0,1fr) auto;padding:8px}.mastery-groups.compact .mastery-point-row>.btn{display:none}.mastery-groups.compact .mastery-group>div{max-height:230px}.compact-learning-panel .card-body{padding:14px}.chapter-list.compact{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.chapter-list.compact .chapter-card{min-height:82px;padding:11px}.training-compact-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.compact-item{padding:12px}.compact-item small{display:block;margin-top:4px;color:#727b8e}.knowledge-compact-layout .knowledge-drill-card>.card-body{min-height:360px;padding:14px}.knowledge-compact-layout .knowledge-visual-tabs{margin-bottom:12px}.knowledge-compact-layout .knowledge-tree-scene{min-height:320px;padding-top:8px}.knowledge-compact-layout .knowledge-stage-gate{min-height:112px;padding:15px}.knowledge-compact-layout .knowledge-stage-gate>span{width:52px;height:52px}.knowledge-compact-layout .knowledge-stage-gate h3{font-size:20px}.knowledge-compact-layout .knowledge-stage-portal{padding:15px 0}.knowledge-compact-layout .knowledge-map-canvas{padding:14px}.knowledge-compact-layout .knowledge-map-stage{padding:11px}@media(max-width:1000px){.knowledge-compact-layout{grid-template-columns:1fr}.mastery-compact-card{position:static}.chapter-list.compact{grid-template-columns:1fr}.training-compact-grid{grid-template-columns:1fr}}@media(max-width:680px){.learning-section-tabs{top:4px;gap:3px;padding:5px}.learning-section-tabs>button{min-height:50px;padding:7px 4px;gap:5px}.learning-section-tabs>button>span{display:none}.learning-section-tabs small{display:none}.learning-hero.compact{padding:15px}.learning-quick-stats{width:100%}.learning-quick-stats span{flex:1;justify-content:center}.knowledge-compact-layout .knowledge-graph-card>.card-head{padding:14px}.knowledge-compact-layout .knowledge-drill-card>.card-body{padding:9px}}
/* Tablet and phone use a purpose-built simple mode instead of a scaled desktop. */
@media (max-width:1024px){.learning-section-panel{margin-inline:0}.knowledge-compact-layout{display:block}.mastery-compact-card{margin-bottom:12px}.mastery-compact-card .mastery-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mastery-compact-card .mastery-group{margin:0}.mastery-compact-card .mastery-group>div{max-height:190px}.knowledge-graph-card>.card-head{padding:16px 18px}.knowledge-tree-scene{min-height:300px}.knowledge-stage-portal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px}.knowledge-stage-gate,.knowledge-stage-gate:nth-child(odd),.knowledge-stage-gate:nth-child(even){width:100%;min-height:118px;margin:0;padding:14px;grid-template-columns:44px minmax(0,1fr)}.knowledge-stage-gate>span{width:44px;height:44px;border-radius:14px;font-size:16px}.knowledge-stage-gate>i{grid-column:2;justify-self:start;padding:6px 10px;font-size:11px}.knowledge-stage-gate h3{font-size:18px}.knowledge-stage-gate p{display:none}.knowledge-stage-gate::before,.knowledge-tree-trunk,.knowledge-tree-crown{display:none}.knowledge-group-portal{grid-template-columns:repeat(2,minmax(0,1fr))}.knowledge-map-flow{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px}.knowledge-map-stage{scroll-snap-align:start}.knowledge-map-arrow{display:none}.knowledge-map-root{margin-bottom:12px;padding:12px}.knowledge-map-stage>div>button{padding:7px 10px}.chapter-list.compact{grid-template-columns:1fr}.training-compact-grid{grid-template-columns:1fr 1fr}}
@media (max-width:680px){.learning-hero.compact{gap:10px;border-radius:16px}.learning-hero.compact .page-crumb,.learning-hero.compact p:not(.page-crumb){display:none}.learning-hero.compact h2{font-size:22px}.learning-quick-stats{gap:5px}.learning-quick-stats span{padding:6px 7px;border-radius:9px;font-size:11px}.learning-quick-stats b{font-size:15px}.learning-section-tabs{overflow-x:auto;grid-template-columns:repeat(3,minmax(92px,1fr));border-radius:14px}.learning-section-tabs>button{white-space:nowrap}.learning-section-tabs b{font-size:13px}.compact-learning-panel,.mastery-compact-card,.knowledge-graph-card,.training-compact-grid .card{border-radius:15px}.compact-learning-panel .card-head p,.mastery-compact-card .card-head p,.knowledge-graph-card>.card-head p,.training-compact-grid .card-head p{display:none}.compact-learning-panel .card-head h2,.mastery-compact-card .card-head h2,.knowledge-graph-card>.card-head h2,.training-compact-grid .card-head h2{font-size:18px}.mastery-compact-card .mastery-groups{grid-template-columns:1fr}.mastery-compact-card .mastery-group:not(.weak):not([open]){display:block}.mastery-summary.four{grid-template-columns:repeat(4,minmax(58px,1fr));overflow-x:auto}.mastery-summary span{min-width:58px;padding:6px 2px}.mastery-summary b{font-size:15px}.knowledge-visual-tabs{display:flex;gap:7px;overflow-x:auto}.knowledge-visual-tabs>button{min-width:145px;padding:9px 11px;border-radius:12px}.knowledge-visual-tabs>button>span{font-size:19px}.knowledge-visual-tabs small{display:none}.knowledge-drill-breadcrumb{font-size:12px;padding:8px}.knowledge-drill-head{margin-bottom:10px}.knowledge-drill-head h2{font-size:19px}.knowledge-drill-head p{display:none}.knowledge-tree-scene{min-height:0;padding:5px;border-radius:17px;background:#f6f8fc}.knowledge-stage-portal{grid-template-columns:1fr;padding:5px}.knowledge-stage-gate,.knowledge-stage-gate:nth-child(odd),.knowledge-stage-gate:nth-child(even){min-height:88px;grid-template-columns:40px minmax(0,1fr) auto;padding:11px;border-radius:16px}.knowledge-stage-gate>span{width:38px;height:38px}.knowledge-stage-gate h3{margin:0;font-size:17px}.knowledge-stage-gate small{font-size:10px}.knowledge-stage-gate b{margin-top:3px;font-size:11px}.knowledge-stage-gate>i{grid-column:auto;padding:5px 8px;font-size:0}.knowledge-stage-gate>i::after{content:'›';font-size:20px}.knowledge-group-portal{grid-template-columns:1fr;padding:5px;background:transparent;box-shadow:none}.knowledge-group-portal>button{min-height:72px;padding:10px;border-radius:14px}.knowledge-group-portal>button>span{width:36px;height:36px}.knowledge-group-portal p{font-size:11px}.knowledge-point-portal{padding:5px;background:transparent;box-shadow:none}.knowledge-drill-point{min-height:78px;padding:11px;border-radius:14px}.knowledge-drill-point small{font-size:10px}.knowledge-drill-point em{font-size:10px}.knowledge-map-canvas{padding:8px;border-radius:16px}.knowledge-map-root{align-items:flex-start;border-radius:14px}.knowledge-map-root span{display:none}.knowledge-map-root b{font-size:17px}.knowledge-map-flow{grid-template-columns:repeat(3,82vw)}.knowledge-map-stage{padding:10px;border-radius:15px}.knowledge-map-stage>header{margin-bottom:8px}.knowledge-map-stage>header>span{width:34px;height:34px}.knowledge-map-stage>div{gap:6px}.knowledge-map-stage>div>button{width:100%;justify-content:flex-start;border-radius:10px}.knowledge-point-detail-screen{padding:5px;background:transparent;box-shadow:none}.knowledge-detail-panel,.knowledge-issue-panel{padding:12px;border-radius:14px}.knowledge-detail-grid{grid-template-columns:1fr 1fr;gap:7px}.knowledge-detail-actions{position:sticky;bottom:6px;z-index:5;padding:7px;border-radius:12px;background:rgba(255,255,255,.94);box-shadow:0 8px 25px rgba(28,34,74,.18);backdrop-filter:blur(10px)}.training-compact-grid{grid-template-columns:1fr}.compact-item{align-items:stretch;flex-direction:column}.compact-item .btn{width:100%}.chapter-card{grid-template-columns:34px minmax(0,1fr)}.chapter-card>.btn,.chapter-card>.tag{grid-column:2;width:100%;justify-content:center}.resource-catalog-lesson{padding:9px}.selfstudy-room{gap:10px}}

/* Student daily-learning cockpit */
.today-learning-card{margin-top:14px;overflow:hidden;border-color:#dfe4ff;background:linear-gradient(145deg,#fff 0%,#f7f8ff 100%)}
.today-learning-card>.card-body{padding:18px}.today-learning-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:14px}.today-learning-head h2{margin:2px 0 3px;font-size:25px}.today-learning-head p{margin:0;color:#6b7280}.today-learning-count{display:grid;min-width:76px;padding:9px 14px;text-align:center;border-radius:15px;background:#615bf5;color:#fff}.today-learning-count b{font-size:22px}.today-learning-count span{font-size:11px}.today-learning-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.today-learning-task{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;min-height:92px;padding:13px;border:1px solid #e3e6f2;border-radius:15px;background:#fff;color:#17203a;text-align:left;cursor:pointer;transition:transform .16s,box-shadow .16s}.today-learning-task:hover{transform:translateY(-2px);box-shadow:0 9px 22px rgba(49,55,105,.1)}.today-task-index{display:grid;width:35px;height:35px;place-items:center;border-radius:12px;background:#eeefff;color:#554de9;font-weight:900}.today-learning-task small,.today-learning-task b,.today-learning-task p{display:block}.today-learning-task small{color:#6d65ef;font-weight:800}.today-learning-task p{margin:3px 0 0;color:#72798a;font-size:11px}.today-learning-task strong{color:#514ae4;white-space:nowrap}.today-review-strip{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #e9ebf4;overflow-x:auto}.today-review-strip>b{white-space:nowrap}.today-review-strip>button{min-width:170px;padding:8px 10px;border:1px solid #f2d6a0;border-radius:11px;background:#fffaf0;color:#3f4657;text-align:left;cursor:pointer}.today-review-strip span,.today-review-strip small{display:block}.today-review-strip small{margin-top:2px;color:#8a6c34;font-size:9px}.today-learning-loading,.today-learning-empty{padding:18px;text-align:center;color:#687086}.mastery-summary.five{grid-template-columns:repeat(5,1fr)}.mastery-summary .forgetting{background:#fff4dc;color:#a16600}.mastery-group.forgetting>summary>span{background:#ef9f27;box-shadow:0 0 10px rgba(239,159,39,.35)}
@media(max-width:760px){.today-learning-card>.card-body{padding:12px}.today-learning-head{margin-bottom:10px}.today-learning-head h2{font-size:20px}.today-learning-head p{display:none}.today-learning-count{min-width:62px;padding:7px 10px}.today-learning-list{grid-template-columns:1fr}.today-learning-task{grid-template-columns:34px minmax(0,1fr) auto;min-height:76px;padding:10px}.today-learning-task p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.today-learning-task strong{font-size:12px}.today-review-strip>button{min-width:145px}.mastery-summary.five{grid-template-columns:repeat(5,minmax(62px,1fr));overflow-x:auto}}

/* Full-page knowledge tree and route map */
.knowledge-full-page{display:grid;gap:13px;width:100%;min-width:0}.knowledge-fullscreen-card{width:100%;margin:0}.knowledge-fullscreen-card>.card-body{padding:18px}.knowledge-fullscreen-card .knowledge-tree-scene{min-height:620px}.knowledge-status-ribbon{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:9px;border:1px solid #e0e5f0;border-radius:17px;background:#fff}.knowledge-status-ribbon button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:50px;border:0;border-radius:12px;background:#f5f7fb;color:#5e6678;cursor:pointer}.knowledge-status-ribbon button:hover{background:#efefff;color:#5149dc}.knowledge-status-ribbon b{font-size:18px;color:#1c2338}.knowledge-evidence-drawer{overflow:hidden;border:1px solid #e0e5f0;border-radius:17px;background:#fff}.knowledge-evidence-drawer>summary{display:flex;justify-content:space-between;padding:14px 17px;cursor:pointer;font-weight:800;list-style:none}.knowledge-evidence-drawer>summary::-webkit-details-marker{display:none}.knowledge-evidence-drawer>summary span{color:#625bf6}.knowledge-evidence-drawer>.mastery-compact-card{position:static;margin:0;border:0;border-top:1px solid #edf0f5;border-radius:0;box-shadow:none}
.knowledge-tree-root{position:relative;z-index:2;max-width:1180px;margin:auto}.tree-root-badge,.branch-origin{position:relative;z-index:4;display:flex;flex-direction:column;align-items:center;width:min(360px,80%);margin:0 auto 44px;padding:17px 22px;border:1px solid rgba(73,135,77,.25);border-radius:50% 50% 22px 22px;background:linear-gradient(145deg,#fafff9,#e8f6df);box-shadow:0 15px 32px rgba(52,105,62,.14)}.tree-root-badge>span,.branch-origin>span{font-size:30px}.tree-root-badge>b,.branch-origin>b{font-size:20px}.tree-root-badge small{color:#63806a}.knowledge-tree-root .knowledge-stage-portal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:55px;max-width:none;padding:35px 18px}.knowledge-tree-root .knowledge-stage-gate,.knowledge-tree-root .knowledge-stage-gate:nth-child(odd),.knowledge-tree-root .knowledge-stage-gate:nth-child(even){width:100%;min-height:225px;margin:0;grid-template-columns:1fr;align-content:start;text-align:center;overflow:visible}.knowledge-tree-root .knowledge-stage-gate::before{top:-78px;left:50%;right:auto;width:8px;height:80px;transform:translateX(-50%) rotate(var(--branch-angle,0deg));transform-origin:bottom;background:linear-gradient(90deg,#745034,#a7754e,#6b452d);border-radius:8px}.knowledge-tree-root .knowledge-stage-gate:nth-child(1){--branch-angle:-28deg}.knowledge-tree-root .knowledge-stage-gate:nth-child(3){--branch-angle:28deg}.knowledge-tree-root .knowledge-stage-gate>span{margin:auto}.knowledge-tree-root .knowledge-stage-gate>i{justify-self:center}.knowledge-branch-view{position:relative;z-index:2;max-width:1120px;margin:auto}.knowledge-branch-view .branch-origin{margin-bottom:35px}.knowledge-branch-view .knowledge-group-portal{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;max-width:none;padding:34px}.knowledge-branch-view .knowledge-group-portal>button{position:relative;min-height:120px}.knowledge-branch-view .knowledge-group-portal>button::before{content:"";position:absolute;top:-36px;left:50%;width:7px;height:37px;transform:translateX(-50%);border-radius:8px;background:#93613d}
.knowledge-map-canvas{position:relative;min-height:760px;padding:42px 6%;overflow:hidden;background:radial-gradient(circle at 14% 18%,rgba(61,172,112,.2),transparent 19%),radial-gradient(circle at 80% 33%,rgba(69,147,217,.18),transparent 22%),radial-gradient(circle at 27% 78%,rgba(233,187,74,.19),transparent 20%),linear-gradient(145deg,#edf8ed,#eef5fc 48%,#fff8e5);border:1px solid #d7e5d4}.knowledge-map-canvas::before{content:"";position:absolute;inset:0;opacity:.32;background-image:radial-gradient(#8ba78a 1px,transparent 1px);background-size:22px 22px}.map-landmark{position:relative;z-index:2;display:flex;flex-direction:column;width:min(330px,80%);padding:17px 21px;border-radius:24px;color:#fff;box-shadow:0 15px 30px rgba(45,70,64,.2)}.map-start{margin:0 auto 35px;background:linear-gradient(135deg,#26785b,#45a879)}.map-finish{margin:35px auto 0;background:linear-gradient(135deg,#e8912f,#efbd48)}.map-landmark span{font-size:11px;font-weight:900;letter-spacing:.15em}.map-landmark b{margin:4px 0;font-size:21px}.map-landmark small{color:rgba(255,255,255,.82)}.knowledge-map-flow{position:relative;z-index:2;display:block;max-width:1120px;margin:auto}.knowledge-map-stage{position:relative;width:58%;min-height:190px;padding:22px 24px 20px 82px;border:2px solid rgba(255,255,255,.8);background:rgba(255,255,255,.9);backdrop-filter:blur(10px)}.knowledge-map-stage:nth-of-type(4n+1){margin-right:auto}.knowledge-map-stage:nth-of-type(4n+3){margin-left:auto}.knowledge-map-stage .map-pin{position:absolute;top:24px;left:20px}.knowledge-map-stage .map-pin>span{display:grid;width:47px;height:47px;place-items:center;border:5px solid #fff;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);background:#625bf6;color:#fff;font-weight:900;box-shadow:0 7px 15px rgba(65,57,175,.27)}.knowledge-map-stage .map-pin>span::first-letter{transform:rotate(45deg)}.knowledge-map-stage>header{display:block;margin:0}.knowledge-map-stage>header small{color:#625bf6;font-weight:900}.knowledge-map-stage>header b{display:block;margin:4px 0;font-size:22px}.knowledge-map-stage>header p{margin:0 0 13px;color:#6b7486}.knowledge-map-stage .map-stops{display:flex;flex-wrap:wrap;gap:8px}.knowledge-map-stage .map-stops>button{display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid #dfe5ef;border-radius:13px;background:#f8faff;color:#26304a;cursor:pointer}.knowledge-map-stage .map-stops>button:hover{border-color:#625bf6;background:#efefff}.knowledge-map-stage .map-stops>button>span{display:grid;width:22px;height:22px;place-items:center;border-radius:50%;background:#e4e3ff;color:#5149dd;font-size:10px;font-weight:900}.knowledge-map-stage .map-stops small{color:#7a8395}.knowledge-map-arrow{display:block;width:48%;height:55px;margin:auto;color:#708d72;font-size:22px;line-height:55px;font-style:normal;text-align:center;letter-spacing:4px;transform:rotate(7deg)}
@media(max-width:1024px){.knowledge-fullscreen-card .knowledge-tree-scene{min-height:500px}.knowledge-tree-root .knowledge-stage-portal{grid-template-columns:1fr;gap:18px;padding-left:48px}.knowledge-tree-root .knowledge-stage-gate,.knowledge-tree-root .knowledge-stage-gate:nth-child(odd),.knowledge-tree-root .knowledge-stage-gate:nth-child(even){min-height:120px;grid-template-columns:48px minmax(0,1fr) auto;text-align:left}.knowledge-tree-root .knowledge-stage-gate>span{margin:0}.knowledge-tree-root .knowledge-stage-gate>i{justify-self:end}.knowledge-tree-root .knowledge-stage-gate::before{top:50%;left:-46px;width:48px;height:7px;transform:none}.knowledge-tree-root .tree-root-badge{margin-left:0;margin-bottom:18px}.knowledge-branch-view .knowledge-group-portal{grid-template-columns:1fr}.knowledge-map-stage{width:72%}}
@media(max-width:680px){.knowledge-fullscreen-card>.card-head{padding:13px}.knowledge-fullscreen-card>.card-body{padding:8px}.knowledge-status-ribbon{display:flex;overflow-x:auto;padding:6px}.knowledge-status-ribbon button{flex:0 0 84px;flex-direction:column;gap:0}.knowledge-tree-root .tree-root-badge{width:calc(100% - 42px);margin:4px 0 15px 40px;padding:11px}.tree-root-badge>span{font-size:22px}.tree-root-badge>b{font-size:16px}.tree-root-badge small{display:none}.knowledge-tree-root .knowledge-stage-portal{gap:10px;padding:8px 3px 8px 39px}.knowledge-tree-root .knowledge-stage-gate,.knowledge-tree-root .knowledge-stage-gate:nth-child(odd),.knowledge-tree-root .knowledge-stage-gate:nth-child(even){min-height:92px}.knowledge-tree-root .knowledge-stage-gate p{display:none}.knowledge-branch-view .knowledge-group-portal{padding:6px}.knowledge-branch-view .branch-origin{margin-bottom:16px}.knowledge-branch-view .knowledge-group-portal>button::before{display:none}.knowledge-map-canvas{min-height:0;padding:14px 9px}.map-landmark{width:calc(100% - 25px);padding:12px 16px}.map-landmark b{font-size:17px}.knowledge-map-stage,.knowledge-map-stage:nth-of-type(4n+1),.knowledge-map-stage:nth-of-type(4n+3){width:100%;min-height:150px;margin:0;padding:15px 12px 13px 62px}.knowledge-map-stage .map-pin{top:16px;left:12px}.knowledge-map-stage .map-pin>span{width:38px;height:38px}.knowledge-map-stage>header b{font-size:17px}.knowledge-map-stage>header p{display:none}.knowledge-map-stage .map-stops{display:grid;grid-template-columns:1fr}.knowledge-map-stage .map-stops>button{width:100%}.knowledge-map-arrow{height:38px;line-height:38px;transform:rotate(90deg);font-size:16px}.knowledge-evidence-drawer>summary{padding:12px;font-size:13px}}

/* Graphical tree canopy and illustrated map route */
.knowledge-tree-root{min-height:560px;padding:25px 18px 130px}.tree-branch-svg{position:absolute;inset:0 0 70px;width:100%;height:480px;z-index:1;overflow:visible}.tree-branch-svg path{fill:none;stroke-linecap:round}.tree-trunk-line{stroke:#795034;stroke-width:34}.tree-branch-line{stroke:#875a39;stroke-width:18}.tree-branch-svg circle{fill:#a76e43;stroke:#e8c89d;stroke-width:7}.tree-canopy-cloud{position:absolute;z-index:0;width:330px;height:230px;border-radius:48% 52% 44% 56%;filter:drop-shadow(0 18px 22px rgba(38,105,58,.14));background:radial-gradient(circle at 28% 30%,#a6e08d 0 17%,transparent 18%),radial-gradient(circle at 55% 22%,#75ca70 0 24%,transparent 25%),radial-gradient(circle at 73% 45%,#57b962 0 27%,transparent 28%),radial-gradient(circle at 38% 65%,#67c46d 0 32%,transparent 33%)}.canopy-one{top:40px;left:1%}.canopy-two{top:-5px;left:50%;transform:translateX(-50%)}.canopy-three{top:40px;right:1%}.knowledge-tree-root .tree-root-badge{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);margin:0;background:linear-gradient(145deg,#fff8e8,#e9d3a8);border-color:#b28a55;border-radius:24px}.knowledge-tree-root .knowledge-stage-portal{position:relative;z-index:3;display:grid;grid-template-columns:repeat(3,1fr);gap:8%;padding:48px 3% 0}.knowledge-tree-root .knowledge-stage-gate,.knowledge-tree-root .knowledge-stage-gate:nth-child(odd),.knowledge-tree-root .knowledge-stage-gate:nth-child(even){display:flex;width:250px;height:250px;min-height:0;margin:0 auto;padding:38px 25px 24px;flex-direction:column;justify-content:center;border:8px solid rgba(255,255,255,.72);border-radius:50%;text-align:center;box-shadow:0 22px 45px rgba(35,94,55,.2),inset 0 0 35px rgba(255,255,255,.14);overflow:hidden}.knowledge-tree-root .knowledge-stage-gate::before{display:none}.knowledge-tree-root .knowledge-stage-gate::after{inset:auto;right:-35px;top:-40px;width:150px;height:150px;background:rgba(255,255,255,.08)}.knowledge-tree-root .knowledge-stage-gate>span{width:58px;height:58px;margin:0 auto 4px;border-radius:50%;font-size:29px}.knowledge-tree-root .knowledge-stage-gate h3{font-size:21px;line-height:1.16}.knowledge-tree-root .knowledge-stage-gate p{display:-webkit-box;max-height:38px;margin-bottom:5px;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px}.knowledge-tree-root .knowledge-stage-gate b{font-size:10px}.knowledge-tree-root .knowledge-stage-gate>i{margin-top:7px;padding:6px 12px;align-self:center;font-size:11px}.knowledge-tree-root .gate-1{background:radial-gradient(circle at 35% 25%,#56cc7a,#197d4d)}.knowledge-tree-root .gate-2{background:radial-gradient(circle at 35% 25%,#53c4d3,#08758d)}.knowledge-tree-root .gate-3{background:radial-gradient(circle at 35% 25%,#a78cff,#5a48c8)}
.map-route-svg{position:absolute;z-index:0;inset:10px 2%;width:96%;height:calc(100% - 20px)}.map-river{fill:none;stroke:#72c5df;stroke-width:34;opacity:.34}.map-road-shadow{fill:none;stroke:#8e744d;stroke-width:23;stroke-linecap:round;stroke-dasharray:4 22;opacity:.18}.map-road{fill:none;stroke:#fff4c4;stroke-width:13;stroke-linecap:round;stroke-dasharray:3 18}.map-route-dot{fill:#fff8ce;stroke:#e8a83d;stroke-width:5}.map-route-dot.finish{fill:#ffe277;stroke:#cf7c18}.map-decoration{position:absolute;z-index:1;font-size:54px;filter:drop-shadow(0 8px 8px rgba(40,70,61,.14));opacity:.8}.map-decoration.mountain{top:10%;left:7%}.map-decoration.forest{top:47%;left:12%}.map-decoration.lake{top:26%;right:9%;font-size:42px}.map-decoration.compass{right:6%;bottom:8%;font-size:65px;color:#9b784b;opacity:.35}.knowledge-map-canvas .map-start{margin-bottom:40px}.knowledge-map-canvas .map-finish{margin-top:45px}.knowledge-map-flow{display:flex;flex-direction:column;gap:25px}.knowledge-map-stage{z-index:2;width:55%;border-color:rgba(255,255,255,.92);box-shadow:0 16px 35px rgba(49,72,74,.15)}.knowledge-map-stage.map-stage-1{align-self:flex-start;margin-left:3%}.knowledge-map-stage.map-stage-2{align-self:flex-end;margin-right:2%}.knowledge-map-stage.map-stage-3{align-self:flex-start;margin-left:7%}.knowledge-map-stage .map-pin>span{border-radius:50%;transform:none;font-size:23px}.knowledge-map-arrow{position:relative;z-index:2;width:auto;height:26px;line-height:26px;margin:-8px auto;color:#746947;font-size:10px;letter-spacing:.1em;text-transform:uppercase;transform:none}
@media(max-width:1024px){.knowledge-tree-root{min-height:0;padding:15px 8px 105px}.tree-branch-svg,.tree-canopy-cloud{display:none}.knowledge-tree-root .tree-root-badge{bottom:0}.knowledge-tree-root .knowledge-stage-portal{grid-template-columns:1fr;gap:12px;padding:0 0 85px}.knowledge-tree-root .knowledge-stage-gate,.knowledge-tree-root .knowledge-stage-gate:nth-child(odd),.knowledge-tree-root .knowledge-stage-gate:nth-child(even){display:grid;width:100%;height:auto;min-height:116px;padding:14px;grid-template-columns:58px minmax(0,1fr) auto;text-align:left;border-width:4px;border-radius:25px}.knowledge-tree-root .knowledge-stage-gate>span{margin:0}.knowledge-tree-root .knowledge-stage-gate h3{font-size:18px}.knowledge-tree-root .knowledge-stage-gate p{font-size:11px}.knowledge-tree-root .knowledge-stage-gate>i{align-self:center;margin:0}.map-route-svg{display:none}.knowledge-map-stage{width:76%}}
@media(max-width:680px){.knowledge-tree-root{padding:7px 3px 95px}.knowledge-tree-root .tree-root-badge{left:6px;width:calc(100% - 12px);transform:none}.knowledge-tree-root .knowledge-stage-portal{padding-left:0}.knowledge-tree-root .knowledge-stage-gate,.knowledge-tree-root .knowledge-stage-gate:nth-child(odd),.knowledge-tree-root .knowledge-stage-gate:nth-child(even){grid-template-columns:46px minmax(0,1fr) auto;min-height:94px;padding:10px;border-radius:20px}.knowledge-tree-root .knowledge-stage-gate>span{width:43px;height:43px;font-size:22px}.knowledge-tree-root .knowledge-stage-gate h3{font-size:16px}.knowledge-tree-root .knowledge-stage-gate>i{font-size:0}.knowledge-tree-root .knowledge-stage-gate>i::after{content:'›';font-size:22px}.knowledge-map-stage,.knowledge-map-stage.map-stage-1,.knowledge-map-stage.map-stage-2,.knowledge-map-stage.map-stage-3{width:100%;align-self:stretch;margin:0}.map-decoration{display:none}}
.interactive-demo{margin-top:16px;border:1px solid #d9def0;border-radius:14px;padding:14px;background:#f8faff}.interactive-demo textarea[data-lesson-demo-code]{width:100%;min-height:220px;margin:10px 0;background:#111827;color:#e5f4ff;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.interactive-demo label textarea{width:100%;min-height:70px}.interactive-demo pre{min-height:54px;background:#111827;color:#d1fae5;border-radius:10px;padding:12px;white-space:pre-wrap}
/* Progressive knowledge tree: show one level at a time instead of a long flat list. */
.interactive-tree-shell{display:grid;gap:20px}.interactive-tree-scene{position:relative;min-height:500px;overflow:hidden;border-radius:28px;padding:34px;background:radial-gradient(circle at 50% 75%,rgba(58,205,190,.26),transparent 28%),radial-gradient(circle at 15% 8%,rgba(92,109,255,.28),transparent 34%),linear-gradient(145deg,#081528 0%,#102b48 52%,#073c43 100%);color:#fff;isolation:isolate}.interactive-tree-scene:before,.interactive-tree-scene:after{content:"";position:absolute;border-radius:50%;filter:blur(2px);opacity:.45;z-index:-1}.interactive-tree-scene:before{width:320px;height:320px;left:-120px;bottom:-160px;background:#26c6a6}.interactive-tree-scene:after{width:360px;height:360px;right:-180px;top:-180px;background:#615fff}.interactive-tree-stars{position:absolute;inset:0;opacity:.42;background-image:radial-gradient(#fff 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(to bottom,#000,transparent 76%)}.interactive-tree-title{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:12px;text-align:left}.interactive-tree-title>span{display:grid;place-items:center;width:50px;height:50px;border:1px solid rgba(255,255,255,.28);border-radius:16px;background:rgba(255,255,255,.12);font-size:24px;backdrop-filter:blur(10px)}.interactive-tree-title small,.interactive-tree-title p{display:block;color:#bfeee8}.interactive-tree-title b{display:block;font-size:25px}.interactive-tree-title p{margin:3px 0 0}.interactive-tree-lines{position:absolute;inset:88px 7% 70px;width:86%;height:340px;z-index:0;overflow:visible}.interactive-tree-lines path{fill:none;stroke:rgba(137,255,220,.55);stroke-width:8;stroke-linecap:round;filter:drop-shadow(0 0 10px rgba(75,242,201,.65));stroke-dasharray:11 14;animation:treePulse 9s linear infinite}.interactive-tree-branches{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start;margin-top:54px}.interactive-branch{position:relative;min-height:190px;padding:24px;border:1px solid rgba(255,255,255,.22);border-radius:24px;background:linear-gradient(145deg,rgba(255,255,255,.18),rgba(255,255,255,.07));box-shadow:0 18px 44px rgba(0,0,0,.2);color:#fff;text-align:left;cursor:pointer;backdrop-filter:blur(14px);transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.interactive-branch:nth-child(2){margin-top:-22px}.interactive-branch:hover,.interactive-branch:focus-visible,.interactive-branch.active{transform:translateY(-8px) scale(1.015);border-color:#8fffe1;box-shadow:0 22px 60px rgba(28,232,190,.25),0 0 0 3px rgba(143,255,225,.12)}.interactive-branch>span{display:grid;place-items:center;width:48px;height:48px;margin-bottom:12px;border-radius:15px;background:rgba(255,255,255,.14);font-size:26px}.interactive-branch small{color:#a7dedb}.interactive-branch b{display:block;margin:4px 0 8px;font-size:22px}.interactive-branch p{margin:0;color:#d7eeee}.interactive-branch em{display:inline-block;margin-top:13px;padding:5px 9px;border-radius:999px;background:rgba(42,224,186,.14);color:#8fffe1;font-size:12px;font-style:normal}.interactive-branch i{position:absolute;right:22px;bottom:22px;color:#b9fff0;font-style:normal;font-weight:700}.interactive-tree-ground{position:absolute;z-index:2;left:50%;bottom:24px;display:flex;align-items:center;gap:9px;transform:translateX(-50%);white-space:nowrap}.interactive-tree-ground span{width:18px;height:18px;border-radius:50%;background:#56e0a8;box-shadow:0 0 0 9px rgba(86,224,168,.13),0 0 28px #56e0a8}.interactive-tree-ground small{color:#a8d8d0}.interactive-tree-workspace{border:1px solid #dfe7f2;border-radius:24px;background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 18px 45px rgba(35,54,92,.08);overflow:hidden}.interactive-tree-workspace nav{display:flex;align-items:center;gap:9px;padding:16px 22px;border-bottom:1px solid #e7edf5;background:#f6f9fd}.interactive-tree-workspace nav button{padding:5px 10px;border:0;border-radius:9px;background:transparent;color:#3155d9;cursor:pointer;font-weight:700}.interactive-tree-workspace nav button:hover{background:#e9efff}.interactive-group-screen,.interactive-point-screen{padding:24px}.interactive-group-screen>header,.interactive-point-screen>header{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}.interactive-group-screen h2,.interactive-point-screen h2{margin:3px 0}.interactive-group-screen p,.interactive-point-screen p{margin:0;color:#69758d}.interactive-group-screen>header>span{padding:8px 12px;border-radius:999px;background:#e9fbf7;color:#087b68;font-weight:800}.interactive-group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.interactive-group-grid button{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:18px;border:1px solid #e1e7f1;border-radius:18px;background:#fff;text-align:left;cursor:pointer;transition:.2s ease}.interactive-group-grid button:hover,.interactive-group-grid button:focus-visible{transform:translateY(-3px);border-color:#62d9c4;box-shadow:0 12px 30px rgba(26,164,139,.13)}.interactive-group-grid button>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#615fff,#3b82f6);color:#fff;font-weight:900}.interactive-group-grid b{display:block}.interactive-group-grid small{color:#718096}.interactive-group-grid i{color:#3155d9;font-style:normal;font-weight:800}.knowledge-tree-selected-detail.interactive{border-radius:24px;box-shadow:0 18px 45px rgba(35,54,92,.08)}
@keyframes treePulse{to{stroke-dashoffset:-100}}
@media(max-width:900px){.interactive-tree-scene{min-height:auto;padding:24px 18px 86px}.interactive-tree-lines{display:none}.interactive-tree-title{justify-content:flex-start}.interactive-tree-branches{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(250px,82%);gap:14px;margin-top:28px;overflow-x:auto;scroll-snap-type:x mandatory;padding:5px 3px 18px}.interactive-branch,.interactive-branch:nth-child(2){min-height:175px;margin-top:0;scroll-snap-align:center}.interactive-tree-ground{bottom:27px}.interactive-group-grid{grid-template-columns:1fr}.interactive-group-screen>header,.interactive-point-screen>header{align-items:flex-start;flex-direction:column}.interactive-point-screen>header .btn{width:100%}}
@media(max-width:560px){.interactive-tree-scene{border-radius:20px;padding:20px 14px 82px}.interactive-tree-title>span{width:42px;height:42px}.interactive-tree-title b{font-size:20px}.interactive-tree-title p{font-size:13px}.interactive-tree-branches{grid-auto-columns:88%}.interactive-branch{padding:19px;border-radius:19px}.interactive-tree-ground small{display:none}.interactive-tree-workspace{border-radius:18px}.interactive-tree-workspace nav{padding:12px 10px;overflow-x:auto}.interactive-group-screen,.interactive-point-screen{padding:16px}.interactive-group-grid button{grid-template-columns:auto 1fr;padding:14px}.interactive-group-grid button i{grid-column:2}.knowledge-point-portal{grid-template-columns:1fr!important}}
@media(prefers-reduced-motion:reduce){.interactive-tree-lines path{animation:none}.interactive-branch,.interactive-group-grid button{transition:none}}

/* Student knowledge center: two primary modes and one-screen-at-a-time exploration. */
.learning-section-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
.interactive-tree-shell [hidden]{display:none!important}

/* Knowledge graph: prerequisite relationships, mastery state and progressive exploration. */
.kg-explorer{display:grid;gap:18px}.kg-overview,.kg-workspace{overflow:hidden;border:1px solid #dbe6f2;border-radius:26px;background:#fff;box-shadow:0 18px 45px rgba(24,45,82,.08)}.kg-hero{padding:26px;color:#fff;background:radial-gradient(circle at 82% 10%,rgba(91,238,214,.28),transparent 28%),linear-gradient(135deg,#091a35,#123d58 58%,#09685f)}.kg-hero>span{font-size:11px;letter-spacing:.18em;color:#80f0d5}.kg-hero h3{margin:5px 0;font-size:27px}.kg-hero p{margin:0;color:#d6f2ec}.kg-domain-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px}.kg-domain{display:grid;grid-template-columns:auto 1fr auto;gap:13px;align-items:center;padding:17px;border:1px solid #e0e8f1;border-radius:18px;background:#f9fbfe;text-align:left;cursor:pointer;transition:.2s}.kg-domain:hover,.kg-domain:focus-visible,.kg-domain.active{transform:translateY(-3px);border-color:#56ccb8;box-shadow:0 12px 28px rgba(27,139,121,.14)}.kg-domain>span{display:grid;width:42px;height:42px;place-items:center;border-radius:14px;background:#173c59;color:#fff;font-weight:900}.kg-domain small,.kg-domain b,.kg-domain em{display:block}.kg-domain small{color:#718197}.kg-domain b{margin:2px 0;font-size:18px}.kg-domain em{color:#52706f;font-size:11px;font-style:normal}.kg-domain i{color:#17695f;font-size:12px;font-style:normal;font-weight:800}.kg-workspace>nav{display:flex;gap:9px;align-items:center;padding:14px 19px;border-bottom:1px solid #e8edf4;background:#f6f9fc}.kg-workspace>nav button{border:0;background:transparent;color:#156b61;font-weight:800;cursor:pointer}.kg-next{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:16px 18px 0;padding:15px 18px;border:1px solid #b8e9df;border-radius:18px;background:linear-gradient(100deg,#edfffa,#f5f3ff)}.kg-next small,.kg-next b{display:block}.kg-next b{margin:2px 0;font-size:19px}.kg-next p{margin:0;color:#617084}.kg-legend{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:14px 20px 5px;color:#647187;font-size:11px}.kg-legend span{display:flex;gap:6px;align-items:center}.kg-legend i{width:10px;height:10px;border-radius:50%}.kg-legend .mastered{background:#25a55b}.kg-legend .learning{background:#f3a820}.kg-legend .weak{background:#e34855}.kg-legend .unlearned{background:#9aa7b7}.kg-legend .relation{margin-left:auto;color:#17695f;font-weight:800}.kg-canvas{position:relative;overflow-x:auto;padding:16px 18px 24px}.kg-layers{position:relative;z-index:2;display:grid;grid-template-columns:repeat(var(--kg-columns,6),minmax(210px,1fr));grid-auto-columns:minmax(210px,1fr);grid-auto-flow:column;gap:20px;min-width:max-content}.kg-layer{width:220px;padding:10px;border:1px solid #dfe7f0;border-radius:18px;background:rgba(248,251,254,.94)}.kg-layer>header{display:flex;gap:9px;align-items:center;padding:5px 4px 11px}.kg-layer>header>span{display:grid;width:31px;height:31px;place-items:center;border-radius:10px;background:#153f5c;color:#fff;font-size:11px;font-weight:900}.kg-layer>header b,.kg-layer>header small{display:block}.kg-layer>header small{color:#77849a;font-size:10px}.kg-layer>div{display:grid;gap:9px}.kg-point{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;min-height:62px;padding:10px;border:1px solid #dde5ee;border-radius:14px;background:#fff;text-align:left;cursor:pointer}.kg-point:hover,.kg-point:focus-visible,.kg-point.active{border-color:#625bf6;box-shadow:0 8px 22px rgba(83,76,210,.15)}.kg-point>span{width:12px;height:12px;border:3px solid #fff;border-radius:50%;background:#9aa7b7;box-shadow:0 0 0 2px #9aa7b7}.kg-point.mastered>span{background:#25a55b;box-shadow:0 0 0 2px #25a55b}.kg-point.learning>span{background:#f3a820;box-shadow:0 0 0 2px #f3a820}.kg-point.weak>span{background:#e34855;box-shadow:0 0 0 2px #e34855}.kg-point b,.kg-point small{display:block}.kg-point b{font-size:13px}.kg-point small{margin-top:2px;color:#718096;font-size:10px}.kg-point>i{padding:3px 5px;border-radius:7px;background:#e9faf6;color:#087d6c;font-size:9px;font-style:normal}.kg-edges{position:absolute;z-index:1;inset:16px 18px 24px;width:calc(100% - 36px);height:calc(100% - 40px);pointer-events:none;overflow:visible}.kg-edges path{fill:none;stroke:#64bfae;stroke-width:2;stroke-dasharray:6 5}.kg-edges marker path{fill:#64bfae;stroke:none}
@media(max-width:900px){.kg-domain-flow{grid-template-columns:1fr}.kg-hero{padding:20px}.kg-hero h3{font-size:23px}.kg-next{align-items:stretch;flex-direction:column}.kg-next .btn{width:100%}.kg-layers{display:flex;flex-direction:column;min-width:0}.kg-layer{width:auto}.kg-edges{display:none}.kg-layer{position:relative;margin-left:18px}.kg-layer:before{content:"";position:absolute;left:-19px;top:-12px;bottom:-12px;width:3px;background:linear-gradient(#58cdb8,#625bf6)}.kg-layer:after{content:"";position:absolute;left:-24px;top:25px;width:13px;height:13px;border:3px solid #fff;border-radius:50%;background:#39b9a2;box-shadow:0 0 0 2px #39b9a2}.kg-domain i{font-size:0}.kg-domain i:after{content:"›";font-size:22px}}
@media(max-width:560px){.kg-overview,.kg-workspace{border-radius:18px}.kg-domain-flow{padding:10px}.kg-domain{grid-template-columns:auto 1fr;padding:12px}.kg-domain>span{width:36px;height:36px}.kg-domain i{display:none}.kg-legend{gap:9px;padding-inline:13px}.kg-legend .relation{display:none}.kg-canvas{padding:10px 12px 18px}.kg-next{margin:10px;padding:12px}.kg-hero p{display:none}}
.kg-domain-flow{position:relative;gap:22px;padding-block:26px}.kg-domain-flow:before{content:"";position:absolute;left:11%;right:11%;top:50%;height:4px;border-radius:99px;background:linear-gradient(90deg,#27b9a3,#5f63ef,#9955db);opacity:.24}.kg-domain{position:relative;z-index:1}.kg-layer{position:relative}.kg-layer:before{content:"";position:absolute;left:-13px;top:28px;width:13px;height:3px;border-radius:3px;background:#5bbfae}.kg-point small{line-height:1.45}.knowledge-linked-lessons>div:last-child{max-height:360px;overflow:auto;scrollbar-gutter:stable}
@media(max-width:900px){.kg-domain-flow:before{left:37px;right:auto;top:28px;bottom:28px;width:4px;height:auto}.kg-domain-flow{gap:12px}.kg-layer:before{left:-19px;top:-12px;width:3px;height:auto}}
.ai-draft-saved{display:block;margin-top:6px;color:#16806f;font-weight:700}.ai-draft-saved:before{content:"✓ ";color:#22a06b}

/* Release layout guard: prevent any route from clipping customer-facing content. */
html,body{max-width:100%;overflow-x:hidden}img,video,canvas,iframe{max-width:100%}pre,code{max-width:100%;overflow:auto;overflow-wrap:normal}.view-stack,.view,.card,.card-head,.card-body,.item,.item-row,.toolbar,.form-grid,.grid,.panel,.workflow-detail,.page-detail-head,.topbar-title{min-width:0}.card-head,.page-detail-head,.item-row,.toolbar{flex-wrap:wrap}.card-head>*,.page-detail-head>*,.item-row>*,.toolbar>*{min-width:0}h1,h2,h3,h4,p,b,strong,small,span,label,td,th{overflow-wrap:anywhere}.table-wrap,.resource-admin-table-wrap,.teacher-pay-table,.review-cases,.card-body:has(>table){max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.modal-panel{width:min(960px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto}.btn,button{max-width:100%}.topbar-back{flex:0 0 auto}.account{max-width:100%}.account>#userBadge{min-width:0;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-footer,.site-filing{position:static!important;inset:auto!important;margin-top:auto}
@media(max-width:1040px){.sidebar{position:sticky;top:0;z-index:50}.main{width:100%;max-width:100vw}.topbar{position:relative;z-index:10}.table{min-width:680px}.card-body{max-width:100%;overflow-x:auto}.lesson-document-frame,.web-lesson-frame{width:100%;min-width:0}}
@media(max-width:640px){.login-screen{padding:12px}.login-card{padding:20px 16px}.main{padding:12px!important}.topbar{gap:10px;margin-bottom:12px}.topbar-title{width:100%}.topbar-title h1{font-size:24px!important}.account{display:grid;grid-template-columns:auto minmax(0,1fr) auto;width:100%;padding:7px}.account>#userBadge{max-width:none}.card-head,.card-body{padding-left:12px!important;padding-right:12px!important}.page-detail-head{display:grid!important;grid-template-columns:1fr;gap:10px}.page-detail-head>.btn{width:100%}.toolbar{width:100%}.toolbar>.btn,.toolbar>button{flex:1 1 140px}.form-grid>*{min-width:0}.form-grid input,.form-grid select,.form-grid textarea{width:100%;max-width:100%}.table{min-width:620px}.lesson-document-frame,.web-lesson-frame{height:68dvh;min-height:420px}.site-footer{padding:16px 8px;text-align:center}}

/* Collapsible application navigation. Desktop width changes without disturbing page state. */
.app,
.sidebar,
.main {
  transition: grid-template-columns .22s ease, width .22s ease, padding .22s ease;
}

.sidebar {
  z-index: 60;
}

.sidebar-collapse-toggle {
  position: absolute;
  top: 28px;
  right: -15px;
  z-index: 3;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #fff;
  color: var(--brand-dark);
  box-shadow: 0 6px 18px rgba(54, 52, 120, .14);
  font-size: 24px;
  line-height: 1;
  transition: transform .22s ease, background .18s ease;
}

.sidebar-collapse-toggle:hover {
  border-color: rgba(102, 92, 246, .42);
  background: #f4f2ff;
}

@media (min-width: 1041px) {
  .app.sidebar-collapsed {
    grid-template-columns: 0 minmax(0, 1fr);
  }

  .app.sidebar-collapsed .sidebar {
    width: 0;
    padding: 0;
    border: 0;
    overflow: visible;
  }

  .app.sidebar-collapsed .sidebar-collapse-toggle {
    position: fixed;
    top: 18px;
    right: auto;
    left: 16px;
    width: 42px;
    height: 42px;
    border-radius: 13px;
    color: #fff;
    background: linear-gradient(135deg, var(--brand), var(--blue));
    box-shadow: 0 10px 26px rgba(79, 70, 201, .28);
    transform: none;
    font-size: 20px;
  }

  .app.sidebar-collapsed .brand,
  .app.sidebar-collapsed .menu {
    display: none;
  }
}

@media (max-width: 1040px) {
  .sidebar-collapse-toggle {
    display: none;
  }

  .sidebar {
    position: sticky;
    top: 0;
    box-shadow: 0 8px 24px rgba(42, 47, 82, .06);
  }
}

/* Unified Shishuzhe visual language: indigo is primary, cyan is only an accent. */
:root {
  --brand: #5b5cf0;
  --brand-dark: #4143b9;
  --blue: #526ff5;
  --bg: #f6f7fc;
  --line: #e2e5f1;
  --shadow: 0 16px 40px rgba(58, 54, 132, .09);
}

.sidebar {
  background: linear-gradient(180deg, #fff 0%, #fafaff 100%);
}

.brand {
  min-height: 76px;
  gap: 12px;
}

.brand-mark {
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: linear-gradient(135deg, #665cf6 0%, #4f6ef7 100%);
  font-size: 24px;
}

.brand-copy strong {
  color: #15162d;
  font-size: 21px;
  font-weight: 1000;
  letter-spacing: .1em;
  white-space: nowrap;
}

.brand-copy small {
  color: #62667d;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .12em;
  white-space: nowrap;
}

.menu-item.active,
.menu-item:hover {
  border-color: rgba(91, 92, 240, .28);
  background: rgba(91, 92, 240, .09);
  color: var(--brand-dark);
}

.btn.primary,
button.primary,
.primary-action {
  border-color: transparent;
  background: linear-gradient(135deg, var(--brand), var(--blue));
  color: #fff;
}

.btn.primary:hover,
button.primary:hover,
.primary-action:hover {
  background: linear-gradient(135deg, #4f50d8, #4662df);
}

a,
.link-btn {
  color: var(--brand-dark);
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid rgba(91, 92, 240, .24);
  outline-offset: 2px;
}

/* Tablet and phone density: browse sections sideways, open one level at a time. */
@media (max-width: 1040px) {
  .kg-domain-flow {
    display: flex;
    gap: 10px;
    padding: 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
  }

  .kg-domain-flow::before {
    display: none;
  }

  .kg-domain {
    flex: 0 0 min(330px, 76vw);
    min-height: 88px;
    scroll-snap-align: start;
  }

  .kg-canvas {
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  .kg-layers {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 12px;
    min-width: max-content;
  }

  .kg-layer {
    flex: 0 0 min(340px, 78vw);
    width: min(340px, 78vw);
    max-height: min(58vh, 520px);
    margin-left: 0;
    overflow-y: auto;
    scroll-snap-align: start;
    scrollbar-width: thin;
  }

  .kg-layer::before,
  .kg-layer::after,
  .kg-edges {
    display: none;
  }

  .kg-legend {
    overflow-x: auto;
    flex-wrap: nowrap;
    white-space: nowrap;
  }

  .kg-legend .relation {
    margin-left: 0;
  }

  .selfstudy-outline {
    position: static;
    display: flex;
    align-items: stretch;
    gap: 10px;
    max-height: none;
    padding: 10px;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
  }

  .selfstudy-outline > h3 {
    display: none;
  }

  .selfstudy-node {
    flex: 0 0 min(360px, 78vw);
    max-height: 260px;
    padding: 10px;
    overflow-y: auto;
    border: 1px solid var(--line) !important;
    border-radius: 13px;
    background: #fafbff;
    scroll-snap-align: start;
  }
}

@media (max-width: 680px) {
  .kg-hero {
    padding: 14px 16px;
  }

  .kg-hero h3 {
    margin-block: 2px;
    font-size: 20px;
  }

  .kg-domain {
    flex-basis: 84vw;
    padding: 11px;
  }

  .kg-domain em {
    max-width: 62vw;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .kg-next {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 9px;
  }

  .kg-next p {
    display: none;
  }

  .kg-next .btn {
    width: auto;
    min-height: 40px;
  }

  .kg-layer {
    flex-basis: 84vw;
    width: 84vw;
    max-height: 54vh;
  }

  .selfstudy-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    padding: 16px;
  }

  .selfstudy-hero h2 {
    font-size: 23px;
  }

  .selfstudy-hero p:not(.page-crumb) {
    display: none;
  }

  .selfstudy-library {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
  }

  .selfstudy-course-card {
    flex: 0 0 86vw;
    min-height: 200px;
    padding: 16px;
    scroll-snap-align: start;
  }

  .selfstudy-node {
    flex-basis: 86vw;
  }

  .view > .grid.cols-3,
  .view > .grid.cols-4,
  .view > .metrics {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(78vw, 1fr);
    grid-template-columns: none;
    gap: 10px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
  }

  .view > .grid.cols-3 > *,
  .view > .grid.cols-4 > *,
  .view > .metrics > * {
    scroll-snap-align: start;
  }

  .knowledge-evidence-drawer:not([open]) + * {
    margin-top: 0;
  }
}
.interactive-tree-workspace,.knowledge-tree-selected-detail.interactive{min-height:420px}
.knowledge-tree-selected-detail.interactive{max-width:none;margin:0;padding:22px;background:linear-gradient(160deg,#fff,#f2f7ff)}
.knowledge-tree-selected-detail.interactive>.btn{min-height:42px}
@media(max-width:680px){
  .learning-section-tabs{grid-template-columns:repeat(2,minmax(110px,1fr))}
  .interactive-tree-workspace,.knowledge-tree-selected-detail.interactive{min-height:0}
  .knowledge-tree-selected-detail.interactive{padding:12px}
}
/* Course content administration */
.resource-admin-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:20px}.resource-admin-head h2{margin:4px 0;font-size:34px}.resource-admin-workspace{display:grid;gap:18px}.resource-admin-tabs{display:flex;gap:12px;overflow-x:auto;padding:4px 0}.resource-admin-tabs button{display:grid;grid-template-columns:auto 1fr;column-gap:11px;min-width:220px;padding:15px 18px;border:1px solid #dfe5ef;border-radius:16px;background:#fff;text-align:left;cursor:pointer}.resource-admin-tabs button>span{grid-row:1/3;display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#eef1ff;color:#4e55d9;font-weight:900}.resource-admin-tabs b,.resource-admin-tabs small{display:block}.resource-admin-tabs small{color:#738096}.resource-admin-tabs button.active{border-color:#6b67ee;background:linear-gradient(135deg,#f0efff,#edfaff);box-shadow:0 10px 28px rgba(79,81,202,.12)}.resource-admin-filters{display:grid;grid-template-columns:1.4fr repeat(3,minmax(150px,.8fr));gap:12px;margin-bottom:18px;padding:15px;border-radius:16px;background:#f6f8fc}.resource-admin-filters label{display:grid;gap:5px;color:#4b5870;font-size:12px;font-weight:700}.resource-admin-filters input,.resource-admin-filters select{width:100%;min-height:42px;border:1px solid #dae1ec;border-radius:10px;background:#fff;padding:8px 11px}.resource-admin-table-wrap{overflow:auto;border:1px solid #e3e8f0;border-radius:16px}.resource-admin-table{width:100%;min-width:1100px;border-collapse:collapse}.resource-admin-table th{padding:13px 15px;background:#f6f8fc;color:#536078;text-align:left;font-size:12px}.resource-admin-table td{padding:15px;border-top:1px solid #edf0f5;vertical-align:top}.resource-admin-table td b,.resource-admin-table td span,.resource-admin-table td small{display:block}.resource-admin-table td small{margin-top:5px;color:#758197;max-width:310px}.resource-admin-table tr:hover td{background:#fbfcff}.resource-status{display:inline-block!important;width:max-content;padding:5px 9px;border-radius:999px;background:#edf1f6;color:#5d687b;font-weight:800;font-size:12px}.resource-status.ready{background:#e9f8ef;color:#148044}.resource-status.draft{background:#fff5df;color:#a46700}.resource-status.archived{background:#f3f3f5;color:#777}.resource-row-actions{display:flex;flex-wrap:wrap;gap:6px;min-width:185px}.resource-row-actions button{border:0;border-radius:8px;padding:6px 9px;background:#eef2ff;color:#3e4fbd;cursor:pointer;font-weight:700}.resource-row-actions button.danger{background:#fff0f0;color:#c73f3f}.resource-pagination{display:flex;justify-content:space-between;align-items:center;margin-top:15px}.resource-pagination>div{display:flex;gap:8px}.resource-editor-card{max-width:1180px;margin:auto}.resource-editor-form{display:grid;gap:18px}.resource-editor-form fieldset{margin:0;padding:21px;border:1px solid #e1e6ef;border-radius:18px}.resource-editor-form legend{padding:0 9px;font-weight:900}.resource-editor-form legend span{display:inline-grid;place-items:center;width:30px;height:30px;margin-right:8px;border-radius:10px;background:#5d59e8;color:#fff}.current-material{display:flex;justify-content:space-between;gap:12px;margin-bottom:15px;padding:13px 15px;border-radius:12px;background:#eef9f6}.current-material span{color:#68778a}.resource-editor-submit{position:sticky;bottom:10px;display:flex;justify-content:flex-end;gap:10px;padding:14px;border:1px solid #e1e6ef;border-radius:15px;background:rgba(255,255,255,.94);box-shadow:0 12px 35px rgba(26,37,65,.1);backdrop-filter:blur(10px)}.resource-admin-preview{max-width:1180px;margin:auto}
@media(max-width:900px){.resource-admin-head{align-items:stretch;flex-direction:column}.resource-admin-filters{grid-template-columns:1fr 1fr}.resource-center-metrics{width:100%}.resource-admin-table{min-width:0}.resource-admin-table thead{display:none}.resource-admin-table,.resource-admin-table tbody,.resource-admin-table tr,.resource-admin-table td{display:block;width:100%}.resource-admin-table tr{padding:14px;border-top:1px solid #e8edf4}.resource-admin-table tr:first-child{border-top:0}.resource-admin-table td{display:grid;grid-template-columns:110px 1fr;gap:8px;padding:7px 4px;border:0}.resource-admin-table td:before{color:#7a8598;font-size:12px;font-weight:800}.resource-admin-table td:nth-child(1):before{content:"内容"}.resource-admin-table td:nth-child(2):before{content:"章节 / 知识点"}.resource-admin-table td:nth-child(3):before{content:"来源"}.resource-admin-table td:nth-child(4):before{content:"状态"}.resource-admin-table td:nth-child(5):before{content:"更新时间"}.resource-admin-table td:nth-child(6):before{content:"操作"}.resource-row-actions{min-width:0}.resource-admin-table-wrap{overflow:visible}.current-material{flex-direction:column}}

/* 2026-09 visual repair: readable forms, unclipped rows and compact reports. */
.sidebar { overflow-x: hidden; scrollbar-gutter: stable; }
.assignment-list-card .card-body { display: grid; gap: 20px; padding-block: 24px; }
.assignment-list-card .class-filterbar { gap: 18px; padding: 18px; border-radius: 16px; background: #f7f8fc; }
.assignment-list-card .class-filterbar label { gap: 8px; }
.assignment-list-card .class-filterbar input,
.assignment-list-card .class-filterbar select { min-height: 48px; }
.assignment-list-card .scale-card-list { gap: 12px; max-height: none; overflow: visible; }
.scale-card-list > .class-list-item { min-height: 104px; height: auto; overflow: visible; align-content: start; padding: 16px 18px; border-radius: 14px; }
.scale-card-list > .class-list-item .item-row { min-height: 30px; }
.scale-card-list > .class-list-item .small { display: block; line-height: 1.55; white-space: normal; }
.analytics-student-split { grid-template-columns: minmax(0, 1fr) !important; }
.analytics-student-split > .card { width: 100%; }
.analytics-student-split .grid.cols-4 { grid-template-columns: repeat(4, minmax(150px, 1fr)); }
.analytics-student-split .compact-list { max-height: 420px; }
@media (max-width: 900px) {
  .assignment-list-card .card-body { gap: 14px; padding-block: 16px; }
  .assignment-list-card .class-filterbar { gap: 12px; padding: 12px; }
  .analytics-student-split .grid.cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media(max-width:560px){.resource-admin-head h2{font-size:28px}.resource-admin-filters{grid-template-columns:1fr}.resource-admin-tabs button{min-width:190px}.resource-admin-table td{grid-template-columns:88px 1fr}.resource-pagination{align-items:flex-start;flex-direction:column;gap:10px}.resource-editor-form fieldset{padding:16px 12px}.resource-editor-submit{bottom:5px}.resource-editor-submit .btn{flex:1}}
.resource-cms-overview{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;gap:10px;align-items:stretch;margin-bottom:12px}.resource-cms-overview>div{display:grid;gap:2px;padding:12px 14px;border:1px solid #e2e8f2;border-radius:13px;background:#fff}.resource-cms-overview>div b{font-size:22px}.resource-cms-overview>div span{color:#718096;font-size:12px}.resource-cms-overview>div.warning{border-color:#ffd99b;background:#fffaf0}.resource-bulk-toolbar{display:flex;align-items:center;gap:8px;min-height:48px;margin-bottom:14px;padding:8px 12px;border-radius:12px;background:#f2f5fb}.resource-bulk-toolbar>span{margin-right:auto}.resource-select-cell{width:42px!important}.resource-version-modal,.resource-order-modal{width:min(900px,calc(100vw - 24px))}.resource-order-list{display:grid;gap:8px}.resource-order-list>.item{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px}.resource-order-number{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#eef0ff;color:#514fcd;font-weight:900}
@media(max-width:900px){.resource-cms-overview{grid-template-columns:repeat(2,1fr)}.resource-cms-overview>#resourceDirectoryOrder{grid-column:1/-1}.resource-bulk-toolbar{flex-wrap:wrap}.resource-bulk-toolbar>span{width:100%;margin:0}.resource-order-list>.item{grid-template-columns:34px 1fr}.resource-order-list>.item>.toolbar{grid-column:2}.resource-admin-table.cms-enhanced td:nth-child(1):before{content:"选择"}.resource-admin-table.cms-enhanced td:nth-child(2):before{content:"内容"}.resource-admin-table.cms-enhanced td:nth-child(3):before{content:"章节 / 知识点"}.resource-admin-table.cms-enhanced td:nth-child(4):before{content:"来源"}.resource-admin-table.cms-enhanced td:nth-child(5):before{content:"状态"}.resource-admin-table.cms-enhanced td:nth-child(6):before{content:"更新时间"}.resource-admin-table.cms-enhanced td:nth-child(7):before{content:"操作"}}
@media(max-width:560px){.resource-cms-overview{grid-template-columns:1fr 1fr}.resource-cms-overview>div{padding:10px}.resource-bulk-toolbar .btn{flex:1}.resource-order-list>.item>.toolbar .btn{flex:1}}
.lesson-session-workbench .lesson-preparation-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line, #e2e8f0);
  border-radius: 14px;
  background: #f8fafc;
}
.material-load-error{display:grid;place-items:center;min-height:320px;padding:32px;border:1px dashed #f0a5a5;border-radius:18px;background:#fff8f7;text-align:center}.material-load-error b{font-size:22px}.material-load-error p{margin:8px 0 18px;color:#69758a}.material-load-error .btn{min-width:150px}

.lesson-session-workbench .lesson-preparation-checks .check {
  min-width: 180px;
  flex: 1 1 180px;
}

.lesson-feedback-summary {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--line, #e2e8f0);
}

.lesson-feedback-summary h3 { margin: 0 0 10px; }

@media (max-width: 760px) {
  .lesson-session-workbench .lesson-preparation-checks { display: grid; grid-template-columns: 1fr; }
  .lesson-session-workbench .toolbar .btn { width: 100%; }
}
/* AI exam coach */
.ai-coach-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px;padding:28px;border-radius:25px;background:linear-gradient(135deg,#302b75,#5d56e8 58%,#0c91a8);color:#fff;box-shadow:0 18px 45px rgba(53,49,145,.2)}.ai-coach-hero h2,.ai-coach-hero p{margin:0}.ai-coach-hero h2{margin:5px 0 8px;font-size:32px}.ai-coach-hero .page-crumb{color:#d9dcff}.ai-coach-badge{padding:11px 15px;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:rgba(255,255,255,.13);font-weight:800;white-space:nowrap}.ai-coach-config{margin-top:16px}.ai-coach-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr);gap:16px;margin:16px 0}.ai-coach-result{padding:18px;border-radius:16px;background:#f4f5ff;color:#222a48;line-height:1.9}.ai-weak-row{display:flex;justify-content:space-between;gap:12px;padding:12px 2px;border-bottom:1px solid #edf0f6}.ai-weak-row span{color:#d33c47;font-weight:900}@media(max-width:760px){.ai-coach-hero{align-items:flex-start;flex-direction:column;padding:19px}.ai-coach-hero h2{font-size:24px}.ai-coach-grid{grid-template-columns:1fr}.ai-coach-config .form-grid{grid-template-columns:1fr}.ai-coach-config .toolbar .btn{flex:1}}
.ai-history-list details{margin:9px 0;border:1px solid #e1e5f0;border-radius:14px;background:#fff}.ai-history-list summary{display:flex;justify-content:space-between;gap:12px;padding:13px;cursor:pointer}.ai-history-list summary span{color:#727b8e;font-size:12px}.ai-history-list details>div{padding:14px;border-top:1px solid #eceff5;background:#f8f9ff;line-height:1.8}.ai-practice-panel select{min-width:112px}
.ai-coach-entry-card{margin-bottom:14px;background:linear-gradient(135deg,#f3f2ff,#effaff)}.ai-coach-entry-card>.card-body{display:flex;align-items:center;justify-content:space-between;gap:18px}.ai-coach-entry-card h2,.ai-coach-entry-card p{margin:6px 0}.ai-coach-modal{max-width:900px}.ai-coach-inline-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:15px}.ai-coach-inline-stats span{padding:12px;border-radius:13px;background:#f1f3fb;text-align:center}.ai-coach-inline-stats b{display:block;font-size:22px}@media(max-width:680px){.ai-coach-entry-card>.card-body{align-items:stretch;flex-direction:column}.ai-coach-entry-card .btn{width:100%}.ai-coach-inline-stats{grid-template-columns:repeat(3,minmax(70px,1fr))}.ai-history-list summary{align-items:flex-start;flex-direction:column}}
.student-core-actions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: 14px;
  margin: 16px 0;
  width: 100%;
  min-width: 0;
  overflow: visible;
}
.student-core-action {
  appearance: none;
  border: 1px solid #dfe4f4;
  border-radius: 22px;
  background: #fff;
  color: #11152d;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  grid-template-areas:
    "icon content"
    "icon action";
  align-items: start;
  gap: 12px;
  width: 100%;
  min-width: 0;
  min-height: 148px;
  height: auto;
  overflow: visible;
  padding: 20px;
  text-align: left;
  cursor: pointer;
  box-shadow: 0 10px 28px rgba(45, 55, 110, .08);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.student-core-action:hover,
.student-core-action:focus-visible { transform: translateY(-3px); box-shadow: 0 16px 34px rgba(45, 55, 110, .14); border-color: #7774ff; }
.student-core-action > span { grid-area: icon; display: grid; place-items: center; width: 42px; min-width: 42px; height: 42px; font-size: 28px; line-height: 1; }
.student-core-action div { grid-area: content; min-width: 0; }
.student-core-action small { display: block; color: #707895; margin-bottom: 4px; }
.student-core-action b { display: block; font-size: 22px; }
.student-core-action p { color: #68708c; margin: 7px 0 0; line-height: 1.5; }
.student-core-action strong { grid-area: action; align-self: end; color: #5552da; line-height: 1.4; }
.student-core-action.learn { background: linear-gradient(145deg, #fff, #f0f7ff); }
.student-core-action.practice { background: linear-gradient(145deg, #fff, #f3fff8); }
.student-core-action.progress { background: linear-gradient(145deg, #fff, #fff8ec); }
.student-more-panel { margin-top: 16px; border: 1px solid #e1e5f2; border-radius: 18px; background: #f8f9fd; }
.student-more-panel > summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 20px; font-weight: 800; }
.student-more-panel > summary::-webkit-details-marker { display: none; }
.student-more-panel > summary::after { content: "展开 ↓"; color: #5b5bd6; font-size: 14px; }
.student-more-panel[open] > summary::after { content: "收起 ↑"; }
.student-more-panel > summary small { color: #77809b; font-weight: 500; }
.student-more-panel .student-support-grid { padding: 0 14px 14px; }
@media (max-width: 900px) {
  .student-core-actions { gap: 10px; }
  .student-core-action { min-height: 128px; padding: 16px; border-radius: 18px; }
  .student-more-panel > summary { align-items: flex-start; flex-direction: column; gap: 4px; }
  .student-more-panel > summary::after { position: absolute; right: 24px; }
}
@media (max-width: 520px) {
  .student-core-actions { grid-template-columns: 1fr; }
  .student-core-action { grid-template-columns: 40px minmax(0, 1fr); min-height: 118px; }
  .student-core-action > span { font-size: 27px; }
  .student-core-action b { font-size: 19px; }
  .student-core-action p { font-size: 14px; }
}
.skip-link { position: fixed; z-index: 99999; top: 8px; left: 8px; transform: translateY(-150%); padding: 10px 14px; border-radius: 10px; background: #11152d; color: #fff; font-weight: 800; }
.skip-link:focus { transform: translateY(0); }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible { outline: 3px solid #7774ff; outline-offset: 3px; }
@media (pointer: coarse) {
  button, .btn, [role="button"], summary { min-height: 44px; }
  input, select, textarea { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
.resource-editor-form select[multiple]{min-height:190px;padding:6px;background:#fbfcff}.resource-editor-form select[multiple] option{padding:8px 10px;border-radius:7px}.resource-editor-form select[multiple] option:checked{background:#5d59e8 linear-gradient(0deg,#5d59e8,#5d59e8);color:#fff}.resource-version-list{display:grid;gap:10px}.resource-version-list>.item{display:flex;align-items:center;justify-content:space-between;gap:16px}.resource-version-list p{margin:4px 0 0;color:#738096}.knowledge-linked-lessons>.btn.wide{display:flex;align-items:center;justify-content:center;min-height:46px;margin-top:12px;width:100%;padding:11px 18px;border:0;border-radius:13px;background:linear-gradient(135deg,#625bf6,#506cf0);color:#fff;text-align:center;box-shadow:0 8px 20px rgba(83,83,225,.2)}.knowledge-linked-lessons>.btn.wide:hover{transform:translateY(-1px);background:linear-gradient(135deg,#554ee8,#435de0)}
@media(max-width:560px){.resource-version-list>.item{align-items:stretch;flex-direction:column}.resource-version-list .btn{width:100%}.resource-editor-form select[multiple]{min-height:230px}}
.page-crumb-button { appearance: none; border: 0; padding: 0; background: transparent; color: var(--muted); font: inherit; cursor: pointer; text-align: left; }
.page-crumb-button:not(.is-hidden)::before { content: "← "; }
.page-crumb-button:hover { color: var(--primary); text-decoration: underline; }
.workflow-shortcuts { display: flex; align-items: center; gap: 8px; margin: 0 24px 14px; padding: 8px; overflow-x: auto; scrollbar-width: thin; border: 1px solid var(--line); border-radius: 14px; background: #f7f7fc; background: color-mix(in srgb, var(--surface) 94%, var(--primary) 6%); }
.workflow-shortcut { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px; min-height: 38px; padding: 7px 11px; border: 0; border-radius: 10px; background: transparent; color: var(--muted); font: inherit; font-weight: 700; cursor: pointer; }
.workflow-shortcut span { display: grid; place-items: center; width: 23px; height: 23px; border-radius: 50%; background: var(--surface); color: var(--primary); font-size: 12px; }
.workflow-shortcut:hover { background: var(--surface); color: var(--text); }
.workflow-shortcut.active { background: var(--primary); color: white; }
.workflow-shortcut.active span { background: rgba(255,255,255,.2); color: white; }
@media (max-width: 720px) {
  .workflow-shortcuts { margin: 0 12px 10px; padding: 6px; }
  .workflow-shortcut { min-height: 36px; padding: 6px 9px; font-size: 13px; }
}

/* Browser and embedded-webview compatibility layer. Keep basic layout usable
   when newer viewport, selector or visual-effect features are unavailable. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { padding-left: env(safe-area-inset-left, 0); padding-right: env(safe-area-inset-right, 0); }
button, .btn, [role="button"], input, select, textarea { touch-action: manipulation; }
button, .btn { -webkit-tap-highlight-color: transparent; }
img, video, svg { height: auto; }
.card-body, .table-wrap, .resource-admin-table-wrap, .teacher-pay-table, .review-cases { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.modal-panel { max-height: calc(100vh - 24px); }
.lesson-document-frame, .web-lesson-frame { height: 68vh; }
@supports (height: 100dvh) {
  .modal-panel { max-height: calc(100dvh - 24px); }
  .lesson-document-frame, .web-lesson-frame { height: 68dvh; }
}
@supports not (backdrop-filter: blur(1px)) {
  .topbar, .resource-editor-submit { background: rgba(255,255,255,.98); }
}
@media (max-width: 900px) {
  .knowledge-whole-tree-shell, .knowledge-whole-tree-shell.compact { margin-inline: 0; overflow-x: visible; }
  .knowledge-whole-tree { min-width: 0; border-radius: 18px; }
  .whole-tree-domains { grid-template-columns: 1fr; gap: 18px; padding-top: 12px; }
  .whole-tree-domains::before, .whole-tree-domain::before { display: none; }
  .whole-tree-domain { width: 100%; }
}
@media (max-width: 640px) {
  input, select, textarea { font-size: 16px; }
  .modal-panel { width: calc(100vw - 12px); max-height: calc(100vh - 12px); padding-bottom: calc(12px + env(safe-area-inset-bottom, 0)); }
  .main { padding-bottom: calc(12px + env(safe-area-inset-bottom, 0)) !important; }
  .table { min-width: 560px; }
  .knowledge-whole-tree { padding: 10px; }
  .whole-tree-root { width: 100%; max-width: none; }
}
.web-course-source-editor textarea{min-height:520px;font:13px/1.55 Consolas,"Courier New",monospace;white-space:pre;tab-size:2;background:#11182c;color:#e8f0ff;border-color:#293654}.web-course-source-editor small{color:#667085}@media(max-width:700px){.web-course-source-editor textarea{min-height:380px;font-size:12px}}
