:root {
    --color-primary: #4f46e5; --color-primary-hover: #4338ca; --color-primary-soft: #eef2ff;
    --color-success: #16a34a; --color-warning: #d97706; --color-danger: #dc2626; --color-info: #0284c7;
    --bg-primary: #f8fafc; --bg-secondary: #f1f5f9; --surface: #ffffff; --surface-raised: #ffffff; --surface-sunken: #f8fafc;
    --text-primary: #0f172a; --text-secondary: #64748b; --text-muted: #94a3b8; --text-inverse: #ffffff;
    --border-color: #e2e8f0; --border-strong: #cbd5e1;
    --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; --radius-pill: 999px;
    --shadow-sm: 0 1px 2px rgba(15,23,42,.06); --shadow-md: 0 4px 12px rgba(15,23,42,.08); --shadow-lg: 0 12px 32px rgba(15,23,42,.12);
    --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px; --space-6: 32px; --space-7: 48px;
    --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    --font-size-xs: 12px; --font-size-sm: 13px; --font-size-base: 14px; --font-size-md: 15px; --font-size-lg: 18px;
    --font-size-xl: 22px; --font-size-2xl: 28px; --font-size-3xl: 34px;
    --sidebar-width: 240px; --sidebar-collapsed: 64px; --topbar-height: 60px;
    --transition-fast: 0.15s ease; --transition: 0.2s ease;
}
*,*::before,*::after { box-sizing: border-box; }
html,body { margin:0; padding:0; font-family:var(--font-sans); font-size:var(--font-size-base); color:var(--text-primary); background:var(--bg-primary); line-height:1.5; -webkit-font-smoothing:antialiased; }
h1,h2,h3,h4 { margin:0; font-weight:600; line-height:1.25; }
h1 { font-size: var(--font-size-2xl); } h2 { font-size: var(--font-size-lg); } h3 { font-size: var(--font-size-md); }
a { color: var(--color-primary); text-decoration: none; } a:hover { text-decoration: underline; }
button { font-family: inherit; }
:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; border-radius: var(--radius-sm); }
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; } }
