diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index e68b71a..e6b2770 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -8,6 +8,7 @@
"name": "inboxintel-frontend",
"version": "0.1.0",
"dependencies": {
+ "@fontsource-variable/inter": "^5.2.8",
"@radix-ui/react-avatar": "^1.2.1",
"@radix-ui/react-checkbox": "^1.3.6",
"@radix-ui/react-dialog": "^1.1.18",
@@ -764,6 +765,15 @@
"integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==",
"license": "MIT"
},
+ "node_modules/@fontsource-variable/inter": {
+ "version": "5.2.8",
+ "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.8.tgz",
+ "integrity": "sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==",
+ "license": "OFL-1.1",
+ "funding": {
+ "url": "https://github.com/sponsors/ayuhito"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index bf975da..e1688bb 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -9,6 +9,7 @@
"preview": "vite preview --host"
},
"dependencies": {
+ "@fontsource-variable/inter": "^5.2.8",
"@radix-ui/react-avatar": "^1.2.1",
"@radix-ui/react-checkbox": "^1.3.6",
"@radix-ui/react-dialog": "^1.1.18",
diff --git a/frontend/src/index.css b/frontend/src/index.css
index 691a550..9f4d9ab 100644
--- a/frontend/src/index.css
+++ b/frontend/src/index.css
@@ -66,9 +66,9 @@
body {
@apply bg-background text-foreground antialiased;
- /* Prefer Inter when available (bundled in a later slice); graceful system fallback. */
- font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,
- Helvetica, Arial, sans-serif;
+ /* Inter (variable, self-hosted via @fontsource-variable/inter); system fallback. */
+ font-family: 'Inter Variable', 'Inter', ui-sans-serif, system-ui, -apple-system,
+ 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}
/* Subtle, modern scrollbars that respect the theme. */
diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx
index dbf90ae..f8b66ca 100644
--- a/frontend/src/main.jsx
+++ b/frontend/src/main.jsx
@@ -9,7 +9,9 @@ import Unsubscribe from './pages/Unsubscribe.jsx';
import FolderView from './pages/FolderView.jsx';
import SearchResults from './pages/SearchResults.jsx';
import Layout from './components/Layout.jsx';
+import DesignSystem from './pages/DesignSystem.jsx';
import { ToastProvider, TooltipProvider } from './components/ui';
+import '@fontsource-variable/inter';
import './index.css';
import './styles.css';
@@ -30,6 +32,7 @@ ReactDOM.createRoot(document.getElementById('root')).render(
+ v2 tokens & primitives — green accent, warm neutrals, dark-first. Toggle the + theme to verify both. +
++ InboxIntel design system · see docs/discovery/04-ux-redesign-and-design-system.md +
+