    :root{--bg:#f6f7fb;--card:#fff;--text:#1f2937;--muted:#6b7280;--line:#e5e7eb;--primary:#2563eb;--primary-dark:#1d4ed8;--success:#059669;--warning:#d97706;--danger:#dc2626;--soft-blue:#eff6ff;--soft-green:#ecfdf5;--soft-red:#fef2f2;--shadow:0 10px 30px rgba(15,23,42,.08);--radius:18px}
    *{box-sizing:border-box} body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif;background:var(--bg);color:var(--text)}
    header{background:linear-gradient(135deg,#1d4ed8,#3b82f6 55%,#60a5fa);color:#fff;padding:28px 5vw} header h1{margin:0 0 8px;font-size:28px} header p{margin:0;opacity:.92;line-height:1.6}
    .app{width:min(1380px,94vw);margin:-24px auto 40px}.topbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:18px}
    .tabs,.row,.teacher-nav,.mini-nav{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.spacer{flex:1}.hidden{display:none!important}
    button,.tab-btn{border:0;border-radius:999px;padding:10px 16px;cursor:pointer;font-weight:650;color:var(--text);background:#eef2ff;transition:.18s ease}.tab-btn.active,button.primary{background:var(--primary);color:white}button.dark,.teacher-nav button.active{background:#111827;color:white}button.danger{background:var(--soft-red);color:var(--danger)}button.success{background:var(--soft-green);color:var(--success)}button.warning{background:#fff7ed;color:var(--warning)}button:hover,.tab-btn:hover{transform:translateY(-1px);filter:brightness(.98)}button:disabled{opacity:.55;cursor:not-allowed;transform:none}
    .grid{display:grid;gap:18px}.grid-2{grid-template-columns:1.05fr .95fr}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-5{grid-template-columns:repeat(5,1fr)}
    .card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.subcard{box-shadow:none;background:#fbfdff}.card h2,.card h3,.card h4{margin:0 0 14px}.muted{color:var(--muted)}
    .pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700;background:var(--soft-blue);color:var(--primary-dark);white-space:nowrap}
    label{display:block;font-size:14px;color:#374151;margin:12px 0 6px;font-weight:650}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:14px;background:#fff;outline:none}textarea{min-height:110px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:#93c5fd;box-shadow:0 0 0 3px rgba(59,130,246,.12)}
    .notice{padding:12px 14px;border-radius:14px;background:#fffbeb;border:1px solid #fde68a;color:#92400e;line-height:1.55;margin:12px 0}.ok{padding:12px 14px;border-radius:14px;background:var(--soft-green);border:1px solid #a7f3d0;color:#065f46;line-height:1.55;margin:12px 0}
    table{width:100%;border-collapse:collapse;margin-top:12px;font-size:14px;overflow:visible}th,td{border-bottom:1px solid var(--line);padding:10px 8px;text-align:left;vertical-align:top}th{color:#374151;background:#f9fafb;font-weight:750}tr:hover td{background:#fafafa}
    .metric{padding:16px;background:#f9fafb;border:1px solid var(--line);border-radius:16px}.metric .num{font-size:28px;font-weight:850;color:#111827}.metric .label{color:var(--muted);margin-top:4px}
    .timer{font-size:24px;font-weight:850;color:var(--primary-dark);padding:8px 14px;border-radius:14px;background:var(--soft-blue)}.timer.danger-text{color:var(--danger);background:var(--soft-red)}
    .test-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.passage-box{max-height:72vh;overflow:auto;line-height:1.75;white-space:pre-wrap}.question-card{border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px;background:#fff}.question-card .qid{font-weight:800;color:var(--primary-dark);margin-bottom:8px}.question-type{font-size:12px;color:#475569;margin-bottom:8px}.option{display:flex;align-items:flex-start;gap:8px;margin:8px 0}.option input{width:auto;margin-top:3px}.section-title{position:sticky;top:0;background:var(--card);z-index:3;padding-bottom:8px;border-bottom:1px solid var(--line)}.mini-nav{margin:10px 0}.mini-nav button{min-width:38px;padding:7px 9px;background:#f3f4f6;color:#374151}.mini-nav button.done{background:var(--soft-green);color:var(--success)}.footer-actions{position:sticky;bottom:0;background:rgba(255,255,255,.95);border-top:1px solid var(--line);padding:12px 0 0;backdrop-filter:blur(10px)}.student-progress{position:fixed;left:50%;bottom:12px;transform:translateX(-50%);width:min(1180px,94vw);background:rgba(255,255,255,.97);border:1px solid var(--line);box-shadow:0 12px 32px rgba(15,23,42,.16);border-radius:16px;z-index:9999;padding:10px 12px;backdrop-filter:blur(10px)}.student-progress .progress-inner{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.progress-title{font-weight:800;color:#374151;white-space:nowrap}.progress-buttons{display:flex;gap:5px;flex-wrap:wrap;align-items:center}.progress-buttons button{min-width:32px;padding:6px 8px;border-radius:9px;background:#f3f4f6;color:#374151}.progress-buttons button.done{background:var(--soft-green);color:var(--success)}.progress-buttons button.current{outline:2px solid var(--primary-dark);background:var(--soft-blue);color:var(--primary-dark)}.progress-buttons button.done.current{background:var(--soft-green)!important;color:var(--success)!important;outline:2px solid var(--primary-dark)}.student-progress.collapsed{width:auto}.student-progress.collapsed .progress-title,.student-progress.collapsed .progress-buttons,.student-progress.collapsed .progress-note{display:none}#testView{padding-bottom:92px}
    .class-block{margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fff}.answer-chip{display:inline-block;margin:2px 4px 2px 0;padding:4px 8px;border-radius:999px;background:#f1f5f9;font-size:12px}.import-preview{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:12px;background:#f8fafc;white-space:pre-wrap}.editor-toolbar{padding:12px;border:1px dashed #bfdbfe;border-radius:16px;background:#eff6ff;margin:12px 0}.task-mode-btn.active{background:#111827!important;color:#fff!important}.editor-section{border:1px solid var(--line);border-radius:18px;padding:16px;margin:16px 0;background:#fbfdff}.editor-question-group{border:1px solid #bfdbfe;border-radius:18px;padding:14px;margin:14px 0;background:#eff6ff}.editor-question{border:1px solid #dbeafe;border-radius:16px;padding:14px;margin:12px 0;background:#fff}.editor-question textarea{min-height:80px}.question-group{border:1px solid #e5e7eb;border-radius:16px;padding:12px;margin:14px 0;background:#fff}.question-group-title{font-weight:850;color:#1e40af;margin-bottom:8px}.group-range{font-weight:850;color:#111827}.preview-paper{line-height:1.7}.preview-paper h3{border-bottom:1px solid var(--line);padding-bottom:8px;margin-top:24px}.preview-q{padding:8px 0;border-bottom:1px dashed #e5e7eb}.small{font-size:12px;color:var(--muted)}.group-content-box{margin:12px 0;padding:12px;border:1px dashed #93c5fd;border-radius:14px;background:#f8fbff}.group-paste-zone{min-height:56px;border:1px dashed #cbd5e1;border-radius:12px;background:#fff;padding:10px;color:#64748b;line-height:1.5}.group-image-preview img,.group-content-display img{max-width:100%;border:1px solid var(--line);border-radius:12px;margin-top:8px}.group-content-display{margin:10px 0;padding:12px;border-radius:14px;background:#f8fafc;border:1px solid #e2e8f0}.group-content-text-display{white-space:pre-wrap;line-height:1.65}
    .modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:min(980px,96vw);max-height:88vh;overflow:auto;background:#fff;border-radius:22px;box-shadow:0 24px 72px rgba(15,23,42,.3);padding:22px;border:1px solid var(--line)}.modal h2{margin:0 0 12px}.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:10px}.check-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:9px 10px;background:#fff}.check-item input{width:auto}.student-check-panel{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:12px;background:#f8fafc}.answer-module{margin-top:14px;padding:14px;border:1px dashed #a7f3d0;border-radius:16px;background:#ecfdf5}.score-ok{color:var(--success);font-weight:800}.score-bad{color:var(--danger);font-weight:800}.score-pending{color:var(--muted);font-weight:700}.answer-module-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.answer-module-header h4{margin:0;font-size:16px;color:#1f2937}.answer-help-details summary{cursor:pointer;color:#6d28d9;font-weight:650;font-size:13px;list-style:none}.answer-help-details summary::-webkit-details-marker{display:none}.answer-help-details summary::before{content:"▸ ";display:inline-block;transition:transform .2s}.answer-help-details[open] summary::before{transform:rotate(90deg)}.answer-progress{position:relative;width:100%;height:22px;background:#e5e7eb;border-radius:11px;overflow:hidden;margin-bottom:10px}.answer-progress-bar{height:100%;background:linear-gradient(90deg,#6d28d9,#a78bfa);border-radius:11px;transition:width .3s ease}.answer-progress.complete .answer-progress-bar{background:linear-gradient(90deg,#16a34a,#4ade80)}.answer-progress-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:750;color:#374151}.answer-module-divider{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:#6b7280;font-size:13px;font-weight:650}.answer-module-divider::before,.answer-module-divider::after{content:'';flex:1;height:1px;background:#d1d5db}.editor-question.missing-answer{border-color:#f59e0b;background:#fffbeb}.editor-question.missing-answer .q-answer-label::after{content:'（未填写）';color:#d97706;font-size:12px;margin-left:6px;font-weight:600}
    @media(max-width:1000px){.grid-2,.grid-3,.grid-4,.grid-5,.test-layout{grid-template-columns:1fr}header h1{font-size:22px}.app{width:96vw}}

    .editor-module{margin-top:16px;padding:16px;border:1px solid #d8c7ff;border-radius:16px;background:#fbf8ff;}
    .editor-module h4{margin:0 0 12px;color:#3b0764;}

    /* purple-hotfix */
    :root {
      --bg: #f5f0ff !important;
      --primary: #6d28d9 !important;
      --primary-dark: #4c1d95 !important;
      --soft-blue: #f3e8ff !important;
      --soft-green: #f5f3ff !important;
    }
    html, body { background: #f5f0ff !important; }
    header { background: linear-gradient(135deg, #4c1d95, #6d28d9 55%, #a78bfa) !important; }
    .topbar, .card { background: #ffffff !important; }
    .editor-toolbar, .editor-question-group, .group-content-box, .notice, .import-preview, .question-group, .stat-card {
      background: #faf5ff !important;
      border-color: #ddd6fe !important;
    }
    button, .tab-btn { background: #ede9fe !important; color: #2e1065 !important; }
    button.primary, button.dark, button.active, .tab-btn.active, .teacher-nav button.active, .task-mode-btn.active,
    .shortcut-btn.active, .mode-btn.active, .quick-btn.active, .toggle-btn.active,
    [aria-pressed="true"] {
      background: #4c1d95 !important;
      color: #ffffff !important;
      border-color: #4c1d95 !important;
      box-shadow: 0 6px 16px rgba(76, 29, 149, 0.24) !important;
    }
    button.success { background: #6d28d9 !important; color: #fff !important; }
    button.warning { background: #f3e8ff !important; color: #6d28d9 !important; }
    button.danger { background: #fce7f3 !important; color: #be185d !important; }
    .pill, .answer-chip { background: #ede9fe !important; color: #4c1d95 !important; }
    .question-group-title, .qid { color: #4c1d95 !important; }

    /* v13-hotfix */
    .self-action-btn.active, .group-page-btn.active, .preview-page-btn.active {
      background:#4c1d95 !important;
      color:#fff !important;
      border-color:#4c1d95 !important;
      box-shadow:0 6px 16px rgba(76,29,149,.24) !important;
    }
    .group-page-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0 14px;padding:10px;border:1px solid #ddd6fe;border-radius:14px;background:#faf5ff}
    .group-page-nav .page-info{font-weight:800;color:#4c1d95;white-space:nowrap}
    .highlight-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0;color:#6b21a8;font-size:13px}
    .text-highlight{background:#fde68a;border-radius:3px;padding:0 1px}
    .passage-box.highlightable{cursor:text;user-select:text;background:#fff;border:1px solid #ede9fe;border-radius:14px;padding:12px}
    .question-card .question-type{display:none!important}
    .question-card{background:#fff!important}

    /* v21-progress-and-student-cleanup */
    .progress-buttons button.done{
      background:#16a34a !important;
      color:#fff !important;
      border:2px solid #16a34a !important;
      outline:none !important;
      font-weight:800 !important;
    }
    .progress-buttons button.current{
      background:#6d28d9 !important;
      color:#fff !important;
      border:2px solid #6d28d9 !important;
      outline:none !important;
      font-weight:950 !important;
    }
    .progress-buttons button.done.current{
      background:#16a34a !important;
      color:#fff !important;
      border:2px solid #6d28d9 !important;
      box-shadow:0 0 0 3px rgba(109,40,217,.35) !important;
      font-weight:950 !important;
    }

    /* monitor progress bar in task management */
    .monitor-progress{position:relative;width:100%;height:18px;background:#e5e7eb;border-radius:9px;overflow:hidden}
    .monitor-progress-bar{height:100%;background:linear-gradient(90deg,#6d28d9,#a78bfa);border-radius:9px;transition:width .3s ease}
    .monitor-progress-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#374151}

    /* ===== 提交试卷按钮 - 加红加大 ===== */
    button.btn-submit-test {
      background: #dc2626 !important;
      color: #fff !important;
      font-size: 16px !important;
      font-weight: 700 !important;
      padding: 12px 28px !important;
      border-radius: 999px !important;
      box-shadow: 0 2px 6px rgba(220, 38, 38, 0.25) !important;
      border: none !important;
      transition: background .2s ease, box-shadow .2s ease !important;
    }
    button.btn-submit-test:hover {
      background: #ef4444 !important;
      box-shadow: 0 4px 14px rgba(220, 38, 38, 0.35) !important;
    }
    button.btn-submit-test:disabled {
      background: #9ca3af !important;
      color: #fff !important;
      cursor: not-allowed;
      box-shadow: none !important;
    }

    /* ===== 班级管理页面样式 ===== */
    .class-list { display:flex; flex-direction:column; gap:8px; max-height:360px; overflow-y:auto; padding-right:4px; }
    .class-card { display:flex; align-items:center; justify-content:space-between; padding:12px 14px; border:1px solid var(--line); border-radius:14px; background:#fff; cursor:pointer; transition:.15s ease; }
    .class-card:hover { border-color:#c4b5fd; background:#faf5ff; }
    .class-card.active { border-color:#6d28d9; background:#f3e8ff; box-shadow:0 0 0 2px rgba(109,40,217,.15); }
    .class-card-name { font-weight:750; font-size:15px; color:#1e1b4b; }
    .class-card-meta { font-size:12px; color:var(--muted); margin-top:2px; }
    .class-card-actions { display:flex; gap:6px; align-items:center; }
    .class-tabs button { background:transparent; border-radius:8px; padding:6px 12px; font-size:13px; }
    .class-tabs button.active { background:var(--primary); color:#fff; }
    .class-search-wrap { position:relative; margin-bottom:12px; }
    .class-search-wrap input { padding-left:36px; }
    .class-search-icon { position:absolute; left:12px; top:50%; transform:translateY(-50%); font-size:14px; color:#a78bfa; pointer-events:none; }

    /* ===== 折叠功能样式 ===== */
    .editor-section.collapsed .sec-passage,
    .editor-section.collapsed .questions-box,
    .editor-section.collapsed .section-fold-target { display:none !important; }
    .editor-section .fold-btn { background:#ede9fe !important; color:#4c1d95 !important; font-size:12px; padding:6px 12px !important; }
    .editor-section.collapsed .fold-btn::before { content:'展开 '; }
    .editor-section:not(.collapsed) .fold-btn::before { content:'收起 '; }

    /* ===== 富文本工具栏样式 ===== */
    .rich-toolbar { display:flex; gap:6px; align-items:center; margin:6px 0; padding:6px 10px; background:#f5f3ff; border:1px solid #ddd6fe; border-radius:10px; }
    .rich-toolbar button { min-width:32px; padding:5px 10px; font-size:13px; background:#fff; border:1px solid #ddd6fe; color:#4c1d95; }
    .rich-toolbar button:hover { background:#ede9fe; }
    .rich-toolbar .rich-sep { width:1px; height:18px; background:#ddd6fe; margin:0 4px; }
    .rich-editable { border:1px solid var(--line); border-radius:10px; padding:10px 12px; min-height:120px; background:#fff; white-space:pre-wrap; overflow:auto; outline:none; }
    .rich-editable:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(124,58,237,0.08); }
    .rich-editable b, .rich-editable strong { font-weight:700; }
    .rich-editable i, .rich-editable em { font-style:italic; }
    .rich-editable u { text-decoration:underline; text-decoration-color:#7c3aed; text-underline-offset:2px; text-decoration-thickness:2px; }

    /* 学生端与预览区域富文本统一样式 */
    .passage-box b, .passage-box strong, .question-card b, .question-card strong { font-weight:700; }
    .passage-box i, .passage-box em, .question-card i, .question-card em { font-style:italic; }
    .passage-box u, .question-card u { text-decoration:underline; text-decoration-color:#7c3aed; text-underline-offset:2px; text-decoration-thickness:2px; }

    /* ===== SQL导入区域样式 ===== */
    .sql-import-zone { margin-top:12px; padding:14px; border:1px dashed #c4b5fd; border-radius:14px; background:#faf5ff; }
    .sql-import-zone .notice { background:#fff; border-color:#ddd6fe; }

    /* ===== 浮动高亮菜单 ===== */
    #highlightMenu { position:absolute; z-index:99999; display:none; background:#1e1b4b; color:#fff; padding:6px 14px; border-radius:10px; font-size:13px; gap:6px; align-items:center; box-shadow:0 8px 24px rgba(30,27,75,.35); cursor:pointer; white-space:nowrap; user-select:none; }
    #highlightMenu:hover { background:#312e81; }

    /* ===== 数据概览样式 V2 ===== */
    .overview-metric { position:relative; padding:22px 20px; border-radius:16px; background:#fff; border:1px solid #ede9fe; box-shadow:0 2px 10px rgba(76,29,149,.05); overflow:hidden; transition:all .2s ease; }
    .overview-metric:hover { transform:translateY(-3px); box-shadow:0 8px 24px rgba(76,29,149,.1); }
    .overview-metric::before { content:''; position:absolute; top:0; left:0; right:0; height:4px; border-radius:16px 16px 0 0; }
    .overview-metric.accent-blue::before { background:linear-gradient(90deg,#2563eb,#60a5fa); }
    .overview-metric.accent-green::before { background:linear-gradient(90deg,#059669,#34d399); }
    .overview-metric.accent-orange::before { background:linear-gradient(90deg,#d97706,#fbbf24); }
    .overview-metric.accent-purple::before { background:linear-gradient(90deg,#6d28d9,#a78bfa); }
    .overview-metric.accent-red::before { background:linear-gradient(90deg,#dc2626,#f87171); }
    .overview-metric .metric-icon-wrap { position:absolute; top:16px; right:16px; width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:800; }
    .overview-metric.accent-blue .metric-icon-wrap { background:#e0e7ff; color:#2563eb; }
    .overview-metric.accent-green .metric-icon-wrap { background:#d1fae5; color:#059669; }
    .overview-metric.accent-orange .metric-icon-wrap { background:#ffedd5; color:#d97706; }
    .overview-metric.accent-purple .metric-icon-wrap { background:#f3e8ff; color:#6d28d9; }
    .overview-metric.accent-red .metric-icon-wrap { background:#ffe4e6; color:#dc2626; }
    .overview-metric .num { font-size:34px; font-weight:900; color:#1e1b4b; line-height:1; margin-top:10px; letter-spacing:-.5px; }
    .overview-metric .label { font-size:13px; color:#6b7280; margin-top:10px; font-weight:600; }
    .overview-metric .sub { font-size:13px; color:#9ca3af; margin-top:6px; font-weight:500; }
    .overview-metric .sub strong { color:#6d28d9; font-size:14px; }

    .overview-table { width:100%; border-collapse:separate; border-spacing:0; margin-top:12px; font-size:14px; border:1px solid #ede9fe; border-radius:14px; overflow:hidden; background:#fff; }
    .overview-table thead th { background:linear-gradient(180deg,#faf5ff,#f5f3ff); color:#4c1d95; font-weight:750; padding:14px 16px; text-align:left; border-bottom:2px solid #ede9fe; white-space:nowrap; }
    .overview-table tbody td { padding:14px 16px; border-bottom:1px solid #f3f4f6; vertical-align:middle; }
    .overview-table tbody tr:last-child td { border-bottom:none; }
    .overview-table tbody tr:hover td { background:#faf5ff; }
    .overview-table tbody tr.empty-row td { color:#9ca3af; font-style:italic; background:#fcfbff; padding:10px 16px; }
    .overview-table tbody tr:nth-child(even):not(.empty-row) td { background:#fdfcff; }
    .overview-table tbody tr:nth-child(even):not(.empty-row):hover td { background:#faf5ff; }
    .overview-table .class-rank { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; border-radius:50%; font-size:12px; font-weight:800; margin-right:8px; }
    .overview-table .class-rank.gold { background:#fef3c7; color:#92400e; }
    .overview-table .class-rank.silver { background:#e5e7eb; color:#374151; }
    .overview-table .class-rank.bronze { background:#fed7aa; color:#9a3412; }
    .overview-table .class-rank.normal { background:#f3f4f6; color:#6b7280; }
    .mini-bar { position:relative; width:100%; height:10px; background:#f3f4f6; border-radius:5px; overflow:hidden; }
    .mini-bar-fill { height:100%; border-radius:5px; background:linear-gradient(90deg,#6d28d9,#a78bfa); transition:width .5s ease; }
    .mini-bar-text { position:absolute; inset:0; display:flex; align-items:center; justify-content:flex-end; padding-right:6px; font-size:10px; font-weight:800; color:#4c1d95; line-height:1; }
    .rate-badge { display:inline-flex; align-items:center; gap:6px; padding:4px 12px; border-radius:999px; font-size:12px; font-weight:700; background:#f3e8ff; color:#4c1d95; border:1px solid #ede9fe; }
    .rate-badge.empty { background:#f9fafb; color:#9ca3af; border-color:#e5e7eb; }
    .overview-section-title { font-size:18px; font-weight:800; color:#1e1b4b; margin-bottom:6px; display:flex; align-items:center; gap:8px; }
    .overview-section-desc { font-size:13px; color:#6b7280; margin-bottom:16px; }
    .overview-header { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:18px; flex-wrap:wrap; gap:8px; }
    .overview-header-left h3 { margin:0; font-size:20px; font-weight:800; color:#1e1b4b; }
    .overview-header-left p { margin:4px 0 0; font-size:13px; color:#6b7280; }
    .overview-class-count { font-size:13px; color:#6b7280; font-weight:600; background:#f5f3ff; padding:6px 14px; border-radius:999px; }

    /* ===== V1.59: 班级拖动排序 ===== */
    .class-card[draggable="true"] { cursor:grab; }
    .class-card[draggable="true"]:active { cursor:grabbing; }
    .class-card.drag-over { border-color:#6d28d9; background:#f3e8ff; box-shadow:0 0 0 3px rgba(109,40,217,.25); }
    .class-card .drag-handle { color:#a78bfa; font-size:16px; user-select:none; cursor:grab; padding:4px 6px; border-radius:8px; transition:background .15s ease; }
    .class-card .drag-handle:hover { background:#ede9fe; color:#6d28d9; }
    .class-card[draggable="true"] { cursor:grab; }
    .class-card[draggable="true"]:active { cursor:grabbing; }

    /* ===== V1.59: 答案更新模式 ===== */
    .answer-only-mode .section-fold-target,
    .answer-only-mode .group-instruction,
    .answer-only-mode .q-prompt,
    .answer-only-mode .q-options,
    .answer-only-mode .group-content-box,
    .answer-only-mode .rich-toolbar,
    .answer-only-mode .editor-section .fold-btn,
    .answer-only-mode .sec-title + label,
    .answer-only-mode .editor-section > .row:first-child button:not(.fold-btn) { display:none !important; }
    .answer-only-mode .editor-section { padding:10px 14px; margin:10px 0; }
    .answer-only-mode .editor-question-group { padding:10px 12px; margin:10px 0; background:#fff; }
    .answer-only-mode .editor-question { border:1px solid var(--line); padding:8px 10px; margin:6px 0; border-radius:10px; background:#fff; }
    .answer-only-mode .answer-mode-header { padding:10px 14px; margin-bottom:10px; border-radius:12px; background:#f3e8ff; border:1px solid #ddd6fe; color:#4c1d95; font-weight:700; }
    .answer-only-mode .q-answer-buttons { display:flex; gap:6px; flex-wrap:wrap; margin-top:6px; }
    .answer-only-mode .q-answer-buttons button { padding:5px 12px; border-radius:8px; background:#fff; border:1px solid #ddd6fe; color:#4c1d95; font-size:13px; }
    .answer-only-mode .q-answer-buttons button.selected { background:#4c1d95; color:#fff; border-color:#4c1d95; }
    .answer-only-mode .q-answer-input-wrap { margin-top:6px; }
    .answer-only-mode.editor-section.collapsed .questions-box,
    .answer-only-mode .editor-section.collapsed .questions-box { display:block !important; }
    .group-empty-notice { padding:16px; border-radius:14px; background:#fffbeb; border:1px solid #fde68a; color:#92400e; text-align:center; margin:12px 0; font-size:14px; line-height:1.7; }
    .editor-step-bar { display:flex; gap:8px; flex-wrap:wrap; margin:10px 0 14px; }
    .editor-step { display:flex; align-items:center; gap:6px; font-size:13px; font-weight:650; color:#4c1d95; background:#f3e8ff; padding:6px 12px; border-radius:999px; }
    .editor-step .num { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; background:#4c1d95; color:#fff; border-radius:999px; font-size:12px; }

    /* ===== 编辑流程图 ===== */
    .editor-flow { display:flex; align-items:flex-start; gap:0; padding:18px 16px 14px; background:linear-gradient(135deg,#f5f3ff 0%,#ede9fe 100%); border:1px solid #ddd6fe; border-radius:16px; margin:10px 0 16px; overflow-x:auto; }
    .editor-flow-step { display:flex; flex-direction:column; align-items:center; gap:6px; min-width:90px; flex-shrink:0; }
    .editor-flow-step .flow-icon { width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:20px; background:#fff; border:2px solid #c4b5fd; box-shadow:0 2px 8px rgba(124,58,237,.1); }
    .editor-flow-step .flow-label { font-size:12px; font-weight:700; color:#4c1d95; text-align:center; line-height:1.4; }
    .editor-flow-step .flow-sub { font-size:11px; color:#7c3aed; text-align:center; line-height:1.3; }
    .editor-flow-arrow { display:flex; align-items:center; padding:0 4px; margin-top:10px; flex-shrink:0; }
    .editor-flow-arrow svg { width:28px; height:16px; color:#a78bfa; }

    /* ===== V1.59: 试题列表操作下拉菜单 ===== */
    .action-dropdown { position:relative; display:inline-flex; isolation:isolate; }
    .action-dropdown.open { z-index:100; }
    .action-dropdown-menu { position:absolute; right:0; top:calc(100% + 6px); background:#fff; border:1px solid #e2e8f0; border-radius:14px; box-shadow:0 12px 32px rgba(15,23,42,.15); z-index:1000; min-width:170px; overflow:hidden; display:none; padding:6px; pointer-events:auto; }
    .action-dropdown.open .action-dropdown-menu { display:block; }
    .action-dropdown.up .action-dropdown-menu { top:auto; bottom:calc(100% + 6px); }
    .action-dropdown-menu button { display:flex; align-items:center; gap:8px; width:100%; text-align:left; padding:9px 12px; border-radius:8px; background:#fff; border:none; font-size:13px; font-weight:500; color:#334155; cursor:pointer; transition:.12s; margin-bottom:1px; }
    .action-dropdown-menu button:last-child { margin-bottom:0; }
    .action-dropdown-menu button:hover { background:#f8fafc; color:#1e293b; }
    td .action-dropdown > button { padding:6px 12px; font-size:12px; }
    td.row { display:flex; gap:6px; align-items:center; flex-wrap:nowrap; overflow:visible; position:relative; }
    .action-dropdown-menu button.danger { color:#dc2626; }
    .action-dropdown-menu button.danger:hover { background:#fef2f2; color:#b91c1c; }
    .action-dropdown-menu button.warning { color:#d97706; }
    .action-dropdown-menu button.warning:hover { background:#fffbeb; color:#b45309; }
    .action-dropdown-menu .menu-divider { height:1px; background:#f1f5f9; margin:5px 8px; }
    .filter-tags { display:flex; gap:8px; margin-bottom:10px; flex-wrap:wrap; }
    .filter-tag { padding:5px 14px; border-radius:999px; font-size:13px; font-weight:650; background:#f5f3ff; color:#6b7280; border:1px solid #e5e7eb; cursor:pointer; }
    .filter-tag.active { background:#4c1d95; color:#fff; border-color:#4c1d95; }

    /* ===== V1.75: 报告卡片样式 ===== */
    .v33-report-card { background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; box-shadow:0 4px 16px rgba(15,23,42,.06); }
    .v33-report-header { align-items:flex-start; padding-bottom:16px; margin-bottom:18px; border-bottom:1px solid #f1f5f9; }
    .v33-report-header h2 { margin:0 0 6px; font-size:20px; font-weight:800; color:#1e293b; }
    .v33-report-header .muted { font-size:13px; color:#64748b; }
    .report-downloads-v33 { gap:8px; flex-wrap:wrap; justify-content:flex-end; }
    .report-downloads-v33 .soft-report-btn { padding:8px 16px; border-radius:10px; font-size:13px; font-weight:600; }

    /* ===== V1.59: 监考面板 ===== */
    .monitor-panel { max-height:64vh; overflow:auto; }
    .monitor-table { width:100%; border-collapse:collapse; font-size:13px; margin-top:8px; }
    .monitor-table th, .monitor-table td { padding:8px 10px; border-bottom:1px solid #f3f4f6; text-align:left; }
    .monitor-table th { background:#faf5ff; color:#4c1d95; font-weight:750; }
    .monitor-table tbody tr:hover td { background:#faf5ff; }
    .monitor-status-submitted { color:#059669; font-weight:700; }
    .monitor-status-progress { color:#d97706; font-weight:700; }
    .monitor-live-dot { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:#6b7280; font-weight:600; }
    .live-pulse { display:inline-block; width:8px; height:8px; background:#22c55e; border-radius:50%; animation:livePulse 1.4s infinite; }
    @keyframes livePulse { 0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(34,197,94,.7);} 70%{transform:scale(1);box-shadow:0 0 0 6px rgba(34,197,94,0);} 100%{transform:scale(.95);box-shadow:0 0 0 0 rgba(34,197,94,0);} }

    /* ===== V1.69: 模态框全局美化 ===== */
    .modal-backdrop { animation:modalFadeIn .25s ease; backdrop-filter:blur(6px); }
    @keyframes modalFadeIn { from { opacity:0; } to { opacity:1; } }
    .modal { animation:modalSlideIn .3s cubic-bezier(.16,1,.3,1); background:#fff; border:1px solid #e2e8f0; box-shadow:0 24px 72px rgba(15,23,42,.18),0 0 0 1px rgba(15,23,42,.04); }
    @keyframes modalSlideIn { from { opacity:0; transform:translateY(18px) scale(.98); } to { opacity:1; transform:translateY(0) scale(1); } }
    .modal .row:first-child { align-items:center; padding-bottom:14px; margin-bottom:14px; border-bottom:1px solid #f1f5f9; }
    .modal .row:first-child h2,.modal .row:first-child h3 { margin:0; font-size:18px; font-weight:800; color:#1e293b; letter-spacing:-.2px; }
    .modal .row:first-child h2::before,.modal .row:first-child h3::before { content:''; display:inline-block; width:5px; height:20px; background:linear-gradient(180deg,#6d28d9,#a78bfa); border-radius:3px; margin-right:10px; vertical-align:middle; }
    .modal-close { width:32px; height:32px; border-radius:50%; border:0; background:#f8fafc; color:#64748b; font-size:18px; line-height:1; cursor:pointer; transition:.15s; display:inline-flex; align-items:center; justify-content:center; }
    .modal-close:hover { background:#f1f5f9; color:#334155; transform:rotate(90deg); }
    .modal-body { padding:4px 0; }
    .modal-footer { display:flex; gap:10px; justify-content:flex-end; padding-top:16px; margin-top:16px; border-top:1px solid #f1f5f9; }
    .modal-footer button { padding:9px 18px; border-radius:10px; font-weight:650; }
    .modal .notice { border-radius:12px; background:#f8fafc; border:1px solid #e2e8f0; color:#475569; }
    .modal label { font-size:13px; color:#475569; font-weight:650; margin:14px 0 6px; }
    .modal input,.modal select { border-radius:10px; padding:9px 12px; border:1px solid #e2e8f0; transition:.15s; }
    .modal input:focus,.modal select:focus { border-color:#a78bfa; box-shadow:0 0 0 3px rgba(167,139,250,.18); }
    .modal table { border-radius:12px; overflow:hidden; border:1px solid #f1f5f9; margin-top:10px; }
    .modal table thead { background:#faf5ff; }
    .modal table th { color:#4c1d95; font-weight:750; font-size:13px; padding:10px 12px; border-bottom:1px solid #f1f5f9; }
    .modal table td { padding:10px 12px; border-bottom:1px solid #f8fafc; font-size:13px; }
    .modal table tbody tr:hover td { background:#faf5ff; }
    .modal .check-grid { gap:10px; margin-top:12px; }
    .modal .check-item { border:1px solid #e2e8f0; border-radius:10px; padding:10px 12px; transition:.15s; }
    .modal .check-item:hover { border-color:#ddd6fe; background:#faf5ff; }
    .modal-confirm { max-width:420px !important; text-align:center; padding:32px 28px 28px; }
    .modal-confirm .confirm-icon { width:64px; height:64px; border-radius:50%; background:#fef2f2; color:#dc2626; font-size:30px; display:inline-flex; align-items:center; justify-content:center; margin-bottom:16px; animation:confirmIconIn .35s cubic-bezier(.16,1,.3,1); }
    @keyframes confirmIconIn { from { opacity:0; transform:scale(.6); } to { opacity:1; transform:scale(1); } }
    .modal-confirm .confirm-title { margin:0 0 10px; font-size:19px; font-weight:800; color:#1e293b; letter-spacing:-.2px; }
    .modal-confirm .confirm-text { font-size:15px; color:#475569; line-height:1.7; margin:0 0 6px; }
    .modal-confirm .modal-footer { justify-content:center; border-top:0; padding-top:20px; margin-top:4px; gap:12px; }
    .modal-confirm .modal-footer button { padding:10px 22px; border-radius:10px; font-weight:650; font-size:14px; }
    .modal-confirm .modal-footer .btn-cancel { background:#f1f5f9; color:#475569; border:1px solid #e2e8f0; }
    .modal-confirm .modal-footer .btn-cancel:hover { background:#e2e8f0; }

    /* ===== V1.59: 答案按钮式输入（编辑器） ===== */
    .editor-answer-btns { display:flex; gap:6px; flex-wrap:wrap; margin-top:4px; }
    .editor-answer-btns button { padding:5px 12px; border-radius:8px; background:#fff; border:1px solid #ddd6fe; color:#4c1d95; font-size:13px; transition:.15s; }
    .editor-answer-btns button:hover { background:#f3e8ff; }
    .editor-answer-btns button.selected { background:#4c1d95; color:#fff; border-color:#4c1d95; }
    .editor-answer-btns-lg button { padding:8px 16px; font-size:14px; font-weight:700; }
    .editor-answer-hint { font-size:12px; color:var(--muted); margin-top:4px; }

    /* ===== V1.64: 交互式选项编辑器 ===== */
    .q-options-editor { margin-top:12px; padding:12px; border:1px dashed #c4b5fd; border-radius:14px; background:#faf5ff; }
    .q-options-editor > label { margin-top:0; }
    .q-options-hint { font-size:12px; color:#6b7280; }
    .q-options-rows { display:flex; flex-direction:column; gap:8px; margin:8px 0; }
    .q-option-row { display:flex; align-items:center; gap:8px; }
    .q-option-letter { display:inline-flex; align-items:center; justify-content:center; min-width:32px; height:32px; border-radius:8px; background:#fff; border:1px solid #ddd6fe; color:#4c1d95; font-weight:800; font-size:13px; }
    .q-option-letter.roman { min-width:38px; font-family:Georgia, serif; font-style:italic; }
    .q-option-row input.q-option-text { flex:1; margin:0; }
    .q-option-row button.opt-remove { padding:6px 10px; font-size:12px; border-radius:8px; }
    .q-add-option-btn { margin-top:4px; padding:7px 14px; border-radius:10px; background:#fff; border:1px solid #c4b5fd; color:#4c1d95; font-size:13px; font-weight:650; }
    .q-add-option-btn:hover { background:#f3e8ff; }
    .q-answer-wrap { margin-top:4px; }
    .q-answer-text { margin-top:6px; }
    .q-answer-col { background:#f6f3ff; border:1px solid #ddd6fe; border-radius:12px; padding:10px 12px; }
    .q-answer-label { display:flex; align-items:center; gap:8px; font-weight:700; color:#4c1d95; margin:0 0 6px; }
    .q-answer-format-hint { font-size:12px; color:#6b7280; margin-top:6px; }
