/* Entry-preview styles for the Sveltia editor, registered via the documented CMS.registerPreviewStyle API (bare element selectors, per the official docs example). This file MIRRORS the article styles 1:1 — the design tokens from :root and the `.prose` block in src/styles/global.css — with `.prose` dropped from selectors (the preview pane has no such wrapper). KEEP IN SYNC: when you touch `.prose` or the tokens in global.css, update the corresponding value here (a matching reminder sits next to `.prose`). Fonts: same self-hosted woff2 files the site uses, same origin. (The Sveltia bundle still loads its own UI fonts from jsDelivr — only the PREVIEW pane is CDN-free.) */ @font-face { font-family: "Inter"; font-weight: 400 700; font-display: swap; src: url("/fonts/inter-latin.woff2") format("woff2"); } @font-face { font-family: "Space Grotesk"; font-weight: 500 700; font-display: swap; src: url("/fonts/space-grotesk-latin.woff2") format("woff2"); } :root { /* tokens copied from global.css :root */ --galaxy: #00004a; --moon: #f5f5f5; --text: #101228; --muted: #46536a; --border: #e2e5ee; --link: #0057c2; --font-body: "Inter", Arial, system-ui, sans-serif; --font-display: "Space Grotesk", var(--font-body); --fs-s: 0.9rem; --fs-l: 1.125rem; --fs-xl: 1.5rem; --fs-h2: clamp(1.75rem, 3.5vw, 2.5rem); --radius: 16px; } /* preview shell ≈ article column */ body { font-family: var(--font-body); color: var(--text); max-width: 70ch; margin: 0 auto; padding: 24px; } /* = global.css base heading/link rules = */ h1, h2 { font-family: var(--font-display); font-weight: 500; letter-spacing: -0.025em; line-height: 1.1; } h3 { font-weight: 600; } h1, h2, h3 { overflow-wrap: break-word; text-wrap: balance; } a { color: var(--link); text-decoration: underline; text-underline-offset: 3px; } /* = global.css `.prose` rules, selectors unwrapped = */ body { line-height: 1.65; overflow-wrap: break-word; } a { overflow-wrap: anywhere; } h1 { color: var(--galaxy); font-size: var(--fs-h2); } /* mirrors `.article h1` */ h2 { color: var(--galaxy); margin: 44px 0 12px; font-size: var(--fs-xl); } h3 { color: var(--galaxy); margin: 30px 0 8px; font-size: var(--fs-l); } p { margin: 0 0 16px; text-wrap: pretty; } ul, ol { margin: 0 0 16px; padding-left: 22px; } li { margin: 6px 0; } blockquote { margin: 22px 0; padding: 12px 20px; border-left: 3px solid var(--galaxy); background: var(--moon); color: var(--text); } img { display: block; max-width: 100%; height: auto; border: 1px solid var(--border); border-radius: var(--radius); } img + em, p > em:only-child { color: var(--muted); font-size: var(--fs-s); } hr { border: 0; border-top: 1px solid var(--border); margin: 32px 0; } table { display: block; width: 100%; overflow-x: auto; border-collapse: collapse; margin: 0 0 16px; font-size: var(--fs-s); } th { text-align: left; font-weight: 600; color: var(--galaxy); } th, td { padding: 10px 12px; border-bottom: 1px solid var(--border); } thead th { border-bottom: 2px solid var(--galaxy); }