/* ============================================================
   主题变量 + 深色模式（不用 filter: invert 那种偷懒方案）
   · 浅色是默认值，与改造前的配色一致；
   · html[data-theme="dark"] 由 /theme.js 在 <head> 同步设置；
   · 未执行 JS 时用 prefers-color-scheme 兜底；
   · /stats 是服务端渲染的独立页面，自己在页面里写了一份同口径变量。
   ============================================================ */
:root {
  color-scheme: light;
  --bg: #f5f5f5;
  --card: #ffffff;
  --card-2: #fafafa;
  --text: #262626;
  --text-strong: #1a1a1a;
  --muted: #6e6e6e;
  --faint: #999999;
  --border: #ececec;
  --border-strong: #e0e0e0;
  --hover: #fffafa;
  --panel: #f7f7f7;
  --panel-2: #f0f0f0;
  --input-bg: #ffffff;
  --accent: #990000;
  --accent-2: #c62828;
  --header-bg: #990000;
  --header-text: #ffffff;
  --shadow: 0 2px 8px rgba(0, 0, 0, .1);
  --code-bg: #fbfbfb;
  --code-head: #f2f2f2;
  --code-text: #24292e;
  --bubble-user: #f4f4f4;
  --good: #1a7f37;
  --warn-bg: #fff7e6;
  --warn-border: #ffd591;
  --warn-text: #ad6800;
  --danger: #c62828;
  --link: #1565c0;
  --focus: #c62828;
  --today-bg: #fff4f4;
  --today-border: #f0b4b4;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0e1116;
  --card: #171b22;
  --card-2: #1c212a;
  --text: #e7e9ee;
  --text-strong: #f3f4f6;
  --muted: #a4abb8;
  --faint: #7f8796;
  --border: #2a303b;
  --border-strong: #3a4250;
  --hover: #221820;
  --panel: #1d222b;
  --panel-2: #252b36;
  --input-bg: #11151b;
  --accent: #ff8a80;
  --accent-2: #ff5252;
  --header-bg: #7f0000;
  --header-text: #ffffff;
  --shadow: 0 2px 12px rgba(0, 0, 0, .5);
  --code-bg: #0d1117;
  --code-head: #161b22;
  --code-text: #c9d1d9;
  --bubble-user: #252b36;
  --good: #3fb950;
  --warn-bg: #2b2415;
  --warn-border: #5c4a20;
  --warn-text: #e3b341;
  --danger: #ff7b72;
  --link: #79b8ff;
  --focus: #ff8a80;
  --today-bg: #2a1b1b;
  --today-border: #7f3b3b;
}

/* 没有 JS 时（或 theme.js 还没跑）跟随系统 */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bg: #0e1116;
    --card: #171b22;
    --card-2: #1c212a;
    --text: #e7e9ee;
    --text-strong: #f3f4f6;
    --muted: #a4abb8;
    --faint: #7f8796;
    --border: #2a303b;
    --border-strong: #3a4250;
    --hover: #221820;
    --panel: #1d222b;
    --panel-2: #252b36;
    --input-bg: #11151b;
    --accent: #ff8a80;
    --accent-2: #ff5252;
    --header-bg: #7f0000;
    --header-text: #ffffff;
    --shadow: 0 2px 12px rgba(0, 0, 0, .5);
    --code-bg: #0d1117;
    --code-head: #161b22;
    --code-text: #c9d1d9;
    --bubble-user: #252b36;
    --good: #3fb950;
    --warn-bg: #2b2415;
    --warn-border: #5c4a20;
    --warn-text: #e3b341;
    --danger: #ff7b72;
    --link: #79b8ff;
    --focus: #ff8a80;
    --today-bg: #2a1b1b;
    --today-border: #7f3b3b;
  }
}

/* ---------- 基础面 ---------- */
html, body { background: var(--bg); color: var(--text); }
body { transition: background-color .18s ease, color .18s ease; }
.card, .modal-content, .post-item, .file-item, .forum-card, .chat-list,
.auth-box, .stat-card, .user-search-drop, .ai-side, .ai-main, .ai-body,
.ai-input-wrap, .ai-sug, .ai-newbtn, .ai-menu, .ai-input-box, .ai-side-actions .ai-mini,
.reason-list, .icon-grid, .chat-window, .timetable-wrap {
  background: var(--card);
  color: var(--text);
  border-color: var(--border);
}
.card { box-shadow: var(--shadow); }
.tab-nav { background: var(--card); border-color: var(--border); box-shadow: var(--shadow); }
.tab-item { color: var(--muted); }
.tab-item.active, .tab-item:hover { color: var(--accent); }
.tab-item.active { border-bottom-color: var(--accent); }
.header { background: var(--header-bg); color: var(--header-text); }
.site-foot { color: var(--faint); }
.site-foot a { color: var(--accent); }
.site-foot .sep { color: var(--border-strong); }

/* ---------- 文字 ---------- */
h1, h2, h3, h4, .post-title, .detail-title, .forum-name, .modal-title,
.profile-info h2, .profile-section-title, .ai-title, .ai-msg-body, .ai-hello h2,
.chat-row-name, .fr-name, .log-row .log-head, .reason-item .ri-label,
.detail-content, .comment-content, .pledge-box, .timetable-title,
.event-title, .schedule-cell-subject, .stat-number, .weather-detail .wd-v {
  color: var(--text-strong);
}
.post-meta, .post-extra, .detail-meta, .comment-time, .forum-count,
.profile-info p, .profile-section-title, .gender-tip, .form-label, .pager,
.fr-sub, .chat-row-last, .chat-row-time, .ai-hint, .ai-input-tip, .log-meta,
.log-row .log-meta, .my-post-meta, .stat-label, .weather-detail .wd-k,
.schedule-meta, .event-meta, .event-empty, .schedule-empty, .schedule-hint,
.ai-side-foot, .ai-act, .ai-gen-note, .comment-title, .music-legal,
.chat-sys, .chat-row-last, .online-tag, .offline-tag, .login-place {
  color: var(--muted);
}
a, .ext-link, .my-post-title:hover, .ai-msg.ai .ai-msg-body a { color: var(--link); }
.my-post-title { color: var(--text); }
.post-author, .comment-author, .auth-title, .post-forum-tag, .gender-option.selected,
.cat-tab:hover, .log-toggle { color: var(--accent); }

/* ---------- 表单 / 按钮 ---------- */
.input, input, select, textarea,
.chat-input textarea, .signatureInput, #signatureInput {
  background: var(--input-bg);
  color: var(--text);
  border-color: var(--border-strong);
}
.input:focus, input:focus, select:focus, textarea:focus { border-color: var(--focus); }
.input::placeholder, input::placeholder, textarea::placeholder { color: var(--faint); }
.btn-default, .admin-subtab, .cat-tab, .pager button, .ai-rename,
.gender-option, .gender-tag, .post-forum-tag, .log-action, .log-cat {
  background: var(--panel-2);
  color: var(--text);
  border-color: var(--border-strong);
}
.btn-default:hover, .admin-subtab:hover, .cat-tab:hover, .pager button:hover:not(:disabled),
.ai-rename:hover { background: var(--border); }
.btn-primary { background: var(--accent); color: #fff; }
.btn-primary:hover { background: var(--accent-2); }
.admin-subtab.active, .cat-tab.active { background: var(--accent-2); border-color: var(--accent-2); color: #fff; }
.gender-option { background: var(--panel); border-color: var(--border); color: var(--muted); }
.gender-option:hover { background: var(--hover); border-color: var(--today-border); color: var(--accent); }
.gender-option.selected {
  background: var(--today-bg); border-color: var(--accent-2); color: var(--accent);
  box-shadow: 0 3px 10px rgba(198, 40, 40, .18);
}
.upload-area { border-color: var(--border-strong); background: var(--card); color: var(--text); }
.upload-area:hover { background: var(--hover); border-color: var(--accent); }
.user-search-drop { box-shadow: var(--shadow); }
.us-item { border-color: var(--border); }
.us-item:hover, .notify-item:hover, .reason-item:hover, .ai-item:hover,
.chat-row:hover, .post-item:hover, .forum-card:hover { background: var(--hover); }
.us-name, .notify-item .nt-title { color: var(--text-strong); }
.us-sig, .notify-item .nt-content, .notify-item .nt-time { color: var(--muted); }
.notify-item { border-color: var(--border); }
.notify-item.unread { background: var(--today-bg); }
.pager button:disabled { color: var(--faint); }

/* ---------- 个人中心 ---------- */
.profile-avatar { background: linear-gradient(135deg, var(--accent-2), var(--accent)); color: #fff; }
.stat-card { background: var(--today-bg); }
.stat-number { color: var(--accent); }
.profile-section-title, .my-post-item, .my-file-item { border-color: var(--border); }
#profilePage button[style*="background:white"],
#profilePage button[style*="background: white"] { background: var(--card) !important; color: var(--accent) !important; }

/* ---------- 好友 / 私信 ---------- */
.fr-item, .chat-row, .chat-head, .chat-input, .msg-meta { border-color: var(--border); }
.fr-avatar, .msg-avatar { background: var(--panel-2); color: var(--accent); }
.msg-row:not(.mine) .msg-bubble { background: var(--card); color: var(--text); border: 1px solid var(--border); }
.msg-row.mine .msg-bubble { background: #95ec69; color: #111; }
.chat-window { background: var(--bg); }
.chat-head { background: var(--panel-2); }
.chat-input { background: var(--panel); }
.chat-input textarea { background: var(--input-bg); color: var(--text); }

/* ---------- AI ---------- */
.ai-side, .ai-main, .ai-body, .ai-input-wrap, .ai-input-box { background: var(--card); }
.ai-side-head, .ai-side-foot, .ai-main-head, .ai-input-wrap, .ai-side-foot { border-color: var(--border); }
.ai-side-foot { background: var(--card-2); color: var(--muted); }
.ai-item.active { background: var(--panel-2); }
.ai-item-title { color: var(--text); }
.ai-newbtn, .ai-menu, .ai-sug, .ai-side-actions .ai-mini { background: var(--card); color: var(--text); border-color: var(--border-strong); }
.ai-newbtn:hover, .ai-sug:hover, .ai-side-actions .ai-mini:hover { background: var(--panel); }
.ai-menu { color: var(--text); }
.ai-msg.user .ai-msg-body { background: var(--bubble-user); color: var(--text); }
.ai-msg.ai .ai-msg-body blockquote { background: var(--panel); color: var(--muted); border-color: var(--border-strong); }
.ai-msg.ai .ai-msg-body code.inline { background: var(--panel-2); border-color: var(--border); color: var(--accent); }
.ai-msg.ai .ai-msg-body hr { border-color: var(--border); }
.ai-code { background: var(--code-bg); border-color: var(--border); }
.ai-code-head { background: var(--code-head); border-color: var(--border); color: var(--muted); }
.ai-code pre { color: var(--code-text); background: transparent; }
.ai-copycode:hover { background: var(--panel-2); }
.ai-cursor { background: var(--text); }
.ai-send:disabled { background: var(--border-strong); color: var(--faint); }
.ai-send.stop { background: var(--card); color: var(--text); border-color: var(--border-strong); }
.ai-send.stop:hover { background: var(--panel-2); }
.ai-input-box textarea { color: var(--text); }
.ai-del:hover { background: var(--today-bg); }
.ai-hello-sub { color: var(--muted); }
.ai-sug span { color: var(--muted); }

/* ---------- 管理 / 日志 ---------- */
.admin-subtab, .cat-tab, .log-row, .log-content, .reason-item, .icon-grid { border-color: var(--border); }
.log-content { background: var(--panel); border-color: var(--border); border-left-color: var(--border-strong); color: var(--text); }
.log-cat, .log-action { background: var(--panel-2); color: var(--muted); }
.log-result .lr-tag { background: var(--panel); border-color: var(--border); color: var(--good); }
.log-result.is-ignored .lr-tag { background: var(--panel); color: var(--muted); }
.hidden-banner { background: var(--panel); border-color: var(--border-strong); color: var(--muted); }
.mute-banner { background: var(--warn-bg); border-color: var(--warn-border); color: var(--warn-text); }
.pledge-note { background: var(--warn-bg); border-color: var(--warn-border); color: var(--warn-text); }
.music-legal { background: var(--warn-bg); border-color: var(--warn-border); color: var(--warn-text); }
.music-legal b { color: var(--warn-text); }
.pledge-law { color: var(--muted); }

/* ---------- 天气 / 通知 / 提示 ---------- */
.weather-chip.nav-weather { background: var(--panel-2); border-color: var(--border); color: var(--text); }
.weather-chip.nav-weather:hover { background: var(--border); }
.weather-chip.nav-weather .wc-city { color: var(--muted); }
.weather-detail > div { background: var(--panel); border-color: var(--border); }
.music-legal a, .weather-detail a { color: var(--link); }
.toast { box-shadow: var(--shadow); }

/* ---------- 页脚 / 提示条 ---------- */
.notice-bar { background: #c62828; color: #fff; }
.announce-bar { background: linear-gradient(90deg, #5c0000, #990000 55%, #7f0000); }
.ai-gen-note { color: var(--muted); }

/* ---------- 主题切换按钮 ---------- */
.theme-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; padding: 0; border-radius: 50%;
  border: 1px solid rgba(255,255,255,.4); background: rgba(255,255,255,.14);
  color: var(--header-text); cursor: pointer; flex: none;
}
.theme-toggle:hover { background: rgba(255,255,255,.3); }
.theme-toggle .ic { width: 18px; height: 18px; }
.theme-toggle .theme-ic { display: none; }
html[data-theme-mode="system"] .theme-toggle .theme-ic-system,
html[data-theme-mode="light"] .theme-toggle .theme-ic-light,
html[data-theme-mode="dark"] .theme-toggle .theme-ic-dark { display: inline-block; }
.auth-theme-toggle {
  position: fixed; top: 14px; right: 14px; z-index: 1000;
  border-color: var(--border-strong); background: var(--card); color: var(--accent);
}
.auth-theme-toggle:hover { background: var(--panel-2); }

/* 手机窄屏：顶栏按钮不要挤占标题 */
@media (max-width: 760px) {
  .theme-toggle { width: 32px; height: 32px; }
  .header .user-info { gap: 9px; }
}

/* 新页面（课程表 / 日程）——变量随主题走 */
.schedule-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.schedule-head h3 { margin: 0; color: var(--text-strong); }
.schedule-actions { display: flex; gap: 8px; flex-wrap: wrap; }
/* 图片粘贴/选择区：整块可点，键盘聚焦后也能 Ctrl+V */
.sched-paste-zone {
  display: flex; align-items: center; gap: 12px; cursor: pointer;
  border: 1px dashed var(--border-strong); border-radius: 10px; background: var(--card-2);
  padding: 12px 16px; margin: 0 0 12px; color: var(--muted); font-size: 12.5px; line-height: 1.6;
}
.sched-paste-zone:hover, .sched-paste-zone:focus-visible { border-color: var(--accent); background: var(--hover); outline: none; }
.sched-paste-zone .ic { flex: none; width: 22px; height: 22px; color: var(--accent); }
.sched-paste-zone b { display: block; color: var(--text); font-size: 13.5px; }
.sched-paste-zone span { display: block; margin-top: 2px; }
@media (max-width: 520px) {
  .sched-paste-zone { padding: 10px 12px; gap: 9px; }
}
.schedule-empty, .event-empty {
  text-align: center; color: var(--muted); font-size: 13.5px; line-height: 1.9; padding: 26px 14px;
  border: 1px dashed var(--border-strong); border-radius: 10px; background: var(--card-2);
}
.schedule-empty b { color: var(--text); }
.schedule-hint { color: var(--muted); font-size: 12.5px; line-height: 1.7; margin-top: 10px; }
.schedule-meta { color: var(--muted); font-size: 12.5px; margin: 0 0 12px; }
.timetable-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--border); border-radius: 10px; background: var(--card); }
.timetable { border-collapse: collapse; min-width: 560px; width: 100%; }
.timetable th, .timetable td { border: 1px solid var(--border); padding: 6px; text-align: center; vertical-align: top; }
.timetable th { background: var(--panel); color: var(--muted); font-weight: 500; font-size: 12.5px; padding: 8px 6px; }
.timetable th.today, .timetable td.today { background: var(--today-bg); }
.timetable th.today { color: var(--accent); border-bottom: 2px solid var(--accent-2); }
.timetable .period { background: var(--panel); color: var(--muted); font-size: 12px; width: 74px; white-space: nowrap; }
.timetable .period b { display: block; color: var(--text); font-size: 12.5px; }
.schedule-cell {
  display: block; width: 100%; min-height: 50px; border: none; background: transparent;
  color: var(--text); font: inherit; text-align: center; cursor: pointer; border-radius: 6px; padding: 4px 2px;
}
.schedule-cell:hover { background: var(--hover); }
.schedule-cell.empty { color: var(--faint); }
.schedule-cell-subject { display: block; font-weight: 600; font-size: 13.5px; color: var(--text-strong); line-height: 1.35; }
.schedule-cell-sub { display: block; font-size: 11px; color: var(--muted); margin-top: 2px; line-height: 1.4; }
.sched-edit-tip { font-size: 12.5px; color: var(--muted); margin: 0 0 10px; line-height: 1.7; }
.event-list { list-style: none; margin: 0; padding: 0; }
.event-item {
  display: flex; align-items: center; gap: 12px; padding: 11px 4px; border-bottom: 1px solid var(--border);
}
.event-item:last-child { border-bottom: none; }
.event-main { flex: 1; min-width: 0; }
.event-title { font-size: 14px; font-weight: 600; color: var(--text); word-break: break-word; }
.event-meta { font-size: 12px; color: var(--muted); margin-top: 3px; }
.event-kind { flex: none; font-size: 11.5px; padding: 2px 8px; border-radius: 10px; background: var(--panel-2); color: var(--muted); }
.event-kind.exam { background: var(--today-bg); color: var(--accent); }
.event-countdown { flex: none; text-align: right; min-width: 66px; }
.event-days { font-size: 19px; font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; line-height: 1.1; }
.event-days small { font-size: 11px; font-weight: 400; color: var(--muted); margin-left: 2px; }
.event-item.past { opacity: .55; }
.event-item.past .event-days { color: var(--muted); font-size: 14px; }
.events-past summary { cursor: pointer; color: var(--muted); font-size: 13px; padding: 10px 4px; }
.events-past summary:hover { color: var(--accent); }
.sched-parse-preview { overflow-x: auto; margin-top: 10px; }
.sched-preview-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; margin-top: 14px; }
.sched-modal-tip { font-size: 12.5px; color: var(--muted); line-height: 1.7; margin-bottom: 10px; }
#schedTextInput { width: 100%; height: 180px; padding: 10px 12px; border: 1px solid var(--border-strong); border-radius: 8px; resize: vertical; font-family: inherit; font-size: 14px; background: var(--input-bg); color: var(--text); }
.sched-cell-fields .form-group { margin-bottom: 10px; }
.sched-image-preview { max-width: 100%; max-height: 180px; border-radius: 8px; border: 1px solid var(--border); display: block; margin-top: 10px; }
