﻿/* ============================================
   期末复习资料 · 设计系统 v4.0
   简洁专业阅读器风格
   ============================================ */

:root {
  --c-primary: #1a3a5c;
  --c-primary-light: #2c5f8a;
  --c-primary-lighter: #4a8bc2;
  --c-primary-bg: #f0f5fa;
  --c-primary-border: #d4e3f0;

  --c-accent: #b85c2e;
  --c-accent-light: #d97742;
  --c-accent-bg: #fdf3ed;

  --c-success: #2d6a4f;
  --c-success-bg: #edf6f0;
  --c-warning: #b8860b;
  --c-warning-bg: #fdf8e8;
  --c-danger: #a63d40;
  --c-danger-bg: #fbeef0;
  --c-info: #2c5f8a;
  --c-info-bg: #eef5fa;

  --bg-page: #f5f6f8;
  --bg-card: #ffffff;
  --bg-code: #f7f8fa;
  --text-primary: #1f2937;
  --text-secondary: #4b5563;
  --text-muted: #6b7280;
  --text-faint: #9ca3af;
  --border-color: #e5e7eb;
  --border-light: #f3f4f6;

  --mark-yellow: #fef3c7;
  --mark-green: #d1fae5;
  --mark-blue: #dbeafe;
  --mark-pink: #fce7f3;

  --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
  --shadow-md: 0 2px 8px rgba(0,0,0,0.06);
  --shadow-lg: 0 4px 16px rgba(0,0,0,0.08);

  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;

  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-mono: "SF Mono", "Consolas", "Monaco", monospace;
  --font-serif: "Georgia", "Times New Roman", "Songti SC", serif;

  --toc-width: 280px;
  --topbar-height: 48px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: 16px;
}

body {
  font-family: var(--font-sans);
  background: var(--bg-page);
  color: var(--text-primary);
  line-height: 1.75;
  font-size: 14.5px;
  -webkit-font-smoothing: antialiased;
}

/* ============================================
   阅读进度条
   ============================================ */
#reading-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  background: var(--c-primary-light);
  z-index: 10000;
  width: 0%;
  transition: width 0.1s ease;
}

/* ============================================
   顶部导航
   ============================================ */
.top-bar {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: var(--topbar-height);
  background: rgba(255,255,255,0.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--border-color);
  z-index: 9998;
  display: flex;
  align-items: center;
  padding: 0 20px;
}

.top-bar .brand {
  font-weight: 600;
  color: var(--c-primary);
  font-size: 14.5px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.top-bar .brand .icon {
  width: 26px; height: 26px;
  background: var(--c-primary);
  border-radius: 5px;
  display: flex; align-items: center; justify-content: center;
  color: white; font-size: 13px; font-weight: 600;
}

.top-bar .nav-links {
  margin-left: auto;
  display: flex;
  gap: 4px;
  align-items: center;
}

.top-bar .nav-links a {
  color: var(--text-secondary);
  text-decoration: none;
  padding: 5px 12px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  transition: all 0.15s;
}

.top-bar .nav-links a:hover {
  background: var(--c-primary-bg);
  color: var(--c-primary);
}

/* 手机端目录按钮 */
.top-bar .toc-toggle-btn {
  display: none;
  background: var(--c-primary);
  color: white;
  border: none;
  padding: 6px 12px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: 12.5px;
  margin-right: 10px;
}

/* ============================================
   主体布局
   ============================================ */
.page-wrapper {
  max-width: 1400px;
  margin: 0 auto;
  padding: calc(var(--topbar-height) + 16px) 20px 32px;
  display: flex;
  gap: 24px;
  align-items: flex-start;
}

/* 目录折叠状态 */
.page-wrapper.toc-collapsed .sidebar-toc {
  width: 0;
  margin-left: 0;
  opacity: 0;
  pointer-events: none;
}

.page-wrapper.toc-collapsed .main-content {
  margin-left: 0;
}

/* 目录折叠触发条 */
.toc-collapse-handle {
  position: fixed;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 6px;
  height: 60px;
  background: var(--c-primary-light);
  border-radius: 0 4px 4px 0;
  cursor: pointer;
  z-index: 997;
  opacity: 0;
  transition: opacity 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}

.toc-collapse-handle:hover {
  opacity: 1;
  width: 20px;
}

.toc-collapse-handle svg {
  width: 12px;
  height: 12px;
  color: white;
}

.page-wrapper.toc-collapsed ~ .toc-collapse-handle,
body.toc-collapsed .toc-collapse-handle {
  opacity: 0.6;
}

/* ============================================
   侧边目录
   ============================================ */
.sidebar-toc {
  width: var(--toc-width);
  flex-shrink: 0;
  position: sticky;
  top: calc(var(--topbar-height) + 16px);
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  max-height: calc(100vh - var(--topbar-height) - 32px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  z-index: 100;
  transition: width 0.3s ease, opacity 0.3s ease, margin 0.3s ease;
}

.toc-header {
  padding: 10px 14px;
  background: var(--c-primary);
  color: white;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
}

.toc-header .toc-title {
  font-weight: 600;
  font-size: 13.5px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.toc-header .toc-actions {
  display: flex;
  gap: 4px;
  align-items: center;
}

/* 统一展开/收起按钮 */
.toc-toggle-all-btn {
  background: rgba(255,255,255,0.18);
  border: none;
  color: white;
  width: 26px;
  height: 26px;
  border-radius: 5px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}

.toc-toggle-all-btn:hover {
  background: rgba(255,255,255,0.3);
}

.toc-toggle-all-btn svg {
  width: 14px;
  height: 14px;
  transition: transform 0.2s;
}

/* 目录折叠按钮（电脑端收起目录） */
.toc-close-btn {
  background: rgba(255,255,255,0.18);
  border: none;
  color: white;
  width: 26px;
  height: 26px;
  border-radius: 5px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}

.toc-close-btn:hover {
  background: rgba(255,255,255,0.3);
}

.toc-close-btn svg {
  width: 14px;
  height: 14px;
}

.toc-search {
  padding: 8px 10px;
  border-bottom: 1px solid var(--border-light);
  flex-shrink: 0;
  position: relative;
}

.toc-search input {
  width: 100%;
  padding: 6px 10px 6px 28px;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  font-size: 12.5px;
  outline: none;
  transition: border-color 0.15s, box-shadow 0.15s;
  font-family: var(--font-sans);
  background: var(--bg-code);
}

.toc-search input:focus {
  border-color: var(--c-primary-light);
  box-shadow: 0 0 0 2px rgba(44,95,138,0.12);
  background: white;
}

.toc-search::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 50%;
  transform: translateY(-50%);
  width: 14px;
  height: 14px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%236b7280'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'/%3E%3C/svg%3E") no-repeat center;
  background-size: contain;
  pointer-events: none;
}

.toc-body {
  flex: 1;
  overflow-y: auto;
  padding: 6px;
  position: relative;
  scrollbar-width: thin;
  scrollbar-color: var(--border-color) transparent;
}

.toc-body::-webkit-scrollbar { width: 4px; }
.toc-body::-webkit-scrollbar-track { background: transparent; }
.toc-body::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 2px; }

.toc-list { list-style: none; }

.toc-item { margin: 1px 0; }

.toc-link {
  display: flex;
  align-items: center;
  padding: 5px 8px;
  color: var(--text-secondary);
  text-decoration: none;
  border-radius: var(--radius-sm);
  font-size: 12.5px;
  line-height: 1.5;
  transition: all 0.12s;
  cursor: pointer;
  border-left: 2px solid transparent;
  gap: 5px;
}

.toc-link:hover {
  background: var(--c-primary-bg);
  color: var(--c-primary);
}

.toc-link.active {
  background: var(--c-primary-bg);
  color: var(--c-primary);
  font-weight: 600;
  border-left-color: var(--c-primary);
}

.toc-level-1 > .toc-link {
  font-weight: 700;
  font-size: 13px;
  color: var(--c-primary);
  padding: 7px 8px;
  margin-top: 3px;
}

.toc-level-2 > .toc-link {
  padding-left: 18px;
  font-weight: 500;
}

.toc-level-3 > .toc-link {
  padding-left: 32px;
  font-size: 12px;
}

.toc-level-4 > .toc-link {
  padding-left: 46px;
  font-size: 11.5px;
  color: var(--text-muted);
}

.toc-caret {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  transition: transform 0.15s;
  color: var(--text-faint);
  cursor: pointer;
  border-radius: 3px;
}

.toc-caret:hover {
  background: var(--border-light);
  color: var(--text-secondary);
}

.toc-caret svg {
  width: 10px;
  height: 10px;
}

.toc-item.collapsed > .toc-link .toc-caret {
  transform: rotate(-90deg);
}

.toc-item.collapsed > .toc-children {
  display: none;
}

.toc-children {
  list-style: none;
  overflow: hidden;
}

.toc-spacer {
  width: 14px;
  flex-shrink: 0;
}

.toc-footer {
  padding: 6px 12px;
  border-top: 1px solid var(--border-light);
  font-size: 11px;
  color: var(--text-faint);
  display: flex;
  justify-content: space-between;
  flex-shrink: 0;
  background: var(--bg-code);
}

/* 目录定位按钮（当前小节不可见时浮现） */
.toc-locate-btn {
  position: sticky;
  bottom: 12px;
  margin-left: auto;
  margin-right: 12px;
  margin-bottom: 12px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--c-primary);
  color: white;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-md);
  opacity: 0;
  transform: scale(0.8);
  transition: all 0.2s;
  z-index: 10;
  pointer-events: none;
  flex-shrink: 0;
}

.toc-locate-btn.visible {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}

.toc-locate-btn:hover {
  background: var(--c-primary-light);
  transform: scale(1.1);
}

.toc-locate-btn svg {
  width: 16px;
  height: 16px;
}

/* ============================================
   主内容区
   ============================================ */
.main-content {
  flex: 1;
  min-width: 0;
  transition: margin 0.3s ease;
}

.content-card {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 32px 40px;
  margin-bottom: 16px;
}

/* ============================================
   Hero 区域
   ============================================ */
.hero-section {
  background: var(--c-primary);
  color: white;
  border-radius: var(--radius-lg);
  padding: 28px 32px;
  margin-bottom: 16px;
  box-shadow: var(--shadow-md);
  position: relative;
  overflow: hidden;
}

.hero-section::before {
  content: '';
  position: absolute;
  top: -40%;
  right: -5%;
  width: 280px;
  height: 280px;
  background: radial-gradient(circle, rgba(255,255,255,0.08) 0%, transparent 70%);
  border-radius: 50%;
}

.hero-section h1 {
  font-size: 24px;
  margin-bottom: 10px;
  position: relative;
  border: none;
  color: white;
  padding: 0;
}

.hero-section .hero-meta {
  font-size: 12.5px;
  opacity: 0.9;
  line-height: 1.9;
  position: relative;
}

.hero-section .hero-meta strong {
  color: #f0c896;
  font-weight: 600;
}

.hero-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 12px;
  position: relative;
}

.hero-tag {
  background: rgba(255,255,255,0.14);
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 11.5px;
}

/* ============================================
   标题层级
   ============================================ */
.content-card h1 {
  font-size: 22px;
  color: var(--c-primary);
  margin: 28px 0 16px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--c-primary);
  font-weight: 700;
  scroll-margin-top: 70px;
}

.content-card h2 {
  font-size: 18px;
  color: var(--c-primary);
  margin: 24px 0 12px;
  padding: 8px 14px;
  background: var(--c-primary-bg);
  border-left: 3px solid var(--c-primary);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  font-weight: 700;
  scroll-margin-top: 70px;
}

.content-card h3 {
  font-size: 16px;
  color: var(--c-accent);
  margin: 20px 0 10px;
  padding-bottom: 5px;
  border-bottom: 1px dashed var(--border-color);
  font-weight: 700;
  scroll-margin-top: 70px;
}

.content-card h4 {
  font-size: 14.5px;
  color: var(--c-primary-light);
  margin: 16px 0 8px;
  font-weight: 600;
  scroll-margin-top: 70px;
  display: flex;
  align-items: center;
  gap: 7px;
}

.content-card h4::before {
  content: '';
  display: inline-block;
  width: 3px;
  height: 14px;
  background: var(--c-primary-lighter);
  border-radius: 2px;
}

.content-card h5 {
  font-size: 13.5px;
  color: var(--text-secondary);
  margin: 12px 0 6px;
  font-weight: 600;
  scroll-margin-top: 70px;
}

/* ============================================
   段落与文本
   ============================================ */
.content-card p {
  margin: 8px 0;
  text-align: justify;
}

.content-card strong {
  color: var(--c-primary);
  font-weight: 600;
}

.content-card em {
  color: var(--c-accent);
  font-style: italic;
}

.content-card mark {
  background: var(--mark-yellow);
  color: var(--text-primary);
  padding: 1px 4px;
  border-radius: 3px;
  font-weight: 500;
}

.content-card mark.hl-green { background: var(--mark-green); color: #14532d; }
.content-card mark.hl-blue { background: var(--mark-blue); color: #1e3a5f; }
.content-card mark.hl-pink { background: var(--mark-pink); color: #831843; }

.content-card .u-important {
  text-decoration: underline;
  text-decoration-color: var(--c-accent);
  text-decoration-thickness: 1.5px;
  text-underline-offset: 2px;
}

/* ============================================
   列表
   ============================================ */
.content-card ul,
.content-card ol {
  margin: 8px 0 8px 22px;
}

.content-card li {
  margin: 5px 0;
  line-height: 1.7;
}

.content-card ul li::marker { color: var(--c-primary-light); }
.content-card ol li::marker { color: var(--c-accent); font-weight: 600; }

/* ============================================
   表格
   ============================================ */
.table-wrapper {
  margin: 12px 0;
  overflow-x: auto;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-color);
}

.content-card table {
  border-collapse: collapse;
  width: 100%;
  font-size: 13px;
  background: white;
}

.content-card thead th {
  background: var(--c-primary);
  color: white;
  padding: 9px 12px;
  text-align: left;
  font-weight: 600;
  font-size: 12.5px;
  white-space: nowrap;
}

.content-card tbody td {
  padding: 8px 12px;
  border-bottom: 1px solid var(--border-light);
  vertical-align: top;
  line-height: 1.6;
}

.content-card tbody tr:nth-child(even) { background: #fafbfc; }

.content-card tbody tr:hover {
  background: var(--c-primary-bg);
  transition: background 0.12s;
}

.content-card tbody tr:last-child td { border-bottom: none; }

.table-caption {
  font-size: 12px;
  color: var(--text-muted);
  text-align: center;
  margin-top: 6px;
  font-style: italic;
}

.content-card td.highlight-cell { background: var(--mark-yellow) !important; font-weight: 600; }
.content-card td.success-cell { background: var(--mark-green) !important; font-weight: 600; }
.content-card td.danger-cell { background: var(--mark-pink) !important; font-weight: 600; }

/* ============================================
   引用块 / 提示框
   ============================================ */
.content-card blockquote {
  margin: 12px 0;
  padding: 10px 16px;
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  border-left: 3px solid var(--c-accent);
  background: var(--c-accent-bg);
  color: #5c4030;
  line-height: 1.7;
  font-size: 13.5px;
}

.content-card blockquote p { margin: 3px 0; }
.content-card blockquote strong { color: var(--c-accent); }

.callout {
  margin: 14px 0;
  padding: 12px 16px 12px 44px;
  border-radius: var(--radius-md);
  position: relative;
  line-height: 1.7;
  font-size: 13.5px;
}

.callout p { margin: 3px 0; }

.callout::before {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 16px;
  font-weight: 700;
  width: 20px;
  text-align: center;
}

.callout-info { background: var(--c-info-bg); border-left: 3px solid var(--c-info); color: #1e3a5f; }
.callout-info::before { content: 'i'; font-family: var(--font-serif); font-style: italic; color: var(--c-info); }

.callout-warning { background: var(--c-warning-bg); border-left: 3px solid var(--c-warning); color: #78550a; }
.callout-warning::before { content: '!'; font-weight: 700; color: var(--c-warning); }

.callout-danger { background: var(--c-danger-bg); border-left: 3px solid var(--c-danger); color: #7f1d1d; }
.callout-danger::before { content: '×'; font-weight: 700; color: var(--c-danger); }

.callout-success { background: var(--c-success-bg); border-left: 3px solid var(--c-success); color: #14532d; }
.callout-success::before { content: '✓'; font-weight: 700; color: var(--c-success); }

.callout-tip { background: var(--c-accent-bg); border-left: 3px solid var(--c-accent); color: #7c2d12; }
.callout-tip::before { content: '★'; color: var(--c-accent); }

/* ============================================
   代码块
   ============================================ */
.content-card code {
  background: var(--bg-code);
  border: 1px solid var(--border-color);
  border-radius: 3px;
  padding: 1px 5px;
  font-size: 12.5px;
  color: var(--c-accent);
  font-family: var(--font-mono);
}

.content-card pre {
  background: #1f2937;
  color: #e5e7eb;
  padding: 14px 18px;
  border-radius: var(--radius-md);
  overflow-x: auto;
  margin: 12px 0;
  font-size: 12.5px;
  line-height: 1.65;
  font-family: var(--font-mono);
}

.content-card pre code {
  background: none;
  border: none;
  color: inherit;
  padding: 0;
  font-size: inherit;
}

/* ============================================
   图片 / 图表
   ============================================ */
.figure-container {
  margin: 18px 0;
  text-align: center;
}

.figure-container svg,
.figure-container img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  border: 1px solid var(--border-color);
  background: white;
}

.figure-caption {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 8px;
  font-style: italic;
  text-align: center;
}

.figure-caption strong {
  color: var(--c-primary);
  font-style: normal;
  font-weight: 600;
}

.chart-svg { background: white; border-radius: var(--radius-md); }

/* ============================================
   公式
   ============================================ */
.math-display {
  margin: 14px 0;
  padding: 12px 18px;
  background: var(--bg-code);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--c-primary-light);
  overflow-x: auto;
  text-align: center;
}

/* ============================================
   标签 / 徽章
   ============================================ */
.badge {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
  margin: 0 2px;
  vertical-align: middle;
}

.badge-primary { background: var(--c-primary-bg); color: var(--c-primary); }
.badge-accent { background: var(--c-accent-bg); color: var(--c-accent); }
.badge-success { background: var(--c-success-bg); color: var(--c-success); }
.badge-warning { background: var(--c-warning-bg); color: var(--c-warning); }
.badge-danger { background: var(--c-danger-bg); color: var(--c-danger); }
.badge-info { background: var(--c-info-bg); color: var(--c-info); }

.stars {
  color: #d97706;
  letter-spacing: 1px;
  font-size: 12px;
}

/* ============================================
   知识点筛选/排序工具栏
   ============================================ */
.filter-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--bg-code);
  border-radius: var(--radius-md);
  margin: 14px 0;
  border: 1px solid var(--border-color);
}

.filter-bar .filter-label {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text-secondary);
}

.filter-bar select {
  padding: 5px 10px;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  font-size: 12.5px;
  font-family: var(--font-sans);
  background: white;
  color: var(--text-primary);
  cursor: pointer;
  outline: none;
}

.filter-bar select:focus {
  border-color: var(--c-primary-light);
}

.filter-bar .filter-count {
  margin-left: auto;
  font-size: 12px;
  color: var(--text-muted);
}

/* 知识点卡片（可筛选） */
.knowledge-item {
  transition: opacity 0.2s, display 0.2s;
}

.knowledge-item.hidden,
.main-content h3.hidden {
  display: none;
}

/* ============================================
   题型专区
   ============================================ */
.question-type-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 10px;
  margin: 14px 0;
}

.question-type-card {
  background: white;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 12px 14px;
  transition: all 0.15s;
  cursor: pointer;
}

.question-type-card:hover {
  border-color: var(--c-primary-light);
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.question-type-card .qt-icon {
  font-size: 20px;
  margin-bottom: 5px;
}

.question-type-card .qt-name {
  font-weight: 600;
  color: var(--c-primary);
  font-size: 13.5px;
  margin-bottom: 3px;
}

.question-type-card .qt-info {
  font-size: 11.5px;
  color: var(--text-muted);
  line-height: 1.5;
}

.question-type-card .qt-score {
  display: inline-block;
  background: var(--c-accent-bg);
  color: var(--c-accent);
  padding: 1px 7px;
  border-radius: 8px;
  font-size: 11px;
  font-weight: 600;
  margin-top: 5px;
}

/* 计算题题型卡片 */
.calc-type-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
  margin: 14px 0;
}

.calc-type-card {
  background: white;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 14px 16px;
  transition: all 0.15s;
  border-left: 3px solid var(--c-primary-light);
}

.calc-type-card:hover {
  box-shadow: var(--shadow-md);
  border-left-color: var(--c-primary);
}

.calc-type-card .ct-name {
  font-weight: 700;
  color: var(--c-primary);
  font-size: 14px;
  margin-bottom: 6px;
}

.calc-type-card .ct-formula {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--c-accent);
  background: var(--bg-code);
  padding: 4px 8px;
  border-radius: 4px;
  margin: 6px 0;
  overflow-x: auto;
}

.calc-type-card .ct-desc {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
  margin-top: 6px;
}

.calc-type-card .ct-chapter {
  font-size: 11px;
  color: var(--text-faint);
  margin-top: 6px;
}

/* ============================================
   知识折叠面板
   ============================================ */
.knowledge-panel {
  margin: 12px 0;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: white;
}

.knowledge-panel .panel-header {
  padding: 10px 16px;
  background: var(--c-primary-bg);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-weight: 600;
  color: var(--c-primary);
  font-size: 13.5px;
  transition: background 0.15s;
  user-select: none;
}

.knowledge-panel .panel-header:hover { background: #e4edf5; }

.knowledge-panel .panel-header .panel-caret {
  transition: transform 0.2s;
  font-size: 11px;
  color: var(--text-muted);
}

.knowledge-panel.open .panel-header .panel-caret { transform: rotate(180deg); }

.knowledge-panel .panel-content {
  padding: 0 16px;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease, padding 0.3s ease;
}

.knowledge-panel.open .panel-content {
  padding: 12px 16px;
  max-height: 8000px;
}

/* ============================================
   两栏对比
   ============================================ */
.compare-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin: 14px 0;
}

.compare-col {
  background: white;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 14px;
}

.compare-col h5 {
  color: var(--c-primary);
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 2px solid var(--c-primary-bg);
  font-size: 13.5px;
}

.compare-col.col-a { border-top: 3px solid var(--c-primary); }
.compare-col.col-b { border-top: 3px solid var(--c-accent); }

/* ============================================
   分隔线
   ============================================ */
.content-card hr {
  border: none;
  border-top: 1px dashed var(--border-color);
  margin: 24px 0;
}

/* ============================================
   浮动按钮（手机端）
   ============================================ */
.floating-actions {
  position: fixed;
  bottom: 20px;
  right: 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  z-index: 9997;
}

.fab {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-lg);
  transition: all 0.2s;
  position: relative;
}

.fab:hover {
  transform: scale(1.08);
}

.fab svg {
  width: 18px;
  height: 18px;
}

.fab-toc {
  background: var(--c-primary);
  color: white;
  display: none; /* 手机端显示 */
}

.fab-top {
  background: white;
  color: var(--c-primary);
  border: 1px solid var(--border-color);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s, transform 0.2s;
}

.fab-top.visible {
  opacity: 1;
  pointer-events: auto;
}

.fab-print {
  background: white;
  color: var(--c-accent);
  border: 1px solid var(--border-color);
}

.fab-expand {
  background: white;
  color: #059669;
  border: 1px solid var(--border-color);
}

.fab .fab-tooltip {
  position: absolute;
  right: 54px;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0,0,0,0.75);
  color: white;
  padding: 4px 10px;
  border-radius: 4px;
  font-size: 12px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s;
}

.fab:hover .fab-tooltip { opacity: 1; }

/* ============================================
   手机端目录抽屉
   ============================================ */
.toc-drawer-overlay {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.4);
  z-index: 9999;
  opacity: 0;
  transition: opacity 0.25s;
}

.toc-drawer-overlay.show {
  display: block;
  opacity: 1;
}

.toc-drawer {
  position: fixed;
  top: 0;
  left: -300px;
  width: 280px;
  height: 100vh;
  background: white;
  z-index: 10000;
  transition: left 0.25s ease;
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
}

.toc-drawer.show { left: 0; }

.toc-drawer .toc-header { border-radius: 0; }

.toc-drawer .toc-body { flex: 1; }

/* ============================================
   页脚
   ============================================ */
.page-footer {
  text-align: center;
  color: var(--text-faint);
  font-size: 12px;
  padding: 16px;
  line-height: 1.8;
}

/* ============================================
   响应式
   ============================================ */
@media (max-width: 1024px) {
  .page-wrapper {
    flex-direction: column;
    padding-top: calc(var(--topbar-height) + 12px);
  }

  .sidebar-toc {
    display: none;
  }

  .top-bar .toc-toggle-btn {
    display: block;
  }

  .fab-toc {
    display: flex;
  }

  .toc-collapse-handle {
    display: none;
  }

  .content-card {
    padding: 20px 18px;
  }

  .hero-section {
    padding: 20px 22px;
  }

  .hero-section h1 { font-size: 20px; }

  .compare-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .content-card { padding: 16px 14px; }
  .content-card h1 { font-size: 19px; }
  .content-card h2 { font-size: 16px; }
  .content-card h3 { font-size: 14.5px; }

  .top-bar .nav-links a:not(.home-link) { display: none; }

  .floating-actions { bottom: 14px; right: 14px; }
  .fab { width: 40px; height: 40px; }
  .fab svg { width: 16px; height: 16px; }

  .question-type-grid { grid-template-columns: 1fr 1fr; }
  .calc-type-grid { grid-template-columns: 1fr; }

  .filter-bar { padding: 10px 12px; gap: 8px; }
}

/* ============================================
   v5.0 Tab导航
   ============================================ */
.tab-nav {
  display: flex;
  gap: 0;
  border-bottom: 2px solid #e5e7eb;
  margin-bottom: 28px;
  position: sticky;
  top: var(--topbar-height);
  background: var(--bg-page);
  z-index: 100;
  padding: 0 4px;
  margin-top: -1px;
}
.tab-btn {
  padding: 12px 24px;
  border: none;
  background: transparent;
  font-size: 14.5px;
  font-weight: 600;
  color: #6b7280;
  cursor: pointer;
  position: relative;
  transition: color 0.2s;
  font-family: inherit;
}
.tab-btn:hover { color: #1a3a5c; }
.tab-btn.active { color: #1a3a5c; }
.tab-btn.active::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 12px;
  right: 12px;
  height: 3px;
  background: #1a3a5c;
  border-radius: 2px 2px 0 0;
}
.tab-btn .tab-count {
  display: inline-block;
  margin-left: 6px;
  font-size: 11px;
  background: #e5e7eb;
  color: #4b5563;
  padding: 1px 7px;
  border-radius: 10px;
  font-weight: 500;
}
.tab-btn.active .tab-count {
  background: #1a3a5c;
  color: white;
}
.tab-panel { display: none; }
.tab-panel.active { display: block; animation: fadeIn 0.3s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }

/* ============================================
   v5.0 知识点速查专区
   ============================================ */
.kp-toolbar {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 16px 20px;
  margin-bottom: 20px;
}
.kp-filter-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  margin-bottom: 12px;
}
.kp-filter-row:last-child { margin-bottom: 0; }
.kp-filter-label {
  font-size: 13px;
  font-weight: 600;
  color: #374151;
  min-width: 56px;
  flex-shrink: 0;
}
.kp-check-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.kp-check {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border: 1px solid #d1d5db;
  border-radius: 20px;
  font-size: 12.5px;
  color: #4b5563;
  cursor: pointer;
  transition: all 0.15s;
  user-select: none;
  background: #fff;
}
.kp-check:hover { border-color: #1a3a5c; color: #1a3a5c; }
.kp-check input { display: none; }
.kp-check.checked {
  background: #1a3a5c;
  border-color: #1a3a5c;
  color: #fff;
}
.kp-sort-select {
  padding: 6px 12px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 13px;
  color: #374151;
  background: #fff;
  cursor: pointer;
  font-family: inherit;
}
.kp-sort-select:focus { outline: none; border-color: #1a3a5c; }
.kp-reset-btn {
  padding: 6px 14px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 12.5px;
  color: #6b7280;
  background: #fff;
  cursor: pointer;
  transition: all 0.15s;
  font-family: inherit;
}
.kp-reset-btn:hover { border-color: #a63d40; color: #a63d40; }
.kp-stats {
  font-size: 12.5px;
  color: #6b7280;
  margin-left: auto;
}
.kp-list {
  display: block !important;
  width: 100%;
  box-sizing: border-box;
}
.kp-list > .kp-card {
  width: 100% !important;
  box-sizing: border-box;
  display: flex !important;
  flex-direction: row !important;
  float: none !important;
  clear: both !important;
  margin-bottom: 10px;
}
.kp-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 14px 18px;
  cursor: pointer;
  transition: all 0.2s;
  display: flex;
  align-items: flex-start;
  gap: 14px;
}
.kp-card:hover {
  border-color: #1a3a5c;
  box-shadow: 0 4px 12px rgba(26,58,92,0.08);
  transform: translateX(3px);
}
.kp-card-num {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: #f0f4f8;
  color: #1a3a5c;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.kp-card-body { flex: 1; min-width: 0; }
.kp-card-title {
  font-size: 14.5px;
  font-weight: 600;
  color: #1a2332;
  margin: 0 0 4px 0;
  padding: 0;
  line-height: 1.5;
  display: block;
}
.kp-card-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  font-size: 11.5px;
  color: #9ca3af;
}
.kp-card-chapter { color: #6b7280; }
.kp-card-stars { color: #d4a017; letter-spacing: 1px; }
.kp-card-diff {
  padding: 1px 7px;
  border-radius: 3px;
  font-size: 10.5px;
  font-weight: 600;
}
.kp-card-diff.diff-1 { background: #edf6f0; color: #2d6a4f; }
.kp-card-diff.diff-2 { background: #fef8e8; color: #92600a; }
.kp-card-diff.diff-3 { background: #fbeef0; color: #a63d40; }
.kp-card-summary {
  font-size: 12.5px;
  color: #6b7280;
  margin-top: 6px;
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.kp-card-sources {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 8px;
}
.kp-src-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  border: 1px solid transparent;
}
.kp-src-tag:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(0,0,0,0.12);
  border-color: currentColor;
}
.kp-src-check.checked {
  background: var(--src-bg, var(--c-primary-bg));
  color: var(--src-color, var(--c-primary));
  border-color: var(--src-color, var(--c-primary));
}
.kp-empty {
  text-align: center;
  padding: 48px 20px;
  color: #9ca3af;
  font-size: 14px;
}

/* ============================================
   v5.0 宽敞题型面板
   ============================================ */
.qt-section-title {
  font-size: 18px;
  font-weight: 700;
  color: #1a2332;
  margin: 32px 0 16px;
  padding-left: 12px;
  border-left: 4px solid #1a3a5c;
}
.qt-panel {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  margin-bottom: 14px;
  overflow: hidden;
  transition: box-shadow 0.2s;
}
.qt-panel:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.04); }
.qt-panel-header {
  padding: 16px 20px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 14px;
  user-select: none;
}
.qt-panel-num {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 7px;
  background: #1a3a5c;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.qt-panel-title {
  flex: 1;
  font-size: 15px;
  font-weight: 600;
  color: #1a2332;
}
.qt-panel-chapter {
  font-size: 11.5px;
  color: #9ca3af;
  font-weight: 400;
  margin-left: 8px;
}
.qt-panel-caret {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  color: #9ca3af;
  transition: transform 0.25s;
}
.qt-panel.open .qt-panel-caret { transform: rotate(180deg); }
.qt-panel-body {
  padding: 0 20px 16px;
  border-top: 1px solid #f0f0f0;
}
.qt-panel-detail {
  display: none;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px dashed #e5e7eb;
}
.qt-panel.open .qt-panel-detail { display: block; }
.qt-formula-box {
  background: #f7f9fc;
  border-left: 3px solid #1a3a5c;
  border-radius: 0 6px 6px 0;
  padding: 12px 16px;
  margin: 14px 0;
  font-size: 14px;
  line-height: 1.8;
  overflow-x: auto;
}
.qt-formula-box .formula-label {
  font-size: 11.5px;
  font-weight: 700;
  color: #1a3a5c;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 6px;
  display: block;
}
.qt-steps {
  margin: 12px 0;
  padding-left: 0;
  list-style: none;
  counter-reset: step;
}
.qt-steps li {
  counter-increment: step;
  position: relative;
  padding: 6px 0 6px 32px;
  font-size: 13.5px;
  color: #374151;
  line-height: 1.7;
}
.qt-steps li::before {
  content: counter(step);
  position: absolute;
  left: 0;
  top: 7px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #e8eef5;
  color: #1a3a5c;
  font-size: 11.5px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.qt-example {
  background: #fefcf7;
  border: 1px solid #f0e6d0;
  border-radius: 8px;
  padding: 14px 18px;
  margin-top: 16px;
}
.qt-example-title {
  font-size: 12.5px;
  font-weight: 700;
  color: #92600a;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.qt-example-title::before {
  content: '';
  width: 4px;
  height: 14px;
  background: #d4a017;
  border-radius: 2px;
}
.qt-example p {
  font-size: 13px;
  color: #4b5563;
  line-height: 1.8;
  margin: 4px 0;
}
.qt-example .calc-line {
  font-family: 'Consolas', 'Monaco', monospace;
  font-size: 12.5px;
  background: #fff;
  padding: 3px 8px;
  border-radius: 4px;
  display: inline-block;
  margin: 2px 0;
}
.qt-note {
  font-size: 12.5px;
  color: #6b7280;
  margin-top: 10px;
  padding: 8px 12px;
  background: #f9fafb;
  border-radius: 6px;
  line-height: 1.7;
}
.qt-note strong { color: #374151; }

/* ============================================
   v6.0 顶部导航重构
   ============================================ */
.top-bar {
  justify-content: space-between;
  padding: 0 16px;
}
.top-bar .brand {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 8px;
}
.top-bar .brand .icon {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  background: var(--c-primary);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
}
.top-bar .brand span:not(.icon) {
  font-size: 15px;
  font-weight: 700;
  color: var(--text-primary);
  white-space: nowrap;
}
.top-bar-left {
  display: flex;
  align-items: center;
  gap: 8px;
  z-index: 2;
}
.top-bar-right {
  display: flex;
  align-items: center;
  gap: 6px;
  z-index: 2;
}
.top-bar-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 6px 12px;
  border: 1px solid var(--border-color);
  border-radius: 6px;
  background: var(--bg-card);
  color: var(--text-secondary);
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s;
  font-family: inherit;
}
.top-bar-btn:hover {
  border-color: var(--c-primary);
  color: var(--c-primary);
  background: var(--c-primary-bg);
}
.top-bar-btn svg {
  width: 15px;
  height: 15px;
}
.top-bar-btn.toc-btn-mobile {
  display: none;
}
@media (max-width: 768px) {
  .top-bar-btn.toc-btn-mobile { display: flex; }
  .top-bar .brand span:not(.icon) { font-size: 13px; }
}

/* ============================================
   v6.0 主题切换胶囊（深色/跟随/浅色）
   ============================================ */
.theme-toggle {
  display: flex;
  align-items: center;
  background: var(--bg-code);
  border: 1px solid var(--border-color);
  border-radius: 20px;
  padding: 2px;
  gap: 1px;
}
.theme-toggle button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 26px;
  border: none;
  border-radius: 18px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: all 0.2s;
  padding: 0;
}
.theme-toggle button svg {
  width: 14px;
  height: 14px;
}
.theme-toggle button.active {
  background: var(--c-primary);
  color: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}
.theme-toggle button:hover:not(.active) {
  color: var(--c-primary);
}

/* ============================================
   v6.0 设置面板
   ============================================ */
.settings-overlay {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.45);
  z-index: 10000;
  backdrop-filter: blur(2px);
}
.settings-overlay.show { display: flex; align-items: center; justify-content: center; }
.settings-panel {
  background: var(--bg-card);
  border-radius: 14px;
  width: 90%;
  max-width: 560px;
  max-height: 82vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.25);
  animation: settingsIn 0.25s ease;
}
@keyframes settingsIn { from { opacity: 0; transform: translateY(12px) scale(0.97); } to { opacity: 1; transform: translateY(0) scale(1); } }
.settings-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px;
  border-bottom: 1px solid var(--border-color);
  position: sticky;
  top: 0;
  background: var(--bg-card);
  z-index: 2;
}
.settings-header h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  color: var(--text-primary);
}
.settings-close {
  width: 30px;
  height: 30px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}
.settings-close:hover { background: var(--bg-code); color: var(--text-primary); }
.settings-close svg { width: 16px; height: 16px; }
.settings-body { padding: 18px 22px 22px; }
.settings-section { margin-bottom: 22px; }
.settings-section:last-child { margin-bottom: 0; }
.settings-section-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.8px;
  margin-bottom: 10px;
}
.settings-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 0;
}
.settings-row-label {
  font-size: 13.5px;
  color: var(--text-secondary);
}
.changelog-item {
  padding: 12px 0;
  border-bottom: 1px solid var(--border-color);
}
.changelog-item:last-child { border-bottom: none; }
.changelog-version {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.changelog-ver-badge {
  font-size: 11.5px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--c-primary);
  color: #fff;
}
.changelog-ver-badge.latest { background: var(--c-success); }
.changelog-date {
  font-size: 11.5px;
  color: var(--text-muted);
}
.changelog-desc {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.7;
  margin: 0;
}
.changelog-desc li { margin: 2px 0; }
.readme-text {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.8;
}
.readme-text p { margin: 6px 0; }
.readme-text code {
  background: var(--bg-code);
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 12px;
  font-family: Consolas, monospace;
}

/* ============================================
   v6.0 知识点内联展开
   ============================================ */
.kp-card.expanded {
  border-color: var(--c-primary);
  box-shadow: 0 4px 16px rgba(26,58,92,0.1);
}
.kp-card.expanded .kp-card-summary { display: none; }
.kp-detail {
  display: none;
  width: 100%;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed var(--border-color);
  grid-column: 1 / -1;
}
.kp-card.expanded .kp-detail { display: block; }
.kp-detail-content {
  font-size: 13.5px;
  color: var(--text-secondary);
  line-height: 1.8;
}
.kp-detail-content h4 {
  font-size: 14px;
  font-weight: 700;
  color: var(--text-primary);
  margin: 10px 0 6px;
}
.kp-detail-content p { margin: 4px 0; }
.kp-detail-content ul, .kp-detail-content ol { margin: 4px 0; padding-left: 20px; }
.kp-detail-content li { margin: 2px 0; }
.kp-detail-content .math-display {
  background: var(--bg-code);
  padding: 10px 14px;
  border-radius: 6px;
  margin: 8px 0;
  overflow-x: auto;
}
.kp-detail-jump {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 10px;
  padding: 5px 12px;
  border: 1px solid var(--c-primary);
  border-radius: 6px;
  background: transparent;
  color: var(--c-primary);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  font-family: inherit;
}
.kp-detail-jump:hover {
  background: var(--c-primary);
  color: #fff;
}
.kp-detail-jump svg { width: 12px; height: 12px; }

/* ============================================
   v6.0 深色模式
   ============================================ */
body.dark-mode {
  --bg-page: #0a0d12;
  --bg-card: #131820;
  --bg-code: #1c2330;
  --text-primary: #f0f4f8;
  --text-secondary: #c5cdd8;
  --text-muted: #8892a0;
  --border-color: #2a3340;
  --c-primary-bg: #16263a;
  --c-primary-border: #2a4a6a;
  --c-primary: #5b9bd5;
  --c-primary-light: #7ab3e8;
  --c-accent: #e8a838;
  --c-accent-light: #f0c060;
  --c-warning: #e8b830;
  --c-warning-bg: #2a2410;
  --c-success: #4ade80;
  --c-success-bg: #0f2a1a;
  --c-danger: #f87171;
  --c-danger-bg: #2a1010;
  --c-info: #60a5fa;
  --c-info-bg: #0f1a2a;
}
body.dark-mode .top-bar {
  background: rgba(26,35,50,0.92);
  border-bottom-color: var(--border-color);
}
body.dark-mode .top-bar-btn {
  background: var(--bg-card);
  border-color: var(--border-color);
  color: var(--text-secondary);
}
body.dark-mode .top-bar-btn:hover {
  background: var(--c-primary-bg);
  border-color: var(--c-primary-light);
}
body.dark-mode .content-card {
  background: var(--bg-card);
  border-color: var(--border-color);
}
body.dark-mode .tab-nav {
  background: var(--bg-page);
  border-bottom-color: var(--border-color);
}
body.dark-mode .tab-btn { color: var(--text-muted); }
body.dark-mode .tab-btn.active { color: var(--c-primary-lighter); }
body.dark-mode .tab-btn .tab-count { background: var(--bg-code); color: var(--text-secondary); }
body.dark-mode .tab-btn.active .tab-count { background: var(--c-primary); color: #fff; }
body.dark-mode .kp-toolbar, body.dark-mode .kp-card {
  background: var(--bg-card);
  border-color: var(--border-color);
}
body.dark-mode .kp-card-title { color: var(--text-primary); }
body.dark-mode .qt-panel {
  background: var(--bg-card);
  border-color: var(--border-color);
}
body.dark-mode .qt-formula-box {
  background: var(--bg-code);
  border-left-color: var(--c-primary-lighter);
}
body.dark-mode .qt-example {
  background: #1e2a3a;
  border-color: #2d4a5a;
}
body.dark-mode .qt-panel-title { color: var(--text-primary); }
body.dark-mode .callout { border-color: var(--border-color); }
body.dark-mode .callout-info { background: #1a2a3a; }
body.dark-mode .callout-warning { background: #2a2a1a; }
body.dark-mode .callout-danger { background: #2a1a1a; }
body.dark-mode .callout-success { background: #1a2a1a; }
body.dark-mode .callout-tip { background: #1a2a2a; }
body.dark-mode table { color: var(--text-secondary); }
body.dark-mode table th { background: var(--bg-code); color: var(--text-primary); }
body.dark-mode table tr:nth-child(even) { background: rgba(255,255,255,0.02); }
body.dark-mode .hero-section { background: linear-gradient(135deg, #1a2a3a, #0f1a2a); }
body.dark-mode .hero-meta, body.dark-mode .hero-tags .hero-tag { color: var(--text-secondary); }
body.dark-mode .sidebar-toc { background: var(--bg-card); border-right-color: var(--border-color); }
body.dark-mode .toc-link { color: var(--text-muted); }
body.dark-mode .toc-link.active { color: var(--c-primary-lighter); background: var(--c-primary-bg); }
body.dark-mode .toc-search input { background: var(--bg-code); border-color: var(--border-color); color: var(--text-primary); }
body.dark-mode .settings-panel { background: var(--bg-card); }
body.dark-mode .settings-header { background: var(--bg-card); border-bottom-color: var(--border-color); }
body.dark-mode .changelog-item { border-bottom-color: var(--border-color); }
body.dark-mode .theme-toggle { background: var(--bg-code); border-color: var(--border-color); }
body.dark-mode .filter-bar { background: var(--bg-card); border-color: var(--border-color); }
body.dark-mode .filter-bar select { background: var(--bg-code); border-color: var(--border-color); color: var(--text-primary); }
body.dark-mode .question-type-card { background: var(--bg-card); border-color: var(--border-color); }
body.dark-mode .knowledge-panel { background: var(--bg-card); border-color: var(--border-color); }
body.dark-mode .knowledge-panel .panel-header { color: var(--text-primary); }
body.dark-mode .page-footer { color: var(--text-muted); }
body.dark-mode .top-bar { background: rgba(15,20,28,0.95); }
body.dark-mode .top-bar .brand span:not(.icon) { color: var(--text-primary); }
body.dark-mode .main-content h1, body.dark-mode .main-content h2,
body.dark-mode .main-content h3, body.dark-mode .main-content h4 { color: var(--text-primary); }
body.dark-mode .main-content p, body.dark-mode .main-content li { color: var(--text-secondary); }
body.dark-mode .main-content strong, body.dark-mode .main-content b { color: #fff; }
body.dark-mode .main-content a { color: var(--c-primary-light); }
body.dark-mode .main-content code { color: var(--c-accent-light); background: var(--bg-code); }
body.dark-mode .main-content blockquote { border-left-color: var(--c-primary); color: var(--text-secondary); background: var(--bg-code); }
body.dark-mode mark, body.dark-mode .highlight { background: #3a3010; color: #ffd700; }
body.dark-mode .kp-card-summary { color: var(--text-muted); }
body.dark-mode .kp-detail-content { color: var(--text-secondary); }
body.dark-mode .kp-detail-content h4 { color: var(--text-primary); }
body.dark-mode .qt-steps { color: var(--text-secondary); }
body.dark-mode .qt-steps li { color: var(--text-secondary); }
body.dark-mode .qt-note { color: var(--text-muted); }
body.dark-mode .readme-text { color: var(--text-secondary); }
body.dark-mode .readme-text strong { color: #fff; }
body.dark-mode .changelog-desc { color: var(--text-secondary); }
body.dark-mode .settings-row-label { color: var(--text-secondary); }
body.dark-mode .settings-section-title { color: var(--text-muted); }
body.dark-mode .toc-header { color: var(--text-primary); }
body.dark-mode .toc-toggle-all-btn { color: var(--text-secondary); border-color: var(--border-color); }
body.dark-mode .knowledge-item { color: var(--text-secondary); }
body.dark-mode .knowledge-item .panel-header { color: var(--text-primary); }
body.dark-mode .question-type-card .qtc-title { color: var(--text-primary); }
body.dark-mode .question-type-card .qtc-desc { color: var(--text-muted); }
body.dark-mode .hero-title { color: #fff; }
body.dark-mode .hero-subtitle { color: var(--text-secondary); }
body.dark-mode .page-footer p { color: var(--text-muted); }
body.dark-mode .math-display { background: var(--bg-code); }
body.dark-mode .formula-box { background: var(--bg-code); border-left-color: var(--c-primary-light); }
body.dark-mode .kp-card.expanded { border-color: var(--c-primary); }
body.dark-mode .kp-detail-jump { border-color: var(--c-primary); color: var(--c-primary-light); }
body.dark-mode .kp-detail-jump:hover { background: var(--c-primary); color: #fff; }

/* v7.1: 详解部分理解要点普通化，去掉彩色框框 */
#tab-detail .callout-tip {
  background: transparent !important;
  border-left: none !important;
  border: none !important;
  padding: 6px 0 !important;
  margin: 8px 0 !important;
  color: inherit !important;
}
#tab-detail .callout-tip::before {
  content: none !important;
}
#tab-detail .callout-tip p {
  margin: 4px 0 !important;
  line-height: 1.8 !important;
}
#tab-detail .callout-tip strong {
  color: var(--c-accent, #b45309);
}



/* ========== 来源库 v9.0 ========== */
.sources-header { padding: 16px 20px; border-bottom: 1px solid #e5e7eb; }
.sources-stats { display: flex; gap: 16px; flex-wrap: wrap; }
.sources-stat-item { background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 8px; padding: 10px 16px; min-width: 120px; }
.sources-stat-num { font-size: 22px; font-weight: 700; color: #1a3a5c; }
.sources-stat-label { font-size: 12px; color: #6b7280; margin-top: 2px; }

.sources-filters { display: flex; gap: 16px; padding: 12px 20px; border-bottom: 1px solid #e5e7eb; flex-wrap: wrap; align-items: center; background: #fafbfc; }
.sources-filter-group { display: flex; align-items: center; gap: 8px; }
.sources-filter-label { font-size: 13px; color: #6b7280; font-weight: 500; white-space: nowrap; }
.sources-type-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.sources-type-btn { padding: 4px 12px; border: 1px solid #d1d5db; border-radius: 16px; font-size: 12px; cursor: pointer; background: #fff; color: #6b7280; transition: all 0.15s; }
.sources-type-btn:hover { border-color: #1a3a5c; color: #1a3a5c; }
.sources-type-btn.active { background: #1a3a5c; color: #fff; border-color: #1a3a5c; }
.sources-chapter-select, .sources-sort-select { padding: 5px 10px; border: 1px solid #d1d5db; border-radius: 6px; font-size: 13px; background: #fff; cursor: pointer; }
.sources-search-input { padding: 6px 12px; border: 1px solid #d1d5db; border-radius: 6px; font-size: 13px; width: 220px; outline: none; }
.sources-search-input:focus { border-color: #1a3a5c; box-shadow: 0 0 0 2px rgba(26,58,92,0.1); }

.sources-list { padding: 16px 20px; }
.sources-card { border: 1px solid #e5e7eb; border-radius: 10px; padding: 14px 16px; margin-bottom: 12px; background: #fff; transition: all 0.15s; }
.sources-card:hover { border-color: #1a3a5c; box-shadow: 0 2px 8px rgba(26,58,92,0.06); }
.sources-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px; gap: 10px; }
.sources-card-title { font-size: 14px; font-weight: 600; color: #1a2332; line-height: 1.4; }
.sources-card-tags { display: flex; gap: 6px; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end; }
.sources-card-tag { padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 500; white-space: nowrap; }
.sources-card-excerpt { font-size: 13px; color: #4b5563; line-height: 1.7; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.sources-card-meta { display: flex; gap: 12px; font-size: 11px; color: #9ca3af; flex-wrap: wrap; }
.sources-card-meta span { display: flex; align-items: center; gap: 3px; }
.sources-card-keywords { margin-top: 6px; display: flex; gap: 4px; flex-wrap: wrap; }
.sources-card-keyword { padding: 1px 6px; background: #eef2f7; border-radius: 3px; font-size: 11px; color: #6b7280; }

.sources-pagination { display: flex; justify-content: center; gap: 6px; padding: 16px 20px 24px; }
.sources-page-btn { padding: 6px 12px; border: 1px solid #d1d5db; border-radius: 6px; font-size: 13px; cursor: pointer; background: #fff; color: #6b7280; }
.sources-page-btn:hover { border-color: #1a3a5c; color: #1a3a5c; }
.sources-page-btn.active { background: #1a3a5c; color: #fff; border-color: #1a3a5c; }
.sources-page-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.sources-empty { text-align: center; padding: 60px 20px; color: #9ca3af; font-size: 14px; }

@media (max-width: 768px) {
  .sources-filters { flex-direction: column; align-items: stretch; }
  .sources-filter-group { flex-wrap: wrap; }
  .sources-search-input { width: 100%; }
  .sources-stats { gap: 8px; }
  .sources-stat-item { min-width: 80px; padding: 8px 12px; }
  .sources-stat-num { font-size: 18px; }
}

/* 题型专区panel标题（用于目录收集） */
.panel-header .panel-title {
  margin: 0;
  padding: 0;
  font-size: inherit;
  font-weight: inherit;
  color: inherit;
  display: inline;
}

/* 展开折叠按钮确保可点击 */
.fab {
  pointer-events: auto !important;
  z-index: 9998 !important;
}
.fab svg {
  pointer-events: none;
}
.fab-tooltip {
  pointer-events: none;
}

/* 序号列表样式 */
ol.numbered-list {
  margin: 12px 0;
  padding-left: 24px;
}
ol.numbered-list li {
  margin: 6px 0;
  padding-left: 4px;
  line-height: 1.7;
}
ol.numbered-list li::marker {
  color: var(--accent, #2563eb);
  font-weight: 600;
}

/* ============================================
   打印讲义弹窗（屏幕版）
   ============================================ */
.print-dialog-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.5);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.print-dialog {
  background: #fff;
  border-radius: 12px;
  width: 100%;
  max-width: 520px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.3);
}
.print-dialog-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 20px;
  border-bottom: 1px solid #e5e7eb;
}
.print-dialog-header h2 {
  margin: 0;
  font-size: 17px;
  color: #1a3a5c;
}
.print-dialog-close {
  background: none;
  border: none;
  font-size: 18px;
  color: #6b7280;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 4px;
}
.print-dialog-close:hover { background: #f3f4f6; }
.print-dialog-body { padding: 16px 20px; }
.print-presets {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 16px;
}
.print-preset {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 12px;
  border: 1.5px solid #e5e7eb;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s;
}
.print-preset:hover { border-color: #93c5fd; }
.print-preset.active {
  border-color: #1a3a5c;
  background: #f0f5fa;
}
.print-preset input[type="radio"] { margin-top: 3px; }
.print-preset-name {
  font-weight: 600;
  font-size: 13px;
  color: #1f2937;
  display: block;
}
.print-preset-desc {
  font-size: 11px;
  color: #6b7280;
  display: block;
  margin-top: 2px;
}
.print-custom {
  border-top: 1px solid #e5e7eb;
  padding-top: 14px;
}
.print-custom-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.print-custom-label {
  font-size: 12px;
  font-weight: 600;
  color: #374151;
  min-width: 70px;
}
.print-check, .print-radio {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: #4b5563;
  cursor: pointer;
}
.print-tip {
  margin-top: 12px;
  padding: 8px 10px;
  background: #fffbeb;
  border-left: 3px solid #f59e0b;
  border-radius: 4px;
  font-size: 11px;
  color: #92400e;
  line-height: 1.5;
}
.print-dialog-footer {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 14px 20px;
  border-top: 1px solid #e5e7eb;
}
.print-btn-cancel {
  padding: 8px 16px;
  border: 1px solid #d1d5db;
  background: #fff;
  color: #374151;
  border-radius: 6px;
  font-size: 13px;
  cursor: pointer;
}
.print-btn-cancel:hover { background: #f9fafb; }
.print-btn-confirm {
  padding: 8px 16px;
  border: none;
  background: #1a3a5c;
  color: #fff;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}
.print-btn-confirm:hover { background: #15304a; }

/* print-root 默认隐藏 */
#print-root {
  display: none;
}


/* ============================================
   打印讲义 · A4纸质版
   ============================================ */
@page {
  size: A4 portrait;
  margin: 12mm 12mm 14mm;
}

@media print {
  html, body {
    background: #fff !important;
    color: #111 !important;
  }

  /* 隐藏网页UI，只打印print-root */
  body.print-mode .top-bar,
  body.print-mode .page-wrapper,
  body.print-mode .floating-actions,
  body.print-mode .toc-drawer,
  body.print-mode .toc-drawer-overlay,
  body.print-mode .settings-overlay,
  body.print-mode #reading-progress,
  body.print-mode .toc-collapse-handle,
  body.print-mode .print-dialog-overlay {
    display: none !important;
  }

  #print-root {
    display: block !important;
    width: auto !important;
    max-width: none !important;
    background: #fff !important;
    color: #111 !important;
    font-size: var(--print-font-size, 10.5pt) !important;
    line-height: var(--print-line-height, 1.48) !important;
    letter-spacing: var(--print-letter-spacing, 0) !important;
  }

  * {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* 纸质标题 */
  .print-document-header {
    border-bottom: 1.5pt solid #1a3a5c;
    padding-bottom: 6pt;
    margin-bottom: 12pt;
  }
  .print-document-header h1 {
    margin: 0 0 3pt;
    font-size: 17pt;
    line-height: 1.25;
    color: #1a3a5c;
    font-weight: 700;
  }
  .print-subtitle {
    font-size: 9pt;
    color: #666;
    line-height: 1.4;
  }

  /* 标题层级 */
  #print-root h1 {
    font-size: 16pt;
    line-height: 1.3;
    margin: 12pt 0 6pt;
    color: #1a3a5c;
    border-bottom: 1pt solid #1a3a5c;
    padding-bottom: 3pt;
  }
  #print-root h2 {
    font-size: 13.5pt;
    line-height: 1.35;
    margin: 9pt 0 4pt;
    color: #1f2937;
  }
  #print-root h3 {
    font-size: 11.5pt;
    line-height: 1.4;
    margin: 6pt 0 3pt;
    color: #1f2937;
  }
  #print-root h4 {
    font-size: 10.5pt;
    margin: 5pt 0 2pt;
  }

  /* 知识点速查纸质样式 */
  .print-kp-list { margin: 0; }
  .print-kp-item {
    display: flex;
    gap: 7pt;
    padding: 5pt 0;
    border-bottom: 0.5pt solid #ddd;
    break-inside: avoid;
  }
  .print-kp-index {
    width: 18pt;
    height: 18pt;
    flex: 0 0 18pt;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #1a3a5c;
    color: #fff;
    font-size: 8.5pt;
    font-weight: 700;
    border-radius: 3pt;
  }
  .print-kp-item h3 {
    margin: 0 0 1.5pt;
    font-size: 11pt;
  }
  .print-kp-meta {
    font-size: 8.5pt;
    color: #666;
    margin-bottom: 2pt;
  }
  .print-kp-item p {
    margin: 0;
    font-size: 10pt;
    line-height: 1.42;
  }

  /* 题型专区纸质化 */
  #print-root .qt-panel {
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    overflow: visible !important;
    margin: 0 0 8pt !important;
    break-inside: auto;
  }
  #print-root .qt-panel-header {
    padding: 4pt 5pt !important;
    border-left: 2pt solid #1a3a5c;
    border-bottom: 0.5pt solid #d9d9d9;
    gap: 6pt;
    cursor: default;
    break-after: avoid-page;
  }
  #print-root .qt-panel-num {
    width: 19pt;
    height: 19pt;
    font-size: 9pt;
    border-radius: 3pt;
  }
  #print-root .qt-panel-title {
    font-size: 11.5pt;
    margin: 0;
  }
  #print-root .qt-panel-chapter {
    font-size: 8.5pt;
    color: #777;
  }
  #print-root .qt-panel-body {
    padding: 3pt 5pt 5pt 7pt !important;
    border-top: none !important;
  }
  #print-root .qt-panel-detail {
    display: block !important;
    padding-top: 4pt;
    margin-top: 4pt;
  }

  /* 公式框 */
  #print-root .qt-formula-box,
  #print-root .formula-box,
  #print-root .math-display {
    background: transparent !important;
    border-radius: 0 !important;
    border-left: 1.5pt solid #1a3a5c !important;
    padding: 4pt 7pt !important;
    margin: 5pt 0 !important;
    line-height: 1.5 !important;
    overflow: visible !important;
    break-inside: avoid;
  }
  .formula-label {
    font-size: 8.5pt;
    font-weight: 700;
    color: #1a3a5c;
  }
  mjx-container {
    margin-top: 3pt !important;
    margin-bottom: 3pt !important;
  }

  /* knowledge-panel */
  #print-root .knowledge-panel {
    border: none !important;
    border-radius: 0 !important;
    overflow: visible !important;
    margin: 5pt 0 7pt !important;
    background: transparent !important;
    break-inside: auto;
  }
  #print-root .knowledge-panel .panel-header {
    background: #f5f7f9 !important;
    border-left: 2pt solid #1a3a5c;
    padding: 4pt 7pt !important;
    color: #1f2937 !important;
    cursor: default;
    break-after: avoid-page;
  }
  #print-root .knowledge-panel .panel-content {
    display: block !important;
    max-height: none !important;
    overflow: visible !important;
    padding: 4pt 7pt 5pt 9pt !important;
  }
  #print-root .panel-caret,
  #print-root .qt-panel-caret {
    display: none !important;
  }

  /* 正文/列表 */
  #print-root p { margin: 2.5pt 0; font-size: inherit; line-height: inherit; }
  #print-root ul, #print-root ol {
    margin: 3pt 0;
    padding-left: 18pt;
  }
  #print-root li {
    margin: 1.5pt 0;
    font-size: inherit;
    line-height: inherit;
  }

  /* Highlight */
  #print-root mark {
    background: #fff2a8 !important;
    color: inherit !important;
    padding: 0 0.08em !important;
    border-radius: 0 !important;
    font-weight: 600;
  }

  /* 表格 */
  #print-root table {
    width: 100%;
    border-collapse: collapse;
    font-size: 9.5pt;
    line-height: 1.35;
    margin: 5pt 0;
  }
  #print-root th, #print-root td {
    border: 0.5pt solid #aaa;
    padding: 3pt 4pt;
  }
  #print-root th {
    background: #f1f3f5 !important;
    font-weight: 700;
  }
  #print-root thead { display: table-header-group; }
  #print-root tr { break-inside: avoid; }

  /* callout/例题 */
  #print-root .callout,
  #print-root .qt-example {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    border-left: 1.5pt solid #999 !important;
    border-radius: 0 !important;
    padding: 4pt 7pt !important;
    margin: 5pt 0 !important;
    font-size: inherit;
    line-height: inherit;
  }

  /* 分页规则 */
  #print-root h1, #print-root h2, #print-root h3, #print-root h4,
  #print-root .qt-panel-header, #print-root .panel-header,
  #print-root .formula-label {
    break-after: avoid-page;
    page-break-after: avoid;
  }
  #print-root .print-kp-item,
  #print-root .qt-formula-box,
  #print-root .formula-box,
  #print-root .math-display,
  #print-root img,
  #print-root .figure-container {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* 图片/SVG */
  #print-root img, #print-root svg {
    max-width: 100% !important;
    height: auto !important;
  }
  #print-root .figure-container {
    margin: 5pt auto;
  }

  /* section间距 */
  #print-root .print-section {
    margin-bottom: 10pt;
  }

  /* === v9.1.1 伪元素清理 === */
  #print-root .callout::before {
    content: none !important;
    display: none !important;
  }
  #print-root .qt-steps {
    list-style: decimal !important;
    counter-reset: none !important;
    padding-left: 18pt !important;
  }
  #print-root .qt-steps li {
    counter-increment: none !important;
    position: static !important;
    padding: 0 !important;
    margin: 1.5pt 0 !important;
  }
  #print-root .qt-steps li::before {
    content: none !important;
    display: none !important;
  }

}

/* v9.1.0-print */

/* ============================================
   v9.1.1 打印弹窗 - 排版设置 / 模块顺序
   ============================================ */
.print-layout-section {
  border-top: 1px solid #e5e7eb;
  padding-top: 14px;
  margin-top: 14px;
}
.print-layout-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}
.print-layout-title {
  font-size: 13px;
  font-weight: 600;
  color: #1a3a5c;
}
.print-reset-btn {
  border: 1px solid #d1d5db;
  background: #fff;
  color: #6b7280;
  padding: 4px 10px;
  font-size: 11px;
  border-radius: 4px;
  cursor: pointer;
}
.print-reset-btn:hover {
  background: #f9fafb;
  color: #374151;
}
.print-setting-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 8px 0;
}
.print-setting-label {
  font-size: 12px;
  font-weight: 600;
  color: #374151;
}
.print-segmented {
  display: inline-flex;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  overflow: hidden;
}
.print-segmented button {
  border: 0;
  border-right: 1px solid #d1d5db;
  background: #fff;
  color: #6b7280;
  padding: 5px 10px;
  font-size: 11.5px;
  cursor: pointer;
}
.print-segmented button:last-child {
  border-right: 0;
}
.print-segmented button.active {
  background: #1a3a5c;
  color: #fff;
}
.print-order-row {
  margin-top: 12px;
  margin-bottom: 6px;
}
.print-order-list {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.print-order-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  background: #fff;
}
.print-order-item.disabled {
  opacity: 0.45;
}
.print-order-handle {
  color: #9ca3af;
  cursor: grab;
  font-size: 14px;
}
.print-order-name {
  flex: 1;
  font-size: 12px;
  color: #374151;
}
.print-order-btn {
  width: 26px;
  height: 26px;
  border: 1px solid #d1d5db;
  background: #fff;
  border-radius: 4px;
  cursor: pointer;
  font-size: 12px;
  color: #6b7280;
  display: flex;
  align-items: center;
  justify-content: center;
}
.print-order-btn:hover:not(:disabled) {
  background: #f3f4f6;
  color: #1a3a5c;
}
.print-order-btn:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}
