.hero-stats.hero-stats-wide {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.subject-switch-bar {
  display: grid;
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.subject-switch-side {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.course-mini-link {
  white-space: nowrap;
}

.cz-book-tabs {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}
.cz-book-tab {
  padding: 0.42rem 1.1rem;
  border-radius: 999px;
  border: 1px solid var(--line-soft);
  background: #fff;
  cursor: pointer;
  font-weight: 600;
  font-size: 0.95rem;
}
.cz-book-tab.on {
  background: var(--brand, #2b6cff);
  color: #fff;
  border-color: transparent;
}

.subject-switch {
  display: inline-grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  width: min(34rem, 100%);
  padding: 0.3rem;
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.86);
  box-shadow: var(--shadow-sm);
}

.subject-tab {
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--ink-500);
  font: inherit;
  font-weight: 800;
  padding: 0.72rem 1rem;
}

.subject-tab.is-active {
  color: white;
  background: linear-gradient(135deg, #1e9aa6, #2f7ab7);
  box-shadow: 0 10px 22px rgba(41, 94, 144, 0.25);
}

.bio-core {
  background: radial-gradient(circle at 35% 35%, #dcfbf3, #6cc7a2 42%, #247b77 90%);
}

.math-core {
  background: radial-gradient(circle at 35% 35%, #fff3d8, #ffb547 42%, #b86812 90%);
}

.math-inline {
  display: inline-block;
  vertical-align: -0.12em;
  margin: 0 0.08em;
  white-space: nowrap;
}

.question-panel h2 .katex,
.review-card h2 .katex {
  font-size: 1.04em;
}

.question-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(7.4rem, 14vw, 8.8rem);
  gap: 0.9rem;
  align-items: start;
}

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

/* 题干走中国试卷常用宋体：常规字重、加宽行距。按钮/导航仍用界面黑体。 */
.question-panel .question-stem-rich,
.ssl-stem,
.cp-stem {
  min-width: 0;
  font-family: var(--exam-serif);
  font-size: clamp(1.12rem, 2.2vw, 1.42rem);
  font-weight: 400;
  line-height: 1.9;
  letter-spacing: 0.03em;
  color: #111;
}
.question-panel .question-stem-text {
  text-align: justify;
  text-justify: inter-ideograph;
}
.question-panel .answer-grid strong,
.ssl-opt b + span,
.ssl-opt {
  font-family: var(--exam-serif);
  font-weight: 400;
}
.question-stem-text + .question-table-scroll,
.question-table-scroll + .question-stem-text {
  margin-top: 0.85em;
}
.question-table-scroll {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  border: 1px solid #aebbc7;
  border-radius: 10px;
  background: #fff;
  -webkit-overflow-scrolling: touch;
}
.question-data-table {
  width: 100%;
  min-width: max-content;
  border-collapse: collapse;
  color: #263746;
  background: #fff;
  font-size: 0.72em;
  font-weight: 500;
  line-height: 1.45;
}
.question-data-table th,
.question-data-table td {
  min-width: 4.5em;
  padding: 0.55em 0.75em;
  border-right: 1px solid #b9c4ce;
  border-bottom: 1px solid #b9c4ce;
  text-align: center;
  vertical-align: middle;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
}
.question-data-table th {
  background: #eef4f7;
  color: #1f3342;
  font-weight: 800;
}
.question-data-table tr:last-child td { border-bottom: 0; }
.question-data-table th:last-child,
.question-data-table td:last-child { border-right: 0; }

.answer-grid button strong .katex,
.option-list .katex,
.answer-note .katex {
  font-size: 1em;
}

.answer-grid button strong span {
  display: inline-block;
  width: auto;
  height: auto;
  min-width: 0;
  min-height: 0;
  place-items: normal;
  border-radius: 0;
  color: inherit;
  background: transparent;
  font-weight: inherit;
}

.answer-grid button strong .math-inline,
.answer-grid button strong .katex {
  display: inline-block;
}

.answer-grid button > .answer-letter {
  display: grid;
  width: 2rem;
  height: 2rem;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: linear-gradient(145deg, #1a96a0, #0f6675);
  font-weight: 900;
}

.answer-grid button strong {
  line-height: 1.45;
}

.scope-shell,
.exam-grid,
.segment-grid {
  display: grid;
  gap: 0.85rem;
}

.scope-shell {
  margin-top: 1rem;
}

.scope-card,
.exam-card,
.segment-card,
.segment-hero {
  padding: 1rem;
  border: 1px solid var(--line-soft);
  border-radius: 0.9rem;
  background: var(--surface-2);
}

.scope-card {
  display: grid;
  gap: 0.5rem;
}

.exam-grid,
.segment-grid {
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
}

.exam-card,
.segment-card {
  display: grid;
  gap: 0.7rem;
}

.exam-card strong,
.segment-card strong {
  font-size: 1.08rem;
}

.pill-row,
.segment-meta,
.trend-inline {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  align-items: center;
}

.pill {
  width: fit-content;
  padding: 0.28rem 0.6rem;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--teal-700);
  background: var(--teal-100);
}

.pill.gold {
  color: #805600;
  background: var(--gold-100);
}

.pill.rose {
  color: #9a3f34;
  background: #ffe4df;
}

.sort-tabs,
.question-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
}

.sort-tabs {
  margin: 0.75rem 0;
}

.sort-tabs button {
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  background: var(--surface-1);
  color: var(--ink-500);
  font: inherit;
  font-size: 0.9rem;
  font-weight: 800;
  padding: 0.5rem 0.85rem;
}

.sort-tabs button.is-active {
  border-color: rgba(30, 154, 166, 0.36);
  color: white;
  background: linear-gradient(135deg, #1e9aa6, #2f7ab7);
}

.question-tags {
  margin: 0.15rem 0 0.35rem;
}

.question-tags span {
  padding: 0.22rem 0.52rem;
  border-radius: 999px;
  background: #eef7f5;
  color: var(--teal-700);
  font-size: 0.76rem;
  font-weight: 800;
}

.question-tags .gray-source-tag {
  color: #6c6257;
  background: #f2eee8;
  border: 1px dashed #c7b9a7;
  font-weight: 700;
}

.action-cluster-grid,
.area-control-groups {
  display: grid;
  gap: 0.75rem;
}

.action-cluster-grid {
  grid-template-columns: repeat(auto-fit, minmax(16.5rem, 1fr));
  margin-bottom: 1rem;
}

.action-cluster {
  display: grid;
  gap: 0.55rem;
  padding: 0.85rem 0.9rem;
  border: 1px solid rgba(30, 154, 166, 0.16);
  border-radius: 0.8rem;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.88), rgba(248, 252, 251, 0.94));
}

.action-cluster-label {
  color: var(--ink-700);
  font-size: 0.82rem;
  font-weight: 900;
}

.action-cluster-buttons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.6rem;
}

.action-cluster-buttons .ghost-button,
.action-cluster-buttons .primary-button,
.action-cluster-buttons .secondary-button {
  width: 100%;
  min-height: 3rem;
  justify-content: center;
}

.section-helper-note {
  margin: -0.1rem 0 1rem;
}

.save-status {
  margin-top: 0.75rem;
  padding: 0.75rem 0.9rem;
  border-radius: 0.8rem;
  font-size: 0.92rem;
  font-weight: 800;
}

.save-status-saving {
  color: #805600;
  background: #fff4d6;
}

.save-status-saved {
  color: #126c56;
  background: #e5f8ef;
}

.save-status-error {
  color: #9d352b;
  background: #ffe7e2;
}

.area-control-layout {
  display: grid;
  gap: 0.85rem;
  margin-top: 1rem;
  align-items: start;
  grid-template-columns: minmax(10.5rem, 13rem) minmax(0, 1fr);
}

.area-control-layout.has-utility {
  grid-template-columns: minmax(10.5rem, 13rem) minmax(0, 1fr) minmax(10.5rem, 12rem);
}

.area-control-primary,
.area-control-utility {
  display: grid;
  gap: 0.6rem;
  align-content: start;
}

.area-control-groups .action-cluster-buttons {
  grid-template-columns: 1fr;
}

.area-back-button {
  min-height: 3.35rem;
  font-size: 1rem;
  font-weight: 900;
  border-width: 1.5px;
  box-shadow: 0 10px 24px rgba(41, 46, 61, 0.08);
}

.area-shuffle-button {
  min-height: 3rem;
}

.area-control-note {
  margin: 0;
  font-size: 0.84rem;
  line-height: 1.45;
}

@media (max-width: 900px) {
  .area-control-layout,
  .area-control-layout.has-utility {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .area-control-primary,
  .area-control-groups {
    grid-column: 1 / -1;
  }

  .area-control-groups {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.diagnosis-box {
  display: grid;
  gap: 0.65rem;
  margin-top: 0.85rem;
  padding: 0.8rem;
  border: 1px solid rgba(30, 154, 166, 0.18);
  border-radius: 0.7rem;
  background: #f7fbfa;
}

.diagnosis-head {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
}

.diagnosis-head strong {
  color: var(--ink-800);
}

.diagnosis-head span {
  color: var(--ink-500);
  font-size: 0.82rem;
  font-weight: 700;
}

.diagnosis-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11.5rem, 1fr));
  gap: 0.5rem;
}

.diagnosis-options button {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.12rem 0.48rem;
  align-items: center;
  min-height: 4.2rem;
  padding: 0.62rem 0.7rem;
  border: 1px solid var(--line-soft);
  border-radius: 0.55rem;
  background: var(--surface-1);
  color: var(--ink-700);
  text-align: left;
}

.diagnosis-options button b {
  grid-row: span 2;
  display: grid;
  place-items: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 999px;
  color: var(--teal-700);
  background: var(--teal-100);
}

.diagnosis-options button span {
  font-weight: 900;
}

.diagnosis-options button small {
  color: var(--ink-500);
  font-weight: 700;
}

.diagnosis-options button.is-active {
  border-color: rgba(30, 154, 166, 0.48);
  background: linear-gradient(180deg, #e9f9f6, #ffffff);
  box-shadow: 0 8px 18px rgba(30, 154, 166, 0.12);
}

.diagnosis-options button.is-active b {
  color: white;
  background: linear-gradient(135deg, #1e9aa6, #2f7ab7);
}

.export-panel {
  border-color: rgba(255, 181, 71, 0.34);
  background: linear-gradient(180deg, #fffaf0, var(--surface-2));
}

.export-choice-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 0.75rem;
  margin-top: 0.85rem;
}

.export-choice-card {
  display: grid;
  gap: 0.55rem;
  padding: 0.85rem;
  border: 1px solid rgba(255, 181, 71, 0.34);
  border-radius: 0.7rem;
  background: rgba(255, 255, 255, 0.72);
}

.export-choice-card strong {
  color: var(--ink-800);
}

.export-choice-card span {
  color: var(--ink-500);
  font-weight: 700;
}

.mini-sparkline {
  width: 100%;
  height: 72px;
  display: block;
}

.spark-wrap {
  display: grid;
  gap: 0.4rem;
}

.question-figure {
  display: grid;
  gap: 0.35rem;
  width: auto;
  max-width: min(100%, 22rem);
  margin: 0;
  padding: 0.4rem;
  border: 1px solid var(--line-soft);
  border-radius: 0.55rem;
  background: var(--surface-1);
  box-sizing: border-box;
}

.question-figure-blocked {
  gap: 0.5rem;
  padding: 0.85rem 1rem;
  border-style: dashed;
}

.question-figure-blocked strong {
  color: var(--teal-700);
}

.question-figure-blocked p {
  margin: 0;
}

.question-figure img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 11.5rem;
  object-fit: contain;
  margin: 0 auto;
}

/* qbank-v2 自绘图（数轴/几何 SVG）只有 viewBox 没有固有宽高，width:auto 会塌成 0×0（如图题缺图）。
   只对 SVG 源全宽铺开，位图裁图保持原尺寸，不回退「教辅小图不拉满屏」的既有裁定。 */
.question-figure img[src$=".svg"],
.ex-img[src$=".svg"],
.sq-img[src$=".svg"] {
  width: 100%;
}

/* 试卷比例：单图约半栏；多图两列，像选项配图，不把教辅小图拉满屏。点图仍可放大。 */
.question-media {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 0.4rem 0.7rem;
  margin: 0.35rem 0 0.65rem;
}
.question-media .question-figure {
  margin: 0;
}
.question-media--n1 .question-figure {
  max-width: min(100%, 16.5rem);
}
.question-media:not(.question-media--n1) .question-figure {
  flex: 0 1 auto;
  max-width: calc(50% - 0.35rem);
}
.question-media:not(.question-media--n1) .question-figure img {
  max-height: 7.75rem;
}
@media (max-width: 420px) {
  .question-media--n1 .question-figure {
    max-width: min(100%, 16.5rem);
  }
  .question-media--n1 .question-figure img {
    max-height: 11.5rem;
  }
}

.question-figure figcaption {
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1.45;
}

.question-timer {
  display: grid;
  gap: 0.38rem;
  align-self: start;
  width: 100%;
  padding: 0.72rem 0.72rem 0.76rem;
  border: 1px solid rgba(224, 156, 48, 0.24);
  border-radius: 0.8rem;
  background: rgba(255, 251, 242, 0.94);
  box-shadow: 0 10px 24px rgba(83, 68, 42, 0.12);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}

.question-timer-label {
  color: var(--ink-500);
  font-size: 0.74rem;
  font-weight: 800;
}

.question-timer-heading { display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.question-timer-status { color:#278653; font-size:.76rem; font-weight:900; }
.question-timer-track { height:10px; overflow:hidden; border-radius:999px; background:#e7edf0; }
.question-timer-fill { display:block; height:100%; border-radius:inherit; background:#39a96b; transition:width .85s linear,background-color .25s ease; }
.question-timer.is-warning .question-timer-status { color:#a96b00; }
.question-timer.is-warning .question-timer-fill { background:#e5a91b; }
.question-timer.is-danger .question-timer-status { color:#c64036; }
.question-timer.is-danger .question-timer-fill { background:#e05248; }

.question-timer-extend {
  min-height: 34px;
  padding: 0.42rem 0.55rem;
  border: 1px solid rgba(217, 131, 16, 0.35);
  border-radius: 0.65rem;
  background: #fff;
  color: #a7640b;
  font: inherit;
  font-size: 0.72rem;
  font-weight: 900;
  cursor: pointer;
}

.question-timer-extended {
  color: #36845a;
  font-size: 0.72rem;
  font-weight: 850;
}

.question-timer-stats {
  display: grid;
  gap: 0.24rem;
  margin-top: 0.1rem;
}

.question-timer-stats span {
  color: var(--ink-700);
  font-size: 0.78rem;
  font-weight: 800;
}

.question-timer-hint {
  color: var(--rose-500);
  font-size: 0.7rem;
  font-weight: 800;
}

.spark-wrap small {
  color: var(--ink-500);
}

.spark-empty {
  min-height: 72px;
  display: grid;
  place-items: center;
  border: 1px dashed var(--line-strong);
  border-radius: 0.8rem;
  color: var(--ink-500);
  background: #ffffff78;
}

.segment-hero {
  display: grid;
  gap: 1rem;
  margin-bottom: 1rem;
}

.segment-hero .action-row {
  margin-top: 0.25rem;
}

.review-card .answer-note {
  color: var(--ink-700);
  line-height: 1.5;
}

.review-card.is-wrong-review {
  border-color: rgba(203, 70, 57, 0.28);
  background: linear-gradient(180deg, #fff7f5, var(--surface-1));
}

.review-card.is-correct-review {
  border-color: rgba(30, 154, 166, 0.18);
}

.answer-status {
  width: fit-content;
  padding: 0.28rem 0.62rem;
  border-radius: 999px;
  font-size: 0.82rem;
  font-weight: 900;
}

.answer-status.is-correct {
  color: #14705e;
  background: #dff8ee;
}

.answer-status.is-wrong {
  color: #a43d33;
  background: #ffe3dd;
}

.feedback-celebrate {
  display: flex;
  align-items: center;
  gap: 0.85rem;
}

.feedback-celebrate strong {
  display: block;
  font-size: 1.25rem;
  line-height: 1.1;
}

.feedback-celebrate small {
  display: block;
  margin-top: 0.15rem;
  color: #13715d;
  font-weight: 800;
}

.celebrate-mark {
  position: relative;
  width: 2.7rem;
  height: 2.7rem;
  flex: 0 0 auto;
  border-radius: 50%;
  background: radial-gradient(circle at 34% 32%, #fff9d8, #ffd36b 48%, #26a67d 52%, #168f73 100%);
  box-shadow: 0 10px 22px rgba(22, 143, 115, 0.24);
}

.celebrate-mark span {
  position: absolute;
  width: 0.38rem;
  height: 0.95rem;
  border-radius: 999px;
  background: white;
  opacity: 0.9;
}

.celebrate-mark span:nth-child(1) {
  left: 0.9rem;
  top: 0.48rem;
  transform: rotate(38deg);
}

.celebrate-mark span:nth-child(2) {
  left: 1.34rem;
  top: 1rem;
  height: 1.25rem;
  transform: rotate(38deg);
}

.celebrate-mark span:nth-child(3) {
  left: 1.7rem;
  top: 0.4rem;
  height: 0.75rem;
  transform: rotate(-30deg);
}

.quiz-topbar .muted strong {
  color: var(--ink-900);
}

.loading-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 2rem;
}

.loading-card {
  width: min(720px, 100%);
  padding: 2rem;
  border: 1px solid rgba(255, 255, 255, 0.48);
  border-radius: 1rem;
  background: var(--surface-1);
  box-shadow: var(--shadow-lg);
  text-align: center;
}

.loading-card p {
  margin-top: 0.8rem;
  color: var(--ink-500);
}

.answer-grid button.is-disabled {
  pointer-events: none;
}

.answer-grid button.is-selected {
  border-color: #1e9aa673;
  box-shadow: 0 12px 26px #2058621f;
}

.answer-grid button.is-correct {
  background: linear-gradient(180deg, #e3f8f0, #ffffff);
  border-color: rgba(32, 125, 112, 0.4);
}

.answer-grid button.is-wrong {
  background: linear-gradient(180deg, #fff0ef, #ffffff);
  border-color: rgba(201, 66, 55, 0.35);
}

.section-block.compact {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

@media (max-width: 560px) {
  .subject-switch {
    width: 100%;
  }

  .action-cluster-buttons,
  .action-cluster-grid,
  .area-control-layout,
  .area-control-layout.has-utility {
    grid-template-columns: 1fr;
  }

  .area-back-button {
    width: 100%;
  }

  .question-head {
    grid-template-columns: 1fr;
  }

  .question-timer {
    width: min(13rem, 100%);
  }

  .hero-stats.hero-stats-wide {
    grid-template-columns: 1fr 1fr;
  }
}

/* ===== 学段（初中/高中）相关样式 ===== */
.stage-choose {
  display: inline-flex;
  gap: 0.25rem;
  padding: 0.25rem;
  border: 1px solid var(--line-soft, #e4e9f0);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.9);
}
.stage-opt {
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--ink-500, #5b6b7c);
  font: inherit;
  font-weight: 800;
  padding: 0.5rem 1.1rem;
  cursor: pointer;
}
.stage-opt.is-active {
  color: #fff;
  background: linear-gradient(135deg, #1e9aa6, #2f7ab7);
  box-shadow: 0 8px 18px rgba(41, 94, 144, 0.22);
}
.stage-tag {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1;
  padding: 0.28rem 0.55rem;
  border-radius: 999px;
  letter-spacing: 0.02em;
}
.stage-tag.stage-junior {
  color: #0f6675;
  background: #d6f3f1;
}
.stage-tag.stage-senior {
  color: #92560a;
  background: #ffeccb;
}
.stage-tag.stage-inline {
  margin-left: 0.4rem;
  vertical-align: middle;
}
.student-card {
  position: relative;
}
.student-card .stage-tag {
  position: absolute;
  top: 0.6rem;
  right: 0.6rem;
}
.create-hint {
  margin-top: 0.55rem;
  font-size: 0.82rem;
}
@media (max-width: 560px) {
  .create-row {
    flex-wrap: wrap;
  }
  .stage-choose {
    order: 2;
  }
}

/* ===== 「问问小优老师」按钮 ===== */
.tutor-ask-row {
  margin-top: 0.85rem;
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  align-items: center;
}
/* ===== 费曼学习法 按钮（紫红渐变，与小优老师蓝紫区分）===== */
.feynman-ask-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border: 0;
  border-radius: 999px;
  padding: 0.62rem 1.1rem;
  font: inherit;
  font-weight: 800;
  color: #fff;
  cursor: pointer;
  background: linear-gradient(135deg, #9333ea, #c026d3);
  box-shadow: 0 10px 22px rgba(147, 51, 234, 0.25);
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.feynman-ask-btn:hover { transform: translateY(-1px); box-shadow: 0 14px 28px rgba(147, 51, 234, 0.32); }
.feynman-ask-btn:active { transform: translateY(0); }
.feynman-header-btn {
  border: 0;
  border-radius: 999px;
  background: linear-gradient(135deg, #9333ea, #c026d3);
  color: #fff;
  font: inherit;
  font-weight: 800;
  padding: 0.5rem 1rem;
  cursor: pointer;
  box-shadow: 0 8px 18px rgba(147, 51, 234, 0.28);
  white-space: nowrap;
}
.feynman-header-btn:hover { transform: translateY(-1px); box-shadow: 0 12px 24px rgba(147, 51, 234, 0.34); }
@media (max-width: 560px) {
  .feynman-header-btn { padding: 0.45rem 0.7rem; font-size: 0.85rem; }
}
.tutor-ask-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border: 0;
  border-radius: 999px;
  padding: 0.62rem 1.1rem;
  font: inherit;
  font-weight: 800;
  color: #fff;
  cursor: pointer;
  background: linear-gradient(135deg, #7c5cff, #2f7ab7);
  box-shadow: 0 10px 22px rgba(74, 76, 180, 0.25);
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.tutor-ask-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 14px 28px rgba(74, 76, 180, 0.32);
}
.tutor-ask-btn:active {
  transform: translateY(0);
}

/* ===== 小优老师 应用内弹窗(iframe,不跳新页)===== */
body.tutor-modal-open { overflow: hidden; }
.tutor-modal-overlay {
  position: fixed; inset: 0; z-index: 10200; /* 必须盖过讲义阅读器(10100)：讲义圈选后进小优老师 */
  background: rgba(15, 30, 40, 0.55);
  display: flex; align-items: center; justify-content: center;
  padding: 2vh 2vw;
}
.tutor-modal {
  width: min(1040px, 96vw);
  height: min(94vh, 940px);
  background: #fff;
  border-radius: 16px;
  overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35);
}
.tutor-modal-bar {
  flex: 0 0 auto;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.55rem 0.9rem;
  background: var(--brand); /* 多邻国扁平：实色蓝条，去渐变 */
  color: #fff;
}
.tutor-modal { border-radius: var(--radius) !important; } /* 统一 20px 圆角 */
.tutor-modal-title { font-weight: 800; font-size: 0.95rem; }
.tutor-modal-version { flex:0 0 auto; margin:0 .45rem; padding:.08rem .42rem; border:1px solid rgba(255,255,255,.34); border-radius:999px; color:rgba(255,255,255,.78); font-size:.62rem; font-weight:800; letter-spacing:.15px; }
.tutor-modal-close {
  border: 0; border-radius: 999px;
  width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, 0.18); color: #fff;
  cursor: pointer; transition: background .15s, transform .15s; margin-left: 2px;
}
.tutor-modal-close svg { display: block; }
.tutor-modal-close:hover { background: rgba(255, 255, 255, 0.4); transform: rotate(90deg); }
.tutor-modal-body { position:relative; min-height:0; flex:1 1 auto; display:flex; }
.tutor-modal-frame { position:relative; z-index:1; flex:1 1 auto; width:100%; height:100%; border:0; display:block; background:#fff; }
.tutor-modal-boot { position:absolute; inset:0; z-index:2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.65rem; padding:2rem; background:linear-gradient(180deg,#f6fbff,#fff); color:var(--ink-700); text-align:center; transition:opacity .18s ease,visibility .18s ease; }
.tutor-modal-boot.is-hidden { opacity:0; visibility:hidden; pointer-events:none; }
.tutor-modal-boot-mark { font-size:2.7rem; animation:tutor-boot-bob 1.35s ease-in-out infinite; }
.tutor-modal-boot b { color:var(--ink-900); font-size:1.05rem; }
.tutor-modal-boot span { min-height:1.4em; color:var(--ink-500); font-size:.86rem; font-weight:700; }
.tutor-modal-boot-track { width:min(18rem,72vw); height:.65rem; overflow:hidden; border-radius:999px; background:#dfeaf1; }
.tutor-modal-boot-track i { display:block; width:42%; height:100%; border-radius:inherit; background:linear-gradient(90deg,#49b8f2,#157cb3); animation:tutor-boot-slide 1.25s ease-in-out infinite; }
@keyframes tutor-boot-slide { 0%{transform:translateX(-110%)} 100%{transform:translateX(350%)} }
@keyframes tutor-boot-bob { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-6px)} }
@media (max-width: 560px) {
  .tutor-modal-overlay { padding: 0; }
  .tutor-modal { width: 100vw; height: 100vh; border-radius: 0; }
}
@media (prefers-reduced-motion: reduce){.tutor-modal-boot-mark,.tutor-modal-boot-track i{animation:none}.tutor-modal-boot-track i{width:55%}}

/* 小优老师弹窗顶栏的操作按钮（换道题 / 推同类题 / 关闭） */
.tutor-modal-actions { display: flex; align-items: center; gap: 0.5rem; }
.tutor-modal-btn {
  border: 0; border-radius: 999px;
  background: rgba(255, 255, 255, 0.22); color: #fff;
  font: inherit; font-weight: 700; font-size: 0.85rem;
  padding: 0.4rem 0.8rem; cursor: pointer; white-space: nowrap;
}
.tutor-modal-btn:hover { background: rgba(255, 255, 255, 0.36); }
@media (max-width: 560px) {
  .tutor-modal-btn { font-size: 0.78rem; padding: 0.35rem 0.6rem; }
  .tutor-modal-title { display: none; }
  .tutor-modal-version { margin-right:auto; }
}

/* 首页顶部「小优老师答疑」醒目入口（当前学生左侧）*/
.tutor-header-btn {
  border: 0;
  border-radius: 999px;
  background: linear-gradient(135deg, #7c5cff, #2f7ab7);
  color: #fff;
  font: inherit;
  font-weight: 800;
  padding: 0.5rem 1rem;
  cursor: pointer;
  box-shadow: 0 8px 18px rgba(74, 76, 180, 0.28);
  white-space: nowrap;
}
.tutor-header-btn:hover { transform: translateY(-1px); box-shadow: 0 12px 24px rgba(74, 76, 180, 0.34); }
@media (max-width: 560px) {
  .tutor-header-btn { padding: 0.45rem 0.7rem; font-size: 0.85rem; }
}

/* ===== 学生学习档案 / 时间线 ===== */
.archive-shell { max-width: 1080px; margin: 0 auto; padding: 1.2rem; }
.archive-kpi { display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 0.7rem; margin-top: 1rem; }
.archive-kpi > div { background: rgba(255,255,255,.9); border: 1px solid var(--line-soft,#e4e9f0); border-radius: 14px; padding: 0.9rem 0.6rem; text-align: center; }
.archive-kpi strong { display: block; font-size: 1.5rem; color: #2f6ad0; }
.archive-kpi span { font-size: 0.8rem; color: #5b6b7c; }
.archive-cols { display: grid; grid-template-columns: 320px 1fr; gap: 1rem; align-items: start; }
.archive-weak h2, .archive-timeline h2 { font-size: 1.02rem; margin: 0 0 0.6rem; }
.weak-list { list-style: none; margin: 0; padding: 0; }
.weak-list li { display: flex; justify-content: space-between; gap: 0.5rem; padding: 0.5rem 0.7rem; border-radius: 10px; background: #fff5f5; margin-bottom: 0.4rem; }
.weak-list li span { color: #c0392b; font-weight: 700; white-space: nowrap; }
.weak-list li.muted { background: #f1f7f1; color: #2e7d32; }
.timeline { display: flex; flex-direction: column; gap: 0.45rem; max-height: 60vh; overflow-y: auto; }
.tl-item { display: flex; align-items: baseline; gap: 0.6rem; padding: 0.5rem 0.7rem; background: rgba(255,255,255,.9); border-radius: 10px; border-left: 3px solid #cdd7e5; }
.tl-item.tl-tutor { border-left-color: #7c5cff; }
.tl-item.tl-quiz { border-left-color: #1e9aa6; }
.tl-time { font-size: 0.75rem; color: #8a9099; white-space: nowrap; }
.tl-tag { font-size: 0.72rem; font-weight: 800; padding: 1px 7px; border-radius: 999px; background: #eef1f5; color: #5b6b7c; white-space: nowrap; }
.tl-text { font-size: 0.88rem; }
@media (max-width: 760px) {
  .archive-kpi { grid-template-columns: repeat(3, 1fr); }
  .archive-cols { grid-template-columns: 1fr; }
}

/* ========================================================================
   质感升级 · 统一交互反馈（按钮抬升/按下回弹/聚焦光环/卡片悬浮/主按钮光泽）
   ====================================================================== */
.primary-button, .secondary-button, .ghost-button, .subject-tab, .stage-opt,
.favorite-toggle, .tutor-header-btn, .tutor-ask-btn, .tutor-modal-btn, .tutor-modal-close,
.mode-card, .student-card, .exam-card, .segment-card, .export-choice-card {
  transition: transform .18s cubic-bezier(.2,.8,.3,1), box-shadow .18s ease,
              background-color .18s ease, border-color .18s ease, filter .18s ease;
}
/* —— 实心主按钮：hover 抬升+提亮，按下回弹 —— */
.primary-button:hover, .secondary-button:hover {
  transform: translateY(-1.5px);
  filter: saturate(1.05) brightness(1.03);
  box-shadow: 0 12px 26px rgba(41, 94, 144, .26);
}
.primary-button:active, .secondary-button:active { transform: translateY(0) scale(.97); filter: brightness(.98); box-shadow: 0 4px 10px rgba(41,94,144,.2); }
/* 主按钮一层很淡的高光，更有立体质感 */
.primary-button { position: relative; overflow: hidden; }
.primary-button::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,0) 45%);
  pointer-events: none;
}
/* —— 幽灵/次级按钮：hover 浮起+描边，按下回弹 —— */
.ghost-button:hover { transform: translateY(-1px); border-color: rgba(47,122,183,.45); box-shadow: 0 6px 16px rgba(30,60,90,.1); }
.ghost-button:active, .subject-tab:active, .stage-opt:active, .favorite-toggle:active,
.tutor-header-btn:active, .tutor-ask-btn:active, .tutor-modal-btn:active, .tutor-modal-close:active { transform: scale(.96); }
.subject-tab:not(.is-active):hover { transform: translateY(-1px); }
/* 我自定义的彩色按钮：hover 抬升 */
.tutor-header-btn:hover, .tutor-ask-btn:hover { transform: translateY(-1.5px); filter: brightness(1.04); }
/* —— 卡片：hover 悬浮抬升 + 阴影加深，按下轻回弹 —— */
.student-card:hover, .mode-card:hover, .exam-card:hover, .segment-card:hover, .export-choice-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 38px rgba(28, 56, 88, .14);
}
.student-card:active, .mode-card:active, .exam-card:active, .segment-card:active { transform: translateY(-1px) scale(.995); }
.review-card { transition: box-shadow .2s ease, transform .2s ease; }
.review-card:hover { box-shadow: 0 14px 30px rgba(28, 56, 88, .1); }
/* —— 键盘可达性：聚焦光环 —— */
.primary-button:focus-visible, .secondary-button:focus-visible, .ghost-button:focus-visible,
.subject-tab:focus-visible, .stage-opt:focus-visible, .tutor-header-btn:focus-visible,
.tutor-ask-btn:focus-visible, .student-card:focus-visible, .mode-card:focus-visible,
.exam-card:focus-visible, .segment-card:focus-visible, .favorite-toggle:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(47, 122, 183, .35), 0 10px 22px rgba(41, 94, 144, .18);
}
/* 禁用态不抬升 */
button:disabled { transform: none !important; filter: saturate(.4) opacity(.7); cursor: not-allowed; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }

/* ========================================================================
   排版/视觉升级（保留原结构与操作逻辑）：暖色调 + 紧凑 hero + 小优吉祥物插图
   ====================================================================== */
body { background:
  radial-gradient(1100px 460px at 10% -8%, #d9e6ff 0%, rgba(217,230,255,0) 60%),
  radial-gradient(820px 420px at 100% 0%, #ffe6d4 0%, rgba(255,230,212,0) 55%),
  linear-gradient(172deg, #eef4ff 0%, #f5f1ff 44%, #fff6ef 100%) fixed !important; }
/* hero 整体缩紧约 30%；强制横向：左文案 + 右小优插图 */
.home-hero { padding: 16px 20px !important; align-items: center !important; display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; gap: 18px !important; }
.home-hero .hero-copy { flex: 1 1 0 !important; min-width: 0 !important; }
.home-hero h1 { font-size: 27px !important; line-height: 1.25 !important; margin: 2px 0 8px !important; }
.home-hero .eyebrow { margin-bottom: 2px !important; }
.home-hero .muted { font-size: 13px !important; line-height: 1.5 !important; }
.hero-stats { gap: 8px !important; margin-top: 10px !important; }
.hero-stats > div { padding: 8px 6px !important; }
/* 把装饰地球仪换成小优吉祥物 + “小优老师”文字；隐藏轨道/浮卡，更简洁 */
.hero-art { width: 196px !important; height: 184px !important; min-height: 0 !important; position: relative !important; flex: 0 0 auto !important; display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; }
.hero-globe { width: 150px !important; height: 150px !important; margin: 0 auto !important;
  background: url("assets/characters/mascot_cut.png") center/contain no-repeat !important;
  box-shadow: none !important; border-radius: 0 !important; animation: none !important; }
.hero-globe > * { display: none !important; }
.hero-orbit, .hero-spark, .hero-card { display: none !important; }
/* 首页只放小优形象本身，不再附"小优老师"文字（新形象占满区域，文字会被挡住） */

/* 外部录入题目 · 录入状态条 */
.import-status { margin:10px 0; padding:10px 14px; border-radius:12px; background:#eef4ff; color:#2f5bd6; font-weight:700; border:1px solid #d6e2ff; }
.option-list>span.is-correct { color:#1f9254; font-weight:800; }

/* ===== 学习档案：老师版/家长版切换 + 内嵌家长报告 ===== */
.archive-modes { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.archive-modes .seg { padding: 9px 16px; border-radius: 999px; border: 1.5px solid #d8e0ee; background: #fff; color: #3a4a63; font-size: 14px; font-weight: 600; cursor: pointer; transition: all .15s ease; }
.archive-modes .seg:hover { border-color: #9db4e0; transform: translateY(-1px); }
.archive-modes .seg.on { background: #2f6fed; border-color: #2f6fed; color: #fff; box-shadow: 0 4px 12px rgba(47,111,237,.25); }
.archive-report-wrap { padding: 0 !important; overflow: hidden; background: transparent !important; box-shadow: none !important; }
.report-frame { width: 100%; height: 80vh; min-height: 540px; border: 0; border-radius: 14px; background: #fff; display: block; box-shadow: 0 1px 3px rgba(20,30,60,.06), 0 6px 24px rgba(20,30,60,.05); }

/* ============================================================
   竖屏适配（放最后 → 覆盖上面强制横排的 .home-hero）
   目标：竖屏手机 + 竖屏平板，小优老师入口/刷题页都可用、不溢出
   ============================================================ */
@media (max-width: 600px) {
  /* 顶部按钮更紧凑，省竖向空间 */
  .current-user { gap: 6px !important; row-gap: 6px !important; }
  .current-user > button, .current-user .ghost-button, .tutor-header-btn { padding: 6px 11px !important; font-size: 12.5px !important; }
  .current-user > span { font-size: 12.5px !important; }

  /* hero 改竖排：标题缩小、吉祥物居中缩小、文案正常读 */
  .home-hero { flex-direction: column !important; align-items: stretch !important; padding: 14px 15px !important; gap: 8px !important; }
  .home-hero .hero-copy { order: 1 !important; }
  .home-hero .hero-art { order: 2 !important; width: 128px !important; height: 116px !important; align-self: center !important; }
  .home-hero h1 { font-size: 20px !important; line-height: 1.3 !important; margin: 2px 0 6px !important; }
  .home-hero .muted { font-size: 12.5px !important; }
  .hero-art::after { font-size: 12px !important; }

  /* hero 统计：2×2 网格，标签横排不竖切 */
  .hero-stats, .hero-stats.hero-stats-wide { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 6px !important; }
  .hero-stats > div { padding: 7px 6px !important; }
  .hero-stats > div strong { font-size: 18px !important; }
  .hero-stats > div span { font-size: 11.5px !important; white-space: nowrap !important; }

  /* 题卡/分区网格单列 */
  .exam-grid { grid-template-columns: 1fr !important; }
  /* 档案两栏改单列 */
  .archive-cols { grid-template-columns: 1fr !important; }
  /* 家长报告 iframe 高度按屏 */
  .report-frame { height: 70vh !important; min-height: 420px !important; }
}

/* 竖屏平板（601–1024，纵向）：两列网格，标题略缩，内容更密 */
@media (min-width: 601px) and (max-width: 1024px) and (orientation: portrait) {
  .exam-grid { grid-template-columns: 1fr 1fr !important; }
  .home-hero h1 { font-size: 24px !important; }
  .archive-cols { grid-template-columns: 1fr 1fr !important; }
}

/* ===== 外部录入题目：拖放 / 粘贴 录入面板 + 进度反馈 ===== */
.ext-import-panel { margin: 14px 0 6px; padding: 16px; background: #fff; border-radius: 14px; box-shadow: 0 1px 3px rgba(20,30,60,.06), 0 6px 24px rgba(20,30,60,.05); }
.ext-drop { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding: 22px 16px; border: 2px dashed #b9c7e6; border-radius: 12px; background: #f6f9ff; cursor: pointer; transition: all .15s ease; }
.ext-drop:hover { border-color: #2f6fed; background: #eef4ff; }
.ext-drop.dragging { border-color: #1f9d6b; background: #e6f7ef; transform: scale(1.01); }
.ext-drop input[type=file] { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; opacity: 0; } /* 视觉隐藏但仍渲染：比 display:none 在 WebView 里唤起相机/选择器更可靠 */
.ext-drop-ico { font-size: 30px; }
.ext-drop-main { font-size: 15px; color: #2a3550; }
.ext-drop-main u { color: #2f6fed; text-decoration-thickness: 2px; }
.ext-drop-sub { font-size: 13px; color: #8a94a8; }
.ext-or { text-align: center; color: #9aa3b5; font-size: 13px; margin: 12px 0 8px; }
.ext-textarea { width: 100%; min-height: 92px; border: 1.5px solid #d8e0ee; border-radius: 10px; padding: 10px 12px; font: inherit; font-size: 14px; line-height: 1.6; resize: vertical; box-sizing: border-box; }
.ext-textarea:focus { border-color: #2f6fed; outline: none; }
.ext-actions { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.ext-busy { color: #c2410c; font-size: 13.5px; font-weight: 600; }
.import-status { margin: 10px 0; padding: 11px 14px; background: #fff7ed; border: 1px solid #fed7aa; border-radius: 10px; color: #c2410c; font-size: 14px; font-weight: 600; }
.import-result { margin: 8px 0; padding: 11px 14px; border-radius: 10px; font-size: 14px; font-weight: 600; }
.import-result.ok { background: #e6f7ef; border: 1px solid #b7e7cf; color: #1f7a52; }
.import-result.warn { background: #fff1f2; border: 1px solid #fecdd3; color: #be123c; }
.ext-q-img { display: block; max-width: 100%; max-height: 360px; object-fit: contain; margin: 8px 0; border-radius: 10px; border: 1px solid #e7ebf2; background: #fafbfd; }

/* ===== 知识点掌握进度 ===== */
.kp-progress h2 { margin: 0 0 .3em; }
.kp-overall { display: flex; align-items: center; gap: 18px; background: linear-gradient(135deg,#f0f7ff,#eefbf7); border: 1px solid #e2ebf5; border-radius: 14px; padding: 14px 18px; margin: 10px 0 16px; flex-wrap: wrap; }
.kp-overall-num { display: flex; flex-direction: column; }
.kp-overall-num strong { font-size: 2.2rem; line-height: 1; }
.kp-overall-num span { font-size: .82rem; color: #6b7280; margin-top: 4px; }
.kp-overall-spark { flex: 1; min-width: 160px; }
.kp-good { color: #16a34a; }
.kp-mid { color: #d97706; }
.kp-weak { color: #dc2626; }
.kp-group { margin-bottom: 14px; }
.kp-group-head { display: flex; justify-content: space-between; align-items: baseline; border-bottom: 2px solid #eef1f6; padding-bottom: 5px; margin-bottom: 6px; }
.kp-subj { font-weight: 700; font-size: 1.02rem; }
.kp-subj-avg { font-size: .8rem; color: #6b7280; }
.kp-row { display: grid; grid-template-columns: 1fr auto 230px; align-items: center; gap: 12px; padding: 7px 4px; border-bottom: 1px solid #f4f6f9; }
.kp-name { font-size: .92rem; display: flex; align-items: center; gap: 8px; }
.kp-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.kp-dot.kp-good { background: #16a34a; }
.kp-dot.kp-mid { background: #d97706; }
.kp-dot.kp-weak { background: #dc2626; }
.kp-metric { display: flex; align-items: center; gap: 8px; }
.kp-chip { font-size: .78rem; font-weight: 700; padding: 2px 9px; border-radius: 999px; }
.kp-chip.kp-good { background: #dcfce7; }
.kp-chip.kp-mid { background: #fef3c7; }
.kp-chip.kp-weak { background: #fee2e2; }
.kp-trend { font-size: .76rem; font-weight: 600; }
.kp-trend.up { color: #16a34a; }
.kp-trend.down { color: #dc2626; }
.kp-trend.flat { color: #94a3b8; }
.kp-spark { display: flex; justify-content: flex-end; }
.kp-spark .mini-sparkline { width: 220px; height: 60px; }
.kp-nospark { font-size: .76rem; color: #94a3b8; }
@media (max-width: 640px) {
  .kp-row { grid-template-columns: 1fr auto; }
  .kp-spark { grid-column: 1 / -1; justify-content: flex-start; }
  .kp-spark .mini-sparkline { width: 100%; }
}

/* 联合研发署名（页脚） */
.app-credit { text-align: center; color: #9aa3b2; font-size: 12px; padding: 14px 10px 22px; letter-spacing: .3px; }

/* ===== 品牌 Logo（左上角，去掉刷字，系统名做成 logo + 联合研发署名）===== */
.app-header .brand-logo-button {
  display: flex; flex-direction: column; align-items: flex-start; gap: 3px;
  background: transparent; border: 0; padding: 4px 2px; cursor: pointer; text-align: left;
}
/* logo 字体：思源黑体/Noto Sans SC Heavy(900) 子集(仅 logo 8 字，2.6KB，自托管，国内稳加载)。
   横平竖直的现代黑体，干净不花哨。 */
@font-face {
  font-family: "WYXLogo";
  src: url("assets/vendor/fonts/wyx-logo-hei.woff2") format("woff2");
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}
.brand-logo { display: inline-flex; align-items: center; gap: 9px; line-height: 1; }
/* 「无忧学」品牌徽章：底色 + 白字 + 广告体，像个 logo 印章 */
.brand-badge {
  font-family: "WYXLogo", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 1.66rem; color: #fff; letter-spacing: 3px;
  padding: 5px 14px 7px; border-radius: 13px;
  background: linear-gradient(135deg, #15b8c6 0%, #2f7ab7 52%, #6d5ae0 100%);
  box-shadow: 0 7px 18px rgba(27, 91, 150, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.38);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
/* 「错题清系统」：同款广告体 + 品牌渐变字，和徽章拉开层次 */
.brand-name {
  font-family: "WYXLogo", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 1.52rem; letter-spacing: 2px;
  background: linear-gradient(110deg, #1e7a9a, #2f7ab7 55%, #6d5ae0);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: #1e6b8c;
}
.brand-credit { font-size: 0.82rem; font-weight: 800; color: #3f4a5a; letter-spacing: 0.2px; margin-top: 1px; }
.brand-credit .bc-x { color: #1e9aa6; font-weight: 900; margin: 0 2px; }
@media (max-width: 600px) {
  .brand-logo { gap: 6px; }
  .brand-badge { font-size: 1.24rem; letter-spacing: 2px; padding: 4px 10px 5px; border-radius: 10px; }
  .brand-name { font-size: 1.16rem; letter-spacing: 1px; }
  .brand-credit { font-size: 0.7rem; font-weight: 700; }
}
/* 小优老师弹窗标题旁的口号 */
.tutor-modal-slogan { font-size: 0.92rem; font-weight: 800; color: #ffe0bf; letter-spacing: 0.5px; margin-left: 6px; }

/* ===== 远程督学：学生端"督学登录"按钮 + 弹窗 + 长列表"显示更多" ===== */
.dushe-chip { border:1.5px solid #cfe0e6; background:#eef7f9; color:#1e7a8c; border-radius:999px; padding:7px 13px; font:inherit; font-weight:800; font-size:.9rem; cursor:pointer; white-space:nowrap; }
.dushe-chip:hover { background:#e2f1f4; }
.dushe-chip.is-on { background:linear-gradient(135deg,#13b07a,#0f9a86); color:#fff; border:0; box-shadow:0 6px 16px rgba(17,160,120,.28); }
.dushe-overlay { position:fixed; inset:0; z-index:10001; background:rgba(15,30,40,.5); display:flex; align-items:center; justify-content:center; padding:5vh 6vw; }
.dushe-card { background:#fff; border-radius:18px; padding:26px 24px; width:min(380px,94vw); box-shadow:0 20px 50px rgba(20,30,42,.28); }
.dushe-title { font-size:20px; font-weight:900; margin-bottom:6px; }
.dushe-sub { color:#6b7787; font-size:13px; margin:0 0 16px; line-height:1.6; }
.dushe-err { color:#e05656; font-size:13px; min-height:18px; margin-bottom:8px; }
.dushe-card input { width:100%; box-sizing:border-box; padding:12px 13px; border:1.5px solid #e6ebf2; border-radius:11px; font-size:16px; margin-bottom:11px; outline:none; }
.dushe-card input:focus { border-color:#2f7ab7; }
.dushe-row { display:flex; gap:10px; margin-top:4px; }
.dushe-row button { flex:1; }
.load-more-row { justify-content:center; margin-top:6px; }
.load-more-btn { font-weight:800; }

/* ===== 平板适配：大屏横屏用足宽度（红米Pad2Pro 2560×1600/16:10 ≈1280css；小米6SPro 3048×2032/3:2 ≈1520css）===== */
@media (min-width: 1180px) {
  .center-shell, .quiz-shell, .review-shell, .dashboard { width: min(1380px, calc(100vw - 2.6rem)); }
  .answer-grid button { min-height: 7rem; }
  .question-panel h2 { font-size: clamp(1.7rem, 2.6vw, 2.5rem); }
  .question-panel .question-stem-rich, .ssl-stem, .cp-stem { font-size: clamp(1.18rem, 1.55vw, 1.42rem); }
}
/* 触控平板：按钮/选项点击区更大，手指好点 */
@media (pointer: coarse) and (min-width: 820px) {
  .ghost-button, .primary-button, .secondary-button { min-height: 3.25rem; }
  .subject-tab { padding: 0.85rem 1rem; }
  .option-list>span { padding: 0.55rem 0.85rem; font-size: 1.02rem; }
  .answer-grid button { min-height: 7.2rem; }
  .review-card h2, .question-panel h2 { line-height: 1.4; }
  .question-panel .question-stem-rich, .ssl-stem, .cp-stem { line-height: 1.9; }
  /* 错因/选项等可点元素留更大间距，避免误触 */
  .diagnosis-options button { min-height: 3.4rem; }
}
/* 3:2 更方的屏：横屏纵向更舒展 */
@media (min-width: 1180px) and (orientation: landscape) {
  .home-hero { grid-template-columns: minmax(0, 1.15fr) minmax(18rem, 0.85fr); }
}

/* ===== 头部：把 logo / 用户控件 / 小优老师 / 费曼 拍平到同一个 flex 流里一起换行 =====
   logo 靠左，其余靠右成组；横屏宽→挤成一行，竖屏窄→自动两行；小优老师+费曼不再独占一整行。 */
.app-header { flex-direction: row; align-items: center; flex-wrap: wrap; justify-content: flex-start; gap: 0.45rem 0.7rem; }
/* display:contents 拍平嵌套容器，让里面的按钮直接参与 .app-header 的换行流 */
.header-top, .header-tools, .current-user { display: contents; }
.app-header .brand-logo-button { margin-right: auto; }   /* logo 占左，其余被推到右侧 */
/* 头部按钮统一压紧，便于一行容纳 */
.app-header .tutor-header-btn,
.app-header .feynman-header-btn { padding: 0.42rem 0.8rem; font-size: 0.86rem; white-space: nowrap; }
.brand-logo .brand-badge { white-space: nowrap; }       /* "错题清"不换行 */
.brand-credit { white-space: nowrap; }
.cur-stu { white-space: nowrap; }
@media (max-width: 560px) { .brand-credit { white-space: normal; } .app-header { gap: 0.4rem 0.5rem; } }

/* ===== 底部：版本号 + 检查更新（主动版本更新）===== */
.app-footer { display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; padding: 20px 12px 30px; color: #9aa3b2; font-size: 13px; }
.app-footer .af-ver { letter-spacing: .3px; }
.update-btn { border: 1px solid #cfe0e6; background: #fff; color: #2f7ab7; border-radius: 999px; padding: 8px 18px; font: inherit; font-weight: 800; font-size: 13.5px; cursor: pointer; box-shadow: 0 3px 10px rgba(47,122,183,.12); }
.update-btn:hover { background: #f2f8fc; }
.update-btn:active { transform: translateY(1px); }
.download-btn { display: inline-flex; align-items: center; gap: 4px; text-decoration: none; border: none; background: linear-gradient(135deg, #15b8c6, #2f7ab7 55%, #6d5ae0); color: #fff; border-radius: 999px; padding: 8px 18px; font: inherit; font-weight: 800; font-size: 13.5px; cursor: pointer; box-shadow: 0 4px 12px rgba(47,122,183,.28); }
.download-btn:hover { filter: brightness(1.05); }
.download-btn:active { transform: translateY(1px); }
/* 底部"轻便模式"开关按钮 */
.lite-btn { border: 1px solid #cfe0e6; background: #fff; color: #2f7ab7; border-radius: 999px; padding: 8px 18px; font: inherit; font-weight: 800; font-size: 13.5px; cursor: pointer; box-shadow: 0 3px 10px rgba(47,122,183,.12); }
.lite-btn:hover { background: #f2f8fc; }
.lite-btn.is-on { background: #1e9aa6; color: #fff; border-color: #1e9aa6; box-shadow: 0 4px 12px rgba(30,154,166,.3); }

/* ════════════════════════════════════════════════════════════════
   无忧学错题清 · UI v2 —— 多邻国(Duolingo)式扁平蓝设计语言（沿用现有类名）
   实色描边阴影(0 Xpx 0，无模糊 → 比毛玻璃/模糊阴影省 GPU) + 3D 按钮回弹 + 对绿错红 + 圆角卡片。
   ════════════════════════════════════════════════════════════════ */
:root {
  --exam-serif: "宋体", SimSun, "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", serif;
  --exam-hei: "黑体", SimHei, "Heiti SC", "Microsoft YaHei", sans-serif;
  --brand: #1cb0f6; --brand-deep: #1492d6; --brand-dim: #9fdcff; --brand-soft: #ddf2ff; --brand-ink: #0b6fa6;
  --good: #58cc02; --good-deep: #58a700; --good-soft: #d8f7b5;
  --again: #ff4b4b; --again-deep: #e23b3b; --again-soft: #ffe0e1;
  --hard: #ff9600; --hard-soft: #ffe9cc; --gold: #ffc800; --gold-deep: #e0a800;
  --bg: #f1f7fd; --surface: #ffffff; --surface-2: #eef4fb;
  --line: #e3ebf3; --line-strong: #d6e0ea; --text: #2b3b4e; --muted: #8794a6;
  --radius: 20px; --radius-sm: 14px;
}
/* 背景：柔和蓝白光晕（一次绘制，便宜），整体蓝白基调 */
body {
  background:
    radial-gradient(1200px 600px at 8% -10%, rgba(28,176,246,.14), transparent 60%),
    radial-gradient(900px 520px at 110% 4%, rgba(124,92,255,.09), transparent 55%),
    var(--bg) !important;
  color: var(--text);
}
/* 全局去毛玻璃（扁平 + 省 GPU），半透明顶栏改实色 */
.app-header, .brand-button, .intro-panel, .hero-panel, .hero-art { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
.app-header { background: rgba(255,255,255,.97) !important; border-bottom: 1px solid var(--line) !important; box-shadow: none !important; }

/* ── 3D 立体按钮（招牌：实色底边 + 按下回弹，无模糊阴影）── */
.primary-button {
  background: var(--brand) !important; color: #fff !important; border: none !important;
  border-radius: var(--radius-sm) !important; font-weight: 800 !important; letter-spacing: .3px;
  box-shadow: 0 4px 0 var(--brand-deep) !important; transition: transform .06s ease, box-shadow .06s ease, filter .15s !important;
}
.primary-button:hover { filter: brightness(1.04); }
.primary-button:active { transform: translateY(4px) !important; box-shadow: 0 0 0 var(--brand-deep) !important; }
.primary-button:disabled { background: #c4d2df !important; box-shadow: 0 4px 0 #aebccb !important; color: #fff !important; }
.secondary-button {
  background: var(--brand-soft) !important; color: var(--brand-ink) !important; border: 2px solid var(--brand-dim) !important;
  border-radius: var(--radius-sm) !important; font-weight: 800 !important; box-shadow: 0 3px 0 var(--brand-dim) !important;
  transition: transform .06s ease, box-shadow .06s ease !important;
}
.secondary-button:active { transform: translateY(3px) !important; box-shadow: 0 0 0 var(--brand-dim) !important; }
.ghost-button {
  background: var(--surface) !important; color: var(--brand-ink) !important; border: 2px solid var(--line-strong) !important;
  border-radius: var(--radius-sm) !important; font-weight: 800 !important; box-shadow: 0 3px 0 var(--line-strong) !important;
  transition: transform .06s ease, box-shadow .06s ease !important;
}
.ghost-button:active { transform: translateY(3px) !important; box-shadow: 0 0 0 var(--line-strong) !important; }

/* ── 学段/科目 tab：圆角药丸，选中蓝底 ── */
.subject-tab { border-radius: 999px !important; font-weight: 800 !important; border: 2px solid var(--line-strong) !important; background: var(--surface) !important; color: var(--text) !important; box-shadow: 0 2px 0 var(--line-strong) !important; }
.subject-tab.is-active, .subject-tab.active { background: var(--brand-soft) !important; color: var(--brand-ink) !important; border-color: var(--brand-dim) !important; box-shadow: 0 2px 0 var(--brand-dim) !important; }

/* ── 卡片统一：白面 + 细描边 + 圆角 + 实色底边（无模糊阴影）── */
.hero-card, .mode-card, .review-card, .question-panel, .exam-card, .segment-card,
.student-card, .trend-card, .report-panel, .hero-panel, .intro-panel,
.favorite-preview-card, .mini-card-one, .mini-card-two, .empty-state {
  background: var(--surface) !important; border: 1.5px solid var(--line) !important;
  border-radius: var(--radius) !important; box-shadow: 0 2px 0 var(--line-strong) !important;
}

/* ── 答题选项卡（多邻国答案卡：实色底边 + 选中/对/错状态）── */
.answer-grid button {
  background: var(--surface) !important; border: 2px solid var(--line-strong) !important; color: var(--text) !important;
  border-radius: var(--radius-sm) !important; font-weight: 700 !important; box-shadow: 0 3px 0 var(--line-strong) !important;
  transition: border-color .12s, background .12s, transform .06s, box-shadow .06s !important;
  touch-action: manipulation !important;
}
.answer-grid button:hover { border-color: var(--brand-dim) !important; background: var(--brand-soft) !important; }
.answer-grid button:active { transform: translateY(3px) !important; box-shadow: 0 0 0 var(--line-strong) !important; }
.answer-grid button.is-selected { border-color: var(--brand) !important; }
.answer-grid button.is-correct { border-color: var(--good) !important; background: var(--good-soft) !important; color: var(--good-deep) !important; box-shadow: 0 3px 0 var(--good-deep) !important; }
.answer-grid button.is-wrong { border-color: var(--again) !important; background: var(--again-soft) !important; color: var(--again-deep) !important; box-shadow: 0 3px 0 var(--again-deep) !important; }
.answer-letter { background: var(--brand-soft) !important; color: var(--brand-ink) !important; border-radius: 10px !important; font-weight: 800 !important; }
.answer-grid button.is-correct .answer-letter { background: var(--good) !important; color: #fff !important; }
.answer-grid button.is-wrong .answer-letter { background: var(--again) !important; color: #fff !important; }

/* ── 反馈横幅：对绿错红 ── */
.feedback { border-radius: var(--radius) !important; font-weight: 800 !important; box-shadow: none !important; }
.feedback.correct { background: var(--good-soft) !important; color: var(--good-deep) !important; border: 1.5px solid var(--good) !important; }
.feedback.wrong, .feedback.timeout { background: var(--again-soft) !important; color: var(--again-deep) !important; border: 1.5px solid var(--again) !important; }

/* ── 标签药丸 ── */
.knowledge-pill { background: var(--brand-soft) !important; color: var(--brand-ink) !important; border: 1.5px solid var(--brand-dim) !important; border-radius: 999px !important; font-weight: 800 !important; }
.pill { border-radius: 999px !important; font-weight: 800 !important; }
.pill.gold { background: var(--gold) !important; color: #6b4e00 !important; border: none !important; }

/* ── 输入框 ── */
input[type="text"], input[type="password"], input[type="search"] { border-radius: var(--radius-sm) !important; border: 2px solid var(--line-strong) !important; }
input[type="text"]:focus, input[type="password"]:focus { border-color: var(--brand) !important; outline: none !important; }

/* ── 倒计时进度条用品牌蓝 ── */
.timer-fill { background: var(--brand) !important; }

/* ── Logo 扁平化（多邻国实色徽章，去渐变）── */
.brand-badge { background: var(--brand) !important; box-shadow: 0 3px 0 var(--brand-deep) !important; text-shadow: none !important; }
.brand-name { background: none !important; -webkit-text-fill-color: var(--brand-ink) !important; color: var(--brand-ink) !important; }

/* ── 导航栏按钮：多邻国彩色 3D 药丸，不同功能不同色（与蓝主色搭配的绿/金/紫/红）。统一去模糊阴影。 ── */
.tutor-header-btn, .feynman-header-btn, .models-header-btn, .qbank-header-btn, .nav-collapse-btn, .nav-expand-btn,
.current-user > button, .current-user .ghost-button, .dushe-chip {
  border-radius: var(--radius-sm) !important;     /* 统一中等圆角(14px)，不再胖药丸，跟"进入分组"一致 */
  font-weight: 800 !important;
  min-height: 0 !important;                         /* 覆盖触控版 .ghost-button 的 3.25rem，统一高度 */
  height: auto !important;
  padding: 0.46rem 0.92rem !important;              /* 统一内边距 → 所有按钮同高 */
  font-size: 0.9rem !important;
  line-height: 1.15 !important;
  display: inline-flex !important; align-items: center !important; gap: 5px;
  white-space: nowrap;
  transition: transform .06s ease, box-shadow .06s ease, filter .15s !important;
}
/* 小优老师答疑 = 蓝（主助手） */
.tutor-header-btn { background: var(--brand) !important; color: #fff !important; border: none !important; box-shadow: 0 3px 0 var(--brand-deep) !important; }
.tutor-header-btn:hover { transform: none !important; filter: brightness(1.04) !important; box-shadow: 0 3px 0 var(--brand-deep) !important; }
.tutor-header-btn:active { transform: translateY(3px) !important; box-shadow: 0 0 0 var(--brand-deep) !important; }
/* 费曼学习法 = 紫 */
.feynman-header-btn { background: #a560e8 !important; color: #fff !important; border: none !important; box-shadow: 0 3px 0 #8a47cf !important; }
.feynman-header-btn:hover { transform: none !important; filter: brightness(1.04) !important; box-shadow: 0 3px 0 #8a47cf !important; }
.feynman-header-btn:active { transform: translateY(3px) !important; box-shadow: 0 0 0 #8a47cf !important; }
/* 互动模型 = 青(teal) */
.models-header-btn { background: #0fb9b1 !important; color: #fff !important; border: none !important; font-family: inherit !important; cursor: pointer; box-shadow: 0 3px 0 #0a9a93 !important; }
.models-header-btn:hover { transform: none !important; filter: brightness(1.04) !important; box-shadow: 0 3px 0 #0a9a93 !important; }
.models-header-btn:active { transform: translateY(3px) !important; box-shadow: 0 0 0 #0a9a93 !important; }
/* 题库中台 = 橙 */
.qbank-header-btn { background: #ff9600 !important; color: #fff !important; border: none !important; font-family: inherit !important; cursor: pointer; box-shadow: 0 3px 0 #d97e00 !important; }
.qbank-header-btn:hover { transform: none !important; filter: brightness(1.04) !important; box-shadow: 0 3px 0 #d97e00 !important; }
.qbank-header-btn:active { transform: translateY(3px) !important; box-shadow: 0 0 0 #d97e00 !important; }
/* 题卡上的「问小优老师」按钮 = 蓝 3D（与小优老师统一） */
.tutor-ask-btn { background: var(--brand) !important; color: #fff !important; border: none !important; border-radius: var(--radius-sm) !important; box-shadow: 0 4px 0 var(--brand-deep) !important; }
.tutor-ask-btn:hover { transform: none !important; filter: brightness(1.04) !important; box-shadow: 0 4px 0 var(--brand-deep) !important; }
.tutor-ask-btn:active { transform: translateY(4px) !important; box-shadow: 0 0 0 var(--brand-deep) !important; }
/* 学习档案 = 金 */
.current-user [data-action="open-archive"] { background: var(--gold) !important; color: #6b4e00 !important; border: none !important; box-shadow: 0 3px 0 var(--gold-deep) !important; }
.current-user [data-action="open-archive"]:active { transform: translateY(3px) !important; box-shadow: 0 0 0 var(--gold-deep) !important; }
/* 督学 = 绿（连上后实绿，未连绿描边） */
.dushe-chip { background: var(--good-soft) !important; color: var(--good-deep) !important; border: 2px solid #aee084 !important; box-shadow: 0 2px 0 #aee084 !important; }
.dushe-chip.is-on { background: var(--good) !important; color: #fff !important; border: none !important; box-shadow: 0 3px 0 var(--good-deep) !important; }
.dushe-chip:active { transform: translateY(2px) !important; box-shadow: 0 0 0 var(--good-deep) !important; }
/* 切换学段/学生 = 浅蓝药丸 */
.current-user [data-action="switch-stage"], .current-user [data-action="switch-user"] { background: var(--brand-soft) !important; color: var(--brand-ink) !important; border: 2px solid var(--brand-dim) !important; box-shadow: 0 2px 0 var(--brand-dim) !important; }
/* 退出账号 = 红软描边 */
.logout-btn { background: #fff !important; color: var(--again-deep) !important; border: 2px solid #ffc2c2 !important; box-shadow: 0 2px 0 #ffc2c2 !important; }
.logout-btn:active { transform: translateY(2px) !important; box-shadow: 0 0 0 #ffc2c2 !important; }
/* 收起 / 展开导航栏 = 中性灰药丸 */
.nav-collapse-btn, .nav-expand-btn { background: var(--surface) !important; color: var(--muted) !important; border: 2px solid var(--line-strong) !important; box-shadow: 0 2px 0 var(--line-strong) !important; }
.nav-expand-btn { color: var(--brand-ink) !important; }
.nav-collapse-btn:active, .nav-expand-btn:active { transform: translateY(2px) !important; box-shadow: 0 0 0 var(--line-strong) !important; }

/* ════════════════════════════════════════════════════════════════
   可收起导航栏：点"收起"把整条顶栏缩成一个"展开导航栏"按钮(小优老师常驻并列)，
   给题目/答案腾出最大面积。横屏尤其有用。
   ════════════════════════════════════════════════════════════════ */
.app-header-collapsed { flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; gap: 8px !important; padding: 6px 12px !important; flex-wrap: nowrap !important; }
.nav-expand-btn { display: inline-flex; align-items: center; gap: 6px; border: 2px solid var(--line-strong); background: var(--surface); color: var(--brand-ink); border-radius: 999px; padding: 7px 15px; font: inherit; font-weight: 800; font-size: 13.5px; cursor: pointer; box-shadow: 0 2px 0 var(--line-strong); }
.nav-expand-btn:active { transform: translateY(2px); box-shadow: 0 0 0 var(--line-strong); }
.nav-collapse-btn { border: 2px solid var(--line-strong); background: var(--surface); color: var(--muted); border-radius: 999px; padding: 6px 13px; font: inherit; font-weight: 800; font-size: 12.5px; cursor: pointer; box-shadow: 0 2px 0 var(--line-strong); white-space: nowrap; }
.nav-collapse-btn:active { transform: translateY(2px); box-shadow: 0 0 0 var(--line-strong); }
/* 收起态下小优老师按钮也走药丸紧凑 */
.app-header-collapsed .tutor-header-btn { padding: 0.4rem 0.8rem !important; font-size: 0.85rem !important; }

/* ===== 轻便模式（body.lite-mode）：低配设备(如 vivo Pad SE)一键关掉最耗性能的特效，换流畅度 =====
   主要关：毛玻璃 backdrop-filter（sticky 头部每帧重合成，低端 GPU 必卡）、阴影、动画、过渡、hover 位移、装饰大图。 */
.lite-mode .app-header,
.lite-mode .brand-button,
.lite-mode .intro-panel,
.lite-mode .hero-art { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
.lite-mode .app-header { background: #fbf7f1 !important; }   /* 半透明毛玻璃 → 不透明实色，免去模糊合成 */
.lite-mode *, .lite-mode *::before, .lite-mode *::after {
  box-shadow: none !important;
  text-shadow: none !important;
  animation: none !important;
  transition: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
.lite-mode button:hover, .lite-mode a:hover, .lite-mode .ghost-button:hover,
.lite-mode .primary-button:hover, .lite-mode .secondary-button:hover,
.lite-mode .subject-tab:hover, .lite-mode .answer-grid button:hover,
.lite-mode button:active, .lite-mode a:active {
  transform: none !important; filter: none !important;
}
/* 纯装饰大图/插画隐藏，省渲染（功能性的迷你趋势图保留） */
.lite-mode .intro-illustration, .lite-mode .hero-art { display: none !important; }
/* 标题"无忧学错题清系统"整体一行、绝不换行（之前平板挤换行了）*/
.brand-logo { flex-wrap: nowrap; white-space: nowrap; }
.brand-logo .brand-badge, .brand-logo .brand-name { white-space: nowrap; word-break: keep-all; flex: none; }

/* ===== 刷题页(is-quiz-view)：在"拍平换行"的全局头部基础上再省高度，给题目腾纵向空间。
   头部一行/两行布局已是全局，这里只做刷题专属的收紧。===== */
.is-quiz-view .app-header { gap: 0.4rem 0.6rem; padding-top: 0.5rem; padding-bottom: 0.45rem; }
.is-quiz-view .brand-credit { display: none; }                 /* 刷题时收起"联合研发"署名，省高度 */
.is-quiz-view .brand-badge { font-size: 1.2rem; letter-spacing: 2px; padding: 3px 9px 4px; }
.is-quiz-view .brand-name { font-size: 1.14rem; letter-spacing: 1px; }
.is-quiz-view .tutor-header-btn,
.is-quiz-view .feynman-header-btn { padding: 0.38rem 0.7rem; font-size: 0.82rem; }

/* 横屏刷题：顶栏更扁 + 用户控件压紧 + 题号栏收紧，让整题可见 */
@media (orientation: landscape) {
  .is-quiz-view .app-header { padding-top: 0.4rem; padding-bottom: 0.35rem; }
  .is-quiz-view .current-user > button,
  .is-quiz-view .current-user .ghost-button { padding: 5px 10px; font-size: 12.5px; }
  .is-quiz-view .cur-stu { font-size: 12.5px; }
  .is-quiz-view .quiz-shell { padding-top: 0.4rem; gap: 0.5rem; }
  .is-quiz-view .quiz-topbar { margin-bottom: 0.2rem; }
  .is-quiz-view .quiz-topbar h1 { margin: 0.1rem 0; }
}

/* ===== 系统密码门禁 ===== */
.sysgate-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; }
.sysgate-card { background: #fff; border-radius: 22px; padding: 36px 30px; width: min(360px, 92vw); box-shadow: 0 18px 50px rgba(31,42,55,.14); text-align: center; }
.sysgate-ic { font-size: 46px; margin-bottom: 8px; }
.sysgate-card h1 { font-size: 22px; margin: 0 0 4px; background: linear-gradient(110deg,#15b8c6,#2f7ab7 55%,#6d5ae0); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.sysgate-card p { color: #6b7787; font-size: 14px; margin: 0 0 20px; }
.sysgate-err { color: #e05656; font-size: 13px; min-height: 18px; margin-bottom: 8px; }
.sysgate-card input { width: 100%; box-sizing: border-box; padding: 13px 14px; border: 1.5px solid #e6ebf2; border-radius: 12px; font-size: 18px; text-align: center; letter-spacing: 4px; margin-bottom: 14px; outline: none; }
.sysgate-card input:focus { border-color: #2f7ab7; }
.sysgate-card .primary-button { width: 100%; min-height: 3.1rem; }

/* 已掌握功能 */
.mastered-move-row { margin-top: 10px; }
.move-to-mastered-btn { color: #1d7a33; border-color: #bfe6c8 !important; background: #f0f9f0 !important; }
.move-to-mastered-btn:hover { background: #e3f4e6 !important; }
.mastered-card-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.review-card.is-mastered-review { border-left: 4px solid #34c759; }

/* 录入题：科目筛选 chips */
.ext-subject-chips { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0 4px; }
.ext-chip { padding: 6px 14px; border-radius: 999px; border: 1.5px solid #d8e0ea; background: #fff; color: #41526b; font-size: 14px; cursor: pointer; }
.ext-chip.is-active { border-color: #2f7ab7; background: #eaf3fb; color: #1f5d96; font-weight: 600; }

/* 登录系统 */
.login-tabs { display: flex; gap: 8px; margin: 6px 0 14px; }
.login-tab { flex: 1; padding: 10px 8px; border-radius: 11px; border: 1.5px solid #e6ebf2; background: #fff; color: #6b7787; font-size: 15px; cursor: pointer; }
.login-tab.is-active { border-color: #2f7ab7; background: #eaf3fb; color: #1f5d96; font-weight: 700; }
.login-hint { color: #8a96a6; font-size: 12.5px; margin: 12px 0 0; line-height: 1.55; }
.role-badge { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 8px; font-size: 11px; vertical-align: middle; }
.role-teacher { background: #ffe9c7; color: #b5701a; }
.logout-btn { color: #c0392b; }

/* ===== 推题组卷弹窗 + 试卷样式（多邻国扁平 + 接近真实试卷的打印导出）===== */
.paper-overlay { position: fixed; inset: 0; z-index: 10050; background: rgba(15,30,42,.5); display: flex; align-items: center; justify-content: center; padding: 3vh 3vw; }
.paper-modal { background: var(--surface, #fff); width: min(960px, 96vw); height: min(94vh, 1000px); border-radius: 18px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 24px 70px rgba(0,0,0,.32); }
.paper-bar { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; padding: .6rem .9rem; background: #ff9600; color: #fff; }
.paper-title { font-weight: 800; font-size: .98rem; }
.paper-bar-actions { display: flex; gap: 8px; align-items: center; }
.paper-print-btn { border: 0; background: rgba(255,255,255,.22); color: #fff; font: inherit; font-weight: 800; font-size: .85rem; border-radius: 999px; padding: .4rem .9rem; cursor: pointer; }
.paper-print-btn:hover { background: rgba(255,255,255,.36); }
.paper-close { border: 0; background: rgba(255,255,255,.18); color: #fff; width: 32px; height: 32px; border-radius: 999px; font-size: 16px; font-weight: 800; cursor: pointer; }
.paper-body { flex: 1 1 auto; overflow: auto; -webkit-overflow-scrolling: touch; background: #eef2f7; padding: 18px; }
.paper-empty { text-align: center; color: #8794a6; font-weight: 700; line-height: 1.9; padding: 50px 20px; }
.paper-intro { max-width: 560px; margin: 24px auto; background: #fff; border: 1.5px solid var(--line, #e3ebf3); border-radius: 18px; box-shadow: 0 2px 0 var(--line-strong, #d6e0ea); padding: 26px 22px; text-align: center; }
.paper-intro .pi-ic { font-size: 42px; }
.paper-intro h2 { font-size: 19px; margin: 8px 0 10px; color: #0b6fa6; }
.paper-intro p { color: #5a6b7a; font-size: 14.5px; line-height: 1.8; margin: 0 0 14px; }
.paper-intro .paper-note { font-size: 12.5px; color: #8794a6; margin-top: 12px; }
.paper-go { border: 0; background: #ff9600; color: #fff; font: inherit; font-weight: 800; font-size: 16px; border-radius: 14px; padding: 13px 24px; cursor: pointer; box-shadow: 0 4px 0 #d97e00; }
.paper-go:active { transform: translateY(4px); box-shadow: 0 0 0 #d97e00; }
.paper-progress { max-width: 420px; margin: 60px auto; text-align: center; }
.paper-progress .pp-emoji { font-size: 44px; animation: pl-bob 1.4s ease-in-out infinite; }
.paper-progress .pp-stage { margin-top: 12px; font-size: 16px; font-weight: 800; color: #9a6000; min-height: 23px; }
.paper-progress .pp-bar { margin: 16px auto 0; width: min(320px, 86%); height: 14px; background: #e3ebf3; border-radius: 999px; overflow: hidden; }
.paper-progress .pp-bar > i { display: block; height: 100%; width: 4%; border-radius: 999px; background: linear-gradient(90deg, #ffc36b, #ff9600); transition: width .3s ease; }
.paper-progress .pp-count { margin-top: 10px; font-size: 13px; font-weight: 800; color: #8794a6; }
/* ===== 试卷本体：贴近中国真题卷（宋体正文 + 黑体标题 + 密封线 + 大题规范）===== */
.exam-paper {
  --exam-serif: "宋体", SimSun, "Songti SC", "STSong", serif;
  --exam-hei: "黑体", SimHei, "Heiti SC", "Microsoft YaHei", sans-serif;
  position: relative; max-width: 820px; margin: 0 auto; background: #fff; border-radius: 8px;
  box-shadow: 0 2px 14px rgba(0,0,0,.08); padding: 40px 46px; color: #000;
  font-family: var(--exam-serif); font-size: 15px; line-height: 1.9;
}
.exam-head { text-align: center; margin-bottom: 14px; }
.exam-head h1 { font-family: var(--exam-hei); font-size: 24px; letter-spacing: 1px; margin: 0 0 6px; font-weight: 800; }
.exam-head .exam-sub { font-size: 13px; color: #333; }
.exam-notice { font-size: 12.5px; color: #333; border-top: 1px solid #000; border-bottom: 1px solid #000; padding: 5px 0; margin: 10px 0 0; text-align: center; }
.exam-fillrow { display: flex; justify-content: center; gap: 26px; margin-top: 10px; padding-bottom: 12px; border-bottom: 2px solid #000; font-size: 14px; color: #000; flex-wrap: wrap; }
.exam-section { margin-top: 16px; }
.exam-section h2 { font-family: var(--exam-hei); font-size: 16.5px; font-weight: 800; margin: 0 0 9px; }
.ex-q { margin: 0 0 13px; }
.ex-stem { font-size: 15px; }
.ex-figtag { color: #c0392b; font-size: 12.5px; }
.ex-opts { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 22px; margin: 5px 0 0 20px; }
.ex-opt { font-size: 14.5px; }
.ex-space { height: 66px; border-bottom: 1px solid #999; margin: 8px 0 0; }
.exam-answers { margin-top: 24px; }
.exam-answers h2 { text-align: center; border-top: 2px solid #000; padding-top: 12px; }
.ex-ans { margin: 0 0 11px; font-size: 14px; }
.ex-ans-key { font-weight: 800; }
.ex-ans-sol { color: #222; font-size: 13.5px; margin-top: 3px; line-height: 1.75; }
/* 密封线（仅打印时出现，position:fixed 会在每一页重复）*/
.exam-seal { display: none; }
@media (max-width: 560px) { .exam-paper { padding: 24px 18px; } .ex-opts { grid-template-columns: 1fr; } }

/* 打印 / 导出 PDF：只输出试卷本体，做成真题卷样式 */
@page { size: A4; margin: 14mm 12mm 14mm 22mm; }
@media print {
  body * { visibility: hidden !important; }
  .paper-overlay, .paper-overlay * { visibility: visible !important; }
  .paper-overlay { position: absolute !important; inset: 0 !important; padding: 0 !important; background: #fff !important; display: block !important; }
  .paper-modal { width: 100% !important; height: auto !important; box-shadow: none !important; border-radius: 0 !important; display: block !important; }
  .paper-bar { display: none !important; }
  .paper-body { overflow: visible !important; background: #fff !important; padding: 0 !important; }
  .exam-paper { box-shadow: none !important; border-radius: 0 !important; max-width: 100% !important; padding: 0 !important; }
  .ex-q, .ex-ans { page-break-inside: avoid; }
  .exam-answers { page-break-before: always; }    /* 答案与解析另起一页（像真题答案卷）*/
  /* 密封线：左侧竖排，position:fixed 在每页重复 */
  .exam-seal { display: block !important; position: fixed; left: 2mm; top: 0; bottom: 0; width: 14mm; }
  .exam-seal .seal-rule { position: absolute; right: 0; top: 8mm; bottom: 8mm; border-right: 1px dashed #000; }
  .exam-seal .seal-text { position: absolute; top: 18mm; left: 3mm; writing-mode: vertical-rl; text-orientation: upright; letter-spacing: 8px; font-size: 13px; font-family: var(--exam-hei); color: #000; }
}

/* ===== 推题组卷 v2：卷内图、每题操作、历史列表 ===== */
.ex-fig { margin: 9px 0 6px; max-width: 520px; }
.ex-fig svg, .ex-fig canvas { max-width: 100%; height: auto; }
.ex-actions { display: flex; gap: 8px; flex-wrap: wrap; margin: 8px 0 2px; }
.ex-actions button { border: 1.5px solid var(--line-strong, #d6e0ea); background: #fff; color: #2f7ab7; border-radius: 999px; padding: 4px 12px; font: inherit; font-weight: 800; font-size: 12.5px; cursor: pointer; }
.ex-actions button:hover { background: #f2f8fc; }
.ex-actions button:disabled { color: #58a700; border-color: #bfe89a; background: #f1fbe9; cursor: default; }
.ex-actions button.is-on { color: #58a700; border-color: #bfe89a; background: #f1fbe9; }
/* 去掉这题：红色，提示是删除动作 */
.ex-actions button.ex-del-btn { color: #c0392b; border-color: #f3c2bc; }
.ex-actions button.ex-del-btn:hover { background: #fdecea; }
.paper-home-btn { border: 0; background: rgba(255,255,255,.22); color: #fff; font: inherit; font-weight: 800; font-size: .85rem; border-radius: 999px; padding: .4rem .9rem; cursor: pointer; }
.paper-home-btn:hover { background: rgba(255,255,255,.36); }
.paper-hist { max-width: 560px; margin: 16px auto 0; }
.paper-hist-title { font-size: 14px; font-weight: 800; color: #8794a6; margin: 0 4px 8px; }
.paper-hist-item { display: block; width: 100%; text-align: left; background: #fff; border: 1.5px solid var(--line, #e3ebf3); border-radius: 14px; box-shadow: 0 2px 0 var(--line-strong, #d6e0ea); padding: 12px 15px; margin-bottom: 9px; font: inherit; font-size: 14.5px; font-weight: 700; color: #2b3b4e; cursor: pointer; }
.paper-hist-item:hover { border-color: #9fdcff; background: #fafdff; }
.paper-hist-item .phi-time { color: #8794a6; font-size: 12.5px; font-weight: 600; margin-left: 6px; }
@media print { .no-print, .ex-actions { display: none !important; } }

/* ===== 录入：拍照按钮 + 暂存预览 + 删除 ===== */
.ext-cap-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 10px 0 4px; }
.ext-cap-btn { display: inline-flex; align-items: center; gap: 6px; background: #1cb0f6; color: #fff; border-radius: 14px; padding: 10px 18px; font-weight: 800; font-size: 14.5px; cursor: pointer; box-shadow: 0 4px 0 #1492d6; }
.ext-cap-btn:active { transform: translateY(4px); box-shadow: 0 0 0 #1492d6; }
.ext-cap-btn input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; opacity: 0; } /* 视觉隐藏但仍渲染，唤起相机更可靠 */
.ext-cap-tip { font-size: 12.5px; color: #8794a6; font-weight: 600; flex: 1; min-width: 160px; }
.ext-pending { margin: 12px 0 4px; }
.ext-pending-head { font-size: 13px; font-weight: 800; color: #0b6fa6; margin-bottom: 8px; }
.ext-thumbs { display: flex; flex-wrap: wrap; gap: 10px; }
.ext-thumb { position: relative; width: 92px; height: 92px; border-radius: 12px; border: 1.5px solid #d6e0ea; overflow: hidden; background: #fff; box-shadow: 0 2px 0 #d6e0ea; }
.ext-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ext-thumb-file { display: flex; align-items: center; justify-content: center; text-align: center; padding: 6px; font-size: 11.5px; font-weight: 700; color: #44506a; }
.ext-thumb-x { position: absolute; top: -7px; right: -7px; width: 22px; height: 22px; border-radius: 50%; border: 2px solid #fff; background: #ff4b4b; color: #fff; font-size: 14px; font-weight: 900; line-height: 1; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.25); }

/* ===== 组卷：两种取题模式 + 勾选录入题 ===== */
.paper-mode-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 4px; }
@media (max-width: 480px) { .paper-mode-grid { grid-template-columns: 1fr; } }
.paper-mode-card { background: #fff; border: 2px solid #e3ebf3; border-radius: 16px; box-shadow: 0 3px 0 #d6e0ea; padding: 18px 14px; cursor: pointer; text-align: center; }
.paper-mode-card:hover { border-color: #9fdcff; background: #fafdff; }
.paper-mode-card:active { transform: translateY(3px); box-shadow: 0 0 0 #d6e0ea; }
.paper-mode-card .pm-ic { font-size: 34px; }
.paper-mode-card .pm-t { font-weight: 800; font-size: 16px; margin: 8px 0 4px; color: #0b6fa6; }
.paper-mode-card .pm-s { font-size: 12.5px; color: #8794a6; line-height: 1.5; }
.pick-wrap { max-width: 640px; margin: 6px auto; }
.pick-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.pick-btn { border: 2px solid #d6e0ea; background: #fff; color: #0b6fa6; border-radius: 999px; padding: 6px 14px; font: inherit; font-weight: 800; font-size: 13px; cursor: pointer; box-shadow: 0 2px 0 #d6e0ea; }
.pick-btn:active { transform: translateY(2px); box-shadow: 0 0 0 #d6e0ea; }
.pick-count { margin-left: auto; font-size: 13px; font-weight: 800; color: #0b6fa6; }
.pick-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.pick-row { display: flex; align-items: center; gap: 10px; background: #fff; border: 1.5px solid #e3ebf3; border-radius: 12px; padding: 10px 12px; box-shadow: 0 2px 0 #d6e0ea; cursor: pointer; }
.pick-row input { width: 20px; height: 20px; flex: none; accent-color: #1cb0f6; }
.pick-type { flex: none; font-size: 11.5px; font-weight: 800; border-radius: 999px; padding: 2px 9px; }
.pick-type.is-choice { background: #ddf2ff; color: #0b6fa6; }
.pick-type.is-free { background: #ffe9cc; color: #9a6000; }
.pick-text { font-size: 13.5px; line-height: 1.5; color: #2b3b4e; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1; }
.pick-text .katex { font-size: 1em; }

/* ===== 考试模式（线上做题）===== */
.paper-exam-btn { border: 0; background: #58cc02; color: #fff; font: inherit; font-weight: 800; font-size: .85rem; border-radius: 999px; padding: .4rem .9rem; cursor: pointer; box-shadow: 0 3px 0 #58a700; }
.paper-exam-btn:active { transform: translateY(3px); box-shadow: 0 0 0 #58a700; }
.exam-wrap { max-width: 640px; margin: 8px auto; }
.exam-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.exam-prog { font-weight: 800; font-size: 16px; color: #0b6fa6; }
.exam-type { font-size: 12px; font-weight: 800; border-radius: 999px; padding: 3px 12px; }
.exam-type.c { background: #ddf2ff; color: #0b6fa6; } .exam-type.f { background: #ffe9cc; color: #9a6000; }
.exam-stem { background: #fff; border: 1.5px solid #e3ebf3; border-radius: 14px; box-shadow: 0 2px 0 #d6e0ea; padding: 16px; font-size: 16px; line-height: 1.8; }
.exam-opts-col { display: flex; flex-direction: column; gap: 10px; margin-top: 14px; }
.exam-opt { text-align: left; background: #fff; border: 2px solid #d6e0ea; border-radius: 14px; padding: 13px 15px; font: inherit; font-size: 15.5px; line-height: 1.6; cursor: pointer; box-shadow: 0 3px 0 #d6e0ea; }
.exam-opt:active { transform: translateY(2px); box-shadow: 0 0 0 #d6e0ea; }
.exam-opt.sel { border-color: #1cb0f6; background: #ddf2ff; box-shadow: 0 3px 0 #1492d6; }
.exam-free { margin-top: 14px; }
.exam-free-tip { color: #8794a6; font-size: 13px; margin-top: 10px; font-weight: 600; }
.exam-photo { margin-top: 12px; } .exam-photo img { max-width: 100%; border-radius: 12px; border: 1.5px solid #d6e0ea; } .exam-photo-tip { font-size: 12.5px; color: #58a700; font-weight: 700; margin-top: 5px; }
.exam-nav { display: flex; align-items: center; justify-content: space-between; margin-top: 18px; gap: 10px; }
.exam-nav-btn { border: 2px solid #d6e0ea; background: #fff; color: #0b6fa6; border-radius: 14px; padding: 11px 20px; font: inherit; font-weight: 800; font-size: 15px; cursor: pointer; box-shadow: 0 3px 0 #d6e0ea; }
.exam-nav-btn.primary { background: #1cb0f6; color: #fff; border: 0; box-shadow: 0 4px 0 #1492d6; }
.exam-nav-btn.submit { background: #58cc02; color: #fff; border: 0; box-shadow: 0 4px 0 #58a700; }
.exam-nav-btn:active { transform: translateY(3px); box-shadow: 0 0 0 #d6e0ea; }
/* 结果 */
.exam-result { max-width: 680px; margin: 6px auto; }
.exam-score { text-align: center; background: #fff; border: 1.5px solid #e3ebf3; border-radius: 18px; box-shadow: 0 2px 0 #d6e0ea; padding: 20px; margin-bottom: 14px; }
.es-rate { font-size: 52px; font-weight: 900; color: #1cb0f6; line-height: 1; } .es-rate span { font-size: 26px; }
.es-sub { font-size: 14px; color: #8794a6; font-weight: 700; margin-top: 6px; }
.er-card { background: #fff; border: 1.5px solid #e3ebf3; border-left: 5px solid #d6e0ea; border-radius: 14px; box-shadow: 0 2px 0 #d6e0ea; padding: 14px 16px; margin-bottom: 12px; }
.er-card.ok { border-left-color: #58cc02; } .er-card.bad { border-left-color: #ff4b4b; } .er-card.mid { border-left-color: #ff9600; }
.er-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.er-no { font-weight: 800; color: #44506a; }
.er-verdict { font-size: 13px; font-weight: 800; border-radius: 999px; padding: 3px 13px; }
.er-verdict.ok { background: #eafbe0; color: #58a700; } .er-verdict.bad { background: #ffe9e9; color: #c0392b; } .er-verdict.mid { background: #fff4e0; color: #9a6000; }
.er-stem { font-size: 15px; line-height: 1.7; }
.er-detail { margin-top: 8px; font-size: 14px; }
.er-comment { background: #fff7ed; border: 1px solid #ffd9a8; border-radius: 10px; padding: 8px 11px; color: #9a6000; font-size: 13.5px; margin-bottom: 6px; }
.er-photo { max-width: 200px; border-radius: 10px; border: 1.5px solid #d6e0ea; display: block; margin-top: 6px; }
.er-sol { margin-top: 8px; font-size: 13.5px; color: #44506a; line-height: 1.7; background: #f7f9fc; border-radius: 10px; padding: 9px 12px; }
.ex-opt.er-correct { color: #58a700; font-weight: 800; } .ex-opt.er-wrong { color: #c0392b; text-decoration: line-through; }
.er-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 11px; }
.er-actions button { border: 1.5px solid #d6e0ea; background: #fff; color: #2f7ab7; border-radius: 999px; padding: 5px 13px; font: inherit; font-weight: 800; font-size: 12.5px; cursor: pointer; }
.er-actions button.is-on { color: #58a700; border-color: #bfe89a; background: #f1fbe9; }

/* 导出 Word 的下载提示条 */
.paper-dllink { position: absolute; left: 12px; right: 12px; bottom: 12px; z-index: 5; background: #0b6fa6; color: #fff; border-radius: 12px; padding: 11px 14px; font-size: 14px; font-weight: 700; box-shadow: 0 8px 24px rgba(0,0,0,.25); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.paper-dllink a { color: #fff; font-weight: 900; text-decoration: underline; }
.paper-dllink .pdl-x { margin-left: auto; border: 0; background: rgba(255,255,255,.2); color: #fff; width: 26px; height: 26px; border-radius: 50%; font-size: 16px; font-weight: 900; cursor: pointer; }
.paper-pdf-btn { border: 0; background: #c0392b; color: #fff; font: inherit; font-weight: 800; font-size: .85rem; border-radius: 999px; padding: .4rem .9rem; cursor: pointer; box-shadow: 0 3px 0 #9c2c20; }
.paper-pdf-btn:active { transform: translateY(3px); box-shadow: 0 0 0 #9c2c20; }
.paper-pdf-btn:disabled { opacity: .7; }
.paper-bg-tip { margin: 16px auto 0; max-width: 420px; font-size: 13px; line-height: 1.7; color: #5a6b7a; background: #fff7ed; border: 1.5px solid #ffd9a8; border-radius: 12px; padding: 11px 14px; }
.paper-bg-tip b { color: #c0392b; }
/* 题库中台真题图 */
.ex-img-wrap { margin: 9px 0 6px; max-width: 540px; }
.ex-img { max-width: 100%; height: auto; display: block; border: 1px solid #e3ebf3; border-radius: 8px; background: #fff; }
.ex-img-src { display: inline-block; margin-top: 4px; font-size: 11px; font-weight: 800; color: #0b6fa6; background: #ddf2ff; border-radius: 999px; padding: 1px 9px; }

/* 录入题速刷：勾选 / 对错统计 / 选中态 / 自评 */
.ext-pick { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; font-size: 12px; font-weight: 800; color: #0b6fa6; background: #eef6ff; border: 1px solid #cfe6fb; border-radius: 999px; padding: 2px 10px; user-select: none; }
.ext-pick.on { color: #fff; background: #0b6fa6; border-color: #0b6fa6; }
.ext-pick input { width: 14px; height: 14px; margin: 0; }
.ext-stat { font-size: 12px; font-weight: 800; color: #b4690e; background: #fff4e2; border-radius: 999px; padding: 2px 10px; }
.ext-stat.muted { color: #8a99a8; background: #f0f3f7; }
.review-card.is-picked { box-shadow: 0 0 0 2px #0b6fa6 inset; border-radius: 14px; }
.selfrate-answer { margin: 6px 0 10px; padding: 10px 12px; background: #f5faff; border: 1px solid #d8ebfb; border-radius: 12px; }
.selfrate-reveal-btn { font-size: 15px; }

/* 返回上一页：比"返回首页"(ghost灰描边)更醒目——实色橙、阴影、回退箭头，出现在子页面顶栏 */
.go-back-button { display: inline-flex; align-items: center; gap: 4px; font-size: 15px; font-weight: 900; color: #fff; cursor: pointer; background: #ff8f1f; border: 0; border-radius: 999px; padding: 9px 18px; margin-right: 8px; box-shadow: 0 3px 0 #e07400; letter-spacing: 1px; line-height: 1; white-space: nowrap; }
.go-back-button:hover { background: #ff9d3a; }
.go-back-button:active { transform: translateY(2px); box-shadow: 0 1px 0 #e07400; }
.app-header-collapsed .go-back-button { font-size: 14px; padding: 7px 14px; margin-right: 6px; }

/* 顶栏"返回首页"：清晰的浅蓝胶囊按钮（醒目度低于正文的橙色"返回上一页"，符合主次） */
.go-home-nav-button { display: inline-flex; align-items: center; gap: 4px; font-size: 14px; font-weight: 800; color: #0b6fa6; cursor: pointer; background: #eaf6ff; border: 1px solid #bfe3fb; border-radius: 999px; padding: 7px 14px; margin-right: 8px; white-space: nowrap; line-height: 1; }
.go-home-nav-button:hover { background: #dcefff; }
.app-header-collapsed .go-home-nav-button { font-size: 13px; padding: 6px 12px; margin-right: 6px; }

/* ===== 学习档案 P1：攻克墙 + 本题正误时间轴 + 状态徽章 ===== */
.conquer-wall { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 10px 0; padding: 10px 14px; border-radius: 12px; background: linear-gradient(90deg, #fff7e6, #fffdf7); border: 1px solid #ffe0a3; font-size: 15px; font-weight: 800; color: #ad6800; }
.conquer-wall b { font-size: 18px; color: #d4380d; }
.conquer-wall .cw-tip { font-size: 12px; font-weight: 600; color: #b08948; }
.rc-top-right { display: inline-flex; align-items: center; gap: 8px; }
.conquer-badge { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 800; white-space: nowrap; }
.cb-conquered { background: #f6ffed; color: #389e0d; border: 1px solid #b7eb8f; }
.cb-candidate { background: #fff7e6; color: #d46b08; border: 1px solid #ffd591; }
.cb-learning { background: #eef6ff; color: #0b6fa6; border: 1px solid #bfe3fb; }
.qz-timeline { display: flex; align-items: flex-start; gap: 8px; margin: 8px 0; padding: 8px 10px; background: #f7fbff; border: 1px solid #e3eef8; border-radius: 10px; overflow-x: auto; }
.qz-timeline .tl-label { font-size: 12px; font-weight: 800; color: #5a87a8; white-space: nowrap; padding-top: 4px; }
.tl-track { display: flex; align-items: flex-start; gap: 10px; }
.tl-cell { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.tl-dot { width: 18px; height: 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 900; color: #fff; flex: none; }
.tl-correct { background: #52c41a; }
.tl-wrong { background: #ff4d4f; }
.tl-timeout { background: #bfbfbf; }
.tl-conquer { box-shadow: 0 0 0 3px #b7eb8f; transform: scale(1.15); }
.tl-date { font-size: 10px; color: #8aa0b4; white-space: nowrap; }

/* ===== P2 推同类题：错题卡上的同类题块 ===== */
.similar-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 8px 0; }
.similar-row .qz-timeline-similar { flex: 1; min-width: 180px; margin: 0; background: #fff7f0; border-color: #ffe0c7; }
.similar-row .qz-timeline-similar .tl-label { color: #c2691a; }
.tl-empty { font-size: 12px; color: #b08948; }
.similar-quiz-btn { flex: none; font-size: 15px; font-weight: 900; color: #fff; cursor: pointer; background: #fa7e1e; border: 0; border-radius: 999px; padding: 9px 18px; box-shadow: 0 3px 0 #d96510; white-space: nowrap; }
.similar-quiz-btn:hover { background: #ff8f33; }
.similar-quiz-btn:active { transform: translateY(2px); box-shadow: 0 1px 0 #d96510; }

/* ===== P2 推同类题：专属大页面 ===== */
.sq-shell { max-width: 760px; margin: 0 auto; padding: 14px 16px 40px; }
.sq-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.sq-head h1 { font-size: 20px; margin: 0; color: #0b6fa6; }
.sq-loading { text-align: center; padding: 60px 16px; color: #5a87a8; }
.sq-spin { width: 48px; height: 48px; margin: 0 auto 18px; border: 5px solid #e3eef8; border-top-color: #fa7e1e; border-radius: 50%; animation: sq-rot 0.9s linear infinite; }
@keyframes sq-rot { to { transform: rotate(360deg); } }
.sq-stage { font-size: 17px; font-weight: 800; color: #0b6fa6; }
.sq-wait-knowledge { max-width: 610px; margin: 24px auto 0; padding: 16px 18px; border: 1px solid #cfe5f2; border-radius: 16px; background: linear-gradient(145deg,#f7fcff,#fffdf5); box-shadow: 0 5px 18px rgba(11,111,166,.07); color: #31485a; text-align: left; }
.sq-wait-knowledge-title { color: #0b6fa6; font-size: 15px; font-weight: 900; }
.sq-wait-topic { display: inline-block; margin-top: 8px; padding: 3px 10px; border-radius: 999px; background: #e8f5ff; color: #276f98; font-size: 12px; font-weight: 850; }
.sq-wait-knowledge ul { margin: 10px 0 0; padding-left: 1.25rem; }
.sq-wait-knowledge li { margin: 7px 0; font-size: 13px; line-height: 1.55; }
@media(max-width:520px){.sq-loading{padding:36px 10px}.sq-wait-knowledge{margin-top:20px;padding:14px}.sq-wait-knowledge li{font-size:12.5px}}
.sq-error { text-align: center; padding: 40px 16px; font-size: 16px; color: #c0392b; }
.sq-card { background: #fff; border: 1px solid #e3ebf3; border-radius: 16px; padding: 20px 22px; box-shadow: 0 4px 18px rgba(11,111,166,.06); }
.sq-kp { font-size: 13px; font-weight: 800; color: #0b6fa6; background: #eaf6ff; display: inline-block; padding: 3px 12px; border-radius: 999px; margin-bottom: 12px; }
.sq-stem { font-size: 19px; line-height: 1.7; color: #1a2733; font-weight: 600; }
.sq-fig { margin: 16px 0; text-align: center; }
.sq-fig svg, .sq-fig .sq-img { max-width: min(100%, 640px); width: auto; height: auto; }
.sq-img { border: 1px solid #e3ebf3; border-radius: 10px; background: #fff; }
.sq-opts { display: flex; flex-direction: column; gap: 12px; margin-top: 18px; }
.sq-opt { text-align: left; font-size: 17px; line-height: 1.5; padding: 14px 18px; border: 2px solid #d8e6f2; border-radius: 12px; background: #fff; cursor: pointer; color: #223; transition: background .12s, border-color .12s; }
.sq-opt:hover:not(:disabled) { background: #f2f9ff; border-color: #1cb0f6; }
.sq-opt b { color: #0b6fa6; margin-right: 6px; }
.sq-opt:disabled { cursor: default; }
.sq-opt.sq-correct { background: #f6ffed; border-color: #52c41a; }
.sq-opt.sq-wrong { background: #fff1f0; border-color: #ff4d4f; }
.sq-result { margin-top: 18px; padding: 14px 18px; border-radius: 12px; font-size: 17px; font-weight: 800; }
.sq-result.sq-ok { background: #f6ffed; color: #389e0d; border: 1px solid #b7eb8f; }
.sq-result.sq-no { background: #fff7e6; color: #d46b08; border: 1px solid #ffd591; }
.sq-solution { margin-top: 12px; padding: 14px 18px; background: #f7fbff; border: 1px solid #e3eef8; border-radius: 12px; font-size: 16px; line-height: 1.7; color: #334; }
.sq-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 18px; }

.qz-timeline .tl-hint { font-size: 11px; color: #9bb0c2; white-space: nowrap; align-self: center; }

/* ===== 考点地图（P3）：A 热力色块 + B 思维导图树状 ===== */
.kp-map { margin: 12px 0; }
.kp-map-title { font-size: 14px; font-weight: 800; color: #0b6fa6; margin-bottom: 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
.kp-legend { font-size: 11px; font-weight: 600; color: #8aa0b4; display: inline-flex; align-items: center; gap: 5px; }
.kp-legend i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.kpA-mod { margin-bottom: 10px; }
.kpA-modname { font-size: 13px; font-weight: 800; color: #46627a; margin-bottom: 5px; }
.kpA-kps { display: flex; flex-wrap: wrap; gap: 8px; }
.kpA-kp { font-size: 13px; font-weight: 700; padding: 7px 14px; border-radius: 9px; border: 1px solid transparent; cursor: pointer; }
.kpA-ok { background: #e9f9e2; color: #2f8a16; border-color: #b7eb8f; }
.kpA-mid { background: #fff5d6; color: #ad7c00; border-color: #ffe08a; }
.kpA-weak { background: #ffe6e4; color: #cf1322; border-color: #ffb3ad; }
.kpA-kp:hover { filter: brightness(0.96); }
.kp-mapB { margin-top: 6px; border-top: 1px dashed #e3ebf3; padding-top: 8px; }
.kp-mapB > summary { cursor: pointer; font-size: 13px; font-weight: 800; color: #0b6fa6; padding: 6px 0; }
.kpB-tree { display: flex; align-items: center; gap: 14px; padding: 10px 4px; overflow-x: auto; }
.kpB-root { flex: none; font-size: 15px; font-weight: 900; color: #fff; background: #1cb0f6; padding: 10px 16px; border-radius: 10px; }
.kpB-branches { display: flex; flex-direction: column; gap: 8px; }
.kpB-branch { display: flex; align-items: center; gap: 8px; }
.kpB-mod { flex: none; font-size: 13px; font-weight: 800; color: #46627a; background: #eef4fa; border: 1px solid #d8e6f2; border-radius: 8px; padding: 5px 12px; min-width: 88px; text-align: center; }
.kpB-leaves { display: flex; flex-wrap: wrap; gap: 6px; }
.kpB-leaf { font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 7px; border: 1px solid transparent; }
.kp-filter-chip { display: inline-flex; align-items: center; gap: 8px; margin: 8px 0; font-size: 13px; font-weight: 700; color: #0b6fa6; background: #eaf6ff; border: 1px solid #bfe3fb; border-radius: 999px; padding: 5px 14px; }
.kp-filter-chip button { border: 0; background: #0b6fa6; color: #fff; border-radius: 999px; padding: 2px 9px; font-size: 12px; cursor: pointer; }

/* ── 家长版进步报告 ── */
.pr-nums { display: grid; grid-template-columns: repeat(auto-fit, minmax(90px, 1fr)); gap: 10px; }
.pr-num { background: #f3f8fd; border: 1px solid #dbe8f4; border-radius: 12px; padding: 10px 8px; text-align: center; }
.pr-num-label { display: block; font-size: 12px; color: #5a7088; font-weight: 700; }
.pr-num b { display: block; font-size: 26px; font-weight: 900; color: #1f6fd0; line-height: 1.2; }
.pr-num-cum { display: block; font-size: 11px; color: #8aa0b5; }
.pr-hero { margin-top: 12px; background: linear-gradient(90deg, #fff7e6, #fffdf7); border: 1px solid #ffd591; border-radius: 12px; padding: 12px 16px; font-size: 15px; font-weight: 700; color: #7a4f00; text-align: center; }
.pr-hero b { color: #c0392b; font-size: 20px; margin: 0 2px; }
.pr-subject h2 { font-size: 16px; margin: 0 0 8px; }
.pr-heat { background: #fafdfb; border: 1px solid #e3eee8; border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }
.pr-heat-cap { font-size: 12px; color: #6a8a78; margin-bottom: 8px; }
.pr-kps { display: flex; flex-wrap: wrap; gap: 7px; }
.pr-kp { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 700; border-radius: 8px; padding: 5px 11px; }
.pr-kp b { font-size: 12px; opacity: .85; }
.pr-kp-1 { background: #e9f7ef; color: #2e7d52; border: 1px solid #c8ecd6; }
.pr-kp-2 { background: #bfe8cd; color: #1f6b41; border: 1px solid #97d6ad; }
.pr-kp-3 { background: #5bbd83; color: #fff; border: 1px solid #45a76d; }
.pr-qs { display: flex; flex-direction: column; gap: 8px; }
.pr-q { border: 1px solid #e7edf3; border-radius: 10px; padding: 9px 12px; background: #fff; }
.pr-q-stem { font-size: 14px; color: #2b3a48; line-height: 1.5; margin-bottom: 4px; }
.pr-q .qz-timeline { margin: 3px 0; }
.pr-ext-meta { font-size: 12px; color: #8a9a6a; font-weight: 700; margin-top: 2px; }

/* 错题/已掌握 按周分组：每周一个醒目小标题，显示该周题数（老师对比"这周错题是否都已掌握"）*/
.week-group { margin: 4px 0 10px; }
.week-head { font-size: 14px; font-weight: 800; color: #0b6fa6; background: #eaf6ff; border: 1px solid #bfe3fb; border-radius: 10px; padding: 9px 14px; margin: 16px 0 8px; }
.week-head b { color: #c0392b; font-size: 16px; margin: 0 2px; }
/* 周筛选按钮排：全部/本周/上周/上上周/更早，点一下只看那一周。手机上可换行 */
.sort-tabs.week-tabs { flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.sort-tabs.week-tabs button { font-size: 13px; }

/* 错题卡右上角收藏按钮（挨着对错次数）*/
.rc-fav-btn { font-size: 12px; font-weight: 800; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.rc-fav-btn.is-on { color: #ad6800; background: #fff7e6; border-color: #ffd591; }

/* ── 全屏看图器（题图/解析教辅原页 双指缩放）── */
#img-viewer { position: fixed; inset: 0; z-index: 10000; background: rgba(8, 10, 14, 0.93); display: flex; align-items: center; justify-content: center; touch-action: none; overscroll-behavior: contain; }
#img-viewer .img-viewer-img { max-width: 96vw; max-height: 92vh; transform-origin: center center; will-change: transform; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-user-drag: none; }
#img-viewer .img-viewer-x { position: absolute; top: calc(10px + env(safe-area-inset-top)); right: 14px; width: 42px; height: 42px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.18); color: #fff; font-size: 26px; line-height: 1; cursor: pointer; z-index: 2; }
#img-viewer .img-viewer-hint { position: absolute; bottom: calc(16px + env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); color: rgba(255, 255, 255, 0.78); font-size: 12px; font-weight: 700; background: rgba(0, 0, 0, 0.38); padding: 5px 14px; border-radius: 999px; white-space: nowrap; }
body.img-viewer-open { overflow: hidden; }
/* 可点开放大的图给个手势暗示 */
.question-figure img, .ex-img, .sq-img, .ext-q-img, .er-photo { cursor: zoom-in; }

/* ── 推同类题 · 菁优题库通道（30秒解锁按钮 + 真题徽章 + 菁优排版容器）── */
.jy-row { margin-top: 18px; text-align: center; }
.jy-btn { font-size: 14px; font-weight: 800; padding: 10px 22px; border-radius: 999px; border: 1px solid #d8e6f2; background: #f4f8fc; color: #9ab0c4; cursor: not-allowed; }
.jy-btn.jy-ready { background: #fff7e6; border-color: #ffd591; color: #ad6800; cursor: pointer; }
.jy-btn.jy-ready:active { transform: scale(0.97); }
.jy-hint { font-size: 12px; color: #8aa0b5; margin-top: 6px; }
.jy-badge { display: inline-block; font-size: 12px; font-weight: 800; color: #ad6800; background: #fff7e6; border: 1px solid #ffd591; border-radius: 999px; padding: 2px 10px; margin-left: 8px; vertical-align: middle; }
.jy-html { overflow-x: auto; }
.jy-html img { max-width: 100%; height: auto; }
.jy-html .jy-sec { margin: 8px 0; }
.jy-html .quizPutTag { display: inline-block; min-width: 48px; border-bottom: 1px solid #555; height: 1em; }

/* ── 完成页 · 小优老师鼓励形象（按正确率给情绪反馈，克制不喧宾夺主）── */
.report-mascot { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 2px 0 14px; }
.report-mascot img { width: 96px; height: 96px; object-fit: contain; }
.report-mascot-say { font-size: 13px; font-weight: 800; color: #3f6fe6; background: #eef4ff; border: 1px solid #d8e6ff; padding: 7px 16px; border-radius: 999px; max-width: 80%; text-align: center; line-height: 1.4; }
/* 登录页：小优老师招呼（替换原 🔐 图标）*/
.login-mascot { width: 88px; height: 88px; object-fit: contain; display: block; margin: 0 auto 2px; }
/* 解析页「这轮全对」：小优鼓掌 */
.empty-state.review-allright { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.empty-state.review-allright img { width: 84px; height: 84px; object-fit: contain; }
.empty-state.review-allright p { margin: 0; font-weight: 800; color: #3f6fe6; }

/* ============================================================================
   商业级 UI 精修（2026-06-14）—— 仅追加覆盖样式，不改任何 DOM/内容。
   原则：学生数据 hero 做成品牌蓝质感卡；顶栏/底栏按钮统一 pill；无忧学标识做立体卡。
   ============================================================================ */

/* —— 焦点 hero：品牌蓝同色系渐变 + 光晕质感 + 圆角柔影；里面是现有的学生数据(hero-stats) —— */
.home-hero{
  background:linear-gradient(135deg,#2ec3f6 0%,#1f9bf0 52%,#2f7ae6 100%)!important;
  border-radius:22px!important; position:relative!important; overflow:hidden!important;
  box-shadow:0 16px 34px rgba(31,140,235,.30)!important; border:none!important;
  padding:22px 24px!important;
}
.home-hero::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:
    radial-gradient(460px 210px at 8% -25%, rgba(255,255,255,.32), transparent 60%),
    radial-gradient(340px 250px at 100% 128%, rgba(6,38,86,.26), transparent 60%); }
.home-hero > *{ position:relative; z-index:1; }
.home-hero .eyebrow{ color:rgba(255,255,255,.92)!important; }
.home-hero h1{ color:#fff!important; }
.home-hero .muted{ color:rgba(255,255,255,.92)!important; }
.home-hero .hero-stats > div{
  background:rgba(255,255,255,.15)!important; border:1px solid rgba(255,255,255,.24)!important;
  border-radius:14px!important; }
.home-hero .hero-stats > div strong{ color:#fff!important; }
.home-hero .hero-stats > div span{ color:rgba(255,255,255,.86)!important; }

/* —— 顶栏功能按钮：统一成一种"浅蓝 pill"，统一圆角/字重，不再一颗一个色 —— */
.tutor-header-btn, .feynman-header-btn, .models-header-btn, .nav-collapse-btn{
  background:#eaf5ff!important; color:#0d76b8!important;
  box-shadow:inset 0 0 0 1.5px #cfe9ff!important; border:none!important;
  border-radius:14px!important; font-weight:800!important; }
.tutor-header-btn:hover, .feynman-header-btn:hover, .models-header-btn:hover, .nav-collapse-btn:hover{
  background:#dcefff!important; filter:none!important; transform:translateY(-1px)!important; box-shadow:inset 0 0 0 1.5px #b6dcff!important; }

/* —— 无忧学标识：立体质感卡（白卡 + 蓝渐变徽标 + 3D 下沿） —— */
.brand-logo-button{
  background:#fff!important; border-radius:15px!important; padding:7px 13px!important; border:none!important;
  box-shadow:0 5px 16px rgba(31,140,235,.16), inset 0 0 0 1px #e7eef5 !important; }
.brand-logo-button:hover{ transform:translateY(-1px)!important; }
.brand-badge{
  background:linear-gradient(135deg,#29c0f7,#1487e0)!important; color:#fff!important;
  border-radius:10px!important; box-shadow:0 3px 0 #0f6fc0!important; font-weight:900!important; padding:3px 10px 4px!important; }
.brand-name{ color:#143a52!important; font-weight:900!important; }

/* —— 底栏按钮：统一幽灵 pill（下载/轻便/检查更新 同款） —— */
.download-btn, .lite-btn, .update-btn{
  border:none!important; box-shadow:inset 0 0 0 1.5px #e0e9f1!important; background:#fff!important;
  color:#5b6b7d!important; border-radius:14px!important; font-weight:800!important; padding:8px 16px!important; }
.lite-btn.is-on{ background:#eaf5ff!important; color:#0d76b8!important; box-shadow:inset 0 0 0 1.5px #bfe2ff!important; }

/* —— 功能簇卡片 + 学科卡片：统一圆角/描边/柔影，框契合一致 —— */
.action-cluster{ border-radius:18px!important; border:1px solid #e7eef5!important; box-shadow:0 2px 10px rgba(20,40,70,.06)!important; }
.action-cluster-buttons .ghost-button,
.action-cluster-buttons .primary-button,
.action-cluster-buttons .secondary-button{ border-radius:12px!important; }
.exam-grid > *{ border-radius:18px!important; }

/* —— 学科按钮(地理会考/生物会考/物理总复习…)圆角统一到卡片档，不再 999px 全圆、不再"怪怪的特别圆" —— */
.subject-switch{ border-radius:16px !important; }
.subject-tab{ border-radius:12px !important; }
.subject-tab.is-active{ border-radius:12px !important; }

/* ════════════════════════════════════════════════════════════════
   错题查看页（错题本）精修 2026-06-14 — 仅 UI，纯 CSS 覆盖，不动 DOM/内容
   目标：板块分层 + 重点突出 + 品牌色统一（去掉青绿渐变）
   ════════════════════════════════════════════════════════════════ */

/* ① 顶部「错题查看 / 标题 / N 道错题」标题区：让计数成为干净的品牌徽标 */
.review-shell .section-title .favorites-count{
  background: var(--again-soft) !important; color: var(--again-deep) !important;
  border: 1.5px solid #ffc9ca !important; border-radius: 999px !important;
  font-weight: 900 !important; padding: 4px 14px !important; box-shadow: 0 2px 0 #ffc9ca !important;
}

/* ② 攻克墙：从淡条升级为有质感的成就条（圆角+左侧奖杯徽章感+柔影） */
.review-shell .conquer-wall{
  gap: 8px 14px !important; margin: 12px 0 !important; padding: 12px 16px !important;
  border-radius: 16px !important;
  background: linear-gradient(135deg, #fff4d6, #fffaf0 60%) !important;
  border: 1.5px solid #ffe3a0 !important; box-shadow: 0 2px 0 #ffe3a0 !important;
  color: #a25e00 !important; font-size: 15px !important;
}
.review-shell .conquer-wall b{ color: #d4380d !important; font-size: 19px !important; }
.review-shell .conquer-wall .cw-tip{ color: #b08948 !important; }

/* ③ 考点地图：包成独立「板块」卡（浅底+描边+留白），与列表区形成层次 */
.review-shell .kp-map.kp-mapA{
  margin: 14px 0 !important; padding: 14px 16px !important;
  background: var(--surface-2) !important; border: 1.5px solid var(--line) !important;
  border-radius: 16px !important; box-shadow: 0 2px 0 var(--line-strong) !important;
}
.review-shell .kp-map.kp-mapA .kp-map-title{ color: var(--brand-ink) !important; font-size: 14.5px !important; }
.review-shell .kpA-kp{
  border-radius: 10px !important; box-shadow: 0 2px 0 rgba(0,0,0,.05) !important;
  transition: transform .06s ease, filter .12s ease !important;
}
.review-shell .kpA-kp:active{ transform: translateY(2px) !important; box-shadow: none !important; }
/* 思维导图（家长版）折叠条：做成轻量次级条，别和热力卡抢视线 */
.review-shell .kp-map.kp-mapB{
  margin: 8px 0 14px !important; border-top: none !important; padding: 0 !important;
}
.review-shell .kp-map.kp-mapB > summary{
  background: #f4f8fc !important; border: 1px solid var(--line) !important; border-radius: 12px !important;
  padding: 8px 14px !important; color: var(--muted) !important; font-size: 13px !important; list-style: none !important;
}

/* ④ 排序切换：分段控件（统一品牌蓝，去青绿渐变）——主切换 */
.review-shell .sort-tabs:not(.week-tabs){
  display: inline-flex !important; gap: 3px !important; margin: 14px 0 8px !important;
  padding: 4px !important; background: var(--surface-2) !important;
  border: 1.5px solid var(--line) !important; border-radius: 999px !important;
}
.review-shell .sort-tabs:not(.week-tabs) button{
  border: none !important; background: transparent !important; color: var(--brand-ink) !important;
  border-radius: 999px !important; font-weight: 800 !important; padding: 7px 16px !important;
  box-shadow: none !important;
}
.review-shell .sort-tabs:not(.week-tabs) button.is-active{
  background: var(--brand) !important; color: #fff !important;
  box-shadow: 0 2px 0 var(--brand-deep) !important;
}

/* ⑤ 周筛选：次级浅蓝胶囊（比主排序低一档，明确层级） */
.review-shell .sort-tabs.week-tabs{ gap: 6px !important; margin: 4px 0 10px !important; }
.review-shell .sort-tabs.week-tabs button{
  border: 1.5px solid var(--line-strong) !important; background: #fff !important;
  color: var(--muted) !important; border-radius: 999px !important; font-size: 12.5px !important;
  font-weight: 800 !important; padding: 5px 13px !important;
}
.review-shell .sort-tabs.week-tabs button.is-active{
  background: var(--brand-soft) !important; color: var(--brand-ink) !important;
  border-color: var(--brand-dim) !important; box-shadow: 0 2px 0 var(--brand-dim) !important;
}

/* ⑥ 错题卡：左侧红条更克制 + 顶部一行对齐留白，强化「这是错题」 */
.review-shell .review-card.is-wrong-review{
  border-left: 5px solid var(--again) !important;
}
.review-shell .review-card .review-card-top{
  display: flex !important; flex-wrap: wrap !important; align-items: center !important; gap: 6px 8px !important;
}
.review-shell .review-card .rc-top-right{
  margin-left: auto !important; display: inline-flex !important; align-items: center !important; gap: 6px 8px !important; flex-wrap: wrap !important;
}
.review-shell .review-card .answer-status{ align-self: center !important; }

/* ════════════════════════════════════════════════════════════════
   分区/分组练习选择页 精修 2026-06-14 — 纯 CSS 覆盖
   目标：计数胶囊统一进品牌蓝家族（去青绿）；分区 hero 去紫调、并入蓝白体系
   ════════════════════════════════════════════════════════════════ */

/* ① 中性计数胶囊（X 道题 / X 题 / X 条 / 基础）统一品牌浅蓝；gold/rose 语义色保留 */
.pill{
  background: var(--brand-soft) !important; color: var(--brand-ink) !important;
  border: 1.5px solid var(--brand-dim) !important; font-size: 0.78rem !important; padding: 3px 11px !important;
}
.pill.gold{ background: var(--gold) !important; color: #6b4e00 !important; border: 1.5px solid var(--gold-deep) !important; }
.pill.rose{ background: var(--again-soft) !important; color: var(--again-deep) !important; border: 1.5px solid #ffc1c2 !important; }

/* ② 分区 hero（segment-hero）：去掉紫调渐变，改为蓝白体系的柔质感面板 */
.segment-hero{
  padding: 18px 20px !important;
  background: linear-gradient(135deg, #f3faff, #eaf4fe 70%) !important;
  border: 1.5px solid var(--brand-dim) !important; border-radius: var(--radius) !important;
  box-shadow: 0 2px 0 #cdebff !important;
}
.segment-hero .eyebrow{ color: var(--brand-ink) !important; }

/* ③ 分组卡里的「还没记录」占位条：与卡片留白更协调 */
.segment-card .spark-empty{
  border: 1.5px dashed var(--brand-dim) !important; background: var(--surface-2) !important;
  color: var(--muted) !important; border-radius: 12px !important;
}

/* ════════════════════════════════════════════════════════════════
   答题页（quiz）精修 2026-06-14 — 纯 CSS 覆盖
   目标：顶栏去暖米色、并入蓝白体系；题面卡为视觉重点
   ════════════════════════════════════════════════════════════════ */

/* ① 答题顶栏：从暖米色条改为蓝白柔面板，作题面的次级信息条 */
.quiz-shell .quiz-topbar{
  padding: 14px 18px !important;
  background: linear-gradient(135deg, #f3faff, #eaf4fe 70%) !important;
  border: 1.5px solid var(--brand-dim) !important; border-radius: var(--radius) !important;
  box-shadow: 0 2px 0 #cdebff !important;
}
.quiz-shell .quiz-topbar .eyebrow{ color: var(--brand-ink) !important; }
.quiz-shell .quiz-topbar h1{ color: var(--text) !important; }

/* ② 题面卡：作为该屏视觉重点，描边/圆角已统一，这里加一点呼吸留白 */
.quiz-shell .question-panel{ padding: 20px 22px !important; }
.quiz-shell .question-meta{ display: flex; flex-wrap: wrap; align-items: center; gap: 8px !important; }
.quiz-shell .question-meta .favorite-toggle{ margin-left: auto !important; }

/* ════════════════════════════════════════════════════════════════
   全局配色收敛 + 弹窗外壳 + 家长报告 + 已掌握/收藏 精修 2026-06-15
   依据「剩余屏幕审计 + 风险复核」；纯 CSS，不动 DOM/内容/功能。
   ════════════════════════════════════════════════════════════════ */

/* ① 品牌名「错题清系统」：去 青→蓝→紫 渐变字，统一品牌蓝渐变（徽章已是蓝） */
.brand-name{ background:linear-gradient(110deg,#29c0f7,#1487e0) !important; -webkit-background-clip:text !important; background-clip:text !important; -webkit-text-fill-color:transparent !important; color:#1487e0 !important; }
.brand-credit .bc-x{ color:var(--brand) !important; }

/* ② 顶部导航功能入口按钮：全统一品牌蓝实色 3D（用户定：一个主色，靠图标+文字区分功能） */
.feynman-header-btn, .models-header-btn, .qbank-header-btn{
  background:var(--brand) !important; color:#fff !important; border:none !important; box-shadow:0 3px 0 var(--brand-deep) !important; }
.feynman-header-btn:hover, .models-header-btn:hover, .qbank-header-btn:hover{
  background:var(--brand) !important; filter:brightness(1.04) !important; transform:none !important; box-shadow:0 3px 0 var(--brand-deep) !important; }
.feynman-header-btn:active, .models-header-btn:active, .qbank-header-btn:active{
  transform:translateY(3px) !important; box-shadow:0 0 0 var(--brand-deep) !important; }

/* ③ 督学登录 chip：去青绿/绿，统一品牌蓝 */
.dushe-chip{ background:var(--brand-soft) !important; color:var(--brand-ink) !important; border:1.5px solid var(--brand-dim) !important; }
.dushe-chip:hover{ background:#cdeeff !important; }
.dushe-chip.is-on{ background:linear-gradient(135deg,var(--brand),var(--brand-deep)) !important; color:#fff !important; border:0 !important; box-shadow:0 4px 0 var(--brand-deep) !important; }
.dushe-card input:focus{ border-color:var(--brand) !important; }

/* ④ 答疑/费曼 弹窗外壳：口号去奶油色；顶栏按钮微立体；简明讲解「已开」态 */
.tutor-modal-slogan{ color:var(--brand-soft) !important; }
.tutor-modal-bar .tutor-modal-btn{ border-radius:10px !important; box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.35) !important; }
.tutor-modal-bar .tutor-modal-btn.is-on{ background:#fff !important; color:var(--brand-ink) !important; }

/* ⑤ 已掌握卡左条：统一设计系统绿（与错题红左条对称） */
.review-shell .review-card.is-mastered-review{ border-left:5px solid var(--good) !important; }

/* ⑥ 计数徽标按页面语义上色：默认金（收藏/计数）、错题页红、已掌握页绿 */
.review-shell .section-title .favorites-count{
  background:var(--gold) !important; color:#6b4e00 !important; border:1.5px solid var(--gold-deep) !important; box-shadow:0 2px 0 var(--gold-deep) !important; }
.review-shell:has(.is-wrong-review) .section-title .favorites-count{
  background:var(--again-soft) !important; color:var(--again-deep) !important; border-color:#ffc9ca !important; box-shadow:0 2px 0 #ffc9ca !important; }
.review-shell:has(.is-mastered-review) .section-title .favorites-count{
  background:var(--good-soft) !important; color:var(--good-deep) !important; border-color:#bfe8a0 !important; box-shadow:0 2px 0 #bfe8a0 !important; }

/* ⑦ 首页背景：紫光晕 → 品牌蓝（收敛浅蓝白，去淡紫装饰） */
body{ background:
  radial-gradient(1200px 600px at 8% -10%, rgba(28,176,246,.14), transparent 60%),
  radial-gradient(900px 520px at 110% 4%, rgba(28,176,246,.08), transparent 55%),
  var(--bg) !important; }

/* ⑧ 家长版报告：去暖奶油 hero / 杂蓝数字，收敛品牌蓝；绿色「已学会」热力保留为语义 */
.pr-num{ background:var(--surface-2) !important; border:1.5px solid var(--line) !important; }
.pr-num b{ color:var(--brand-ink) !important; }
.pr-hero{ background:var(--brand-soft) !important; border:1.5px solid var(--brand-dim) !important; color:var(--brand-ink) !important; }
.pr-hero b{ color:var(--gold-deep) !important; }
.pr-subject h2{ color:var(--brand-ink) !important; border-bottom:1.5px solid var(--brand-soft) !important; padding-bottom:6px !important; }

/* ════════════════════════════════════════════════════════════════
   收尾：全局激活态去青绿 + 学习档案页 收敛品牌蓝 2026-06-15
   ════════════════════════════════════════════════════════════════ */

/* ① 全局激活态：青绿渐变 → 品牌蓝（review-shell 内更具体规则仍优先，不冲突） */
.sort-tabs button.is-active{ background:var(--brand) !important; border-color:var(--brand) !important; }
.stage-opt.is-active{ background:linear-gradient(135deg,var(--brand),var(--brand-deep)) !important; box-shadow:0 4px 0 var(--brand-deep) !important; }
.diagnosis-options button.is-active{ border-color:var(--brand-dim) !important; background:linear-gradient(180deg,var(--brand-soft),#fff) !important; box-shadow:0 2px 0 var(--brand-dim) !important; }
.diagnosis-options button.is-active b{ background:var(--brand) !important; color:#fff !important; }

/* ② 学段徽标：初中=品牌蓝、高中=金（去青绿/暖色，两段可区分） */
.stage-tag.stage-junior{ color:var(--brand-ink) !important; background:var(--brand-soft) !important; }
.stage-tag.stage-senior{ color:var(--gold-deep) !important; background:var(--gold-soft,#fff1c9) !important; }

/* ③ 学习档案页：去玻璃拟态杂蓝，KPI 卡白底扁平 + 品牌蓝数字 */
.archive-shell .section-block{ background:var(--surface) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
.archive-kpi > div{ background:var(--surface) !important; border:1.5px solid var(--line) !important; box-shadow:0 2px 0 var(--line-strong) !important; }
.archive-kpi strong{ color:var(--brand-ink) !important; }

/* ④ 学习时间线左条：答疑=品牌蓝、同类题=金（去紫/青绿，仍可区分类型） */
.tl-item.tl-tutor{ border-left-color:var(--brand) !important; }
.tl-item.tl-quiz{ border-left-color:var(--gold) !important; }

/* ════════════════════════════════════════════════════════════════
   导出错题弹窗（学生档案）2026-06-15 — 老师多选科目导出 Word/PDF
   ════════════════════════════════════════════════════════════════ */
.ew-overlay{ position:fixed; inset:0; z-index:10002; background:rgba(15,30,45,.5); display:flex; align-items:center; justify-content:center; padding:5vh 5vw; }
.ew-card{ background:var(--surface); border-radius:var(--radius); width:min(460px,96vw); max-height:88vh; overflow:auto; box-shadow:0 20px 50px rgba(20,30,42,.3); padding:20px 22px; }
.ew-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:14px; }
.ew-head h2{ margin:0; font-size:20px; color:var(--brand-ink); }
.ew-sub{ margin:5px 0 0; font-size:13px; color:var(--muted); }
.ew-close{ border:none; background:var(--surface-2); color:var(--muted); width:30px; height:30px; border-radius:50%; cursor:pointer; font-size:15px; flex:none; }
.ew-close:hover{ background:var(--line-strong); }
.ew-subjects{ display:flex; flex-direction:column; gap:8px; }
.ew-item{ display:flex; align-items:center; gap:11px; padding:11px 13px; border:1.5px solid var(--line); border-radius:14px; cursor:pointer; background:var(--surface); transition:border-color .12s,background .12s; }
.ew-item:not(.is-disabled):hover{ border-color:var(--brand-dim); background:var(--brand-soft); }
.ew-item input{ width:18px; height:18px; accent-color:var(--brand); flex:none; }
.ew-name{ font-weight:800; color:var(--text); flex:1; }
.ew-count{ font-size:12.5px; font-weight:800; color:var(--brand-ink); background:var(--brand-soft); border:1px solid var(--brand-dim); border-radius:999px; padding:2px 10px; white-space:nowrap; }
.ew-item.is-disabled{ opacity:.55; cursor:not-allowed; background:var(--surface-2); }
.ew-item.is-disabled .ew-count{ color:var(--muted); background:var(--surface-2); border-color:var(--line); }
.ew-hint{ font-size:12px; color:var(--muted); margin:13px 2px; line-height:1.7; }
.ew-lite-box{ display:flex; align-items:center; gap:12px; margin:14px 0 4px; padding:12px; border:1.5px solid var(--brand-dim); border-radius:14px; background:var(--brand-soft); }
.ew-lite-box>div{ flex:1; min-width:0; }
.ew-lite-box strong{ display:block; color:var(--brand-ink); font-size:14px; }
.ew-lite-box small{ display:block; margin-top:2px; color:var(--muted); font-size:11.5px; line-height:1.5; }
.ew-lite-box button{ flex:none; white-space:nowrap; }
.ew-foot{ display:flex; align-items:center; gap:10px; }
.ew-foot .ew-mini{ padding:8px 12px !important; font-size:13px; }
@media(max-width:560px){
  .ew-card{ padding:17px 16px; }
  .ew-lite-box{ align-items:stretch; flex-direction:column; }
  .ew-lite-box button{ width:100%; }
  .ew-foot{ align-items:stretch; flex-wrap:wrap; }
  .ew-foot>span{ display:none; }
  .ew-foot button{ flex:1 1 140px; }
}

/* ── 难度系数：题面末尾灰色小字，无感显示（越大越易，与题库中台同尺）── */
.qcoef{ font-size:11px !important; font-weight:600 !important; color:#aab4c0 !important; margin-left:8px; vertical-align:middle; letter-spacing:.3px; white-space:nowrap; -webkit-text-fill-color:#aab4c0 !important; }
.qcoef::before{ content:""; }

/* ===== 学生信息录入弹窗（老师端，学习档案里）===== */
.intake-overlay{position:fixed;inset:0;background:rgba(20,30,48,.5);display:flex;align-items:flex-start;justify-content:center;z-index:9999;padding:24px 12px;overflow:auto}
.intake-modal{background:#fff;border-radius:16px;width:min(680px,96vw);box-shadow:0 12px 40px rgba(0,0,0,.25);overflow:hidden}
.intake-bar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#1cb0f6;color:#fff}
.intake-title{font-weight:800;font-size:16px}
.intake-close{background:rgba(255,255,255,.2);border:none;color:#fff;width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:15px}
.intake-body{padding:16px 18px}
.intake-tip{font-size:13px;color:#55606e;line-height:1.6;margin:0 0 12px;background:#f0f8ff;border:1px solid #d6ecfb;border-radius:10px;padding:10px 12px}
.intake-text{width:100%;min-height:88px;border:1px solid #d8dee6;border-radius:10px;padding:10px;font-size:14px;box-sizing:border-box;resize:vertical}
.intake-file{display:block;margin:10px 0;font-size:13.5px;color:#2b3a4d}
.intake-parse{margin-top:4px}
.intake-result{margin-top:14px}
.ik-ask{background:#fff8f0;border:1px solid #ffe0b8;color:#b25b00;border-radius:10px;padding:10px 12px;font-size:13.5px;margin-bottom:12px;font-weight:600}
.ik-field{font-size:14px;margin-bottom:14px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ik-name{flex:1;min-width:180px;border:1px solid #d8dee6;border-radius:8px;padding:8px 10px;font-size:14px}
.ik-name.need{border-color:#f59f00;background:#fffaf2}
.ik-sec{margin:12px 0;border:1px solid #eef1f5;border-radius:10px;padding:10px 12px}
.ik-sec h4{margin:0 0 8px;font-size:13.5px;color:#1971c2}
.ik-ev{font-size:13px;padding:4px 0;border-bottom:1px dashed #eef1f5;color:#2b3a4d}
.ik-ev .ik-d{color:#7a8699;margin-right:6px}
.ik-rw{margin-left:6px;font-weight:700}.ik-rw.no{color:#e03131}.ik-rw.ok{color:#37b24d}
.ik-pf{font-size:13px;padding:4px 0;color:#2b3a4d}
.ik-pf b{color:#55606e}
.ik-ok{background:#ebfbee;border:1px solid #c3e6cb;color:#2b8a3e;border-radius:10px;padding:10px 12px;font-size:14px;font-weight:600;margin-top:10px}
#ikCommit{margin-top:6px}

/* ===== 物理微课课程板块 ===== */
.course-entry-block{margin-top:6px}
.course-entry-card{display:flex;align-items:center;justify-content:space-between;gap:14px;background:linear-gradient(120deg,#eaf6ff,#f4fbff);border:1px solid #cfe7fb;border-radius:16px;padding:16px 18px;flex-wrap:wrap}
.course-entry-card .ce-left{display:flex;align-items:center;gap:14px}
.course-entry-card .ce-emoji{font-size:34px}
.course-entry-card h2{margin:0 0 2px;font-size:17px;color:#0b6fb8}
.course-overlay{position:fixed;inset:0;background:rgba(15,25,40,.55);display:flex;align-items:center;justify-content:center;z-index:9999;padding:18px}
.course-modal{background:#fff;border-radius:16px;width:min(1040px,98vw);height:min(88vh,860px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 14px 48px rgba(0,0,0,.3)}
.course-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;background:#1cb0f6;color:#fff}
.course-title{font-weight:800;font-size:16px}
.course-close{background:rgba(255,255,255,.2);border:none;color:#fff;width:30px;height:30px;border-radius:8px;cursor:pointer}
.course-body{flex:1;display:flex;min-height:0}
.course-loading{padding:40px;color:#7a8699;margin:auto}
.course-player{flex:1.45;background:#0e1726;display:flex;flex-direction:column;min-width:0}
.cp-placeholder{margin:auto;color:#8aa0b8;font-size:15px;padding:20px;text-align:center}
.cp-title{color:#fff;font-size:15px;font-weight:700;padding:12px 16px 6px}
.cp-video{width:100%;flex:1;background:#000;object-fit:contain;min-height:0;max-height:calc(88vh - 170px)}
.cp-tip{color:#9fb3c8;font-size:12.5px;padding:8px 16px 12px}
.course-nav{flex:1;min-width:280px;max-width:380px;border-left:1px solid #e6edf4;display:flex;flex-direction:column;min-height:0}
.course-tabs{display:flex;gap:6px;padding:10px;border-bottom:1px solid #eef1f5;flex-wrap:wrap}
.course-tab{border:1px solid #d6e3ee;background:#f6fafe;border-radius:20px;padding:5px 12px;font-size:13px;cursor:pointer;color:#2b3a4d}
.course-tab.on{background:#1cb0f6;color:#fff;border-color:#1cb0f6}
.course-chs{flex:1;overflow:auto;padding:8px}
.course-ch{border-bottom:1px solid #eef1f5}
.course-ch>summary{cursor:pointer;padding:10px 8px;font-weight:700;font-size:14px;display:flex;justify-content:space-between;align-items:center;color:#1a2433;list-style:none}
.course-ch>summary::-webkit-details-marker{display:none}
.course-ch .ch-n{font-size:12px;color:#8794a6;font-weight:400}
.course-vids{padding:2px 0 8px}
.course-vid{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;border-radius:8px;padding:8px 10px;cursor:pointer;font-size:13px;color:#2b3a4d;flex-wrap:wrap}
.course-vid:hover{background:#f0f8ff}
.course-vid .cv-play{color:#1cb0f6;font-size:11px}
.course-vid .cv-t{flex:1;min-width:140px}
.course-vid .cv-sub{width:100%;padding-left:19px;color:#9aa7b5;font-size:11.5px}
@media(max-width:760px){.course-body{flex-direction:column}.course-nav{max-width:none;border-left:none;border-top:1px solid #e6edf4}.cp-video{max-height:36vh}.course-video-controls{padding:8px 10px}.course-fullscreen{margin-left:auto}}

/* 课程配套练习按钮 */
.cp-practice{margin:10px 16px 4px;align-self:flex-start}
.cp-practice.pulse{animation:cpPulse 1.1s ease-in-out 3}
@keyframes cpPulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(28,176,246,.5)}50%{transform:scale(1.05);box-shadow:0 0 0 10px rgba(28,176,246,0)}}

/* 课程倍速按钮 */
.cp-speed{display:flex;align-items:center;gap:6px;padding:8px 16px 0;color:#9fb3c8;font-size:12.5px}
.cp-spd{border:1px solid #3a4a5e;background:#1a2738;color:#cfe0f0;border-radius:14px;padding:3px 11px;font-size:12.5px;cursor:pointer}
.cp-spd.on{background:#1cb0f6;color:#fff;border-color:#1cb0f6;font-weight:700}

/* 所有课程统一的显式倍速/全屏控制与真实观看覆盖率 */
.course-video-wrap{background:#000;display:flex;flex-direction:column;min-height:0;overflow:hidden;border-radius:14px}
.cp-video-wrap{flex:1;border-radius:0}
.course-video-controls{display:flex;align-items:center;gap:6px;padding:9px 12px;background:#101b2b;color:#b9cbe0;font-size:12.5px;flex-wrap:wrap}
.course-video-controls.cp-speed{padding:9px 12px}
.course-rate,.course-fullscreen{border:1px solid #41546a;background:#1b2a3d;color:#d9e8f6;border-radius:16px;padding:5px 11px;font-size:12.5px;font-weight:750;cursor:pointer;min-height:30px}
.course-rate.on{background:#1cb0f6;color:#fff;border-color:#1cb0f6}
.course-fullscreen{margin-left:auto;background:#27435f;color:#fff}
.course-video-wrap:fullscreen,.course-video-wrap:-webkit-full-screen{width:100vw;height:100vh;border-radius:0;background:#000}
.course-video-wrap:fullscreen video,.course-video-wrap:-webkit-full-screen video{width:100%;height:calc(100vh - 52px);max-height:none;object-fit:contain}
body.course-app-fullscreen-open{overflow:hidden}
.course-video-wrap.is-app-fullscreen{position:fixed!important;inset:0!important;z-index:12000!important;width:100vw!important;height:100vh!important;height:100dvh!important;max-width:none!important;margin:0!important;border-radius:0!important;background:#000!important;box-shadow:none!important}
.course-video-wrap.is-app-fullscreen video{flex:1 1 auto!important;width:100%!important;height:auto!important;max-height:calc(100vh - 52px)!important;max-height:calc(100dvh - 52px)!important;object-fit:contain!important}
.course-video-wrap.is-app-fullscreen .course-video-controls{position:relative;z-index:1;flex:0 0 auto}
.course-watch-meter{display:grid;grid-template-columns:minmax(100px,1fr) auto;align-items:center;gap:10px;margin:10px 0;color:#617487;font-size:11.5px}
.course-watch-meter>span{height:8px;border-radius:99px;background:#dfe9f1;overflow:hidden}
.course-watch-meter>span>i{display:block;width:var(--watch-pct,0%);height:100%;border-radius:inherit;background:linear-gradient(90deg,#1cb0f6,#58cc02);transition:width .25s ease}
.course-watch-meter small{white-space:nowrap}.course-watch-meter b{color:#168c42}
.course-watch-meter.dark{margin:7px 16px 0;color:#9fb3c8}.course-watch-meter.dark>span{background:#304155}.course-watch-meter.dark b{color:#78dc43}

/* ===== 学情速览/详细学情（学习档案·老师端，数据=学情库） ===== */
.xq-block h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.xq-sub{font-size:12px;font-weight:400}
.xq-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px;margin:10px 0}
.xq-kpis>div{background:#f1f7fd;border-radius:10px;padding:8px 6px;text-align:center}
.xq-kpis strong{display:block;font-size:20px;color:#0b6fa6}
.xq-kpis span{font-size:11px;color:#6b7a8d}
.xq-subjwrap{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.xq-subj{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #e3ebf3;border-radius:8px;padding:5px 9px;font-size:12.5px}
.xq-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px}
.xq-card{background:#fff;border:1px solid #e3ebf3;border-radius:12px;padding:10px 12px;margin-top:10px}
.xq-card h3{margin:0 0 8px;font-size:14px;display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.xq-card h3 .muted{font-size:11px;font-weight:400}
.xq-row{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;border-bottom:1px dashed #eef2f7;padding:6px 2px;cursor:pointer;text-align:left;font-size:12.5px;color:inherit;font-family:inherit}
.xq-row:hover{background:#f6faff}
.xq-kp{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xq-bar{flex:0 0 64px;height:8px;border-radius:99px;background:#eef2f7;overflow:hidden}
.xq-bar i{display:block;height:100%;border-radius:99px}
.xq-bar i.bad{background:#e74c3c}.xq-bar i.warn{background:#f39c12}.xq-bar i.ok{background:#2ecc71}
.xq-num{flex:0 0 auto;color:#6b7a8d;font-size:11.5px;white-space:nowrap}
.xq-none{padding:6px 2px}
.xq-prog-row{display:flex;gap:10px;font-size:13px;padding:4px 0;border-bottom:1px dashed #eef2f7}
.xq-prog-form{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.xq-prog-form select,.xq-prog-form input{border:1px solid #d6e0ea;border-radius:8px;padding:7px;font-size:16px}
.xq-prog-form input{flex:1;min-width:180px}
.xq-detail-toggle{margin-top:10px}
.xq-type{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:5px 2px;border-bottom:1px dashed #eef2f7}
.xq-hist-row{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:4px 0}
.xq-hist-date{color:#6b7a8d;flex:0 0 84px}
.xq-dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.xq-dot.good{background:#2ecc71}.xq-dot.bad{background:#e74c3c}
.xq-note{font-size:11.5px;margin-top:10px}

/* ===== 课程目录：章/学科筛选按钮 + 练习返回定位高亮 ===== */
.course-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.course-chip{border:1px solid #d6e0ea;background:#fff;border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:700;color:#4a5b6e;cursor:pointer}
.course-chip.on{background:#1cb0f6;border-color:#1cb0f6;color:#fff}
.course-vid.cv-focus{outline:2px solid #1cb0f6;border-radius:8px}

/* ===== 看课闯关（随时练移植试点） ===== */
/* 沉浸式全屏容器 + 顶栏 */
.ssl-shell{position:fixed;inset:0;z-index:900;background:linear-gradient(180deg,#e8f5fe 0%,#f3f9fd 26%,#fbfdff 100%);display:flex;flex-direction:column;overflow:hidden}
.ssl-top{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top,0));background:linear-gradient(135deg,#25b6fb,#0b6fa6);color:#fff;box-shadow:0 3px 14px rgba(11,111,166,.3);z-index:10}
.ssl-top-btn{width:38px;height:38px;border-radius:50%;border:none;background:rgba(255,255,255,.22);color:#fff;font-size:17px;font-weight:900;cursor:pointer;flex:0 0 auto;transition:background .15s,transform .1s}
.ssl-top-btn:active{background:rgba(255,255,255,.4);transform:scale(.94)}
.ssl-top-mid{flex:1;min-width:0}
.ssl-top-mid b{display:block;font-size:16.5px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.3px}
.ssl-top-mid span{font-size:11.5px;opacity:.88}
.ssl-top-star{background:rgba(255,255,255,.2);border-radius:20px;padding:5px 13px;font-weight:900;font-size:14px;flex:0 0 auto}
.ssl-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;padding:18px 16px 70px;max-width:720px;margin:0 auto;width:100%;box-sizing:border-box}
.ssl-intro{text-align:center;color:#6b7a8d;font-size:13.5px;margin:2px 0 18px;font-weight:600}
.ssl-loading{text-align:center;padding:60px 20px;color:#6b7a8d;font-weight:600}
.ssl-spinner{width:34px;height:34px;border:4px solid #d6e6f5;border-top-color:#1cb0f6;border-radius:50%;margin:0 auto 14px;animation:sslspin .8s linear infinite}
@keyframes sslspin{to{transform:rotate(360deg)}}
/* 通用大按钮（多邻国糖果风） */
.ssl-cta{background:#58cc02;color:#fff;border:none;border-radius:15px;padding:15px 24px;font-size:16px;font-weight:900;cursor:pointer;box-shadow:0 4px 0 #46a302;transition:transform .1s,box-shadow .1s;letter-spacing:.5px}
.ssl-cta:active{transform:translateY(4px);box-shadow:0 0 0 #46a302}
.ssl-cta.ghost{background:#fff;color:#1487c9;box-shadow:0 4px 0 #cfe3f2}
.ssl-cta.ghost:active{box-shadow:0 0 0 #cfe3f2}
.ssl-actrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:16px;justify-content:center}
/* 章节列表 */
.ssl-chapters{display:grid;gap:12px}
.ssl-chapter{display:flex;align-items:center;gap:14px;background:#fff;border:none;border-radius:18px;padding:16px;cursor:pointer;text-align:left;box-shadow:0 3px 0 #e3ebf3,0 5px 14px rgba(20,90,140,.06);transition:transform .1s,box-shadow .1s}
.ssl-chapter:not(.locked):active{transform:translateY(3px);box-shadow:0 0 0 #e3ebf3,0 3px 8px rgba(20,90,140,.06)}
.ssl-chapter.locked{opacity:.55;cursor:default;box-shadow:0 3px 0 #e3ebf3}
.ssl-ch-ring{--pct:0;width:52px;height:52px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;background:conic-gradient(#58cc02 calc(var(--pct)*1%),#e5ecf2 0)}
.ssl-ch-ring i{width:42px;height:42px;border-radius:50%;background:#fff;display:grid;place-items:center;font-size:12px;font-weight:900;color:#0b6fa6;font-style:normal}
.ssl-ch-body{flex:1;min-width:0}
.ssl-ch-name{display:block;font-weight:900;font-size:16.5px;color:#1f2d3d}
.ssl-ch-meta{display:block;color:#7a8b9c;font-size:12.5px;margin-top:3px}
.ssl-ch-go{color:#1cb0f6;font-weight:900;font-size:20px;flex:0 0 auto}
/* 闯关路径 */
.ssl-path{position:relative;margin-top:4px}
.ssl-dot{position:absolute;width:8px;height:8px;border-radius:50%;background:#d3deea;transform:translate(-50%,-50%);z-index:1}
.ssl-dot.on{background:#ffc528;box-shadow:0 0 6px rgba(255,197,40,.6)}
.ssl-node-wrap{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:13px;z-index:2}
.ssl-node-wrap.flip{flex-direction:row-reverse}
.ssl-node{width:76px;height:76px;border-radius:50%;border:none;position:relative;cursor:pointer;flex:0 0 auto;transition:transform .1s,box-shadow .1s;display:grid;place-items:center}
.ssl-node-face{position:relative;z-index:2;font-size:29px;font-weight:900;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.22);font-style:normal}
.ssl-node.lesson{background:radial-gradient(circle at 50% 34%,#69cbfc,#1cb0f6);box-shadow:0 7px 0 #0e8fd0,0 10px 14px rgba(14,143,208,.32),inset 0 3px 7px rgba(255,255,255,.5)}
.ssl-node.practice{background:radial-gradient(circle at 50% 34%,#ffdd6e,#ffc528);box-shadow:0 7px 0 #d99e00,0 10px 14px rgba(217,158,0,.3),inset 0 3px 7px rgba(255,255,255,.6)}
.ssl-node.practice .ssl-node-face{color:#7a5300;text-shadow:0 1px 1px rgba(255,255,255,.45)}
.ssl-node.done{background:radial-gradient(circle at 50% 34%,#83e04f,#58cc02);box-shadow:0 7px 0 #46a302,0 10px 14px rgba(70,163,2,.3),inset 0 3px 7px rgba(255,255,255,.45)}
.ssl-node.done .ssl-node-face{color:#fff}
.ssl-node.locked{background:radial-gradient(circle at 50% 34%,#eef3f8,#dae3ec);box-shadow:0 6px 0 #c3d0dc,inset 0 2px 5px rgba(255,255,255,.6);cursor:default}
.ssl-node.locked .ssl-node-face{color:#a6b4c2;font-size:24px;text-shadow:none}
/* 没做的节点：灰显但可点(不锁关，学生任选；区别于旧 locked=禁点) */
.ssl-node.todo{background:radial-gradient(circle at 50% 34%,#eef3f8,#dae3ec);box-shadow:0 6px 0 #c3d0dc,0 8px 12px rgba(120,140,160,.18),inset 0 2px 5px rgba(255,255,255,.6);cursor:pointer}
.ssl-node.todo .ssl-node-face{color:#8b9aa9;text-shadow:none}
.ssl-node:not(.locked):not(.developing):active{transform:translateY(5px);box-shadow:0 2px 0 currentColor}
.ssl-node.developing{background:radial-gradient(circle at 50% 34%,#f2f0f8,#ded9eb);box-shadow:0 6px 0 #c8c0d9,0 8px 12px rgba(95,78,125,.14),inset 0 2px 5px rgba(255,255,255,.7);cursor:default}
.ssl-node.developing .ssl-node-face{color:#8a7aa8;text-shadow:none;font-size:28px;line-height:1}
.ssl-node-label.developing{border-color:#ded9eb;background:#fbfaff;color:#665c78}
.ssl-node-label.developing small{color:#8a7aa8;font-weight:800}
.ssl-ring{position:absolute;inset:-5px;border-radius:50%;border:3px solid rgba(28,176,246,.55);z-index:1;animation:sslping 1.5s ease-out infinite}
.ssl-node.practice .ssl-ring{border-color:rgba(255,197,40,.65)}
@keyframes sslping{0%{transform:scale(1);opacity:.75}100%{transform:scale(1.45);opacity:0}}
.ssl-bubble{position:absolute;top:-32px;left:50%;transform:translateX(-50%);background:#fff;color:#1487c9;font-weight:900;font-size:12px;padding:4px 12px;border-radius:13px;box-shadow:0 3px 9px rgba(0,0,0,.16);white-space:nowrap;z-index:6;animation:sslbob 1.3s ease-in-out infinite}
.ssl-bubble::after{content:"";position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#fff}
@keyframes sslbob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-4px)}}
.ssl-node-label{background:rgba(255,255,255,.96);border:1.5px solid #e6eef5;border-radius:13px;padding:7px 12px;font-size:12.5px;font-weight:800;line-height:1.35;width:148px;flex:0 0 auto;box-sizing:border-box;color:#3a4b5c;box-shadow:0 2px 7px rgba(20,90,140,.06)}
.ssl-node-label small{color:#8697a8;font-weight:600}
.ssl-node-stars{display:block;color:#ffc528;letter-spacing:1px;margin-top:1px}
.ssl-node-stars i{color:#dbe4ec;font-style:normal}
/* 北师大高中数学试点：章内学习组紧凑卡片（其他课程仍走原地图） */
.ssl-study-wrap{max-width:920px;margin:0 auto;padding-bottom:28px}
.ssl-study-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:2px 0 14px;padding:14px 17px;border:1px solid #cfe8f7;border-radius:16px;background:linear-gradient(135deg,#f5fbff,#edf8ff);color:#376177}
.ssl-study-intro b{font-size:15px;color:#0b6fa6;white-space:nowrap;flex:0 0 auto}.ssl-study-intro span{font-size:12.5px;line-height:1.55;text-align:right}
.ssl-study-groups{display:flex;flex-direction:column;gap:10px}
.ssl-study-group{overflow:hidden;border:1px solid #dde7f0;border-radius:17px;background:#fff;box-shadow:0 3px 0 #e3ebf3,0 8px 22px rgba(39,85,125,.05)}
.ssl-study-group.open{border-color:#aedcf4;box-shadow:0 3px 0 #b9ddf1,0 10px 28px rgba(28,176,246,.10)}
.ssl-study-group-head{width:100%;min-height:82px;display:grid;grid-template-columns:44px minmax(0,1fr) 52px 28px;align-items:center;gap:12px;padding:13px 15px;border:0;background:#fff;text-align:left;cursor:pointer;color:#263b4d}
.ssl-study-group.open .ssl-study-group-head{background:linear-gradient(135deg,#f8fcff,#eef9ff)}
.ssl-study-group-no{width:40px;height:40px;display:grid;place-items:center;border-radius:13px;background:#eaf6fd;color:#087bb3;font-size:13px;font-weight:950}
.ssl-study-group.open .ssl-study-group-no{background:#1cb0f6;color:#fff}
.ssl-study-group-main{min-width:0}.ssl-study-group-main b{display:block;font-size:15.5px;line-height:1.35}.ssl-study-group-main small{display:block;margin-top:5px;color:#7a8b9c;font-size:11.5px;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ssl-study-group-progress{text-align:center;color:#607386}.ssl-study-group-progress b{display:block;font-size:13.5px}.ssl-study-group-progress small{display:block;font-size:10.5px;margin-top:2px}
.ssl-study-group-arrow{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:#f0f4f7;color:#668093;font-size:19px;font-weight:800;line-height:1}
.ssl-study-group.open .ssl-study-group-arrow{background:#dff3fd;color:#087bb3}
.ssl-study-lessons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:4px 14px 15px;border-top:1px solid #edf2f6;background:#fbfdff}
/* 看课+配套练习成对时：单列铺开，避免平板横屏两列把看课卡挤到竖排乱字 */
.ssl-study-lessons.has-pairs{grid-template-columns:1fr;gap:8px}
.ssl-study-lesson{min-width:0;display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 12px;border:1px solid #e1e9f0;border-radius:13px;background:#fff;color:#34495b;text-align:left;cursor:pointer;box-shadow:0 2px 0 #e9eef3;transition:transform .1s,box-shadow .1s,border-color .1s}
.ssl-study-lesson:hover{border-color:#b9dcf0}.ssl-study-lesson:active{transform:translateY(2px);box-shadow:none}
.ssl-study-lesson.done{background:#f4fbef;border-color:#cfe9bf}
.ssl-study-lesson-no{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:#eef5fa;color:#658092;font-size:11px;font-weight:900}.ssl-study-lesson.done .ssl-study-lesson-no{background:#dff3d2;color:#3a8d13}
.ssl-study-lesson-main{min-width:0}.ssl-study-lesson-main b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.ssl-study-lesson-main small{display:block;margin-top:4px;color:#8a99a7;font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ssl-study-lesson-act{padding:5px 8px;border-radius:9px;background:#eaf6fd;color:#087bb3;font-size:11px;font-weight:900;white-space:nowrap}.ssl-study-lesson.done .ssl-study-lesson-act{background:#e4f5d9;color:#3a8d13}
.ssl-study-lesson-pair{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 118px;gap:8px;align-items:stretch}
.ssl-study-lesson-pair .ssl-study-lesson{width:100%;grid-template-columns:34px minmax(0,1fr) auto}
.ssl-study-practice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:100%;padding:9px 8px;border:1px solid #cfe8f7;border-radius:13px;background:#eef9ff;color:#087bb3;cursor:pointer;box-shadow:0 2px 0 #d5eaf6}
.ssl-study-practice b{font-size:11.5px;white-space:nowrap}.ssl-study-practice small{font-size:10px;color:#66879a;white-space:nowrap}
.ssl-study-practice:active{transform:translateY(2px);box-shadow:none}.ssl-study-practice.done{border-color:#cfe9bf;background:#f1faeb;color:#3a8d13}
.ssl-study-practice.unavailable{cursor:not-allowed;border-color:#e1e8ee;background:#f5f7f9;color:#8996a2;box-shadow:none}
.startup-inline-shell{min-height:100vh;padding:78px 18px 24px;background:#f5f8fb}
.startup-inline-status{max-width:760px;margin:0 auto;display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #dce8f1;border-radius:14px;background:#fff;color:#425b70;box-shadow:0 5px 18px rgba(43,76,105,.07)}
.startup-inline-status>div{min-width:0;flex:1}.startup-inline-status b{display:block;font-size:14px}.startup-inline-status small{display:block;margin-top:3px;color:#7c8e9f;font-size:11.5px;line-height:1.45}
.startup-inline-dot{width:10px;height:10px;border-radius:50%;background:#1cb0f6;box-shadow:0 0 0 5px #e1f4fd;animation:startup-inline-pulse 1.2s ease-in-out infinite}
.startup-inline-retry{flex:0 0 auto;padding:7px 12px;font-size:12px}
@keyframes startup-inline-pulse{50%{opacity:.45;transform:scale(.82)}}
@media(max-width:720px){.ssl-study-lessons{grid-template-columns:1fr}.ssl-study-intro{align-items:flex-start;flex-direction:column;gap:5px}.ssl-study-intro span{text-align:left}.ssl-study-group-head{grid-template-columns:40px minmax(0,1fr) 44px 25px;gap:9px;padding:12px}.ssl-study-group-main small{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}
@media(max-width:420px){.ssl-study-wrap{margin:0 -3px}.ssl-study-group-progress{display:none}.ssl-study-group-head{grid-template-columns:38px minmax(0,1fr) 25px}.ssl-study-lessons{padding:4px 10px 12px}.ssl-study-lesson-pair{grid-template-columns:minmax(0,1fr) 96px}.ssl-study-lesson{grid-template-columns:31px minmax(0,1fr);padding:10px}.ssl-study-lesson-act{grid-column:2;justify-self:start}.ssl-study-lesson-main b{white-space:normal;line-height:1.35}.ssl-study-practice{padding:8px 5px}.ssl-study-practice b{font-size:10.5px}.ssl-study-practice small{font-size:9px}}
/* 看课 */
.ssl-video-wrap{box-shadow:0 8px 24px rgba(0,0,0,.16)}
.ssl-video{width:100%;max-height:52vh;background:#000;object-fit:contain}
.ssl-coverage-note{font-size:12px;color:#6b7a8d;font-weight:700;text-align:center}
.ssl-vids{display:flex;flex-direction:column;gap:8px;margin:14px 0}
.ssl-vid{display:flex;align-items:center;gap:9px;text-align:left;background:#fff;border:none;border-radius:12px;padding:12px 14px;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 0 #e6eef5;color:#3a4b5c}
.ssl-vid.on{background:#eaf6fd;color:#0b6fa6;font-weight:900;box-shadow:0 2px 0 #bfe0f5}
.ssl-vid-ico{color:#1cb0f6;font-weight:900;font-size:12px}
@media(max-width:520px){.course-watch-meter{grid-template-columns:1fr}.course-watch-meter small{white-space:normal}.ssl-video{max-height:44vh}.ssl-actrow{flex-direction:column}.ssl-coverage-note{max-width:300px}}
/* 难度选择 */
.ssl-bands{display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px}
.ssl-band{background:#fff;border:none;border-radius:17px;padding:20px 8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;box-shadow:0 4px 0 #e3ebf3;transition:transform .1s,box-shadow .1s}
.ssl-band:not(:disabled):active{transform:translateY(4px);box-shadow:0 0 0 #e3ebf3}
.ssl-band b{font-size:16px}
.ssl-band-star{color:#ffc528;font-size:15px;letter-spacing:1px}
.ssl-band small{color:#8697a8;font-size:11.5px}
.ssl-band:disabled{opacity:.4;cursor:default}
@media(max-width:520px){.ssl-bands{grid-template-columns:1fr}.ssl-band{flex-direction:row;justify-content:center;gap:12px;padding:16px}}
/* 做题 */
.ssl-quiz{max-width:640px;margin:0 auto}
.ssl-qbar{height:9px;background:#e5ecf2;border-radius:99px;overflow:hidden;margin-bottom:12px}
.ssl-qbar-fill{height:100%;background:linear-gradient(90deg,#7ee04a,#58cc02);border-radius:99px;transition:width .35s ease}
.ssl-qmeta{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.ssl-question-timer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px;margin:-3px 0 14px;padding:10px 12px;border:1px solid #cfe6d8;border-radius:13px;background:#f7fcf9;color:#365e46;box-shadow:0 2px 8px rgba(49,112,70,.06)}
.ssl-question-timer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;grid-column:1/-1}.ssl-question-timer-head>span{font-size:12px;font-weight:850}.ssl-question-timer-head>b{font-size:12px;color:#278653}.ssl-question-timer-track{grid-column:1/-1;height:10px;overflow:hidden;border-radius:999px;background:#e7edf0}.ssl-question-timer-fill{display:block;height:100%;border-radius:inherit;background:#39a96b;transition:width .85s linear,background-color .25s ease}.ssl-question-timer>button{min-height:36px;padding:0 12px;border:1px solid #e8b75f;border-radius:10px;background:#fff;color:#9a6008;font:inherit;font-size:12px;font-weight:900;cursor:pointer}.ssl-question-timer>small{color:#6d846e;font-size:11.5px;font-weight:800}.ssl-question-timer.is-warning{border-color:#edd18d;background:#fffbef}.ssl-question-timer.is-warning .ssl-question-timer-status{color:#a96b00}.ssl-question-timer.is-warning .ssl-question-timer-fill{background:#e5a91b}.ssl-question-timer.is-danger{border-color:#efaaa2;background:#fff3f1}.ssl-question-timer.is-danger .ssl-question-timer-status{color:#c64036}.ssl-question-timer.is-danger .ssl-question-timer-fill{background:#e05248}
@media(max-width:520px){.ssl-question-timer>button,.ssl-question-timer>small{margin-left:0;width:100%;text-align:center}.ssl-question-timer>button{min-height:42px}}
@media (prefers-reduced-motion: reduce){.question-timer-fill,.ssl-question-timer-fill{transition:none}}
.ssl-band-tag{font-size:13px;font-weight:900;border-radius:8px;padding:3px 10px}
.ssl-band-tag.b1{background:#e8f8ef;color:#1f8f4d}.ssl-band-tag.b2{background:#fff4d6;color:#9a6b00}.ssl-band-tag.b3{background:#fdecea;color:#c0392b}
.ssl-bank-badge{display:inline-block;flex:none;font-size:12px;font-weight:800;color:#0B6FA6;background:#fff;border:1px solid #1CB0F6;border-radius:999px;padding:2px 9px;line-height:1.6}
.ssl-bank-note{margin-top:8px;font-size:12.5px;font-weight:700;color:#0B6FA6;background:#DDF2FF;border-radius:10px;padding:6px 10px}
.ssl-stem{background:#fff;border-radius:16px;padding:18px 18px;font-size:16.5px;line-height:1.9;margin-bottom:16px;box-shadow:0 3px 12px rgba(20,90,140,.06);font-family:var(--exam-serif);font-weight:400}
.ssl-quiz .question-media{margin:-4px auto 12px}
.ssl-quiz .question-figure{width:auto;max-width:min(100%,16.5rem);margin:0;padding:8px;background:#fff;border-color:#dce6ef;border-radius:16px;box-shadow:0 3px 12px rgba(20,90,140,.06)}
.ssl-quiz .question-figure img{max-height:11.5rem}
.ssl-quiz .question-media:not(.question-media--n1) .question-figure{flex:0 1 auto;max-width:calc(50% - 0.35rem)}
.ssl-quiz .question-media:not(.question-media--n1) .question-figure img{max-height:7.75rem}
.ssl-quiz .question-figure figcaption{text-align:center;color:#657688;font-size:13px}
.ssl-opts{display:grid;gap:10px}
.ssl-opt{display:flex;gap:11px;align-items:center;background:#fff;border:none;border-radius:14px;padding:14px;font-size:15.5px;cursor:pointer;text-align:left;box-shadow:0 3px 0 #e6eef5;transition:transform .1s,box-shadow .1s}
.ssl-opt b{width:26px;height:26px;border-radius:50%;background:#eef4fa;color:#0b6fa6;display:grid;place-items:center;font-size:14px;flex:0 0 auto}
.ssl-opt:not(:disabled):active{transform:translateY(3px);box-shadow:0 0 0 #e6eef5}
.ssl-opt.right{background:#e8f8ef;box-shadow:0 3px 0 #bfe8cf}
.ssl-opt.right b{background:#58cc02;color:#fff}
.ssl-opt.wrong{background:#fdecea;box-shadow:0 3px 0 #f3c4bf}
.ssl-opt.wrong b{background:#e74c3c;color:#fff}
.ssl-fillrow{display:flex;gap:10px}
.ssl-fill{flex:1;border:2px solid #d6e0ea;border-radius:13px;padding:13px;font-size:16px}
.ssl-fill:focus{border-color:#1cb0f6;outline:none}
.ssl-solrow{display:flex;flex-direction:column;gap:12px}
.ssl-sol{border:2px solid #d6e0ea;border-radius:13px;padding:13px;font-size:15px;font-family:inherit;resize:vertical}
.ssl-sol:focus{border-color:#1cb0f6;outline:none}
.ssl-answer-methods{display:flex;flex-direction:column;gap:14px}
.ssl-photo-answer{display:flex;flex-direction:column;align-items:center;gap:9px;padding:12px 14px;border:1px dashed #b9d4ea;border-radius:14px;background:#f8fbff}
.ssl-answer-or{width:100%;display:flex;align-items:center;gap:10px;color:#7b8b9a;font-size:12px;font-weight:800}
.ssl-answer-or:before,.ssl-answer-or:after{content:"";height:1px;background:#d9e5ef;flex:1}
.ssl-photo-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:13px;background:#eef8ff;color:#087bb3;border:2px solid #8dd7fb;font-weight:900;cursor:pointer;box-shadow:0 2px 0 #8dd7fb}
.ssl-photo-button.busy{cursor:wait;opacity:.75}
.ssl-photo-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ssl-photo-answer small{color:#718293;text-align:center;line-height:1.55}
.ssl-photo-preview{display:block;max-width:min(100%,360px);max-height:260px;object-fit:contain;border-radius:12px;border:1px solid #d6e0ea;background:#fff;padding:4px}
.ssl-photo-preview.feedback{margin:10px auto}
.ssl-photo-status{width:100%;padding:9px 11px;border-radius:10px;background:#eef5fb;color:#496273;font-size:13px;line-height:1.5;text-align:center}
.ssl-photo-status.correct{background:#e8f8ef;color:#26754b}.ssl-photo-status.partial{background:#fff6dd;color:#875d00}.ssl-photo-status.wrong{background:#fdecea;color:#9a3832}.ssl-photo-status.unsure,.ssl-photo-status.error{background:#fff3df;color:#84561b}
.ssl-myans{background:#f6faff;border:1px dashed #b9d4ea;border-radius:12px;padding:11px 13px;font-size:14px;margin-bottom:10px;color:#3a4b5c}
.ssl-fb{border-radius:16px;padding:16px 18px;margin-top:16px;background:#f2f9ff;box-shadow:0 3px 12px rgba(20,90,140,.05)}
.ssl-fb.ok{background:#e8f8ef}.ssl-fb.bad{background:#fdecea}
.ssl-fb b{font-size:16px}
.ssl-answer{margin-top:9px;font-weight:800}
.ssl-explain{margin-top:9px;font-size:14.5px;line-height:1.75;color:#2a3b4d}
.ssl-selfask{font-weight:800;width:100%;text-align:center;margin-bottom:2px}
/* 结算 */
.ssl-done{text-align:center;padding:24px 16px}
.ssl-done-burst{font-size:60px;animation:sslpop .5s ease}
@keyframes sslpop{0%{transform:scale(0)}70%{transform:scale(1.25)}100%{transform:scale(1)}}
.ssl-done-stars{font-size:44px;letter-spacing:8px;margin:6px 0 4px;height:54px}
.ssl-ds{color:#dbe4ec;display:inline-block}
.ssl-ds.on{color:#ffc528;animation:sslstar .45s ease backwards;text-shadow:0 3px 8px rgba(255,197,40,.4)}
@keyframes sslstar{0%{transform:scale(0) rotate(-40deg);opacity:0}60%{transform:scale(1.35)}100%{transform:scale(1);opacity:1}}
.ssl-done h1{font-size:22px;margin:10px 0 6px}
.ssl-done-sub{color:#7a8b9c;font-size:13.5px}
@media(max-width:640px){.ssl-node{width:64px;height:64px}.ssl-node-face{font-size:24px}.ssl-node-label{width:122px;font-size:11.5px;padding:6px 9px}.ssl-node-wrap{gap:9px}}

/* 看课闯关首页：学段/科目/册切换（随时练风） */
.ssl-segbar{display:flex;gap:8px;margin-bottom:12px}
.ssl-seg{flex:1;background:#fff;border:none;border-radius:13px;padding:12px;font-size:15px;font-weight:900;color:#7a8b9c;cursor:pointer;box-shadow:0 3px 0 #e3ebf3;transition:transform .1s,box-shadow .1s}
.ssl-seg:active{transform:translateY(3px);box-shadow:0 0 0 #e3ebf3}
.ssl-seg.on{background:#1cb0f6;color:#fff;box-shadow:0 3px 0 #0e8fd0}
.ssl-chipbar{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;margin-bottom:4px;-webkit-overflow-scrolling:touch}
.ssl-chipbar::-webkit-scrollbar{height:0}
.ssl-chip{flex:0 0 auto;background:#fff;border:1.5px solid #e6eef5;border-radius:99px;padding:8px 16px;font-size:13.5px;font-weight:800;color:#4a5b6e;cursor:pointer;white-space:nowrap}
.ssl-chip.on{background:#1cb0f6;border-color:#1cb0f6;color:#fff}
.ssl-chip.soon{opacity:.5}
.ssl-books{margin-bottom:10px}.ssl-books .ssl-chip{padding:7px 14px}
.ssl-ch-badge{flex:0 0 auto;font-size:11px;font-weight:900;border-radius:99px;padding:3px 10px;background:#e8f8ef;color:#1f8f4d}
.ssl-ch-badge.only-video{background:#eef4fa;color:#0b6fa6}
.ssl-ch-badge.developing{background:#f0edf7;color:#74648f}
.ssl-soon-note{text-align:center;color:#7a8b9c;padding:44px 20px;font-size:14.5px;font-weight:700;line-height:2}
.ssl-soon-note small{color:#9aa8b8;font-weight:600}
/* 顶部导航栏「看课闯关」入口 */
.ssl-header-btn{background:linear-gradient(135deg,#ffd24d,#ffb800);color:#7a5300;border:none;border-radius:10px;padding:8px 14px;font-size:13.5px;font-weight:900;cursor:pointer;box-shadow:0 2px 0 #e0a800}
.ssl-header-btn:active{transform:translateY(2px);box-shadow:0 0 0 #e0a800}

/* 学段横滚(5个:小学/小升初/初中/初升高/高中) */
.ssl-stages{margin-bottom:10px}
.ssl-stages .ssl-chip{padding:10px 18px;font-size:14.5px;font-weight:900;box-shadow:0 3px 0 #e3ebf3;border:none}
.ssl-stages .ssl-chip.on{background:#1cb0f6;color:#fff;box-shadow:0 3px 0 #0e8fd0}

/* ===== hd2 · 顶部导航 2.0（2026-07-07 重构：品牌行 + 双主入口 + 统一药丸组，去杂乱） ===== */
.app-header.hd2 { background: rgba(255,255,255,.92); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  border-bottom: 1px solid #e6edf4; box-shadow: 0 6px 24px rgba(20,80,140,.06); border-radius: 0 0 18px 18px; padding: 12px 18px 14px; }
body.lite-mode .app-header.hd2 { -webkit-backdrop-filter: none; backdrop-filter: none; background: #fff; }
.hd2-top { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; max-width: 1180px; margin: 0 auto; width: 100%; }
.hd2-user { margin-left: auto; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hd2-user .cur-stu { font-size: 13.5px; color: #51607a; font-weight: 700; }
.hd2-user .ghost-button { height: 32px; padding: 0 12px; font-size: 12.5px; border-radius: 999px; background: #f4f7fb; border: 1px solid #e3eaf2; color: #51607a; font-weight: 800; }
.hd2-user .ghost-button.is-active { background: #1cb0f6; border-color: #1cb0f6; color: #fff; }
/* 撑满整行、居中：主入口撑开占主宽度、功能药丸跟右侧，不再一坨挤左边、右边留白 */
.hd2-nav { display: flex; align-items: center; gap: 10px; margin: 12px auto 0; flex-wrap: wrap; max-width: 1180px; width: 100%; }
.hd2-nav > .summer-entry { flex: 1.5 1 240px; }
.hd2-nav > .tutor-entry { flex: 1.1 1 210px; }
.hd2-nav > .hd2-pills { flex: 1.4 1 300px; }
/* 主入口①：暑期课程（最大、发光、扫光） */
.summer-entry { position: relative; overflow: hidden; display: inline-flex; align-items: center; gap: 12px; border: none; cursor: pointer;
  padding: 10px 22px 10px 16px; border-radius: 16px; color: #fff; text-align: left;
  background: linear-gradient(118deg, #ffb347 0%, #ff8a3d 52%, #ff6b5e 100%);
  box-shadow: 0 10px 26px -6px rgba(255,138,61,.55), inset 0 2px 0 rgba(255,255,255,.35);
  transition: transform .12s, box-shadow .12s; }
.summer-entry:hover { transform: translateY(-2px); box-shadow: 0 14px 30px -6px rgba(255,138,61,.6), inset 0 2px 0 rgba(255,255,255,.35); }
.summer-entry:active { transform: translateY(1px) scale(.985); }
.summer-entry::after { content: ""; position: absolute; top: -40%; bottom: -40%; width: 46px; transform: rotate(18deg); left: -70px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.5), transparent); animation: se-shine 3.4s ease-in-out infinite; }
@keyframes se-shine { 0%, 62% { left: -70px; } 88%, 100% { left: 115%; } }
body.lite-mode .summer-entry::after { display: none; }
.summer-entry .se-ic { font-size: 30px; filter: drop-shadow(0 2px 3px rgba(180,80,0,.3)); }
.se-tx { display: flex; flex-direction: column; line-height: 1.22; }
.summer-entry .se-t { font-size: 18.5px; font-weight: 900; letter-spacing: 1.5px; text-shadow: 0 1px 2px rgba(160,70,0,.25); }
.summer-entry .se-sub { font-size: 11.5px; font-weight: 700; opacity: .92; letter-spacing: .5px; }
.summer-entry .se-arrow { font-size: 22px; font-weight: 900; opacity: .85; margin-left: auto; padding-left: 8px; }
/* 主入口②：小优老师答疑（白底描边，第二显眼） */
.tutor-entry { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; padding: 10px 20px 10px 14px; border-radius: 16px;
  background: #fff; border: 2px solid #bfe3fb; color: #0b6fa6; text-align: left;
  box-shadow: 0 8px 20px -8px rgba(28,176,246,.35); transition: transform .12s, box-shadow .12s, border-color .12s; }
.tutor-entry:hover { transform: translateY(-2px); border-color: #8fd0f9; box-shadow: 0 12px 26px -8px rgba(28,176,246,.42); }
.tutor-entry:active { transform: translateY(1px) scale(.985); }
.tutor-entry .te-ic { font-size: 26px; }
.tutor-entry .se-t { font-size: 16px; font-weight: 900; letter-spacing: .5px; }
.tutor-entry .se-sub { font-size: 11px; font-weight: 700; color: #7fa8c4; letter-spacing: .5px; }
/* 次要功能：统一灰药丸，一个视觉声部 */
.hd2-pills { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.hd2-pill { height: 36px; padding: 0 14px; border-radius: 999px; background: #f4f7fb; border: 1px solid #e3eaf2; color: #51607a;
  font-size: 13px; font-weight: 800; cursor: pointer; transition: background .12s, border-color .12s, color .12s; }
.hd2-pill:hover { background: #eaf3fb; border-color: #cfe4f5; color: #1476b5; }
.hd2-pill.is-live { background: #e9f9ef; border-color: #bfe8cd; color: #16803c; }
.hd2-pill.hd2-collapse { color: #93a1b5; }
/* 收起态的两枚迷你主入口 */
.summer-mini { border: none; cursor: pointer; border-radius: 999px; padding: 8px 16px; color: #fff; font-size: 14px; font-weight: 900;
  background: linear-gradient(118deg, #ffb347, #ff6b5e); box-shadow: 0 6px 16px -6px rgba(255,138,61,.55); }
.tutor-mini { cursor: pointer; border-radius: 999px; padding: 8px 16px; background: #fff; border: 1.5px solid #bfe3fb; color: #0b6fa6; font-size: 14px; font-weight: 900; }
/* 弹窗外壳/页脚的三档讲解切换 */
.tutor-tier-seg { display: inline-flex; background: rgba(255,255,255,.16); border-radius: 999px; padding: 3px; gap: 2px; }
.tutor-tier-opt { border: none; background: transparent; color: rgba(255,255,255,.85); border-radius: 999px; padding: 4px 11px; font-size: 12.5px; font-weight: 800; cursor: pointer; }
.tutor-tier-opt.is-on { background: #fff; color: #1c64d9; box-shadow: 0 1px 4px rgba(10,40,90,.25); }
.tier-mini { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: #8794a6; font-weight: 700; }
.tier-mini-opt { border: 1px solid #e3eaf2; background: #f4f7fb; color: #6b7889; border-radius: 999px; padding: 3px 10px; font-size: 12px; font-weight: 800; cursor: pointer; }
.tier-mini-opt.is-on { background: #1cb0f6; border-color: #1cb0f6; color: #fff; }
@media (max-width: 720px) {
  .hd2-nav { gap: 8px; }
  .summer-entry { flex: 1 1 100%; justify-content: center; }
  .tutor-entry { flex: 1 1 46%; justify-content: center; }
  .hd2-pills { margin-left: 0; }
  .summer-entry .se-t { font-size: 17px; }
}

/* ===== 要点小测：看课中途暂停弹题(全屏遮罩，直接挂body，不经过render()) ===== */
.cp-mask{position:fixed;inset:0;z-index:9000;background:rgba(15,30,55,.82);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);display:flex;align-items:center;justify-content:center;padding:20px;animation:cp-fade .18s ease}
@keyframes cp-fade{from{opacity:0}to{opacity:1}}
.cp-card{background:#fff;border-radius:20px;max-width:460px;width:100%;padding:22px 20px 20px;box-shadow:0 20px 50px rgba(10,30,60,.4);max-height:88vh;overflow:auto}
.cp-badge{display:inline-block;background:#eef7ff;color:#1487c9;font-size:12.5px;font-weight:900;padding:5px 12px;border-radius:99px;margin-bottom:12px}
.cp-stem{font-size:16px;font-weight:400;line-height:1.9;color:#111;margin-bottom:14px;font-family:var(--exam-serif)}
.cp-opts{display:flex;flex-direction:column;gap:9px}
.cp-opt{background:#f6f9fc;border:1.5px solid #e6eef5;border-radius:13px;padding:12px 14px;text-align:left;font-size:14.5px;font-weight:700;color:#344256;cursor:pointer;display:flex;gap:8px}
.cp-opt b{color:#7a8b9c;flex:none}
.cp-opt:not(:disabled):active{transform:scale(.98)}
.cp-opt:disabled{cursor:default}
.cp-opt.cp-ok{background:#eafaf0;border-color:#8fe0af;color:#1e8a4c}
.cp-opt.cp-bad{background:#fff1ef;border-color:#ffb3a8;color:#c94a3a}
.cp-fb{margin-top:14px}
.cp-fb-ok{background:#eafaf0;border-radius:12px;padding:12px 14px;color:#1e8a4c;font-size:13.5px;font-weight:700;line-height:1.6;margin-bottom:12px}
.cp-fb-bad{background:#fff1ef;border-radius:12px;padding:12px 14px;color:#c94a3a;font-size:13.5px;font-weight:700;line-height:1.6;margin-bottom:12px}
.cp-fb-row{display:flex;gap:10px}
.cp-fb-row .ssl-cta{flex:1;padding:12px 10px;font-size:14px}
@media(max-width:640px){.cp-card{padding:18px 16px 16px}.cp-stem{font-size:15px}}

/* ===== 课程上下文答疑 + 初中数学电子讲义 ===== */
.ssl-handout-library{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:11px;margin:0 0 14px;padding:13px 15px;border:1.5px solid #cde9fa;border-radius:16px;background:linear-gradient(135deg,#f3fbff,#eef9ff);color:#17668f;text-align:left;cursor:pointer;box-shadow:0 3px 0 #d9edf8}
.ssl-handout-library>span{font-size:25px}.ssl-handout-library b{display:block;font-size:15px}.ssl-handout-library small{display:block;margin-top:4px;color:#6f94aa;font-size:11.5px;font-weight:700}.ssl-handout-library i{font-style:normal;color:#1681b7;font-weight:900;font-size:13px;white-space:nowrap}
.ssl-context-tools{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:13px 0 4px;padding:10px 12px;border:1px solid #dcecf6;border-radius:14px;background:#f9fcff}.ssl-context-tools>span{color:#8091a1;font-size:11.5px;font-weight:650;line-height:1.4;flex:1 1 210px}
.ssl-context-btn,.cp-context-ask,.cp-context-handout{border:0;border-radius:11px;padding:9px 12px;font-size:13px;font-weight:850;cursor:pointer;box-shadow:0 2px 0 rgba(17,100,150,.16)}.ssl-context-btn.ask,.cp-context-ask{background:#e7f6ff;color:#087bb3}.ssl-context-btn.handout,.cp-context-handout{background:#f2f8eb;color:#4b8e20}.ssl-context-btn:active,.cp-context-ask:active,.cp-context-handout:active{transform:translateY(2px);box-shadow:none}.cp-context-tools{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 2px}
.context-ask-overlay{position:fixed;inset:0;z-index:10120;background:rgba(13,29,47,.58);display:flex;align-items:center;justify-content:center;padding:18px;overflow:auto}.context-ask-card{width:min(600px,100%);max-height:min(90vh,760px);overflow:auto;background:#fff;border-radius:20px;box-shadow:0 24px 72px rgba(10,26,44,.36)}.context-ask-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 19px 14px;border-bottom:1px solid #edf1f5}.context-ask-card>header b{display:block;font-size:17px;color:#23364b}.context-ask-card>header span{display:block;margin-top:5px;color:#7a8b9b;font-size:12px;line-height:1.45}.context-ask-close,.handout-close{width:32px;height:32px;border:0;border-radius:10px;background:#f2f5f8;color:#607284;font-size:18px;cursor:pointer;flex:0 0 auto}.context-ask-excerpt,.context-ask-unavailable{margin:14px 19px 12px;border-radius:13px;padding:11px 13px;background:#f7fafc;border:1px solid #e6edf3}.context-ask-excerpt small{color:#0b7eb7;font-size:11.5px;font-weight:850}.context-ask-excerpt p{margin:6px 0 0;color:#536477;font-size:13px;line-height:1.65;white-space:pre-wrap}.context-ask-unavailable{color:#718191;font-size:13px;line-height:1.6}.context-ask-directions{display:grid;gap:9px;padding:0 19px 13px}.context-ask-directions button{display:flex;align-items:flex-start;gap:10px;text-align:left;border:1.5px solid #dce8f0;border-radius:13px;background:#fff;padding:11px 12px;color:#355064;font-size:13.5px;font-weight:750;line-height:1.5;cursor:pointer}.context-ask-directions button:hover{background:#f0faff;border-color:#9fd9f6}.context-ask-directions i{width:21px;height:21px;display:grid;place-items:center;border-radius:50%;background:#dff4ff;color:#087bb3;font-style:normal;font-size:11.5px;flex:0 0 auto}.context-ask-custom{border-top:1px solid #edf1f5;padding:14px 19px 19px}.context-ask-custom label{display:block;color:#40586b;font-size:13px;font-weight:850;margin-bottom:7px}.context-ask-custom textarea{box-sizing:border-box;width:100%;resize:vertical;min-height:62px;border:1.5px solid #d8e4ec;border-radius:12px;padding:10px;font:inherit;font-size:13.5px;line-height:1.55;color:#334b5e}.context-ask-custom textarea:focus{outline:0;border-color:#55bce9;box-shadow:0 0 0 3px rgba(28,176,246,.12)}.context-ask-submit{margin-top:10px;width:100%;border:0;border-radius:12px;padding:11px 14px;background:#1cb0f6;color:#fff;font-size:14px;font-weight:900;cursor:pointer;box-shadow:0 3px 0 #0e90cf}.context-ask-submit:active{transform:translateY(3px);box-shadow:none}
body.handout-open{overflow:hidden}.handout-library-overlay,.handout-reader-overlay{position:fixed;inset:0;z-index:10100;background:rgba(15,31,49,.52);display:flex;align-items:center;justify-content:center;padding:18px}.handout-library-modal{width:min(780px,100%);height:min(86vh,820px);display:flex;flex-direction:column;overflow:hidden;background:#fff;border-radius:20px;box-shadow:0 24px 72px rgba(10,26,44,.34)}.handout-library-modal>header,.handout-reader>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 17px;border-bottom:1px solid #e8eef3;background:#fff}.handout-library-modal>header b,.handout-reader>header b{display:block;color:#23364b;font-size:16px}.handout-library-modal>header span,.handout-reader>header span{display:block;margin-top:4px;color:#7c8e9e;font-size:11.5px;font-weight:650}.handout-library-tools{display:flex;gap:9px;padding:13px 16px 9px;background:#fbfdff}.handout-library-tools select,.handout-library-tools input{border:1.5px solid #dce6ee;border-radius:10px;background:#fff;padding:9px 10px;color:#40576a;font:inherit;font-size:13px}.handout-library-tools select{width:132px}.handout-library-tools input{flex:1;min-width:0}.handout-library-count{padding:0 17px 9px;color:#7b8c9b;font-size:12px;font-weight:700}.handout-library-list{overflow:auto;padding:0 12px 14px;display:flex;flex-direction:column;gap:7px}.handout-library-item{display:grid;grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;border:1px solid #e2eaf0;border-radius:13px;background:#fff;padding:10px 11px;text-align:left;color:#395064;cursor:pointer}.handout-library-item:hover{background:#f5fbff;border-color:#b7def1}.handout-item-id{color:#1a8dc4;font-size:11px;font-weight:900}.handout-library-item b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.handout-library-item small{display:block;margin-top:4px;color:#8091a0;font-size:11px}.handout-library-item i{color:#1886bd;font-style:normal;font-size:12px;font-weight:850;white-space:nowrap}.handout-library-empty{padding:34px 16px;text-align:center;color:#8191a0;font-size:13px}
.handout-reader-overlay{padding:0;background:#eef3f7}.handout-reader{width:100%;height:100%;display:flex;flex-direction:column;background:#eef3f7}.handout-reader>header{position:relative;z-index:2;box-shadow:0 2px 10px rgba(22,52,76,.08)}.handout-back{border:0;background:#f2f6f9;color:#4c697c;border-radius:10px;padding:8px 10px;font-size:12.5px;font-weight:800;cursor:pointer;white-space:nowrap}.handout-reader>header>div:nth-child(2){min-width:0;flex:1}.handout-reader>header>div:nth-child(2) b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.handout-reader-actions{display:flex;align-items:center;gap:7px}.handout-reader-actions>button:not(.handout-close){border:0;border-radius:10px;padding:8px 10px;background:#f1f7fb;color:#17769e;font-size:12px;font-weight:850;cursor:pointer;white-space:nowrap}.handout-reader-actions .handout-select-btn{background:#e7f7ff;color:#087bb3}.handout-reader-actions .handout-select-btn.on{background:#1cb0f6;color:#fff;box-shadow:0 2px 0 #0e90cf}.handout-reader-tip{position:relative;z-index:1;padding:8px 16px;background:#fffdf1;color:#7b6924;font-size:11.5px;line-height:1.45;text-align:center;border-bottom:1px solid #f1e8b9}.handout-reader-pages{flex:1;overflow:auto;padding:22px max(12px,calc((100vw - 900px)/2));-webkit-overflow-scrolling:touch}.handout-page{position:relative;width:min(100%,850px);margin:0 auto 22px;background:#fff;box-shadow:0 5px 22px rgba(20,48,70,.16);line-height:0}.handout-page img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}.handout-page figcaption{position:absolute;right:8px;bottom:7px;padding:3px 7px;border-radius:8px;background:rgba(28,45,62,.54);color:#fff;font-size:10px;line-height:1.2}.handout-reader.selecting .handout-page{cursor:crosshair}.handout-selection{position:absolute;border:2px solid #1cb0f6;background:rgba(28,176,246,.18);box-shadow:0 0 0 9999px rgba(28,176,246,.03);pointer-events:none;z-index:2}
.handout-reader-tip[data-state="selecting"]{background:#eefaff;color:#18719b;border-bottom-color:#c8eafa}
.handout-layer-switch{position:relative;z-index:1;display:flex;align-items:stretch;justify-content:center;gap:9px;padding:10px 14px;background:#f7fbfe;border-bottom:1px solid #dbe8f1}.handout-layer-switch>span{display:flex;align-items:center;padding:0 5px;color:#718697;font-size:11.5px;font-weight:800}.handout-layer-switch button{min-width:190px;border:1.5px solid #d8e4ec;border-radius:12px;padding:8px 13px;background:#fff;color:#50687a;text-align:left;cursor:pointer;box-shadow:0 2px 0 #e4ebf0}.handout-layer-switch button b,.handout-layer-switch button small{display:block}.handout-layer-switch button b{font-size:13px}.handout-layer-switch button small{margin-top:3px;color:#8a99a7;font-size:10.5px}.handout-layer-switch button.on{border-color:#1cb0f6;background:#eef9ff;color:#087bb3;box-shadow:0 2px 0 #bfe6f8}.handout-layer-switch button[data-handout-layer="advanced"].on{border-color:#8d6ed5;background:#f7f2ff;color:#6746b0;box-shadow:0 2px 0 #ddcff5}.handout-page[hidden]{display:none!important}
@media(max-width:650px){.ssl-context-tools{align-items:stretch}.ssl-context-tools>span{flex-basis:100%}.ssl-context-btn{flex:1}.context-ask-overlay{padding:10px;align-items:flex-end}.context-ask-card{border-radius:18px;max-height:94vh}.handout-library-overlay{padding:0}.handout-library-modal{width:100%;height:100%;border-radius:0}.handout-library-tools{padding:11px}.handout-library-tools select{width:112px}.handout-reader>header{padding:10px 9px;gap:7px}.handout-reader>header>div:nth-child(2) span{display:none}.handout-reader-actions{gap:4px}.handout-reader-actions>button:not(.handout-close){padding:7px 7px;font-size:11px}.handout-reader-actions .handout-print-btn,.handout-reader-actions .handout-download-btn{font-size:0}.handout-reader-actions .handout-print-btn::before{content:"🖨️";font-size:15px}.handout-reader-actions .handout-download-btn::before{content:"⬇";font-size:16px}.handout-back{font-size:0;padding:7px}.handout-back::before{content:"‹";font-size:24px;line-height:14px}.handout-layer-switch{display:grid;grid-template-columns:1fr 1fr;padding:8px;gap:7px}.handout-layer-switch>span{grid-column:1/-1;justify-content:center}.handout-layer-switch button{min-width:0;padding:7px 8px}.handout-layer-switch button small{line-height:1.35}.handout-reader-pages{padding:12px 5px}.handout-page{margin-bottom:14px}.handout-reader-tip{padding:7px 10px;font-size:10.5px}}
@media print{body.handout-printing>*:not(#handout-reader-overlay){display:none!important}body.handout-printing #handout-reader-overlay{position:static!important;display:block!important;background:#fff!important;padding:0!important}body.handout-printing .handout-reader{display:block!important;height:auto!important;background:#fff!important}body.handout-printing .handout-reader>header,body.handout-printing .handout-reader-tip,body.handout-printing .handout-layer-switch{display:none!important}body.handout-printing .handout-reader-pages{overflow:visible!important;padding:0!important}body.handout-printing .handout-page{width:210mm!important;margin:0 auto!important;box-shadow:none!important;break-after:page;page-break-after:always}body.handout-printing .handout-page figcaption,body.handout-printing .handout-selection,body.handout-printing .handout-lasso,body.handout-printing .handout-select-box{display:none!important}@page{size:A4;margin:0}}
.handout-select-box{position:absolute;z-index:4;border:2.5px solid #1cb0f6;background:rgba(28,176,246,.14);box-shadow:0 0 0 9999px rgba(16,42,60,.22),0 3px 14px rgba(12,91,130,.25);cursor:move;touch-action:none}
.handout-select-label{position:absolute;left:50%;top:-30px;transform:translateX(-50%);padding:4px 10px;border-radius:8px;background:rgba(12,91,130,.9);color:#fff;font-size:11.5px;font-weight:800;line-height:1.2;white-space:nowrap;pointer-events:none}
.handout-select-handle{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:transparent;touch-action:none}
.handout-select-handle::before{content:"";width:20px;height:20px;border-radius:50%;background:#1cb0f6;border:3px solid #fff;box-shadow:0 1px 6px rgba(0,0,0,.35)}
.handout-select-handle.n::before,.handout-select-handle.s::before{width:36px;height:13px;border-radius:8px}
.handout-select-handle.e::before,.handout-select-handle.w::before{width:13px;height:36px;border-radius:8px}
.handout-select-handle.nw{left:-22px;top:-22px;cursor:nwse-resize}.handout-select-handle.ne{right:-22px;top:-22px;cursor:nesw-resize}.handout-select-handle.se{right:-22px;bottom:-22px;cursor:nwse-resize}.handout-select-handle.sw{left:-22px;bottom:-22px;cursor:nesw-resize}
.handout-select-handle.n{left:50%;top:-22px;transform:translateX(-50%);cursor:ns-resize}.handout-select-handle.s{left:50%;bottom:-22px;transform:translateX(-50%);cursor:ns-resize}
.handout-select-handle.e{right:-22px;top:50%;transform:translateY(-50%);cursor:ew-resize}.handout-select-handle.w{left:-22px;top:50%;transform:translateY(-50%);cursor:ew-resize}
.handout-select-actions{position:absolute;left:0;right:0;bottom:0;z-index:6;display:none;gap:10px;align-items:center;padding:11px 16px calc(11px + env(safe-area-inset-bottom,0px));background:rgba(255,255,255,.97);border-top:1.5px solid #d8e6ef;box-shadow:0 -5px 20px rgba(20,48,70,.16)}
.handout-select-actions.show{display:flex}
.handout-select-hint{flex:1;min-width:0;font-size:12.5px;color:#5b7186;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.handout-select-cancel{border:0;border-radius:11px;padding:11px 16px;background:#eef3f7;color:#5b7186;font-size:13.5px;font-weight:850;cursor:pointer}
.handout-select-ok{border:0;border-radius:11px;padding:12px 26px;background:#1cb0f6;color:#fff;font-size:15px;font-weight:900;cursor:pointer;box-shadow:0 3px 0 #0e90cf;white-space:nowrap}
.handout-select-ok:active{transform:translateY(2px);box-shadow:0 1px 0 #0e90cf}
.handout-smart-card{max-width:560px}
.handout-smart-preview{margin:10px 14px 0;border:1.5px solid #d8e6ef;border-radius:10px;overflow:auto;max-height:170px;background:#fff}
.handout-smart-preview img{display:block;width:100%;height:auto}
.handout-smart-status{display:flex;align-items:center;gap:10px;padding:14px;color:#17769e;font-weight:800;font-size:13px}
.handout-smart-status[hidden]{display:none}
.handout-smart-status .ssl-spinner{width:18px;height:18px;border-width:2.5px;margin:0}
.handout-smart-summary{margin:10px 14px 0;padding:9px 12px;border-radius:10px;background:#f0f9f1;color:#2e6b39;font-size:12.5px;font-weight:700;line-height:1.5}
.handout-smart-ask{margin:12px 14px 2px;font-size:13.5px;font-weight:900;color:#243b4e}
.handout-smart-options{display:flex;flex-wrap:wrap;gap:8px;padding:8px 14px 2px}
.handout-smart-options button{border:1.5px solid #cfe4f2;background:#f7fbfe;color:#17608a;border-radius:999px;padding:9px 14px;font-size:12.5px;font-weight:800;cursor:pointer;line-height:1.3}
.handout-smart-options button.on{background:#1cb0f6;border-color:#1cb0f6;color:#fff;box-shadow:0 2px 0 #0e90cf}
.handout-smart-actions{display:flex;gap:10px;justify-content:flex-end;align-items:center;padding:12px 14px 14px}
.handout-smart-reselect{border:0;border-radius:11px;padding:10px 14px;background:#eef3f7;color:#5b7186;font-size:13px;font-weight:850;cursor:pointer}
.handout-smart-submit{border:0;border-radius:11px;padding:12px 20px;background:#58cc02;color:#fff;font-size:14.5px;font-weight:900;cursor:pointer;box-shadow:0 3px 0 #46a302}
.handout-smart-submit:active{transform:translateY(2px);box-shadow:0 1px 0 #46a302}

/* ===== 学习提示系统 V1：轻量、不遮挡；真正进入时由 app.js 固定一句 ===== */
.student-nudge{box-sizing:border-box;width:100%;display:flex;align-items:flex-start;gap:10px;margin:0 0 14px;padding:11px 13px;border:1px solid #dceaf3;border-radius:14px;background:linear-gradient(135deg,#f8fcff,#f3f9fd);color:#405a6d;box-shadow:0 2px 0 rgba(32,105,145,.06)}
.student-nudge-icon{width:25px;height:25px;display:grid;place-items:center;flex:0 0 25px;border-radius:50%;background:#dff4ff;color:#0a83ba;font-size:13px;font-weight:900}
.student-nudge>div{min-width:0}.student-nudge b{display:block;margin:0 0 3px;color:#1677a3;font-size:11.5px;font-weight:900;letter-spacing:.3px}.student-nudge p{margin:0;color:#526c7e;font-size:13px;font-weight:680;line-height:1.55}
.student-nudge.practice{border-color:#d9ead0;background:linear-gradient(135deg,#fbfff8,#f3faee)}.student-nudge.practice .student-nudge-icon{background:#e3f6d7;color:#4c941a}.student-nudge.practice b{color:#4d8c24}
.student-nudge.resume{border-color:#f1dfb5;background:linear-gradient(135deg,#fffdf7,#fff8e8)}.student-nudge.resume .student-nudge-icon{background:#fff0c8;color:#a46f00}.student-nudge.resume b{color:#906618}
.student-nudge.streak{margin-top:11px;border-color:#f2d9c5;background:#fff8f1}.student-nudge.streak .student-nudge-icon{background:#ffe4cc;color:#b8641d}.student-nudge.streak b{color:#a4591d}
.student-nudge.settle{margin:12px auto 14px;max-width:620px;text-align:left}
.feedback-stack{display:grid;gap:8px}
.ssl-done .student-nudge{max-width:560px;text-align:left}
@media(max-width:640px){.student-nudge{margin-bottom:11px;padding:10px 11px;border-radius:12px;gap:8px}.student-nudge p{font-size:12.5px;line-height:1.5}.student-nudge-icon{width:23px;height:23px;flex-basis:23px}.student-nudge.settle{margin-top:10px}}

.app-update-resume-note{position:fixed;left:50%;bottom:max(20px,env(safe-area-inset-bottom,0px));z-index:2147482000;transform:translateX(-50%);max-width:min(440px,calc(100vw - 32px));padding:11px 15px;border:1px solid #b9e5bf;border-radius:13px;background:#effcf1;color:#2d733a;box-shadow:0 8px 28px rgba(27,78,38,.2);font-size:13px;font-weight:800;line-height:1.45;text-align:center}
@media(max-width:640px){.app-update-resume-note{font-size:12.5px}}

@media (max-width: 640px) {
  .question-panel .question-stem-rich, .ssl-stem, .cp-stem { font-size: 1.12rem; line-height: 1.9; }
  .question-data-table { font-size: 13px; line-height: 1.4; }
  .question-data-table th,
  .question-data-table td { min-width: 4.2em; padding: 6px 8px; }
  .ssl-stem .question-table-scroll { margin-inline: -4px; }
}
.course-video-status{margin:8px 12px 0;padding:9px 12px;border-radius:10px;background:#eef6ff;color:#315b7d;font-size:13px;line-height:1.5}
.course-video-status.error{background:#fff1f0;color:#a13a32}
.course-video-status button{margin-left:8px;border:1px solid currentColor;border-radius:8px;background:#fff;padding:3px 10px;color:inherit;cursor:pointer}

/* ===== 质感升级 v2 字体（vitality-blue.css 主题层禁 url()，字体声明放这里）：logo 子集 + Nunito 数字 ===== */
@font-face { font-family:"WYXNum"; src:url("assets/vendor/fonts/nunito-latin-900-normal.woff2") format("woff2"); font-weight:900; unicode-range:U+0030-0039,U+0025,U+002B,U+002D,U+002E,U+002F; font-display:swap; }
@font-face { font-family:"WYXNum"; src:url("assets/vendor/fonts/nunito-latin-700-normal.woff2") format("woff2"); font-weight:700 800; unicode-range:U+0030-0039,U+0025,U+002B,U+002D,U+002E,U+002F; font-display:swap; }
@font-face { font-family:"WYXShuHei"; src:url("assets/vendor/fonts/wyx-logo-shuhei.woff2") format("woff2"); font-display:swap; }
@font-face { font-family:"WYXSmiley"; src:url("assets/vendor/fonts/wyx-logo-smiley.woff2") format("woff2"); font-display:swap; }

/* 主观题作答「待送达」：顶栏提示 + 列表（学生端不等网络，送不到的在这里重发/重拍） */
.hd2-pill.so-badge{background:#fff7e6;border-color:#f5c26b;color:#8a5a00;font-weight:600}
.hd2-pill.so-badge.is-warn{background:#fdecec;border-color:#f0a3a3;color:#a12a2a}
.app-header-collapsed .so-badge{white-space:nowrap}
.so-overlay{position:fixed;inset:0;z-index:9100;background:rgba(15,30,55,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.so-card{background:#fff;color:#1d2330;border-radius:16px;max-width:520px;width:100%;max-height:86vh;overflow:auto;padding:16px 16px 12px;box-shadow:0 20px 50px rgba(10,30,60,.35)}
.so-head{display:flex;align-items:center;justify-content:space-between;font-size:17px}
.so-close{border:0;background:transparent;font-size:18px;cursor:pointer;padding:4px 8px;touch-action:manipulation}
.so-tip{margin:6px 0 10px;color:#5b6475;font-size:13.5px}
.so-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.so-row{border:1px solid #e3e7ef;border-left:4px solid #f5c26b;border-radius:10px;padding:8px 10px}
.so-row.is-warn{border-left-color:#e05252}
.so-meta{font-size:12px;color:#6b7280}
.so-label{font-size:14px;margin:2px 0;overflow-wrap:anywhere}
.so-status{font-size:13px;color:#8a5a00}
.so-row.is-warn .so-status{color:#a12a2a}
.so-actions{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}
.so-btn{display:inline-flex;align-items:center;border:1px solid #2f6fe4;color:#2f6fe4;background:#fff;border-radius:8px;padding:4px 12px;font-size:13.5px;cursor:pointer;touch-action:manipulation}
.so-empty{padding:18px 0;text-align:center;color:#15803d}
.ssl-top .so-badge{flex:0 0 auto;margin-right:6px;padding:4px 10px;border-radius:999px;border:1px solid #f5c26b;font-size:12.5px;white-space:nowrap;cursor:pointer;touch-action:manipulation}
.so-badge[hidden]{display:none!important}
.so-btn.so-btn-muted{border-color:#c9ced8;color:#5b6475}
