@import "tailwindcss"; @source "./**/*.{ts,tsx}"; @source "../../../../react/src/components/**/*.{ts,tsx}"; /* --------------------------------------------------------------------------- Fonts Vendored and inlined as `data:` URLs, not fetched. The inner renderer runs under `font-src data:` (see `buildRendererSrcDoc`), so a network font would simply be blocked and model-written UI would render in `system-ui` — the one executor surface not set in Geist. `vite.config.shell.ts` raises `assetsInlineLimit` above these files' size so the build inlines them, and `collectShellCss` then copies the whole compiled stylesheet, fonts included, into the sandboxed frame. These live HERE rather than in `theme.css` because `url()` needs the build to resolve it; `theme.css` is also shipped as raw source to the in-frame compiler, which has no bundler and no filesystem. Variable faces: one file each covers 400 (body) and 500/600 (labels, headings) without a second request's worth of bytes. --------------------------------------------------------------------------- */ @font-face { font-family: "Geist"; src: url("./fonts/geist-sans.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; } @font-face { font-family: "Geist Mono"; src: url("./fonts/geist-mono.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; } /* Executor's tokens, variants and base layer. Shared verbatim with the inner frame's Tailwind compiler — keep anything build-resolved out of it. */ @import "./theme.css"; /* Provenance marker. The shell's tokens deliberately mirror the console's (theme.css is pinned against the console's globals.css), so no token name or value distinguishes this compiled stylesheet from the console's own. This property is the one declaration unique to it: e2e proves style containment by finding it computed inside the shell document and absent from the console document — see e2e/scenarios/artifacts.test.ts. */ :root { --mcp-apps-shell-stylesheet: 1; }