/* MathCore 新版教师端 · teacher-v2.css(阶段 1:布局壳 + 主题系统)
 * 设计规格来源:docs/design_handoff/README.md(Curio 设计语言,高保真令牌)
 * 主题:主色 7 角色 + 底色 10 角色,全部经 CSS 变量;由 teacher-v2.js 按
 * localStorage `mathcoreThemeChoice` 覆写根变量。默认 青瓷 × 暖纸。 */

:root {
  /* 主色(青瓷) */
  --pri: #47836B; --priH: #3A6E59; --priDeep: #1F4A3D; --priMid: #7FB39D;
  --priSoft: #EDF4F0; --priTint: #CFE4D9; --priTxt: #2E6350;
  /* 底色(暖纸) */
  --page: #FAF6EE; --card: #FFFFFF; --sunken: #F3ECDF; --sunken2: #ECE3D2;
  --line: #E6DECD; --line2: #D6CBB4;
  --ink: #23201A; --ink2: #4A453B; --ink3: #736A59; --ink4: #A08F74;
  /* 字体(Google Fonts 不可达时回退系统字体) */
  --ff-display: 'Newsreader', Georgia, 'Songti SC', 'SimSun', serif;
  --ff-sans: 'Hanken Grotesk', system-ui, -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --ff-mono: 'Space Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  /* 卡片阴影 */
  --shadow-card: 0 1px 2px rgba(35,32,26,0.03), 0 12px 32px rgba(35,32,26,0.05);
}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body {
  background: var(--page); color: var(--ink);
  font-family: var(--ff-sans); font-size: 14px;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
button { font-family: inherit; white-space: nowrap; }
/* 整站默认放大 110%(125% 偏大;100% 偏小);vh 长度已按 /1.1 补偿 */
body { zoom: 1.1; }
@media (max-width: 900px) { body { zoom: 1; } }
textarea::placeholder, input::placeholder { color: var(--ink4); }
:focus-visible { outline: 2px solid var(--pri); outline-offset: 2px; }
::selection { background: #F6CE8C; color: var(--ink); }
@keyframes v2Reveal { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

/* ================= 布局壳(浅色侧栏,默认方向) ================= */
.shell { display: flex; min-height: calc(100vh / 1.1); align-items: stretch; }

.side {
  width: var(--sidew, 234px); flex: none;
  background: rgba(255,255,255,0.5);
  backdrop-filter: blur(24px) saturate(1.4); -webkit-backdrop-filter: blur(24px) saturate(1.4);
  border-right: 1px solid var(--line);
  display: flex; flex-direction: column;
  padding: 22px 14px 18px;
  position: sticky; top: 0; height: calc(100vh / 1.1); overflow: auto;
}
.logo { display: flex; align-items: center; gap: 10px; padding: 0 8px 22px; cursor: pointer; }
.logo:hover .logo-name { color: var(--priTxt); }
.logo-m {
  width: 30px; height: 30px; border-radius: 9px; flex: none;
  background: var(--pri); color: #FBF7EF;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--ff-display); font-weight: 600; font-size: 17px;
}
.logo-name { font-family: var(--ff-display); font-weight: 600; font-size: 17px; line-height: 1.1; color: var(--ink); }
.logo-sub { font-size: 10.5px; color: var(--ink3); margin-top: 2px; letter-spacing: 0.03em; }

.nav { display: flex; flex-direction: column; gap: 2px; }
.navgroup {
  font-family: var(--ff-mono); font-size: 10.5px; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--ink4); padding: 16px 10px 6px;
}
.navgroup:first-child { padding-top: 6px; }
.navitem {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  border: 1px solid transparent; background: none; cursor: pointer;
  color: var(--ink2); font-weight: 500; font-size: 13.5px;
  padding: 9px 11px; border-radius: 10px;
}
.navitem:hover { background: var(--card); }
.navitem.active { background: var(--card); border-color: var(--line); color: var(--priTxt); font-weight: 700; }
.navitem.navdrop { outline: 2px dashed var(--priMid); outline-offset: -2px; background: var(--priSoft); }

/* 侧栏宽度拖动条:夹在侧栏与内容区之间,拖动改 --sidew(存本设备) */
#sideResizer {
  flex: none; width: 7px; margin-left: -4px; cursor: col-resize;
  position: relative; z-index: 30; background: transparent; border: none; padding: 0;
  touch-action: none;
}
#sideResizer::after { content: ''; position: absolute; inset: 0 2px; border-radius: 3px; background: transparent; transition: background 0.15s; }
#sideResizer:hover::after, #sideResizer.on::after { background: var(--priMid); }
body.resizing { user-select: none; -webkit-user-select: none; cursor: col-resize; }
body.resizing iframe { pointer-events: none; }

.sidefoot { border-top: 1px solid var(--line); margin-top: 16px; padding: 12px 4px 0; }
.oldlink {
  display: block; text-align: center; text-decoration: none;
  font-size: 12px; color: var(--ink3);
  border: 1.5px dashed var(--line2); border-radius: 9px;
  padding: 7px 10px; margin-bottom: 12px;
}
.oldlink:hover { color: var(--priTxt); border-color: var(--priMid); background: rgba(255,255,255,0.5); }
.user { display: flex; align-items: center; gap: 10px; padding: 0 4px; }
.avatar {
  width: 32px; height: 32px; border-radius: 999px; flex: none;
  background: var(--priTint); color: var(--priTxt);
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 600;
}
.user-name { font-size: 13px; font-weight: 600; color: var(--ink); line-height: 1.2; }
.user-role { font-size: 11px; color: var(--ink3); }

.main { flex: 1; min-width: 0; }
.wrap { max-width: 1200px; margin: 0 auto; width: 100%; padding: 22px 40px 120px; }

/* ================= 顶部工具行 ================= */
.toolrow { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.toolrow-left { display: flex; align-items: center; min-height: 33px; }
.toolrow-right { display: flex; align-items: center; gap: 8px; }
.qbtn {
  display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--line); background: var(--card); color: var(--ink2);
  font-size: 12.5px; font-weight: 500; padding: 7px 13px; border-radius: 9px; cursor: pointer;
}
.qbtn:hover { background: var(--sunken); }
.qbtn.inbk { background: var(--priSoft); border-color: var(--priTint); color: var(--priTxt); font-weight: 600; }
.qbtn.inbk:hover { background: var(--priTint); }
.vsep { width: 1px; height: 16px; background: var(--line); }
.themedot {
  width: 11px; height: 11px; border-radius: 999px; background: var(--pri);
  box-shadow: 0 0 0 1.5px var(--card), 0 0 0 2.5px var(--line2);
  display: inline-block; flex: none;
}

/* ================= 外观选择器弹层 ================= */
.pickerwrap { position: relative; }
.picker-overlay { position: fixed; inset: 0; z-index: 79; }
.picker {
  position: absolute; top: calc(100% + 8px); right: 0; z-index: 80; width: 272px;
  background: rgba(255,255,255,0.85);
  backdrop-filter: blur(22px) saturate(1.6); -webkit-backdrop-filter: blur(22px) saturate(1.6);
  border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 16px 44px rgba(35,32,26,0.14);
  padding: 16px 16px 14px; animation: v2Reveal 0.18s ease;
}
.pk-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pk-title { font-size: 13px; font-weight: 700; color: var(--ink); }
.pk-reset { border: none; background: none; color: var(--ink4); font-size: 11.5px; padding: 3px 6px; border-radius: 6px; cursor: pointer; }
.pk-reset:hover { background: var(--sunken); color: var(--ink2); }
.pk-cap {
  font-family: var(--ff-mono); font-size: 10px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--ink4); margin-top: 13px;
}
.pk-grid { display: grid; grid-template-columns: repeat(5, 34px); justify-content: space-between; gap: 10px 8px; margin-top: 8px; }
.pk-sw {
  width: 34px; height: 34px; border-radius: 999px; padding: 0; cursor: pointer;
  border: 2px solid transparent; box-shadow: inset 0 0 0 2px var(--card);
}
.pk-note { font-size: 11px; color: var(--ink4); margin-top: 12px; line-height: 1.5; }
/* 自定义色彩球:原生取色器 + 说明 */
.pk-custom { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
.pk-custom input[type="color"] {
  width: 44px; height: 44px; flex: none; padding: 0; cursor: pointer;
  border: 2px solid var(--line2); border-radius: 999px; background: none;
}
.pk-custom input[type="color"]::-webkit-color-swatch-wrapper { padding: 3px; }
.pk-custom input[type="color"]::-webkit-color-swatch { border: none; border-radius: 999px; }
.pk-custom input[type="color"]::-moz-color-swatch { border: none; border-radius: 999px; }
.pk-customtip { font-size: 11.5px; color: var(--ink3); line-height: 1.5; flex: 1; }

/* ================= 预览版通知条 ================= */
.notice {
  margin-top: 14px; background: #FDF4E6; border: 1px solid #F6CE8C; border-radius: 10px;
  padding: 9px 14px; font-size: 12.5px; line-height: 1.6; color: #7A4309;
  display: flex; gap: 8px; align-items: baseline;
}
.notice-tag {
  font-family: var(--ff-mono); font-size: 10.5px; letter-spacing: 0.1em;
  text-transform: uppercase; color: #9E570C; flex: none;
}

/* ================= 页面通用 ================= */
.page-anim { animation: v2Reveal 0.25s ease; }
.kicker {
  font-family: var(--ff-mono); font-size: 10.5px; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--ink4);
}
.kicker.ai { color: #9E570C; }
.pagetitle {
  font-family: var(--ff-display); font-size: 28px; font-weight: 600;
  letter-spacing: -0.01em; margin: 6px 0 0; color: var(--ink); line-height: 1.15;
}
.pagedesc { font-size: 13px; color: var(--ink3); margin-top: 6px; line-height: 1.6; }
.pagehead { padding-top: 30px; }
.pagehead.center { text-align: center; padding-top: 44px; }
.pagehead.center .pagetitle { font-size: 30px; margin-top: 8px; }
.pagehead.center .pagedesc { max-width: 460px; margin-left: auto; margin-right: auto; font-size: 13.5px; line-height: 1.7; }

.card {
  background: var(--card); border: 1px solid var(--line); border-radius: 16px;
  box-shadow: var(--shadow-card);
}

/* 开发中占位卡 */
.devcard { padding: 56px 24px 60px; text-align: center; margin-top: 20px; }
.devcard .ic {
  width: 46px; height: 46px; margin: 0 auto; border-radius: 13px;
  background: var(--sunken); color: var(--ink4);
  display: flex; align-items: center; justify-content: center;
}
.devcard .ic.ai { border-radius: 999px; background: #FDF4E6; border: 1px solid #F6CE8C; color: #C6710F; font-size: 16px; }
.devcard h2 { font-size: 15.5px; font-weight: 700; margin: 16px 0 0; color: var(--ink); }
.devcard p { font-size: 13px; color: var(--ink3); margin: 6px auto 0; max-width: 440px; line-height: 1.7; }
.devcard .acts { display: flex; justify-content: center; gap: 10px; margin-top: 18px; }

/* 按钮体系(阶段 2+ 页面也复用) */
.btn-primary {
  border: none; background: var(--pri); color: #FBF7EF;
  font-size: 13px; font-weight: 600; padding: 9px 16px; border-radius: 9px; cursor: pointer;
}
.btn-primary:hover { background: var(--priH); }
.btn-ai {
  border: 1px solid #F6CE8C; background: #FBE7C6; color: #7A4309;
  font-size: 13.5px; font-weight: 700; padding: 10px 20px; border-radius: 10px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 7px;
}
.btn-ai:hover { background: #F6CE8C; }
.btn-ghost {
  border: none; background: none; color: var(--ink2);
  font-size: 12.5px; padding: 7px 11px; border-radius: 8px; cursor: pointer;
}
.btn-ghost:hover { background: var(--sunken); }

/* ================= AI 解题页(阶段 2) ================= */
.aiwrap { max-width: 760px; margin: 0 auto; width: 100%; }
.aiout { display: flex; flex-direction: column; gap: 12px; margin-top: 18px; }
.aiout:empty { margin-top: 0; }
.aimsg { border-radius: 14px; padding: 13px 16px; font-size: 14px; line-height: 1.8; max-width: 100%; overflow-wrap: break-word; }
.aimsg.q { align-self: flex-end; background: var(--priSoft); border: 1px solid var(--priTint); color: var(--ink); max-width: 86%; white-space: pre-wrap; }
.aimsg.a { align-self: stretch; background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow-card); }
.qimgs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.qimg { max-width: 150px; max-height: 150px; border-radius: 9px; border: 1px solid var(--line); }
.qimg-miss { font-size: 12px; color: var(--ink4); }
.ai-final { font-size: 14.5px; padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid var(--line); overflow-x: auto; overflow-y: hidden; }
.ai-final b { color: var(--priTxt); font-size: 16px; }
.vtag { font-size: 11px; border-radius: 999px; padding: 2px 9px; white-space: nowrap; vertical-align: 2px; }
.vtag.ok { background: #DCEFE1; color: #2E6350; }
.vtag.bad { background: #FDECEC; color: #CB402E; }
.vtag.mut { background: var(--sunken); color: var(--ink3); }
.ai-steps { font-size: 13.5px; line-height: 1.85; color: var(--ink2); }
.ai-steps p { margin: 9px 0; }
.ai-steps p:first-child { margin-top: 0; }
.ai-steps p:last-child { margin-bottom: 0; }
.ai-steps ul, .ai-steps ol { margin: 8px 0; padding-left: 22px; }
.ai-steps li { margin: 4px 0; }
.ai-steps strong { font-weight: 700; color: var(--ink); }
.ai-eq { text-align: center; margin: 10px 0; overflow-x: auto; overflow-y: hidden; }
mjx-container { overflow-x: auto; overflow-y: hidden; max-width: 100%; }

/* 输入卡悬浮:长对话时钉在视口底部,随时可继续输入;无对话时在自然位置 */
.aiinput { margin-top: 18px; padding: 18px 18px 14px; position: sticky; bottom: 12px; z-index: 8; box-shadow: 0 10px 30px rgba(30, 26, 18, 0.13); }
/* P3:AI 解题输入卡常驻窗口底部(微信式)—— 页面撑满视口、输入卡沉底,对话在上方滚动 */
.wrap:has(.aiwrap.chatfill) { padding-bottom: 14px; }
.aiwrap.chatfill { display: flex; flex-direction: column; min-height: calc(100vh / 1.1 - 78px); }
.aiwrap.chatfill .aiout { flex: 1; }
@media (max-width: 900px) { .aiwrap.chatfill { min-height: calc(100vh - 78px); } }   /* 窄屏 zoom=1,无需 /1.1 补偿 */
.aiout:not(:empty) ~ .aiinput textarea { min-height: 76px; }
.aiinput textarea {
  width: 100%; min-height: 150px; resize: vertical;
  font-family: inherit; font-size: 14px; line-height: 1.8; color: var(--ink);
  background: var(--page); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px;
}
.airow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.aistatus {
  display: flex; align-items: center; justify-content: center; gap: 9px; margin-top: 16px;
  font-family: var(--ff-mono); font-size: 11px; color: var(--ink4); flex-wrap: wrap;
}
.aistatus .dot { width: 7px; height: 7px; border-radius: 999px; background: #E0A100; flex: none; }

/* 附件 chips */
.attach-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.attach { position: relative; display: inline-flex; align-items: center; }
.attach img { width: 62px; height: 62px; object-fit: cover; border-radius: 9px; border: 1px solid var(--line); }
.attach.pdffile { gap: 7px; background: var(--sunken); border: 1px solid var(--line); border-radius: 9px; padding: 7px 26px 7px 9px; }
.pdficon { background: #C0392B; color: #fff; font-size: 10px; font-weight: 700; border-radius: 5px; padding: 2px 5px; }
.pdfname { font-size: 12px; color: var(--ink2); max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attach-x {
  position: absolute; top: -7px; right: -7px; width: 19px; height: 19px;
  border-radius: 999px; border: 1px solid var(--line2); background: var(--card); color: var(--ink3);
  font-size: 12px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0;
}
.attach.pdffile .attach-x { top: 50%; right: 5px; transform: translateY(-50%); border: none; background: none; }
.attach-x:hover { color: #CB402E; }
.attach-hint { font-size: 11.5px; color: var(--ink4); margin-top: 8px; }

/* 历史查询列表 */
.histrow { display: flex; gap: 12px; align-items: flex-start; padding: 14px 6px; border-top: 1px solid var(--sunken); cursor: pointer; border-radius: 10px; }
.histrow:first-child { border-top: none; }
.histrow:hover { background: var(--page); }
.histthumb { width: 46px; height: 46px; object-fit: cover; border-radius: 8px; border: 1px solid var(--line); flex: none; }
.histbody { flex: 1; min-width: 0; }
.histq { font-size: 13.5px; font-weight: 600; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.histtag { font-family: var(--ff-mono); font-size: 10px; background: var(--priSoft); color: var(--priTxt); border-radius: 999px; padding: 2px 8px; margin-right: 8px; vertical-align: 1px; }
.histfinal { font-size: 12.5px; color: var(--ink3); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.histmeta { font-family: var(--ff-mono); font-size: 11px; color: var(--ink4); margin-top: 4px; }
.histgo { font-size: 12.5px; font-weight: 600; color: var(--priTxt); white-space: nowrap; align-self: center; }
.histempty { padding: 26px 0; text-align: center; font-size: 13px; color: var(--ink3); }

/* ================= 学生档案页(阶段 3) ================= */
.backlink {
  display: inline-flex; align-items: center; gap: 6px; border: none; background: none; cursor: pointer;
  font-size: 13px; color: var(--ink2); padding: 6px 10px 6px 6px; border-radius: 8px; white-space: nowrap;
}
.backlink:hover { color: var(--priTxt); background: var(--sunken); }

.slrow { display: flex; align-items: center; gap: 12px; padding: 13px 6px; border-top: 1px solid var(--sunken); cursor: pointer; border-radius: 10px; }
.slrow:first-child { border-top: none; }
.slrow:hover { background: var(--page); }
.avatar.sm { width: 36px; height: 36px; background: #FBE7C6; color: #593107; font-family: var(--ff-display); font-size: 16px; }
.slname { font-size: 14.5px; font-weight: 700; color: var(--ink); }
.slchip { font-size: 12.5px; color: var(--ink3); }

.stuhead { display: flex; align-items: center; gap: 16px; margin-top: 28px; }
.stuav {
  width: 46px; height: 46px; border-radius: 999px; flex: none;
  background: #FBE7C6; color: #593107; display: flex; align-items: center; justify-content: center;
  font-family: var(--ff-display); font-size: 20px; font-weight: 600;
}
.stunamerow { display: flex; align-items: center; gap: 12px; margin-top: 3px; flex-wrap: wrap; }
.stuname { font-family: var(--ff-display); font-size: 30px; font-weight: 600; letter-spacing: -0.01em; line-height: 1.1; margin: 0; color: var(--ink); }
.chip { background: var(--sunken); color: var(--ink2); font-size: 12px; padding: 4px 11px; border-radius: 999px; white-space: nowrap; }
.chip.sm { font-size: 11px; padding: 2px 8px; }
.chip.ok { background: #DCEFE1; color: #2E6350; font-weight: 600; }
.chip.soft { background: var(--priSoft); color: var(--priTxt); }
.chip.warm { background: #FDF4E6; color: #9E570C; border: 1px solid #F6CE8C; font-weight: 600; }

.stutabs { display: flex; gap: 26px; row-gap: 0; border-bottom: 1px solid var(--line); margin-top: 24px; flex-wrap: wrap; }
.stutab {
  border: none; background: none; cursor: pointer; padding: 10px 2px 13px;
  font-size: 14px; white-space: nowrap; font-weight: 500; color: var(--ink3); box-shadow: inset 0 -2px 0 transparent;
}
.stutab:hover { color: var(--priTxt); }
.stutab.on { font-weight: 700; color: var(--priTxt); box-shadow: inset 0 -2px 0 var(--pri); }
.tabpane { display: flex; flex-direction: column; gap: 18px; padding-top: 22px; }

.seccard { padding: 22px 24px; }
.sechead { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.sectitle { font-size: 16.5px; font-weight: 700; margin: 0; color: var(--ink); }
.secdesc { font-size: 13px; color: var(--ink3); margin: 5px 0 0; line-height: 1.7; max-width: 640px; }
.secacts { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.btn-ai.sm { font-size: 12.5px; padding: 8px 14px; border-radius: 9px; }
.qmut { font-size: 12.5px; color: var(--ink4); }
.mono { font-family: var(--ff-mono); font-size: 11.5px; }

.pillrow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 16px; }
.pill {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  font-size: 13px; padding: 7px 13px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--card); color: var(--ink2); font-weight: 500;
}
.pill .pilln { font-family: var(--ff-mono); font-size: 11px; line-height: 1; padding: 3px 7px; border-radius: 999px; background: var(--sunken); color: var(--ink3); }
.pill.on { background: var(--priSoft); color: var(--priTxt); border-color: var(--priTint); font-weight: 700; }
.pill.on .pilln { background: var(--priTint); color: var(--priTxt); }

.listcard { overflow: hidden; padding: 0 0 8px; }
.listhead { display: flex; align-items: baseline; gap: 8px; padding: 18px 24px 4px; }
.docrow { padding: 4px 10px 0; }
.docrow + .docrow { border-top: 1px solid var(--sunken); }
.docline { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 12px; flex-wrap: wrap; cursor: pointer; }
.docline:hover { background: var(--page); }
.docarrow { width: 26px; height: 26px; flex: none; color: var(--ink3); font-size: 12px; display: flex; align-items: center; justify-content: center; transition: transform 0.18s ease; }
.docarrow.open { transform: rotate(90deg); }
.docicon { width: 38px; height: 38px; flex: none; border-radius: 10px; background: var(--sunken); color: var(--priTxt); display: flex; align-items: center; justify-content: center; }
.docmain { flex: 1; min-width: 220px; }
.doctitle { font-size: 14.5px; font-weight: 600; color: var(--ink); }
.docmeta { display: flex; align-items: center; gap: 8px; margin-top: 5px; font-size: 12.5px; color: var(--ink3); flex-wrap: wrap; }
.docprog { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.progtrack { width: 56px; height: 4px; border-radius: 999px; background: var(--sunken2); overflow: hidden; display: inline-block; }
.progfill { display: block; height: 100%; border-radius: 999px; background: var(--priMid); }
.docacts { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.docbody2 {
  margin: 2px 14px 14px 50px; background: var(--page); border: 1px solid var(--line); border-radius: 14px;
  padding: 18px 20px; animation: v2Reveal 0.22s ease;
}
.casechead { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.learnkicker { font-family: var(--ff-mono); font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: #9E570C; }
.casub { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 13px 16px; margin-bottom: 10px; }
.casubhead { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.casubbody { padding: 10px 2px 2px; font-size: 13px; }
.learnpanel { background: #FDF4E6; border: 1px solid #F6CE8C; border-radius: 10px; padding: 12px 14px; margin-top: 10px; }
.learnhead { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.datechip {
  font-family: var(--ff-mono); font-size: 11.5px; color: var(--ink3);
  background: var(--card); border: 1px solid var(--line); padding: 4px 9px; border-radius: 999px; white-space: nowrap; flex: none;
}

.qlist { display: flex; flex-direction: column; gap: 12px; }
.qcard { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; }
.qchead { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; font-size: 13px; color: var(--ink); }
.qstars { color: #E0A100; font-size: 12px; letter-spacing: 1px; }
.qstem { font-size: 13.5px; }
.qstem img { max-width: 100%; height: auto; }
.qdetails { margin-top: 8px; }
.qdetails summary { font-size: 12.5px; color: var(--ink3); cursor: pointer; }
.qdetails summary:hover { color: var(--priTxt); }
.qans { font-size: 13px; line-height: 1.8; color: var(--ink2); margin-top: 8px; padding: 10px 12px; background: var(--page); border: 1px solid var(--line); border-radius: 9px; }
.qans b { display: block; font-size: 11.5px; color: var(--ink4); margin-bottom: 4px; }
.qans img { max-width: 100%; height: auto; }

.statgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.statcard { border-radius: 14px; padding: 18px 20px; }
.statlab { font-family: var(--ff-mono); font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink3); }
.statrow { display: flex; align-items: baseline; gap: 5px; margin-top: 8px; }
.statval { font-family: var(--ff-display); font-size: 38px; font-weight: 600; line-height: 1; color: var(--priTxt); }
.statunit { font-size: 13px; color: var(--ink3); }
.statsub { font-size: 12.5px; color: var(--ink3); margin-top: 8px; }

.recrow { border-top: 1px solid var(--sunken); padding: 6px 0; }
.recrow:first-of-type { border-top: none; }
.recline { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 8px 0; }
.rectitle { font-size: 14px; font-weight: 600; color: var(--ink); }
.recbody { margin: 4px 0 10px; padding: 12px 16px; background: var(--page); border: 1px solid var(--line); border-radius: 10px; font-size: 13px; white-space: pre-wrap; }
.scorechip {
  font-size: 13px; font-weight: 700; color: var(--priTxt);
  background: var(--priSoft); border: 1px solid var(--priTint);
  padding: 6px 11px; border-radius: 9px; flex: none; white-space: nowrap;
}

.fbitem { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; margin-top: 16px; }
.fbhead { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 13px 18px; background: var(--page); border-bottom: 1px solid var(--line); }
.fbbody { padding: 10px 18px 14px; }
.deftable { display: flex; flex-direction: column; }
.defrow { display: grid; grid-template-columns: 128px 1fr; gap: 16px; padding: 14px 0; border-top: 1px solid var(--sunken); }
.defrow:first-child { border-top: none; }
.defkey { display: flex; align-items: flex-start; gap: 8px; padding-top: 2px; font-size: 13px; font-weight: 700; color: var(--ink); line-height: 1.4; }
.defdot { width: 7px; height: 7px; border-radius: 999px; flex: none; margin-top: 5px; }
.defval { font-size: 13.5px; line-height: 1.8; color: var(--ink2); min-width: 0; }
.defval p { margin: 0 0 8px; }
.defval p:last-child { margin-bottom: 0; }

.stagetext {
  width: 100%; min-height: 150px; resize: vertical; margin-top: 14px;
  font-family: inherit; font-size: 14px; line-height: 1.8; color: var(--ink);
  background: var(--page); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px;
}
.tl2 { display: flex; flex-direction: column; margin-top: 16px; }
.tlrow { display: grid; grid-template-columns: 14px 56px 1fr; gap: 14px; }
.tlrail { display: flex; flex-direction: column; align-items: center; }
.tldot { width: 9px; height: 9px; border-radius: 999px; background: var(--priMid); flex: none; margin-top: 5px; }
.tlline { width: 2px; flex: 1; background: var(--sunken2); border-radius: 999px; margin-top: 4px; }
.tldate { font-size: 12px; font-weight: 700; color: var(--priTxt); padding-top: 1px; }
.tlbody { padding-bottom: 22px; min-width: 0; }
.tltopic { font-size: 14px; font-weight: 600; color: var(--ink); line-height: 1.3; }
.tlnote { font-size: 12.5px; color: var(--ink3); margin-top: 4px; line-height: 1.6; }

.emptybox { padding: 48px 24px 56px; text-align: center; }
.emptybox .ic { width: 44px; height: 44px; margin: 0 auto; border-radius: 12px; background: var(--sunken); color: var(--ink4); display: flex; align-items: center; justify-content: center; }
.emptybox h2 { font-size: 15.5px; font-weight: 700; margin: 16px 0 0; color: var(--ink); }
.emptybox p { font-size: 13px; color: var(--ink3); margin: 6px auto 0; max-width: 440px; line-height: 1.7; }

@media (max-width: 900px) {
  .statgrid { grid-template-columns: 1fr; }
  .defrow { grid-template-columns: 1fr; gap: 4px; }
  .docbody2 { margin-left: 10px; margin-right: 10px; padding: 14px; }
  .stutabs { gap: 18px; }
}

/* ================= 学生列表 / 题库 / 云作业(阶段 4) ================= */
.stugrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 14px; margin-top: 18px; }
/* 紧凑卡片:overflow 收在卡内,统计与操作分两行,永不外溢 */
.stucard { background: var(--card); border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--shadow-card); padding: 13px 15px; cursor: pointer; overflow: hidden; }
.stucard:hover { box-shadow: 0 2px 4px rgba(35,32,26,0.05), 0 14px 34px rgba(35,32,26,0.10); }
.stucardhead { display: flex; align-items: center; gap: 10px; }
.stucardhead .avatar.sm { width: 36px; height: 36px; font-size: 16px; }
.stucardname { flex: 1; min-width: 0; }
.stucardname .slchip { margin-top: 2px; }
.stucardfoot { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--sunken); }
.stuacts { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin-top: 8px; }
/* 学生列表视图:一行一人 */
.stulistv { display: flex; flex-direction: column; gap: 8px; margin-top: 18px; }
.sturow {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  padding: 9px 14px; cursor: pointer; box-shadow: var(--shadow-card);
}
.sturow:hover { box-shadow: 0 2px 4px rgba(35,32,26,0.05), 0 10px 24px rgba(35,32,26,0.09); }
.sturow .slname { font-size: 14px; }
.sturowstat { font-size: 12px; color: var(--ink3); white-space: nowrap; }
.sturowstat b { color: var(--ink); font-weight: 700; }
.sturow.dropover { outline: 2px dashed var(--priMid); outline-offset: 2px; }
.stuaddcard.row { min-height: 0; padding: 10px; border-radius: 12px; display: flex; align-items: center; justify-content: center; gap: 6px; }
/* 模型档位 / 视图切换分段控件 */
.aitier { display: inline-flex; align-items: center; gap: 2px; background: var(--sunken); border: 1px solid var(--line); border-radius: 10px; padding: 2px; }
.aitier button {
  border: none; background: none; cursor: pointer; font-family: inherit;
  font-size: 12px; font-weight: 600; color: var(--ink3); padding: 5px 10px; border-radius: 8px; white-space: nowrap;
}
.aitier button:hover { color: var(--ink2); }
.aitier button.on { background: var(--card); color: var(--priTxt); box-shadow: 0 1px 3px rgba(35,32,26,0.12); }
/* AI 页副标题单行 */
.pagedesc.oneline { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.minstatlab { font-family: var(--ff-mono); font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink4); white-space: nowrap; }
.minstatval { font-size: 13px; font-weight: 700; color: var(--ink); margin-top: 2px; }
.stuaddcard {
  min-height: 150px; border: 1.5px dashed var(--line2); background: none; border-radius: 16px;
  color: var(--ink4); font-size: 13px; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
}
.stuaddcard:hover { border-color: var(--priMid); color: var(--priTxt); background: rgba(255,255,255,0.5); }

/* v2 modal(display:flex 会盖掉 hidden 的 display:none,必须显式还原) */
#modal2 { position: fixed; inset: 0; z-index: 110; display: flex; align-items: center; justify-content: center; padding: 20px; }
#modal2[hidden], #lb2[hidden] { display: none; }
.m2mask { position: absolute; inset: 0; background: rgba(35,32,26,0.32); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
.m2card {
  position: relative; width: min(720px, 100%); max-height: calc(86vh / 1.1); overflow-y: auto;
  background: var(--card); border: 1px solid var(--line); border-radius: 16px;
  box-shadow: 0 24px 64px rgba(35,32,26,0.22); padding: 20px 22px; animation: v2Reveal 0.18s ease;
}
.m2h { font-size: 16px; font-weight: 700; color: var(--ink); }
.m2field { display: block; font-size: 12.5px; color: var(--ink3); margin-top: 14px; }
.m2field input, .m2field select {
  display: block; width: 100%; margin-top: 6px; font-family: inherit; font-size: 14px; color: var(--ink);
  background: var(--page); border: 1px solid var(--line); border-radius: 9px; padding: 9px 12px;
}
.m2foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
.m2scroll { max-height: calc(48vh / 1.1); overflow-y: auto; padding: 4px 2px; margin-top: 8px; }
.btn-ghost.danger:hover { color: #CB402E; background: #F7DED8; }
.qbtn.dangerh:hover { color: #CB402E; border-color: #F7DED8; background: #F7DED8; }
.btn-primary.sm { font-size: 12.5px; padding: 8px 14px; }

/* 灯箱 */
#lb2 { position: fixed; inset: 0; z-index: 120; background: rgba(20,18,14,0.82); display: flex; align-items: center; justify-content: center; cursor: zoom-out; padding: 24px; }
#lb2 img { max-width: calc(94vw / 1.1); max-height: calc(90vh / 1.1); border-radius: 10px; box-shadow: 0 24px 64px rgba(0,0,0,0.4); }

/* 云作业 */
.cwrow { display: flex; align-items: center; gap: 10px; padding: 13px 4px; border-top: 1px solid var(--sunken); flex-wrap: wrap; }
.cwrow:first-child { border-top: none; }
.cwmain { flex: 1; min-width: 200px; }
.cwtitle { font-size: 14.5px; font-weight: 600; color: var(--ink); }
.cwmeta { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--ink3); margin-top: 4px; flex-wrap: wrap; }
.chip.sm.bad { background: #FDECEC; color: #CB402E; }
.chip.sm.info { background: #EEF2FF; color: #3B5BDB; }
.cwitem { display: flex; gap: 10px; padding: 8px 0; border-top: 1px solid var(--sunken); align-items: flex-start; flex-wrap: wrap; }
.cwqn { font-size: 13px; flex: 0 0 52px; color: var(--ink); }
.cwans { flex: 1; min-width: 180px; }
.cwtxt { font-size: 13px; line-height: 1.7; white-space: pre-wrap; color: var(--ink2); }
.cwimgs { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; }
.cwimgs img { width: 74px; height: 74px; object-fit: cover; border-radius: 8px; border: 1px solid var(--line); cursor: zoom-in; }

@media (max-width: 900px) {
  .stugrid { grid-template-columns: 1fr; }
  .stucardfoot { gap: 14px; flex-wrap: wrap; }
}

/* ================= 考点图谱 ================= */
.seg { display:inline-flex; border:1px solid var(--line); border-radius:9px; overflow:hidden; background:var(--card); }
.seg button { border:none; background:none; color:var(--ink3); font:inherit; font-size:12.5px; padding:8px 14px; cursor:pointer; }
.seg button + button { border-left:1px solid var(--line); }
.seg button.on { background:var(--priSoft); color:var(--priTxt); font-weight:700; }

/* Q5:图谱↔详情可拖分隔线(--kgW 由 JS 写入,存本设备) */
.kgmain { display:grid; grid-template-columns:minmax(0,1fr) 10px var(--kgW, 350px); gap:6px; margin-top:18px; align-items:start; }
#kgResizer { cursor:col-resize; border:none; background:transparent; padding:0; position:relative; align-self:stretch; min-height:120px; }
#kgResizer::after { content:''; position:absolute; left:4px; top:0; bottom:0; width:2px; border-radius:2px; background:var(--line2); transition:background 0.12s; }
#kgResizer:hover::after, #kgResizer.on::after { background:var(--priMid); }
.kgzreset { position:absolute; top:10px; right:10px; z-index:3; }
.kgboard { position:relative; overflow:hidden; }
.kgboard svg { display:block; width:100%; height:560px; }
.kglegend {
  position:absolute; left:12px; bottom:10px; display:flex; gap:14px; flex-wrap:wrap; align-items:center;
  background:rgba(255,255,255,.82); backdrop-filter:blur(6px);
  border:1px solid var(--line); border-radius:10px; padding:7px 12px; font-size:11.5px; color:var(--ink3);
}
.kglegend .lg { display:inline-flex; align-items:center; gap:6px; }
.kgdot { width:10px; height:10px; border-radius:99px; flex:none; display:inline-block; }
circle.kgnode { cursor:pointer; }
text.kglabel { font-size:11px; fill:var(--ink2); pointer-events:none; }
text.kglabel.big { font-weight:700; fill:var(--ink); }
.kgdim { opacity:.13; transition:opacity .18s; }
.kgedim { opacity:.07; transition:opacity .18s; }
.kgpanel { padding:18px 18px 16px; min-height:560px; }
.kgmain.islist .kgpanel { min-height:0; }
.kglist { padding:6px 18px 16px; }
.kgl-row { display:flex; align-items:center; gap:10px; padding:9px 8px; border-radius:9px; cursor:pointer; }
.kgl-row:hover { background:var(--page); }
.kgl-row.on { background:var(--priSoft); }
.kgl-name { font-size:13.5px; color:var(--ink); }
.prereq2 { display:flex; gap:6px; flex-wrap:wrap; }
.prereq2 button { border:1px solid var(--line); background:var(--card); color:var(--priTxt); font-size:12px; border-radius:999px; padding:4px 11px; cursor:pointer; }
.prereq2 button:hover { background:var(--priSoft); }
.kgout { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:12px; }

/* 中考几何专题 */
.zkbox { margin-top: 18px; padding: 14px 18px; display: flex; flex-direction: column; gap: 8px; }
.zktools { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.chip.sm.ban { background: #FDECEC; color: #CB402E; }
.zkbadge {
  border-radius: 10px; padding: 9px 14px; font-size: 12.5px; line-height: 1.7;
  display: flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-top: -4px;
}
.zkbadge.ok { background: #DCEFE1; color: #2E6350; }
.zkbadge.warn { background: #FDF4E6; border: 1px solid #F6CE8C; color: #7A4309; }

/* 导入查重标记 */
.chip.sm.dup { background:#FDF4E6; color:#9E570C; border:1px solid #F6CE8C; font-weight:600; }
.dupbanner {
  margin:8px 0 2px; background:#FDF4E6; border:1px solid #F6CE8C; border-radius:9px;
  padding:8px 12px; font-size:12.5px; line-height:1.7; color:#7A4309;
}
.qcard.isdup { border-color:#F6CE8C; background:#FFFDF7; }

@media (max-width: 900px) {
  .kgmain { grid-template-columns:1fr; }
  #kgResizer { display:none; }
  .kgboard svg { height: calc(58vh / 1.1); }
  .kgpanel { min-height:0; }
}

/* ================= 试题篮(全局悬浮) ================= */
.basket {
  position: fixed; right: 26px; bottom: 24px; z-index: 60;
  display: inline-flex; align-items: center; gap: 9px;
  border: 1px solid var(--line); background: rgba(255,255,255,0.75);
  backdrop-filter: blur(18px) saturate(1.6); -webkit-backdrop-filter: blur(18px) saturate(1.6);
  color: var(--priTxt); font-size: 13.5px; font-weight: 600;
  padding: 11px 18px; border-radius: 999px; cursor: pointer;
  box-shadow: 0 12px 32px rgba(35,32,26,0.14);
}
.basket:hover { background: rgba(255,255,255,0.95); }
.basket-n {
  font-family: var(--ff-mono); font-size: 11px; line-height: 1;
  background: var(--pri); color: #FFFFFF;
  min-width: 19px; height: 19px; padding: 0 5px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
}

/* ================= toast ================= */
#toast {
  position: fixed; left: 50%; bottom: 30px; transform: translateX(-50%); z-index: 120;
  background: var(--ink); color: #FBF7EF; font-size: 13px;
  padding: 10px 18px; border-radius: 999px; max-width: min(calc(86vw / 1.1), 560px);
  box-shadow: 0 12px 32px rgba(35,32,26,0.25); animation: v2Reveal 0.18s ease;
}

/* ================= 窄屏回退(设计稿为桌面优先) ================= */
@media (max-width: 900px) {
  .shell { flex-direction: column; }
  .side { position: static; width: 100%; height: auto; border-right: none; border-bottom: 1px solid var(--line); padding: 14px 14px 12px; }
  #sideResizer { display: none; }
  .nav { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px; }
  .navgroup { display: none; }
  .navitem { width: auto; }
  .logo { padding-bottom: 12px; }
  .sidefoot { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: none; margin-top: 8px; padding: 0; }
  .oldlink { margin-bottom: 0; }
  .user { display: none; }
  .wrap { padding: 18px 16px 110px; }
  .pagehead { padding-top: 20px; }
  .basket { right: 14px; bottom: 14px; }
}

/* ================= 档案写路径(阶段 A):灯箱画廊 / 思考框 / 考卷确认表单 / 趋势柱图 / 能力球 / 演示表 ================= */
.lbnav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 44px; height: 64px; border: none; border-radius: 10px; cursor: pointer;
  background: rgba(251,247,239,0.14); color: #FBF7EF; font-size: 34px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.lbnav:hover { background: rgba(251,247,239,0.28); }
.lbnav.prev { left: 18px; }
.lbnav.next { right: 18px; }
.lbcount {
  position: absolute; top: 20px; left: 50%; transform: translateX(-50%);
  font-size: 12.5px; color: #FBF7EF; background: rgba(20,18,14,0.55);
  padding: 4px 12px; border-radius: 999px; letter-spacing: 1px;
}
.thinkbox {
  margin-top: 14px; padding: 14px 16px; border-radius: 12px;
  background: var(--priSoft); border: 1px solid var(--priTint);
  color: var(--priTxt); font-size: 13.5px; animation: v2Reveal 0.18s ease;
}
.thinkbox.err { background: #F9EFEC; border-color: #EBD0C6; color: #A4432F; }
.genout { margin-top: 14px; padding: 14px 16px; border-radius: 12px; background: var(--sunken); border: 1px solid var(--line); }
.examform { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.examform label { display: flex; flex-direction: column; gap: 6px; font-size: 12.5px; color: var(--ink3); }
.examform input { padding: 8px 12px; border: 1px solid var(--line2); border-radius: 9px; font: inherit; font-size: 13.5px; background: var(--card); color: var(--ink); }
.examform input:focus { outline: none; border-color: var(--priMid); }
.examform .exscore { display: inline-flex; align-items: center; gap: 6px; color: var(--ink3); }
.examform .exscore input { width: 74px; }
.bars2 { display: flex; align-items: flex-end; gap: 14px; height: 130px; padding: 6px 2px 0; }
.bar2 { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 6px; height: 100%; width: 40px; }
.bar2 .bfill { width: 26px; border-radius: 6px 6px 3px 3px; background: linear-gradient(180deg, var(--priMid), var(--pri)); min-height: 4px; }
.bar2 span { font-size: 11.5px; color: var(--ink3); }
.balls2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 14px; padding: 4px 0; }
.ball2 { text-align: center; }
.ball2 .bdisc {
  width: 58px; height: 58px; border-radius: 50%; margin: 0 auto 7px;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 15px; font-family: var(--ff-mono);
  box-shadow: inset 0 -3px 8px rgba(0,0,0,0.12);
}
.ball2 .bname { font-size: 12.5px; color: var(--ink2); font-weight: 600; }
.ball2 .bstate { font-size: 11.5px; }
.dt2 { width: 100%; border-collapse: collapse; font-size: 13px; }
.dt2 th { text-align: left; font-size: 12px; color: var(--ink3); font-weight: 600; padding: 8px 10px; border-bottom: 1px solid var(--line2); white-space: nowrap; }
.dt2 td { padding: 9px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.dt2 tr:last-child td { border-bottom: none; }

/* ================= 阶段 B:文档管理 / 散装题库 / 上课情况 ================= */
.docsel2 {
  padding: 4px 8px; border: 1px solid var(--line2); border-radius: 8px;
  font: inherit; font-size: 12px; background: var(--card); color: var(--ink2); cursor: pointer;
}
.docsel2:focus { outline: none; border-color: var(--priMid); }
.qacts2 { margin-top: 10px; flex-wrap: wrap; gap: 8px; }
.qtaught2 { display: inline-flex; gap: 6px; }
.qtaught2 .qbtn { padding: 4px 12px; font-size: 12px; }
.qtaught2 .t1.on1 { background: #E4F3E9; border-color: #A9D6B6; color: #1D7A44; }
.qtaught2 .t0.on0 { background: #FBF0DF; border-color: #EBD1A6; color: #A46A0F; }
.casubops { flex-wrap: wrap; gap: 7px; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); }
.casubops .qbtn { padding: 4px 11px; font-size: 12px; }
.simpanel {
  margin-top: 12px; padding: 11px 14px; border-radius: 10px;
  background: var(--sunken); border: 1px dashed var(--line2);
}
.simpanel.has { background: #EDF6EF; border: 1px solid #C4E0CC; }
.simlead { font-size: 13.5px; color: var(--ink2); line-height: 1.6; }
.simpanel.has .simlead { color: #1D6B3E; }
.simn { font-size: 16px; color: #127A3E; }
.loosesellab { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; font-size: 13px; }
.pill.sm2 { padding: 5px 13px; font-size: 12.5px; }

/* ================= 阶段 D:学生管理 / 排课表 ================= */
.stughost {
  border: none; background: transparent; color: var(--ink3);
  font: inherit; font-size: 12px; padding: 3px 6px; border-radius: 7px; cursor: pointer;
}
.stughost:hover { background: var(--sunken); color: var(--ink2); }
.stughost.danger:hover { background: #F7DED8; color: #CB402E; }
.stuchipbtn { cursor: pointer; border: 1px solid var(--line2); font: inherit; }
.stuchipbtn:hover { border-color: var(--priMid); color: var(--priTxt); }
.grprow2 { display: flex; align-items: center; gap: 9px; padding: 9px 0; border-top: 1px solid var(--line); flex-wrap: wrap; }
.grprow2:first-of-type { border-top: none; }
.grprow2 .qbtn { padding: 4px 10px; font-size: 12px; }
.grprow2.editing { background: var(--priSoft); border-radius: 8px; padding-left: 8px; padding-right: 6px; }
.sched2-next {
  margin-top: 16px; padding: 12px 16px; border-radius: 12px;
  background: var(--priSoft); border: 1px solid var(--priTint);
  color: var(--priTxt); font-size: 13.5px;
}
/* P1:周一~周日 7 列一页放下(卡片允许变窄);窄窗口降级为 4 列 / 2 列换行,不再横向滚动 */
.sched2-wrap { margin-top: 16px; padding-bottom: 6px; }
.sched2-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
@media (max-width: 1180px) { .sched2-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 760px) { .sched2-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.sched2-col {
  background: linear-gradient(180deg, rgba(255,255,255,0.55), rgba(255,255,255,0.15));
  border: 1px solid var(--line); border-radius: 14px; padding: 10px 9px;
  display: flex; flex-direction: column; gap: 9px; min-height: 170px;
}
.sched2-col.today {
  background: linear-gradient(180deg, var(--priSoft), rgba(255,255,255,0.5));
  border-color: var(--priTint); box-shadow: inset 0 3px 0 var(--pri);
}
.sched2-dayhead {
  font-weight: 800; font-size: 13px; color: var(--ink2);
  display: flex; align-items: center; padding: 3px 3px 2px; letter-spacing: 0.04em;
}
.sched2-daycount { margin-left: auto; font-family: var(--ff-mono); font-size: 10.5px; color: var(--ink4); font-weight: 400; }
.sched2-card {
  position: relative; background: var(--card); border: 1px solid var(--line);
  border-top: 3px solid var(--pri); border-radius: 12px;
  padding: 8px 9px 10px; cursor: pointer; min-width: 0; overflow-wrap: break-word;
  box-shadow: 0 1px 2px rgba(35,32,26,0.05);
  transition: transform 0.12s ease, box-shadow 0.12s ease, border-color 0.12s ease;
}
.sched2-card:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(35,32,26,0.12); border-color: var(--priMid); }
.sched2-card.personal { border-top-color: #F0A11C; }
.sched2-time { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--ink3); flex-wrap: wrap; }
.sched2-clock {
  font-family: var(--ff-mono); font-weight: 700; font-size: 12px; color: var(--ink);
  background: var(--sunken); border-radius: 7px; padding: 2px 8px; white-space: nowrap;
}
.sched2-card.personal .sched2-clock { background: #FDF4E6; color: #8E5C16; }
.sched2-name { font-weight: 700; font-size: 14px; margin-top: 7px; color: var(--ink); }
.sched2-meta, .sched2-stu, .sched2-note { font-size: 12px; margin-top: 2px; }
.sched2-edit { position: absolute; right: 6px; bottom: 6px; opacity: 0.35; transition: opacity 0.12s; }
.sched2-card:hover .sched2-edit { opacity: 1; }
.sched2-empty { text-align: center; padding: 14px 0 8px; opacity: 0.7; }
.chip.sm.cool2 { background: #E7F1FE; border-color: #BBD8FA; color: #1D6FC4; }

/* ================= 阶段 E:复盘卡 / 拖拽区 / 题库搜索 / 视频市场 / 导入精修 ================= */
.caseg2 { padding: 8px 0 2px; }
.carev2 { margin-top: 8px; padding: 10px 13px; background: var(--card); border: 1px solid var(--line); border-radius: 10px; }
.crevsum2 { flex: 1; min-width: 120px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.carev2 .qbtn { padding: 3px 10px; font-size: 12px; }
[data-dropctx2].dragover, .aiinput.dragover { outline: 2px dashed var(--priMid); outline-offset: 4px; border-radius: 10px; }
.bankkw2 {
  width: 100%; padding: 10px 14px; border: 1px solid var(--line2); border-radius: 10px;
  font: inherit; font-size: 14px; background: var(--card); color: var(--ink);
}
.bankkw2:focus { outline: none; border-color: var(--priMid); }
.vrow2 { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--line); }
.vrow2.reco, .vrow2:first-of-type { border-top: none; }
.vrow2.me { background: var(--priSoft); border-radius: 8px; padding-left: 8px; padding-right: 8px; }
.vplay2 {
  width: 38px; height: 38px; border-radius: 50%; border: none; cursor: pointer;
  background: var(--pri); color: #fff; font-size: 15px; flex: none;
  display: flex; align-items: center; justify-content: center;
}
.vplay2.sm { width: 30px; height: 30px; font-size: 12px; }
.vrule2 { margin: 8px 0 0; padding-left: 18px; font-size: 12.5px; line-height: 1.8; color: var(--ink3); }
.jedlab { display: block; font-size: 12px; color: var(--ink3); margin-top: 8px; }
.jedlab textarea, .jedlab input, .jedlab select {
  display: block; width: 100%; margin-top: 4px; padding: 7px 10px;
  border: 1px solid var(--line2); border-radius: 8px; font: inherit; font-size: 12.5px;
  background: var(--card); color: var(--ink);
}
.jedlab select { width: auto; }

/* ================= G 系列:MathType 预警 / 排课到期 / 详解排版 / 功能色 / 拖拽 / 账户 ================= */
.chip.sm.fxwarn { background: #FBF0DF; border-color: #EBD1A6; color: #A46A0F; font-weight: 600; }
.dupbanner.fx { background: #FBF0DF; border-color: #EBD1A6; color: #7A500C; }
.sched2-card.expired { opacity: 0.55; border-left-color: var(--line2); filter: grayscale(0.5); }
.chip.sm.ok { background: #E4F3E9; border-color: #A9D6B6; color: #1D7A44; }

/* 答案 / 详解:结论卡 + 步骤徽章 */
.ansbox {
  margin-top: 10px; padding: 10px 14px; border-radius: 10px;
  background: #EAF7EF; border: 1px solid #BFE3CB;
}
.ansbox.sm { margin-top: 8px; padding: 8px 12px; }
.anslab {
  display: inline-block; font-size: 11.5px; font-weight: 700; color: #1D7A44;
  background: #D3EEDC; border-radius: 999px; padding: 2px 10px; margin-bottom: 6px;
}
.ansval { font-size: 14px; color: var(--ink); line-height: 1.8; }
.solbox {
  margin-top: 10px; padding: 10px 14px 12px; border-radius: 10px;
  background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--priMid);
}
.sollab {
  display: inline-block; font-size: 11.5px; font-weight: 700; color: var(--priTxt);
  background: var(--priSoft); border-radius: 999px; padding: 2px 10px; margin-bottom: 6px;
}
.solval { font-size: 13.5px; line-height: 1.95; color: var(--ink2); }
.solstep {
  display: inline-block; font-weight: 800; color: var(--priTxt);
  background: var(--priSoft); border: 1px solid var(--priTint);
  border-radius: 7px; padding: 0 7px; margin: 0 3px 0 1px; font-size: 12.5px; line-height: 1.7;
}
.qstem .solstep { background: var(--sunken); border-color: var(--line2); color: var(--ink2); }
/* 题目/答案/详解里的配图(docx 导入的坐标系、几何图等):限宽限高,点击可放大 */
.qstem img, .ansval img, .solval img {
  max-width: min(100%, 440px); max-height: 320px; width: auto; height: auto;
  display: inline-block; vertical-align: middle;
  border: 1px solid var(--line); border-radius: 10px; background: #fff; padding: 4px;
  cursor: zoom-in;
}
/* 小问 (1)(2) 另起一行:fmtSolution 在需要换行的徽章前插入的分隔件(留出约一行的空档) */
.solbr { display: block; height: 1.2em; }
/* 详解配色(方案B):推理词染主题色加粗,「解得」后的关键结果浅黄高亮 —— 只作用于详解区 */
.solval .kw { color: var(--priTxt); font-weight: 800; }
.solval .rs { background: #FDF4E6; border-bottom: 2px solid #F0B429; border-radius: 4px; padding: 0 3px; }

/* 功能色:题型 / 难度色阶 / 考点柔彩 */
.chip.sm.ct-sel  { background: #E7F1FE; border-color: #BBD8FA; color: #1D6FC4; }
.chip.sm.ct-fill { background: #FDF3E3; border-color: #F2DCAE; color: #A16A08; }
.chip.sm.ct-ans  { background: #F1EDFE; border-color: #D8CDF9; color: #6A48D7; }
.chip.sm.cb-1 { background: #E4F5E8; border-color: #B9E2C4; color: #1F8040; }
.chip.sm.cb-2 { background: #EDF6E1; border-color: #D2E7B4; color: #5B8420; }
.chip.sm.cb-3 { background: #FDF3E3; border-color: #F2DCAE; color: #A16A08; }
.chip.sm.cb-4 { background: #FDEDE2; border-color: #F5CFAE; color: #B45A11; }
.chip.sm.cb-5 { background: #FBE9E7; border-color: #F1C0BA; color: #C13B2A; }
.chip.sm.kn-0 { background: #EAF3FB; border-color: #C9DFF2; color: #2C6EA8; }
.chip.sm.kn-1 { background: #EAF7F0; border-color: #C4E6D3; color: #22794C; }
.chip.sm.kn-2 { background: #F6EFFB; border-color: #E2CFF2; color: #7A44A8; }
.chip.sm.kn-3 { background: #FBF0EA; border-color: #F0D4C2; color: #A85B2C; }
.chip.sm.kn-4 { background: #FAEFF4; border-color: #EFCFDE; color: #A8447A; }
.chip.sm.kn-5 { background: #EFF4EA; border-color: #D6E4C6; color: #5D7A2C; }
.qstars { color: #F2A93B; letter-spacing: 1px; }

/* 学生卡拖拽 */
.dragh2 {
  cursor: grab; color: var(--ink4); font-size: 13px; letter-spacing: -1px;
  padding: 4px 5px; border-radius: 6px; user-select: none; flex: none;
}
.dragh2:hover { background: var(--sunken); color: var(--ink2); }
.dragh2:active { cursor: grabbing; }
.stucard.dropover { outline: 2px dashed var(--priMid); outline-offset: 3px; }

/* 个人账户 */
#userCard { width: 100%; border: none; background: transparent; cursor: pointer; font: inherit; border-radius: 12px; padding: 8px; }
#userCard:hover { background: var(--sunken); }
.user-go { margin-left: auto; color: var(--ink4); font-size: 18px; }
.accav {
  width: 44px; height: 44px; border-radius: 50%; flex: none;
  background: var(--pri); color: #fff; font-weight: 700; font-size: 18px;
  display: inline-flex; align-items: center; justify-content: center;
}
.planrow { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
.plancard {
  flex: 1; min-width: 200px; padding: 14px 16px; border-radius: 12px;
  border: 1px solid var(--line); background: var(--card);
  display: flex; flex-direction: column; gap: 5px; align-items: flex-start;
}
.plancard.on { border-color: var(--priMid); background: var(--priSoft); }
.planname { font-weight: 700; font-size: 14.5px; color: var(--ink); }
.planprice { font-size: 20px; font-weight: 800; color: var(--priTxt); font-family: var(--ff-mono); }
.planfeat { font-size: 12.5px; color: var(--ink3); line-height: 1.7; }


/* ================= 试题篮页(组卷网式:左题卡右题号面板) ================= */
.bk2-layout { display: flex; gap: 16px; align-items: flex-start; margin-top: 18px; }
.bk2-main { flex: 1; min-width: 0; }
.bk2-panel { width: 246px; flex: none; position: sticky; top: 14px; }
.bk2-panel .card { padding: 14px 14px 16px; }
.bk2-ptitle { font-size: 13px; font-weight: 800; color: var(--ink); display: flex; align-items: baseline; gap: 8px; }
.bk2-ptotal { font-family: var(--ff-mono); font-size: 11px; color: var(--ink4); font-weight: 400; }
.bk2-divider {
  display: flex; align-items: center; gap: 8px; margin: 13px 0 3px;
  font-family: var(--ff-mono); font-size: 10.5px; color: var(--ink4); letter-spacing: 0.08em; white-space: nowrap;
}
.bk2-divider::before, .bk2-divider::after { content: ''; flex: 1; border-top: 1px dashed var(--line2); }
.bk2-gname { font-size: 12.5px; font-weight: 700; color: var(--ink2); margin: 9px 0 0; }
.bk2-grid { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 7px; }
.bk2-num {
  min-width: 33px; height: 30px; padding: 0 6px; cursor: pointer;
  border: 1.5px solid var(--line2); border-radius: 8px; background: var(--card);
  font-family: var(--ff-mono); font-size: 12.5px; font-weight: 700; color: var(--ink2);
}
.bk2-num:hover { border-color: var(--pri); color: var(--priTxt); background: var(--priSoft); }
.bk2-gh { display: flex; align-items: baseline; gap: 10px; font-size: 15px; font-weight: 800; color: var(--ink); margin: 18px 2px 0; }
.bk2-gh:first-child { margin-top: 0; }
.bk2-ghsub { font-size: 12px; color: var(--ink3); font-weight: 400; }
.bk2-flash { outline: 2.5px solid var(--pri); outline-offset: 3px; border-radius: 12px; transition: outline-color 0.4s; }
@media (max-width: 900px) { .bk2-layout { flex-direction: column-reverse; } .bk2-panel { width: 100%; position: static; } }

/* ================= 套餐与充值页(V3 展示版)+ 用量窗口进度条 ================= */
.pr2-tiers { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; align-items: stretch; margin-top: 18px; }
.pr2-tier { position: relative; display: flex; flex-direction: column; background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 20px 18px; }
.pr2-tier.hot { border: 2px solid var(--pri); box-shadow: 0 14px 34px rgba(35,32,26,0.12); }
.pr2-hot {
  position: absolute; top: -11px; left: 50%; transform: translateX(-50%);
  background: var(--pri); color: #fff; font-size: 11px; font-weight: 700;
  border-radius: 999px; padding: 3px 14px; white-space: nowrap;
}
.pr2-name { font-size: 15px; font-weight: 800; color: var(--ink); }
.pr2-sub { font-size: 11.5px; color: var(--ink3); margin-top: 2px; }
.pr2-price { margin: 14px 0 2px; }
.pr2-price b { font-size: 30px; font-weight: 800; color: var(--ink); font-family: var(--ff-display); }
.pr2-price span { font-size: 12px; color: var(--ink3); }
.pr2-year { font-size: 11.5px; color: var(--priTxt); background: var(--priSoft); border-radius: 999px; padding: 2px 10px; display: inline-block; margin-bottom: 12px; align-self: flex-start; }
.pr2-prox { display: flex; gap: 6px; margin: 0 0 10px; }
.pr2-prox button {
  flex: 1; text-align: center; font-size: 11.5px; border: 1.5px solid var(--line2); border-radius: 8px;
  padding: 5px 0; color: var(--ink2); font-weight: 700; background: var(--card); cursor: pointer;
}
.pr2-prox button.on { border-color: var(--pri); background: var(--priSoft); color: var(--priTxt); }
.pr2-win { font-size: 13px; font-weight: 700; color: var(--priTxt); padding: 8px 0; border-top: 1px dashed var(--line2); border-bottom: 1px dashed var(--line2); margin-bottom: 10px; }
.pr2-win small { display: block; font-weight: 400; color: var(--ink3); font-size: 11px; margin-top: 2px; }
.pr2-feat { font-size: 12.5px; color: var(--ink2); line-height: 2.0; flex: 1; margin: 0; padding: 0; }
.pr2-feat li { list-style: none; padding-left: 18px; position: relative; }
.pr2-feat li::before { content: '✓'; position: absolute; left: 0; color: var(--pri); font-weight: 800; }
.pr2-btn {
  margin-top: 14px; width: 100%; text-align: center; border-radius: 10px; padding: 10px;
  font-weight: 700; font-size: 13px; background: var(--sunken); color: var(--ink3);
  border: none; font-family: inherit;
}
.pr2-btn.cur { background: var(--priSoft); color: var(--priTxt); }
.pr2-two { display: grid; grid-template-columns: 380px 1fr; gap: 14px; margin-top: 14px; align-items: stretch; }
.pr2-rules { margin: 10px 0 0; padding: 0; font-size: 13px; color: var(--ink2); line-height: 2.1; }
.pr2-rules li { list-style: none; padding-left: 16px; position: relative; }
.pr2-rules li::before { content: '·'; position: absolute; left: 4px; color: var(--pri); font-weight: 800; }
.pr2-refs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 12px; }
.pr2-refs > div { background: var(--sunken); border-radius: 12px; padding: 12px 14px; font-size: 12.5px; color: var(--ink2); line-height: 1.9; }
.pr2-refs b { display: block; color: var(--ink); margin-bottom: 3px; }
@media (max-width: 900px) {
  .pr2-tiers { grid-template-columns: 1fr 1fr; }
  .pr2-two, .pr2-refs { grid-template-columns: 1fr; }
}
/* 用量窗口进度条(账户弹窗 + 套餐页共用) */
.urow2 { margin-bottom: 12px; }
.ulab2 { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--ink2); margin-bottom: 6px; }
.ulab2 b { color: var(--ink); }
.ubar2 { height: 8px; border-radius: 999px; background: var(--sunken2); overflow: hidden; }
.ubar2 i { display: block; height: 100%; border-radius: 999px; background: var(--pri); transition: width 0.3s; }
.ubar2 i.warn { background: #E8A13C; }
.ursub2 { font-size: 11px; color: var(--ink4); margin-top: 4px; font-family: var(--ff-mono); }

/* ================= 显示设置(账户弹窗「设置」区,P5-P7)+ 全局生效类 ================= */
.setrow2 { display: flex; align-items: center; gap: 12px; padding: 8px 0; flex-wrap: wrap; }
.setrow2 + .setrow2 { border-top: 1px dashed var(--line); }
.setlab2 { font-size: 13px; font-weight: 600; color: var(--ink); min-width: 118px; }
.setmut2 { font-size: 12px; }
/* 解答字号:只放大解答/详解区域(AI 对话答案、档案分析正文、题库答案详解),不动界面框架 */
body.ansfont-lg .aimsg.a, body.ansfont-lg .recbody, body.ansfont-lg .qans { font-size: 16px; }
body.ansfont-lg .aimsg.a .ai-steps { font-size: 15.5px; }
body.ansfont-lg .aimsg.a .ai-final { font-size: 16.5px; }
body.ansfont-lg .aimsg.a .ai-final b { font-size: 18px; }
body.ansfont-xl .aimsg.a, body.ansfont-xl .recbody, body.ansfont-xl .qans { font-size: 18.5px; }
body.ansfont-xl .aimsg.a .ai-steps { font-size: 18px; }
body.ansfont-xl .aimsg.a .ai-final { font-size: 19px; }
body.ansfont-xl .aimsg.a .ai-final b { font-size: 21px; }
/* 宽幅模式:内容区与对话区放宽,大屏更松快 */
body.widemode .wrap { max-width: 1560px; }
body.widemode .aiwrap { max-width: 1080px; }
/* 解答两列(实验):宽屏下 AI 解答正文分两栏;公式块整体防跨栏截断;与宽幅可叠加 */
@media (min-width: 1100px) {
  body.twocolmode .aimsg.a .ai-steps { column-count: 2; column-gap: 34px; column-rule: 1px solid var(--line); }
  body.twocolmode .aimsg.a .ai-steps mjx-container,
  body.twocolmode .aimsg.a .ai-steps .ai-eq,
  body.twocolmode .aimsg.a .ai-steps li { break-inside: avoid; }
}

/* ================= AI 排课(排课表页,P2) ================= */
.schedai2-input {
  width: 100%; min-height: 64px; resize: vertical; margin-top: 10px;
  border: 1px solid var(--line2); border-radius: 10px; padding: 10px 12px;
  font: inherit; font-size: 13.5px; line-height: 1.7; background: var(--card); color: var(--ink);
}
.schedai2-input:focus { outline: none; border-color: var(--priMid); }
.schedai2-res { margin-top: 12px; font-size: 13px; line-height: 1.8; background: var(--priSoft); border: 1px solid var(--priTint); border-radius: 10px; padding: 10px 14px; color: var(--ink2); }
.schedai2-res.bad { background: #FDF3EC; border-color: #F2CBAF; }
.schedai2-res ul { margin: 6px 0 0; padding-left: 4px; list-style: none; display: flex; flex-direction: column; gap: 3px; }

/* ================= Q 系列:AI 作图(中考几何)/ AI 选题 ================= */
.zkdraw { margin-top: 10px; padding: 12px 14px; }
.zkdraw-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.zkboard { width: 100%; height: 340px; border: 1px solid var(--line); border-radius: 10px; background: #fff; overflow: hidden; }
.aiselrow2 { padding: 7px 4px; border-top: 1px dashed var(--line); font-size: 13px; }
.aiselrow2:first-child { border-top: none; }
