/* HyperFrames Design System — Mintlify Theme Overrides */ @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap'); /* ── TT Norms Pro (matches hyperframes.heygen.com) ── */ @font-face { font-family: 'TT Norms Pro'; src: url('https://www-static-assets.heygen.com/fonts/tt-norms/TT_Norms_Pro_Normal.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'TT Norms Pro'; src: url('https://www-static-assets.heygen.com/fonts/tt-norms/TT_Norms_Pro_Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'TT Norms Pro'; src: url('https://www-static-assets.heygen.com/fonts/tt-norms/TT_Norms_Pro_DemiBold.woff2') format('woff2'); font-weight: 600; font-style: normal; font-display: swap; } @font-face { font-family: 'TT Norms Pro'; src: url('https://www-static-assets.heygen.com/fonts/tt-norms/TT_Norms_Pro_Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-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: 'TT Norms Pro', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: 'TT Norms Pro', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; } h1, h2 { letter-spacing: -0.02em; } h3 { letter-spacing: -0.01em; } /* Code font — IBM Plex Mono (loaded via Google Fonts above) */ code, pre, pre code, kbd, [class*="code"], [class*="Code"] { font-family: 'IBM Plex Mono', 'SF Mono', 'Fira Code', monospace; } /* ── Code blocks ── */ pre { background: var(--hf-code-bg) !important; border: 1px solid var(--hf-border-color) !important; border-radius: 8px !important; } /* ── Selection ── */ ::selection { background: var(--hf-selection-bg); } /* ── Links ── */ a:not([class]) { color: var(--hf-accent-blue); } a:not([class]):hover { opacity: 0.85; } /* ── Documentation navigation ── */ /* * Keep Aspen's full-width header, but place its desktop controls on one row: * logo → section tabs → search → actions. Mobile keeps Mintlify's layout. */ @media (min-width: 1024px) { #navbar { height: 3.5rem; } #navbar > div:has(.nav-tabs) { display: grid; grid-template-columns: max-content max-content minmax(10.25rem, 1fr) max-content; column-gap: 1rem; align-items: center; height: 3.5rem; } #navbar > div:has(.nav-tabs) > .relative, #navbar > div:has(.nav-tabs) > .relative > div:first-child, #navbar > div:has(.nav-tabs) > .relative > div:first-child > div:first-child { display: contents; } #navbar > div:has(.nav-tabs) > .relative > div:first-child > div:first-child > div:first-child { grid-column: 1; grid-row: 1; } #navbar div:has(> .nav-tabs) { grid-column: 2; grid-row: 1; height: 3.5rem; padding: 0; } #navbar .nav-tabs { align-items: center; height: 3.5rem; } #navbar div:has(> #search-bar-entry) { grid-column: 3; grid-row: 1; min-width: 0; } #navbar .topbar-right-container { grid-column: 4; grid-row: 1; } #sidebar-content { top: 3.5rem !important; height: calc(100vh - 3.5rem) !important; } /* Keep the repository compact, but retain its useful live star count. */ #navbar a[title="heygen-com/hyperframes"] { width: 7.5rem; min-width: 7.5rem; height: 2.25rem; padding: 0 0.75rem; justify-content: center; } #navbar a[title="heygen-com/hyperframes"] > span.truncate { display: none; } #navbar a[title="heygen-com/hyperframes"] > span:not(.truncate) { display: flex !important; color: var(--hf-heading); font-variant-numeric: tabular-nums; } /* * Mintlify removes the live count for roughly one animation frame during * client-side navigation. Keep the last known value in its place so the * control neither collapses nor flashes empty. */ #navbar a[title="heygen-com/hyperframes"]:not(:has(> span:not(.truncate)))::after { color: var(--hf-heading); content: "★ 38,440"; font-variant-numeric: tabular-nums; } } /* Preserve a useful search field on smaller desktop widths. */ @media (min-width: 1024px) and (max-width: 1199px) { #navbar #assistant-entry { display: none; } } /* Use main's quieter structural border color across Aspen surfaces. */ #body-content [class*="border-gray-200"], #body-content [class*="border-gray-100"] { border-color: var(--hf-ui-border) !important; } /* Keep the floating agent input noticeable against the page background. */ #body-content .chat-assistant-floating-input > div > div { border-color: var(--hf-border-color-light) !important; background-color: var(--hf-background-light) !important; box-shadow: var(--hf-floating-input-shadow); } /* * Match the navigation rhythm and active-page rail used on the main docs. * Each link owns one rail segment, so the current page can highlight only * its segment. These rules are visual only; groups remain non-collapsible. */ #navigation-items .sidebar-group-header { color: var(--hf-text); font-size: 0.875rem; font-weight: 500; line-height: 1.25rem; } #navigation-items .sidebar-group { padding-left: 0; } #navigation-items .sidebar-group::before { content: none; } #navigation-items .sidebar-group > li { margin-bottom: 0; } #navigation-items .sidebar-group > li + li { margin-top: 0 !important; } #navigation-items .sidebar-group > li > a { width: calc(100% - 1rem); margin-left: 1rem; padding: 0.375rem 0.75rem 0.375rem 1rem; border-left: 1px solid var(--hf-sidebar-rail); border-radius: 0; background: transparent !important; color: var(--hf-sidebar-text); } #navigation-items .sidebar-group > li > a:hover { background: transparent !important; color: var(--hf-heading); } #navigation-items .sidebar-group > li[data-active='true'] > a, #navigation-items .sidebar-group > li[data-active-nav-item='true'] > a, #navigation-items .sidebar-group > li > a[aria-current='page'] { border-left-color: currentColor; color: var(--hf-heading); } /* Aspen inserts horizontal separators; main uses the same space without a rule. */ #navigation-items div:has(> .sidebar-group) + div { height: 2rem; padding: 0; } #navigation-items div:has(> .sidebar-group) + div > * { display: none; } /* * Aspen assumes a 96px header and fades scrolled navigation before it reaches * that boundary. Our header is 56px; align the sticky sidebar to it and let * links clip exactly at the header instead of disappearing early. */ #navigation-items, #navigation-items [data-id] { -webkit-mask-image: none !important; mask-image: none !important; } /* Catalog texture examples */ .hf-texture-preview-panel { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 24px 0 40px; } .hf-texture-preview-card { min-width: 0; border: 1px solid rgba(127, 127, 127, 0.22); border-radius: 8px; padding: 16px; background: #101010; } .hf-texture-preview-label { margin-bottom: 12px; color: rgba(255, 255, 255, 0.6); font-size: 12px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .hf-texture-preview-shadow { filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.48)); } .hf-texture-preview-word { color: #fff; font-family: Impact, 'Arial Black', sans-serif; font-size: 42px; line-height: 0.9; letter-spacing: 0; text-align: center; text-transform: uppercase; white-space: nowrap; -webkit-mask-image: var(--mask-url); mask-image: var(--mask-url); -webkit-mask-size: cover; mask-size: cover; -webkit-mask-position: center; mask-position: center; -webkit-mask-mode: luminance; mask-mode: luminance; } .hf-texture-animate-demo { border: 1px solid rgba(127, 127, 127, 0.22); border-radius: 8px; padding: 22px; margin: 20px 0 24px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.54) 1px, transparent 1px), #f1f1f1; background-size: 44px 100%; } .hf-texture-animate-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; } .hf-texture-animate-label { min-width: 0; color: rgba(24, 24, 24, 0.62); font-size: 13px; line-height: 1.2; } .hf-texture-animate-class { max-width: 62%; padding: 2px 6px; border: 1px solid rgba(24, 24, 24, 0.12); border-radius: 6px; background: rgba(255, 255, 255, 0.5); color: rgba(24, 24, 24, 0.78); font-size: 11px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .hf-texture-animate-shadow { filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.48)); } .hf-texture-animate-word { color: #181818; font-family: Impact, 'Arial Black', sans-serif; font-size: 92px; line-height: 0.9; letter-spacing: 0; text-align: center; text-transform: uppercase; white-space: nowrap; -webkit-mask-image: var(--mask-url); mask-image: var(--mask-url); -webkit-mask-size: 180% 180%; mask-size: 180% 180%; -webkit-mask-position: 0% 50%; mask-position: 0% 50%; -webkit-mask-mode: luminance; mask-mode: luminance; animation: hf-texture-mask-pan 2.1s ease-in-out infinite alternate; } @keyframes hf-texture-mask-pan { from { -webkit-mask-position: 0% 50%; mask-position: 0% 50%; } to { -webkit-mask-position: 100% 50%; mask-position: 100% 50%; } } .hf-texture-example-groups { display: grid; gap: 32px; margin: 20px 0 40px; } .hf-texture-example-title { margin: 0 0 10px; font-size: 14px; font-weight: 600; } .hf-texture-example-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 16px; } .hf-texture-example-card { border: 1px solid rgba(127, 127, 127, 0.22); border-radius: 8px; padding: 20px; background: #f1f1f1; } .hf-texture-example-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; } .hf-texture-example-label { min-width: 0; color: rgba(24, 24, 24, 0.62); font-size: 13px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .hf-texture-example-class { max-width: 62%; padding: 2px 6px; border: 1px solid rgba(24, 24, 24, 0.12); border-radius: 6px; background: rgba(255, 255, 255, 0.5); color: rgba(24, 24, 24, 0.78); font-size: 11px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .hf-texture-example-shadow { filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.48)); } .hf-texture-example-word { color: #181818; font-family: Impact, 'Arial Black', sans-serif; font-size: 54px; line-height: 0.9; letter-spacing: 0; text-align: center; text-transform: uppercase; white-space: nowrap; -webkit-mask-image: var(--mask-url); mask-image: var(--mask-url); -webkit-mask-size: cover; mask-size: cover; -webkit-mask-position: center; mask-position: center; -webkit-mask-mode: luminance; mask-mode: luminance; } .hf-texture-example-usage { display: flex; align-items: flex-start; gap: 6px; min-width: 0; margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(24, 24, 24, 0.1); color: rgba(24, 24, 24, 0.56); font-size: 12px; line-height: 1.3; } .hf-texture-example-usage code { min-width: 0; color: rgba(24, 24, 24, 0.82); font-size: 11px; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; } @media (max-width: 860px) { .hf-texture-preview-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 520px) { .hf-texture-preview-panel { grid-template-columns: 1fr; } .hf-texture-preview-word { font-size: 40px; } .hf-texture-animate-meta { align-items: flex-start; flex-direction: column; } .hf-texture-animate-class { max-width: 100%; } .hf-texture-animate-word { font-size: 56px; } } @media (prefers-reduced-motion: reduce) { .hf-texture-animate-word { animation: none; } } /* Hide the section/group label ("Start here", etc.) that the theme renders * above every page title. It repeats the sidebar grouping and adds noise on * every page; each page leads with its own H1 instead. */ .eyebrow { display: none; }