/* Lede landing — tokens derived from brand-guidelines.md (OKLCH + color-mix). Neutrals tinted toward brand orange hue (~38–75 in OKLCH hue for warm paper). */ :root { /* Hue anchor (orange family) for subtle neutral tint */ --hue-brand: 48; --hue-ink: 55; --color-canvas: oklch(96.2% 0.012 var(--hue-brand)); --color-subtle: oklch(93.5% 0.014 var(--hue-brand)); --color-border: oklch(88% 0.018 var(--hue-brand)); --color-border-hover: oklch(80% 0.02 var(--hue-brand)); --color-ink: oklch(12.8% 0.012 var(--hue-ink)); --color-ink-secondary: oklch(22% 0.012 var(--hue-ink)); --color-ink-muted: oklch(72% 0.02 var(--hue-ink)); --color-surface: oklch(99.4% 0.004 var(--hue-brand)); --color-brand: oklch(64.5% 0.205 38); --color-brand-hover: oklch(58% 0.19 38); --color-brand-active: oklch(51% 0.175 38); --color-brand-soft: color-mix(in oklch, var(--color-brand) 14%, var(--color-canvas)); --color-on-brand: oklch(99% 0.01 95); --color-link: oklch(38% 0.02 var(--hue-ink)); --color-link-hover: var(--color-brand); /* Privacy band — soft apricot slab (light mode); hue locks to brand orange */ --color-dark-canvas: oklch(92.5% 0.022 38); --color-dark-subtle: oklch(89.6% 0.025 38); --color-dark-border: oklch(84% 0.03 40); --color-dark-ink: var(--color-ink); --color-dark-ink-secondary: var(--color-ink-secondary); /* Typography */ --font-display: "Sora", system-ui, sans-serif; --font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; --font-mono: ui-monospace, "SF Mono", "Cascadia Code", monospace; /* Fluid display scale (≥1.25 ratio between steps) */ --text-hero: clamp(2.85rem, 5.5vw + 1.15rem, 4.85rem); --text-xl: clamp(1.9rem, 2.6vw + 1.05rem, 2.75rem); --text-lg: clamp(1.35rem, 1.2vw + 1rem, 1.75rem); --text-md: clamp(1.0625rem, 0.5vw + 0.95rem, 1.25rem); --text-sm: 0.875rem; --text-xs: 0.6875rem; --leading-tight: 1.25; --leading-ui: 1.35; --leading-prose: 1.65; --leading-prose-dark: 1.72; --tracking-display: -0.02em; --tracking-label: 0.08em; /* 4pt-based semantic spacing */ --space-3xs: 0.25rem; --space-2xs: 0.5rem; --space-xs: 0.75rem; --space-sm: 1rem; --space-md: 1.5rem; --space-lg: 2rem; --space-xl: 3rem; --space-2xl: 4rem; --space-3xl: 6rem; /* Section vertical rhythm (fluid where the page needs to breathe) */ --section-y: clamp(2.75rem, 5vw, 4.25rem); --section-y-tight: clamp(1.35rem, 2.8vw, 2.25rem); --section-y-room: clamp(3.25rem, 6.5vw, 5.5rem); --section-y-hero-tail: clamp(3rem, 6vw, 5rem); --radius-sm: 6px; --radius-md: 8px; --radius-pill: 14px; /* Floated site header — slightly rounder than cards, tuned for blur + shadow */ --radius-nav-float: 13px; --nav-float-max: 1280px; /* Full-viewport top veil (html.site-nav-floated::before) — tall + opaque stops hide scroll “pop” */ --nav-top-fade-reach: clamp(2rem, 6vw, 3.5rem); --nav-veil-pill-overlap: clamp(3.25rem, 8dvh, 6.25rem); --ease-out: cubic-bezier(0.22, 1, 0.36, 1); /* Softer deceleration for first-paint choreography (no bounce) */ --ease-reveal: cubic-bezier(0.16, 1, 0.3, 1); --ease-out-disclosure: cubic-bezier(0.22, 1, 0.36, 1); --duration-enter: 0.74s; --duration-disclosure: 0.42s; /* Fixed caps for
collapse — animating 0fr→1fr is skipped inconsistently in browsers */ --disclosure-collapse-max: min(92vh, 52rem); --faq-collapse-max: min(60vh, 22rem); --content-max: 70ch; --page-gutter: clamp(1rem, 4vw, 2.5rem); --focus-ring: 2px solid var(--color-brand); --focus-offset: 2px; /* Elevation (neutral black/alpha — not tied to --color-ink, so shadows work in dark mode) */ --shadow-card-edge: oklch(0% 0 0 / 0.07); --shadow-card-soft: oklch(0% 0 0 / 0.11); --shadow-popup: 0 0 0 1px color-mix(in oklch, var(--color-brand) 18%, oklch(0% 0 0 / 0.06)), 0 12px 28px oklch(0% 0 0 / 0.08), 0 32px 80px oklch(0% 0 0 / 0.12); } @media (prefers-color-scheme: dark) { :root { --color-canvas: oklch(17.2% 0.014 var(--hue-brand)); --color-subtle: oklch(20.8% 0.016 var(--hue-brand)); --color-border: oklch(28% 0.018 var(--hue-brand)); --color-border-hover: oklch(36% 0.02 var(--hue-brand)); --color-ink: oklch(95.5% 0.012 85); --color-ink-secondary: oklch(83% 0.014 78); --color-ink-muted: oklch(56% 0.022 70); --color-surface: oklch(21.2% 0.014 var(--hue-brand)); --color-brand: oklch(70% 0.2 38); --color-brand-hover: oklch(76% 0.2 40); --color-brand-active: oklch(62% 0.175 38); --color-brand-soft: color-mix(in oklch, var(--color-brand) 18%, var(--color-canvas)); --color-on-brand: oklch(14% 0.02 42); --color-link: oklch(78% 0.04 72); --color-link-hover: oklch(82% 0.12 48); /* Privacy band: slightly lifted warm slab vs page canvas */ --color-dark-canvas: oklch(23.5% 0.017 var(--hue-ink)); --color-dark-subtle: oklch(27% 0.016 var(--hue-ink)); --color-dark-border: oklch(35% 0.015 var(--hue-ink)); --color-dark-ink: oklch(96.5% 0.01 85); --color-dark-ink-secondary: oklch(87% 0.016 78); --shadow-card-edge: oklch(100% 0 0 / 0.08); --shadow-card-soft: oklch(0% 0 0 / 0.42); --shadow-popup: 0 0 0 1px color-mix(in oklch, var(--color-brand) 28%, oklch(100% 0 0 / 0.12)), 0 14px 32px oklch(0% 0 0 / 0.45), 0 36px 88px oklch(0% 0 0 / 0.55); } .hero-mast { background: radial-gradient(ellipse 78% 58% at 0% 0%, color-mix(in oklch, var(--color-brand) 24%, transparent), transparent 55%), linear-gradient( 172deg, color-mix(in oklch, var(--color-subtle) 92%, #000) 0%, var(--color-canvas) 48%, oklch(14.5% 0.016 var(--hue-brand)) 100% ); } .hero-mast .eyebrow { color: color-mix(in oklch, var(--color-brand) 48%, var(--color-ink-muted)); } .hero-proof .extension-demo { box-shadow: 0 0 0 1px color-mix(in oklch, var(--color-brand) 22%, oklch(100% 0 0 / 0.1)), 0 5px 14px oklch(0% 0 0 / 0.28), 0 14px 32px oklch(0% 0 0 / 0.36); } } *, *::before, *::after { box-sizing: border-box; } html { scroll-behavior: smooth; color-scheme: light dark; } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } } body { margin: 0; font-family: var(--font-body); font-size: 1rem; line-height: var(--leading-prose); color: var(--color-ink); background-color: var(--color-canvas); text-rendering: optimizeLegibility; } img { max-width: 100%; height: auto; display: block; } a { color: var(--color-link); text-decoration-thickness: 1px; text-underline-offset: 0.18em; transition: color 0.14s var(--ease-out); } a:hover { color: var(--color-link-hover); } a:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); border-radius: 2px; } .skip-link { position: absolute; left: -9999px; top: 0.5rem; z-index: 100; padding: var(--space-xs) var(--space-sm); background: var(--color-surface); color: var(--color-ink); font-family: var(--font-display); font-weight: 600; border-radius: var(--radius-md); border: 1px solid var(--color-border); } .skip-link:focus { left: var(--page-gutter); } /* ——— Layout shell ——— */ .page { min-height: 100vh; display: flex; flex-direction: column; } .page-main { flex: 1; } /* Mast gradient paints the full hero; nav sits in the same grid cell so it reads integrated */ .hero-shell { display: grid; grid-template-areas: "stack"; position: relative; } .hero-shell > .site-header, .hero-shell > .hero-mast { grid-area: stack; } .hero-shell > .hero-mast { position: relative; z-index: 0; } .hero-shell > .site-header { position: sticky; top: 0; align-self: start; justify-self: stretch; width: 100%; z-index: 50; } .wrap { width: min(1120px, 100% - 2 * var(--page-gutter)); margin-inline: auto; } .prose { max-width: var(--content-max); color: var(--color-ink-secondary); } .prose p { margin: 0 0 var(--space-md); } .prose p:last-child { margin-bottom: 0; } /* ——— Type ——— */ .font-display { font-family: var(--font-display); } .eyebrow { font-family: var(--font-display); font-size: var(--text-xs); font-weight: 600; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--color-ink-muted); } .display-hero { font-family: var(--font-display); font-size: var(--text-hero); font-weight: 700; line-height: 1.02; letter-spacing: -0.028em; color: var(--color-ink); margin: 0 0 var(--space-sm); text-wrap: balance; } .heading-xl { font-family: var(--font-display); font-size: var(--text-xl); font-weight: 700; line-height: var(--leading-tight); letter-spacing: var(--tracking-display); color: var(--color-ink); margin: 0 0 var(--space-sm); } .heading-lg { font-family: var(--font-display); font-size: var(--text-lg); font-weight: 600; line-height: var(--leading-tight); color: var(--color-ink); margin: 0 0 var(--space-xs); } .heading-md { font-family: var(--font-display); font-size: var(--text-md); font-weight: 600; line-height: var(--leading-ui); color: var(--color-ink); margin: 0 0 var(--space-2xs); } .lede { font-size: var(--text-md); line-height: var(--leading-ui); color: var(--color-ink-secondary); max-width: 36em; margin: 0; } .kbd { font-family: var(--font-mono); font-size: 0.85em; padding: 0.12em 0.45em; border-radius: var(--radius-sm); border: 1px solid var(--color-border); background: color-mix(in oklch, var(--color-subtle) 88%, transparent); color: var(--color-ink); } /* ——— Header ——— In .hero-shell: sits over the mast gradient (integrated at top). Floated: one painted surface on ::after (inset ring + shadow) avoids radius seam glitches. Transition strategy: - sticky→fixed is a layout change; transitions don't reliably start from the pre-change value. - We use @keyframes (not transition) for the glass entrance — animations always fire. - translateY slide on the pill parent covers the geometry snap visually. - Exit is instant (glass snaps off, user is near top so sticky re-appears at same visual pos). */ .site-header { position: relative; isolation: isolate; z-index: 40; background: transparent; border: 1px solid transparent; border-radius: 0; box-shadow: none; transition: border-radius 0.55s var(--ease-reveal); } .site-header::after { content: ""; position: absolute; inset: 0; z-index: 0; box-sizing: border-box; border-radius: inherit; border: 1px solid transparent; background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none; opacity: 0; pointer-events: none; box-shadow: none; /* No transition here — entrance is via @keyframes; exit is instant (glass snaps off at scroll≈0) */ transition: border-radius 0.55s var(--ease-reveal); transform: translateZ(0); -webkit-backface-visibility: hidden; backface-visibility: hidden; } /* Full glass styles in scrolled state — opacity driven by the animation below */ .site-header.site-header--scrolled::after { opacity: 1; border-color: transparent; border-radius: inherit; background: color-mix(in oklch, var(--color-canvas) 86%, transparent); backdrop-filter: blur(18px) saturate(1.35); -webkit-backdrop-filter: blur(18px) saturate(1.35); box-shadow: inset 0 0 0 1px var(--color-border), 0 14px 36px oklch(0% 0 0 / 0.07), 0 32px 72px oklch(0% 0 0 / 0.09); } /* Pill entrance: slide down + glass fade — both as keyframes so they fire despite the position change */ @keyframes nav-glass-in { from { opacity: 0; } to { opacity: 1; } } @keyframes nav-pill-in { from { transform: translateY(-10px); } to { transform: translateY(0); } } @media (prefers-reduced-motion: no-preference) { .site-header.site-header--scrolled::after { animation: nav-glass-in 0.42s var(--ease-reveal) both; } html.site-nav-floated::before { animation: nav-glass-in 0.42s var(--ease-reveal) both; } .hero-shell > .site-header.site-header--scrolled { animation: nav-pill-in 0.45s var(--ease-reveal) both; } } /* Full-bleed top veil: must live on html (not the pill) so width isn’t clipped and transform doesn’t trap position:fixed */ html.site-nav-floated::before { content: ""; position: fixed; top: 0; left: 0; right: 0; width: 100%; height: calc( env(safe-area-inset-top, 0px) + var(--space-sm) + var(--nav-top-fade-reach) + var(--nav-veil-pill-overlap) ); z-index: 55; pointer-events: none; background: linear-gradient( to bottom, color-mix(in oklch, var(--color-canvas) 100%, transparent) 0%, color-mix(in oklch, var(--color-canvas) 96%, transparent) 10%, color-mix(in oklch, var(--color-canvas) 82%, transparent) 26%, color-mix(in oklch, var(--color-canvas) 52%, transparent) 48%, color-mix(in oklch, var(--color-canvas) 22%, transparent) 70%, color-mix(in oklch, var(--color-canvas) 6%, transparent) 88%, transparent 100% ); } .hero-shell > .site-header.site-header--scrolled { position: fixed; top: var(--space-sm); left: calc(var(--space-2xs) + env(safe-area-inset-left, 0px)); right: calc(var(--space-2xs) + env(safe-area-inset-right, 0px)); z-index: 60; width: auto; max-width: var(--nav-float-max); margin-inline: auto; border-radius: var(--radius-nav-float); border-color: transparent; box-shadow: none; overflow: clip; will-change: transform; } .site-header .wrap { position: relative; z-index: 2; } .site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); padding-block: var(--space-sm); } .hero-shell > .site-header.site-header--scrolled .site-header__inner { padding-inline: clamp(var(--space-sm), 2.5vw, var(--space-lg)); } .site-header__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--space-sm) var(--space-md); } .btn--sm { padding: 0.45rem 0.9rem; font-size: 0.8125rem; } .nav-install { flex-shrink: 0; } .brand-lockup { display: inline-flex; align-items: center; gap: var(--space-xs); text-decoration: none; color: inherit; font-family: var(--font-display); font-weight: 700; font-size: 1.125rem; letter-spacing: var(--tracking-display); transition: transform 0.22s var(--ease-out), color 0.18s var(--ease-out); } .brand-lockup:hover { color: var(--color-ink); transform: translateY(-1px); } .brand-lockup:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); border-radius: var(--radius-sm); } /* Summarizer mark (no wordmark in asset) + “Lede” set in markup */ .brand-lockup__mark { width: auto; height: 1.5rem; max-height: 1.65rem; flex-shrink: 0; display: block; transform-origin: 55% 60%; } @media (prefers-reduced-motion: no-preference) { .brand-lockup__mark { transition: transform 0.28s var(--ease-out); } .brand-lockup:hover .brand-lockup__mark { transform: rotate(-5deg) scale(1.04); } } .nav { display: flex; flex-wrap: wrap; gap: var(--space-sm) var(--space-md); list-style: none; margin: 0; padding: 0; } .nav a { font-family: var(--font-display); font-weight: 600; font-size: 0.8125rem; text-decoration: none; color: var(--color-ink-secondary); transition: color 0.18s var(--ease-out), transform 0.22s var(--ease-out); } .nav a:hover { color: var(--color-brand); transform: translateY(-1px); } .firefox-note { margin-top: var(--space-md); font-size: var(--text-sm); color: var(--color-ink-secondary); max-width: 65ch; } .disclosure { margin-top: clamp(var(--space-lg), 3vw, var(--space-xl)); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-canvas); overflow: hidden; } .disclosure summary { cursor: pointer; list-style: none; padding: var(--space-md) var(--space-lg); font-family: var(--font-display); font-weight: 600; font-size: var(--text-sm); color: var(--color-ink); display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); transition: background-color 0.22s var(--ease-out), color 0.18s var(--ease-out); } .disclosure summary:hover { background: color-mix(in oklch, var(--color-subtle) 55%, var(--color-canvas)); } .disclosure summary:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); border-radius: var(--radius-sm); } .disclosure summary:active { background: color-mix(in oklch, var(--color-subtle) 72%, var(--color-canvas)); } .disclosure summary::-webkit-details-marker { display: none; } .disclosure summary::after { content: "+"; flex-shrink: 0; font-weight: 700; color: var(--color-brand); font-size: 1.1rem; line-height: 1; transition: transform var(--duration-disclosure) var(--ease-out-disclosure); transform: rotate(0deg); } .disclosure[open] summary::after { transform: rotate(45deg); } .disclosure.disclosure--animate > .disclosure__collapse { display: block; max-height: 0; overflow: hidden; transition: max-height var(--duration-disclosure) var(--ease-out-disclosure); } .disclosure.disclosure--animate[open] > .disclosure__collapse { max-height: var(--disclosure-collapse-max); } .disclosure.disclosure--animate .disclosure__collapse-sheet { overflow: visible; } .disclosure__body { padding: 0 var(--space-lg) var(--space-md); font-size: var(--text-sm); color: var(--color-ink-secondary); line-height: var(--leading-prose); border-top: 1px solid var(--color-border); } .disclosure__body p { margin: var(--space-sm) 0 0; } .disclosure__body p:first-child { margin-top: var(--space-sm); } .beta-tag { font-family: var(--font-display); font-weight: 700; font-size: 0.75rem; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--color-brand); } /* ——— Buttons ——— */ .actions { display: flex; flex-wrap: wrap; gap: var(--space-sm); margin-top: clamp(var(--space-md), 2vw, var(--space-lg)); } .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2xs); font-family: var(--font-display); font-weight: 600; font-size: 0.9375rem; line-height: 1.2; padding: 0.65rem 1.15rem; border-radius: var(--radius-md); border: 1px solid transparent; cursor: pointer; text-decoration: none; transition: background-color 0.14s var(--ease-out), color 0.14s var(--ease-out), border-color 0.14s var(--ease-out), transform 0.14s var(--ease-out); } .btn:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); } .btn--primary { color: var(--color-on-brand); background: var(--color-brand); border-color: color-mix(in oklch, var(--color-brand) 78%, var(--color-ink)); box-shadow: 0 1px 0 color-mix(in oklch, var(--color-on-brand) 22%, transparent), 0 3px 0 color-mix(in oklch, var(--color-brand-active) 55%, var(--color-ink)); } .btn--primary:hover { background: var(--color-brand-hover); border-color: var(--color-brand-hover); color: var(--color-on-brand); transform: translateY(-2px); box-shadow: 0 1px 0 color-mix(in oklch, var(--color-on-brand) 28%, transparent), 0 5px 0 color-mix(in oklch, var(--color-brand-active) 45%, var(--color-ink)), 0 14px 28px color-mix(in oklch, var(--color-brand) 22%, transparent); } .btn--primary:active { background: var(--color-brand-active); border-color: var(--color-brand-active); color: var(--color-on-brand); transform: translateY(1px); box-shadow: 0 1px 0 color-mix(in oklch, var(--color-on-brand) 15%, transparent); } .btn--secondary { color: var(--color-ink-secondary); background: transparent; border-color: var(--color-border); } .btn--secondary:hover { background: var(--color-subtle); border-color: var(--color-border-hover); transform: translateY(-1px); } .btn--secondary:active { transform: translateY(1px); } /* ——— Sections ——— */ .section { padding-block: var(--section-y); } .section--tight-top { padding-top: var(--section-y-tight); padding-bottom: clamp(var(--space-lg), 3.5vw, var(--space-2xl)); } .section--faq { padding-bottom: clamp(3.25rem, 6vw, 5rem); } .section__head { margin-bottom: clamp(var(--space-lg), 2.8vw, var(--space-xl)); max-width: 65ch; } /* Privacy dark band */ .section--dark { background-color: var(--color-dark-canvas); /* Light mode: gentle brand glow on apricot base */ background-image: radial-gradient(ellipse 125% 72% at 100% 0%, color-mix(in oklch, var(--color-brand) 13%, transparent) 0%, transparent 56%), radial-gradient(ellipse 100% 58% at 0% 100%, oklch(70% 0.06 38 / 0.09), transparent 52%); color: var(--color-dark-ink); padding-block: calc(var(--space-3xl) + var(--space-md)); border-block: 1px solid var(--color-dark-border); } .section--dark .eyebrow { color: color-mix(in oklch, var(--color-brand) 34%, var(--color-ink-muted)); } .section--dark .heading-xl { color: var(--color-dark-ink); } .section--dark .heading-md { color: var(--color-dark-ink); } .section--dark h4.heading-md { font-size: var(--text-sm); font-weight: 700; letter-spacing: -0.01em; color: color-mix(in oklch, var(--color-dark-ink) 92%, var(--color-dark-ink-secondary)); } .section--dark .prose { color: var(--color-dark-ink-secondary); line-height: var(--leading-prose-dark); } .section--dark a { color: color-mix(in oklch, var(--color-dark-ink) 88%, var(--color-brand)); } .section--dark a:hover { color: color-mix(in oklch, var(--color-dark-ink) 70%, var(--color-brand)); } @media (prefers-color-scheme: dark) { .section--dark { background-image: radial-gradient(ellipse 120% 70% at 100% 0%, oklch(38% 0.06 48 / 0.4), transparent 52%), radial-gradient(ellipse 90% 55% at 0% 100%, oklch(32% 0.07 38 / 0.35), transparent 48%); } .section--dark .eyebrow { color: oklch(76% 0.055 55); } } .split { display: grid; gap: var(--space-xl); } @media (min-width: 800px) { .split { grid-template-columns: 1fr 1fr; gap: var(--space-2xl); } } .split h3, .split h4 { margin-top: 0; } /* Install callout — container query */ .install-wrap { container-type: inline-size; container-name: install; } .install-panel { margin-top: var(--space-xl); padding: var(--space-xl); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); display: grid; gap: var(--space-lg); } @container install (min-width: 560px) { .install-panel { grid-template-columns: 1fr 1fr; align-items: start; } } .install-panel h3 { margin: 0 0 var(--space-xs); } .install-panel ol { margin: 0; padding-left: 1.1em; color: var(--color-ink-secondary); font-size: var(--text-sm); line-height: var(--leading-prose); display: flex; flex-direction: column; gap: var(--space-sm); } /* Footer */ .site-footer { padding-block: clamp(var(--space-lg), 3vw, var(--space-xl)); border-top: 1px solid var(--color-border); margin-top: clamp(var(--space-2xl), 5vw, var(--space-3xl)); } .footer-inner { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-md) var(--space-xl); font-size: var(--text-sm); color: var(--color-ink-secondary); } .footer-brand-block { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-xs); min-width: min(100%, 16rem); } .footer-brand-block .brand-lockup { color: var(--color-ink); } .footer-whisper { margin: 0; max-width: 22rem; font-size: 0.8125rem; line-height: var(--leading-ui); color: var(--color-ink-muted); letter-spacing: -0.01em; } /* ——— Motion: staggered reveal (first load — opacity + transform, smooth ease-out) ——— */ .reveal-group { --stagger: 0.09s; } .reveal-item { animation: reveal-in var(--duration-enter) var(--ease-reveal) both; animation-delay: calc(var(--i, 0) * var(--stagger)); } @keyframes reveal-in { from { opacity: 0; transform: translateY(1.125rem); } to { opacity: 1; transform: translateY(0); } } @media (prefers-reduced-motion: reduce) { .reveal-item { animation: none !important; opacity: 1 !important; transform: none !important; } .reveal-scroll { opacity: 1 !important; transform: none !important; animation: none !important; } .disclosure.disclosure--animate > .disclosure__collapse, .faq-disclosure.faq-disclosure--animate > .faq-disclosure__collapse { transition-duration: 0.01ms; } .disclosure summary::after, .faq-disclosure summary::after { transition-duration: 0.01ms; } .install-timeline__link, .install-snippet-copy, .editorial-block, .nav a, .footer-links a, .brand-lockup, .hero-highlights li, .site-header, .site-header::after, html.site-nav-floated::before { transition: none; animation: none !important; } .editorial-block:hover, .nav a:hover, .footer-links a:hover, .brand-lockup:hover, .install-timeline__link:hover { transform: none; } .brand-lockup:hover .brand-lockup__mark { transform: none; } .hero-highlights li:hover .hero-highlights__icon svg { transform: none; } .install-snippet-copy__icon { transition: opacity 0.01ms; } } /* ========= Redesign: masthead hero + proof, install journey, editorial ========= */ .site-header__tagline { display: none; margin: 0; padding-bottom: var(--space-xs); font-size: var(--text-xs); font-family: var(--font-display); font-weight: 600; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--color-ink-muted); border-top: 1px solid color-mix(in oklch, var(--color-border) 70%, transparent); padding-top: var(--space-2xs); } @media (min-width: 900px) { .site-header__tagline { display: block; } } .deck { font-family: var(--font-display); font-size: clamp(1.2rem, 1.85vw + 0.7rem, 1.6rem); font-weight: 600; line-height: var(--leading-ui); letter-spacing: -0.018em; color: var(--color-ink); max-width: 28em; margin: 0 0 var(--space-sm); } /* Hero: light wit — journalism-flavored, not gimmicky */ .hero-whisper { margin: 0; font-family: var(--font-body); font-size: clamp(0.9375rem, 0.35vw + 0.88rem, 1.0625rem); font-weight: 500; line-height: var(--leading-ui); color: color-mix(in oklch, var(--color-brand) 28%, var(--color-ink-muted)); letter-spacing: -0.01em; } .lede--tight { max-width: 32em; font-size: var(--text-sm); } .hero-mast { position: relative; isolation: isolate; /* Breathing room under the header without pushing the headline down the tall demo column */ padding-top: clamp(var(--space-md), 2.25vw + 0.65rem, var(--space-xl)); padding-bottom: var(--section-y-hero-tail); border-bottom: 1px solid var(--color-border); background: radial-gradient(ellipse 85% 65% at 0% 0%, var(--color-brand-soft), transparent 58%), linear-gradient( 168deg, color-mix(in oklch, var(--color-surface) 55%, var(--color-canvas)) 0%, var(--color-canvas) 42%, color-mix(in oklch, var(--color-subtle) 88%, var(--color-canvas)) 100% ); } /* Nav overlays the mast paint; reserve vertical space for the sticky header strip */ .hero-shell > .hero-mast { padding-top: calc(3.5rem + clamp(var(--space-md), 2.25vw + 0.65rem, var(--space-xl))); } .hero-mast .eyebrow { color: color-mix(in oklch, var(--color-brand) 42%, var(--color-ink-muted)); } .hero-mast__copy { display: flex; flex-direction: column; align-items: flex-start; gap: clamp(var(--space-xs), 1.5vw, var(--space-sm)); } .hero-mast__copy .display-hero, .hero-mast__copy .deck, .hero-mast__copy .lede, .hero-mast__copy .hero-whisper { margin: 0; } .hero-mast__copy .actions { margin-top: clamp(var(--space-sm), 1.5vw, var(--space-md)); } .hero-mast__copy .hero-highlights + .actions { margin-top: clamp(var(--space-xs), 1.2vw, var(--space-sm)); } .hero-highlights { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2xs); max-width: min(22rem, 100%); } .hero-highlights li { display: grid; grid-template-columns: 1.375rem 1fr; gap: var(--space-sm); align-items: center; font-family: var(--font-display); font-size: var(--text-sm); font-weight: 600; letter-spacing: -0.012em; line-height: var(--leading-ui); color: var(--color-ink-secondary); border-radius: var(--radius-sm); margin-inline: calc(var(--space-2xs) * -1); padding: var(--space-3xs) var(--space-2xs); transition: color 0.22s var(--ease-out), background-color 0.22s var(--ease-out); } .hero-highlights li:hover { color: var(--color-ink); background: color-mix(in oklch, var(--color-brand-soft) 55%, transparent); } .hero-highlights__icon { display: flex; align-items: center; justify-content: center; width: 1.375rem; height: 1.375rem; flex-shrink: 0; color: color-mix(in oklch, var(--color-brand) 58%, var(--color-ink-muted)); } .hero-highlights__icon svg { display: block; width: 1.125rem; height: 1.125rem; } @media (prefers-reduced-motion: no-preference) { .hero-highlights__icon svg { transition: transform 0.26s var(--ease-out); } .hero-highlights li:hover .hero-highlights__icon svg { transform: scale(1.07) rotate(-6deg); } } .hero-mast__copy > p:not(.eyebrow):not(.deck):not(.lede):not(.hero-whisper) { margin: 0; } .hero-mast__grid { display: grid; gap: var(--space-xl); align-items: stretch; } @media (min-width: 960px) { .hero-mast__grid { grid-template-columns: minmax(0, 1.02fr) minmax(320px, 1.12fr); gap: clamp(var(--space-2xl), 4vw, var(--space-3xl)); /* Top-align copy with the demo — centering pushed the splash block halfway down the tall iframe */ align-items: start; } } .hero-proof { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 0; } /* One composed column: embedded demo frame */ .hero-proof__column { display: flex; flex-direction: column; align-items: stretch; width: fit-content; max-width: 100%; margin-inline: auto; gap: var(--space-xs); } .hero-proof__demo-wrap { width: 100%; max-width: 100%; } .hero-proof__frame { border-radius: var(--radius-md); border: 1px solid var(--color-border); background: var(--color-surface); overflow: hidden; box-shadow: 0 1px 0 var(--shadow-card-edge), 0 18px 48px var(--shadow-card-soft); } .hero-proof__frame img { width: 100%; height: auto; display: block; } /* Demo: one surface only — no outer “device frame”; shadow reads like a browser popup. */ .hero-proof__frame--demo { padding: 0; display: flex; justify-content: center; align-items: flex-start; background: transparent; border: none; border-radius: 0; box-shadow: none; overflow: visible; animation: none; } .extension-demo { display: block; width: 400px; max-width: 100%; height: 560px; margin: 0 auto; border: 0; border-radius: 12px; color-scheme: light dark; box-shadow: var(--shadow-popup); } /* Hero: softer elevation on the embedded demo */ .hero-proof .extension-demo { box-shadow: 0 0 0 1px color-mix(in oklch, var(--color-brand) 14%, oklch(0% 0 0 / 0.05)), 0 4px 12px oklch(0% 0 0 / 0.05), 0 12px 28px oklch(0% 0 0 / 0.07); } @media (max-width: 440px) { .hero-proof__frame--demo { justify-content: flex-start; overflow-x: auto; overflow-y: visible; } .extension-demo { max-width: none; } } @media (prefers-reduced-motion: no-preference) { .hero-proof__frame:not(.hero-proof__frame--demo) { animation: hero-frame-in 0.95s var(--ease-reveal) both; animation-delay: 0.14s; } @keyframes hero-frame-in { from { opacity: 0; transform: translateY(1.125rem) scale(0.988); } to { opacity: 1; transform: translateY(0) scale(1); } } } @media (prefers-reduced-motion: reduce) { .hero-proof__frame:not(.hero-proof__frame--demo) { animation: none; } } .section--install { position: relative; isolation: isolate; padding-top: clamp(var(--space-2xl), 5vw, var(--space-3xl)); padding-bottom: var(--section-y-room); background: radial-gradient(ellipse 70% 55% at 100% 12%, var(--color-brand-soft), transparent 52%), radial-gradient(ellipse 55% 45% at 0% 88%, color-mix(in oklch, var(--color-subtle) 65%, var(--color-canvas)), transparent 50%), var(--color-canvas); border-top: 1px solid color-mix(in oklch, var(--color-border) 80%, transparent); } #install-browser-details { scroll-margin-top: clamp(4.5rem, 12vh, 7rem); } .section__head--install { margin-bottom: clamp(var(--space-md), 2vw, var(--space-lg)); } .install-deck { margin: clamp(var(--space-xs), 1.5vw, var(--space-sm)) 0 0; max-width: 38rem; font-family: var(--font-display); font-size: clamp(0.9375rem, 0.35vw + 0.86rem, 1.0625rem); font-weight: 600; line-height: var(--leading-ui); letter-spacing: -0.015em; color: color-mix(in oklch, var(--color-ink-secondary) 55%, var(--color-ink)); } /* Install: rail + markers (no heavy side stripe on the list) */ .install-timeline { list-style: none; margin: 0 0 clamp(var(--space-xl), 4vw, var(--space-2xl)); padding: 0; display: flex; flex-direction: column; gap: clamp(var(--space-lg), 3vw, var(--space-xl)); } .install-timeline__step { display: grid; grid-template-columns: clamp(2.5rem, 4.2vw, 3.15rem) minmax(0, 1fr); column-gap: clamp(var(--space-md), 2.5vw, var(--space-lg)); align-items: stretch; } .install-timeline__rail { display: flex; flex-direction: column; align-items: center; padding-top: 0.2rem; min-width: 0; } .install-timeline__marker { display: grid; place-items: center; width: 2.35rem; height: 2.35rem; border-radius: 50%; flex-shrink: 0; font-family: var(--font-display); font-weight: 700; font-size: 0.9375rem; letter-spacing: -0.04em; line-height: 1; color: var(--color-on-brand); background: var(--color-brand); box-shadow: 0 0 0 2px color-mix(in oklch, var(--color-canvas) 88%, var(--color-brand)), 0 6px 18px color-mix(in oklch, var(--color-brand) 22%, transparent); } .install-timeline__step:not(:last-child) .install-timeline__rail::after { content: ""; flex: 1 1 auto; width: 1px; margin-top: var(--space-xs); min-height: clamp(1.25rem, 3vw, 2rem); background: linear-gradient( 180deg, color-mix(in oklch, var(--color-brand) 42%, var(--color-border)) 0%, color-mix(in oklch, var(--color-brand) 8%, var(--color-border)) 100% ); } .install-timeline__content { display: flex; flex-direction: column; gap: var(--space-sm); max-width: 72ch; min-width: 0; padding-bottom: var(--space-2xs); } .install-timeline__kicker { margin: 0; font-family: var(--font-display); font-size: var(--text-xs); font-weight: 700; letter-spacing: var(--tracking-label); text-transform: uppercase; color: color-mix(in oklch, var(--color-brand) 38%, var(--color-ink-muted)); } .install-timeline__title { margin: calc(var(--space-3xs) * -1) 0 0; font-family: var(--font-display); font-weight: 600; font-size: var(--text-md); letter-spacing: -0.02em; line-height: var(--leading-tight); color: var(--color-ink); } .install-timeline__body { margin: 0; font-size: var(--text-sm); color: var(--color-ink-secondary); line-height: var(--leading-prose); } .install-timeline__body--compact { line-height: var(--leading-ui); } .install-timeline__body--muted { color: var(--color-ink-muted); font-size: 0.8125rem; } .install-timeline__body code { padding: 0.12em 0.32em; border-radius: 4px; font-size: 0.92em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; background: color-mix(in oklch, var(--color-ink) 6%, var(--color-surface)); border: 1px solid color-mix(in oklch, var(--color-border) 88%, var(--color-ink)); color: var(--color-ink); } .install-snippet-wrap { position: relative; max-width: 100%; } .install-snippet-wrap .install-timeline__snippet { padding-block: var(--space-md); padding-inline: var(--space-md) clamp(2.65rem, 10vw, 3.25rem); } .install-snippet-live { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .install-snippet-copy { position: absolute; top: var(--space-xs); right: var(--space-xs); z-index: 2; display: grid; place-items: center; width: 2.125rem; height: 2.125rem; margin: 0; padding: 0; color: color-mix(in oklch, var(--color-ink-muted) 88%, var(--color-ink)); background: color-mix(in oklch, var(--color-surface) 92%, transparent); border: 1px solid color-mix(in oklch, var(--color-border) 72%, transparent); border-radius: var(--radius-sm); cursor: pointer; box-shadow: 0 1px 2px oklch(0% 0 0 / 0.04); opacity: 0; pointer-events: none; transition: opacity 0.22s var(--ease-out), color 0.18s var(--ease-out), background-color 0.18s var(--ease-out), border-color 0.18s var(--ease-out), box-shadow 0.18s var(--ease-out); } .install-snippet-copy__icon { grid-area: 1 / 1; display: flex; align-items: center; justify-content: center; transition: opacity 0.2s var(--ease-out), transform 0.22s var(--ease-out), color 0.18s var(--ease-out); } .install-snippet-copy__icon svg { display: block; } .install-snippet-copy__icon--copy { transform: scale(1); } .install-snippet-copy__icon--check { opacity: 0; transform: scale(0.88); color: var(--color-brand); } .install-snippet-wrap.is-copied .install-snippet-copy__icon--copy { opacity: 0; transform: scale(0.88); } .install-snippet-wrap.is-copied .install-snippet-copy__icon--check { opacity: 1; transform: scale(1); } @media (hover: hover) and (pointer: fine) { .install-snippet-wrap:is(:hover, :focus-within) .install-snippet-copy, .install-snippet-wrap.is-copied .install-snippet-copy { opacity: 1; pointer-events: auto; } } @media (hover: none), (pointer: coarse) { .install-snippet-copy { opacity: 0.72; pointer-events: auto; } .install-snippet-wrap:is(:hover, :focus-within) .install-snippet-copy, .install-snippet-wrap.is-copied .install-snippet-copy { opacity: 1; } } .install-snippet-copy:hover { color: var(--color-ink); border-color: color-mix(in oklch, var(--color-brand) 32%, var(--color-border)); background: color-mix(in oklch, var(--color-brand-soft) 38%, var(--color-surface)); box-shadow: 0 2px 8px color-mix(in oklch, var(--color-brand) 7%, transparent); } .install-snippet-copy:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); } .install-timeline__snippet { margin: 0; padding: var(--space-sm) var(--space-md); border-radius: var(--radius-md); background: color-mix(in oklch, var(--color-ink) 5.5%, var(--color-surface)); border: 1px solid color-mix(in oklch, var(--color-border) 85%, var(--color-ink)); font-size: 0.8125rem; line-height: 1.55; overflow-x: auto; -webkit-overflow-scrolling: touch; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } .install-timeline__snippet code { font-family: inherit; font-size: inherit; color: var(--color-ink); white-space: pre; word-break: normal; } .install-browser-split { display: grid; gap: var(--space-md); margin-top: var(--space-2xs); } @media (min-width: 640px) { .install-browser-split { grid-template-columns: 1fr 1fr; gap: var(--space-lg); align-items: start; } } .install-browser-split__col { margin: 0; padding-top: var(--space-sm); border-top: 1px solid color-mix(in oklch, var(--color-brand) 18%, var(--color-border)); } .install-browser-split__tag { margin: 0 0 var(--space-2xs); font-family: var(--font-display); font-size: var(--text-xs); font-weight: 700; letter-spacing: var(--tracking-label); text-transform: uppercase; color: color-mix(in oklch, var(--color-brand) 48%, var(--color-ink-muted)); } .install-timeline__link { font-family: var(--font-display); font-weight: 600; font-size: 0.8125rem; align-self: flex-start; margin-top: var(--space-2xs); transition: color 0.18s var(--ease-out); } .install-timeline__link:hover { color: color-mix(in oklch, var(--color-brand) 55%, var(--color-ink)); } .install-timeline__anchor { font-weight: 600; text-decoration: underline; text-underline-offset: 0.14em; } .disclosure--install { background: color-mix(in oklch, var(--color-surface) 55%, var(--color-canvas)); border-color: color-mix(in oklch, var(--color-brand) 14%, var(--color-border)); } .disclosure--install summary { font-size: var(--text-md); letter-spacing: -0.012em; } .disclosure--install[open] { box-shadow: 0 12px 36px color-mix(in oklch, var(--color-brand) 6%, transparent); } @media (prefers-color-scheme: dark) { .section--install { background: radial-gradient(ellipse 68% 52% at 100% 8%, color-mix(in oklch, var(--color-brand) 16%, transparent), transparent 54%), radial-gradient(ellipse 50% 42% at 0% 92%, color-mix(in oklch, var(--color-subtle) 45%, transparent), transparent 48%), var(--color-canvas); } .install-timeline__marker { box-shadow: 0 0 0 2px color-mix(in oklch, var(--color-canvas) 55%, var(--color-brand)), 0 8px 22px oklch(0% 0 0 / 0.35); } .install-snippet-copy { color: color-mix(in oklch, var(--color-ink-muted) 92%, var(--color-ink)); background: color-mix(in oklch, var(--color-canvas) 78%, var(--color-subtle)); border-color: color-mix(in oklch, var(--color-border) 80%, transparent); box-shadow: 0 1px 3px oklch(0% 0 0 / 0.35); } .install-snippet-copy:hover { background: color-mix(in oklch, var(--color-brand-soft) 28%, var(--color-subtle)); box-shadow: 0 2px 12px oklch(0% 0 0 / 0.42); } .disclosure--install[open] { box-shadow: 0 14px 40px oklch(0% 0 0 / 0.38); } } .section--editorial { padding-block: clamp(var(--space-2xl), 5vw, var(--space-3xl)) var(--section-y-room); } .section--editorial .section__head { margin-bottom: clamp(var(--space-xl), 3.5vw, var(--space-2xl)); } .editorial-grid { display: grid; gap: clamp(var(--space-lg), 3vw, var(--space-xl)); } @media (min-width: 800px) { .editorial-grid { grid-template-columns: 1.18fr 0.92fr 0.92fr; gap: clamp(var(--space-lg), 3vw, var(--space-xl)); align-items: start; } } .editorial-block { padding-top: var(--space-lg); border-top: 3px solid color-mix(in oklch, var(--color-brand) 52%, var(--color-border)); transition: border-color 0.24s var(--ease-out), transform 0.26s var(--ease-out); } .editorial-block:hover { border-top-color: color-mix(in oklch, var(--color-brand) 72%, var(--color-border)); transform: translateY(-2px); } .editorial-block p { margin: var(--space-sm) 0 0; font-size: clamp(0.9375rem, 0.35vw + 0.88rem, 1.0625rem); line-height: var(--leading-prose); color: var(--color-ink-secondary); } @media (min-width: 800px) { .editorial-block:first-child .heading-md { font-size: clamp(1.2rem, 0.9vw + 1rem, 1.45rem); } } .usage-flow { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0; } .usage-flow li { display: grid; grid-template-columns: auto 1fr; gap: clamp(var(--space-md), 2vw, var(--space-lg)); padding-block: clamp(var(--space-md), 2.5vw, var(--space-xl)); padding-inline: 0; border-top: 1px solid var(--color-border); border-radius: var(--radius-md); transition: background-color 0.22s var(--ease-out); } .usage-flow li:hover { background: color-mix(in oklch, var(--color-subtle) 45%, var(--color-canvas)); } .usage-flow li:last-child { border-bottom: 1px solid var(--color-border); } .usage-flow__label { font-family: var(--font-display); font-weight: 700; font-size: var(--text-sm); color: var(--color-brand); letter-spacing: 0.04em; } .usage-flow p { margin: var(--space-2xs) 0 0; font-size: var(--text-sm); color: var(--color-ink-secondary); line-height: var(--leading-prose); } .usage-afterword { margin: clamp(var(--space-lg), 3vw, var(--space-xl)) 0 0; max-width: 62ch; font-size: var(--text-sm); line-height: var(--leading-prose); color: var(--color-ink-secondary); } .section__head--privacy { margin-bottom: clamp(var(--space-md), 2vw, var(--space-lg)); } .privacy-stack { display: flex; flex-direction: column; gap: clamp(var(--space-xl), 4vw, var(--space-2xl)); padding-top: clamp(var(--space-lg), 3vw, var(--space-xl)); border-top: 1px solid color-mix(in oklch, var(--color-dark-border) 72%, transparent); } .privacy-point { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(var(--space-md), 2.5vw, var(--space-lg)); align-items: start; padding: clamp(var(--space-xs), 1.5vw, var(--space-sm)) clamp(var(--space-sm), 2vw, var(--space-md)); margin-inline: calc(var(--space-sm) * -1); border-radius: var(--radius-md); transition: background-color 0.22s var(--ease-out); } @media (prefers-reduced-motion: reduce) { .privacy-point { transition: none; } } .privacy-point:hover { background-color: color-mix(in oklch, var(--color-dark-subtle) 38%, transparent); } .privacy-point__step { font-family: var(--font-display); font-weight: 700; font-size: var(--text-sm); letter-spacing: 0.05em; line-height: 1.2; padding-top: 0.28rem; color: color-mix(in oklch, var(--color-brand) 58%, var(--color-dark-ink-secondary)); } .privacy-point__body { min-width: 0; } .privacy-point__body > .heading-md { margin-bottom: var(--space-2xs); } .privacy-point__body > .prose { margin: 0; } .privacy-point__body > .prose p { margin: 0; max-width: 62ch; } .split--privacy { margin-top: clamp(var(--space-md), 2.2vw, var(--space-lg)); } .split--privacy .prose { max-width: none; } .split--privacy .prose p { margin-top: var(--space-2xs); } .prose--dark p { color: var(--color-dark-ink-secondary); } .privacy-kicker { margin: clamp(var(--space-2xl), 5vw, var(--space-3xl)) 0 0; padding-top: clamp(var(--space-lg), 3vw, var(--space-xl)); border-top: 1px solid color-mix(in oklch, var(--color-dark-border) 62%, transparent); font-family: var(--font-display); font-weight: 700; font-size: var(--text-md); letter-spacing: -0.02em; line-height: var(--leading-ui); max-width: 42ch; color: var(--color-dark-ink); } .faq-stack { display: flex; flex-direction: column; gap: clamp(var(--space-sm), 1.5vw, var(--space-md)); } .faq-disclosure { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); overflow: hidden; } .faq-disclosure summary { cursor: pointer; list-style: none; padding: var(--space-md) var(--space-lg); font-family: var(--font-display); font-weight: 600; font-size: var(--text-md); color: var(--color-ink); display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); transition: background-color 0.22s var(--ease-out), color 0.18s var(--ease-out); } .faq-disclosure summary:hover { background: color-mix(in oklch, var(--color-subtle) 70%, var(--color-surface)); } .faq-disclosure summary:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); border-radius: var(--radius-sm); } .faq-disclosure summary:active { background: color-mix(in oklch, var(--color-subtle) 88%, var(--color-surface)); } .faq-disclosure summary::-webkit-details-marker { display: none; } .faq-disclosure summary::after { content: "+"; font-weight: 700; color: var(--color-brand); flex-shrink: 0; transition: transform var(--duration-disclosure) var(--ease-out-disclosure); transform: rotate(0deg); } .faq-disclosure[open] summary::after { transform: rotate(45deg); } .faq-disclosure.faq-disclosure--animate > .faq-disclosure__collapse { display: block; max-height: 0; overflow: hidden; transition: max-height var(--duration-disclosure) var(--ease-out-disclosure); } .faq-disclosure.faq-disclosure--animate[open] > .faq-disclosure__collapse { max-height: var(--faq-collapse-max); } .faq-disclosure.faq-disclosure--animate .faq-disclosure__collapse-sheet { overflow: visible; } .faq-disclosure__body { padding: 0 var(--space-lg) var(--space-md); border-top: 1px solid var(--color-border); } .faq-disclosure__body p { margin: var(--space-sm) 0 0; font-size: var(--text-sm); color: var(--color-ink-secondary); line-height: var(--leading-prose); } .footer-links { display: flex; flex-wrap: wrap; gap: var(--space-sm) var(--space-lg); } .footer-links a { transition: color 0.18s var(--ease-out), transform 0.22s var(--ease-out); } .footer-links a:hover { transform: translateY(-1px); } /* ——— Scroll-driven section entrances (soft settle: small slide, gentle opacity lift) ——— */ .reveal-scroll { opacity: 1; transform: none; } @keyframes reveal-scroll-enter { from { opacity: 0.82; transform: translateY(1rem); } to { opacity: 1; transform: translateY(0); } } @media (prefers-reduced-motion: no-preference) { @supports (animation-timeline: view(block)) { .reveal-scroll { opacity: 0.82; transform: translateY(1rem); /* Scroll timeline drives progress; ease maps scroll position → keyframes for a soft finish */ animation: reveal-scroll-enter linear forwards; animation-timeline: view(block); animation-range: entry 8% cover 52%; animation-timing-function: var(--ease-reveal); } } @supports not (animation-timeline: view(block)) { .reveal-scroll:not(.reveal-scroll--visible) { opacity: 0.82; transform: translateY(1rem); } .reveal-scroll.reveal-scroll--visible { opacity: 1; transform: none; transition: opacity 0.55s var(--ease-reveal), transform 0.62s var(--ease-reveal); } } }