        :root {
            --font-mono: 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Consolas, monospace;
            --font-sans: 'Noto Sans SC', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
            --font-sans-en: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

            /* 与 tailwind.config.js 的 theme.extend.colors 保持一致（单一来源） */
            --color-primary: #2563eb;
            --color-primary-light: #3b82f6;
            --color-primary-dark: #1d4ed8;
            --color-accent: #0891b2;
            --color-accent-light: #06b6d4;
            --color-surface: #ffffff;
            --color-surface-50: #f8fafc;
            --color-surface-100: #f1f5f9;
            --color-surface-200: #e2e8f0;
            --color-surface-300: #cbd5e1;
            --color-ink: #1e293b;
            --color-slate-400: #94a3b8;
            --color-slate-500: #64748b;
        }

        /* 仅中性化表单控件的 UA 默认圆角 */
        input, select, textarea, button {
            border-radius: 0;
        }

        html {
            height: 100%;
        }

        body {
            background: var(--color-surface-50);
            color: var(--color-ink);
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
            font-family: var(--font-sans-en);
            display: flex;
            flex-direction: column;
            min-height: 100vh;
        }

        html.fonts-loaded body {
            font-family: var(--font-sans);
        }

        .font-sans {
            font-family: var(--font-sans-en);
        }

        html.fonts-loaded .font-sans {
            font-family: var(--font-sans);
        }

        .font-mono {
            font-family: var(--font-mono);
        }

        .fa-solid, .fa-regular, .fa-brands, .fa-kit,
        [class^="fa-"], [class*=" fa-"] {
            font-family: 'Font Awesome 7 Free', 'Font Awesome 7 Brands', 'Font Awesome Kit';
            font-style: normal;
            font-variant: normal;
            line-height: 1;
            text-rendering: auto;
            -webkit-font-smoothing: antialiased;
        }

        .card-flat {
            background: var(--color-surface);
            border: 1px solid var(--color-surface-200);
            width: 100%;
        }

        .stat-card {
            position: relative;
            background: var(--color-surface);
            border: 1px solid var(--color-surface-200);
        }

        .stat-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 3px;
            height: 100%;
            background: var(--stat-color, var(--color-primary));
        }

        .table-row-hover:hover {
            background: var(--color-surface-100);
        }

        .search-glow:focus {
            outline: none;
            border-color: var(--color-primary);
        }

        ::-webkit-scrollbar { width: 6px; height: 6px; }
        ::-webkit-scrollbar-track { background: var(--color-surface-100); }
        ::-webkit-scrollbar-thumb { background: var(--color-surface-300); }
        ::-webkit-scrollbar-thumb:hover { background: var(--color-slate-400); }

        button, a, input, select, [role="button"] {
            transition: background-color 0.15s, color 0.15s, border-color 0.15s;
        }

        .nav-link-active {
            color: var(--color-primary) !important;
            font-weight: 500;
        }

        /* Sticky Footer: main 区域自动填充剩余空间 */
        main {
            flex: 1 0 auto;
            width: 100%;
        }

        footer {
            flex-shrink: 0;
        }
