/* 班主任工作台 · 全局样式
 * 由 web/index.html 的 <style> 段拆出（内容未改动）。
 * 桌面端专属排版集中在 html.desktop 下，移动端不受影响。
 */
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      background: #f7f8fa;
      font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", sans-serif;
      -webkit-tap-highlight-color: transparent;
    }
    .page { min-height: 100vh; padding-bottom: 96px; }

    /* ---------- 导航栏（纯 HTML） ---------- */
    .navbar {
      display: flex; align-items: center; padding: 12px 12px;
      background: #fff; position: sticky; top: 0; z-index: 10;
      box-shadow: 0 1px 4px rgba(0, 0, 0, .04);
    }
    .navbar-title { flex: 1; text-align: center; font-size: 16px; font-weight: 600; color: #323233; }
    .navbar-back, .navbar-right {
      font-size: 14px; color: #1989fa; background: none; border: none; padding: 4px;
    }
    .navbar-back { width: 64px; text-align: left; }
    .navbar-right { width: 64px; text-align: right; }

    /* ---------- 卡片与列表（纯 HTML） ---------- */
    .card, .list-card { background: #fff; border-radius: 12px; margin: 12px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.04); }
    .card { padding: 16px; }
    .list-title { padding: 12px 16px 4px; font-size: 13px; color: #969799; }
    .list-item {
      display: flex; align-items: center; padding: 13px 16px; background: #fff;
      border-bottom: 1px solid #f2f3f5; cursor: pointer;
    }
    .list-item:last-child { border-bottom: none; }
    .list-item-main { flex: 1; min-width: 0; }
    .list-item-title { font-size: 15px; color: #323233; }
    .list-item-sub { margin-top: 2px; font-size: 12px; color: #969799; }
    .list-arrow { color: #c8c9cc; font-size: 18px; margin-left: 8px; }
    .list-empty { padding: 32px 16px; text-align: center; color: #969799; font-size: 13px; }
    .list-empty a { color: #1989fa; }
    .roster { max-height: 300px; overflow-y: auto; }

    /* ---------- 标签（纯 HTML） ---------- */
    .tag { display: inline-block; padding: 2px 8px; border-radius: 8px; font-size: 11px; line-height: 16px; margin-left: 6px; }
    .tag-success { background: #e8f7ee; color: #07c160; }
    .tag-warning { background: #fff7e6; color: #ff976a; }
    .tag-danger  { background: #ffe9e9; color: #ee0a24; }
    .tag-default { background: #f2f3f5; color: #969799; }
    .tag-primary { background: #e8f1ff; color: #1989fa; }
    .score { color: #1989fa; font-weight: 600; margin-left: 6px; }

    /* ---------- 进度条（纯 HTML） ---------- */
    .progress-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
    .progress-outer { height: 10px; border-radius: 5px; background: #ebedf0; overflow: hidden; }
    .progress-inner { height: 100%; border-radius: 5px; background: #1989fa; transition: width .3s; }
    .progress-info { margin-top: 8px; font-size: 13px; color: #969799; }

    /* ---------- 按钮（纯 HTML） ---------- */
    .btn {
      display: block; width: 100%; padding: 12px; border: none; border-radius: 24px;
      font-size: 16px; text-align: center; background: none;
    }
    .btn-primary { background: #1989fa; color: #fff; }
    .btn-primary:disabled { background: #b7d9f7; color: #fff; }
    .btn-ghost { background: #f2f3f5; color: #646566; }
    .btn-mini {
      display: inline-block; padding: 4px 10px; border-radius: 8px; font-size: 12px;
      border: 1px solid #1989fa; color: #1989fa; background: #fff; flex-shrink: 0;
    }
    .bottom-bar {
      position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
      padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
      background: #fff; box-shadow: 0 -2px 8px rgba(0, 0, 0, .06);
    }
    .page-pad { padding: 20px 16px; }

    /* ---------- 表单（纯 HTML） ---------- */
    .form-card { background: #fff; border-radius: 12px; margin: 16px 12px 20px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.04); }
    .form-label { display: block; font-size: 13px; color: #969799; margin-bottom: 8px; }
    .name-input {
      width: 100%; padding: 12px 14px; border: 1px solid #ebedf0; border-radius: 8px;
      font-size: 15px; background: #fff; color: #323233; outline: none;
    }

    /* ---------- 弹出层（纯 HTML） ---------- */
    .overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, .5); z-index: 100; display: flex; align-items: flex-end; }
    .sheet { width: 100%; background: #fff; border-radius: 16px 16px 0 0; padding: 8px 16px calc(16px + env(safe-area-inset-bottom)); }
    .sheet-item { padding: 14px; text-align: center; font-size: 16px; color: #323233; border-bottom: 1px solid #f2f3f5; cursor: pointer; }
    .sheet-item:last-child { border-bottom: none; }
    .sheet-cancel { margin-top: 8px; padding: 12px; text-align: center; font-size: 15px; color: #969799; background: #f7f8fa; border-radius: 10px; cursor: pointer; }

    /* ---------- 上传预览 ---------- */
    .upload-title { font-size: 16px; font-weight: 600; padding: 10px 0 12px; }
    .upload-grid { display: flex; flex-wrap: wrap; gap: 10px; }
    .upload-thumb { position: relative; width: 88px; height: 88px; border-radius: 8px; overflow: hidden; background: #f2f3f5; }
    .upload-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .upload-del {
      position: absolute; top: 0; right: 0; width: 22px; height: 22px;
      background: rgba(0, 0, 0, .55); color: #fff; font-size: 12px;
      display: flex; align-items: center; justify-content: center;
      border-bottom-left-radius: 8px; cursor: pointer;
    }
    .upload-page {
      position: absolute; left: 0; bottom: 0; width: 100%; font-size: 11px;
      color: #fff; text-align: center; background: rgba(0, 0, 0, .4); padding: 2px 0;
    }
    .upload-add {
      width: 88px; height: 88px; border: 1px dashed #c8c9cc; border-radius: 8px;
      display: flex; align-items: center; justify-content: center;
      color: #969799; font-size: 22px; text-align: center; line-height: 1.2; cursor: pointer;
    }
    .upload-actions { display: flex; gap: 12px; margin-top: 16px; }
    .upload-actions .btn { flex: 1; }

    /* ---------- Toast（纯 HTML） ---------- */
    #toast-box {
      position: fixed; left: 50%; bottom: 120px; transform: translateX(-50%);
      background: rgba(0, 0, 0, .75); color: #fff; font-size: 14px;
      padding: 10px 18px; border-radius: 8px; z-index: 300; max-width: 80%;
      opacity: 0; transition: opacity .25s; pointer-events: none;
    }

    /* ---------- 批改报告页 ---------- */
    .card-title { font-size: 14px; font-weight: 600; color: #323233; margin-bottom: 10px; }
    .score-summary { display: flex; align-items: center; gap: 24px; }
    .score-big { font-size: 34px; font-weight: 700; color: #1989fa; }
    .score-dims { display: flex; gap: 18px; }
    .score-dim { text-align: center; }
    .dim-name { display: block; font-size: 12px; color: #969799; }
    .dim-val { display: block; font-size: 16px; font-weight: 600; color: #323233; margin-top: 2px; }
    .img-list { display: flex; flex-wrap: wrap; gap: 8px; }
    .img-item { position: relative; width: calc(33.33% - 6px); }
    .img-page { width: 100%; border-radius: 8px; border: 1px solid #ebedf0; display: block; }
    .img-fail {
      position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
      background: #f2f3f5; border-radius: 8px; color: #ee0a24; font-size: 11px; text-align: center;
      padding: 4px; word-break: break-all;
    }
    .list-item.clickable { cursor: pointer; }
    .check {
      width: 20px; height: 20px; border-radius: 50%; border: 1px solid #c8c9cc;
      display: inline-flex; align-items: center; justify-content: center;
      font-size: 12px; color: #fff; margin-right: 10px; flex-shrink: 0; background: #fff;
    }
    .check.on { background: #1989fa; border-color: #1989fa; }
    .img-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, .92); z-index: 200; display: flex; align-items: center; justify-content: center; }
    .img-overlay img { max-width: 100%; max-height: 100%; }

    /* ---------- 评语风格选择 ---------- */
    .style-tabs { display: flex; gap: 8px; margin-bottom: 10px; }
    .style-tab {
      padding: 4px 12px; border-radius: 14px; border: 1px solid #c8c9cc;
      background: #fff; color: #646566; font-size: 12px; cursor: pointer;
    }
    .style-tab.active { border-color: #1989fa; color: #1989fa; background: #e8f1ff; font-weight: 600; }
    /* AI 评语正文：Markdown 渲染后的层级样式 */
    .comment-body { font-size: 14px; line-height: 1.7; color: #323233; }
    .comment-body h1, .comment-body h2, .comment-body h3, .comment-body h4 {
      font-size: 15px; font-weight: 700; color: #1f2329;
      margin: 16px 0 6px; padding-bottom: 4px;
      border-bottom: 1px solid #eef0f3;
    }
    .comment-body p { margin: 6px 0; line-height: 1.7; }
    .comment-body strong { font-weight: 600; }  /* 加粗即强调，保持黑色，不用彩色 */
    .comment-body em { color: #646566; font-style: normal; }
    .comment-body ul, .comment-body ol { margin: 6px 0; padding-left: 22px; }
    .comment-body li { margin: 4px 0; line-height: 1.7; }
    .comment-body blockquote {
      margin: 8px 0; padding: 6px 12px; color: #4b5563;
      border-left: 3px solid #1989fa; background: #f2f6ff; border-radius: 0 6px 6px 0;
    }

    /* ---------- AI 点评标注 ---------- */
    .annotated { font-size: 14px; line-height: 2.1; white-space: pre-wrap; word-break: break-all; color: #323233; }
    .ann { background: #fff6d6; padding: 1px 2px; border-radius: 2px; border-bottom: 2px solid #ffb200; }
    .ann sup { color: #ee0a24; font-size: 10px; font-weight: 700; margin-left: 1px; }
    .finding { padding: 10px 0; border-bottom: 1px solid #f2f3f5; }
    .finding:last-child { border-bottom: none; }
    .finding-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
    .finding-num {
      display: inline-flex; align-items: center; justify-content: center;
      width: 20px; height: 20px; border-radius: 50%;
      background: #1989fa; color: #fff; font-size: 12px; font-weight: 700; flex-shrink: 0;
    }
    .finding-seg { font-size: 14px; color: #323233; font-weight: 600; word-break: break-all; }
    .finding-note { font-size: 13px; color: #646566; line-height: 1.6; }
    .finding-sug { margin-top: 4px; font-size: 13px; color: #07c160; line-height: 1.6; }

    /* ============================================================
       桌面端（大屏）专属排版 —— 仅当 `<html>` 带 `.desktop` 类时生效。
       风格：扁平、克制，去掉大面积的白色卡片与重阴影，
       以留白与极细分割线区分层级；手机端不受影响。
       ============================================================ */
    html.desktop body { background: #f6f7f9; }
    html.desktop #app { max-width: 1080px; margin: 0 auto; padding: 0 28px 48px; box-sizing: border-box; }
    html.desktop .page { padding-bottom: 0; }

    /* 顶部导航：白色细分割线，去掉阴影，标题两侧留出间隔 */
    html.desktop .navbar {
      padding: 15px 8px;
      gap: 14px;
      background: #fff; border-bottom: 1px solid #eceff2; box-shadow: none;
    }
    html.desktop .navbar-title { font-size: 17px; font-weight: 600; text-align: left; color: #1f2329; }
    html.desktop .navbar-back, html.desktop .navbar-right { font-size: 14px; color: #1989fa; padding: 4px 8px; }
    html.desktop .navbar-back { width: auto; text-align: left; }
    html.desktop .navbar-right { width: auto; text-align: right; }

    /* ---------- 分页控件 ---------- */
    .pagination { display: flex; align-items: center; justify-content: center; gap: 14px; margin: 18px 0; padding: 0 16px; }
    .pagination-info { font-size: 13px; color: #969799; }
    .btn-mini:disabled { opacity: .45; cursor: not-allowed; }

    /* 内容：扁平透明，不再堆白盒子，靠间距与细线分级 */
    html.desktop .card, html.desktop .list-card { background: transparent; border: none; box-shadow: none; }
    html.desktop .card { padding: 18px 0; margin: 0; }
    html.desktop .list-card { margin: 0; }
    html.desktop .card-title { font-size: 15px; color: #1f2329; }
    html.desktop .list-title { color: #8a919f; font-size: 13px; padding: 6px 0 8px; }

    /* 细分割线列表行（花名册、任务等） */
    html.desktop .list-card .list-item, html.desktop .class-detail-cards .list-item { border-bottom: 1px solid #eef0f3; }
    html.desktop .list-card .list-item:last-child { border-bottom: none; }

    /* 表单：限宽居中，尽量简单 */
    html.desktop .form-card {
      max-width: 460px; margin: 56px auto; padding: 0;
      background: transparent; border: none; box-shadow: none;  /* 去掉白色卡片，简洁大气 */
    }
    html.desktop .name-input { background: #fff; border: 1px solid #e4e7ec; border-radius: 8px; padding: 11px 14px; }
    html.desktop .form-label { color: #8a919f; }

    /* 新建任务页（桌面）：表单更宽铺满，字段左右分栏 */
    html.desktop .task-form { max-width: 780px; margin: 40px auto; padding: 0; }
    .form-row { display: flex; gap: 16px; margin-top: 16px; }
    .form-col { flex: 1; min-width: 0; }
    @media (max-width: 640px) { .form-row { flex-direction: column; gap: 12px; } }
    html.desktop .task-submit { min-width: 180px; padding: 11px 48px; }

    /* 底部操作栏：去掉盒子，透明居中悬浮按钮 */
    html.desktop .bottom-bar {
      position: sticky; bottom: 0; margin: 28px 0 0;
      background: transparent; border: none; box-shadow: none;
      display: flex; gap: 12px; align-items: center; justify-content: center;
      padding: 16px 0;
    }
    html.desktop .bottom-bar .btn { width: auto; min-width: 150px; padding: 11px 32px; }
    html.desktop .bottom-bar .btn-ghost { min-width: 110px; background: transparent; color: #4b5563; border: 1px solid #e4e7ec; }
    html.desktop .page-pad { text-align: center; padding: 28px 0; }
    html.desktop .page-pad .btn { width: auto; min-width: 200px; display: inline-block; }

    /* 桌面端页面头：标题 + 操作按钮 */
    html.desktop .page-header { display: flex; align-items: center; gap: 12px; margin: 32px 0 10px; }
    html.desktop .page-header-title { font-size: 20px; font-weight: 700; color: #1f2329; }
    html.desktop .page-header-sub { font-size: 13px; color: #8a919f; }
    html.desktop .page-header-btn { width: auto; min-width: 136px; margin-left: auto; padding: 10px 24px; }

    /* 班级选择页：扁平卡片网格（班级卡为唯一白底浅投影，其余页无白盒子） */
    html.desktop .classes-grid { margin: 4px 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
    html.desktop .classes-grid .list-title { display: none; }
    html.desktop .classes-grid .list-item {
      display: flex; align-items: center; gap: 12px;
      background: #fff; border: none; border-bottom: none; border-radius: 10px; padding: 18px;
      box-shadow: 0 1px 2px rgba(0,0,0,.04); cursor: pointer; transition: box-shadow .15s, transform .15s;
    }
    html.desktop .classes-grid .list-item:hover { box-shadow: 0 3px 10px rgba(0,0,0,.08); }
    html.desktop .classes-grid .list-item-main { flex: 1; }
    html.desktop .classes-grid .list-item-title { font-size: 15px; font-weight: 600; color: #1f2329; }
    html.desktop .classes-grid .list-item-sub { margin-top: 2px; font-size: 13px; color: #8a919f; }
    html.desktop .classes-grid .list-arrow { color: #c0c4cc; font-size: 18px; }

    /* 班级详情页：花名册 + 任务 双栏 */
    html.desktop .class-detail-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; align-items: start; margin-top: 8px; }
    html.desktop .class-detail-cards .list-card { margin: 0 !important; }
    @media (max-width: 1024px) { html.desktop .class-detail-cards { grid-template-columns: 1fr; } }

    /* 任务详情页：学生列表表格化（表头极简，无底色） */
    html.desktop .essay-table { width: 100%; border-collapse: collapse; font-size: 14px; }
    html.desktop .essay-table th, html.desktop .essay-table td { text-align: left; padding: 12px 14px; border-bottom: 1px solid #eef0f3; }
    html.desktop .essay-table th { color: #8a919f; font-weight: 500; font-size: 12px; background: transparent; white-space: nowrap; }
    html.desktop .essay-table tbody tr { cursor: pointer; transition: background .15s; }
    html.desktop .essay-table tbody tr:hover { background: #f5f7fa; }
    html.desktop .essay-table tbody tr.selected { background: #eef4ff; }
    html.desktop .essay-table .td-name { font-weight: 600; color: #1f2329; }
    html.desktop .essay-table .td-actions { white-space: nowrap; }
    html.desktop .essay-table .td-actions .btn-mini { margin-left: 8px; }

    /* 单篇批改报告页（桌面）：内容全宽、上下堆叠，原图放底部；文案更紧凑 */
    @media (min-width: 1024px) {
      html.desktop .essay-report-grid { display: block; }
      html.desktop .essay-analysis .card, html.desktop .essay-images .card { padding: 14px 0; }
      html.desktop .essay-analysis .card-title { margin-bottom: 8px; }
      html.desktop .essay-images { margin-top: 10px; }
    }
    html.desktop .score-big { font-size: 40px; }
    html.desktop .score-summary { gap: 28px; }
    html.desktop .img-list { gap: 14px; }
    html.desktop .img-item { width: calc(33.333% - 12px); }
    html.desktop .annotated { font-size: 15px; line-height: 1.85; }
    html.desktop .comment-body { font-size: 14px; line-height: 1.75; }
    html.desktop .finding { padding: 9px 0; }

    /* ==================== AI 工作台助手（对话） ==================== */
    .chat-fab {
      position: fixed; right: 16px; bottom: calc(96px + env(safe-area-inset-bottom));
      z-index: 150; width: 56px; height: 56px; border-radius: 50%;
      background: linear-gradient(135deg, #1989fa, #5a9bff); color: #fff;
      box-shadow: 0 4px 14px rgba(25, 137, 250, .4);
      display: flex; align-items: center; justify-content: center; font-size: 24px; cursor: pointer;
    }
    html.desktop .chat-fab { bottom: 32px; right: 32px; }
    .chat-panel {
      position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,.45);
      display: flex; align-items: flex-end; justify-content: center;
    }
    html.desktop .chat-panel { align-items: center; padding: 32px; }
    .chat-window {
      width: 100%; max-width: 520px; height: 92vh; background: #fff;
      display: flex; flex-direction: column;
      border-radius: 16px 16px 0 0; overflow: hidden;
      box-shadow: 0 -2px 20px rgba(0,0,0,.12);
    }
    html.desktop .chat-window { height: 80vh; max-height: 640px; border-radius: 14px; }
    .chat-head {
      display: flex; align-items: center; gap: 10px; padding: 12px 16px;
      background: linear-gradient(135deg, #1989fa, #5a9bff); color: #fff; flex-shrink: 0;
    }
    .chat-head-title { flex: 1; font-size: 16px; font-weight: 600; }
    .chat-head-sub { font-size: 11px; opacity: .85; }
    .chat-head-close { padding: 4px 8px; font-size: 18px; cursor: pointer; opacity: .9; }
    .chat-session-bar {
      display: flex; gap: 8px; padding: 8px 12px; border-bottom: 1px solid #f2f3f5;
      overflow-x: auto; flex-shrink: 0; background: #fafbfc;
    }
    .chat-chip {
      white-space: nowrap; padding: 4px 12px; border-radius: 14px; font-size: 12px;
      background: #fff; border: 1px solid #e4e7ec; color: #646566; cursor: pointer; flex-shrink: 0;
    }
    .chat-chip.active { background: #e8f1ff; border-color: #1989fa; color: #1989fa; font-weight: 600; }
    .chat-body {
      flex: 1; overflow-y: auto; padding: 14px; background: #f7f8fa;
      display: flex; flex-direction: column; gap: 10px;
    }
    .msg { display: flex; max-width: 85%; }
    .msg.user { align-self: flex-end; justify-content: flex-end; }
    .msg.assistant { align-self: flex-start; }
    .msg-bubble {
      padding: 10px 14px; border-radius: 12px; font-size: 14px; line-height: 1.6;
      word-break: break-word; white-space: pre-wrap;
    }
    .msg.user .msg-bubble { background: #1989fa; color: #fff; border-bottom-right-radius: 4px; }
    .msg.assistant .msg-bubble { background: #fff; color: #323233; border: 1px solid #ebedf0; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
    .msg-assistant .bubble-inner { display: block; }
    .msg-assistant h1, .msg-assistant h2, .msg-assistant h3, .msg-assistant h4 { font-size: 14px; font-weight: 700; margin: 8px 0 4px; }
    .msg-assistant ul, .msg-assistant ol { margin: 4px 0; padding-left: 20px; }
    .msg-assistant li { margin: 2px 0; }
    .msg-assistant strong { font-weight: 700; }
    .msg-tools { margin-top: 4px; font-size: 11px; color: #969799; }
    .chat-input-bar {
      display: flex; gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
      border-top: 1px solid #f2f3f5; background: #fff; flex-shrink: 0;
    }
    .chat-input {
      flex: 1; border: 1px solid #ebedf0; border-radius: 8px; padding: 10px 12px;
      font-size: 15px; outline: none; max-height: 96px; resize: none; line-height: 1.5;
    }
    .chat-input:focus { border-color: #1989fa; }
    .chat-send {
      padding: 0 20px; border: none; border-radius: 8px; background: #1989fa; color: #fff; font-size: 15px;
    }
    .chat-send:disabled { background: #b7d9f7; color: #fff; }
    .chat-empty { text-align: center; color: #969799; padding: 40px 20px; font-size: 13px; line-height: 1.9; }

    /* ==================== 传统导航菜单（顶部） ==================== */
    .app-menu {
      display: flex; align-items: center; gap: 8px; padding: 10px 14px;
      background: #fff; border-bottom: 1px solid #eef0f3;
      /* 窄屏时导航项要能横向滑动，不能让整页横向溢出（否则右侧被裁掉） */
      overflow: hidden;
    }
    html.desktop .app-menu { padding: 12px 6px; gap: 18px; }
    .app-menu-brand { font-weight: 700; color: #1989fa; font-size: 16px; white-space: nowrap; flex-shrink: 0; }
    .app-menu-nav {
      display: flex; gap: 4px; flex: 1 1 auto; min-width: 0;
      overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none;
    }
    .app-menu-nav::-webkit-scrollbar { display: none; }
    .app-menu-item {
      padding: 6px 12px; border-radius: 8px; font-size: 14px; color: #646566;
      cursor: pointer; white-space: nowrap; flex-shrink: 0;
    }
    .app-menu-item.active { background: #e8f1ff; color: #1989fa; font-weight: 600; }
    .app-menu-exit { font-size: 13px; color: #969799; cursor: pointer; white-space: nowrap; flex-shrink: 0; }
    /* 窄屏：品牌名缩小、导航项收紧，保证「班级/场景/AI/台账」都能滑到 */
    @media (max-width: 860px) {
      .app-menu { padding: 8px 10px; gap: 6px; }
      .app-menu-brand { font-size: 14px; }
      .app-menu-item { padding: 5px 9px; font-size: 13px; }
    }
    @media (max-width: 480px) {
      .app-menu-brand { display: none; }   /* 极窄屏优先保证导航项可见 */
    }

    /* ============================================================
       AI 助手对话页（参考 DeepSeek 网页版布局）
       - 桌面端：左侧会话栏 + 中间限宽对话列（读起来不费眼）
       - 移动端：单列全屏，会话栏变抽屉，输入区贴底并适配安全区
       ============================================================ */
    .assistant-page {
      display: flex; height: calc(100vh - 55px); height: calc(100dvh - 55px);
      background: #f9fafb; position: relative; overflow: hidden;
      min-width: 0;
    }
    html.desktop .assistant-page { height: calc(100vh - 88px); border-radius: 12px; }

    /* ---------------- 左侧会话栏（桌面常驻 / 移动抽屉） ---------------- */
    .chat-side {
      width: 248px; flex-shrink: 0; display: flex; flex-direction: column;
      background: #f3f4f6; border-right: 1px solid #e8eaed;
      transition: margin-left .22s ease;
    }
    .chat-side-head { padding: 14px 12px 8px; }
    .chat-new {
      display: flex; align-items: center; justify-content: center; gap: 6px;
      width: 100%; padding: 10px 14px; border-radius: 10px; cursor: pointer;
      background: #fff; border: 1px solid #e4e7ec; color: #1f2329;
      font-size: 14px; font-weight: 600; transition: background .15s, border-color .15s;
    }
    .chat-new:hover { background: #f0f6ff; border-color: #c7dcff; color: #2b5cff; }
    .chat-side-label { padding: 10px 14px 4px; font-size: 12px; color: #9aa1ac; letter-spacing: .3px; }
    .chat-side-list { flex: 1; overflow-y: auto; padding: 0 8px 8px; }
    .chat-side-item {
      display: flex; align-items: center; gap: 6px;
      padding: 9px 10px; margin-bottom: 2px; border-radius: 8px;
      font-size: 13px; color: #4b5563; cursor: pointer; transition: background .12s;
    }
    .chat-side-item:hover { background: #e8eaee; }
    .chat-side-item.active { background: #e2ebff; color: #2b5cff; font-weight: 600; }
    .chat-side-item-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .chat-side-item-del {
      flex-shrink: 0; width: 20px; height: 20px; border-radius: 6px;
      display: none; align-items: center; justify-content: center; font-size: 13px; color: #8a919f;
    }
    .chat-side-item:hover .chat-side-item-del { display: inline-flex; }
    .chat-side-item-del:hover { background: #ffe2e2; color: #ee0a24; }
    .chat-side-empty { padding: 18px 14px; font-size: 12px; color: #9aa1ac; line-height: 1.8; }
    .chat-side-foot {
      padding: 10px 14px calc(12px + env(safe-area-inset-bottom));
      border-top: 1px solid #e8eaed; font-size: 12px; color: #8a919f;
      display: flex; align-items: center; gap: 6px;
    }
    .chat-side-foot .dot { width: 6px; height: 6px; border-radius: 50%; background: #22c55e; flex-shrink: 0; }
    .chat-side-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.36); z-index: 20; }
    .chat-side-toggle { display: none; }

    /* ---------------- 主区 ---------------- */
    .chat-main { flex: 1; display: flex; flex-direction: column; min-width: 0; background: #fff; }
    .chat-top {
      display: flex; align-items: center; gap: 10px; flex-shrink: 0;
      padding: 12px 20px; border-bottom: 1px solid #f1f2f4; background: #fff;
    }
    .chat-top-title {
      flex: 1; min-width: 0; font-size: 15px; font-weight: 600; color: #1f2329;
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .chat-top-sub { font-size: 12px; color: #9aa1ac; font-weight: 400; margin-left: 8px; }
    .chat-class-select {
      flex-shrink: 0; border: 1px solid #e4e7ec; background: #fff; color: #4b5563;
      font-size: 13px; padding: 6px 10px; border-radius: 8px; outline: none; cursor: pointer; max-width: 190px;
    }
    .chat-class-select:focus { border-color: #2b5cff; }

    /* 消息流：限宽居中，长文阅读更舒服 */
    .chat-scroll { flex: 1; overflow-y: auto; }
    .chat-thread {
      max-width: 780px; margin: 0 auto; width: 100%;
      padding: 22px 20px 8px; display: flex; flex-direction: column; gap: 20px;
    }
    .chat-thread.empty { justify-content: center; min-height: 100%; padding-bottom: 24px; }

    /* 消息行：用户靠右气泡，助手整块平铺 */
    .chat-row { display: flex; gap: 12px; }
    .chat-row.user { justify-content: flex-end; }
    .chat-avatar {
      flex-shrink: 0; width: 30px; height: 30px; border-radius: 9px;
      display: flex; align-items: center; justify-content: center;
      font-size: 15px; background: #eef3ff; color: #2b5cff; margin-top: 2px;
    }
    .chat-col { min-width: 0; max-width: 100%; }
    .chat-row.user .chat-col { max-width: 78%; display: flex; flex-direction: column; align-items: flex-end; }
    .chat-bubble-user {
      background: #eaf1ff; color: #1a1a1a; border-radius: 14px 14px 4px 14px;
      padding: 10px 14px; font-size: 15px; line-height: 1.72;
      white-space: pre-wrap; word-break: break-word;
    }
    .chat-body { font-size: 15px; line-height: 1.78; color: #1f2329; word-break: break-word; }
    .chat-body > *:first-child { margin-top: 0; }
    .chat-body > *:last-child { margin-bottom: 0; }
    .chat-body p { margin: 0 0 10px; }
    .chat-body h1, .chat-body h2, .chat-body h3, .chat-body h4 {
      margin: 18px 0 8px; font-size: 15px; font-weight: 700; color: #14181f;
    }
    .chat-body h1 { font-size: 17px; }
    .chat-body ul, .chat-body ol { margin: 6px 0 12px; padding-left: 22px; }
    .chat-body li { margin: 4px 0; }
    .chat-body strong { font-weight: 700; }
    .chat-body a { color: #2b5cff; }
    .chat-body blockquote {
      margin: 10px 0; padding: 8px 14px; color: #4b5563;
      border-left: 3px solid #c7dcff; background: #f7faff; border-radius: 0 8px 8px 0;
    }
    .chat-body hr { border: none; border-top: 1px solid #eef0f3; margin: 16px 0; }
    .chat-body table {
      width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 13.5px;
      display: block; overflow-x: auto;
    }
    .chat-body th, .chat-body td { border: 1px solid #e8eaed; padding: 7px 10px; text-align: left; }
    .chat-body th { background: #f7f8fa; font-weight: 600; color: #4b5563; }
    .chat-body code {
      background: #f4f5f7; padding: 1px 5px; border-radius: 4px;
      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .92em;
    }
    .chat-body pre {
      position: relative; background: #f7f8fa; border: 1px solid #eef0f3;
      border-radius: 10px; padding: 12px 14px; margin: 10px 0; overflow-x: auto;
    }
    .chat-body pre code { background: none; padding: 0; font-size: 13px; line-height: 1.7; }

    /* 思考中：三点跳动 */
    .chat-typing { display: flex; align-items: center; gap: 5px; height: 22px; }
    .chat-typing i {
      width: 6px; height: 6px; border-radius: 50%; background: #c3c8d0;
      animation: chatDot 1.2s infinite ease-in-out;
    }
    .chat-typing i:nth-child(2) { animation-delay: .18s; }
    .chat-typing i:nth-child(3) { animation-delay: .36s; }
    @keyframes chatDot {
      0%, 60%, 100% { transform: translateY(0); opacity: .45; }
      30% { transform: translateY(-4px); opacity: 1; }
    }

    /* 消息操作（复制） */
    .chat-acts { display: flex; gap: 6px; margin-top: 8px; opacity: 0; transition: opacity .15s; }
    .chat-row:hover .chat-acts { opacity: 1; }
    .chat-act { font-size: 12px; color: #8a919f; cursor: pointer; padding: 3px 8px; border-radius: 6px; background: #f7f8fa; }
    .chat-act:hover { background: #eef4ff; color: #2b5cff; }

    /* 结果卡片（AI 执行场景后的回链） */
    .run-cards { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
    .run-card {
      display: flex; align-items: center; gap: 10px;
      padding: 11px 13px; border-radius: 10px; cursor: pointer;
      background: #f7faff; border: 1px solid #dce8ff; transition: background .15s, border-color .15s;
    }
    .run-card:hover { background: #eef4ff; border-color: #bcd4ff; }
    .run-card-main { flex: 1; min-width: 0; }
    .run-card-title { font-size: 13.5px; font-weight: 600; color: #1f2329; }
    .run-card-sub { margin-top: 2px; font-size: 12px; color: #8a919f; }
    .run-card-go { flex-shrink: 0; font-size: 12px; color: #2b5cff; font-weight: 600; }

    /* 后台任务进度 */
    .chat-job { margin-top: 4px; padding: 13px 15px; border: 1px solid #eef0f3; border-radius: 10px; }
    .chat-job-head { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #4b5563; }
    .chat-job-head b { font-weight: 600; color: #1f2329; }
    .chat-job-pct { margin-left: auto; color: #8a919f; font-variant-numeric: tabular-nums; }
    .chat-job .progress-outer { margin-top: 10px; height: 6px; }

    /* ---------------- 欢迎态（空对话） ---------------- */
    .chat-hello { max-width: 640px; margin: 0 auto; width: 100%; }
    .chat-hello-title { font-size: 26px; font-weight: 700; color: #14181f; text-align: center; letter-spacing: .5px; }
    .chat-hello-sub { margin-top: 10px; font-size: 13.5px; color: #9aa1ac; text-align: center; }
    .chat-hello-cards {
      margin-top: 26px; display: grid; gap: 10px;
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    }
    .chat-hello-card {
      display: flex; align-items: flex-start; gap: 10px; text-align: left;
      padding: 13px 14px; border: 1px solid #eceef1; border-radius: 12px;
      background: #fff; cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .15s;
    }
    .chat-hello-card:hover { border-color: #c7dcff; box-shadow: 0 4px 14px rgba(43,92,255,.08); transform: translateY(-1px); }
    .chat-hello-card .ico { font-size: 17px; line-height: 1.4; flex-shrink: 0; }
    .chat-hello-card .txt { font-size: 13.5px; color: #323233; line-height: 1.6; }

    /* 场景目录 */
    .chat-catalog { margin-top: 30px; }
    .chat-catalog-head { display: flex; align-items: center; font-size: 12.5px; color: #9aa1ac; margin-bottom: 10px; }
    .chat-catalog-toggle { margin-left: auto; color: #2b5cff; cursor: pointer; font-size: 12.5px; }
    .chat-catalog-group { margin-bottom: 12px; }
    .chat-catalog-group-title { font-size: 12.5px; color: #8a919f; margin-bottom: 6px; }
    .catalog-chips { display: flex; flex-wrap: wrap; gap: 6px; }
    .catalog-chip {
      padding: 5px 11px; border-radius: 8px; font-size: 12.5px;
      background: #f7f8fa; color: #4b5563; cursor: pointer; border: 1px solid #eef0f3;
      transition: background .12s, color .12s, border-color .12s;
    }
    .catalog-chip:hover { background: #eef4ff; color: #2b5cff; border-color: #d6e6ff; }

    /* ---------------- 底部输入区 ---------------- */
    .chat-composer { flex-shrink: 0; padding: 8px 20px calc(14px + env(safe-area-inset-bottom)); background: #fff; }
    .chat-composer-inner { max-width: 780px; margin: 0 auto; }
    .chat-ctx {
      display: inline-flex; align-items: center; gap: 6px; margin-bottom: 8px;
      padding: 4px 10px; border-radius: 8px; font-size: 12px; color: #2b5cff; background: #eef4ff;
    }
    .chat-ctx .x { cursor: pointer; color: #8a919f; }
    .chat-ctx .x:hover { color: #ee0a24; }
    .chat-box {
      border: 1px solid #e4e7ec; border-radius: 16px; background: #fff;
      box-shadow: 0 2px 10px rgba(20,40,80,.04); transition: border-color .15s, box-shadow .15s;
    }
    .chat-box:focus-within { border-color: #bcd4ff; box-shadow: 0 2px 14px rgba(43,92,255,.10); }
    .chat-input {
      width: 100%; border: none; outline: none; resize: none; background: transparent;
      padding: 13px 16px 4px; font-size: 15px; line-height: 1.65; color: #1a1a1a;
      min-height: 24px; max-height: 168px; font-family: inherit;
    }
    .chat-input::placeholder { color: #a9b0ba; }
    .chat-box-bar { display: flex; align-items: center; gap: 8px; padding: 6px 10px 8px 12px; overflow-x: auto; }
    .chat-quick {
      white-space: nowrap; font-size: 12px; color: #4b5563; background: #f7f8fa;
      border-radius: 8px; padding: 5px 10px; cursor: pointer; flex-shrink: 0;
      transition: background .12s, color .12s;
    }
    .chat-quick:hover { background: #eef4ff; color: #2b5cff; }
    .chat-send {
      margin-left: auto; flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%;
      background: #2b5cff; color: #fff; border: none; cursor: pointer;
      display: inline-flex; align-items: center; justify-content: center; font-size: 15px;
      transition: background .15s;
    }
    .chat-send:hover { background: #1e4fe0; }
    .chat-send.off { background: #ccd6e8; cursor: not-allowed; }
    .chat-hint { margin-top: 8px; text-align: center; font-size: 11.5px; color: #b0b6c0; }

    /* ---------------- 窄屏适配 ---------------- */
    @media (max-width: 860px) {
      body { overflow-x: hidden; }          /* 防横向溢出把整页裁掉 */
      #app { overflow-x: hidden; }
      .chat-side {
        position: absolute; top: 0; bottom: 0; left: 0; z-index: 30;
        width: 264px; margin-left: -264px; box-shadow: 2px 0 18px rgba(0,0,0,.12);
      }
      .chat-side.open { margin-left: 0; }
      .chat-side-toggle {
        display: inline-flex; align-items: center; justify-content: center;
        width: 32px; height: 32px; border-radius: 8px; cursor: pointer;
        background: #f7f8fa; color: #4b5563; font-size: 15px; flex-shrink: 0;
      }
      .chat-top { padding: 10px 14px; gap: 8px; flex-wrap: wrap; }
      /* 窄屏顶栏分两行：第一行=列表按钮+标题，第二行=班级下拉（整行，不会再被裁） */
      .chat-top-title { flex: 1 1 auto; min-width: 0; }
      .chat-class-select {
        order: 3; width: 100%; max-width: none; font-size: 13px; padding: 7px 10px;
      }
      .chat-thread { padding: 16px 14px 8px; gap: 16px; }
      .chat-row.user .chat-col { max-width: 84%; }
      .chat-body, .chat-bubble-user { font-size: 14.5px; }
      .chat-composer { padding: 8px 14px calc(12px + env(safe-area-inset-bottom)); }
      .chat-hello-title { font-size: 21px; }
      .chat-hello-cards { grid-template-columns: 1fr 1fr; gap: 8px; }
      .chat-hello-card { padding: 11px; }
      .chat-hello-card .txt { font-size: 12.5px; }
      .chat-acts { opacity: 1; }              /* 移动端没有 hover，常显 */
      .chat-box-bar .chat-quick { display: none; }  /* 避免输入区拥挤 */
    }
    /* 手机竖屏：示例卡片改单列，避免两列被挤到看不全 */
    @media (max-width: 520px) {
      .chat-hello-cards { grid-template-columns: 1fr; }
      .chat-hello-title { font-size: 19px; }
      .chat-hello-sub { font-size: 12.5px; }
      .chat-top-sub { display: none; }        /* 窄屏省略副标题，优先保证标题完整 */
      .chat-hello-card .txt { font-size: 13px; line-height: 1.55; }
    }

    /* ============================================================
       场景中心（43 个场景的菜单页）
       ============================================================ */
    .sc-head {
      display: flex; align-items: center; gap: 12px;
      padding: 16px 16px 8px; flex-wrap: wrap;
    }
    .sc-head-text { flex: 1; min-width: 180px; }
    .sc-head-title { font-size: 17px; font-weight: 700; color: #1f2329; }
    .sc-head-sub { margin-top: 3px; font-size: 12px; color: #8a919f; }
    .sc-search {
      width: 100%; max-width: 320px; padding: 9px 14px; font-size: 14px;
      border: 1px solid #e4e7ec; border-radius: 18px; outline: none; background: #fff;
    }
    .sc-search:focus { border-color: #1989fa; }

    /* 分类与执行方式筛选 */
    .sc-filters { display: flex; gap: 8px; padding: 4px 16px; overflow-x: auto; flex-wrap: wrap; }
    .sc-filters-sub { padding-top: 0; }
    .sc-chip {
      white-space: nowrap; padding: 6px 14px; border-radius: 16px; font-size: 13px;
      background: #f2f3f5; color: #646566; cursor: pointer; border: 1px solid transparent;
    }
    .sc-chip.active { background: #e8f1ff; color: #1989fa; border-color: #b7d9f7; font-weight: 600; }
    .sc-chip-sm { font-size: 12px; padding: 4px 12px; }

    /* 分组与卡片 */
    .sc-group { margin-top: 18px; }
    .sc-group-title { padding: 0 16px 8px; font-size: 13px; font-weight: 600; color: #646566; }
    .sc-cards {
      display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
      gap: 10px; padding: 0 16px;
    }
    .sc-card {
      background: #fff; border: 1px solid #eef0f3; border-radius: 12px;
      padding: 14px; cursor: pointer; transition: box-shadow .15s, transform .15s;
    }
    .sc-card:hover { box-shadow: 0 4px 14px rgba(20,40,80,.08); transform: translateY(-1px); }
    .sc-card-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .sc-card-no {
      flex-shrink: 0; min-width: 26px; height: 22px; padding: 0 5px;
      display: inline-flex; align-items: center; justify-content: center;
      background: #f2f3f5; color: #646566; border-radius: 6px;
      font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums;
    }
    .sc-card-title { flex: 1; font-size: 15px; font-weight: 600; color: #1f2329; }
    .sc-card-kicker { flex-shrink: 0; font-size: 11px; padding: 3px 8px; border-radius: 8px; white-space: nowrap; }
    .kicker-gen    { background: #fff4e6; color: #d97706; }
    .kicker-form   { background: #e8f7ee; color: #059669; }
    .kicker-algo   { background: #eef2ff; color: #4f46e5; }
    .kicker-report { background: #f0f9ff; color: #0284c7; }
    /* 作业批改：用暖红色系与"生成/统计"区分开 —— 它是一条要动手的作业流 */
    .kicker-grading { background: #fef2f2; color: #dc2626; }

    /* 结果页「下一步」：批改建完任务后要能一键跳到上传/成绩页 */
    .sc-next {
      margin: 12px 16px; padding: 12px 14px; border-radius: 10px;
      background: #f6faff; border: 1px solid #d6e6ff;
    }
    .sc-next-title { font-size: 13px; font-weight: 600; color: #2b5cff; margin-bottom: 8px; }
    .sc-next-actions { display: flex; flex-wrap: wrap; gap: 8px; }
    .sc-next-actions .btn-mini {
      display: inline-block; padding: 7px 14px; border-radius: 16px; background: #fff;
      border: 1px solid #d6e6ff; color: #2b5cff; font-size: 13px; text-decoration: none;
      cursor: pointer;
    }
    .sc-next-actions .btn-mini:hover { background: #eef4ff; }
    html.desktop .sc-next { max-width: 720px; margin-left: auto; margin-right: auto; }

    /* ============================================================
       作业批改列表（跨班级找批改任务、接着没传完的继续）
       ============================================================ */
    .gd-head { padding: 16px 16px 6px; }
    .gd-head-title { font-size: 17px; font-weight: 600; color: #1f2329; }
    .gd-head-sub { margin-top: 6px; font-size: 13px; color: #6b7280; line-height: 1.7; }
    .gd-filters {
      display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 4px 16px 10px;
    }
    .gd-filters .btn { width: auto; }

    .gd-list { padding: 0 16px 16px; display: flex; flex-direction: column; gap: 10px; }
    .gd-card {
      background: #fff; border-radius: 12px; padding: 13px 14px; cursor: pointer;
      box-shadow: 0 1px 4px rgba(0,0,0,.04); border: 1px solid transparent;
    }
    .gd-card:hover { border-color: #d6e6ff; }
    .gd-card-head { display: flex; align-items: center; gap: 8px; }
    .gd-card-title {
      flex: 1; min-width: 0; font-size: 15px; font-weight: 600; color: #1f2329;
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .gd-card-meta { margin-top: 4px; font-size: 12px; color: #969799; }
    .gd-card-fail { color: #ee0a24; }

    /* 上传/批改两条进度条：一眼看出卡在哪一步 */
    .gd-progress { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
    .gd-progress-row { display: flex; align-items: center; gap: 8px; }
    .gd-progress-label { flex-shrink: 0; width: 30px; font-size: 12px; color: #969799; }
    .gd-bar {
      flex: 1; height: 8px; border-radius: 4px; background: #ebedf0; overflow: hidden;
    }
    .gd-bar i { display: block; height: 100%; background: #1989fa; transition: width .3s; }
    .gd-bar-2 i { background: #07c160; }
    .gd-progress-num {
      flex-shrink: 0; min-width: 46px; text-align: right; font-size: 12px; color: #4b5563;
    }

    .gd-card-actions { margin-top: 11px; display: flex; flex-wrap: wrap; gap: 8px; }
    .gd-card-actions .btn-mini { width: auto; }
    .gd-go { background: #eef4ff; border-color: #d6e6ff; color: #2b5cff; font-weight: 600; }

    html.desktop .gd-head, html.desktop .gd-filters {
      max-width: 1080px; margin-left: auto; margin-right: auto;
    }
    html.desktop .gd-list {
      max-width: 1048px; margin: 0 auto;
      display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    }
    html.desktop .pagination { max-width: 1048px; margin: 12px auto; }
    .sc-card-purpose { margin-top: 8px; font-size: 13px; color: #646566; line-height: 1.6; }
    .sc-card-out { margin-top: 6px; font-size: 12px; color: #a6adb8; }

    /* 场景详情页头 */
    .sc-detail-head { padding: 16px 16px 6px; }
    .sc-detail-id { font-size: 12px; color: #8a919f; margin-left: 8px; }
    .sc-detail-purpose { margin-top: 8px; font-size: 14px; color: #323233; line-height: 1.7; }
    .sc-detail-hint { margin-top: 4px; font-size: 12px; color: #8a919f; }
    .sc-detail-when { margin-top: 6px; font-size: 12px; color: #a6adb8; }

    /* 表单 */
    .sc-form { display: flex; flex-direction: column; }
    .sc-form .form-label { margin-top: 14px; }
    .sc-form .form-label:first-child { margin-top: 0; }
    .sc-textarea { resize: vertical; line-height: 1.6; font-family: inherit; }
    .sc-switch { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #323233; }
    .sc-switch input { width: 18px; height: 18px; }
    .sc-tip { margin-top: 6px; font-size: 12px; color: #8a919f; line-height: 1.6; }
    .sc-tip-center { text-align: center; margin-top: 10px; }
    .sc-error {
      margin-top: 14px; padding: 10px 12px; border-radius: 8px;
      background: #fef0f0; color: #ee0a24; font-size: 13px; line-height: 1.6;
    }
    .sc-warn {
      margin: 12px 16px 0; padding: 10px 12px; border-radius: 8px;
      background: #fff7e6; color: #b45309; font-size: 13px; line-height: 1.7;
    }
    .sc-run { margin-top: 22px; }

    /* 结果页 */
    .sc-result-head {
      display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap;
      padding: 16px 16px 8px;
    }
    .sc-result-title { font-size: 16px; font-weight: 700; color: #1f2329; }
    .sc-result-sub { margin-top: 4px; font-size: 13px; color: #8a919f; }
    .sc-result-actions { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }
    .sc-projected { margin: 0 16px 8px; font-size: 12px; color: #059669; }
    .sc-result-foot { display: flex; gap: 12px; padding: 8px 16px 24px; }
    .sc-result-foot .btn { flex: 1; }

    /* 结构化结果：座位图 */
    .seat-wrap { overflow-x: auto; padding-bottom: 4px; }
    .seat-stage {
      text-align: center; font-size: 13px; font-weight: 600; color: #646566;
      background: #f2f3f5; border-radius: 8px; padding: 6px; margin-bottom: 10px;
    }
    .seat-row { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; white-space: nowrap; }
    .seat-row-no { flex-shrink: 0; width: 44px; font-size: 11px; color: #a6adb8; }
    .seat-cell {
      position: relative; display: inline-flex; flex-direction: column; align-items: center;
      justify-content: center; min-width: 62px; padding: 6px 8px;
      background: #eef4ff; border: 1px solid #d6e6ff; border-radius: 8px;
      font-size: 13px; color: #1f2329;
    }
    .seat-cell.empty { background: #f7f8fa; border-color: #eef0f3; color: #c8c9cc; }
    .seat-cell .seat-group { font-size: 10px; color: #6b7280; font-style: normal; }

    /* 结构化结果：表格 */
    .sc-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .sc-table th, .sc-table td {
      text-align: left; padding: 8px 10px; border-bottom: 1px solid #eef0f3; word-break: break-all;
    }
    .sc-table th { color: #8a919f; font-weight: 500; font-size: 12px; white-space: nowrap; }
    .sc-h4 { margin: 14px 0 6px; font-size: 14px; font-weight: 600; color: #323233; }
    .sc-h4:first-child { margin-top: 0; }
    .sc-reasons { margin: 6px 0 0; padding-left: 20px; font-size: 13px; color: #4b5563; line-height: 1.9; }

    /* ============================================================
       场景中心：搜索 + 两个带标签的筛选
       原来是一行说明文字 + 两排胶囊（分类一排、执行方式一排），
       首屏被文字和 13 个胶囊占满，而且两排看不出区别。现在：
       - 删掉说明文字（不承担功能）
       - 分类与执行方式各收进一个带标签的下拉，一行放得下
       ============================================================ */
    .sc-toolbar { padding: 12px 16px 0; }
    .sc-toolbar-filters {
      display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
      padding-top: 8px;
    }
    .sc-filter { display: flex; align-items: center; gap: 6px; min-width: 0; }
    .sc-filter-label {
      flex-shrink: 0; font-size: 12px; color: #8a919f;
    }
    .sc-filter-select {
      flex: 1; min-width: 0; max-width: 220px;
      padding: 8px 10px; border: 1px solid #e5e7eb; border-radius: 10px;
      background: #fff; font-size: 13px; color: #323233;
    }
    .sc-filter-select:focus { border-color: #d6e6ff; outline: none; }
    .sc-result-count {
      font-size: 12px; color: #8a919f; display: flex; align-items: center; gap: 6px;
    }
    .sc-clear {
      padding: 2px 8px; border: none; background: none; border-radius: 8px;
      color: #2b5cff; font-size: 12px; cursor: pointer;
    }
    .sc-clear:hover { background: #eef4ff; }

    /* 分组标题上的计数徽标（替代原来的「（5）」括号） */
    .sc-group-count {
      display: inline-block; min-width: 18px; padding: 0 6px; margin-left: 4px;
      border-radius: 9px; background: #eef2f7; font-size: 11px; font-weight: 400;
      color: #6b7280; text-align: center; vertical-align: 1px;
    }
    html.desktop .sc-toolbar { max-width: 1080px; margin-left: auto; margin-right: auto; }
    /* 操作日志页仍在用 .sc-head（它的标题带功能信息："菜单页和 AI 对话做的事都会留在这里"） */
    html.desktop .sc-head { padding: 20px 0 10px; }
    html.desktop .sc-filters { padding: 4px 0; }
    html.desktop .sc-group-title { padding: 0 0 8px; }
    html.desktop .sc-cards { padding: 0; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
    html.desktop .sc-form { max-width: 720px; margin: 0 auto; padding-top: 10px; }
    html.desktop .sc-detail-head { padding: 20px 0 6px; }
    html.desktop .sc-result-head { padding: 20px 0 8px; }
    html.desktop .sc-warn, html.desktop .sc-projected { margin-left: 0; margin-right: 0; }
    html.desktop .sc-result-foot { padding: 16px 0 32px; justify-content: center; }
    html.desktop .sc-result-foot .btn { flex: 0 0 auto; min-width: 160px; }

    /* ============================================================
       AI 对话页：结果卡片 + 场景目录
       ============================================================ */
    .run-cards { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; }
    .run-card {
      display: flex; align-items: center; gap: 10px;
      padding: 10px 12px; border-radius: 10px; cursor: pointer;
      background: #f6faff; border: 1px solid #d6e6ff; transition: background .15s;
    }
    .run-card:hover { background: #eef4ff; }
    .run-card-main { flex: 1; min-width: 0; }
    .run-card-title { font-size: 13px; font-weight: 600; color: #1f2329; }
    .run-card-sub { margin-top: 2px; font-size: 12px; color: #8a919f; }
    .run-card-go { flex-shrink: 0; font-size: 12px; color: #2b5cff; font-weight: 600; }

    .catalog-toggle { margin-left: 8px; font-size: 12px; color: #2b5cff; cursor: pointer; }
    .catalog-group { margin-top: 12px; }
    .catalog-group-title { font-size: 12px; color: #8a919f; margin-bottom: 6px; }
    .catalog-chips { display: flex; flex-wrap: wrap; gap: 6px; }
    .catalog-chip {
      padding: 5px 10px; border-radius: 12px; font-size: 12px;
      background: #f7f8fa; color: #4b5563; cursor: pointer; border: 1px solid #eef0f3;
    }
    .catalog-chip:hover { background: #eef4ff; color: #2b5cff; border-color: #d6e6ff; }

    /* ============================================================
       今日工作台（进入系统第一屏）
       目标：早上 10 秒看清"今天要做什么"，每件事点一下就结掉
       ============================================================ */
    .tw-head {
      display: flex; align-items: flex-start; gap: 12px; flex-wrap: wrap;
      padding: 16px 16px 8px;
    }
    .tw-head-text { flex: 1; min-width: 0; }
    .tw-head-title { font-size: 17px; font-weight: 600; color: #1f2329; line-height: 1.5; }
    .tw-head-title b { color: #2b5cff; font-size: 20px; }
    .tw-head-title b.hot { color: #ee0a24; }
    .tw-head-sub { margin-top: 6px; font-size: 13px; color: #6b7280; line-height: 1.7; }
    .tw-class {
      flex-shrink: 0; min-width: 130px; padding: 8px 10px; border: 1px solid #e5e7eb;
      border-radius: 10px; background: #fff; font-size: 13px; color: #323233;
    }
    .tw-actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 4px 16px 12px; }
    .tw-actions .btn { width: auto; flex: 0 0 auto; }

    .tw-clear { padding: 48px 20px; text-align: center; }
    .tw-clear-icon { font-size: 40px; }
    .tw-clear-title { margin-top: 10px; font-size: 16px; font-weight: 600; color: #07c160; }
    .tw-clear-sub { margin-top: 6px; font-size: 13px; color: #969799; }

    .tw-group { margin: 12px 16px 0; }
    .tw-group-head { display: flex; align-items: center; gap: 8px; padding: 0 2px 8px; }
    .tw-group-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
    .tw-dot-overdue { background: #ee0a24; }
    .tw-dot-today { background: #ff976a; }
    .tw-dot-soon { background: #1989fa; }
    .tw-dot-nodate { background: #969799; }
    .tw-dot-gap { background: #b8860b; }
    .tw-group-title { font-size: 14px; font-weight: 600; color: #323233; }
    .tw-group-count {
      min-width: 20px; padding: 1px 7px; border-radius: 10px; background: #eef2f7;
      font-size: 12px; color: #4b5563; text-align: center;
    }
    .tw-group-hint { font-size: 12px; color: #969799; }

    .tw-items { background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.04); }
    .tw-item {
      display: flex; align-items: center; gap: 10px;
      padding: 12px 14px; border-bottom: 1px solid #f2f3f5;
    }
    .tw-item:last-child { border-bottom: none; }
    /* 高优先级用左侧色条标记：一眼扫出哪些不能拖 */
    .tw-item-high { box-shadow: inset 3px 0 0 #ee0a24; }
    .tw-item-main { flex: 1; min-width: 0; cursor: pointer; }
    .tw-item-action { font-size: 14px; color: #323233; line-height: 1.6; word-break: break-word; }
    .tw-item-who { font-weight: 600; color: #1f2329; margin-right: 4px; }
    .tw-item-detail {
      margin-top: 3px; font-size: 12px; color: #969799;
      display: flex; flex-wrap: wrap; gap: 4px 10px;
    }
    .tw-item-due { color: #ff976a; }
    .tw-done {
      flex-shrink: 0; padding: 6px 14px; border: 1px solid #d6e6ff; border-radius: 16px;
      background: #f6faff; color: #2b5cff; font-size: 13px; cursor: pointer;
    }
    .tw-done:hover { background: #eef4ff; }
    .tw-done:disabled { opacity: .5; cursor: default; }
    .tw-gap { background: #fffdf5; }
    .tw-gap-action { color: #b8860b; }

    /* ============================================================
       台账（12 个业务资源的通用增删改查）
       ============================================================ */
    .rc-tabs {
      display: flex; gap: 8px; overflow-x: auto; padding: 10px 16px 6px;
      scrollbar-width: none; -webkit-overflow-scrolling: touch;
    }
    .rc-tabs::-webkit-scrollbar { display: none; }
    .rc-tab {
      flex-shrink: 0; padding: 6px 12px; border-radius: 14px; font-size: 13px;
      background: #fff; color: #4b5563; border: 1px solid #eef0f3; cursor: pointer;
      white-space: nowrap;
    }
    .rc-tab.active { background: #eef4ff; color: #2b5cff; border-color: #d6e6ff; font-weight: 600; }
    .rc-desc { padding: 0 16px 8px; font-size: 12px; color: #969799; line-height: 1.6; }

    .rc-filters { display: flex; flex-wrap: wrap; gap: 8px; padding: 4px 16px 10px; }
    .rc-select, .rc-search {
      padding: 9px 10px; border: 1px solid #e5e7eb; border-radius: 10px;
      background: #fff; font-size: 13px; color: #323233; min-width: 0;
    }
    .rc-select { max-width: 180px; }
    .rc-select-sm { max-width: 130px; }
    .rc-search { flex: 1; min-width: 140px; }
    .rc-search-num { max-width: 90px; }

    .rc-bar { display: flex; align-items: center; justify-content: space-between; padding: 0 16px 8px; }
    .rc-count { font-size: 12px; color: #969799; }
    .rc-add { width: auto; }

    .rc-table-wrap {
      margin: 0 16px; background: #fff; border-radius: 12px; overflow-x: auto;
      box-shadow: 0 1px 4px rgba(0,0,0,.04);
    }
    .rc-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .rc-table th, .rc-table td {
      padding: 10px 12px; text-align: left; border-bottom: 1px solid #f2f3f5;
      white-space: nowrap; max-width: 260px; overflow: hidden; text-overflow: ellipsis;
    }
    .rc-table th { font-size: 12px; font-weight: 500; color: #8a919f; background: #fafbfc; }
    .rc-table tbody tr:last-child td { border-bottom: none; }
    .rc-table tbody tr:hover { background: #fafbfc; }
    .rc-th-op, .rc-td-op { width: 96px; text-align: right; }
    .rc-op { color: #2b5cff; cursor: pointer; margin-left: 10px; font-size: 13px; }
    .rc-op-danger { color: #ee0a24; }

    /* 新增/编辑面板：移动端从底部升起，桌面端居中卡片 */
    .rc-form-mask {
      position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 60;
      display: flex; align-items: flex-end; justify-content: center;
    }
    .rc-form {
      width: 100%; max-width: 560px; max-height: 90vh; background: #fff;
      border-radius: 16px 16px 0 0; display: flex; flex-direction: column;
    }
    .rc-form-head {
      display: flex; align-items: center; padding: 14px 16px; border-bottom: 1px solid #f2f3f5;
    }
    .rc-form-title { flex: 1; font-size: 15px; font-weight: 600; color: #323233; }
    .rc-form-close { font-size: 18px; color: #969799; cursor: pointer; padding: 0 4px; }
    .rc-form-body { flex: 1; overflow-y: auto; padding: 14px 16px; }
    .rc-form-foot {
      display: flex; gap: 10px; padding: 12px 16px;
      padding-bottom: calc(12px + env(safe-area-inset-bottom));
      border-top: 1px solid #f2f3f5;
    }
    .rc-field { margin-bottom: 14px; }
    .rc-field .sc-switch input { width: auto; }
    .rc-req { color: #ee0a24; margin-left: 3px; }
    .rc-help { margin-top: 3px; font-size: 12px; color: #969799; line-height: 1.5; }

    /* ============================================================
       一屏登记（考勤 / 作业 / 成绩）—— 70 人班的关键效率点
       ============================================================ */
    .bt-tabs { display: flex; gap: 8px; padding: 10px 16px 6px; }
    .bt-tab {
      flex: 1; padding: 9px 0; text-align: center; border-radius: 10px; font-size: 13px;
      background: #fff; color: #4b5563; border: 1px solid #eef0f3; cursor: pointer;
    }
    .bt-tab.active { background: #eef4ff; color: #2b5cff; border-color: #d6e6ff; font-weight: 600; }
    .bt-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 16px; }
    .bt-head .rc-search { flex: 1; min-width: 140px; }
    .bt-head-2 { padding-top: 0; }
    .bt-tip {
      margin: 4px 16px 8px; padding: 10px 12px; border-radius: 10px;
      background: #f6faff; border: 1px solid #d6e6ff; font-size: 12px;
      color: #4b5563; line-height: 1.75;
    }
    .bt-tip b { color: #2b5cff; }
    .bt-actions { display: flex; gap: 8px; padding: 4px 16px 10px; }
    .bt-actions .btn { width: auto; flex: 1; }
    .bt-result {
      margin: 0 16px 10px; padding: 10px 12px; border-radius: 10px;
      background: #e8f7ee; color: #07c160; font-size: 13px; line-height: 1.6;
    }
    .bt-roster {
      margin: 0 16px 16px; background: #fff; border-radius: 12px; overflow: hidden;
      box-shadow: 0 1px 4px rgba(0,0,0,.04);
    }
    .bt-row {
      display: flex; align-items: center; gap: 10px;
      padding: 9px 12px; border-bottom: 1px solid #f2f3f5;
    }
    .bt-row:last-child { border-bottom: none; }
    .bt-no { flex-shrink: 0; width: 54px; font-size: 12px; color: #969799; }
    .bt-name { flex: 1; min-width: 0; font-size: 14px; color: #323233; }
    .bt-mark {
      flex-shrink: 0; min-width: 74px; padding: 6px 10px; border-radius: 14px;
      border: 1px solid #e5e7eb; background: #f7f8fa; color: #4b5563;
      font-size: 13px; cursor: pointer;
    }
    .bt-mark.att-present { background: #e8f7ee; color: #07c160; border-color: #bfe9d0; }
    .bt-mark.att-late { background: #fff7e6; color: #ff976a; border-color: #ffe0b2; }
    .bt-mark.att-leave { background: #e8f1ff; color: #1989fa; border-color: #cfe2ff; }
    .bt-mark.att-absent { background: #ffe9e9; color: #ee0a24; border-color: #ffd0d0; }
    .bt-score {
      flex-shrink: 0; width: 82px; padding: 7px 10px; border: 1px solid #e5e7eb;
      border-radius: 10px; font-size: 13px; text-align: center;
    }

    /* 桌面端：内容限宽居中，表格与卡片不再贴边 */
    html.desktop .tw-head, html.desktop .tw-actions, html.desktop .rc-tabs,
    html.desktop .rc-desc, html.desktop .rc-filters, html.desktop .rc-bar,
    html.desktop .bt-tabs, html.desktop .bt-head, html.desktop .bt-actions {
      max-width: 1080px; margin-left: auto; margin-right: auto;
    }
    html.desktop .tw-group { max-width: 1080px; margin-left: auto; margin-right: auto; }
    html.desktop .rc-table-wrap { max-width: 1048px; margin-left: auto; margin-right: auto; }
    html.desktop .bt-tip { max-width: 1048px; margin-left: auto; margin-right: auto; }
    html.desktop .bt-result { max-width: 1048px; margin-left: auto; margin-right: auto; }
    html.desktop .bt-roster {
      max-width: 1048px; margin-left: auto; margin-right: auto;
      display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
      padding: 8px; gap: 8px; box-shadow: none; background: transparent;
    }
    html.desktop .bt-row {
      border: 1px solid #eef0f3; border-radius: 10px; background: #fff; padding: 8px 10px;
    }
    html.desktop .rc-form-mask { align-items: center; }
    html.desktop .rc-form { border-radius: 16px; max-height: 84vh; }
    html.desktop .rc-form-foot { padding-bottom: 12px; }
    html.desktop .pagination { max-width: 1048px; margin: 12px auto; }

    /* ============================================================
       场景页底部的「已有记录」：在哪记录就在哪看到之前记过什么
       ============================================================ */
    .sc-existing {
      margin: 16px 16px 0; background: #fff; border-radius: 12px;
      box-shadow: 0 1px 4px rgba(0,0,0,.04); overflow: hidden;
    }
    .sc-existing-head {
      display: flex; align-items: center; gap: 8px;
      padding: 12px 14px; border-bottom: 1px solid #f2f3f5;
    }
    .sc-existing-title { flex: 1; font-size: 15px; font-weight: 600; color: #1f2329; }
    .sc-existing-count {
      margin-left: 6px; padding: 1px 8px; border-radius: 10px;
      background: #eef2f7; font-size: 12px; font-weight: 400; color: #4b5563;
    }
    .sc-existing-add {
      width: auto; padding: 6px 14px; border-radius: 16px;
      background: #eef4ff; border: 1px solid #d6e6ff; color: #2b5cff; font-weight: 600;
    }
    /* 班级选择放在列表头部：记录是按班看的 */
    .sc-existing-class { padding: 10px 14px 0; }
    .sc-existing-class .rc-select { max-width: 100%; width: 100%; }
    /* 新增表单页的二级导航 */
    .sc-subnav { box-shadow: none; border-bottom: 1px solid #f2f3f5; }
    .sc-existing-list { max-height: 420px; overflow-y: auto; }
    .sc-existing-item {
      display: flex; align-items: center; padding: 10px 14px;
      border-bottom: 1px solid #f7f8fa;
    }
    .sc-existing-item:last-child { border-bottom: none; }
    .sc-existing-main { flex: 1; min-width: 0; }
    .sc-existing-text {
      font-size: 14px; color: #323233; line-height: 1.6;
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .sc-existing-who { font-weight: 600; color: #1f2329; margin-right: 4px; }
    .sc-existing-sub {
      margin-top: 3px; font-size: 12px; color: #969799;
      display: flex; align-items: center; gap: 6px;
    }
    html.desktop .sc-existing { max-width: 720px; margin-left: auto; margin-right: auto; }

    /* ============================================================
       学生详情页
       ============================================================ */
    .sp-head {
      display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
      padding: 16px 16px 4px;
    }
    /* 姓名这一行要有保底宽度（min-width），不能靠"抢剩余空间"。
       原来写 flex:1 + min-width:0，剩余宽度会被右侧按钮全吃掉，
       390px 手机上姓名只剩几十像素，中文就一个字一行地竖着排。
       保底 180px 放不下时，flex-wrap 会让按钮整行换到下一行。 */
    .sp-who {
      flex: 1; min-width: 180px;
      display: flex; align-items: baseline; flex-wrap: wrap;
      column-gap: 8px; row-gap: 2px;
    }
    .sp-name {
      font-size: 19px; font-weight: 700; color: #1f2329;
      word-break: keep-all;      /* 中文姓名不逐字断行 */
      overflow-wrap: anywhere;   /* 名字特别长时才断，避免撑破屏幕 */
    }
    .sp-no { font-size: 12px; color: #969799; }
    .sp-actions { display: flex; flex-wrap: wrap; gap: 8px; }
    .sp-actions .btn-mini { width: auto; }
    .sp-card { margin-top: 12px; }

    /* 成绩：一次考试的科目横向排开，不及格/偏低有颜色 */
    .sp-exam { padding: 8px 0; border-bottom: 1px dashed #f2f3f5; }
    .sp-exam:last-child { border-bottom: none; }
    .sp-exam-head { display: flex; justify-content: space-between; align-items: baseline; }
    .sp-exam-name { font-size: 13px; font-weight: 600; color: #323233; }
    .sp-exam-date { font-size: 12px; color: #969799; }
    .sp-subs { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px; }
    .sp-sub {
      padding: 4px 10px; border-radius: 8px; font-size: 13px;
      background: #f7f8fa; color: #4b5563;
    }
    .sp-sub b { margin-left: 3px; }
    .sp-sub i { font-style: normal; font-size: 11px; color: #969799; }
    .sp-sub.sp-good { background: #e8f7ee; color: #059669; }
    .sp-sub.sp-mid { background: #fff7e6; color: #d97706; }
    .sp-sub.sp-low { background: #ffe9e9; color: #ee0a24; }

    .sp-writing { padding: 8px 0; border-bottom: 1px dashed #f2f3f5; }
    .sp-writing:last-child { border-bottom: none; }
    .sp-writing-head {
      display: flex; justify-content: space-between; gap: 8px;
      font-size: 13px; font-weight: 600; color: #323233;
    }
    .sp-writing-score { color: #1989fa; flex-shrink: 0; }
    .sp-writing-comment {
      margin-top: 4px; font-size: 13px; color: #4b5563; line-height: 1.7;
      white-space: pre-wrap;
    }

    .sp-group { margin-top: 10px; }
    .sp-group:first-child { margin-top: 0; }
    .sp-group-title { font-size: 12px; color: #8a919f; margin-bottom: 4px; }
    .sp-item { padding: 7px 0; border-bottom: 1px solid #f7f8fa; }
    .sp-item:last-child { border-bottom: none; }
    .sp-item-text { font-size: 14px; color: #323233; line-height: 1.6; }
    .sp-item-time {
      margin-top: 3px; font-size: 12px; color: #969799;
      display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    }
    html.desktop .sp-head, html.desktop .sp-card {
      max-width: 720px; margin-left: auto; margin-right: auto;
    }
    /* 学生详情里的记录行可以点进详情 */
    .sp-item-link { cursor: pointer; }
    .sp-item-link:hover { background: #fafbfc; }
    .sp-item-link .list-arrow { font-size: 15px; margin-left: auto; }

    /* ============================================================
       记录详情页
       ============================================================ */
    .rd-head {
      display: flex; align-items: center; gap: 10px;
      padding: 16px 16px 8px;
    }
    .rd-head-main { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; }
    .rd-icon { font-size: 22px; }
    .rd-who { font-size: 17px; font-weight: 600; color: #1f2329; }
    .rd-id { margin-left: 6px; font-size: 12px; font-weight: 400; color: #c8c9cc; }
    .rd-time { margin-top: 3px; font-size: 12px; color: #969799; }

    /* 可执行操作：主操作蓝底，危险操作红字 */
    .rd-actions { margin: 4px 16px 0; }
    .rd-actions-title { font-size: 12px; color: #8a919f; margin-bottom: 8px; }
    .rd-actions-row { display: flex; flex-wrap: wrap; gap: 8px; }
    .rd-action {
      width: auto; padding: 8px 16px; border-radius: 18px;
      background: #fff; border: 1px solid #e5e7eb; color: #4b5563; font-size: 13px;
    }
    .rd-action-primary {
      background: #eef4ff; border-color: #d6e6ff; color: #2b5cff; font-weight: 600;
    }
    .rd-action-danger { color: #ee0a24; border-color: #f5c2c7; }
    .rd-action:disabled { opacity: .6; }
    .rd-actions-empty { padding: 10px 0 0; font-size: 12px; color: #969799; }

    .rd-fields { margin-top: 14px; }
    .rd-field { padding: 9px 0; border-bottom: 1px solid #f7f8fa; }
    .rd-field:last-child { border-bottom: none; }
    .rd-field-label { font-size: 12px; color: #8a919f; }
    .rd-field-value {
      margin-top: 3px; font-size: 15px; color: #1f2329; line-height: 1.7;
      word-break: break-word;
    }
    /* 长文本保留换行：这是一条记录最该看清的部分 */
    .rd-field-long { white-space: pre-wrap; }
    .rd-field-help { margin-top: 3px; font-size: 12px; color: #a6adb8; }
    html.desktop .rd-head, html.desktop .rd-actions, html.desktop .rd-fields {
      max-width: 720px; margin-left: auto; margin-right: auto;
    }

    /* 手机端：表格改横向滚动更自然，顶部导航允许横向滑动 */
    @media (max-width: 520px) {
      .tw-head { gap: 8px; }
      .tw-class { width: 100%; }
      .bt-no { width: 44px; }
      .bt-name { font-size: 13px; }
      .rc-table th, .rc-table td { max-width: 160px; }

      /* 学生详情页头部：姓名独占一行，操作按钮整行换行并均分宽度。
         之前姓名和三个按钮挤在同一行，姓名列只剩几十像素 → 竖排。 */
      .sp-head { align-items: stretch; row-gap: 10px; }
      .sp-who { flex: 1 1 100%; min-width: 0; }
      .sp-actions { flex: 1 1 100%; }
      .sp-actions .btn-mini { flex: 1 1 auto; text-align: center; }
    }
