:root {
    --primary: #00327d;
    --on-primary: #ffffff;
    --primary-container: #0047ab;
    --on-primary-container: #a5bdff;
    --primary-fixed: #dae2ff;
    --primary-hover: rgba(0,50,125,0.08);
    --secondary: #5f5e5e;
    --on-secondary: #ffffff;
    --outline: #737784;
    --outline-variant: #c3c6d5;
    --error: #ba1a1a;
    --background: #fbf9f8;
    --on-background: #1b1c1c;
    --surface: #fbf9f8;
    --on-surface: #1b1c1c;
    --surface-dim: #dbdad9;
    --surface-container-lowest: #ffffff;
    --surface-container-low: #f5f3f3;
    --surface-container: #efeded;
    --surface-container-high: #e9e8e7;
    --surface-container-highest: #e4e2e2;
    --surface-bright: #fbf9f8;
    --inverse-surface: #303031;
    --inverse-on-surface: #f2f0f0;
    --inverse-primary: #b1c5ff;
    --surface-tint: #2559bd;
    --terminal-green: #22c55e;
    --terminal-red: #ef4444;
    --terminal-amber: #f59e0b;
    --terminal-cyan: #06b6d4;

    --stack-sm: 12px;
    --stack-md: 24px;
    --stack-lg: 48px;
    --container-margin: 40px;
    --gutter: 24px;
    --base: 8px;
    --radius-sm: 0.25rem;
    --radius-md: 0.5rem;
    --radius-lg: 0.75rem;
    --radius-full: 9999px;

    --font-body: 'Inter', sans-serif;
    --font-display: 'Playfair Display', serif;
    --font-mono: 'JetBrains Mono', 'Fira Code', 'Inter', monospace;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
    font-family: var(--font-body);
    background: var(--background);
    color: var(--on-surface);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
    transition: background 0.3s ease, color 0.3s ease;
}
::selection { background: var(--primary); color: var(--on-primary); }
a { text-decoration: none; color: inherit; }
button { cursor: pointer; border: none; background: none; font: inherit; }
