/**
 * ============================================================================
 * 全站设计 Token（单一事实来源，UI 统一核心基准）
 * 加载顺序：必须在 common.css / 各页样式 / admin.css / retest.css 之后引入，
 * 同名变量以后来者为准实现全站收敛与去 AI 杂质。
 * ============================================================================
 */

:root {
    /* ---------- 1. 唯一主强调色（经典克制蓝 #2563eb，无杂色渐变与光晕） ---------- */
    --brand-500: #2563eb;
    --brand-600: #1d4ed8;
    --brand-700: #1e40af;
    --brand-rgb: 37, 99, 235;
    --brand-light: rgba(37, 99, 235, 0.10);
    --brand-border: rgba(37, 99, 235, 0.22);
    --brand-glow: transparent;
    --brand-gradient: var(--brand-500);

    /* ---------- 2. 中性色阶：深色默认（Graphite 石墨灰） ---------- */
    --n-0: #0f0f10;  /* 侧栏/最深层/底栏 */
    --n-1: #141415;  /* 页面底色 */
    --n-2: #19191b;  /* 卡片主底色 */
    --n-3: #232325;  /* 输入框/抬高表面/选中行 */
    --line: rgba(237, 237, 237, 0.08);
    --line-subtle: rgba(237, 237, 237, 0.05);
    --line-strong: rgba(237, 237, 237, 0.14);

    --text-1: #ededed;
    --text-2: #a1a1a6;
    --text-3: #85858b;

    /* 语义色（低饱和，与石墨底融合） */
    --positive: #4cc38a;
    --negative: #e5484d;
    --warning: #e0a43a;
    --accent-ink: #6b9bff;

    /* ---------- 3. 规范圆角阶梯（严格按嵌套关系：内圆角 = 外圆角 - 内边距） ---------- */
    --radius-xs: 4px;
    --radius-sm: 6px;
    --radius-md: 8px;
    --radius-lg: 12px;
    --radius-xl: 16px;
    --radius-full: 9999px; /* 仅用于开关滑块、圆形头像、状态圆点 */

    /* ---------- 4. 字体排印规范 ---------- */
    --font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", Roboto, sans-serif;
    --font-mono: ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace;

    --text-xs: 12px;
    --text-sm: 13px;
    --text-base: 14px;
    --text-md: 16px;
    --text-lg: 20px;
    --text-xl: 28px;

    --weight-normal: 400;
    --weight-medium: 500;
    --weight-semibold: 600;

    /* ---------- 5. 阴影规范（深色依赖层级色差与发丝线，杜绝彩色发光） ---------- */
    --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
    --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.5);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.6);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.7);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.8);
    --shadow-glow: none;

    /* ---------- 6. 动效规范（单一缓动曲线、具体属性过渡、禁抓屏缩放） ---------- */
    --ease: cubic-bezier(0.22, 1, 0.36, 1);
    --dur-fast: 150ms;
    --dur-normal: 200ms;
    --dur-enter: 300ms;
    --transition-fast: 0.15s var(--ease);
    --transition-normal: 0.2s var(--ease);
    --transition-smooth: 0.3s var(--ease);
    --transition: background-color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);

    /* ---------- 7. 层级阶梯 ---------- */
    --z-dropdown: 50;
    --z-sticky: 100;
    --z-overlay: 1000;
    --z-modal: 1100;
    --z-toast: 1200;
    --z-max: 9999;

    /* ---------- 7.1 移动端安全区与触控规范 ---------- */
    --safe-top: env(safe-area-inset-top, 0px);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    --safe-left: env(safe-area-inset-left, 0px);
    --safe-right: env(safe-area-inset-right, 0px);
    --touch-min-size: 42px;

    /* ---------- 8. 存量兼容收敛映射（强制覆盖各页旧变量） ---------- */
    --accent: var(--brand-500);
    --accent-hover: var(--brand-600);
    --accent-primary: var(--brand-500);
    --accent-secondary: var(--brand-500);
    --accent-tertiary: var(--brand-600);
    --accent-rgb: var(--brand-rgb);
    --accent-glow: transparent;
    --accent-gradient: var(--brand-500);
    --primary: var(--brand-500);
    --primary-hover: var(--brand-600);
    --primary-glow: transparent;

    --bg-primary: var(--n-1);
    --bg-secondary: var(--n-0);
    --bg-tertiary: var(--n-3);
    --bg-card: var(--n-2);
    --bg-elevated: var(--n-2);
    --bg-hover: var(--n-3);
    --bg-overlay: rgba(0, 0, 0, 0.65);
    --bg-pattern-color: transparent;

    --text-primary: var(--text-1);
    --text-secondary: var(--text-2);
    --text-tertiary: var(--text-3);
    --text-muted: var(--text-3);

    --border-color: var(--line);
    --border-light: var(--line-subtle);
    --border-hover: var(--line-strong);
    --border-subtle: var(--line);

    /* 消除全站磨砂玻璃与漂浮渐变杂质 */
    --ui-glass-nav: var(--n-1);
    --ui-glass-card: var(--n-2);
    --ui-glass-card-strong: var(--n-2);
    --ui-modal-bg: var(--n-2);
    --ui-modal-border: var(--line);
    --ui-toast-bg: var(--n-3);
    --ui-toast-border: var(--line);
    --ui-float-bg: var(--n-2);
    --ui-float-border: var(--line);

    --focus-ring: 2px solid var(--brand-500);
    --focus-offset: 2px;
}

/* 浅色主题收敛 */
[data-theme="light"] {
    --n-0: #f4f4f5;
    --n-1: #fafafa;
    --n-2: #ffffff;
    --n-3: #f4f4f5;
    --line: rgba(23, 23, 23, 0.08);
    --line-subtle: rgba(23, 23, 23, 0.05);
    --line-strong: rgba(23, 23, 23, 0.16);

    --text-1: #171717;
    --text-2: #525252;
    --text-3: #737373;

    --accent-ink: #1d4ed8;
    --positive: #16a34a;
    --negative: #dc2626;
    --warning: #b45309;

    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.07);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.06);
    --shadow-xl: 0 12px 28px rgba(0, 0, 0, 0.08);
    --shadow-glow: none;

    --bg-primary: var(--n-1);
    --bg-secondary: var(--n-0);
    --bg-tertiary: var(--n-3);
    --bg-card: var(--n-2);
    --bg-elevated: var(--n-2);
    --bg-hover: var(--n-3);
    --bg-overlay: rgba(0, 0, 0, 0.4);

    --text-primary: var(--text-1);
    --text-secondary: var(--text-2);
    --text-tertiary: var(--text-3);
    --text-muted: var(--text-3);

    --border-color: var(--line);
    --border-light: var(--line-subtle);
    --border-hover: var(--line-strong);
    --border-subtle: var(--line);

    --ui-glass-nav: var(--n-1);
    --ui-glass-card: var(--n-2);
    --ui-glass-card-strong: var(--n-2);
    --ui-modal-bg: var(--n-2);
    --ui-toast-bg: var(--n-2);
    --ui-float-bg: var(--n-2);
}

/* 深色主题显式保障 */
[data-theme="dark"] {
    --primary: var(--brand-500);
    --primary-hover: var(--brand-600);
}

/* 全站字体与排版统一收敛 */
body {
    font-family: var(--font-sans);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

/* 移动端触控优化：消除点击延迟与灰色/蓝色高亮闪烁 */
button, .btn, a, select, input, textarea, [role="button"], label {
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
}

