﻿*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg: #F8F4ED;
  --card-bg: #fff;
  --text: #2C2C2C;
  --text-secondary: #555;
  --accent: #537D96;
  --input-bg: #f5f5f5;
  --input-border: #999;
  --input-focus-bg: #eef5f9;
  --btn-bg: #fff;
  --btn-border: #ccc;
  --btn-hover: #f0f0f0;
  --correct-bg: #d4edda;
  --correct-border: #28a745;
  --wrong-bg: #f8d7da;
  --wrong-border: #dc3545;
  --correct-text: #155724;
  --wrong-text: #721c24;
  --shadow: 0 1px 4px rgba(0,0,0,0.08);
  --radius: 8px;
  --font: -apple-system, "Microsoft YaHei", "PingFang SC", sans-serif;
  --border: #e0d8cc;
  --dropdown-hover: #f5f5f5;
  --dropdown-active: #eef5f9;
  --modal-bg: #fff;
  --modal-text: #2C2C2C;
  --modal-detail: #888;
  --modal-cancel-bg: #e8e8e8;
  --modal-cancel-text: #555;
  --panel-bg: #fefdf9;
  --panel-text: #555;
  --upload-bg: #fafaf7;
  --upload-btn-bg: #fff;
  --upload-btn-text: #666;
  --reset-btn-bg: #f9f9f9;
  --reset-btn-text: #888;
  --reset-btn-border: #d0d0d0;
  --reset-hover-bg: #fef5e7;
  --reset-hover-border: #d4b896;
  --reset-hover-text: #8b6914;
  --clear-hover-bg: #eef5f9;
  --clear-hover-border: #b0c8d8;
  --floating-bg: rgba(83,125,150,0.92);
  --question-color: #3a3a3a;
  --dropdown-sep: #eee;
}

.theme-dark {
  --bg: #1e1e1e;
  --card-bg: #2a2a2a;
  --text: #e0d8c8;
  --text-secondary: #aaa;
  --accent: #7aadc8;
  --input-bg: #333;
  --input-border: #555;
  --input-focus-bg: #3a4a50;
  --btn-bg: #333;
  --btn-border: #555;
  --btn-hover: #444;
  --shadow: 0 1px 4px rgba(0,0,0,0.3);
  --border: #444;
  --dropdown-hover: #363636;
  --dropdown-active: #2e4048;
  --correct-bg: #1e3a28;
  --correct-border: #2d8a4a;
  --correct-text: #8fd4a2;
  --wrong-bg: #3a1e22;
  --wrong-border: #c0392b;
  --wrong-text: #e0a0a8;
  --modal-bg: #2a2a2a;
  --modal-text: #e0d8c8;
  --modal-detail: #999;
  --modal-cancel-bg: #444;
  --modal-cancel-text: #ccc;
  --panel-bg: #252525;
  --panel-text: #bbb;
  --upload-bg: #252525;
  --upload-btn-bg: #333;
  --upload-btn-text: #ccc;
  --reset-btn-bg: #333;
  --reset-btn-text: #999;
  --reset-btn-border: #555;
  --reset-hover-bg: #3a3020;
  --reset-hover-border: #8b6914;
  --reset-hover-text: #d4b896;
  --clear-hover-bg: #2e4048;
  --clear-hover-border: #537D96;
  --floating-bg: rgba(122,173,200,0.92);
  --question-color: #ccc;
  --dropdown-sep: #444;
}

@media (prefers-color-scheme: dark) {
  .theme-auto {
    --bg: #1e1e1e;
    --card-bg: #2a2a2a;
    --text: #e0d8c8;
    --text-secondary: #aaa;
    --accent: #7aadc8;
    --input-bg: #333;
    --input-border: #555;
    --input-focus-bg: #3a4a50;
    --btn-bg: #333;
    --btn-border: #555;
    --btn-hover: #444;
    --shadow: 0 1px 4px rgba(0,0,0,0.3);
    --border: #444;
    --dropdown-hover: #363636;
    --dropdown-active: #2e4048;
    --correct-bg: #1e3a28;
    --correct-border: #2d8a4a;
    --correct-text: #8fd4a2;
    --wrong-bg: #3a1e22;
    --wrong-border: #c0392b;
    --wrong-text: #e0a0a8;
    --modal-bg: #2a2a2a;
    --modal-text: #e0d8c8;
    --modal-detail: #999;
    --modal-cancel-bg: #444;
    --modal-cancel-text: #ccc;
    --panel-bg: #252525;
    --panel-text: #bbb;
    --upload-bg: #252525;
    --upload-btn-bg: #333;
    --upload-btn-text: #ccc;
    --reset-btn-bg: #333;
    --reset-btn-text: #999;
    --reset-btn-border: #555;
    --reset-hover-bg: #3a3020;
    --reset-hover-border: #8b6914;
    --reset-hover-text: #d4b896;
    --clear-hover-bg: #2e4048;
    --clear-hover-border: #537D96;
    --floating-bg: rgba(122,173,200,0.92);
    --question-color: #ccc;
    --dropdown-sep: #444;
  }
}

body {
  font-family: var(--font);
  background: var(--bg);
  color: var(--text);
  line-height: 1.8;
  min-width: 600px;
  padding-bottom: 60px;
}

/* ========== TOOLBAR ========== */
.toolbar {
  position: sticky;
  top: 0;
  z-index: 500;
  background: var(--card-bg);
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  padding: 12px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
}
.toolbar-title {
  font-size: 1.15em;
  font-weight: 700;
  color: var(--accent);
}
.toolbar-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.btn {
  padding: 6px 16px;
  border: 1px solid var(--btn-border);
  border-radius: 6px;
  background: var(--btn-bg);
  cursor: pointer;
  font-size: 0.9em;
  font-family: var(--font);
  color: var(--text);
  transition: background 0.15s, border-color 0.15s;
}
.btn:hover { background: var(--btn-hover); }
.btn-clear { border-color: #e0a0a0; color: #c0392b; }
.btn-clear:hover { background: #fdf2f2; }
.btn-accent {
  border-color: var(--accent);
  color: var(--accent);
  font-weight: 600;
}
.btn-accent:hover { background: #eef5f9; }

/* ========== DOC DROPDOWN ========== */
.doc-dropdown-wrapper {
  position: relative;
}
.doc-dropdown-btn {
  padding: 6px 14px;
  border: 1px solid var(--btn-border);
  border-radius: var(--radius);
  background: var(--btn-bg);
  cursor: pointer;
  font-size: 0.9em;
  font-family: var(--font);
  color: var(--text);
  transition: all .15s;
  white-space: nowrap;
}
.doc-dropdown-btn:hover { border-color: var(--accent); color: var(--accent); }
.doc-dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 4px;
  min-width: 220px;
  background: var(--card-bg);
  border: 1px solid var(--btn-border);
  border-radius: var(--radius);
  box-shadow: 0 4px 16px rgba(0,0,0,0.12);
  z-index: 600;
  overflow: hidden;
}
.doc-dropdown-menu.visible { display: block; }
.doc-dropdown-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 14px;
  cursor: pointer;
  font-size: 0.88em;
  color: var(--text);
  transition: background .1s;
  white-space: nowrap;
}
.doc-dropdown-item:hover { background: var(--dropdown-hover); }
.doc-dropdown-item.active { background: var(--dropdown-active); color: var(--accent); font-weight: 600; }
.doc-dropdown-item .doc-delete-btn {
  flex-shrink: 0;
  margin-left: 10px;
  padding: 2px 8px;
  border: none;
  border-radius: 3px;
  background: transparent;
  color: #ccc;
  cursor: pointer;
  font-size: 1em;
  line-height: 1;
  transition: all .15s;
}
.doc-dropdown-item .doc-delete-btn:hover {
  background: #f8d7da;
  color: #dc3545;
}
.doc-dropdown-item .doc-rename-btn {
  flex-shrink: 0;
  padding: 2px 8px;
  border: none;
  border-radius: 3px;
  background: transparent;
  color: #ccc;
  cursor: pointer;
  font-size: 0.95em;
  line-height: 1;
  transition: all .15s;
}
.doc-dropdown-item .doc-rename-btn:hover {
  background: #eef5f9;
  color: var(--accent);
}

/* ========== INSTRUCTIONS PANEL ========== */
.instructions-toggle {
  background: none;
  border: none;
  color: var(--accent);
  cursor: pointer;
  font-size: 0.9em;
  font-family: var(--font);
  text-decoration: underline;
}
.instructions-panel {
  display: none;
  background: var(--panel-bg);
  border: 1px solid #e0d8c8;
  border-radius: var(--radius);
  margin: 12px 24px 0;
  padding: 14px 20px;
  font-size: 0.9em;
  line-height: 1.7;
  color: var(--panel-text);
}
.instructions-panel.visible { display: block; }
.instructions-panel p { margin: 4px 0; }

/* ========== MAIN CONTENT ========== */
.content {
  max-width: 900px;
  margin: 0 auto;
  padding: 20px 24px;
}
.section-title {
  font-size: 1.3em;
  font-weight: 700;
  color: var(--accent);
  margin: 32px 0 10px;
  padding-bottom: 6px;
  border-bottom: 2px solid var(--accent);
}
.question-title {
  font-size: 1.05em;
  font-weight: 600;
  margin: 20px 0 8px;
  color: var(--question-color);
}

/* ========== BLOCK CARD ========== */
.content-block {
  background: var(--card-bg);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 16px 20px 16px;
  margin-bottom: 14px;
  line-height: 2;
}
.block-text {
  white-space: pre-wrap;
  margin: 0;
  line-height: 2;
}
/* ========== BLOCK ACTIONS ========== */
.block-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
  margin-top: 10px;
}
.check-btn {
  padding: 4px 14px;
  border: 1px solid var(--btn-border);
  border-radius: 6px;
  background: var(--btn-bg);
  cursor: pointer;
  font-size: 0.85em;
  font-family: var(--font);
  color: var(--text);
  transition: all 0.15s;
  white-space: nowrap;
}
.check-btn:hover { background: var(--btn-hover); }
.check-btn.all-correct {
  background: var(--correct-bg);
  border-color: var(--correct-border);
  color: var(--correct-text);
}
.check-btn.has-error {
  background: var(--wrong-bg);
  border-color: var(--wrong-border);
  color: var(--wrong-text);
}
.reset-btn,
.clear-answers-btn {
  padding: 4px 12px;
  border: 1px solid var(--reset-btn-border);
  border-radius: 6px;
  background: var(--reset-btn-bg);
  cursor: pointer;
  font-size: 0.8em;
  font-family: var(--font);
  color: var(--reset-btn-text);
  transition: all 0.15s;
  white-space: nowrap;
}
.reset-btn:hover {
  background: var(--reset-hover-bg);
  border-color: var(--reset-hover-border);
  color: var(--reset-hover-text);
}
.clear-answers-btn:hover {
  background: var(--clear-hover-bg);
  border-color: var(--clear-hover-border);
  color: var(--accent);
}

/* ========== BLANK INPUT ========== */
.blank-wrapper {
  display: inline-block;
  position: relative;
  vertical-align: bottom;
  margin: 0 2px;
}
.blank-wrapper.block-wrapper {
  display: block;
  margin: 4px 0;
}
.blank-input {
  font-family: var(--font);
  font-size: 1em;
  border: none;
  border-bottom: 1.5px dashed var(--input-border);
  background: var(--input-bg);
  padding: 2px 6px;
  outline: none;
  color: var(--text);
  border-radius: 3px 3px 0 0;
  transition: background 0.15s, border-color 0.15s;
  min-width: 4em;
  max-width: 100%;
  text-align: center;
}
.blank-input:focus {
  border-bottom-color: var(--accent);
  background: var(--input-focus-bg);

}

/* textarea 填空 */
textarea.blank-input {
  display: block;
  width: 100%;
  resize: vertical;
  min-height: 2em;
  padding: 6px 10px;
  line-height: 1.8;
  border: 1.5px dashed var(--input-border);
  border-radius: 4px;
  text-align: left;
  box-sizing: border-box;
}
textarea.blank-input:focus {
  border-color: var(--accent);
  background: var(--input-focus-bg);
  outline: none;
}
.blank-input::placeholder { color: var(--text-secondary); font-style: italic; }
.blank-input.correct {
  background: var(--correct-bg);
  border-bottom-color: var(--correct-border);
}
.blank-input.wrong {
  background: var(--wrong-bg);
  border-bottom-color: var(--wrong-border);
}
.correct-answer-hint {
  display: inline-block;
  font-size: 0.82em;
  color: #92400e;
  background: #fef3c7;
  border: 1px solid #fcd34d;
  border-radius: 5px;
  padding: 3px 8px;
  margin: 4px 0 2px;
  line-height: 1.5;
  white-space: normal;
  word-break: break-word;
  max-width: 100%;
  box-shadow: 0 1px 2px rgba(0,0,0,0.06);
}

/* ========== FLOATING BUTTON ========== */
.floating-btn {
  position: fixed;
  z-index: 1100;
  display: none;
  padding: 6px 16px;
  background: var(--floating-bg);
  backdrop-filter: blur(4px);
  color: #fff;
  border: none;
  border-radius: 20px;
  cursor: pointer;
  font-size: 0.9em;
  font-family: var(--font);
  box-shadow: 0 4px 14px rgba(0,0,0,0.2);
  transition: background 0.15s, transform 0.1s;
  white-space: nowrap;
}
.floating-btn:hover { background: rgba(83,125,150,1); transform: scale(1.04); }
.floating-btn:active { transform: scale(0.97); }

/* ========== CONFIRM DIALOG ========== */
.confirm-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.35);
  z-index: 3000;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: confirmFadeIn .15s ease;
}
@keyframes confirmFadeIn { from { opacity: 0; } to { opacity: 1; } }
.confirm-dialog {
  background: var(--modal-bg);
  border-radius: 12px;
  padding: 28px 32px 24px;
  max-width: 380px;
  width: 90%;
  text-align: center;
  box-shadow: 0 8px 32px rgba(0,0,0,0.18);
}
.confirm-icon { font-size: 2em; margin-bottom: 10px; }
.confirm-message { font-size: 1.05em; font-weight: 600; color: var(--modal-text); margin-bottom: 6px; }
.confirm-detail { font-size: 0.9em; color: var(--modal-detail); margin-bottom: 20px; }
.confirm-actions { display: flex; gap: 12px; justify-content: center; }
.confirm-btn {
  padding: 8px 28px;
  border-radius: 6px;
  border: none;
  cursor: pointer;
  font-size: 0.95em;
  font-family: var(--font);
  transition: all .15s;
}
.confirm-btn.cancel-btn { background: var(--modal-cancel-bg); color: var(--modal-cancel-text); }
.confirm-btn.cancel-btn:hover { background: #ddd; }
.confirm-btn.ok-btn { background: var(--accent); color: #fff; }
.confirm-btn.ok-btn:hover { background: #4a6d84; }

/* ========== UPLOAD ZONE ========== */
.upload-zone {
  margin: 0 0 16px;
  padding: 16px 20px;
  border: 2px dashed #ccc;
  border-radius: var(--radius);
  background: var(--upload-bg);
  text-align: center;
  cursor: pointer;
  transition: all .15s;
}
.upload-zone:hover { border-color: var(--accent); background: #f0f2f5; }
.upload-zone.drag-over { border-color: var(--accent); background: #e8f0f5; }
.upload-zone-title { font-weight: 600; color: var(--accent); margin-bottom: 4px; }
.upload-zone-hint { font-size: 0.85em; color: #999; margin-bottom: 6px; }
.upload-zone-tip {
  font-size: 0.78em;
  color: var(--text-secondary);
  margin-bottom: 8px;
  line-height: 1.5;
}
.upload-zone-actions { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.upload-zone .small-btn {
  padding: 3px 12px;
  border: 1px solid #ccc;
  border-radius: 4px;
  background: var(--upload-btn-bg);
  cursor: pointer;
  font-size: 0.82em;
  font-family: var(--font);
  color: var(--upload-btn-text);
  transition: all .15s;
}
.upload-zone .small-btn:hover { border-color: var(--accent); color: var(--accent); }
.upload-zone input[type="file"] { display: none; }

/* ========== EDIT HELP PANEL ========== */
#editHelpPanel {
  background: var(--panel-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin: 4px 24px 0;
  padding: 10px 18px;
  font-size: 0.82em;
  line-height: 1.6;
  color: var(--panel-text);
}
#editHelpPanel p {
  margin: 2px 0;
}

/* ========== BLOCK TITLE ========== */
.block-title {
  font-weight: 700;
  font-size: 0.95em;
  color: var(--accent);
  margin-bottom: 6px;
  padding-bottom: 4px;
  border-bottom: 1px dashed var(--input-border);
}
.block-title:empty { display: none; }

/* ========== BLOCK MENU ========== */
.block-menu-btn {
  padding: 4px 10px;
  border: 1px solid var(--btn-border);
  border-radius: 4px;
  background: var(--btn-bg);
  color: var(--text-secondary);
  cursor: pointer;
  font-size: 1em;
  font-weight: 700;
  letter-spacing: 2px;
  line-height: 1;
  transition: all .15s;
}
.block-menu-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}

/* ========== BLOCK POPUP ========== */
.block-popup-menu {
  z-index: 1500;
  background: var(--card-bg);
  border: 1px solid var(--btn-border);
  border-radius: var(--radius);
  box-shadow: 0 4px 16px rgba(0,0,0,0.15);
  min-width: 180px;
  overflow: hidden;
}
.block-popup-item {
  padding: 8px 14px;
  cursor: pointer;
  font-size: 0.85em;
  color: var(--text);
  transition: background .1s;
  white-space: nowrap;
}
.block-popup-item:hover {
  background: var(--dropdown-hover);
  color: var(--accent);
}

/* ========== SPLIT BUTTON ========== */
.split-btn {
  position: absolute;
  left: -12px;
  top: 50%;
  transform: translateY(-50%);
  width: 24px;
  height: 24px;
  border: 1px solid var(--input-border);
  border-radius: 50%;
  background: var(--card-bg);
  color: var(--text-secondary);
  cursor: pointer;
  font-size: 0.8em;
  line-height: 1;
  padding: 0;
  display: none;
  transition: all .15s;
}
.split-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--dropdown-active);
}
.edit-mode .split-btn { display: block; }
.edit-mode .content-block { padding-left: 36px; }

/* ========== FLOATING EDIT BAR ========== */
.floating-edit-bar {
  position: fixed;
  z-index: 1100;
  display: none;
  gap: 6px;
  padding: 4px;
  background: var(--card-bg);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.18);
}
.edit-action-btn {
  padding: 5px 12px;
  border: 1px solid var(--btn-border);
  border-radius: 6px;
  background: var(--btn-bg);
  color: var(--text);
  cursor: pointer;
  font-size: 0.82em;
  font-family: var(--font);
  white-space: nowrap;
  transition: all .15s;
}
.edit-action-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--dropdown-active);
}

/* ========== RESPONSIVE ========== */
/* ========== 一、编辑按钮激活态 ========== */
#btnEdit.active {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}

/* ========== 二、选择面板 ========== */
.selection-panel {
  position: sticky;
  top: 0;
  z-index: 900;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  background: var(--card-bg);
  border-bottom: 2px solid var(--accent);
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  margin: 0 0 12px 0;
  border-radius: 0 0 var(--radius) var(--radius);
  flex-wrap: wrap;
}
.selection-info {
  font-weight: 600;
  font-size: 0.9em;
  color: var(--accent);
  min-width: 60px;
}
.small-btn {
  padding: 5px 14px;
  border: 1px solid var(--btn-border);
  border-radius: 4px;
  background: var(--btn-bg);
  color: var(--text);
  cursor: pointer;
  font-size: 0.82em;
  font-family: inherit;
  transition: all .15s;
}
.small-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}
.small-btn.btn-accent {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}
.small-btn.btn-accent:hover {
  opacity: 0.9;
}
.small-btn.btn-accent:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ========== 三、编辑复选框 ========== */
.edit-checkbox-label {
  position: absolute;
  top: 8px;
  left: -28px;
  cursor: pointer;
  z-index: 10;
}
.edit-checkbox {
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--accent);
}
.content-block {
  position: relative;
  padding-left: 32px;
}

/* ========== 四、格式工具栏 ========== */
.format-toolbar {
  position: sticky;
  top: 0;
  z-index: 950;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 8px 14px;
  background: var(--card-bg);
  border-bottom: 1px solid var(--btn-border);
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
  margin: 0 0 12px 0;
  border-radius: 0 0 var(--radius) var(--radius);
  flex-wrap: wrap;
}
.fmt-btn {
  padding: 4px 10px;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  font-size: 0.85em;
  font-family: Georgia, serif;
  transition: all .15s;
  min-width: 28px;
  text-align: center;
}
.fmt-btn:hover {
  background: var(--dropdown-hover);
  color: var(--accent);
  border-color: var(--btn-border);
}
.fmt-sep {
  color: var(--btn-border);
  font-size: 0.8em;
  user-select: none;
  margin: 0 2px;
}

/* ========== 五、编辑中的 block ========== */
.block-text.editing {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 4px;
  padding: 10px 12px;
  min-height: 80px;
  background: var(--input-bg);
  cursor: text;
  line-height: 1.8;
}
.block-text.editing:focus {
  box-shadow: 0 0 0 3px rgba(83, 125, 150, 0.15);
}
.block-text.editing p { margin: 0 0 0.5em 0; }
.block-text.editing h1,
.block-text.editing h2,
.block-text.editing h3 {
  margin: 0.5em 0 0.3em 0;
  font-weight: 700;
  color: var(--accent);
}
.block-text.editing h1 { font-size: 1.5em; }
.block-text.editing h2 { font-size: 1.25em; }
.block-text.editing h3 { font-size: 1.1em; }
.block-text.editing blockquote {
  margin: 0.5em 0;
  padding-left: 12px;
  border-left: 3px solid var(--accent);
  color: var(--text-secondary);
  font-style: italic;
}
.block-text.editing ul,
.block-text.editing ol {
  padding-left: 24px;
  margin: 0.3em 0;
}

/* ========== 六、变暗锁定态 ========== */
.block-dimmed {
  opacity: 0.45;
  pointer-events: none;
  user-select: none;
  transition: opacity .2s;
}
.block-dimmed .block-text {
  cursor: default;
}

/* ========== 七、格式化文本渲染（非编辑模式显示用） ========== */
.content-block h1,
.content-block h2,
.content-block h3 {
  margin: 0.4em 0 0.2em 0;
  font-weight: 700;
  color: var(--accent);
}
.content-block h1 { font-size: 1.4em; }
.content-block h2 { font-size: 1.15em; }
.content-block h3 { font-size: 1.05em; }
.content-block blockquote {
  margin: 0.4em 0;
  padding-left: 12px;
  border-left: 3px solid var(--accent);
  color: var(--text-secondary);
  font-style: italic;
}
.content-block ul,
.content-block ol {
  padding-left: 24px;
  margin: 0.2em 0;
}
.content-block li {
  margin: 0.1em 0;
}

/* ══════════════════════════════════════════════
   Spec: 编辑模式 CSS（sikao-editmode-full-spec.md）
   含 source-mode / #btnToggleSource.active
   ══════════════════════════════════════════════ */

/* ━━━ 一、编辑按钮激活态 ━━━ */
#btnEdit.active {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}

/* ━━━ 七、渲染时的 HTML 内容（非编辑模式下显示格式化文本） ━━━ */
.content-block ol {
  padding-left: 24px;
  margin: 0.2em 0;
}
.content-block li {
  margin: 0.1em 0;
}

/* 空段占位提示 */
.block-text.editing[data-empty="1"]::after {
  content: '此段为空，完成编辑后自动删除';
  display: block;
  color: var(--text-secondary);
  font-style: italic;
  font-size: 0.85em;
  opacity: 0.5;
  margin-top: 6px;
}

/* 段落间距（编辑模式和正常模式） */
.block-text.editing div {
  margin: 0 0 0.5em 0;
}
.content-block .block-text > div,
.content-block .block-text > p {
  margin: 0.3em 0;
}


/* 标题层级明显区分 — 红橙黄绿蓝紫 */
.block-text.editing h1, .content-block h1 { font-size: 1.6em; font-weight: 800; color: #e74c3c; border-bottom: 2px solid #e74c3c; padding-bottom: 4px; }
.block-text.editing h2, .content-block h2 { font-size: 1.3em; font-weight: 700; color: #e67e22; }
.block-text.editing h3, .content-block h3 { font-size: 1.15em; font-weight: 600; color: #f1c40f; }
.block-text.editing h4, .content-block h4 { font-size: 1.05em; font-weight: 600; color: #2ecc71; }
.block-text.editing h5, .content-block h5 { font-size: 0.95em; font-weight: 600; color: #3498db; }
.block-text.editing h6, .content-block h6 { font-size: 0.85em; font-weight: 600; color: #9b59b6; }

/* 源码分栏模式 */
.source-split { display: flex; gap: 10px; min-height: 120px; align-items: flex-start; }
.source-input { flex: 1; font-family: 'JetBrains Mono','Consolas',monospace; font-size: 0.88em; line-height: 1.7; resize: vertical; border: 1px solid var(--input-border); border-radius: 4px; padding: 8px 10px; background: var(--input-bg); color: var(--text); min-width: 0; min-height: 120px; max-height: 55vh; overflow-y: auto; }
.source-preview { flex: 1; padding: 8px 10px; border: 1px solid var(--input-border); border-radius: 4px; background: var(--card-bg); overflow-y: auto; line-height: 1.7; min-width: 0; min-height: 120px; max-height: 55vh; }
.source-preview h1,.source-preview h2,.source-preview h3,.source-preview h4,.source-preview h5,.source-preview h6 { margin: 0.3em 0; }
.source-preview blockquote { border-left: 3px solid var(--accent); padding-left: 10px; margin: 0.3em 0; color: var(--text-secondary); }
.source-preview ul,.source-preview ol { padding-left: 20px; margin: 0.2em 0; }

/* 预览模式（只读） */
.block-text.preview-mode { cursor: default; background: var(--card-bg); }

.confirm-skip {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 8px 0 4px;
  font-size: 0.82em;
  color: var(--text-secondary);
  cursor: pointer;
  user-select: none;
}
.confirm-skip input[type="checkbox"] {
  width: 15px;
  height: 15px;
  cursor: pointer;
  accent-color: var(--accent);
}

/* ========== 设置弹窗 ========== */
.settings-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.4); z-index: 2000;
  display: flex; align-items: center; justify-content: center;
}
.settings-modal {
  background: var(--card-bg); border-radius: 10px;
  padding: 20px 24px; min-width: 320px; max-width: 400px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
  display: flex; flex-direction: column;
  max-height: 85vh;
}
.settings-body {
  overflow-y: auto;
  flex: 1;
  margin: 0 -4px;
  padding: 0 4px;
}
.settings-title {
  font-size: 1.1em; font-weight: 700; color: var(--text);
  margin-bottom: 16px; padding-bottom: 10px;
  border-bottom: 1px solid var(--btn-border);
  flex-shrink: 0;
}
.settings-section {
  border-bottom: 1px solid var(--btn-border);
}
.settings-section:last-child { border-bottom: none; }
.settings-section-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 4px; cursor: pointer; user-select: none;
  color: var(--text); font-size: 0.95em;
  transition: background .1s;
}
.settings-section-header:hover {
  background: var(--dropdown-hover); border-radius: 6px;
}
.settings-section-header .arrow {
  font-size: 0.75em; color: var(--text-secondary);
  transition: transform .2s;
}
.settings-section-header .arrow.open { transform: rotate(90deg); }
.settings-section-body {
  display: none; padding: 0 4px 12px 12px;
}
.settings-section-body.open { display: block; }
.settings-option {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; cursor: pointer; border-radius: 6px;
  color: var(--text); font-size: 0.9em;
  transition: background .1s;
}
.settings-option:hover { background: var(--dropdown-hover); }
.settings-option.active {
  background: var(--dropdown-active); color: var(--accent); font-weight: 600;
}
.settings-option .radio-dot {
  width: 16px; height: 16px; border-radius: 50%;
  border: 2px solid var(--btn-border); flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.settings-option.active .radio-dot {
  border-color: var(--accent);
}
.settings-option.active .radio-dot::after {
  content: ''; width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent);
}
.settings-close-area {
  display: flex; justify-content: flex-end; margin-top: 14px;
  flex-shrink: 0;
}
.settings-close-btn {
  padding: 6px 20px; border: 1px solid var(--btn-border);
  border-radius: var(--radius); background: var(--btn-bg);
  color: var(--text); cursor: pointer; font-family: var(--font);
  font-size: 0.9em;
}
.settings-close-btn:hover { border-color: var(--accent); color: var(--accent); }
.settings-current {
  font-size: 0.8em; color: var(--text-secondary); margin-right: 4px;
}
.settings-hint-row {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 10px; margin-bottom: 8px;
}
.settings-hint {
  font-size: 0.8em; color: var(--text-secondary);
  line-height: 1.5; flex: 1;
}
.settings-toggle-all {
  flex-shrink: 0;
  padding: 3px 10px;
  border: 1px solid var(--btn-border);
  border-radius: var(--radius);
  background: var(--btn-bg);
  color: var(--accent);
  cursor: pointer; font-family: var(--font);
  font-size: 0.8em;
  white-space: nowrap;
}
.settings-toggle-all:hover { border-color: var(--accent); }
.settings-check {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 10px; cursor: pointer; border-radius: 6px;
  color: var(--text); font-size: 0.9em;
  transition: background .1s;
}
.settings-check:hover { background: var(--dropdown-hover); }
.settings-check input[type="checkbox"] {
  width: 15px; height: 15px; cursor: pointer;
  accent-color: var(--accent); flex-shrink: 0;
}
.donate-qr {
  display: block;
  width: 160px; height: auto;
  margin: 6px auto 10px;
  border-radius: 8px;
  border: 1px solid var(--btn-border);
}

/* ========== 反馈区 ========== */
.feedback-block {
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px dashed var(--btn-border);
}
.feedback-block:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.feedback-channel-title {
  font-size: 0.9em; font-weight: 700; color: var(--text);
  margin-bottom: 4px;
}
.feedback-channel-desc {
  font-size: 0.8em; color: var(--text-secondary);
  line-height: 1.5; margin-bottom: 4px;
}
.feedback-btn {
  padding: 5px 14px;
  border: 1px solid var(--btn-border);
  border-radius: var(--radius);
  background: var(--btn-bg);
  color: var(--text); cursor: pointer;
  font-family: var(--font); font-size: 0.85em;
  margin-top: 6px;
  display: inline-block;
  text-decoration: none;
}
.feedback-btn:hover { border-color: var(--accent); color: var(--accent); }
.feedback-mailto { margin-left: 4px; }
.feedback-email-box {
  display: inline-block;
  padding: 6px 12px;
  border: 1px dashed var(--accent);
  border-radius: 6px;
  background: var(--dropdown-active);
  color: var(--accent);
  font-size: 0.9em;
  font-weight: 600;
  margin: 6px 0 2px;
}
.feedback-note {
  font-size: 0.75em;
  color: var(--text-secondary);
  line-height: 1.5;
  margin-top: 6px;
}

/* ========== 使用说明面板（结构化板块） ========== */
.help-tip {
  font-size: 0.9em;
  color: var(--text-secondary);
  margin-bottom: 4px;
}
.help-section {
  margin-top: 14px;
  padding: 10px 14px;
  background: var(--panel-bg);
  border-left: 3px solid var(--accent);
  border-radius: 6px;
}
.help-section-title {
  font-size: 0.95em;
  font-weight: 700;
  margin-bottom: 6px;
  color: var(--accent);
}
.help-item {
  font-size: 0.88em;
  line-height: 1.8;
  color: var(--text);
}
.help-item b {
  color: var(--text);
}
.help-highlight {
  color: #c0392b;
  font-weight: 700;
}

/* ========== 使用说明弹窗 ========== */
.help-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.4); z-index: 2000;
  display: none;
  align-items: center; justify-content: center;
  padding: 20px;
}
.help-overlay.visible {
  display: flex;
}
.help-modal {
  background: var(--card-bg); border-radius: 10px;
  max-width: 560px; width: 100%;
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
  display: flex; flex-direction: column;
  max-height: 82vh;
}
.help-modal-title {
  font-size: 1.1em; font-weight: 700; color: var(--text);
  padding: 18px 24px 12px;
  border-bottom: 1px solid var(--btn-border);
  flex-shrink: 0;
}
.help-modal-body {
  padding: 14px 24px;
  overflow-y: auto;
  flex: 1;
}
.help-close-area {
  display: flex; justify-content: flex-end;
  padding: 0 24px 16px;
  border-top: 1px solid var(--btn-border);
  padding-top: 12px;
  flex-shrink: 0;
}
.help-close-btn {
  padding: 6px 20px; border: 1px solid var(--btn-border);
  border-radius: var(--radius); background: var(--btn-bg);
  color: var(--text); cursor: pointer; font-family: var(--font);
  font-size: 0.9em;
}
.help-close-btn:hover { border-color: var(--accent); color: var(--accent); }

/* ========== Markdown 表格 ========== */
.block-text table, .source-preview table {
  border-collapse: collapse;
  margin: 8px 0;
  width: 100%;
  font-size: 0.92em;
}
.block-text th, .block-text td,
.source-preview th, .source-preview td {
  border: 1px solid var(--input-border);
  padding: 6px 10px;
  text-align: left;
  line-height: 1.5;
  background: transparent;
}
.block-text th, .source-preview th {
  background: var(--dropdown-active);
  font-weight: 700;
  color: var(--text);
}
.block-text tr:nth-child(even) td, .source-preview tr:nth-child(even) td {
  background: var(--dropdown-hover);
}

/* ═══════════════════════════════════════════
   移动端适配（手机 / 平板竖屏）
   原则：桌面体验不变；手机下工具栏/格式栏改横滑一行，
   文档下拉改底部弹层，源码分栏改上下堆叠，触控目标加大
   ═══════════════════════════════════════════ */
@media (max-width: 767px) {
  body {
    min-width: 0;
    padding-bottom: calc(60px + env(safe-area-inset-bottom));
  }

  /* ── 顶部工具栏：标题一行 + 操作按钮自动换行堆叠 ── */
  .toolbar {
    padding: calc(8px + env(safe-area-inset-top)) 10px 8px;
    gap: 6px;
  }
  .toolbar-title { font-size: 1em; }
  .toolbar-actions {
    width: 100%;
    flex-wrap: wrap;
    overflow-x: visible;
    gap: 6px;
    padding-bottom: 2px;
  }
  .toolbar-actions > * { flex-shrink: 1; }
  .toolbar-actions .btn,
  .toolbar-actions .doc-dropdown-btn {
    padding: 8px 12px;
    font-size: 0.85em;
    min-height: 38px;
    white-space: nowrap;
  }

  /* ── 文档下拉菜单：底部弹层 ── */
  .doc-dropdown-menu {
    position: fixed;
    left: 10px;
    right: 10px;
    top: auto;
    bottom: calc(10px + env(safe-area-inset-bottom));
    min-width: 0;
    max-height: 55vh;
    overflow-y: auto;
    border-radius: 14px;
    box-shadow: 0 -4px 24px rgba(0,0,0,0.18);
    padding: 6px 0;
  }
  .doc-dropdown-item {
    padding: 12px 14px;
    font-size: 0.92em;
    white-space: normal;
  }
  .doc-dropdown-item .doc-delete-btn,
  .doc-dropdown-item .doc-rename-btn {
    padding: 6px 10px;
    font-size: 1.05em;
  }

  /* ── 内容区 ── */
  .content { padding: 12px 10px; }
  .content-block { padding: 12px 14px; font-size: 0.95em; }
  .block-actions { flex-wrap: wrap; }
  .block-actions .check-btn,
  .block-actions .reset-btn,
  .block-actions .clear-answers-btn,
  .block-actions .block-menu-btn {
    padding: 7px 12px;
    min-height: 36px;
  }
  /* 表格超宽时可横滑 */
  .block-text { overflow-x: auto; }

  /* ── 挖空浮出按钮 ── */
  .floating-btn {
    padding: 9px 18px;
    font-size: 1em;
    touch-action: manipulation;
  }

  /* ── 选择面板（编辑勾选） ── */
  .selection-panel { padding: 8px 10px; gap: 6px; }
  .selection-panel .small-btn { padding: 7px 12px; min-height: 36px; }
  .edit-checkbox { width: 20px; height: 20px; }
  .edit-checkbox-label { left: 0; top: 6px; }
  .content-block { padding-left: 32px; }

  /* ── 格式工具栏：横滑一行 ── */
  .format-toolbar {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding: 6px 8px;
    gap: 2px;
    scrollbar-width: none;
  }
  .format-toolbar::-webkit-scrollbar { display: none; }
  .format-toolbar .fmt-btn {
    flex-shrink: 0;
    padding: 8px 12px;
    font-size: 0.9em;
    min-height: 38px;
  }
  .format-toolbar .fmt-sep { flex-shrink: 0; }
  .format-toolbar #btnFinishEdit { flex-shrink: 0; }

  /* ── 编辑区 ── */
  .source-split { flex-direction: column; }
  /* iOS 输入框字号 ≥16px 防自动放大页面 */
  .source-input { font-size: 16px; }
  .block-text.editing { padding: 8px 10px; }

  /* ── 弹窗 ── */
  .settings-modal {
    min-width: 0;
    width: calc(100vw - 32px);
    max-width: 400px;
    max-height: 85dvh;
    padding: 16px 18px;
  }
  .help-modal { max-height: 82dvh; }
  .help-modal-title { padding: 14px 16px 10px; }
  .help-modal-body { padding: 10px 14px; }
  .help-close-area { padding: 0 16px 14px; }
  .confirm-dialog { padding: 22px 18px 18px; }
  .confirm-btn { padding: 10px 22px; flex: 1; }
  .confirm-actions { gap: 8px; }

  /* ── 上传区 / 反馈区 ── */
  .upload-zone { padding: 14px 12px; }
  .upload-zone .small-btn { padding: 8px 14px; font-size: 0.88em; }
  .feedback-btn { padding: 8px 14px; }
  .feedback-email-box { font-size: 0.85em; word-break: break-all; }
}

/* 触屏设备：去掉 hover 残留高亮，避免点过之后按钮"粘住" */
@media (hover: none) {
  .btn:hover { background: var(--btn-bg); }
  .btn-accent:hover { border-color: var(--accent); }
  .check-btn:hover { background: var(--btn-bg); }
  .reset-btn:hover {
    background: var(--reset-btn-bg);
    border-color: var(--reset-btn-border);
    color: var(--reset-btn-text);
  }
  .clear-answers-btn:hover { background: var(--btn-bg); }
  .block-menu-btn:hover { background: var(--btn-bg); color: var(--text-secondary); }
  .doc-dropdown-btn:hover { border-color: var(--btn-border); color: var(--text); }
  .doc-dropdown-item:hover { background: transparent; }
  .doc-dropdown-item .doc-delete-btn:hover { background: transparent; color: #ccc; }
  .doc-dropdown-item .doc-rename-btn:hover { background: transparent; color: #ccc; }
  .block-popup-item:hover { background: transparent; color: var(--text); }
  .fmt-btn:hover { background: transparent; color: var(--text-secondary); border-color: transparent; }
  .settings-option:hover { background: transparent; }
  .settings-section-header:hover { background: transparent; }
  .settings-check:hover { background: transparent; }
  .small-btn:hover { background: var(--btn-bg); }
  .feedback-btn:hover { border-color: var(--btn-border); color: var(--text); }
  .upload-zone:hover { border-color: #ccc; background: var(--upload-bg); }
  .upload-zone .small-btn:hover { border-color: #ccc; color: var(--upload-btn-text); }
}

/* ═══ 打印样式（B2）═══ */
@media print {
  body { background: #fff !important; }
  .toolbar, .upload-zone, .selection-panel, .format-toolbar,
  .help-overlay, .confirm-overlay, .doc-dropdown-wrapper,
  .block-actions, .block-menu-btn, .float-btn, .edit-checkbox-label {
    display: none !important;
  }
  .content { max-width: none; padding: 0; margin: 0; }
  .section-title { color: #000; font-size: 1.2em; }
  .content-block {
    break-inside: avoid;
    padding: 6pt 0;
    border: none;
    background: #fff !important;
  }
  .block-text { color: #000; }
  /* 填空输入框打印为下划线占位 */
  .blank-input {
    border: none !important;
    border-bottom: 1px solid #000 !important;
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    color: #000 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .blank-input[type="text"] { height: 14pt; }
  textarea.blank-input { height: 28pt; overflow: hidden; resize: none; }
  .correct-answer-hint { color: #000 !important; }
  .correct-answer-hint, .check-result-mark { -webkit-print-color-adjust: exact; }
}
