/* DM Sans — self-hosted (GDPR compliant) */ @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('./fonts/dm-sans-400.woff2') format('woff2'); } @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('./fonts/dm-sans-500.woff2') format('woff2'); } @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('./fonts/dm-sans-600.woff2') format('woff2'); } @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('./fonts/dm-sans-700.woff2') format('woff2'); } @font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url('./fonts/dm-sans-400-italic.woff2') format('woff2'); } /* JetBrains Mono — self-hosted (GDPR compliant) */ @font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('./fonts/jetbrains-mono-400.woff2') format('woff2'); } @font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('./fonts/jetbrains-mono-500.woff2') format('woff2'); } @font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 600; font-display: swap; src: url('./fonts/jetbrains-mono-600.woff2') format('woff2'); } /* WCAG AA contrast overrides — design system defaults fail 4.5:1 minimum */ :root { /* Light mode: #766A5E on #FFFFFF = 4.5:1 (was #9C9184 = 3.0:1) */ --text-muted: #766A5E; /* White text on colored badge backgrounds (not in DS yet) */ --text-inverse: #fff; /* Spacing scale — DS doesn't ship these, but many app modules reference them. Keep local here until the DS grows a real spacing system. */ --space-xs: 4px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; --space-xl: 32px; } [data-theme="dark"] { /* Dark mode: #9A9088 on #242019 = 4.5:1 (was #7A7068 = 2.9:1) */ --text-muted: #9A9088; /* Dark mode: #6A6058 on #242019 = 3:1 (was #4A4238 = 1.4:1 — catastrophic) */ --text-faint: #6A6058; } :root { font-family: 'DM Sans', system-ui, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } *, *::before, *::after { box-sizing: border-box; margin: 0; } html, body, #root { height: 100%; }