/**
 * AutoLaw 设计系统 - 核心变量
 *
 * 用途：定义全局CSS变量，统一整个项目的设计语言
 * 版本：v1.0
 * 更新日期：2025-10-30
 *
 * 使用方法：
 * color: var(--text-primary);
 * background: var(--bg-container);
 * border-radius: var(--radius-lg);
 */

/* ============================================================================
   浅色主题（默认）
   ============================================================================ */

:root {
    /* ========== 品牌色 ========== */
    --brand-primary: #3b82f6;      /* 蓝色 - 主要品牌色 */
    --brand-secondary: #2563eb;    /* 深蓝 - 次要品牌色 */
    --brand-accent: #4ECDC4;       /* 青色 - 强调色（保留原有特色） */

    /* ========== 语义化颜色 ========== */
    --color-success: #10b981;      /* 绿色 - 成功 */
    --color-warning: #f59e0b;      /* 橙色 - 警告 */
    --color-danger: #ef4444;       /* 红色 - 危险 */
    --color-info: #3b82f6;         /* 蓝色 - 信息 */

    /* ========== 文本颜色 ========== */
    --text-primary: #1f2937;       /* 主要文本 */
    --text-secondary: #6b7280;     /* 次要文本 */
    --text-tertiary: #9ca3af;      /* 三级文本 */
    --text-disabled: #d1d5db;      /* 禁用文本 */
    --text-inverse: #ffffff;       /* 反色文本（用于深色背景） */
    --text-link: #3b82f6;          /* 链接文本 */
    --text-link-hover: #2563eb;    /* 链接悬停 */

    /* ========== 背景颜色 ========== */
    --bg-page: #f9fafb;            /* 页面背景 */
    --bg-container: #ffffff;       /* 容器背景 */
    --bg-elevated: #ffffff;        /* 浮起元素背景（卡片、模态框） */
    --bg-overlay: rgba(0, 0, 0, 0.5);  /* 遮罩背景 */
    --bg-hover: #f3f4f6;           /* 悬停背景 */
    --bg-active: #e5e7eb;          /* 激活背景 */
    --bg-disabled: #f3f4f6;        /* 禁用背景 */
    --bg-input: #ffffff;           /* 输入框背景 */

    /* ========== 边框颜色 ========== */
    --border-light: #f3f4f6;       /* 浅边框 */
    --border-default: #e5e7eb;     /* 默认边框 */
    --border-strong: #d1d5db;      /* 强调边框 */
    --border-focus: #3b82f6;       /* 聚焦边框 */
    --border-error: #ef4444;       /* 错误边框 */

    /* ========== 阴影 ========== */
    --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);

    /* ========== 圆角 ========== */
    --radius-none: 0;
    --radius-sm: 4px;
    --radius-md: 6px;
    --radius-lg: 8px;
    --radius-xl: 12px;
    --radius-2xl: 16px;
    --radius-full: 9999px;

    /* ========== 间距 ========== */
    --spacing-0: 0;
    --spacing-xs: 0.25rem;   /* 4px */
    --spacing-sm: 0.5rem;    /* 8px */
    --spacing-md: 1rem;      /* 16px */
    --spacing-lg: 1.5rem;    /* 24px */
    --spacing-xl: 2rem;      /* 32px */
    --spacing-2xl: 3rem;     /* 48px */
    --spacing-3xl: 4rem;     /* 64px */

    /* ========== 过渡时间 ========== */
    --transition-fast: 0.15s;
    --transition-base: 0.2s;
    --transition-slow: 0.3s;
    --transition-slower: 0.5s;

    /* ========== 字体 ========== */
    --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-mono: "SF Mono", Monaco, "Cascadia Code", "Courier New", monospace;

    /* ========== 字体大小 ========== */
    --text-xs: 0.75rem;      /* 12px */
    --text-sm: 0.875rem;     /* 14px */
    --text-base: 1rem;       /* 16px */
    --text-lg: 1.125rem;     /* 18px */
    --text-xl: 1.25rem;      /* 20px */
    --text-2xl: 1.5rem;      /* 24px */
    --text-3xl: 1.875rem;    /* 30px */
    --text-4xl: 2.25rem;     /* 36px */

    /* ========== 字重 ========== */
    --font-normal: 400;
    --font-medium: 500;
    --font-semibold: 600;
    --font-bold: 700;

    /* ========== 行高 ========== */
    --leading-none: 1;
    --leading-tight: 1.25;
    --leading-normal: 1.5;
    --leading-relaxed: 1.75;
    --leading-loose: 2;

    /* ========== Z-index 层级 ========== */
    --z-base: 0;
    --z-dropdown: 1000;
    --z-sticky: 1020;
    --z-fixed: 1030;
    --z-modal-backdrop: 1040;
    --z-modal: 1050;
    --z-popover: 1060;
    --z-tooltip: 1070;

    /* ========== 兼容旧变量（逐步废弃） ========== */
    --primary-color: var(--brand-primary);
    --secondary-color: var(--brand-secondary);
    --body-bg: var(--bg-page);
    --card-bg: var(--bg-container);
    --input-bg: var(--bg-input);
    --border-color: var(--border-default);
    --sidebar-bg: var(--bg-container);
}

/* ============================================================================
   深色主题
   ============================================================================ */

[data-theme="dark"] {
    /* ========== 品牌色（稍微调亮）========== */
    --brand-primary: #60a5fa;
    --brand-secondary: #3b82f6;
    --brand-accent: #5FE3D9;

    /* ========== 语义化颜色 ========== */
    --color-success: #34d399;
    --color-warning: #fbbf24;
    --color-danger: #f87171;
    --color-info: #60a5fa;

    /* ========== 文本颜色 ========== */
    --text-primary: #f9fafb;
    --text-secondary: #d1d5db;
    --text-tertiary: #9ca3af;
    --text-disabled: #6b7280;
    --text-inverse: #1f2937;
    --text-link: #60a5fa;
    --text-link-hover: #93c5fd;

    /* ========== 背景颜色 ========== */
    --bg-page: #111827;
    --bg-container: #1f2937;
    --bg-elevated: #374151;
    --bg-overlay: rgba(0, 0, 0, 0.7);
    --bg-hover: #374151;
    --bg-active: #4b5563;
    --bg-disabled: #374151;
    --bg-input: #1f2937;

    /* ========== 边框颜色 ========== */
    --border-light: #1f2937;
    --border-default: #374151;
    --border-strong: #4b5563;
    --border-focus: #60a5fa;
    --border-error: #f87171;

    /* ========== 阴影（深色主题中减弱）========== */
    --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
    --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -2px rgba(0, 0, 0, 0.3);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 10px 10px -5px rgba(0, 0, 0, 0.3);
    --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);

    /* ========== 兼容旧变量 ========== */
    --primary-color: var(--brand-primary);
    --secondary-color: var(--brand-secondary);
    --body-bg: var(--bg-page);
    --card-bg: var(--bg-container);
    --input-bg: var(--bg-input);
    --border-color: var(--border-default);
    --sidebar-bg: var(--bg-container);
}

/* ============================================================================
   基础样式重置和应用
   ============================================================================ */

* {
    box-sizing: border-box;
}

body {
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    line-height: var(--leading-normal);
    color: var(--text-primary);
    background: var(--bg-page);
    margin: 0;
    padding: 0;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* ============================================================================
   工具类
   ============================================================================ */

/* 文本颜色 */
.text-primary { color: var(--text-primary); }
.text-secondary { color: var(--text-secondary); }
.text-tertiary { color: var(--text-tertiary); }
.text-success { color: var(--color-success); }
.text-warning { color: var(--color-warning); }
.text-danger { color: var(--color-danger); }
.text-info { color: var(--color-info); }

/* 背景颜色 */
.bg-container { background: var(--bg-container); }
.bg-hover { background: var(--bg-hover); }
.bg-success { background: var(--color-success); color: white; }
.bg-warning { background: var(--color-warning); color: white; }
.bg-danger { background: var(--color-danger); color: white; }
.bg-info { background: var(--color-info); color: white; }

/* 圆角 */
.rounded-none { border-radius: var(--radius-none); }
.rounded-sm { border-radius: var(--radius-sm); }
.rounded-md { border-radius: var(--radius-md); }
.rounded-lg { border-radius: var(--radius-lg); }
.rounded-xl { border-radius: var(--radius-xl); }
.rounded-2xl { border-radius: var(--radius-2xl); }
.rounded-full { border-radius: var(--radius-full); }

/* 阴影 */
.shadow-none { box-shadow: none; }
.shadow-xs { box-shadow: var(--shadow-xs); }
.shadow-sm { box-shadow: var(--shadow-sm); }
.shadow-md { box-shadow: var(--shadow-md); }
.shadow-lg { box-shadow: var(--shadow-lg); }
.shadow-xl { box-shadow: var(--shadow-xl); }
.shadow-2xl { box-shadow: var(--shadow-2xl); }

/* 过渡 */
.transition { transition: all var(--transition-base) ease; }
.transition-fast { transition: all var(--transition-fast) ease; }
.transition-slow { transition: all var(--transition-slow) ease; }
.transition-colors {
    transition: color var(--transition-base) ease,
                background-color var(--transition-base) ease,
                border-color var(--transition-base) ease;
}

/* 边距 */
.m-0 { margin: 0; }
.m-xs { margin: var(--spacing-xs); }
.m-sm { margin: var(--spacing-sm); }
.m-md { margin: var(--spacing-md); }
.m-lg { margin: var(--spacing-lg); }
.m-xl { margin: var(--spacing-xl); }

.mt-0 { margin-top: 0; }
.mt-xs { margin-top: var(--spacing-xs); }
.mt-sm { margin-top: var(--spacing-sm); }
.mt-md { margin-top: var(--spacing-md); }
.mt-lg { margin-top: var(--spacing-lg); }
.mt-xl { margin-top: var(--spacing-xl); }

.mb-0 { margin-bottom: 0; }
.mb-xs { margin-bottom: var(--spacing-xs); }
.mb-sm { margin-bottom: var(--spacing-sm); }
.mb-md { margin-bottom: var(--spacing-md); }
.mb-lg { margin-bottom: var(--spacing-lg); }
.mb-xl { margin-bottom: var(--spacing-xl); }

/* 内边距 */
.p-0 { padding: 0; }
.p-xs { padding: var(--spacing-xs); }
.p-sm { padding: var(--spacing-sm); }
.p-md { padding: var(--spacing-md); }
.p-lg { padding: var(--spacing-lg); }
.p-xl { padding: var(--spacing-xl); }

.pt-0 { padding-top: 0; }
.pt-xs { padding-top: var(--spacing-xs); }
.pt-sm { padding-top: var(--spacing-sm); }
.pt-md { padding-top: var(--spacing-md); }
.pt-lg { padding-top: var(--spacing-lg); }
.pt-xl { padding-top: var(--spacing-xl); }

.pb-0 { padding-bottom: 0; }
.pb-xs { padding-bottom: var(--spacing-xs); }
.pb-sm { padding-bottom: var(--spacing-sm); }
.pb-md { padding-bottom: var(--spacing-md); }
.pb-lg { padding-bottom: var(--spacing-lg); }
.pb-xl { padding-bottom: var(--spacing-xl); }

/* 字体大小 */
.text-xs { font-size: var(--text-xs); }
.text-sm { font-size: var(--text-sm); }
.text-base { font-size: var(--text-base); }
.text-lg { font-size: var(--text-lg); }
.text-xl { font-size: var(--text-xl); }
.text-2xl { font-size: var(--text-2xl); }
.text-3xl { font-size: var(--text-3xl); }

/* 字重 */
.font-normal { font-weight: var(--font-normal); }
.font-medium { font-weight: var(--font-medium); }
.font-semibold { font-weight: var(--font-semibold); }
.font-bold { font-weight: var(--font-bold); }

/* 文本对齐 */
.text-left { text-align: left; }
.text-center { text-align: center; }
.text-right { text-align: right; }

/* 显示属性 */
.block { display: block; }
.inline-block { display: inline-block; }
.inline { display: inline; }
.flex { display: flex; }
.inline-flex { display: inline-flex; }
.grid { display: grid; }
.hidden { display: none; }

/* Flex布局 */
.flex-row { flex-direction: row; }
.flex-col { flex-direction: column; }
.flex-wrap { flex-wrap: wrap; }
.flex-nowrap { flex-wrap: nowrap; }

.items-start { align-items: flex-start; }
.items-center { align-items: center; }
.items-end { align-items: flex-end; }
.items-stretch { align-items: stretch; }

.justify-start { justify-content: flex-start; }
.justify-center { justify-content: center; }
.justify-end { justify-content: flex-end; }
.justify-between { justify-content: space-between; }
.justify-around { justify-content: space-around; }

.gap-0 { gap: 0; }
.gap-xs { gap: var(--spacing-xs); }
.gap-sm { gap: var(--spacing-sm); }
.gap-md { gap: var(--spacing-md); }
.gap-lg { gap: var(--spacing-lg); }
.gap-xl { gap: var(--spacing-xl); }

/* 宽度 */
.w-full { width: 100%; }
.w-auto { width: auto; }

/* 高度 */
.h-full { height: 100%; }
.h-auto { height: auto; }
