/* ============================================================
 * 全站主题层（theme.css）
 * ------------------------------------------------------------
 * 设计要点：
 * 1) 变量本体写在各个页面自己的 <style> 里，这里只负责「切换机制」
 *    和「控件样式」。原因：每个页面的变量集合不同（docs 有 --code-bg，
 *    控制台有 --warn），集中到一处反而要为每个页面写例外。
 * 2) 页面内的浅色变量用两条选择器表达：
 *      :root[data-theme="light"]            → 用户显式选了浅色
 *      @media(prefers-color-scheme:light)
 *        :root:not([data-theme="dark"])     → 跟随系统且系统是浅色
 *    这样 auto 模式不需要任何 JS 介入，系统切换主题时页面立即跟随。
 * 3) 颜色过渡只在切换瞬间需要，所以只对常用容器加 transition，
 *    不用通配选择器 —— 那会让表格滚动、列表刷新时整页重绘。
 * ============================================================ */

:root {
    --theme-transition: 180ms;
    --theme-btn-size: 40px;
}

body,
header,
nav,
main,
aside,
footer,
.card,
.stat,
.box,
.wrap,
table,
th,
td,
input,
select,
textarea,
button,
a,
code,
pre,
.tab,
.tag {
    transition: background-color var(--theme-transition) ease,
                border-color var(--theme-transition) ease,
                color var(--theme-transition) ease;
}

/* ---------- 悬浮切换按钮 ----------
 * 固定右下角而不是塞进 header：6 个页面的 header 结构各不相同
 * （docs 根本没有 header，login 是居中卡片），塞进 header 要为每个页面
 * 单独改布局。悬浮按钮一处定义，全站一致，也不会挡住主内容。
 * z-index 取 90：高于页面内容，低于模态/下拉（那些通常是 999+）。 */
.unai-theme-btn {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 90;
    width: var(--theme-btn-size);
    height: var(--theme-btn-size);
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    border: 1px solid var(--border, #262D38);
    background: var(--bg-elevated, #1C222B);
    color: var(--text-primary, #D6DCE5);
    font-size: 17px;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .18);
    font-family: system-ui, -apple-system, "Segoe UI Symbol", sans-serif;
    padding: 0;
    transition: transform 140ms ease, opacity 140ms ease,
                background-color var(--theme-transition) ease,
                border-color var(--theme-transition) ease,
                color var(--theme-transition) ease;
}

.unai-theme-btn:hover {
    transform: translateY(-2px);
    opacity: .95;
}

.unai-theme-btn:active {
    transform: translateY(0) scale(.96);
}

.unai-theme-btn:focus-visible {
    outline: 2px solid var(--brand, #FFFFFF);
    outline-offset: 2px;
}

@media (max-width: 480px) {
    :root { --theme-btn-size: 36px; }
    .unai-theme-btn { right: 12px; bottom: 12px; }
}

/* 尊重系统的「减少动态效果」设置。
   前庭功能障碍用户对大面积颜色渐变会不适，这里直接关掉过渡。 */
@media (prefers-reduced-motion: reduce) {
    :root { --theme-transition: 0ms; }
    .unai-theme-btn { transition: none; }
    .unai-theme-btn:hover { transform: none; }
}

/* 打印时隐藏切换按钮：纸面上没有「深色模式」这个概念 */
@media print {
    .unai-theme-btn { display: none !important; }
}
/* ============================================================
 * 风格层已移除（2026-10-25 UI 重置）
 * ------------------------------------------------------------
 * 这里原本是一层「夸张极简」覆盖：圆角全部归零、边框统一 2px 实线、
 * 按钮/表头/徽章全大写、输入框只留下边线。
 *
 * 那套语言与新的设计稿（蓝紫渐变 + 明显圆角 + 四层背景）方向相反，
 * 留着会让新配色配上直角黑边，看起来像两套设计拼在一起。
 * 现在配色与圆角全部由 tokens.css 的令牌决定，本文件只保留
 * 「主题切换机制」（变量契约 + 悬浮按钮），不再管视觉风格。
 * ============================================================ */
