:root {
    --app-font-sans: Inter, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;

    --app-page-bg: #f6f8fb;
    --app-surface-bg: #ffffff;
    --app-surface-muted: #f8fafc;
    --app-surface-subtle: #f1f5f9;

    --app-text-primary: #0f172a;
    --app-text-secondary: #334155;
    --app-text-muted: #64748b;
    --app-text-soft: #94a3b8;

    --app-border-default: #e2e8f0;
    --app-border-strong: #cbd5e1;

    --app-brand-50: #eff6ff;
    --app-brand-100: #dbeafe;
    --app-brand-500: #3b82f6;
    --app-brand-600: #2563eb;
    --app-brand-700: #1d4ed8;

    --app-success-50: #ecfdf5;
    --app-success-600: #059669;
    --app-warning-50: #fffbeb;
    --app-warning-600: #d97706;
    --app-danger-50: #fef2f2;
    --app-danger-600: #dc2626;
    --app-info-50: #f0f9ff;
    --app-info-600: #0284c7;

    --app-radius-sm: 0.75rem;
    --app-radius-md: 0.95rem;
    --app-radius-lg: 1.2rem;
    --app-radius-xl: 1.6rem;

    --app-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
    --app-shadow-md: 0 10px 30px rgba(15, 23, 42, 0.07);
    --app-shadow-lg: 0 20px 50px rgba(15, 23, 42, 0.1);

    --sidebar-width: 18rem;
    --platform-navbar-height: 4.5rem;
    --page-max-width: 90rem;

    --bs-body-font-family: var(--app-font-sans);
    --bs-body-bg: var(--app-page-bg);
    --bs-body-color: var(--app-text-secondary);
    --bs-emphasis-color: var(--app-text-primary);
    --bs-secondary-color: var(--app-text-muted);
    --bs-secondary-rgb: 100, 116, 139;
    --bs-tertiary-bg: var(--app-surface-subtle);
    --bs-border-color: var(--app-border-default);
    --bs-border-radius: var(--app-radius-sm);
    --bs-border-radius-sm: 0.65rem;
    --bs-border-radius-lg: var(--app-radius-md);
    --bs-border-radius-xl: var(--app-radius-lg);
    --bs-primary: var(--app-brand-600);
    --bs-primary-rgb: 37, 99, 235;
    --bs-success: var(--app-success-600);
    --bs-success-rgb: 5, 150, 105;
    --bs-warning: var(--app-warning-600);
    --bs-warning-rgb: 217, 119, 6;
    --bs-danger: var(--app-danger-600);
    --bs-danger-rgb: 220, 38, 38;
    --bs-info: var(--app-info-600);
    --bs-info-rgb: 2, 132, 199;
    --bs-link-color: var(--app-brand-600);
    --bs-link-hover-color: var(--app-brand-700);
    --bs-box-shadow-sm: var(--app-shadow-sm);
    --bs-box-shadow: var(--app-shadow-md);
    --bs-box-shadow-lg: var(--app-shadow-lg);
}

html,
body {
    min-height: 100%;
}

body {
    margin: 0;
    background: var(--app-page-bg);
    color: var(--app-text-secondary);
    font-family: var(--app-font-sans);
    text-rendering: optimizeLegibility;
}

body,
input,
button,
select,
textarea {
    font-family: var(--app-font-sans);
}

::selection {
    background: rgba(37, 99, 235, 0.16);
}

a {
    color: var(--app-brand-600);
}

a:hover {
    color: var(--app-brand-700);
}

.tabular-nums,
.biz-number,
.money {
    font-variant-numeric: tabular-nums;
}
