/* HyperFrames Design System — Mintlify Theme Overrides */ @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap'); /* ── Light mode (default) ── */ /* * NOTE: All custom variables are namespaced with `--hf-` to avoid * colliding with Mintlify's Tailwind color system, which owns names * like `--background-light` / `--background-dark` and uses them via * `rgb(var(--background-light)/)`. Overriding those with hex * values breaks the rgb() call and makes surfaces transparent (e.g. * the "Copy page" dropdown panel in light mode). */ :root { --hf-background: #f6f5f1; --hf-background-light: #ffffff; --hf-surface2: #eeedea; --hf-border-color: #e0dfdb; --hf-border-color-light: #d0cfcb; --hf-text: #1a1a1a; --hf-text-secondary: #6b6b6b; --hf-text-tertiary: #999999; --hf-heading: #0a0a0a; --hf-code-bg: #ffffff; --hf-ui-border: #eeeeee; --hf-sidebar-rail: #eeeeee; --hf-sidebar-text: #707070; --hf-floating-input-shadow: 0 8px 28px rgba(10, 10, 10, 0.08), 0 1px 4px rgba(10, 10, 10, 0.08); --mintlify-slot-header-height: 3.5rem; --hf-accent-green: #1a7a0a; --hf-accent-green-light: rgba(26, 122, 10, 0.07); --hf-accent-green-border: rgba(26, 122, 10, 0.25); --hf-accent-blue: #2563eb; --hf-accent-blue-light: rgba(37, 99, 235, 0.06); --hf-accent-blue-border: rgba(37, 99, 235, 0.2); --hf-accent-purple: #7c3aed; --hf-accent-purple-light: rgba(124, 58, 237, 0.06); --hf-accent-purple-border: rgba(124, 58, 237, 0.2); --hf-selection-bg: rgba(128, 128, 128, 0.2); } /* ── Dark mode ── */ .dark, [data-theme="dark"] { --hf-background: #0a0a0a; --hf-background-light: #141414; --hf-surface2: #1a1a1a; --hf-border-color: #2a2a2a; --hf-border-color-light: #3a3a3a; --hf-text: #e5e5e5; --hf-text-secondary: #a0a0a0; --hf-text-tertiary: #666666; --hf-heading: #f5f5f5; --hf-code-bg: #141414; --hf-ui-border: #2a2a2a; --hf-sidebar-rail: #2a2a2a; --hf-sidebar-text: #a0a0a0; --hf-floating-input-shadow: 0 8px 28px rgba(0, 0, 0, 0.4), 0 1px 4px rgba(0, 0, 0, 0.4); --hf-accent-green: #22c55e; --hf-accent-green-light: rgba(34, 197, 94, 0.1); --hf-accent-green-border: rgba(34, 197, 94, 0.3); --hf-accent-blue: #3b82f6; --hf-accent-blue-light: rgba(59, 130, 246, 0.1); --hf-accent-blue-border: rgba(59, 130, 246, 0.3); --hf-accent-purple: #a78bfa; --hf-accent-purple-light: rgba(167, 139, 250, 0.1); --hf-accent-purple-border: rgba(167, 139, 250, 0.3); --hf-selection-bg: rgba(255, 255, 255, 0.15); } /* ── Typography ── */ body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; } h1, h2 { letter-spacing: -0.02em; } h3 { letter-spacing: -0.01em; } /* ── Content width ── * * The theme caps the article shell at max-w-6xl (72rem) and reserves 28rem of * every wide viewport for the table of contents, which left the actual reading * column at ~664px on a 1600px screen. That is too narrow for a product whose * pages carry 16:9 video: a full-width clip rendered smaller than a phone held * sideways. These raise the shell and hand ~9rem back from the TOC gutter, * taking the column to roughly 950px. * * ID selectors deliberately: they outrank the theme's utility classes without * needing !important, so the cascade stays debuggable. */ @media (min-width: 1280px) { /* The binding constraint. The left sidebar sits inside #body-content, so its * max-w-8xl (1472px) cap was the real limit: 1432 inner − 287 sidebar = 1144, * then −128 shell padding = 1016, then −352 for the contents rail and gap, * which is exactly the 664px column we measured. */ #body-content { max-width: 110rem; } /* Let the shell use what #body-content now offers, and reclaim some of the * generous left padding. Setting a width on #content-area itself does * nothing — it is a flex item with grow, so it simply fills what is left. */ #content-container { max-width: none; padding-left: 2.5rem; } /* The contents rail only ever renders ~256px of text. */ #content-side-layout { max-width: 16rem; } } /* No paragraph measure cap. It was tried and removed: these pages are built * almost entirely from lists, tables, cards, and code blocks — a whole guide * carries about three

elements — so capping paragraph width changed nothing * measurable while adding a rule that looked meaningful. If long lines ever do * become a problem, cap the structural containers rather than

. */ /* Media that should escape any inherited measure. Use on a Frame or a bare * video/image wrapper when the visual is the point of the section. */ .hf-wide { width: 100%; max-width: none; } /* ── Next-step card thumbnail ── * * Sizing an inside one of these cards with utility classes does not work. * Mintlify wraps every image in its zoom component — span[data-rmiz] > * span[data-rmiz-content] > picture.contents > img — so a width set on a * surrounding div is absorbed by that wrapper, and the image renders full width * with the card's text pushed out of view. Videos are not wrapped, which is why * the same card works with a