/* 教师教学工作台 · 界面升级层（在 app.css 之后加载）
   目标：从"一堆表格"变成一套完整的工作台程序：统一的工具条、卡片、状态色、文稿纸 */

/* ---------- 整体质感 ---------- */
html, body { background: #EDF1EE; }

.topbar {
  height: 64px;
  background: linear-gradient(118deg, #0C4038 0%, #0F4C43 42%, #16705F 100%);
  box-shadow: 0 3px 18px rgba(10, 45, 38, .24);
}
.topbar .logo { font-size: 18px; }
.topbar .tb-sub {
  padding-left: 14px; margin-left: 6px;
  border-left: 1px solid rgba(255,255,255,.18);
}
.topbar .tb-state {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 10px;
  border-radius: 999px;
  background: rgba(255,255,255,.10);
  font-size: 12px;
  color: rgba(255,255,255,.92);
}
.tb-dot { width: 7px; height: 7px; border-radius: 50%; background: #FFC857; }
.tb-dot.ok { background: #4BE3B0; box-shadow: 0 0 8px rgba(75,227,176,.85); }
.tb-dot.off { background: #E57373; }
.topbar .tb-today { font-size: 12.5px; color: rgba(255,255,255,.78); letter-spacing: .02em; }
.topbar .tb-div { width: 1px; height: 18px; background: rgba(255,255,255,.18); }

.sidebar {
  background: linear-gradient(180deg, #FBFCFA, #F5F7F4);
  border-right: 1px solid #E1E6E1;
  padding-top: 18px;
}
.sidebar-head h2 { font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase; }

.class-card {
  border-radius: 12px;
  border-color: #E4E9E4;
  box-shadow: 0 1px 0 #FFF inset;
  position: relative;
}
.class-card::after {
  content: '';
  position: absolute; right: 12px; bottom: 12px;
  width: 7px; height: 7px; border-radius: 50%;
  background: #D6DEDA;
}
.class-card.active { background: #fff; border-color: var(--brand-2); box-shadow: 0 8px 22px -14px rgba(15,76,67,.5); }
.class-card.active::before {
  content: ''; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px;
  border-radius: 0 3px 3px 0; background: var(--brand-2);
}
.class-card.active::after { background: var(--brand-2); box-shadow: 0 0 0 3px rgba(40,168,140,.18); }

.content { padding: 20px 26px 56px; }

/* ---------- 标题区（页面工具条） ---------- */
.section-head {
  align-items: center;
  padding: 14px 18px;
  margin: 0 0 16px;
  background: #fff;
  border: 1px solid #E6EAE6;
  border-radius: 12px;
  box-shadow: 0 6px 20px -18px rgba(15,76,67,.55);
}
.section-head h1 { font-size: 21px; }
.section-head h2 { color: var(--brand); font-size: 20px; }
.section-head .desc { margin-top: 3px; }

/* ---------- 页签：胶囊工具栏 ---------- */
.tabs {
  border: 0;
  border-radius: 12px;
  background: #fff;
  border: 1px solid #E6EAE6;
  padding: 6px;
  gap: 4px;
  box-shadow: 0 6px 18px -18px rgba(15,76,67,.6);
}
.tab {
  border: 0;
  border-radius: 8px;
  padding: 8px 13px;
  font-size: 13.5px;
  transition: background .14s, color .14s, box-shadow .14s;
}
.tab:hover { background: #F2F6F3; color: var(--brand); }
.tab.active {
  background: var(--brand);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 4px 12px -4px rgba(15,76,67,.55);
}

/* ---------- 卡片 / 统计 ---------- */
.card {
  border-radius: 12px;
  border: 1px solid #E6EAE6;
  box-shadow: 0 10px 28px -24px rgba(15,76,67,.6);
}
.card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.card-head .card-title { margin: 0; }

.stat {
  position: relative;
  overflow: hidden;
  border-radius: 12px;
  border: 1px solid #E6EAE6;
  background: #fff;
  box-shadow: 0 10px 24px -22px rgba(15,76,67,.65);
  padding-left: 18px;
}
.stat::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  background: var(--brand-2);
}
.stat:nth-child(2)::before { background: #4A90D9; }
.stat:nth-child(3)::before { background: var(--accent); }
.stat:nth-child(4)::before { background: #8E7BE8; }
.stat .s-value { font-size: 28px; letter-spacing: -.01em; }
.stat.stat-warn::before { background: var(--danger); }

.notice { border-radius: 10px; padding: 10px 14px; font-size: 13.5px; margin-bottom: 10px; }
.notice-warn { background: #FFF8E3; border: 1px solid #F6E3A8; color: #6E5400; }
.notice-danger { background: #FDECEA; border: 1px solid #F3C9C4; color: #7B241C; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }

/* ---------- 课次卡（教案） ---------- */
.plan-sum { display: flex; gap: 8px; margin: 0 0 12px; }
.plan-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 12px; }
.plan-card {
  display: flex; flex-direction: column; gap: 8px;
  text-align: left;
  padding: 14px 16px;
  border-radius: 12px;
  border: 1px solid #E6EAE6;
  background: #fff;
  box-shadow: 0 10px 24px -24px rgba(15,76,67,.7);
  transition: transform .08s, border-color .15s, box-shadow .15s;
}
.plan-card:hover { border-color: var(--brand-2); box-shadow: 0 12px 26px -18px rgba(15,76,67,.45); transform: translateY(-1px); }
.plan-card.done { border-left: 3px solid var(--brand-2); }
.plan-card-top { display: flex; align-items: center; justify-content: space-between; }
.plan-card-date { font-size: 12.5px; font-weight: 700; color: var(--brand-2); letter-spacing: .04em; }
.plan-card-topic { font-size: 15px; line-height: 1.45; color: var(--text); }
.plan-card-meta { font-size: 12px; color: var(--muted); }

/* ---------- 文稿纸：大纲 / 教案 ---------- */
.doc-backbar { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }

.doc-sticky {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px;
  margin-bottom: 10px;
  background: #FFFDF3;
  border: 1px solid #F2E4B0;
  border-left: 3px solid var(--accent);
  border-radius: 8px;
  font-size: 12.5px;
}
.doc-sticky-hint { color: #8A6A00; }

.doc-wrap {
  background:
    repeating-linear-gradient(45deg, #EDEFEA 0 6px, #E9EDE8 6px 12px);
  border: 1px solid #E1E6E1;
  border-radius: 12px;
  padding: 26px 18px;
  overflow-x: auto;
}

.doc-paper {
  width: 21cm;
  min-height: 29.7cm;
  margin: 0 auto;
  background: #fff;
  padding: 2cm 2.2cm 2.4cm;
  box-shadow: 0 2px 14px rgba(0,0,0,.12), 0 0 0 1px rgba(0,0,0,.04);
  font-family: "SimSun", "宋体", "Songti SC", serif;
  font-size: 15px;
  line-height: 1.78;
  color: #101010;
}

.doc-title {
  display: flex; align-items: center; justify-content: center;
  font-family: "SimHei", "黑体", sans-serif;
  font-size: 22px; font-weight: 700;
  letter-spacing: .02em;
  margin: 4px 0 20px;
}
.doc-quote { font-family: inherit; }

.doc-h2 {
  font-family: "SimHei", "黑体", sans-serif;
  font-size: 16.5px;
  font-weight: 700;
  margin: 20px 0 8px;
}
.doc-sub { font-size: 15px; font-weight: 700; margin: 10px 0 4px; }
.doc-body { margin: 4px 0 10px; }

.doc-cell {
  outline: none;
  min-height: 1.6em;
  padding: 0 2px;
  border-radius: 3px;
  transition: background .12s, box-shadow .12s;
  cursor: text;
}
.doc-cell:hover { background: #FFFDF2; box-shadow: inset 0 0 0 1px #F2E7B4; }
.doc-cell:focus { background: #FFFBEB; box-shadow: inset 0 0 0 1px var(--accent), 0 0 0 2px rgba(249,198,41,.18); }
.doc-cell:empty::before { content: attr(data-ph); color: #B9B9B9; font-style: italic; font-size: .9em; }
.doc-multiline { white-space: pre-wrap; min-height: 2.6em; }
.doc-inline { display: inline-block; min-width: 2.6em; }
.doc-num { text-align: center; font-variant-numeric: tabular-nums; }

.doc-table {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  border-collapse: collapse;
  margin: 6px 0 10px;
  font-size: 13.5px;
  table-layout: fixed;
}
.doc-table td, .doc-table th {
  border: 1px solid #222;
  padding: 5px 7px;
  vertical-align: top;
  line-height: 1.62;
  word-break: break-word;
}
.doc-table th { background: #F5F6F3; font-weight: 700; text-align: center; }
.doc-th { background: #FAFAF7; font-weight: 600; width: 16%; white-space: normal; }
.doc-small { font-size: 12.5px; }
.doc-tiny { font-size: 12.5px; }
.doc-op-cell { width: 34px; min-width: 34px; max-width: 34px; text-align: center; padding-left: 2px; padding-right: 2px; }

.doc-inline-label { color: #444; font-size: 12.5px; }

.doc-goal { margin: 6px 0 10px; }
.doc-goal-head {
  display: flex; align-items: center; justify-content: space-between;
  font-weight: 700; margin-bottom: 4px;
}
.doc-goal-row { display: flex; align-items: flex-start; gap: 8px; margin: 2px 0; }
.doc-goal-no { min-width: 2.6em; font-variant-numeric: tabular-nums; }

.doc-section { margin: 10px 0 16px; padding: 8px 0 4px; border-bottom: 1px dashed #D8D8D8; }
.doc-sec-title { display: flex; align-items: center; gap: 6px; font-weight: 700; margin-bottom: 4px; }
.doc-sec-name { font-weight: 700; min-width: 8em; }
.doc-sec-hours { font-weight: 400; font-size: 13.5px; }
.doc-hours-input { min-width: 2.2em; text-align: center; }
.doc-part { display: flex; gap: 6px; margin: 2px 0; align-items: flex-start; }
.doc-part-label { flex: 0 0 5.4em; font-weight: 600; color: #333; }
.doc-part .doc-cell { flex: 1 1 auto; }

.doc-method { display: flex; gap: 4px; align-items: flex-start; margin: 3px 0; }
.doc-method-no { min-width: 1.6em; }
.doc-method-name { font-weight: 600; }
.doc-method-desc { flex: 1 1 auto; }

.doc-ref { display: flex; gap: 6px; align-items: flex-start; margin: 2px 0; }
.doc-ref-no { min-width: 1.6em; }

.doc-add {
  display: inline-block;
  margin: 4px 0 10px;
  padding: 3px 10px;
  border: 1px dashed #B9C6C0;
  border-radius: 6px;
  background: transparent;
  color: var(--brand-2);
  font-size: 12.5px;
  font-family: inherit;
  cursor: pointer;
}
.doc-add:hover { background: #F1F7F4; border-color: var(--brand-2); }

.doc-mini {
  border: 0;
  background: transparent;
  color: #8A8A8A;
  font-size: 12px;
  padding: 0 4px;
  border-radius: 4px;
  cursor: pointer;
}
.doc-mini:hover { background: #F1F3F1; color: var(--brand); }
.doc-mini.danger:hover { background: #FDECEA; color: var(--danger); }

.doc-note { font-size: 12.5px; color: #6B7A75; margin: 4px 0 8px; }

.doc-sign { margin-top: 22px; display: flex; align-items: center; gap: 8px; font-size: 13.5px; }
.doc-sign-name { min-width: 6em; border-bottom: 1px solid #333; }

.doc-struct { font-size: 13.5px; }
.doc-struct-item { display: inline-flex; align-items: baseline; gap: 3px; margin-right: 6px; }
.doc-struct-name { font-weight: 600; }
.doc-struct-sep { color: #999; }

/* 教案 */
.doc-plan-paper { font-size: 15px; }
.doc-plan-title {
  text-align: center;
  font-family: "SimHei", "黑体", sans-serif;
  font-size: 24px;
  letter-spacing: .28em;
  font-weight: 700;
  margin: 0 0 12px;
}
.doc-plan-sub { display: flex; align-items: center; font-size: 14.5px; margin: 0 0 10px; }
.doc-plan-sub-val { font-weight: 600; min-width: 6em; }
.doc-plan-info .doc-th { width: 17%; background: #FAFAF7; }
.doc-plan-body { margin-top: 4px; }
.doc-plan-body td { vertical-align: top; }
.doc-plan-left, .doc-plan-right { padding: 8px 10px; }
.doc-plan-right { background: #FCFCFA; }
.doc-stage { padding: 4px 0 8px; border-bottom: 1px dashed #DDD; }
.doc-stage:last-child { border-bottom: 0; }
.doc-stage-r { border-bottom: 1px dashed #E6E6E6; }
.doc-stage-head {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; color: #333; margin-bottom: 3px;
}
.doc-stage-name { font-weight: 700; color: #111; }
.doc-stage-body { min-height: 2.4em; }
.doc-rline { display: flex; gap: 4px; align-items: flex-start; font-size: 13px; margin: 2px 0; }
.doc-rline .doc-multiline { flex: 1 1 auto; }
.doc-rlabel { flex: 0 0 3.4em; color: #555; font-size: 12.5px; padding-top: 1px; }
.doc-plan-foot {
  margin-top: 18px; display: flex; align-items: center; gap: 8px;
  font-size: 13.5px;
}
.doc-plan-foot .doc-sign-name { flex: 0 0 8em; }

/* ---------- 花样点名：流水灯 ---------- */
.rc-bar { margin-bottom: 12px; }

.rc-lamp-box {
  margin: 16px 0 6px;
  padding: 20px 18px 14px;
  border-radius: 16px;
  background:
    radial-gradient(120% 140% at 50% -20%, #1B6A5C 0%, #123F38 45%, #0B2B26 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08), 0 16px 40px -22px rgba(6,32,27,.9);
}

.rc-lamp { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }

.rc-lamp-cell {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px;
  min-height: 92px;
  padding: 10px 6px;
  border-radius: 12px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.10);
  color: #D8EDE7;
  opacity: .62;
  transform: scale(.96);
  transition: opacity .08s linear, transform .08s linear, background .2s;
  overflow: hidden;
}
.rc-lamp-cell .rc-lamp-seq { font-size: 11.5px; letter-spacing: .06em; opacity: .8; }
.rc-lamp-cell .rc-lamp-name {
  font-size: 19px; font-weight: 700; letter-spacing: .04em;
  white-space: nowrap; text-overflow: ellipsis; max-width: 100%;
}
.rc-lamp-cell.center {
  opacity: 1;
  transform: scale(1.06);
  background: linear-gradient(160deg, #FFDD73, var(--accent));
  border-color: #FFF0B8;
  color: #33270A;
  box-shadow: 0 0 0 4px rgba(249,198,41,.22), 0 10px 24px -8px rgba(249,198,41,.55);
}
.rc-lamp-cell.center .rc-lamp-seq { opacity: .7; }

.rc-lamp-dots { display: flex; justify-content: center; gap: 7px; margin-top: 12px; }
.rc-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: rgba(255,255,255,.22);
  transition: background .1s, box-shadow .1s;
}
.rc-dot.on { background: var(--accent); box-shadow: 0 0 8px rgba(249,198,41,.9); }

.rc-lamp-hint {
  margin-top: 12px; text-align: center;
  color: rgba(255,255,255,.72); font-size: 13px; letter-spacing: .06em;
}

.rc-main-row { display: flex; justify-content: center; margin: 16px 0 8px; }
.rc-main-btn {
  min-width: 260px;
  height: 66px;
  border: 0;
  border-radius: 999px;
  background: linear-gradient(160deg, #33BE9D, #1E947A);
  color: #fff;
  font-size: 21px;
  font-weight: 800;
  letter-spacing: .22em;
  cursor: pointer;
  box-shadow: 0 14px 30px -12px rgba(30,148,122,.75), inset 0 1px 0 rgba(255,255,255,.35);
  transition: transform .06s, box-shadow .18s, background .18s;
}
.rc-main-btn:hover { background: linear-gradient(160deg, #3ECCA9, #22A286); }
.rc-main-btn:active { transform: translateY(2px); box-shadow: 0 6px 16px -10px rgba(30,148,122,.8); }
.rc-main-btn.stop {
  background: linear-gradient(160deg, #FFD959, #F0B60B);
  color: #3A2C00;
  box-shadow: 0 14px 30px -12px rgba(240,182,11,.7), inset 0 1px 0 rgba(255,255,255,.5);
  animation: rcPulse 1.1s ease-in-out infinite;
}
.rc-main-btn:disabled { opacity: .7; animation: none; cursor: progress; }
@keyframes rcPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(249,198,41,.55), 0 14px 30px -12px rgba(240,182,11,.7); }
  50% { box-shadow: 0 0 0 12px rgba(249,198,41,0), 0 14px 30px -12px rgba(240,182,11,.7); }
}

.rc-result {
  max-width: 620px;
  margin: 18px auto 6px;
  padding: 18px 20px;
  border-radius: 14px;
  background: #fff;
  border: 1px solid #F0E2AC;
  box-shadow: 0 18px 46px -26px rgba(15,76,67,.55);
  text-align: center;
  animation: rcPop .28s cubic-bezier(.22,1.3,.4,1);
}
@keyframes rcPop {
  from { transform: scale(.92); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
.rc-result-head { display: flex; align-items: baseline; justify-content: center; gap: 12px; }
.rc-seq { font-size: 13px; color: var(--muted); letter-spacing: .08em; }
.rc-name { font-size: 32px; font-weight: 800; color: var(--brand); letter-spacing: .04em; }
.rc-hint { margin: 6px 0 12px; font-size: 13px; color: var(--muted); }
.rc-quality { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }

/* ---------- 画像图表 ---------- */
.pf-chart-card { padding-bottom: 8px; }
.pf-chart { width: 100%; min-height: 240px; }
.pf-detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.pf-total-big { font-size: 32px; font-weight: 800; color: var(--brand); line-height: 1; }

/* ---------- 响应式 ---------- */
@media (max-width: 1280px) {
  .doc-paper { transform-origin: top center; }
  .pf-detail-grid { grid-template-columns: 1fr; }
  .rc-lamp-cell .rc-lamp-name { font-size: 17px; }
}
@media (max-width: 900px) {
  .layout { grid-template-columns: 1fr; }
  .doc-paper { width: 100%; padding: 20px 16px; }
  .doc-wrap { padding: 14px 8px; }
  .rc-lamp { grid-template-columns: repeat(3, 1fr); }
  .rc-lamp-cell:first-child, .rc-lamp-cell:last-child { display: none; }
}

/* ===== 首页班级大卡 + 侧栏功能菜单（班级列表做主位，菜单走左侧）===== */
.home-classes { margin-bottom: 22px; }
.hc-head { display: flex; align-items: flex-end; gap: 14px; margin-bottom: 14px; }
.hc-head h1 { font-size: 20px; margin: 0; }
.class-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(258px, 1fr)); gap: 14px; }
.cg-card {
  background: #fff; border: 1px solid #e3e8e4; border-left: 4px solid #28a88c; border-radius: 14px;
  padding: 15px 16px 12px; cursor: pointer; box-shadow: 0 1px 2px rgba(16,44,36,.06);
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.cg-card:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(16,44,36,.13); border-color: #cfe3da; }
.cg-top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.cg-name { font-size: 15.5px; font-weight: 700; color: #123f33; line-height: 1.35; }
.cg-count { flex: none; font-size: 12px; color: #5d7a73; background: #f1f6f4; border-radius: 999px; padding: 2px 9px; }
.cg-course { margin-top: 7px; font-size: 13px; color: #40605a; }
.cg-meta { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; min-height: 21px; }
.cg-go { margin-top: 11px; font-size: 12.5px; color: #28a88c; font-weight: 600; }
.cg-empty { grid-column: 1 / -1; background: #fff; border: 1px dashed #ccdad4; border-radius: 14px; padding: 30px; text-align: center; color: #6b7f79; }

.side-nav { display: flex; flex-direction: column; gap: 2px; }
.sn-head { padding: 2px 8px 12px; border-bottom: 1px solid #e6ece8; margin-bottom: 8px; }
.sn-kicker { font-size: 10.5px; letter-spacing: .16em; color: #93a7a1; }
.sn-title { font-size: 14.5px; font-weight: 700; color: #123f33; margin-top: 4px; line-height: 1.35; }
.sn-sub { font-size: 12px; color: #6b7f79; margin-top: 3px; }
.sn-item {
  display: flex; align-items: center; gap: 9px; width: 100%; padding: 9px 10px;
  border: 0; background: transparent; border-radius: 9px; cursor: pointer;
  font: inherit; font-size: 13.5px; color: #31514a; text-align: left;
}
.sn-item:hover { background: #f0f6f3; }
.sn-item.active { background: #e7f4ee; color: #12694f; font-weight: 700; box-shadow: inset 3px 0 0 #28a88c; }
.sn-icon { width: 18px; text-align: center; font-size: 13.5px; flex: none; }
.sn-label { flex: 1; }
.sn-back { margin-top: 10px; color: #7a908b; font-size: 12.5px; }
.side-tip { margin-top: 16px; background: #f7faf8; border: 1px solid #e6ece8; border-radius: 12px; padding: 11px 12px; }
.side-tip .st-title { font-size: 12px; font-weight: 700; color: #31514a; }
.side-tip .st-body { font-size: 12px; color: #6b7f79; line-height: 1.7; margin-top: 4px; }
.acct-tip { background: #f7faf8; border: 1px solid #e6ece8; border-left: 3px solid #f9c629; border-radius: 10px; padding: 9px 12px; margin: 0 0 10px; font-size: 12.5px; color: #5d7a73; }
.acct-tip .at-strong { font-weight: 700; color: #31514a; }
.acct-name { font-size: 13px; color: #123f33; font-weight: 600; }
.acct-hint { margin-left: 6px; font-size: 11px; color: #93a7a1; }
.row-actions { white-space: nowrap; }
.row-actions .btn { margin-right: 6px; }

/* 文稿模板中心 */
.tpl-row { border-top: 1px solid #eef2ef; padding: 10px 0 4px; }
.tpl-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.tpl-list { display: flex; flex-direction: column; gap: 6px; }
.tpl-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: #f7faf8; border: 1px solid #e6ece8; border-radius: 9px; padding: 7px 10px; }
.tpl-structure { max-height: 320px; overflow: auto; font-size: 13px; line-height: 1.9; }
.tpl-sh { color: #31514a; border-bottom: 1px dashed #eef2ef; padding: 2px 0; }

/* 实训报告：按模板样式的 A4 纸面，学生在线填写、可贴图 */
.report-paper {
  max-width: 21cm; width: 100%; margin: 14px auto; padding: 2cm 1.9cm; background: #fff;
  border: 0; border-radius: 4px; box-shadow: 0 2px 14px rgba(16,44,36,.1);
  font-family: '宋体', SimSun, serif; font-size: 14.5px; line-height: 1.9;
}
.rp-head-title { text-align: center; font-size: 21px; letter-spacing: .35em; font-weight: 700; color: #123f33; margin: 0 0 14px; }
.rp-head-info { display: flex; flex-wrap: wrap; gap: 4px 20px; font-size: 13px; color: #31514a; padding-bottom: 8px; border-bottom: 2px solid #123f33; margin-bottom: 14px; }
.rp-body { min-height: 58px; padding: 4px 2px 6px; outline: none; }
.rp-body:focus { background: #fbfdfc; box-shadow: inset 0 0 0 1px #dbeae3; }
.rp-body.static { border-bottom: 1px dashed #eef2ef; }
.rp-body[contenteditable="true"] { border-bottom: 1px dashed #e6eee9; }
.rp-body[contenteditable="true"]:empty::before { content: attr(data-placeholder); color: #a9b8b2; }
.rp-hint { font-size: 12px; color: #93a7a1; margin: 2px 0 4px; }
@media print { .report-paper { box-shadow: none; margin: 0; padding: 0; } }
.doc-img { display: block; max-width: 100%; height: auto; margin: 6px auto; border: 1px solid #d8e2dc; border-radius: 4px; }
.doc-cell .doc-img { cursor: pointer; }
@media print { .doc-img { border: 0; } }

/* 打印：只出文稿纸 */
@media print {
  .topbar, .sidebar, .tabs, .section-head, .doc-sticky, .doc-backbar, .toast { display: none !important; }
  .content, .doc-wrap { padding: 0 !important; background: #fff !important; border: 0 !important; }
  .doc-paper { box-shadow: none; margin: 0; width: auto; padding: 0; }
}

/* ===== 课程管理（含关联班级） ===== */
.course-admin { display: flex; flex-direction: column; gap: 10px; }
.ca-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.ca-title { font-size: 13.5px; font-weight: 700; color: var(--ink, #1D2A26); }
.ca-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; border: 1px solid var(--line, #E2E6E3); border-radius: 10px; padding: 10px 12px; background: #fff; }
.ca-main { min-width: 0; }
.ca-name { font-size: 14px; font-weight: 600; color: var(--ink, #1D2A26); }
.ca-classes { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.ca-chip { font-size: 12px; padding: 2px 9px; border-radius: 999px; background: #EEF7F3; color: var(--brand-2, #28A88C); border: 1px solid #CFE9DF; text-decoration: none; }
.ca-chip:hover { background: #E1F2EA; }
.ca-ops { display: flex; gap: 6px; flex-shrink: 0; }

/* ===== 新建班级弹窗里的删除区 ===== */
.cls-del-box { margin-top: 14px; padding-top: 10px; border-top: 1px dashed var(--line, #E2E6E3); }
.cdb-title { font-size: 12.5px; font-weight: 600; color: var(--ink-soft, #5B6B66); margin-bottom: 6px; }
.cdb-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 0; border-bottom: 1px dashed var(--line, #E2E6E3); }
.cdb-row:last-child { border-bottom: 0; }
.cdb-name { font-size: 13px; font-weight: 600; color: var(--ink, #1D2A26); }

/* ===== AI 配置 ===== */
.ai-status { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.ai-test { min-height: 18px; }
.ca-head .btn { white-space: nowrap; flex-shrink: 0; }
.ca-title { white-space: nowrap; }