/* ==========================================================================
   三年教育 · 门店学习系统  UI 主题 v102
   设计语言：深墨绿侧栏 + 白色内容区 + 青绿主色 + 暖橙强调
   加载顺序：styles.css → operations.css → theme-v102.css（本文件最后加载）

   选择器前缀说明
   -------------
   原样式里有一批 .operations-ui .xxx（特异性 0,2,0）和 .operations-ui #main-content
   （1,1,0）的规则，单靠 .xxx 压不过。本文件统一用 body[class][class] 前缀
   （0,2,x / 1,2,x）保证覆盖，同时不影响 HTML 结构，回滚只需删掉 index.html 的 link。
   ========================================================================== */

/* ---------- 1. 设计令牌 ---------- */
:root {
  --ink: #111c19;
  --ink-soft: #5a6863;
  --surface: #ffffff;
  --canvas: #f3f5f4;
  --line: #dee5e1;
  --line-strong: #c2ccc7;
  --brand: #0f8a72;
  --brand-dark: #0a6e5b;
  --brand-soft: #e3f3ee;
  --accent: #ee7a3c;
  --accent-soft: #fdece2;
  --danger: #c13c4a;
  --danger-soft: #fbe7e9;
  --success: #107a57;
  --success-soft: #dff2e9;
  --warning: #a96c13;
  --warning-soft: #fbeed7;
  --sidebar: #0c2a26;
  --shadow: 0 18px 44px rgba(9, 30, 26, 0.18);

  /* 侧栏专用 */
  --s-ink: #d9e4e0;
  --s-ink-soft: #8fa5a0;
  --s-line: rgba(255, 255, 255, 0.09);
  --s-active: #14a085;

  /* 圆角与字号 */
  --r-sm: 8px;
  --r-md: 10px;
  --r-lg: 14px;
  --r-pill: 999px;
  --card-shadow: 0 1px 2px rgba(16, 40, 34, 0.05);
  --card-shadow-hover: 0 8px 24px rgba(16, 40, 34, 0.09);

  font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
}

body {
  font-size: 15px;
  color: var(--ink);
  background: var(--canvas);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* ---------- 2. 侧栏（深墨绿） ---------- */
body[class][class] .sidebar {
  background: linear-gradient(180deg, #0d2f2a 0%, #0a241f 100%);
  color: var(--s-ink);
  border-right: 0;
  padding: 22px 14px 18px;
  box-shadow: inset -1px 0 rgba(255, 255, 255, 0.06);
}
body[class][class] .brand-lockup {
  border-bottom: 1px solid var(--s-line);
  padding: 0 10px 20px;
}
body[class][class] .brand-lockup strong {
  color: #ffffff;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.01em;
}
body[class][class] .brand-lockup span {
  color: var(--s-ink-soft);
  font-size: 12px;
  margin-top: 4px;
}
body[class][class] .brand-lockup img {
  border-radius: 10px;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.35);
}
body[class][class] .nav-group > small {
  color: #6d857f;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0 12px 7px;
}
body[class][class] .nav-item {
  min-height: 44px;
  border-radius: 10px;
  color: #bccbc6;
  font-size: 14.5px;
  font-weight: 500;
  padding: 8px 11px;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 3px;
  transition: background 0.15s, color 0.15s;
}
body[class][class] .nav-item span {
  width: 26px;
  height: 26px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  background: rgba(255, 255, 255, 0.05);
  color: #9db2ac;
  border-radius: 8px;
  font-size: 12px;
}
body[class][class] .nav-item b {
  font-weight: inherit;
}
body[class][class] .nav-item:hover {
  background: rgba(255, 255, 255, 0.07);
  color: #ffffff;
}
body[class][class] .nav-item:hover span {
  border-color: rgba(255, 255, 255, 0.3);
  color: #ffffff;
}
body[class][class] .nav-item.active {
  background: linear-gradient(90deg, #14a085 0%, #0d7a66 100%);
  color: #ffffff;
  font-weight: 700;
  box-shadow: 0 8px 20px rgba(6, 62, 50, 0.5), inset 0 1px rgba(255, 255, 255, 0.18);
}
body[class][class] .nav-item.active span {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.34);
  color: #ffffff;
}
body[class][class] .sidebar-foot {
  border-top: 1px solid var(--s-line);
  padding: 16px 10px 0;
}
body[class][class] .sidebar-foot span {
  color: #6d857f;
  font-size: 11.5px;
}
body[class][class] .sidebar-foot button {
  color: #bccbc6;
  font-size: 13px;
}
body[class][class] .sidebar-foot button:hover {
  color: #ffffff;
  text-decoration: none;
}
body[class][class] .operations-nav-more {
  border-top: 1px solid var(--s-line);
}
body[class][class] .operations-nav-more > summary {
  color: var(--s-ink-soft);
  font-size: 13px;
}

/* ---------- 3. 顶栏 ---------- */
body[class][class] .topbar {
  height: 74px;
  background: rgba(255, 255, 255, 0.88);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--line);
  padding: 0 30px;
  gap: 18px;
}
body[class][class] .page-heading p {
  font-size: 12.5px;
  color: #7c8a85;
  letter-spacing: 0.02em;
  margin-bottom: 3px;
}
body[class][class] .page-heading h1 {
  font-size: 21px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink);
}
body[class][class] .compact-select {
  font-size: 12.5px;
  color: #7c8a85;
}
body[class][class] .compact-select select {
  min-height: 38px;
  font-size: 13.5px;
  border-radius: var(--r-md);
  background: #f6f8f7;
  border-color: transparent;
  color: var(--ink);
  font-weight: 550;
}
body[class][class] .compact-select select:hover {
  background: #eef3f1;
}
body[class][class] .user-chip {
  border-left-color: var(--line);
  padding-left: 15px;
}
body[class][class] .user-chip > span {
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, #123f38, #0f8a72);
  color: #ffffff;
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(12, 42, 38, 0.28);
}
body[class][class] .user-chip strong {
  font-size: 13.5px;
  font-weight: 650;
}
body[class][class] .user-chip small {
  font-size: 11.5px;
  color: #7c8a85;
}
body[class][class] .notification-button {
  border-radius: var(--r-md);
  border-color: var(--line);
  background: #f6f8f7;
}
body[class][class] .mobile-menu,
body[class][class] .icon-button {
  border-radius: var(--r-md);
}

/* ---------- 4. 内容区与页面标题 ---------- */
body[class][class] main,
body[class][class] #main-content {
  padding: 28px 30px 60px;
  max-width: 1480px;
  margin: 0 auto;
  width: 100%;
}
body[class][class] h2 {
  font-size: 25px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
body[class][class] h3 {
  font-size: 17px;
  font-weight: 700;
}
body[class][class] h4 {
  font-size: 15px;
  font-weight: 650;
  color: #43514c;
}
body[class][class] p {
  font-size: 14px;
  line-height: 1.65;
}
body[class][class] small {
  font-size: 13px;
}
body[class][class] .muted {
  color: #6b7974;
}
body[class][class] .eyebrow {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brand);
}
body[class][class] .section-toolbar {
  margin-bottom: 24px;
}
body[class][class] .section-toolbar h2 {
  font-size: 25px;
  margin-bottom: 6px;
}
body[class][class] .section-toolbar p {
  font-size: 14px;
  color: #6b7974;
}
body[class][class] .result-count {
  font-size: 12.5px;
  color: #6b7974;
  background: #f0f4f2;
  border-radius: var(--r-pill);
  padding: 4px 11px;
}

/* ---------- 5. 卡片与面板 ---------- */
body[class][class] .data-section,
body[class][class] .attention-panel,
body[class][class] .task-panel,
body[class][class] .operations-day-courses,
body[class][class] .operations-entry-card,
body[class][class] .lesson-attendance-card,
body[class][class] .student-filter-panel,
body[class][class] .table-wrap,
body[class][class] .student-worklist,
body[class][class] .student-task-column,
body[class][class] .student-current-column,
body[class][class] .student-session-column,
body[class][class] .profile-panel,
body[class][class] .progress-card,
body[class][class] .weekly-report,
body[class][class] .weekly-card,
body[class][class] .assign-pane,
body[class][class] .parent-weekly-latest,
body[class][class] .parent-weekly-item,
body[class][class] .course-library-page,
body[class][class] .course-library-toolbar,
body[class][class] .course-library-node-list,
body[class][class] .library-node,
body[class][class] .assignment-card,
body[class][class] .summary-strip,
body[class][class] .schedule-summary,
body[class][class] .detail-overview,
body[class][class] .consumption-summary,
body[class][class] .consumption-review-content,
body[class][class] .student-class-record,
body[class][class] .arrival-plan-workspace,
body[class][class] .plan-review-preview,
body[class][class] .lesson-attendance-section {
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--card-shadow);
}
body[class][class] .operations-entry-card {
  padding: 24px;
  transition: border-color 0.16s, box-shadow 0.16s, transform 0.16s;
}
body[class][class] button.operations-entry-card:hover {
  border-color: #9ecbbf;
  box-shadow: var(--card-shadow-hover);
  transform: translateY(-2px);
  background: #ffffff;
}
body[class][class] .section-heading {
  min-height: 64px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--line);
}
body[class][class] .section-heading h3 {
  font-size: 17px;
  font-weight: 700;
  margin-bottom: 3px;
}
body[class][class] .section-heading p {
  font-size: 13px;
  color: #6b7974;
  line-height: 1.55;
}
body[class][class] .data-section > header,
body[class][class] .panel-head {
  border-bottom-color: var(--line);
}
/* 卡片头部浅底：让「标题区 / 内容区」有层次，而不是一片纯白 */
body[class][class] .data-section,
body[class][class] .task-panel,
body[class][class] .attention-panel,
body[class][class] .weekly-report,
body[class][class] .student-worklist {
  overflow: hidden;
}
body[class][class] .section-heading,
body[class][class] .worklist-head {
  background: linear-gradient(180deg, #fbfdfc 0%, #f7faf9 100%);
}
body[class][class] .worklist-head {
  padding: 16px 20px;
}

/* ---------- 6. 按钮 ---------- */
body[class][class] .primary {
  min-height: 42px;
  padding: 9px 18px;
  border-radius: var(--r-md);
  border: 1px solid var(--brand);
  background: var(--brand);
  color: #ffffff;
  font-size: 14.5px;
  font-weight: 600;
  box-shadow: 0 2px 8px rgba(15, 138, 114, 0.26);
  transition: background 0.15s, box-shadow 0.15s, transform 0.1s;
}
body[class][class] .primary:hover {
  background: var(--brand-dark);
  border-color: var(--brand-dark);
  box-shadow: 0 4px 14px rgba(15, 138, 114, 0.32);
}
body[class][class] .primary:active {
  transform: translateY(1px);
}
body[class][class] .secondary {
  min-height: 42px;
  padding: 9px 16px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-strong);
  background: var(--surface);
  color: var(--ink);
  font-size: 14.5px;
  font-weight: 550;
}
body[class][class] .secondary:hover {
  border-color: var(--brand);
  color: var(--brand);
  background: #f5fbf9;
}
body[class][class] .text-button {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--brand);
}
body[class][class] .small,
body[class][class] .primary.small,
body[class][class] .secondary.small {
  min-height: 36px;
  padding: 6px 14px;
  font-size: 13.5px;
  border-radius: var(--r-sm);
}
body[class][class] .row-action {
  min-height: 34px;
  padding: 6px 14px;
  border-radius: var(--r-pill);
  border: 1px solid var(--line-strong);
  background: var(--surface);
  color: #3f4e4a;
  font-size: 13px;
  font-weight: 600;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
body[class][class] .row-action:hover {
  border-color: var(--brand);
  color: var(--brand);
  background: #f4fbf8;
}
body[class][class] .help-button {
  border-radius: var(--r-pill);
  font-size: 13px;
}

/* ---------- 7. 表单 ---------- */
body[class][class] input,
body[class][class] select,
body[class][class] textarea {
  border-radius: var(--r-md);
  border-color: var(--line-strong);
  font-size: 14.5px;
  color: var(--ink);
  background: #ffffff;
}
body[class][class] input:focus,
body[class][class] select:focus,
body[class][class] textarea:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(15, 138, 114, 0.14);
}
body[class][class] label {
  font-size: 13.5px;
  font-weight: 600;
  color: #3f4e4a;
}
body[class][class] .form-hint,
body[class][class] .filter-check,
body[class][class] .weekly-check,
body[class][class] .account-pending-filter {
  font-size: 13px;
  font-weight: 500;
  color: #55635e;
}

/* ---------- 8. 表格 ---------- */
body[class][class] table th {
  background: #f6f9f7;
  color: #66746f;
  font-size: 12.5px;
  font-weight: 650;
  letter-spacing: 0.02em;
  padding: 13px 16px;
  border-bottom: 1px solid var(--line);
}
body[class][class] table td {
  font-size: 14.5px;
  padding: 14px 16px;
  border-bottom: 1px solid #eef2f0;
}
body[class][class] table tbody tr:last-child td {
  border-bottom: 0;
}
body[class][class] table tbody tr:hover {
  background: #f8fbfa;
}

/* ---------- 9. 指标与统计 ---------- */
body[class][class] .metric {
  border-radius: var(--r-lg);
  box-shadow: var(--card-shadow);
  padding: 18px 20px;
  min-height: 108px;
}
body[class][class] .metric::after {
  border-radius: 0 3px 3px 0;
}
body[class][class] .metric span {
  font-size: 13px;
  color: #6b7974;
  margin-bottom: 12px;
}
body[class][class] .metric strong {
  font-size: 30px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.05;
}
body[class][class] .metric small {
  font-size: 12.5px;
  color: #7c8a85;
  margin-top: 8px;
}
body[class][class] .student-status-strip {
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--card-shadow);
  overflow: hidden;
}
body[class][class] .student-status-item {
  padding: 15px 18px;
  border-right: 1px solid var(--line);
}
body[class][class] .student-status-item span {
  font-size: 12.5px;
  color: #6b7974;
}
body[class][class] .student-status-item strong {
  font-size: 16px;
  font-weight: 700;
  margin-top: 4px;
}
body[class][class] .schedule-summary > div {
  padding: 15px 18px;
  border-right: 1px solid var(--line);
}
body[class][class] .schedule-summary span {
  font-size: 12.5px;
  color: #6b7974;
}
body[class][class] .schedule-summary strong {
  font-size: 20px;
  font-weight: 700;
}
body[class][class] .lesson-attendance-time strong {
  font-size: 21px;
  font-weight: 700;
  color: var(--brand);
}
body[class][class] .lesson-attendance-main strong {
  font-size: 16px;
  font-weight: 650;
}
body[class][class] .lesson-attendance-main span,
body[class][class] .lesson-attendance-main small {
  font-size: 12.5px;
  color: #6b7974;
}

/* ---------- 10. 列表行 ---------- */
body[class][class] .worklist-head h3 {
  font-size: 19px;
  font-weight: 700;
}
body[class][class] .worklist-head p {
  font-size: 13.5px;
}
body[class][class] .worklist-chip {
  border-radius: var(--r-md);
  padding: 8px 13px;
  background: #eaf5f1;
}
body[class][class] .worklist-chip strong {
  font-size: 20px;
  font-weight: 700;
  color: #0b6a56;
}
body[class][class] .worklist-chip span {
  font-size: 12.5px;
  color: #5a6863;
}
body[class][class] .worklist-chip.pending {
  background: #fdf1e6;
}
body[class][class] .worklist-chip.pending strong {
  color: #a9660f;
}
body[class][class] .worklist-chip.warn {
  background: #fbe8eb;
}
body[class][class] .worklist-chip.warn strong {
  color: var(--danger);
}
body[class][class] .worklist-row {
  min-height: 60px;
  padding: 11px 15px;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  background: #fdfffe;
  transition: border-color 0.15s, box-shadow 0.15s;
}
body[class][class] .worklist-row:hover {
  border-color: #b7d8ce;
  box-shadow: 0 4px 14px rgba(16, 40, 34, 0.06);
}
body[class][class] .worklist-row .worklist-date {
  font-size: 13px;
  color: #6b7974;
}
body[class][class] .worklist-row strong {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.45;
}
body[class][class] .worklist-row small {
  font-size: 13px;
  color: #6b7974;
}
body[class][class] .schedule-row {
  font-size: 14.5px;
  padding: 16px 20px;
  border-bottom: 1px solid #eef2f0;
}
body[class][class] .schedule-student strong {
  font-size: 14.5px;
  font-weight: 600;
}
body[class][class] .schedule-student span {
  font-size: 12.5px;
  color: #6b7974;
  margin-top: 3px;
}
body[class][class] .personal-task-row {
  min-height: 66px;
  border-bottom: 1px solid var(--line);
}
body[class][class] .personal-task-row strong {
  font-size: 15px;
  font-weight: 600;
}
body[class][class] .assignment-card {
  padding: 16px 18px;
  gap: 14px;
}
body[class][class] .review-content strong {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.45;
}
body[class][class] .review-content small {
  font-size: 13px;
  color: #6b7974;
  margin-top: 3px;
}
body[class][class] .assignment-meta span {
  font-size: 12.5px;
  color: #6b7974;
  line-height: 1.45;
}
body[class][class] .library-node {
  min-height: 74px;
  padding: 14px 16px;
}
body[class][class] .library-node-content h3,
body[class][class] .library-node-content strong {
  font-size: 15.5px;
  font-weight: 600;
}
body[class][class] .library-node-content p,
body[class][class] .library-node-content small {
  font-size: 13px;
  color: #6b7974;
}
body[class][class] .library-node-icon {
  width: 40px;
  height: 40px;
  border-radius: var(--r-md);
  background: var(--brand-soft);
  color: var(--brand);
  font-size: 18px;
}
body[class][class] .library-node-action {
  border-radius: var(--r-sm);
  font-size: 13.5px;
  background: var(--brand);
  border-color: var(--brand);
}
body[class][class] .course-library-title strong {
  font-size: 16px;
}
body[class][class] .course-library-title span,
body[class][class] .course-library-summary span {
  font-size: 13px;
  color: #6b7974;
}
body[class][class] .course-library-summary {
  min-height: 60px;
  padding: 0 20px;
}
body[class][class] .course-library-search {
  font-size: 13px;
}
body[class][class] .course-library-pagination {
  font-size: 13px;
  color: #6b7974;
}

/* ---------- 10.5 状态修饰（避免主题覆盖掉「已发送 / 需订正 / 危险操作」等语义色） ---------- */
body[class][class] .worklist-row.needs_revision,
body[class][class] .worklist-row.overdue {
  border-color: #ecc9c2;
  background: #fffaf8;
}
body[class][class] .weekly-card.sent {
  background: #f4fbf7;
  border-color: #c9e6d6;
}
body[class][class] .row-action.danger {
  color: var(--danger);
  border-color: #e8c2c7;
}
body[class][class] .row-action.danger:hover {
  background: #fdf1f2;
  border-color: var(--danger);
}
body[class][class] .row-action.primary-row {
  background: var(--brand);
  border-color: var(--brand);
  color: #ffffff;
}
body[class][class] .row-action.primary-row:hover {
  background: var(--brand-dark);
  border-color: var(--brand-dark);
  color: #ffffff;
}
body[class][class] button.library-node:hover {
  border-color: var(--brand);
  background: #f7fcfa;
  box-shadow: 0 6px 18px rgba(16, 40, 34, 0.07);
}
body[class][class] .operations-qty-full,
body[class][class] .badge.warn {
  color: #a9660f;
}

/* ---------- 11. 徽章 / 标签页 / 筛选 ---------- */body[class][class] .badge {
  border-radius: var(--r-pill);
  font-size: 12px;
  font-weight: 600;
  padding: 4px 11px;
}
body[class][class] .worklist-chip,
body[class][class] .parent-weekly-chip,
body[class][class] .weekly-chip,
body[class][class] .knowledge-chips span {
  border-radius: var(--r-pill);
}
body[class][class] .parent-weekly-chip,
body[class][class] .weekly-chip {
  font-size: 12.5px;
  color: #3f4e4a;
  background: #f2f6f4;
  border: 1px solid #e3eae7;
  padding: 4px 12px;
}
body[class][class] .knowledge-chips span {
  font-size: 12.5px;
  background: var(--brand-soft);
  color: #0b5a4a;
  padding: 5px 12px;
}
body[class][class] .review-tabs button {
  font-size: 13.5px;
  font-weight: 600;
  padding: 9px 16px;
  border-radius: var(--r-pill);
  border: 1px solid transparent;
  color: #5a6863;
  background: transparent;
}
body[class][class] .review-tabs button:hover {
  background: #f0f5f3;
  color: var(--ink);
}
body[class][class] .review-tabs button.active {
  background: var(--brand);
  border-color: var(--brand);
  color: #ffffff;
  box-shadow: 0 3px 10px rgba(15, 138, 114, 0.24);
}
body[class][class] .segmented-control {
  border-radius: var(--r-md);
  border-color: var(--line);
}
body[class][class] .segmented-control button {
  font-size: 14px;
  color: #55635e;
}
body[class][class] .segmented-control button:hover {
  background: #f0f5f3;
}

/* ---------- 12. 空状态 / 进度 / 提示 ---------- */
body[class][class] .empty-step,
body[class][class] .locked-task-message {
  color: #6b7974;
}
body[class][class] .locked-task-message {
  min-height: 230px;
}
body[class][class] .locked-task-message strong {
  font-size: 17px;
  font-weight: 650;
  color: var(--ink);
}
body[class][class] .locked-task-message p {
  font-size: 13.5px;
  max-width: 380px;
  margin-top: 9px;
}
body[class][class] .empty-state strong {
  font-size: 15px;
  font-weight: 600;
}
body[class][class] .empty-state p {
  font-size: 13px;
  color: #6b7974;
}
body[class][class] progress {
  accent-color: var(--brand);
  border-radius: var(--r-pill);
}
body[class][class] .student-column-heading {
  padding: 15px 18px;
}
body[class][class] .student-column-heading h2 {
  font-size: 17px;
  font-weight: 700;
}
body[class][class] .student-column-heading span {
  font-size: 12.5px;
  color: #6b7974;
}
body[class][class] .student-session-column h3 {
  font-size: 15px;
  font-weight: 650;
}
body[class][class] .student-session-column p,
body[class][class] .note-checklist li {
  font-size: 13px;
  color: #55635e;
  line-height: 1.65;
}
body[class][class] .study-timer {
  font-size: 30px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--brand);
}

/* ---------- 13. 个人中心 / 成绩 ---------- */
body[class][class] .profile-panel {
  padding: 20px 22px;
}
body[class][class] .profile-panel h3 {
  font-size: 17px;
  font-weight: 700;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
body[class][class] .profile-row {
  min-height: 52px;
  padding: 13px 0;
  border-bottom: 1px dashed #e3eae6;
}
body[class][class] .profile-panel .profile-row:last-of-type {
  border-bottom: 0;
}
body[class][class] .profile-row span {
  font-size: 13.5px;
  color: #6b7974;
}
body[class][class] .profile-row strong {
  font-size: 14.5px;
  font-weight: 600;
}
body[class][class] .profile-actions .secondary {
  min-height: 46px;
  justify-content: flex-start;
  text-align: left;
  padding-inline: 16px;
  background: #f7faf9;
  font-size: 14.5px;
}
body[class][class] .profile-actions .secondary:hover {
  background: #eaf5f1;
}
body[class][class] .progress-card {
  min-height: 152px;
  padding: 19px 20px;
}
body[class][class] .progress-card h3 {
  font-size: 14.5px;
  font-weight: 650;
  color: #55635e;
  margin-bottom: 14px;
}
body[class][class] .progress-card p {
  font-size: 13px;
  color: #6b7974;
  line-height: 1.6;
  margin-top: 10px;
}
body[class][class] .progress-card strong {
  font-size: 30px;
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* ---------- 14. 周报（老师端 / 家长端） ---------- */
/* 派课页的分段选择与勾选行，原本是蓝色系，统一到主色 */
body[class][class] .assign-tabs button {
  border-radius: var(--r-md);
  border-color: var(--line);
  font-size: 13.5px;
  font-weight: 600;
}
body[class][class] .assign-tabs button.active {
  border-color: var(--brand);
  background: var(--brand-soft);
  color: #0b5a4a;
}
body[class][class] .assign-row {
  border-radius: var(--r-md);
  border-color: var(--line);
  background: #ffffff;
}
body[class][class] .assign-row:hover {
  border-color: #b7d8ce;
  background: #f8fbfa;
}
body[class][class] .assign-row.checked {
  border-color: var(--brand);
  background: #f1faf7;
}
/* 勾选框必须给死宽度：勾选框没有内容宽度，处在 flex 行里会被拉伸成整行宽，
   导致同行文字容器被挤成 0 宽（文字一字一行，整行变成一片空白） */
body[class][class] .assign-row > input[type="checkbox"],
body[class][class] .assign-row > input[type="radio"],
body[class][class] .assign-row-main > input[type="checkbox"],
body[class][class] .assign-row-main > input[type="radio"],
body[class][class] .assign-chapter-label > input[type="checkbox"] {
  flex: 0 0 17px;
  width: 17px;
  height: 17px;
  min-width: 17px;
  max-width: 17px;
  margin: 3px 0 0;
  accent-color: var(--brand);
}
body[class][class] .assign-chapter-label > input[type="checkbox"] {
  margin: 0;
}
body[class][class] .assign-row-body {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
}
/* 标题与副信息各占一行，不要挤在同一行 */
body[class][class] .assign-row-body > .assign-row-title,
body[class][class] .assign-row-body > .assign-row-meta {
  display: block;
}
body[class][class] .assign-row-title {
  font-size: 14px;
  line-height: 1.45;
}
body[class][class] .assign-row-meta {
  margin-top: 3px;
  font-size: 12.5px;
}
body[class][class] .assign-summary div {
  border-radius: var(--r-md);
  background: #f4f8f6;
}
body[class][class] .parent-child-chip {
  border-radius: var(--r-md);
  border-color: var(--line);
  font-size: 14px;
  font-weight: 600;
  padding: 9px 15px;
  transition: border-color 0.15s, background 0.15s;
}
body[class][class] .parent-child-chip small {
  font-size: 12px;
  color: #6b7974;
}
body[class][class] .parent-child-chip:hover {
  border-color: #9ecbbf;
}
body[class][class] .parent-child-chip.active {
  border-color: var(--brand);
  background: var(--brand-soft);
  color: #0b5a4a;
}
body[class][class] .parent-weekly-latest {
  padding: 20px 22px;
}
body[class][class] .parent-weekly-latest > header h3 {
  font-size: 19px;
  font-weight: 700;
}
body[class][class] .parent-weekly-week {
  font-size: 12.5px;
  color: #0b5a4a;
  background: var(--brand-soft);
}
body[class][class] .parent-weekly-text {
  font-size: 14.5px;
  line-height: 1.9;
  color: #2b3633;
}
body[class][class] .parent-weekly-text p {
  font-size: 14.5px;
}
body[class][class] .parent-weekly-latest blockquote,
body[class][class] .parent-weekly-item blockquote {
  border-left: 3px solid var(--accent);
  background: #fffaf6;
  font-size: 13.5px;
}
body[class][class] .parent-weekly-pending {
  background: #f7f9f8;
  border-color: #d7e0dc;
  font-size: 13.5px;
}
body[class][class] .weekly-toolbar input[type="date"],
body[class][class] .weekly-toolbar input[type="search"],
body[class][class] .weekly-toolbar select {
  border-radius: var(--r-md);
  border-color: var(--line-strong);
  font-size: 13.5px;
}
body[class][class] .weekly-text {
  border-radius: var(--r-md);
  border-color: var(--line-strong);
  font-size: 14px;
  line-height: 1.75;
}
body[class][class] .weekly-card > header strong {
  font-size: 15.5px;
  font-weight: 650;
}
body[class][class] .weekly-sent,
body[class][class] .weekly-draft {
  font-size: 12.5px;
  font-weight: 600;
}

/* ---------- 15. 弹窗 / 提示 ---------- */
body[class][class] dialog {
  border-radius: 18px;
  border: 1px solid var(--line);
  box-shadow: 0 30px 80px rgba(9, 30, 26, 0.28);
}
body[class][class] .dialog-head h2 {
  font-size: 21px;
  font-weight: 700;
}
body[class][class] .dialog-form {
  font-size: 14.5px;
}
body[class][class] .toast-region > * {
  border-radius: var(--r-md);
}
body[class][class] .consume-warning,
body[class][class] .consumption-review-warnings {
  border-radius: var(--r-md);
}

/* ---------- 16. 登录页 ---------- */
.login-screen {
  background: var(--canvas);
}
.login-brand {
  background: linear-gradient(160deg, #0d2f2a 0%, #123f38 55%, #0a241f 100%);
}
.login-brand .eyebrow {
  color: #5ecfb2;
  font-size: 11.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.login-brand h1 {
  font-size: 40px;
  font-weight: 750;
  letter-spacing: -0.015em;
}
.login-brand > p:not(.eyebrow) {
  color: #b6c9c4;
  font-size: 15.5px;
  line-height: 1.8;
}
.login-facts dt {
  font-size: 28px;
  font-weight: 700;
}
.login-facts dd {
  color: #90a8a2;
  font-size: 12.5px;
}
.login-panel {
  border-radius: 16px;
  border: 1px solid var(--line);
  box-shadow: 0 24px 60px rgba(9, 30, 26, 0.12);
  padding: 38px;
}
.login-panel h2 {
  font-size: 24px;
  font-weight: 700;
}
.login-panel-head {
  font-size: 12.5px;
  font-weight: 600;
}
.login-panel > .muted {
  font-size: 14px;
}
.quick-accounts button {
  border-radius: var(--r-pill);
  border-color: var(--line);
  background: #f4f7f6;
  font-size: 12.5px;
  padding: 6px 12px;
}
.quick-accounts button:hover {
  border-color: var(--brand);
  background: var(--brand-soft);
  color: var(--brand-dark);
}

/* ---------- 17. 移动端 ---------- */
@media (max-width: 900px) {
  body[class][class] .topbar {
    height: auto;
    min-height: 66px;
    padding: 10px 16px;
  }
  body[class][class] .sidebar {
    box-shadow: 0 24px 60px rgba(9, 30, 26, 0.4);
  }
  body[class][class] .mobile-bottom-nav {
    background: #0c2a26;
    border-top: 0;
    box-shadow: 0 -10px 30px rgba(9, 30, 26, 0.28);
    height: 70px;
  }
  body[class][class] .mobile-bottom-nav button {
    color: #8ba39d;
    font-size: 10.5px;
    font-weight: 600;
  }
  body[class][class] .mobile-bottom-nav button span {
    border-radius: 8px;
    color: #8ba39d;
  }
  body[class][class] .mobile-bottom-nav button.active {
    color: #5ecfb2;
    font-weight: 750;
  }
  body[class][class] .mobile-bottom-nav button.active span {
    background: rgba(94, 207, 178, 0.16);
    color: #5ecfb2;
  }
  body[class][class] .toast-region {
    bottom: calc(86px + env(safe-area-inset-bottom));
  }
}

@media (max-width: 680px) {
  body {
    font-size: 14.5px;
  }
  body[class][class] main,
  body[class][class] #main-content {
    padding: 20px 14px 96px;
  }
  body[class][class] .page-heading h1 {
    font-size: 19px;
  }
  body[class][class] h2,
  body[class][class] .section-toolbar h2 {
    font-size: 21px;
  }
  body[class][class] h3,
  body[class][class] .section-heading h3 {
    font-size: 16px;
  }
  body[class][class] p {
    font-size: 13.5px;
  }
  body[class][class] table td {
    font-size: 14px;
  }
  body[class][class] .metric strong {
    font-size: 26px;
  }
  body[class][class] .study-timer {
    font-size: 26px;
  }
  body[class][class] .progress-card strong {
    font-size: 26px;
  }
  body[class][class] .section-heading {
    min-height: 58px;
    padding: 14px 16px;
  }
  /* 手机端任务行：按钮收窄，标题不再被挤成两行 */
  body[class][class] .worklist-row {
    grid-template-columns: 40px minmax(0, 1fr) auto;
    gap: 8px;
    padding: 10px 12px;
  }
  body[class][class] .worklist-row strong {
    font-size: 14.5px;
  }
  body[class][class] .row-action {
    min-height: 32px;
    padding: 5px 11px;
    font-size: 12.5px;
  }
  body[class][class] .worklist-chip {
    padding: 6px 10px;
  }
  body[class][class] .worklist-chip strong {
    font-size: 17px;
  }
}

/* 打印：去掉主题带来的阴影与渐变底，保持白纸黑字 */
@media print {
  body[class][class] .data-section,
  body[class][class] .task-panel,
  body[class][class] .attention-panel,
  body[class][class] .weekly-report,
  body[class][class] .student-worklist,
  body[class][class] .section-heading,
  body[class][class] .worklist-head {
    box-shadow: none;
    background: #ffffff;
  }
}

/* 减少动效偏好 */
@media (prefers-reduced-motion: reduce) {
  body[class][class] .operations-entry-card:hover,
  body[class][class] .worklist-row:hover,
  body[class][class] .primary:active {
    transform: none;
  }
}

/* ---------- 学生列表按年级分组（v138） ---------- */
body[class][class] table tbody tr.student-grade-row td {
  padding: 8px 16px;
  background: #eef2f1;
  border-bottom: 1px solid var(--line);
}
body[class][class] table tbody tr.student-grade-row:hover {
  background: transparent;
}
body[class][class] .student-row-actions {
  flex-wrap: nowrap;
  justify-content: flex-end;
}
body[class][class] .student-cell,
body[class][class] #students-body td.student-last-date {
  white-space: nowrap;
}
body[class][class] .student-cell small {
  font-size: 12px;
  letter-spacing: 0;
}
