/* ── the design system, inlined (packages/tokens + the registry section system) ── */
/* =============================================================================
   Leadværk — FONTS, self-hosted
   -----------------------------------------------------------------------------
   The design guide imported Figtree and JetBrains Mono from
   `fonts.googleapis.com` (demo-v2/leadvaerk.css:11). Production must not:

     · it is a render-blocking third-party round trip on the critical path,
       paid for in LCP on every customer site;
     · it leaks every visitor's IP to Google, which on a Danish customer site
       is a GDPR exposure we would be creating on the customer's behalf;
     · LPH already solved this the hard way — its `saas` ThemeLayout gates the
       Google Fonts injection on `window.__lphConsent.personalization`, i.e. on
       consent, which means the typeface does not load at all for the
       ~majority of visitors who decline. Self-hosting removes the consent
       question entirely: a font served from our own origin is not a third
       party and needs no permission.

   Files live in `packages/tokens/assets/fonts/` as woff2, subset to
   `latin` + `latin-ext` (Danish needs æ ø å — latin alone drops them).
   Variable fonts where available: one file per family, not one per weight.

   The two `<link rel="preload">` tags belong in the document head, before the
   stylesheet, for the two faces that paint above the fold:

     <link rel="preload" as="font" type="font/woff2" crossorigin
           href="/fonts/figtree-var-latin-ext.woff2">
     <link rel="preload" as="font" type="font/woff2" crossorigin
           href="/fonts/jetbrains-mono-var-latin-ext.woff2">
   ========================================================================== */

@font-face {
  font-family: 'Figtree';
  src: url('/fonts/figtree-var-latin-ext.woff2') format('woff2-variations');
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
  /* latin + latin-ext: U+00C6/U+00E6 (Æ æ), U+00D8/U+00F8 (Ø ø),
     U+00C5/U+00E5 (Å å) all fall inside the latin block; latin-ext is carried
     for Slovak/Polish customer names in CMS content. */
  unicode-range:
    U+0000-00FF, U+0100-017F, U+0180-024F,
    U+0259, U+1E00-1EFF, U+2000-206F, U+2074, U+20AC,
    U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('/fonts/jetbrains-mono-var-latin-ext.woff2') format('woff2-variations');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0000-00FF, U+0100-017F, U+0180-024F,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD;
}

/* Metric-compatible fallback so `font-display: swap` does not reflow the page.
   Figtree's metrics are close to Segoe UI / system-ui at these overrides. */
@font-face {
  font-family: 'Figtree Fallback';
  src: local('Segoe UI'), local('Helvetica Neue'), local('Arial');
  ascent-override: 96%;
  descent-override: 24%;
  line-gap-override: 0%;
  size-adjust: 102%;
}

/* =============================================================================
   Leadværk — LAYER 1: PRIMITIVES
   -----------------------------------------------------------------------------
   Raw values. Theme-independent. Named by position on a scale, NEVER by role.
   Nothing in the product references these directly — `semantic.css` maps them
   onto roles and everything else uses the roles.

   The colour ramp is not invented. It is sampled from the brand assets:
     /home/ian/inspiration/leadvaerk/Leadvaerk_1.webp   (horizontal wordmark)
     /home/ian/inspiration/leadvaerk/Leadvaerk_avatar.webp (monogram disc)
   Sampling method and the per-stop sRGB values are recorded in
     docs/design/brand-mark.md
   Do not "adjust" a brand stop without re-sampling and updating that document.

   Every value that carries text is gated by tools/contrast/check-contrast.mjs.
   ========================================================================== */

:root {
  /* ─────────────────────────────────────────────────────────────────────────
     BRAND RAMP — navy → teal, the mark's own gradient
     Measured stops (sRGB → OKLCH):
       #082245  oklch(25.5% 0.073 257)   wordmark letterforms
       #022b66  oklch(30.4% 0.113 259)   ligature start
       #055183  oklch(42.1% 0.106 246)   ligature mid
       #006987  oklch(48.5% 0.093 226)   ligature 3/4
       #008a96  oklch(57.8% 0.099 206)   ligature teal
       #009396  oklch(60.2% 0.102 197)   avatar teal terminal
     The scale below interpolates and extends that ramp in OKLCH so lightness
     steps are perceptually even. Chroma stays low (0.07–0.11) on purpose —
     see .impeccable.md §4: the system's interest comes from the rim, not from
     saturated fills.
     ───────────────────────────────────────────────────────────────────────── */

  --lv-navy-950: oklch(19% 0.055 258);
  --lv-navy-900: oklch(25.5% 0.073 257);  /* ← measured: wordmark ink */
  --lv-navy-800: oklch(30.5% 0.107 258);  /* ← measured: ligature start */
  --lv-navy-700: oklch(34% 0.100 252);
  --lv-navy-600: oklch(37% 0.101 248);
  --lv-navy-500: oklch(42% 0.106 246);    /* ← measured: ligature mid */

  --lv-teal-800: oklch(40% 0.096 232);
  --lv-teal-700: oklch(48.5% 0.093 226);  /* ← measured: ligature 3/4 */
  --lv-teal-600: oklch(53% 0.094 208);    /* ramp terminal — contrast-capped */
  --lv-teal-500: oklch(57.8% 0.099 206);  /* ← measured: ligature teal */
  --lv-teal-400: oklch(60.2% 0.102 197);  /* ← measured: avatar terminal */
  --lv-teal-300: oklch(68% 0.093 200);
  --lv-teal-200: oklch(74% 0.088 198);
  --lv-teal-100: oklch(84% 0.062 196);
  --lv-teal-050: oklch(93% 0.028 198);

  /* Dark-theme mark ramp, following the `-inv` convention used by the slate
     ink stops above. The light ramp travels 25.5% → 42% → 57.8% in lightness,
     and re-lighting it for dark by keeping that 32-point span put the START at
     42% — measured at 1.52:1 against the dark glass rail, which composites to
     roughly 30% lightness. The æ ligature's navy end was therefore all but
     invisible, unmeasured, for the whole build.
     The fix is a SHORTER lightness travel, not a different identity: the hue
     path is unchanged (250 → 214 → 198, navy into teal) and the chroma stays
     inside the 0.07–0.11 band `.impeccable.md` §4 fixes. On a dark surface a
     ramp cannot start low; it can still travel. */
  --lv-navy-300-inv: oklch(62% 0.098 250);   /* dark-theme ligature start */
  --lv-teal-350-inv: oklch(68% 0.094 214);   /* dark-theme ligature mid */

  /* ─────────────────────────────────────────────────────────────────────────
     NEUTRAL RAMP — tinted toward the brand hue (chroma 0.006–0.055).
     A true grey next to a cool palette reads as dirt. These are the only
     "greys" in the system.
     ───────────────────────────────────────────────────────────────────────── */

  --lv-slate-000: oklch(99.2% 0.003 240);
  --lv-slate-025: oklch(97% 0.007 238);
  --lv-slate-050: oklch(96% 0.008 240);
  --lv-slate-100: oklch(92.5% 0.012 235);
  --lv-slate-200: oklch(88.5% 0.012 236);
  --lv-slate-300: oklch(78% 0.018 238);
  --lv-slate-400: oklch(58% 0.030 240);
  --lv-slate-500: oklch(51% 0.033 242);
  --lv-slate-600: oklch(44% 0.042 250);
  --lv-slate-700: oklch(34% 0.036 255);
  --lv-slate-750: oklch(28% 0.038 254);
  --lv-slate-800: oklch(24% 0.040 255);
  --lv-slate-850: oklch(19% 0.038 256);
  --lv-slate-900: oklch(14% 0.032 257);
  --lv-slate-050-inv: oklch(96% 0.008 230);   /* dark-theme primary ink */
  --lv-slate-150-inv: oklch(79% 0.020 230);   /* dark-theme secondary ink */
  --lv-slate-250-inv: oklch(72% 0.024 234);   /* dark-theme tertiary ink */
  --lv-slate-350-inv: oklch(60% 0.030 240);   /* dark-theme control boundary */

  /* ─────────────────────────────────────────────────────────────────────────
     STATUS PRIMITIVES — two lightness tiers, tuned per theme in semantic.css.
     `-t` = text tier (passes 4.5:1 on its theme's worst-case backdrop).
     `-s` = surface/fill tier (used only behind text, never as text).
     ───────────────────────────────────────────────────────────────────────── */

  --lv-ok-t-light:   oklch(45% 0.086 192);
  --lv-ok-s-light:   oklch(92% 0.045 190);
  --lv-ok-t-dark:    oklch(80% 0.110 185);
  --lv-ok-s-dark:    oklch(38% 0.078 187);

  --lv-warn-t-light: oklch(48% 0.134 55);
  --lv-warn-s-light: oklch(93% 0.055 80);
  --lv-warn-t-dark:  oklch(85% 0.130 82);
  --lv-warn-s-dark:  oklch(40% 0.090 68);

  --lv-bad-t-light:  oklch(50% 0.190 25);
  --lv-bad-s-light:  oklch(93% 0.034 22);
  --lv-bad-t-dark:   oklch(78% 0.126 24);
  --lv-bad-s-dark:   oklch(38% 0.110 24);

  /* ─────────────────────────────────────────────────────────────────────────
     REFRACTION SPECTRUM — the prismatic rim.
     Cool-biased: turquoise → aqua → azure → indigo, then ONE warm stop.
     .impeccable.md §4: the warm stop is the difference between "split light"
     and "a blue smear". It has exactly one use — this gradient. Never an
     accent, never a status colour.
     ───────────────────────────────────────────────────────────────────────── */

  --lv-spec-1: oklch(72% 0.115 195);  /* turquoise */
  --lv-spec-2: oklch(80% 0.105 172);  /* aqua-green */
  --lv-spec-3: oklch(74% 0.120 235);  /* azure */
  --lv-spec-4: oklch(70% 0.130 285);  /* indigo */
  --lv-spec-5: oklch(80% 0.095 55);   /* the one warm note */

  /* ─────────────────────────────────────────────────────────────────────────
     TYPE — Figtree (UI) + JetBrains Mono (figures). Both self-hosted; see
     fonts.css. .impeccable.md §4 bans the Google Fonts CDN import the demo
     used.
     ───────────────────────────────────────────────────────────────────────── */

  --lv-font-ui: 'Figtree', ui-sans-serif, system-ui, 'Segoe UI', sans-serif;
  --lv-font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', 'Cascadia Mono', monospace;

  /* 5 steps, ratio ≥1.25 between adjacent steps (17 → 24 → 38 → 56 is 1.41/1.58/1.47;
     the two small steps below body are the label tier). */
  --lv-text-2xs: 0.6875rem; /* 11px — nav labels, kbd chips, counters */
  --lv-text-xs:  0.78rem;   /* 12.5px — eyebrows, table headers, captions */
  --lv-text-sm:  0.9375rem; /* 15px — UI default: buttons, table cells, fields */
  --lv-text-md:  1.0625rem; /* 17px — body copy */
  --lv-text-lg:  1.5rem;    /* 24px — section headings, stat values */
  --lv-text-xl:  2.375rem;  /* 38px — page titles */
  --lv-text-2xl: 3.5rem;    /* 56px — marketing display */

  --lv-weight-regular: 400;
  --lv-weight-medium: 500;
  --lv-weight-semibold: 600;
  --lv-weight-bold: 700;
  --lv-weight-heading: 800;
  --lv-weight-mark: 900;

  --lv-leading-tight: 1.08;
  --lv-leading-snug: 1.35;
  --lv-leading-normal: 1.55;

  --lv-tracking-heading: -0.028em;
  --lv-tracking-label: -0.012em;
  --lv-tracking-eyebrow: 0.11em;
  --lv-tracking-num: -0.02em;

  --lv-measure: 68ch;   /* prose max-width — never wider */

  /* ─────────────────────────────────────────────────────────────────────────
     SPACE — 4pt scale
     ───────────────────────────────────────────────────────────────────────── */

  --lv-space-1: 4px;
  --lv-space-2: 8px;
  --lv-space-3: 12px;
  --lv-space-4: 16px;
  --lv-space-5: 24px;
  --lv-space-6: 32px;
  --lv-space-7: 48px;
  --lv-space-8: 64px;
  --lv-space-9: 96px;

  /* ─────────────────────────────────────────────────────────────────────────
     SHAPE
     ───────────────────────────────────────────────────────────────────────── */

  --lv-radius-sm: 10px;
  --lv-radius-md: 16px;
  --lv-radius-lg: 24px;
  --lv-radius-xl: 32px;
  --lv-radius-pill: 999px;

  /* ─────────────────────────────────────────────────────────────────────────
     MOTION — one curve for everything the user causes. No bounce, no spring.
     ───────────────────────────────────────────────────────────────────────── */

  --lv-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --lv-dur-instant: 120ms;
  --lv-dur-fast: 160ms;
  --lv-dur-state: 240ms;
  --lv-dur-panel: 420ms;
  --lv-dur-light: 450ms;  /* rim + bloom — light settles slowly */

  /* ─────────────────────────────────────────────────────────────────────────
     Z-LAYERS — systemic only. A number outside this list is a defect.
     ───────────────────────────────────────────────────────────────────────── */

  --lv-z-canvas: 0;
  --lv-z-sticky: 40;
  --lv-z-panel: 55;
  --lv-z-bar: 60;
  --lv-z-overlay: 80;
  --lv-z-palette: 85;
  --lv-z-toast: 95;
}

/* =============================================================================
   Leadværk — LAYER 2: SEMANTIC ROLES
   -----------------------------------------------------------------------------
   Maps primitives onto what things ARE. This is the layer product code reads.
   A component that references `--lv-navy-900` instead of `--lv-text-primary`
   is a defect: it cannot be re-themed and it is invisible to the contrast gate.

   Theming contract
   ----------------
     :root                       → light (default)
     :root[data-theme="dark"]    → dark, explicit
     @media (prefers-color-scheme: dark) :root:not([data-theme])  → dark, implicit
     :root[data-theme="light"]   → light, explicit (must beat the media query)

   The explicit attribute always wins over the OS preference, in BOTH
   directions — this is the rule the demo got right and most systems get wrong.

   Every foreground/background pair declared here is registered in
   tools/contrast/pairs.mjs and measured by tools/contrast/check-contrast.mjs.
   ========================================================================== */

:root,
:root[data-theme='light'] {
  color-scheme: light;

  /* ── Backdrop ──────────────────────────────────────────────────────────
     `canvas` is the page. `canvas-wash-*` are the three atmospheric radial
     gradients laid over it. Their alpha is capped at 0.22 because the wash
     is what determines the WORST-CASE backdrop every glass surface and every
     piece of canvas-level text is measured against (.impeccable.md §6).
     `canvas-worst` records that computed floor so the gate can read it. */
  --lv-canvas: var(--lv-slate-050);
  --lv-canvas-deep: var(--lv-slate-100);
  --lv-canvas-wash-a: oklch(84% 0.070 210);
  --lv-canvas-wash-b: oklch(80% 0.075 258);
  --lv-canvas-wash-c: oklch(86% 0.055 180);
  --lv-canvas-wash-alpha: 0.22;
  --lv-canvas-worst: oklch(93.3% 0.023 218);   /* = canvas + wash-a @ 0.22, computed */
  --lv-overlay-scrim: color-mix(in oklab, var(--lv-canvas-deep) 62%, transparent);

  /* ── Opaque surfaces — where all work happens (.impeccable.md §3) ────── */
  --lv-surface: var(--lv-slate-000);
  --lv-surface-raised: var(--lv-slate-025);
  --lv-surface-sunken: var(--lv-slate-050);

  /* ── Ink ───────────────────────────────────────────────────────────────
     Three text roles, and all three clear 4.5:1 against the worst-case
     canvas. There is no fourth, dimmer text role — "faint" in the demo was
     a 3.1:1 colour used for real text. `--lv-icon-quiet` and `--lv-line`
     exist for the non-text jobs that role was doing. */
  --lv-text-primary: var(--lv-navy-900);
  --lv-text-secondary: var(--lv-slate-600);
  --lv-text-tertiary: var(--lv-slate-500);
  --lv-text-on-brand: oklch(98% 0.008 205);
  --lv-text-link: var(--lv-teal-700);

  /* ── Lines and boundaries ──────────────────────────────────────────────
     `line` = decorative hairline between same-surface content. No contrast
       requirement (it separates, it does not identify).
     `line-control` = the boundary of an interactive control. WCAG 1.4.11
       requires 3:1 against what it sits on. Gated. */
  --lv-line: var(--lv-slate-200);
  --lv-line-strong: var(--lv-slate-300);
  --lv-line-control: var(--lv-slate-400);
  --lv-icon-quiet: var(--lv-slate-400);

  /* ── Brand ─────────────────────────────────────────────────────────────
     `--lv-ramp` is the mark's gradient and it is what primary actions carry
     (.impeccable.md §4). Its light terminal is capped at --lv-teal-600 so
     that `--lv-text-on-brand` clears 4.5:1 at the brightest point of the
     gradient — the demo's terminal was too light for its own button label. */
  --lv-brand: var(--lv-teal-700);
  --lv-brand-strong: var(--lv-navy-800);
  --lv-brand-soft: var(--lv-teal-050);
  --lv-ramp: linear-gradient(
    118deg,
    var(--lv-navy-900) 0%,
    var(--lv-navy-500) 46%,
    var(--lv-teal-600) 100%
  );
  --lv-ramp-terminal: var(--lv-teal-600);   /* the gate measures ink against this */

  /* ── Status ────────────────────────────────────────────────────────────
     `-text` carries text and is gated at 4.5:1. `-surface` is a fill and is
     never used as a text colour. */
  --lv-ok-text: var(--lv-ok-t-light);
  --lv-ok-surface: var(--lv-ok-s-light);
  --lv-warn-text: var(--lv-warn-t-light);
  --lv-warn-surface: var(--lv-warn-s-light);
  --lv-bad-text: var(--lv-bad-t-light);
  --lv-bad-surface: var(--lv-bad-s-light);

  /* ── Focus ────────────────────────────────────────────────────────────
     One ring, everywhere, on `:focus-visible` only. 3:1 against every
     surface it can land on. Gated. */
  --lv-focus-ring: var(--lv-teal-600);
  --lv-focus-width: 2px;
  --lv-focus-offset: 3px;

  /* ── Elevation — navy-tinted, never neutral grey ──────────────────────── */
  --lv-shadow-tint: 14 34 62;
  --lv-lift-1: 0 1px 2px rgb(var(--lv-shadow-tint) / 0.06),
               0 2px 6px -2px rgb(var(--lv-shadow-tint) / 0.09);
  --lv-lift-2: 0 2px 4px rgb(var(--lv-shadow-tint) / 0.06),
               0 12px 28px -10px rgb(var(--lv-shadow-tint) / 0.22);
  --lv-lift-3: 0 4px 8px rgb(var(--lv-shadow-tint) / 0.07),
               0 28px 60px -18px rgb(var(--lv-shadow-tint) / 0.30);

  /* ── Glass material parameters — consumed by material.css ─────────────── */
  --lv-glass-tint: 255 255 255;
  --lv-glass-alpha: 0.55;
  --lv-glass-edge: 0.85;          /* inner top highlight opacity */
  --lv-glass-under: 14 34 62;     /* inner bottom shade colour */
  --lv-glass-blur: 22px;
  --lv-glass-saturate: 185%;
  --lv-rim-opacity: 0.44;
  --lv-rim-opacity-hover: 0.74;
  --lv-bloom-opacity: 0.50;
  --lv-bloom-opacity-hover: 0.72;
  --lv-bloom-blur: 14px;
  /* Composite of --lv-canvas-worst under glass at the declared alpha. The
     gate measures every piece of text that sits on glass against THIS, not
     against the surface token — a translucent surface has no colour of its
     own. */
  --lv-glass-worst: oklch(97.0% 0.010 220);
}

:root[data-theme='dark'] {
  color-scheme: dark;

  --lv-canvas: var(--lv-slate-850);
  --lv-canvas-deep: var(--lv-slate-900);
  --lv-canvas-wash-a: oklch(42% 0.082 210);
  --lv-canvas-wash-b: oklch(36% 0.105 258);
  --lv-canvas-wash-c: oklch(40% 0.085 180);
  --lv-canvas-wash-alpha: 0.24;
  --lv-canvas-worst: oklch(25.1% 0.047 236);   /* = canvas + wash-a @ 0.24, computed */
  --lv-overlay-scrim: color-mix(in oklab, var(--lv-canvas-deep) 72%, transparent);

  --lv-surface: var(--lv-slate-800);
  --lv-surface-raised: var(--lv-slate-750);
  --lv-surface-sunken: var(--lv-slate-900);

  --lv-text-primary: var(--lv-slate-050-inv);
  --lv-text-secondary: var(--lv-slate-150-inv);
  --lv-text-tertiary: var(--lv-slate-250-inv);
  --lv-text-on-brand: oklch(98% 0.008 205);   /* SAME as light — see note */
  --lv-text-link: var(--lv-teal-200);

  /* Note on --lv-text-on-brand: the demo flipped this to a DARK ink in dark
     mode (`--accent-ink: oklch(16% 0.04 235)`), which measures 2.1:1 against
     the dark ramp's own navy start — a primary button whose label failed on
     its own background. One ink, both themes; the ramp is what gets capped. */

  --lv-line: var(--lv-slate-700);
  --lv-line-strong: var(--lv-slate-750);
  --lv-line-control: var(--lv-slate-350-inv);
  --lv-icon-quiet: var(--lv-slate-250-inv);

  --lv-brand: var(--lv-teal-200);
  --lv-brand-strong: var(--lv-teal-300);
  --lv-brand-soft: oklch(30% 0.055 205);
  --lv-ramp: linear-gradient(
    118deg,
    var(--lv-navy-700) 0%,
    var(--lv-teal-800) 46%,
    var(--lv-teal-600) 100%
  );
  --lv-ramp-terminal: var(--lv-teal-600);

  --lv-ok-text: var(--lv-ok-t-dark);
  --lv-ok-surface: var(--lv-ok-s-dark);
  --lv-warn-text: var(--lv-warn-t-dark);
  --lv-warn-surface: var(--lv-warn-s-dark);
  --lv-bad-text: var(--lv-bad-t-dark);
  --lv-bad-surface: var(--lv-bad-s-dark);

  --lv-focus-ring: var(--lv-teal-200);

  --lv-shadow-tint: 0 0 0;
  --lv-lift-1: 0 1px 2px rgb(0 0 0 / 0.38), 0 2px 8px -2px rgb(0 0 0 / 0.48);
  --lv-lift-2: 0 2px 6px rgb(0 0 0 / 0.42), 0 14px 32px -10px rgb(0 0 0 / 0.62);
  --lv-lift-3: 0 6px 12px rgb(0 0 0 / 0.48), 0 32px 70px -20px rgb(0 0 0 / 0.72);

  --lv-glass-tint: 185 210 235;
  --lv-glass-alpha: 0.10;
  --lv-glass-edge: 0.30;
  --lv-glass-under: 0 0 0;
  --lv-glass-blur: 22px;
  --lv-glass-saturate: 170%;
  --lv-rim-opacity: 0.50;
  --lv-rim-opacity-hover: 0.80;
  --lv-bloom-opacity: 0.42;
  --lv-bloom-opacity-hover: 0.66;
  --lv-bloom-blur: 16px;
  --lv-glass-worst: oklch(31.8% 0.047 236);
}

/* OS preference — applies only when the app has not made an explicit choice.
   Kept as a duplicate block rather than a nested selector so the file stays
   parseable by the contrast gate (which reads declarations, not cascade). */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    color-scheme: dark;

    --lv-canvas: var(--lv-slate-850);
    --lv-canvas-deep: var(--lv-slate-900);
    --lv-canvas-wash-a: oklch(42% 0.082 210);
    --lv-canvas-wash-b: oklch(36% 0.105 258);
    --lv-canvas-wash-c: oklch(40% 0.085 180);
    --lv-canvas-wash-alpha: 0.24;
    --lv-canvas-worst: oklch(25.1% 0.047 236);
    --lv-overlay-scrim: color-mix(in oklab, var(--lv-canvas-deep) 72%, transparent);

    --lv-surface: var(--lv-slate-800);
    --lv-surface-raised: var(--lv-slate-750);
    --lv-surface-sunken: var(--lv-slate-900);

    --lv-text-primary: var(--lv-slate-050-inv);
    --lv-text-secondary: var(--lv-slate-150-inv);
    --lv-text-tertiary: var(--lv-slate-250-inv);
    --lv-text-link: var(--lv-teal-200);

    --lv-line: var(--lv-slate-700);
    --lv-line-strong: var(--lv-slate-750);
    --lv-line-control: var(--lv-slate-350-inv);
    --lv-icon-quiet: var(--lv-slate-250-inv);

    --lv-brand: var(--lv-teal-200);
    --lv-brand-strong: var(--lv-teal-300);
    --lv-brand-soft: oklch(30% 0.055 205);
    --lv-ramp: linear-gradient(
      118deg,
      var(--lv-navy-700) 0%,
      var(--lv-teal-800) 46%,
      var(--lv-teal-600) 100%
    );

    --lv-ok-text: var(--lv-ok-t-dark);
    --lv-ok-surface: var(--lv-ok-s-dark);
    --lv-warn-text: var(--lv-warn-t-dark);
    --lv-warn-surface: var(--lv-warn-s-dark);
    --lv-bad-text: var(--lv-bad-t-dark);
    --lv-bad-surface: var(--lv-bad-s-dark);

    --lv-focus-ring: var(--lv-teal-200);

    --lv-shadow-tint: 0 0 0;
    --lv-lift-1: 0 1px 2px rgb(0 0 0 / 0.38), 0 2px 8px -2px rgb(0 0 0 / 0.48);
    --lv-lift-2: 0 2px 6px rgb(0 0 0 / 0.42), 0 14px 32px -10px rgb(0 0 0 / 0.62);
    --lv-lift-3: 0 6px 12px rgb(0 0 0 / 0.48), 0 32px 70px -20px rgb(0 0 0 / 0.72);

    --lv-glass-tint: 185 210 235;
    --lv-glass-alpha: 0.10;
    --lv-glass-edge: 0.30;
    --lv-glass-under: 0 0 0;
    --lv-glass-saturate: 170%;
    --lv-rim-opacity: 0.50;
    --lv-rim-opacity-hover: 0.80;
    --lv-bloom-opacity: 0.42;
    --lv-bloom-opacity-hover: 0.66;
    --lv-bloom-blur: 16px;
    --lv-glass-worst: oklch(31.8% 0.047 236);
  }
}

/* =============================================================================
   Leadværk — LAYER 3: MATERIAL
   -----------------------------------------------------------------------------
   The glass. This file is the signature of the whole product and it is the one
   file where an agent should change nothing without reading .impeccable.md §3
   and §4 first.

   What makes it Leadværk glass rather than the frosted panel every dashboard
   has shipped since 2013:

     · CHROMATIC ABERRATION, NOT BLUR. A 1px conic gradient masked to the border
       box (`mask-composite: exclude`) — split light running around the edge —
       plus a coloured bloom pooling BENEATH the lower edge, which is refracted
       light landing on the surface below. Blur is deliberately modest; the
       `saturate()` does more of the work. Heavy blur reads as fog.
     · PURE CSS. No `filter: url()`, no SVG filters. Those cost a rasterisation
       pass and are exactly what breaks in Safari.
     · COOL-BIASED SPECTRUM with one warm stop (--lv-spec-5). See primitives.css.

   WHERE IT MAY BE USED — .impeccable.md §3, restated because this is the rule
   most often broken:
     ALLOWED  rail · top bar · command palette · builder navigator / inspector /
              library drawer · toasts · popovers · dropdowns · theme bar ·
              marketing nav · marketing "lens" panels
     BANNED   data tables and rows · forms · fields inside a panel body · long
              text · article bodies · the builder canvas · modal bodies with
              forms · settings pages · anything containing a <textarea> · any
              surface that scrolls its own content

   `.lv-solid` is the DEFAULT surface. Reach for `.lv-glass` deliberately.
   ========================================================================== */

/* ── The opaque work surface — the default ───────────────────────────────── */

.lv-solid {
  background: var(--lv-surface);
  border: 1px solid var(--lv-line);
  border-radius: var(--lv-radius-lg);
  box-shadow: var(--lv-lift-1);
}

.lv-solid-sunken {
  background: var(--lv-surface-sunken);
  border: 1px solid var(--lv-line);
  border-radius: var(--lv-radius-lg);
  box-shadow: none;
}

/* ── The glass material ──────────────────────────────────────────────────── */

.lv-glass {
  position: relative;
  isolation: isolate;
  border-radius: var(--lv-radius-lg);

  /* The body: a directional tint wash. The three-stop gradient is what gives
     the surface a light direction — a flat rgba() fill reads as plastic. */
  background: linear-gradient(
    160deg,
    rgb(var(--lv-glass-tint) / calc(var(--lv-glass-alpha) + 0.22)) 0%,
    rgb(var(--lv-glass-tint) / var(--lv-glass-alpha)) 42%,
    rgb(var(--lv-glass-tint) / calc(var(--lv-glass-alpha) - 0.08)) 100%
  );

  backdrop-filter: blur(var(--lv-glass-blur)) saturate(var(--lv-glass-saturate));
  -webkit-backdrop-filter: blur(var(--lv-glass-blur)) saturate(var(--lv-glass-saturate));

  /* Machined edge: bright top, half-bright left, shaded bottom. This is the
     "wrought" quality from .impeccable.md §2 — the surface has a thickness. */
  box-shadow:
    inset 0 1px 0 0 rgb(255 255 255 / var(--lv-glass-edge)),
    inset 1px 0 0 0 rgb(255 255 255 / calc(var(--lv-glass-edge) * 0.45)),
    inset 0 -1px 0 0 rgb(var(--lv-glass-under) / 0.12),
    var(--lv-lift-2);
}

/* ── The bloom — refracted light pooling on the surface below ────────────── */

.lv-glass::before {
  content: '';
  position: absolute;
  inset: 6% 4% -10% 4%;   /* pushed DOWN and OUT: light lands below, not behind */
  border-radius: inherit;
  z-index: -2;
  background:
    radial-gradient(60% 100% at 16% 100%, var(--lv-spec-1) 0%, transparent 70%),
    radial-gradient(55% 100% at 50% 100%, var(--lv-spec-3) 0%, transparent 70%),
    radial-gradient(60% 100% at 86% 100%, var(--lv-spec-4) 0%, transparent 70%);
  filter: blur(var(--lv-bloom-blur));
  opacity: var(--lv-bloom-opacity);
  transition: opacity var(--lv-dur-light) var(--lv-ease);
  pointer-events: none;
}

/* ── The rim — THE signature. 1px of conic gradient, masked to the border ── */

.lv-glass::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  z-index: -1;
  background: conic-gradient(
    from var(--lv-rim-angle, 205deg),
    var(--lv-spec-1),
    var(--lv-spec-2),
    var(--lv-spec-3),
    var(--lv-spec-4),
    var(--lv-spec-5),
    var(--lv-spec-1)
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  opacity: var(--lv-rim-opacity);
  transition: opacity var(--lv-dur-light) var(--lv-ease);
  pointer-events: none;
}

/* Hover is the only motion the material has. It brightens; it does not move. */
.lv-glass:hover::after,
.lv-glass:focus-within::after {
  opacity: var(--lv-rim-opacity-hover);
}
.lv-glass:hover::before,
.lv-glass:focus-within::before {
  opacity: var(--lv-bloom-opacity-hover);
}

/* ── Variants ────────────────────────────────────────────────────────────── */

/* `flat` — structural chrome that is large, static, or always on screen: the
   rail, the stat strip, the marketing proof band. No bloom (a bloom under a
   full-height rail is noise), a quieter rim, less blur to cut paint cost. */
.lv-glass--flat {
  --lv-glass-blur: 16px;
  --lv-glass-saturate: 150%;
  --lv-rim-opacity: 0.20;
  --lv-rim-opacity-hover: 0.30;
}
.lv-glass--flat::before {
  display: none;
}

/* `lifted` — the surfaces that most justify the material: command palette,
   modal shells, marketing lens. Full rim, full bloom, deepest elevation. */
.lv-glass--lifted {
  box-shadow:
    inset 0 1px 0 0 rgb(255 255 255 / var(--lv-glass-edge)),
    inset 1px 0 0 0 rgb(255 255 255 / calc(var(--lv-glass-edge) * 0.45)),
    inset 0 -1px 0 0 rgb(var(--lv-glass-under) / 0.12),
    var(--lv-lift-3);
}

/* `control` — buttons, fields, chips. Smaller radius, tighter blur, no bloom
   (a bloom under a 40px button is a smudge). */
.lv-glass--control {
  --lv-glass-blur: 16px;
  --lv-glass-saturate: 180%;
  border-radius: var(--lv-radius-pill);
  box-shadow:
    inset 0 1px 0 0 rgb(255 255 255 / var(--lv-glass-edge)),
    inset 0 -1px 0 0 rgb(var(--lv-glass-under) / 0.12),
    var(--lv-lift-1);
}
.lv-glass--control::before {
  display: none;
}

/* Edge-anchored chrome: a rail flush to the viewport edge should not draw a
   rim on the edge it is flush with, or the rim reads as a seam. */
.lv-glass--edge-left  { border-start-start-radius: 0; border-end-start-radius: 0; }
.lv-glass--edge-right { border-start-end-radius: 0; border-end-end-radius: 0; }

/* =============================================================================
   DEGRADATION — three independent paths, all landing on the same opaque
   surface. .impeccable.md §5 principle 6: the fallback must be a good design,
   not a broken one. This is why `.lv-solid` and the glass fallback are the
   same visual object.
   ========================================================================== */

/* 1. The browser cannot composite a backdrop at all. */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .lv-glass {
    background: var(--lv-surface);
    box-shadow:
      inset 0 0 0 1px var(--lv-line),
      var(--lv-lift-2);
  }
  .lv-glass::before { display: none; }
  .lv-glass::after  { opacity: calc(var(--lv-rim-opacity) * 0.6); }
}

/* 2. The user has asked for less transparency (Reduce Transparency on macOS
      and iOS, and the equivalent on Windows). This is an accessibility
      request, not a capability gap: honour it completely — the rim goes too,
      because a prismatic edge on an opaque panel is exactly the visual noise
      the setting exists to remove. */
@media (prefers-reduced-transparency: reduce) {
  .lv-glass {
    background: var(--lv-surface);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow:
      inset 0 0 0 1px var(--lv-line),
      var(--lv-lift-2);
  }
  .lv-glass::before,
  .lv-glass::after { display: none; }
}

/* 3. Forced colours (Windows High Contrast). Everything becomes system paint;
      the material is meaningless and must not fight the user's palette. */
@media (forced-colors: active) {
  .lv-glass {
    background: Canvas;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border: 1px solid CanvasText;
    box-shadow: none;
  }
  .lv-glass::before,
  .lv-glass::after { display: none; }
}

/* 4. Reduced motion: the rim/bloom transition is decorative, so it goes to
      zero — but the END STATES stay correct and nothing depends on the
      transition having run (.impeccable.md §4). */
@media (prefers-reduced-motion: reduce) {
  .lv-glass::before,
  .lv-glass::after {
    transition-duration: 0.01ms;
  }
}

/* =============================================================================
   PERFORMANCE BUDGET — not advisory.
   -----------------------------------------------------------------------------
   `backdrop-filter` re-samples the backdrop region on every paint inside that
   region. The cost scales with AREA, not with element count, and it compounds
   with scrolling because a scroll invalidates the sampled region.

   Budget: at most SIX `.lv-glass` elements composited at once, and their
   combined area must not exceed ~35% of the viewport. The admin shell as
   specified spends: rail (1) + top bar (1) + at most one floating surface
   (palette OR dropdown OR toast) = 3. The builder spends: top bar + navigator
   + inspector + library drawer = 4.

   If a design needs a seventh, it is using glass on a work surface — go back
   to .impeccable.md §3.

   `contain: paint` is applied to the two always-on chrome surfaces in
   components.css so their backdrop sampling is bounded to their own box.
   ========================================================================== */

/* =============================================================================
   Leadværk — LAYER 4: COMPONENT TOKENS + BASE PRIMITIVES
   -----------------------------------------------------------------------------
   Component-scoped custom properties (so a component can be re-tuned without
   touching semantic roles), plus the small set of base primitives every one of
   the ~95 admin pages composes from.

   Everything here is class-based and framework-free — the same rules serve the
   React admin, the Astro public site, and the `saas` theme. No component in
   this system may declare a raw colour; it declares a component token here and
   maps it to a semantic role.
   ========================================================================== */

:root {
  /* ── Button ─────────────────────────────────────────────────────────────
     Height 44px at default size: WCAG 2.5.5 target size, and the reason the
     padding is 13px rather than the 12px that would look tidier. */
  --lv-btn-height: 44px;
  --lv-btn-height-sm: 36px;
  --lv-btn-height-lg: 52px;
  --lv-btn-padding-x: 24px;
  --lv-btn-padding-x-sm: 16px;
  --lv-btn-radius: var(--lv-radius-pill);
  --lv-btn-font: var(--lv-weight-bold) var(--lv-text-sm) / 1 var(--lv-font-ui);
  --lv-btn-halo-opacity: 0.48;
  --lv-btn-halo-opacity-hover: 0.85;

  /* ── Field ──────────────────────────────────────────────────────────────
     Fields inside GLASS chrome (search in a top bar, the command palette) use
     `--lv-field-bg-glass`. Fields inside a FORM are opaque, always. */
  --lv-field-height: 44px;
  --lv-field-height-sm: 38px;
  --lv-field-padding-x: 14px;
  --lv-field-radius: var(--lv-radius-sm);
  --lv-field-radius-pill: var(--lv-radius-pill);
  --lv-field-bg: var(--lv-surface);
  --lv-field-border: var(--lv-line-control);
  --lv-field-border-hover: var(--lv-text-tertiary);

  /* ── Table — opaque, dense, no card boxes, rules do the separating ────── */
  --lv-table-row-height: 52px;
  --lv-table-row-height-compact: 40px;
  --lv-table-cell-padding-x: 12px;
  --lv-table-head-font: var(--lv-weight-semibold) var(--lv-text-xs) / 1 var(--lv-font-ui);
  --lv-table-row-hover: color-mix(in oklab, var(--lv-brand) 6%, var(--lv-surface));
  --lv-table-row-selected: color-mix(in oklab, var(--lv-brand) 11%, var(--lv-surface));

  /* ── Rail / top bar — the two always-on glass surfaces ──────────────── */
  --lv-rail-width: 264px;
  --lv-rail-width-collapsed: 72px;
  --lv-topbar-height: 60px;

  /* ── Badge ──────────────────────────────────────────────────────────── */
  --lv-badge-height: 22px;
  --lv-badge-padding-x: 11px;

  /* ── Meter ──────────────────────────────────────────────────────────── */
  --lv-meter-height: 7px;
}

/* =============================================================================
   BASE
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  margin: 0;
  min-height: 100dvh;
  font-family: var(--lv-font-ui);
  font-size: var(--lv-text-md);
  line-height: var(--lv-leading-normal);
  color: var(--lv-text-primary);
  background-color: var(--lv-canvas);
  /* The three atmospheric washes. Alpha is a token, not a literal, because it
     is what sets --lv-canvas-worst — the backdrop the contrast gate measures
     everything against (.impeccable.md §6). */
  background-image:
    radial-gradient(1150px 640px at 10% -8%,
      rgb(from var(--lv-canvas-wash-a) r g b / var(--lv-canvas-wash-alpha)), transparent 62%),
    radial-gradient(950px 580px at 94% 2%,
      rgb(from var(--lv-canvas-wash-b) r g b / var(--lv-canvas-wash-alpha)), transparent 62%),
    radial-gradient(780px 520px at 58% 106%,
      rgb(from var(--lv-canvas-wash-c) r g b / calc(var(--lv-canvas-wash-alpha) * 0.85)), transparent 60%);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4 {
  font-family: var(--lv-font-ui);
  font-weight: var(--lv-weight-heading);
  letter-spacing: var(--lv-tracking-heading);
  line-height: var(--lv-leading-tight);
  margin: 0;
  text-wrap: balance;
}

p { margin: 0; max-width: var(--lv-measure); }
a { color: inherit; }

/* Every figure in the product. Tabular so a changing number does not reflow. */
.lv-num {
  font-family: var(--lv-font-mono);
  font-feature-settings: 'tnum' 1;
  font-variant-numeric: tabular-nums;
  letter-spacing: var(--lv-tracking-num);
}

.lv-eyebrow {
  font: var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-ui);
  letter-spacing: var(--lv-tracking-eyebrow);
  text-transform: uppercase;
  color: var(--lv-text-tertiary);
}

.lv-muted { color: var(--lv-text-secondary); }
.lv-quiet { color: var(--lv-text-tertiary); }
.lv-rule  { height: 1px; background: var(--lv-line); border: 0; margin: 0; }

/* Visually hidden but present in the DOM. Load-bearing: any node carrying a
   `data-edit*` attribute must use this instead of `display: none`, or the page
   builder loses the edit target. */
.lv-vh {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* =============================================================================
   FOCUS — one ring, every interactive element, `:focus-visible` only.
   The demo shipped this on `.btn` and nothing else; nav links, tree nodes,
   palette rows, segmented buttons, tabs, swatches and library cards all had
   no visible focus at all (.impeccable.md §7 item 7).
   ========================================================================== */

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: var(--lv-focus-width) solid var(--lv-focus-ring);
  outline-offset: var(--lv-focus-offset);
  border-radius: var(--lv-radius-sm);
}

/* On a glass surface the ring can land on a light backdrop; a companion
   ring in the surface colour guarantees the 3:1 boundary either way. */
.lv-glass :where(a, button, input, [tabindex]):focus-visible {
  box-shadow: 0 0 0 calc(var(--lv-focus-width) + var(--lv-focus-offset)) var(--lv-surface);
}

/* =============================================================================
   BUTTON
   ========================================================================== */

.lv-btn {
  position: relative;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--lv-space-2);
  min-height: var(--lv-btn-height);
  padding-inline: var(--lv-btn-padding-x);
  border: 0;
  border-radius: var(--lv-btn-radius);
  font: var(--lv-btn-font);
  letter-spacing: var(--lv-tracking-label);
  color: var(--lv-text-primary);
  cursor: pointer;
  white-space: nowrap;
  transition: transform var(--lv-dur-fast) var(--lv-ease),
              box-shadow var(--lv-dur-state) var(--lv-ease),
              background-color var(--lv-dur-state) var(--lv-ease);
}
.lv-btn:active { transform: scale(0.975); }
.lv-btn[disabled],
.lv-btn[aria-disabled='true'] {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

/* PRIMARY — carries the mark's own gradient (.impeccable.md §4).
   `--lv-ramp`'s light terminal is capped so `--lv-text-on-brand` clears
   4.5:1 at the brightest point of the gradient. Gated in pairs.mjs as
   `on-brand vs ramp-terminal`. */
.lv-btn--primary {
  color: var(--lv-text-on-brand);
  background-image:
    linear-gradient(178deg, rgb(255 255 255 / 0.34) 0%, rgb(255 255 255 / 0) 48%),
    var(--lv-ramp);
  box-shadow:
    inset 0 1px 0 0 rgb(255 255 255 / 0.48),
    inset 0 -1px 0 0 rgb(0 0 0 / 0.18),
    0 2px 5px rgb(var(--lv-shadow-tint) / 0.16),
    0 12px 26px -10px color-mix(in oklab, var(--lv-brand) 78%, transparent);
}
/* The halo: the same refracted-light idea as the bloom, tuned for a control. */
.lv-btn--primary::after {
  content: '';
  position: absolute;
  inset: -3px;
  z-index: -1;
  border-radius: inherit;
  background: linear-gradient(100deg, var(--lv-spec-3), var(--lv-spec-1), var(--lv-spec-3));
  filter: blur(11px);
  opacity: var(--lv-btn-halo-opacity);
  transition: opacity var(--lv-dur-state) var(--lv-ease);
  pointer-events: none;
}
.lv-btn--primary:hover::after { opacity: var(--lv-btn-halo-opacity-hover); }

@media (prefers-reduced-transparency: reduce), (forced-colors: active) {
  .lv-btn--primary::after { display: none; }
}

/* SECONDARY — glass. Only legitimate inside glass chrome or on the canvas;
   never inside an opaque panel body (use `--quiet` there). */
.lv-btn--glass {
  background: linear-gradient(
    165deg,
    rgb(var(--lv-glass-tint) / calc(var(--lv-glass-alpha) + 0.26)),
    rgb(var(--lv-glass-tint) / var(--lv-glass-alpha))
  );
  backdrop-filter: blur(16px) saturate(180%);
  -webkit-backdrop-filter: blur(16px) saturate(180%);
  box-shadow:
    inset 0 0 0 1px var(--lv-line-control),
    inset 0 1px 0 0 rgb(255 255 255 / var(--lv-glass-edge)),
    var(--lv-lift-1);
}
.lv-btn--glass::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  padding: 1px;
  background: conic-gradient(
    from var(--lv-rim-angle, 205deg),
    var(--lv-spec-1), var(--lv-spec-2), var(--lv-spec-3),
    var(--lv-spec-4), var(--lv-spec-5), var(--lv-spec-1)
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  opacity: 0.42;
  transition: opacity var(--lv-dur-state) var(--lv-ease);
  pointer-events: none;
}
.lv-btn--glass:hover::after { opacity: 0.80; }

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .lv-btn--glass { background: var(--lv-surface); }
}
@media (prefers-reduced-transparency: reduce) {
  .lv-btn--glass {
    background: var(--lv-surface);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  .lv-btn--glass::after { display: none; }
}

/* SOLID SECONDARY — the correct secondary inside a form or panel body. */
.lv-btn--solid {
  background: var(--lv-surface);
  color: var(--lv-text-primary);
  box-shadow: inset 0 0 0 1px var(--lv-line-control), var(--lv-lift-1);
}
.lv-btn--solid:hover { background: var(--lv-surface-raised); }

/* TERTIARY */
.lv-btn--quiet {
  background: transparent;
  color: var(--lv-text-secondary);
  box-shadow: none;
  padding-inline: var(--lv-space-4);
}
.lv-btn--quiet:hover {
  color: var(--lv-text-primary);
  background: color-mix(in oklab, var(--lv-brand) 8%, transparent);
}

/* DESTRUCTIVE */
.lv-btn--danger {
  background: var(--lv-bad-surface);
  color: var(--lv-bad-text);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lv-bad-text) 40%, transparent);
}

.lv-btn--sm { min-height: var(--lv-btn-height-sm); padding-inline: var(--lv-btn-padding-x-sm); font-size: var(--lv-text-xs); }
.lv-btn--lg { min-height: var(--lv-btn-height-lg); font-size: var(--lv-text-md); }
.lv-btn--block { width: 100%; }
.lv-btn--icon { padding: 0; width: var(--lv-btn-height); height: var(--lv-btn-height); border-radius: var(--lv-radius-md); }
.lv-btn--icon.lv-btn--sm { width: var(--lv-btn-height-sm); height: var(--lv-btn-height-sm); }

/* A small-size button is still a 44px touch target on a coarse pointer. */
@media (pointer: coarse) {
  .lv-btn--sm, .lv-btn--icon.lv-btn--sm { min-height: 44px; min-width: 44px; }
}

/* =============================================================================
   FIELD
   ========================================================================== */

/* Opaque field — the default, and the only one permitted inside a form. */
.lv-field {
  display: flex;
  align-items: center;
  gap: var(--lv-space-3);
  min-height: var(--lv-field-height);
  padding-inline: var(--lv-field-padding-x);
  border-radius: var(--lv-field-radius);
  background: var(--lv-field-bg);
  box-shadow: inset 0 0 0 1px var(--lv-field-border);
  transition: box-shadow var(--lv-dur-state) var(--lv-ease);
}
.lv-field:hover { box-shadow: inset 0 0 0 1px var(--lv-field-border-hover); }
.lv-field:focus-within {
  box-shadow: inset 0 0 0 1px var(--lv-focus-ring),
              0 0 0 var(--lv-focus-width) color-mix(in oklab, var(--lv-focus-ring) 35%, transparent);
}
.lv-field input,
.lv-field textarea {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  outline: none;
  font: var(--lv-weight-regular) var(--lv-text-sm) / 1.5 var(--lv-font-ui);
  color: var(--lv-text-primary);
}
.lv-field input::placeholder,
.lv-field textarea::placeholder { color: var(--lv-text-tertiary); }
.lv-field--invalid { box-shadow: inset 0 0 0 1px var(--lv-bad-text); }
.lv-field--textarea { align-items: stretch; padding-block: var(--lv-space-3); }
.lv-field textarea { resize: vertical; }
.lv-field select { width: 100%; border: 0; background: transparent; color: var(--lv-text-primary); font: var(--lv-weight-regular) var(--lv-text-sm) / 1.5 var(--lv-font-ui); }
.lv-form { display: grid; gap: var(--lv-space-5); }
.lv-form-field { display: grid; gap: var(--lv-space-2); }
.lv-form-field__label { font-size: var(--lv-text-sm); font-weight: var(--lv-weight-semibold); }
.lv-form-field__helper { color: var(--lv-text-secondary); font-size: var(--lv-text-xs); }
.lv-form-field__error { color: var(--lv-bad-text); font-size: var(--lv-text-xs); }
.lv-form-field--invalid .lv-form-field__label { color: var(--lv-bad-text); }
.lv-select { position: relative; }
.lv-select::after {
  content: '⌄';
  position: absolute;
  right: var(--lv-field-padding-x);
  pointer-events: none;
  color: var(--lv-text-tertiary);
}
.lv-select select { appearance: none; padding-right: var(--lv-space-5); cursor: pointer; }
.lv-site-switcher {
  display: flex;
  align-items: center;
  min-height: var(--lv-field-height);
  padding-inline: var(--lv-field-padding-x);
  border-radius: var(--lv-field-radius);
  background: var(--lv-field-bg);
  box-shadow: inset 0 0 0 1px var(--lv-field-border);
}
.lv-site-switcher select { width: 100%; border: 0; background: transparent; color: var(--lv-text-primary); font: var(--lv-weight-medium) var(--lv-text-sm) / 1.5 var(--lv-font-ui); }
.lv-check, .lv-toggle-field { display: flex; align-items: center; gap: var(--lv-space-3); }
.lv-check input { width: 18px; height: 18px; accent-color: var(--lv-brand); }
.lv-toggle-field__label { font-size: var(--lv-text-sm); font-weight: var(--lv-weight-semibold); }
.lv-toggle-field__description { color: var(--lv-text-secondary); font-size: var(--lv-text-xs); }

/* Glass field — ONLY inside glass chrome: the top-bar search, the command
   palette input, the builder inspector. Never in a form. */
.lv-field--glass {
  background: linear-gradient(
    165deg,
    rgb(var(--lv-glass-tint) / calc(var(--lv-glass-alpha) + 0.30)),
    rgb(var(--lv-glass-tint) / calc(var(--lv-glass-alpha) + 0.06))
  );
  backdrop-filter: blur(16px) saturate(170%);
  -webkit-backdrop-filter: blur(16px) saturate(170%);
  box-shadow:
    inset 0 0 0 1px var(--lv-line-control),
    inset 0 1px 0 0 rgb(255 255 255 / var(--lv-glass-edge)),
    inset 0 2px 5px 0 rgb(var(--lv-glass-under) / 0.08);
}
@media (prefers-reduced-transparency: reduce) {
  .lv-field--glass {
    background: var(--lv-surface);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

/* =============================================================================
   TOGGLE — a real <button role="switch">, keyboard-operable.
   ========================================================================== */

.lv-toggle {
  position: relative;
  width: 52px; height: 30px;
  flex: none;
  border-radius: var(--lv-radius-pill);
  cursor: pointer;
  border: 1px solid var(--lv-line-control);   /* 3:1 boundary in the OFF state */
  background: var(--lv-surface-sunken);
  transition: background-color var(--lv-dur-state) var(--lv-ease),
              border-color var(--lv-dur-state) var(--lv-ease);
}
.lv-toggle::after {
  content: '';
  position: absolute;
  top: 2px; left: 2px;
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--lv-surface);
  box-shadow: 0 1px 2px rgb(var(--lv-shadow-tint) / 0.22),
              0 4px 8px -2px rgb(var(--lv-shadow-tint) / 0.28);
  transition: transform var(--lv-dur-state) var(--lv-ease);
}
.lv-toggle[aria-checked='true'] {
  background-image: var(--lv-ramp);
  border-color: transparent;
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.4),
              0 4px 14px -4px color-mix(in oklab, var(--lv-brand) 65%, transparent);
}
.lv-toggle[aria-checked='true']::after { transform: translateX(22px); }

@media (pointer: coarse) {
  /* The visual switch stays 52×30; the hit area grows to 44px. */
  .lv-toggle { position: relative; }
  .lv-toggle::before {
    content: '';
    position: absolute;
    inset: -7px -0px;
    min-height: 44px;
  }
}

/* =============================================================================
   BADGE
   ========================================================================== */

.lv-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: var(--lv-badge-height);
  padding-inline: var(--lv-badge-padding-x);
  border-radius: var(--lv-radius-pill);
  font: var(--lv-weight-bold) var(--lv-text-xs) / 1.4 var(--lv-font-ui);
  color: var(--lv-text-secondary);
  background: var(--lv-surface-raised);
  box-shadow: inset 0 0 0 1px var(--lv-line);
}
.lv-badge--ok   { color: var(--lv-ok-text);   background: var(--lv-ok-surface);   box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lv-ok-text) 38%, transparent); }
.lv-badge--warn { color: var(--lv-warn-text); background: var(--lv-warn-surface); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lv-warn-text) 42%, transparent); }
.lv-badge--bad  { color: var(--lv-bad-text);  background: var(--lv-bad-surface);  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lv-bad-text) 38%, transparent); }
.lv-badge--tier { color: var(--lv-brand); background: var(--lv-brand-soft); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lv-brand) 40%, transparent); }

/* The status dot is decoration; the badge's TEXT carries the state, so a
   colour-blind user never depends on the dot. */
.lv-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: none; }

/* =============================================================================
   TABLE — opaque, dense, rules not boxes (.impeccable.md §3 and §5.5)
   ========================================================================== */

.lv-table { width: 100%; border-collapse: collapse; background: var(--lv-surface); }
.lv-table th {
  text-align: left;
  font: var(--lv-table-head-font);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lv-text-tertiary);
  padding: 0 var(--lv-table-cell-padding-x) var(--lv-space-3);
  white-space: nowrap;
}
.lv-table td {
  padding: var(--lv-space-3) var(--lv-table-cell-padding-x);
  border-top: 1px solid var(--lv-line);
  font-size: var(--lv-text-sm);
  vertical-align: middle;
  height: var(--lv-table-row-height);
}
.lv-table tbody tr:hover td { background: var(--lv-table-row-hover); }
.lv-table tbody tr[aria-selected='true'] td { background: var(--lv-table-row-selected); }
.lv-table td:first-child, .lv-table th:first-child { padding-left: 0; }
.lv-table td:last-child,  .lv-table th:last-child  { padding-right: 0; text-align: right; }
.lv-table--compact td { height: var(--lv-table-row-height-compact); padding-block: var(--lv-space-2); }

/* Tables scroll inside their own container; the page body never scrolls
   sideways. */
.lv-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* A table row's compact record identifier. The adjacent title supplies the
   accessible name; this stays decorative so its abbreviation is not repeated. */
.lv-marker-tile {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  flex: none;
  border: 1px solid var(--lv-line);
  border-radius: var(--lv-radius-sm);
  background: var(--lv-surface-sunken);
  color: var(--lv-text-secondary);
  font-size: var(--lv-text-2xs);
  font-weight: var(--lv-weight-bold);
}

/* =============================================================================
   METER
   ========================================================================== */

.lv-meter {
  height: var(--lv-meter-height);
  border-radius: var(--lv-radius-pill);
  background: var(--lv-surface-sunken);
  overflow: hidden;
  /* `--lv-line-control`, not `--lv-line`: a meter at 0% is a graphic that
     conveys information (WCAG 1.4.11), so its track boundary needs 3:1 — a
     decorative hairline leaves an empty meter invisible. Gated as
     `meter-track-boundary`. */
  box-shadow: inset 0 0 0 1px var(--lv-line-control);
}
.lv-meter > i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background-image: var(--lv-ramp);
}
.lv-meter--warn > i { background-image: linear-gradient(90deg, var(--lv-warn-text), var(--lv-bad-text)); }

/* =============================================================================
   ALWAYS-ON CHROME — paint containment so backdrop sampling is bounded
   ========================================================================== */

.lv-rail, .lv-topbar { contain: paint; }

/* =============================================================================
   SHARED COMPOSITIONS — these own the stem classes emitted by primitives.
   ========================================================================== */

.lv-tabs { min-width: 0; }
.lv-tabs [role='tabpanel'] { min-width: 0; outline: none; }
.lv-section { min-width: 0; }
.lv-section--warn { box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lv-warn-text) 34%, transparent), var(--lv-lift-1); }
.lv-section--bad { box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lv-bad-text) 34%, transparent), var(--lv-lift-1); }
.lv-status-banner { display: grid; gap: var(--lv-space-3); }
.lv-status-banner--warn { background: color-mix(in oklab, var(--lv-warn-surface) 54%, var(--lv-surface)); }
.lv-status-banner--bad { background: color-mix(in oklab, var(--lv-bad-surface) 54%, var(--lv-surface)); }
.lv-empty--compact { padding-block: var(--lv-space-4); gap: var(--lv-space-2); }
.lv-empty--compact h3 { font-size: var(--lv-text-sm); }
.lv-filter-bar__search { min-width: min(100%, 14rem); }
.lv-filter-bar__select { min-width: 10rem; }
.lv-chip-group__search { width: min(100%, 18rem); }
.lv-inline { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lv-space-2); }

/* =============================================================================
   Leadværk — the public-site SECTION system
   -----------------------------------------------------------------------------
   One stylesheet, imported by every component renderer that needs it. It exists
   because of `.impeccable.md` §5.4 and §5.7: the system is the deliverable, and
   there is one of everything. Eighty components each inventing their own
   heading block is eighty components that disagree about what a heading block
   is, which is the state LPH was measured in.

   Two rules govern what may live here rather than in a component's own
   `<style>`:

     1. If two components would write it identically, it belongs here.
     2. If it encodes a *brand* decision rather than a *layout* decision, it
        belongs here even if only one component uses it today.

   NO GLASS IN THIS FILE. `.impeccable.md` §3 is a law: glass carries chrome,
   never the work surface, and a customer's page content is the work surface —
   for their visitor it is the only surface. Everything below is opaque and
   therefore measurable by the contrast gate.

   THE SIGNATURE, spent once and reused 80 times: the **spectral hairline** at
   the head of a section — a 1px rule that carries the mark's ramp for its first
   4rem and then fades to the neutral line colour. It is the machined edge of
   §2's "wrought", at the one place every section already has a horizontal line.
   Components do not get to add a second signature.
   ========================================================================== */

/* ── The section shell ───────────────────────────────────────────────────── */

.lv-sec {
  /* Container queries, not viewport queries: a section may be placed in a
     narrow article column or in a full-bleed page. §4 of the design protocol. */
  container-type: inline-size;
  padding-block: var(--lv-space-8);
  color: var(--lv-text-primary);
}

.lv-sec--tight { padding-block: var(--lv-space-6); }
.lv-sec--loose { padding-block: var(--lv-space-9); }

/* Full-bleed background variant. Still opaque; the wash comes from the canvas
   tokens, so it re-themes rather than being painted in. */
.lv-sec--sunken {
  background: var(--lv-surface-sunken);
  padding-inline: var(--lv-space-5);
}

.lv-sec__inner {
  max-width: 72rem;
  margin-inline: auto;
}

/* ── The head: eyebrow, title, lede. Left-aligned by default ─────────────── */

.lv-sec__head {
  position: relative;
  max-width: var(--lv-measure);
  padding-block-start: var(--lv-space-4);
  margin-block-end: var(--lv-space-6);
}

/* The signature. `::before` so it never interferes with the edit surface. */
.lv-sec__head::before {
  content: '';
  position: absolute;
  inset-block-start: 0;
  inset-inline-start: 0;
  inline-size: 100%;
  block-size: 1px;
  background:
    linear-gradient(90deg, var(--lv-brand) 0, var(--lv-brand-soft) 2.5rem, transparent 4rem),
    var(--lv-line);
}

.lv-sec__head--center {
  margin-inline: auto;
  text-align: center;
}

.lv-sec__head--center::before {
  background:
    linear-gradient(90deg, transparent 0, var(--lv-brand-soft) 50%, transparent 100%),
    var(--lv-line);
}

.lv-sec__eyebrow {
  display: block;
  margin-block-end: var(--lv-space-2);
  font: var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-ui);
  letter-spacing: var(--lv-tracking-eyebrow);
  text-transform: uppercase;
  color: var(--lv-text-tertiary);
}

.lv-sec__title {
  margin: 0;
  font-size: var(--lv-text-2xl);
  color: var(--lv-text-primary);
}

.lv-sec__title--sm { font-size: var(--lv-text-xl); }

.lv-sec__lede {
  margin-block-start: var(--lv-space-3);
  color: var(--lv-text-secondary);
  line-height: var(--lv-leading-normal);
}

.lv-sec__foot {
  margin-block-start: var(--lv-space-6);
  display: flex;
  flex-wrap: wrap;
  gap: var(--lv-space-3);
}

/* ── Grids and lists ─────────────────────────────────────────────────────── */

.lv-grid {
  display: grid;
  gap: var(--lv-space-5);
  margin: 0;
  padding: 0;
  list-style: none;
  grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr));
}

/* An explicit column count, honoured only once there is room for it. The
   `auto-fit` above is the mobile-first answer and never needs a media query. */
@container (min-width: 44rem) {
  .lv-grid--cols {
    grid-template-columns: repeat(var(--lv-cols, 3), minmax(0, 1fr));
  }
}

.lv-grid--tight { gap: var(--lv-space-4); }

/* Dense information: hairlines, not boxes (design protocol §2, DENSITY ≥7). */
.lv-rows {
  margin: 0;
  padding: 0;
  list-style: none;
  border-block-start: 1px solid var(--lv-line);
}

.lv-rows > li {
  padding-block: var(--lv-space-4);
  border-block-end: 1px solid var(--lv-line);
}

/* ── The card. Elevation only where elevation means something ────────────── */

.lv-card {
  display: flex;
  flex-direction: column;
  gap: var(--lv-space-3);
  block-size: 100%;
  padding: var(--lv-space-5);
  border-radius: var(--lv-radius-md);
  background: var(--lv-surface);
  box-shadow: inset 0 0 0 1px var(--lv-line);
}

/* Un-carded variant: the same content model with rules doing the separating. */
.lv-card--plain {
  padding: 0;
  background: none;
  box-shadow: none;
  border-radius: 0;
}

.lv-card__title {
  margin: 0;
  font-size: var(--lv-text-md);
  font-weight: var(--lv-weight-semibold);
  line-height: var(--lv-leading-snug);
  color: var(--lv-text-primary);
}

.lv-card__body {
  margin: 0;
  color: var(--lv-text-secondary);
  line-height: var(--lv-leading-normal);
}

.lv-card__meta {
  margin: 0;
  font-size: var(--lv-text-xs);
  color: var(--lv-text-tertiary);
}

.lv-card__link {
  color: var(--lv-text-link);
  text-decoration: none;
  font-weight: var(--lv-weight-medium);
}

.lv-card__link:hover { text-decoration: underline; }

/* ── Media ───────────────────────────────────────────────────────────────── */

.lv-media {
  display: block;
  overflow: hidden;
  border-radius: var(--lv-radius-md);
  background: var(--lv-surface-sunken);
}

.lv-media img,
.lv-media video {
  display: block;
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
}

.lv-media--wide { aspect-ratio: 16 / 9; }
.lv-media--square { aspect-ratio: 1; }
.lv-media--portrait { aspect-ratio: 3 / 4; }

/* ── Chips: a filter entry point, per audit §8.4 ─────────────────────────── */

.lv-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--lv-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.lv-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--lv-space-2);
  min-block-size: 36px;
  padding-inline: var(--lv-space-4);
  border-radius: var(--lv-radius-pill);
  background: var(--lv-surface);
  box-shadow: inset 0 0 0 1px var(--lv-line-control);
  font: var(--lv-weight-medium) var(--lv-text-sm) / 1 var(--lv-font-ui);
  color: var(--lv-text-primary);
  text-decoration: none;
  transition: background-color var(--lv-dur-state) var(--lv-ease);
}

.lv-chip:hover { background: var(--lv-surface-raised); }

@media (pointer: coarse) {
  .lv-chip { min-block-size: 44px; }
}

/* ── Label/value pairs: specs, opening hours, practical detail ───────────── */

.lv-kv {
  display: grid;
  grid-template-columns: minmax(8rem, max-content) 1fr;
  gap: var(--lv-space-2) var(--lv-space-5);
  margin: 0;
}

.lv-kv dt {
  font-size: var(--lv-text-sm);
  font-weight: var(--lv-weight-medium);
  color: var(--lv-text-tertiary);
}

.lv-kv dd {
  margin: 0;
  color: var(--lv-text-primary);
}

/* ── The empty state ─────────────────────────────────────────────────────────
   Audit §5.0 makes this a first-class, editable, action-bearing surface on
   every `browse.*` intent and every external binding. LPH had exactly one
   designed empty state in the whole library, on a per-tenant component. The
   dashed hairline is the one place in the system where a border is dashed, so
   it reads as "nothing here yet" and not as "a card". */

.lv-empty {
  display: flex;
  flex-direction: column;
  align-items: start;
  gap: var(--lv-space-3);
  max-width: 48ch;
  padding: var(--lv-space-7);
  border: 1px dashed var(--lv-line-strong);
  border-radius: var(--lv-radius-lg);
  background: var(--lv-surface-raised);
}

.lv-empty__title {
  margin: 0;
  font-size: var(--lv-text-md);
  font-weight: var(--lv-weight-semibold);
  color: var(--lv-text-primary);
}

.lv-empty__body {
  margin: 0;
  color: var(--lv-text-secondary);
  line-height: var(--lv-leading-normal);
}

/* ── Prose: the one long-form measure in the system ──────────────────────── */

.lv-prose {
  max-width: var(--lv-measure);
  color: var(--lv-text-primary);
  line-height: var(--lv-leading-normal);
}

.lv-prose :where(h2, h3) { margin-block: var(--lv-space-6) var(--lv-space-3); }
.lv-prose :where(p, ul, ol) { margin-block: 0 var(--lv-space-4); }
.lv-prose :where(a) { color: var(--lv-text-link); }
.lv-prose--wide { max-width: 60rem; }
.lv-prose--full { max-width: none; }

/* ── Motion ──────────────────────────────────────────────────────────────────
   Nothing in this file animates on load. The one orchestrated moment a page
   gets belongs to the page, not to eighty sections each staggering their own
   children — that is how a site ends up feeling like a slot machine. */

@media (prefers-reduced-motion: reduce) {
  .lv-chip { transition: none; }
}

/* ── Split: copy beside media ─────────────────────────────────────────────────
   Used by every "show and tell" intent. One implementation, one reversal
   modifier — the alternating rhythm that LPH shipped as a separate component
   (`alternating-feature-list`, 203 placements) is `:nth-child(even)` here. */

.lv-split {
  display: grid;
  gap: var(--lv-space-6);
  align-items: center;
}

@container (min-width: 46rem) {
  .lv-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .lv-split--reverse > :first-child { order: 2; }
  .lv-split--wide-copy { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
}

/* ── Steps: a numbered or dated sequence ─────────────────────────────────── */

.lv-steps {
  display: grid;
  gap: var(--lv-space-5);
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: lv-step;
}

.lv-steps > li {
  position: relative;
  counter-increment: lv-step;
  padding-inline-start: var(--lv-space-8);
}

.lv-steps > li::before {
  content: counter(lv-step);
  position: absolute;
  inset-inline-start: 0;
  inset-block-start: 0;
  display: grid;
  place-items: center;
  inline-size: var(--lv-space-6);
  block-size: var(--lv-space-6);
  border-radius: var(--lv-radius-pill);
  background: var(--lv-brand-soft);
  color: var(--lv-brand-strong);
  font: var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-mono);
  font-variant-numeric: tabular-nums;
}

/* The connector, drawn from the marker rather than between the items, so the
   last step has no dangling tail. */
.lv-steps > li:not(:last-child)::after {
  content: '';
  position: absolute;
  inset-inline-start: calc(var(--lv-space-6) / 2);
  inset-block: var(--lv-space-6) calc(var(--lv-space-5) * -1);
  inline-size: 1px;
  background: var(--lv-line);
}

.lv-steps--marker-none > li::before,
.lv-steps--marker-date > li::before { content: none; }
.lv-steps--marker-none > li,
.lv-steps--marker-date > li { padding-inline-start: 0; }
.lv-steps--marker-none > li:not(:last-child)::after,
.lv-steps--marker-date > li:not(:last-child)::after { content: none; }

@container (min-width: 52rem) {
  .lv-steps--horizontal {
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
  }

  .lv-steps--horizontal > li:not(:last-child)::after {
    inset: calc(var(--lv-space-6) / 2) calc(var(--lv-space-5) * -1) auto var(--lv-space-6);
    inline-size: auto;
    block-size: 1px;
  }
}

/* ── Note: a callout inside running text ─────────────────────────────────────
   Deliberately NOT a coloured left stripe — that is the single most
   over-produced pattern in this class of component and the design protocol
   bans it outright. The signal is a hairline box plus a labelled kicker. */

.lv-note {
  max-width: var(--lv-measure);
  padding: var(--lv-space-5);
  border-radius: var(--lv-radius-md);
  background: var(--lv-surface-raised);
  box-shadow: inset 0 0 0 1px var(--lv-line);
}

.lv-note--warn { background: var(--lv-warn-surface); color: var(--lv-warn-text); }
.lv-note--ok { background: var(--lv-ok-surface); color: var(--lv-ok-text); }
.lv-note--bad { background: var(--lv-bad-surface); color: var(--lv-bad-text); }

.lv-note__kicker {
  display: block;
  margin-block-end: var(--lv-space-2);
  font: var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-ui);
  letter-spacing: var(--lv-tracking-eyebrow);
  text-transform: uppercase;
}

/* ── Quote ───────────────────────────────────────────────────────────────── */

.lv-quote {
  max-width: var(--lv-measure);
  margin: 0;
}

.lv-quote__text {
  margin: 0;
  font-size: var(--lv-text-lg);
  line-height: var(--lv-leading-snug);
  color: var(--lv-text-primary);
  text-wrap: pretty;
}

.lv-quote--display .lv-quote__text {
  font-size: var(--lv-text-xl);
  font-weight: var(--lv-weight-medium);
}

.lv-quote__by {
  display: flex;
  align-items: center;
  gap: var(--lv-space-3);
  margin-block-start: var(--lv-space-4);
  font-size: var(--lv-text-sm);
  color: var(--lv-text-tertiary);
}

/* ── Portrait ────────────────────────────────────────────────────────────── */

.lv-portrait {
  flex: none;
  inline-size: var(--lv-portrait-size, 3rem);
  block-size: var(--lv-portrait-size, 3rem);
  border-radius: var(--lv-radius-pill);
  object-fit: cover;
  background: var(--lv-surface-sunken);
}

.lv-portrait--lg { --lv-portrait-size: 5.5rem; }

/* ── Figure: one number, one label. Never a card ─────────────────────────── */

.lv-figures {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(10rem, 100%), 1fr));
  gap: var(--lv-space-5);
  margin: 0;
}

.lv-figure__value {
  font-size: var(--lv-text-2xl);
  font-weight: var(--lv-weight-semibold);
  color: var(--lv-text-primary);
}

.lv-figure__label {
  margin: var(--lv-space-1) 0 0;
  font-size: var(--lv-text-sm);
  color: var(--lv-text-tertiary);
}

/* ── Actions row ─────────────────────────────────────────────────────────── */

.lv-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--lv-space-3);
}

/* ── Form block — opaque always, never glass (.impeccable.md §3) ─────────── */

.lv-form {
  display: grid;
  gap: var(--lv-space-4);
  max-width: 34rem;
}

.lv-form__label {
  display: block;
  margin-block-end: var(--lv-space-2);
  font: var(--lv-weight-medium) var(--lv-text-sm) / 1 var(--lv-font-ui);
  color: var(--lv-text-secondary);
}

.lv-form__consent {
  font-size: var(--lv-text-xs);
  color: var(--lv-text-tertiary);
}

/* ── Chart series tokens ─────────────────────────────────────────────────────
   Registry-owned component tokens (LAYER 4). They live here rather than in
   `packages/tokens` because W2-D4 owns the registry and not the token package;
   they should migrate up the next time the token layer moves, unchanged.

   **These four values were computed, not chosen.** The brand lives in a narrow
   cool hue span (`.impeccable.md` §4: 195–260 OKLCH, chroma 0.07–0.11), which
   is hostile to categorical encoding — near hues at similar lightness are
   exactly what a dichromat reader cannot separate. The set below is the output
   of an exhaustive search over that span, scored by the data-viz validator's
   own checks, maximising the worst adjacent ΔE that still passes both modes:

     node scripts/validate_palette.js "#00989b,#0465af,#6b8ae4,#5f53ae" \
          --mode light --surface "#fbfdfe"

     [PASS] Lightness band        all 4 inside L 0.43–0.77
     [PASS] Chroma floor          all 4 >= 0.1
     [PASS] CVD separation        worst adjacent ΔE 14.0 (protan) · tritan 11.6
     [PASS] Normal-vision floor   worst adjacent ΔE 15.7 (normal)
     [PASS] Contrast vs surface   all 4 >= 3:1
     dark mode: same four checks pass; contrast reports the documented sub-3:1
     relief on slots 2 and 4, which is why `prove.chart` ships direct labels AND
     a table view rather than treating either as optional.

   Chroma is 0.14 — above the brand's 0.07–0.11 band. That is deliberate and is
   the one place the band is exceeded: the validator's chroma floor is 0.10 and
   a series at 0.11 could not clear the CVD gate. A chart is the one surface
   where colour carries data rather than mood.

   FIXED ORDER. Slot 1 is always the first series. A filter that removes a
   series never repaints the survivors. There is no slot 5: a fifth series folds
   into "Øvrige" or the chart becomes small multiples. */

:root {
  --lv-chart-1: oklch(60% 0.14 196);
  --lv-chart-2: oklch(50% 0.14 250);
  --lv-chart-3: oklch(65% 0.14 268);
  --lv-chart-4: oklch(50% 0.14 286);
  --lv-chart-grid: var(--lv-line);
  --lv-chart-axis: var(--lv-text-tertiary);
}

/* GENERATED FILE — registry component plane. */
/* components/locate.map/renderers/map.css */
/* Shared by all three locate.map renderers. Class names are BEM-prefixed
   because these rules are global, not Astro-scoped. */

.lv-map {
  container-type: inline-size;
  padding-block: var(--lv-space-8);
}

.lv-map__head {
  max-width: var(--lv-measure);
  margin-block-end: var(--lv-space-6);
}

.lv-map__eyebrow {
  margin: 0 0 var(--lv-space-2);
  font: var(--lv-weight-semibold) var(--lv-text-2xs) / 1 var(--lv-font-ui);
  letter-spacing: var(--lv-tracking-eyebrow);
  text-transform: uppercase;
  color: var(--lv-text-tertiary);
}

.lv-map__title {
  margin: 0;
  font-family: var(--lv-font-ui);
  font-size: var(--lv-text-2xl);
  font-weight: var(--lv-weight-heading);
  letter-spacing: var(--lv-tracking-heading);
  line-height: var(--lv-leading-tight);
  color: var(--lv-text-primary);
}

.lv-map__desc {
  margin: var(--lv-space-3) 0 0;
  color: var(--lv-text-secondary);
  line-height: var(--lv-leading-normal);
}

/* Map left, addresses right — the list is the part that has to stay readable
   when the map fails to load, so it is never overlaid on it. */
.lv-map__body {
  display: grid;
  gap: var(--lv-space-6);
  grid-template-columns: minmax(0, 1fr);
}

@container (min-width: 780px) {
  .lv-map__body {
    grid-template-columns: minmax(0, 3fr) minmax(16rem, 2fr);
    align-items: start;
  }
}

.lv-map__frame {
  block-size: var(--lv-map-height);
  border-radius: var(--lv-radius-lg);
  border: 1px solid var(--lv-line);
  background: var(--lv-surface-sunken);
}

.lv-map__list {
  display: flex;
  flex-direction: column;
  gap: var(--lv-space-5);
  margin: 0;
  padding: 0;
  list-style: none;
}

.lv-map__entry {
  padding-block-end: var(--lv-space-5);
  border-block-end: 1px solid var(--lv-line);
}

.lv-map__entry:last-child {
  padding-block-end: 0;
  border-block-end: 0;
}

.lv-map__entry-title {
  margin: 0 0 var(--lv-space-2);
  font-size: var(--lv-text-md);
  font-weight: var(--lv-weight-semibold);
  color: var(--lv-text-primary);
}

.lv-map__entry-line,
.lv-map__entry-hours {
  margin: 0;
  color: var(--lv-text-secondary);
  font-size: var(--lv-text-sm);
  line-height: var(--lv-leading-normal);
}

.lv-map__entry-hours {
  font-variant-numeric: tabular-nums;
  color: var(--lv-text-tertiary);
}

.lv-map__entry-link {
  display: inline-block;
  margin-block-start: var(--lv-space-2);
  color: var(--lv-text-link);
  font-size: var(--lv-text-sm);
}

.lv-map__entry-link:focus-visible {
  outline: var(--lv-focus-width) solid var(--lv-focus-ring);
  outline-offset: var(--lv-focus-offset);
}

.lv-map__empty {
  display: flex;
  flex-direction: column;
  align-items: start;
  gap: var(--lv-space-3);
  max-width: 48ch;
  padding: var(--lv-space-7);
  border: 1px dashed var(--lv-line-strong);
  border-radius: var(--lv-radius-lg);
  background: var(--lv-surface-raised);
}

.lv-map__empty-title {
  margin: 0;
  font-size: var(--lv-text-md);
  font-weight: var(--lv-weight-semibold);
  color: var(--lv-text-primary);
}

.lv-map__empty-body {
  margin: 0;
  color: var(--lv-text-secondary);
  line-height: var(--lv-leading-normal);
}

.lv-map__frame--overlay {
  background: var(--lv-canvas-deep);
}

.lv-map__notice {
  margin: 0;
  padding: var(--lv-space-5);
  border: 1px dashed var(--lv-line-strong);
  border-radius: var(--lv-radius-lg);
  color: var(--lv-text-secondary);
  font-size: var(--lv-text-sm);
}

.lv-map--editor {
  min-height: 100dvh;
  padding: 0;
}

.lv-map--editor .lv-map__body,
.lv-map--editor .lv-map__frame {
  width: 100%;
  min-height: 100dvh;
  border: 0;
  border-radius: 0;
}
/* components/act.apply/renderers/apply.astro */
.lv-apply.astro-peuzzxfq{max-width:34rem}.lv-apply__deadline.astro-peuzzxfq{margin-block-start:var(--lv-space-3);font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-apply__row.astro-peuzzxfq{display:grid;gap:var(--lv-space-2);margin:0;max-width:none}.lv-apply__row.astro-peuzzxfq .lv-form__label.astro-peuzzxfq{margin:0}.lv-apply__hint.astro-peuzzxfq{font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-apply__row.astro-peuzzxfq input.astro-peuzzxfq[type=file]{font:inherit;min-block-size:44px}
/* components/act.chat/renderers/entry.astro */
.lv-chat.astro-evqvf6nv{display:grid;gap:var(--lv-space-3);max-width:30rem;padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-chat__state.astro-evqvf6nv{display:flex;align-items:center;gap:var(--lv-space-2);margin:0;font:var(--lv-weight-bold) var(--lv-text-2xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}.lv-chat__state.astro-evqvf6nv .lv-dot.astro-evqvf6nv{background:var(--lv-line-strong)}.lv-chat--open.astro-evqvf6nv .lv-chat__state.astro-evqvf6nv{color:var(--lv-ok-text)}.lv-chat--open.astro-evqvf6nv .lv-dot.astro-evqvf6nv{background:currentColor}.lv-chat--assistant-only.astro-evqvf6nv .lv-chat__state.astro-evqvf6nv{color:var(--lv-warn-text)}.lv-chat--assistant-only.astro-evqvf6nv .lv-dot.astro-evqvf6nv{background:currentColor}
/* components/act.comment/renderers/comments.astro */
.lv-comments.astro-2g6uqoxq{max-width:44rem;margin-block-end:var(--lv-space-7)}.lv-comments__item.astro-2g6uqoxq{display:grid;gap:var(--lv-space-2)}.lv-comments__meta.astro-2g6uqoxq{display:flex;gap:var(--lv-space-3);margin:0;font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-comments__body.astro-2g6uqoxq{margin:0;color:var(--lv-text-primary)}.lv-comments__form.astro-2g6uqoxq{max-width:44rem}.lv-comments__notice.astro-2g6uqoxq{margin-block-end:var(--lv-space-3)}.lv-comments__row.astro-2g6uqoxq{display:grid;margin:0;max-width:none}.lv-comments__row.astro-2g6uqoxq textarea.astro-2g6uqoxq{padding-block:var(--lv-space-3);resize:vertical;font-family:inherit}
/* components/act.commit/renderers/commit.astro */
.lv-commit.astro-uj5qugmz{position:relative;isolation:isolate}.lv-commit--band.astro-uj5qugmz{background:var(--lv-surface-sunken);padding-inline:var(--lv-space-5)}.lv-commit--card.astro-uj5qugmz .lv-commit__inner.astro-uj5qugmz{padding:var(--lv-space-7);border-radius:var(--lv-radius-lg);background:var(--lv-surface);box-shadow:inset 0 0 0 1px var(--lv-line),var(--lv-lift-1)}.lv-commit--inline.astro-uj5qugmz{padding-block:var(--lv-space-6)}.lv-commit--footer.astro-uj5qugmz{background:var(--lv-canvas-deep);color:var(--lv-text-on-brand)}.lv-commit__bg.astro-uj5qugmz{position:absolute;inset:0;z-index:-1;overflow:hidden}.lv-commit__bg.astro-uj5qugmz img.astro-uj5qugmz{inline-size:100%;block-size:100%;object-fit:cover}.lv-commit__bg.astro-uj5qugmz::after{content:"";position:absolute;inset:0;background:rgb(var(--lv-glass-under) / 0.72)}.lv-commit--media.astro-uj5qugmz .lv-commit__title.astro-uj5qugmz,.lv-commit--media.astro-uj5qugmz .lv-sec__lede.astro-uj5qugmz,.lv-commit--media.astro-uj5qugmz .lv-sec__eyebrow.astro-uj5qugmz{color:var(--lv-text-on-brand)}.lv-commit__inner.astro-uj5qugmz{display:grid;gap:var(--lv-space-6);align-items:center}.lv-commit__copy.astro-uj5qugmz{max-width:var(--lv-measure)}.lv-commit__title.astro-uj5qugmz{margin:0;font-size:clamp(var(--lv-text-xl),3.4cqi,2.25rem);color:var(--lv-text-primary)}.lv-commit--footer.astro-uj5qugmz .lv-commit__title.astro-uj5qugmz,.lv-commit--footer.astro-uj5qugmz .lv-sec__lede.astro-uj5qugmz{color:inherit}.lv-commit__actions.astro-uj5qugmz{margin-block-start:var(--lv-space-6)}.lv-commit__person.astro-uj5qugmz{display:flex;align-items:center;gap:var(--lv-space-4)}.lv-commit__person-text.astro-uj5qugmz{display:grid;gap:2px;margin:0;font-size:var(--lv-text-sm)}@container (min-width: 52rem){.lv-commit__inner.astro-uj5qugmz{grid-template-columns:minmax(0,1fr) auto}}
/* components/act.enquire/renderers/form.astro */
.lv-enq__suggestions.astro-iyeqqpku{margin-block-end:var(--lv-space-5)}.lv-enq__form.astro-iyeqqpku{max-width:34rem}.lv-enq__row.astro-iyeqqpku{display:grid;margin:0;max-width:none}.lv-enq__row.astro-iyeqqpku .lv-field.astro-iyeqqpku{align-items:stretch}.lv-enq__row.astro-iyeqqpku textarea.astro-iyeqqpku{padding-block:var(--lv-space-3);resize:vertical;font-family:inherit}
/* components/act.qualify/renderers/questionnaire.astro */
.lv-qual.astro-lsy7l7r4{max-width:38rem}.lv-qual__step.astro-lsy7l7r4{border:0;margin:0;padding:0}.lv-qual__step.astro-lsy7l7r4 legend.astro-lsy7l7r4{padding:0;margin-block-end:var(--lv-space-4)}.lv-qual__questions.astro-lsy7l7r4{display:grid;gap:var(--lv-space-4)}.lv-qual__q.astro-lsy7l7r4{display:grid;margin:0;max-width:none}.lv-qual__opt.astro-lsy7l7r4{cursor:pointer}.lv-qual__opt.astro-lsy7l7r4:has(input:checked){background:var(--lv-brand-soft);box-shadow:inset 0 0 0 1px var(--lv-brand)}
/* components/act.request-quote/renderers/quote.astro */
.lv-quote.astro-56mo3ier{display:grid;gap:var(--lv-space-6);max-width:44rem}.lv-quote__sla.astro-56mo3ier{margin-block-start:var(--lv-space-3);font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-quote__line.astro-56mo3ier{display:grid;gap:var(--lv-space-2) var(--lv-space-4);align-items:center}.lv-quote__line.astro-56mo3ier label.astro-56mo3ier{margin:0}.lv-quote__qty.astro-56mo3ier{display:flex;align-items:center;gap:var(--lv-space-2)}.lv-quote__qty.astro-56mo3ier .lv-field.astro-56mo3ier{inline-size:7rem}.lv-quote__unit.astro-56mo3ier{font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-quote__contact.astro-56mo3ier{max-width:none}.lv-quote__field.astro-56mo3ier{display:grid;margin:0;max-width:none}@container (min-width: 40rem){.lv-quote__line.astro-56mo3ier{grid-template-columns:minmax(0,1fr) auto}.lv-quote__contact.astro-56mo3ier{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* components/act.schedule/renderers/booking.astro */
.lv-booking.astro-q7vlq4ck{max-width:40rem}.lv-booking__deposit.astro-q7vlq4ck{margin-block-end:var(--lv-space-5)}.lv-booking__group.astro-q7vlq4ck{border:0;margin:0;padding:0}.lv-booking__group.astro-q7vlq4ck legend.astro-q7vlq4ck{padding:0;margin-block-end:var(--lv-space-2)}.lv-booking__opt.astro-q7vlq4ck{cursor:pointer}.lv-booking__opt.astro-q7vlq4ck:has(input:checked){background:var(--lv-brand-soft);box-shadow:inset 0 0 0 1px var(--lv-brand)}.lv-booking__party.astro-q7vlq4ck{display:grid;margin:0;max-width:12rem}
/* components/act.share/renderers/share.astro */
.lv-share.astro-ltwyvqdk{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-3);padding-block:var(--lv-space-4);border-block:1px solid var(--lv-line)}.lv-share__label.astro-ltwyvqdk{font:var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}
/* components/act.subscribe/renderers/subscribe.astro */
.lv-sub--card.astro-qe2sqeib .lv-sub__inner.astro-qe2sqeib{padding:var(--lv-space-6);border-radius:var(--lv-radius-lg);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-sub--banner.astro-qe2sqeib{background:var(--lv-surface-sunken);padding-inline:var(--lv-space-5)}.lv-sub__inner.astro-qe2sqeib{display:grid;gap:var(--lv-space-5);align-items:center}.lv-sub__form.astro-qe2sqeib{display:grid;gap:var(--lv-space-2);max-width:30rem}.lv-sub__row.astro-qe2sqeib{display:flex;flex-wrap:wrap;gap:var(--lv-space-3)}.lv-sub__row.astro-qe2sqeib .lv-field.astro-qe2sqeib{flex:1 1 14rem}@container (min-width: 52rem){.lv-sub--banner.astro-qe2sqeib .lv-sub__inner.astro-qe2sqeib,.lv-sub--inline.astro-qe2sqeib .lv-sub__inner.astro-qe2sqeib{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
/* components/act.transact/renderers/cart.astro */
.lv-cart.astro-b4hgcvhr{display:grid;gap:var(--lv-space-4);max-width:40rem}.lv-cart__line.astro-b4hgcvhr{display:grid;grid-template-columns:minmax(0,1fr) 3rem 6rem;gap:var(--lv-space-3);align-items:baseline}.lv-cart__name.astro-b4hgcvhr a.astro-b4hgcvhr{color:var(--lv-text-primary);text-decoration:none}.lv-cart__name.astro-b4hgcvhr a.astro-b4hgcvhr:hover{text-decoration:underline}.lv-cart__qty.astro-b4hgcvhr,.lv-cart__price.astro-b4hgcvhr{text-align:end;color:var(--lv-text-secondary)}.lv-cart__total.astro-b4hgcvhr{display:flex;justify-content:space-between;gap:var(--lv-space-4);margin:0;padding-block-start:var(--lv-space-3);border-block-start:1px solid var(--lv-line-strong);font-size:var(--lv-text-lg);font-weight:var(--lv-weight-semibold)}.lv-cart__terms.astro-b4hgcvhr{display:grid;gap:var(--lv-space-1);margin:0;font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/assert.personal-note/renderers/note.astro */
.lv-pnote.astro-6zfqlbxp{max-width:var(--lv-measure)}.lv-pnote__by.astro-6zfqlbxp{display:flex;align-items:center;gap:var(--lv-space-4);margin-block-start:var(--lv-space-6);padding-block-start:var(--lv-space-5);border-block-start:1px solid var(--lv-line)}.lv-pnote__name.astro-6zfqlbxp{display:grid;gap:2px;margin:0;font-size:var(--lv-text-sm)}.lv-pnote__sig.astro-6zfqlbxp{margin-inline-start:auto;block-size:3rem;inline-size:auto;opacity:0.8}
/* components/assert.statement/renderers/statement.astro */
.lv-statement.astro-oxl7uqcw{max-width:46rem}.lv-statement--card.astro-oxl7uqcw{padding:var(--lv-space-7)}.lv-statement__text.astro-oxl7uqcw{margin:0;max-width:none;font-size:clamp(var(--lv-text-lg),3.4cqi,2rem);font-weight:var(--lv-weight-medium);line-height:var(--lv-leading-snug);letter-spacing:var(--lv-tracking-heading);color:var(--lv-text-primary);text-wrap:pretty}.lv-statement__support.astro-oxl7uqcw{margin:var(--lv-space-5) 0 0;color:var(--lv-text-secondary)}.lv-statement__sig.astro-oxl7uqcw{margin:var(--lv-space-5) 0 0;font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}
/* components/assert.value-map/renderers/map.astro */
.lv-vmap.astro-ohpcfcrl{display:grid;gap:var(--lv-space-4)}.lv-vmap__cell.astro-ohpcfcrl.is-customer{background:var(--lv-surface-sunken)}.lv-vmap__points.astro-ohpcfcrl{display:grid;gap:var(--lv-space-2);margin:0;padding-inline-start:var(--lv-space-5);color:var(--lv-text-secondary)}@container (min-width: 46rem){.lv-vmap--vp-canvas.astro-ohpcfcrl{grid-template-columns:repeat(2,minmax(0,1fr))}.lv-vmap--bmc.astro-ohpcfcrl{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* components/browse.content-set/renderers/list.astro */
.lv-cset__item.astro-ohstvpyc{position:relative}.lv-cset__rank.astro-ohstvpyc{margin:0;font-size:var(--lv-text-xs);font-weight:var(--lv-weight-bold);color:var(--lv-brand-strong)}.lv-cset__item.astro-ohstvpyc a.astro-ohstvpyc{color:var(--lv-text-primary);text-decoration:none}.lv-cset__item.astro-ohstvpyc a.astro-ohstvpyc:hover{text-decoration:underline}.lv-cset__why.astro-ohstvpyc{margin:var(--lv-space-2) 0 0;font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-cset--rows.astro-ohstvpyc .lv-cset__item.astro-ohstvpyc{display:grid;gap:var(--lv-space-1)}
/* components/browse.downloads/renderers/files.astro */
.lv-files.astro-mergjue3{max-width:48rem}.lv-files__row.astro-mergjue3{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--lv-space-1) var(--lv-space-4);align-items:center}.lv-files__link.astro-mergjue3{display:flex;align-items:center;gap:var(--lv-space-3);min-block-size:44px;color:var(--lv-text-primary);text-decoration:none}.lv-files__link.astro-mergjue3:hover .lv-files__title.astro-mergjue3{text-decoration:underline}.lv-files__type.astro-mergjue3{flex:none;padding:2px var(--lv-space-2);border-radius:var(--lv-radius-sm);background:var(--lv-surface-sunken);font-size:var(--lv-text-2xs);color:var(--lv-text-tertiary);text-transform:uppercase}.lv-files__meta.astro-mergjue3{display:flex;gap:var(--lv-space-3);margin:0;font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/browse.entity-set/renderers/entities.astro */
.lv-ent__top.astro-npmx6avb{display:flex;align-items:center;gap:var(--lv-space-3);margin:0}.lv-ent__score.astro-npmx6avb{font-size:var(--lv-text-lg);font-weight:var(--lv-weight-semibold);color:var(--lv-brand-strong)}.lv-ent.astro-npmx6avb a.astro-npmx6avb{color:var(--lv-text-primary);text-decoration:none}.lv-ent.astro-npmx6avb a.astro-npmx6avb:hover{text-decoration:underline}
/* components/browse.event-set/renderers/events.astro */
.lv-events__item.astro-sgmel5iy{display:grid;gap:var(--lv-space-2) var(--lv-space-5);align-items:start}.lv-events__when.astro-sgmel5iy{display:grid;gap:2px;margin:0;font-size:var(--lv-text-sm);color:var(--lv-text-primary)}@container (min-width: 44rem){.lv-events__item.astro-sgmel5iy{grid-template-columns:12rem minmax(0,1fr) auto;align-items:center}}
/* components/browse.feature-one/renderers/feature.astro */
.lv-feature__price.astro-fnbrv26q{margin:var(--lv-space-4) 0 0;font-size:var(--lv-text-xl);font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary)}.lv-feature__facts.astro-fnbrv26q{margin-block-start:var(--lv-space-5);font-size:var(--lv-text-sm)}.lv-feature__actions.astro-fnbrv26q{margin-block-start:var(--lv-space-6)}
/* components/browse.image-set/renderers/gallery.astro */
.lv-gallery__list.astro-vqv3q2am{display:grid;gap:var(--lv-space-4);margin:0;padding:0;list-style:none;grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr))}.lv-gallery__fig.astro-vqv3q2am{margin:0;position:relative}.lv-gallery--grid.astro-vqv3q2am .lv-media.astro-vqv3q2am{aspect-ratio:4 / 3}.lv-gallery--masonry.astro-vqv3q2am .lv-gallery__list.astro-vqv3q2am{align-items:start}.lv-gallery--masonry.astro-vqv3q2am .lv-media.astro-vqv3q2am{aspect-ratio:auto}.lv-gallery__cap.astro-vqv3q2am{display:block;margin-block-start:var(--lv-space-2);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-gallery--cap-none.astro-vqv3q2am .lv-gallery__cap.astro-vqv3q2am span.astro-vqv3q2am:not(.lv-vh){display:none}.lv-gallery--cap-overlay.astro-vqv3q2am .lv-gallery__cap.astro-vqv3q2am{position:absolute;inset-block-end:var(--lv-space-2);inset-inline-start:var(--lv-space-2);margin:0;padding:2px var(--lv-space-3);border-radius:var(--lv-radius-pill);background:var(--lv-surface);color:var(--lv-text-primary)}@container (min-width: 46rem){.lv-gallery--bento.astro-vqv3q2am .lv-gallery__list.astro-vqv3q2am{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:12rem}.lv-gallery--bento.astro-vqv3q2am .lv-media.astro-vqv3q2am{block-size:100%;aspect-ratio:auto}.lv-gallery--bento.astro-vqv3q2am .lv-gallery__fig.astro-vqv3q2am{block-size:100%}.lv-gallery--bento.astro-vqv3q2am .is-2x1.astro-vqv3q2am{grid-column:span 2}.lv-gallery--bento.astro-vqv3q2am .is-2x2.astro-vqv3q2am{grid-column:span 2;grid-row:span 2}}
/* components/browse.jobs/renderers/jobs.astro */
.lv-jobs.astro-lrvbhrph{max-width:52rem}.lv-jobs__row.astro-lrvbhrph{display:grid;gap:var(--lv-space-1)}.lv-jobs__row.astro-lrvbhrph a.astro-lrvbhrph{color:var(--lv-text-primary);text-decoration:none}.lv-jobs__row.astro-lrvbhrph a.astro-lrvbhrph:hover{text-decoration:underline}.lv-jobs__meta.astro-lrvbhrph{display:flex;flex-wrap:wrap;gap:var(--lv-space-2) var(--lv-space-4);margin:0;font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-jobs__note.astro-lrvbhrph{max-width:var(--lv-measure);margin-block-start:var(--lv-space-5);font-size:var(--lv-text-sm);color:var(--lv-text-secondary)}
/* components/browse.locations/renderers/locations.astro */
.lv-locs.astro-z4skted2{display:grid;gap:var(--lv-space-5)}.lv-locs__search.astro-z4skted2{max-width:26rem}.lv-locs__list.astro-z4skted2{display:grid;gap:var(--lv-space-4);margin:0;padding:0;list-style:none}@container (min-width: 46rem){.lv-locs__list.astro-z4skted2{grid-template-columns:repeat(auto-fit,minmax(min(16rem,100%),1fr))}}
/* components/browse.narrow/renderers/narrow.astro */
.lv-narrow.astro-d7os52sd{display:grid;gap:var(--lv-space-4);padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-narrow__heading.astro-d7os52sd{margin:0}.lv-narrow__facet.astro-d7os52sd{border:0;margin:0;padding:0}.lv-narrow__facet.astro-d7os52sd legend.astro-d7os52sd{padding:0;margin-block-end:var(--lv-space-2)}.lv-narrow__value.astro-d7os52sd{cursor:pointer}.lv-narrow__value.astro-d7os52sd:has(input:checked){background:var(--lv-brand-soft);box-shadow:inset 0 0 0 1px var(--lv-brand)}.lv-narrow__facets.astro-d7os52sd{display:grid;gap:var(--lv-space-4)}.lv-narrow__sort.astro-d7os52sd{display:grid;gap:var(--lv-space-2);margin:0}.lv-narrow__sort.astro-d7os52sd select.astro-d7os52sd{min-block-size:var(--lv-field-height);padding-inline:var(--lv-field-padding-x);border-radius:var(--lv-field-radius);border:1px solid var(--lv-field-border);background:var(--lv-field-bg);color:var(--lv-text-primary);font:inherit}.lv-narrow__actions.astro-d7os52sd{display:flex;flex-wrap:wrap;gap:var(--lv-space-3)}@container (min-width: 52rem){.lv-narrow--above.astro-d7os52sd{grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr));align-items:end}.lv-narrow--above.astro-d7os52sd .lv-narrow__heading.astro-d7os52sd{grid-column:1 / -1}.lv-narrow--above.astro-d7os52sd .lv-narrow__facets.astro-d7os52sd{grid-column:1 / -1;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}}@container (min-width: 60rem){.lv-narrow--sidebar.astro-d7os52sd{position:sticky;inset-block-start:var(--lv-space-5)}}
/* components/browse.product-media/renderers/media.astro */
.lv-pmedia.astro-ab2mx46a{display:grid;gap:var(--lv-space-3)}.lv-pmedia__stage.astro-ab2mx46a{position:relative;display:grid;overflow:hidden;border-radius:var(--lv-radius-md);background:var(--lv-surface-sunken);aspect-ratio:1}.lv-pmedia__frame.astro-ab2mx46a{grid-area:1 / 1;margin:0;opacity:0;pointer-events:none}.lv-pmedia__frame.astro-ab2mx46a:has(.lv-pmedia__radio:checked){opacity:1;pointer-events:auto}.lv-pmedia__frame.astro-ab2mx46a img.astro-ab2mx46a{inline-size:100%;block-size:100%;object-fit:cover;transform-origin:var(--lv-pmedia-x, 50%) var(--lv-pmedia-y, 50%);transition:transform var(--lv-dur-panel) var(--lv-ease)}@media (hover: hover) and (pointer: fine){.lv-pmedia--zoom-inner.astro-ab2mx46a .lv-pmedia__frame.astro-ab2mx46a:hover img.astro-ab2mx46a{transform:scale(2)}}.lv-pmedia__hint.astro-ab2mx46a{position:absolute;inset-block-end:var(--lv-space-3);inset-inline-start:var(--lv-space-3);margin:0;padding:2px var(--lv-space-3);border-radius:var(--lv-radius-pill);background:var(--lv-surface);font-size:var(--lv-text-2xs);color:var(--lv-text-tertiary)}@media (hover: none){.lv-pmedia__hint.astro-ab2mx46a{display:none}}.lv-pmedia__rail.astro-ab2mx46a{display:flex;gap:var(--lv-space-2);margin:0;padding:0;list-style:none;overflow-x:auto}.lv-pmedia__thumb.astro-ab2mx46a{display:block;inline-size:4.5rem;block-size:4.5rem;border-radius:var(--lv-radius-sm);overflow:hidden;cursor:pointer;box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-pmedia__thumb.astro-ab2mx46a img.astro-ab2mx46a{inline-size:100%;block-size:100%;object-fit:cover}.lv-pmedia__radio.astro-ab2mx46a:checked+img.astro-ab2mx46a{outline:none}@container (min-width: 40rem){.lv-pmedia--rail-start.astro-ab2mx46a{grid-template-columns:4.5rem minmax(0,1fr)}.lv-pmedia--rail-start.astro-ab2mx46a .lv-pmedia__stage.astro-ab2mx46a{grid-column:2;grid-row:1}.lv-pmedia--rail-start.astro-ab2mx46a .lv-pmedia__rail.astro-ab2mx46a{grid-column:1;grid-row:1;flex-direction:column;overflow-x:visible}}@media (prefers-reduced-motion: reduce){.lv-pmedia__frame.astro-ab2mx46a img.astro-ab2mx46a{transition:none}}
/* components/browse.product-set/renderers/cards.astro */
.lv-products.astro-fgldmnvg{container-type:inline-size;padding-block:var(--lv-space-8)}.lv-products__head.astro-fgldmnvg{max-width:var(--lv-measure);margin-block-end:var(--lv-space-6)}.lv-products__eyebrow.astro-fgldmnvg{margin:0 0 var(--lv-space-2);font:var(--lv-weight-semibold) var(--lv-text-2xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}.lv-products__title.astro-fgldmnvg{margin:0;font-family:var(--lv-font-ui);font-size:var(--lv-text-2xl);font-weight:var(--lv-weight-heading);letter-spacing:var(--lv-tracking-heading);line-height:var(--lv-leading-tight);color:var(--lv-text-primary)}.lv-products__desc.astro-fgldmnvg{margin:var(--lv-space-3) 0 0;color:var(--lv-text-secondary);line-height:var(--lv-leading-normal)}.lv-products__detail.astro-fgldmnvg{max-width:var(--lv-measure);margin-block-end:var(--lv-space-6);padding-block-start:var(--lv-space-4);border-block-start:1px solid var(--lv-line)}.lv-products__detail-title.astro-fgldmnvg{margin:0;font-size:var(--lv-text-md);font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary)}.lv-products__detail-note.astro-fgldmnvg{margin:var(--lv-space-2) 0 0;font-size:var(--lv-text-sm);color:var(--lv-text-secondary)}.lv-products__list.astro-fgldmnvg{display:grid;gap:var(--lv-space-6);margin:0;padding:0;list-style:none;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr))}@container (min-width: 720px){.lv-products--grid.astro-fgldmnvg .lv-products__list.astro-fgldmnvg{grid-template-columns:repeat(var(--lv-products-columns),minmax(0,1fr))}}.lv-products--list.astro-fgldmnvg .lv-products__list.astro-fgldmnvg{grid-template-columns:minmax(0,1fr)}.lv-products--carousel.astro-fgldmnvg .lv-products__list.astro-fgldmnvg{grid-auto-flow:column;grid-auto-columns:minmax(260px,1fr);grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;padding-block-end:var(--lv-space-3)}.lv-products--carousel.astro-fgldmnvg .lv-products__item.astro-fgldmnvg{scroll-snap-align:start}.lv-products__card.astro-fgldmnvg{display:flex;flex-direction:column;gap:var(--lv-space-3);height:100%}.lv-products--list.astro-fgldmnvg .lv-products__card.astro-fgldmnvg{flex-direction:row;align-items:center;gap:var(--lv-space-5);padding-block-end:var(--lv-space-5);border-block-end:1px solid var(--lv-line)}.lv-products__media.astro-fgldmnvg{position:relative;display:block;overflow:hidden;border-radius:var(--lv-radius-md);background:var(--lv-surface-sunken);aspect-ratio:1}.lv-products--list.astro-fgldmnvg .lv-products__media.astro-fgldmnvg{flex:0 0 8rem}.lv-products__media.astro-fgldmnvg img.astro-fgldmnvg,.lv-products__media-blank.astro-fgldmnvg{display:block;inline-size:100%;block-size:100%;object-fit:cover;transition:transform var(--lv-dur-panel) var(--lv-ease)}.lv-products--hover-zoom-in.astro-fgldmnvg .lv-products__card.astro-fgldmnvg:hover .lv-products__media.astro-fgldmnvg img.astro-fgldmnvg{transform:scale(1.04)}.lv-products--meta-over-image.astro-fgldmnvg .lv-products__card.astro-fgldmnvg{position:relative}.lv-products--meta-over-image.astro-fgldmnvg .lv-products__meta.astro-fgldmnvg{position:absolute;inset-inline:var(--lv-space-3);inset-block-end:var(--lv-space-3);padding:var(--lv-space-3);border-radius:var(--lv-radius-md);background:var(--lv-surface);box-shadow:var(--lv-lift-2)}.lv-products__badge.astro-fgldmnvg{position:absolute;inset-block-start:var(--lv-space-2);inset-inline-start:var(--lv-space-2);padding:2px var(--lv-space-2);border-radius:var(--lv-radius-pill);background:var(--lv-brand);color:var(--lv-text-on-brand);font:var(--lv-weight-semibold) var(--lv-text-2xs) / 1.6 var(--lv-font-mono);font-variant-numeric:tabular-nums}.lv-products__meta.astro-fgldmnvg{display:flex;flex-direction:column;gap:var(--lv-space-2);align-items:start}.lv-products__name.astro-fgldmnvg{margin:0;font-size:var(--lv-text-sm);font-weight:var(--lv-weight-medium);line-height:var(--lv-leading-snug)}.lv-products__name.astro-fgldmnvg a.astro-fgldmnvg{color:var(--lv-text-primary);text-decoration:none}.lv-products__name.astro-fgldmnvg a.astro-fgldmnvg:hover{text-decoration:underline}.lv-products__name.astro-fgldmnvg a.astro-fgldmnvg:focus-visible{outline:var(--lv-focus-width) solid var(--lv-focus-ring);outline-offset:var(--lv-focus-offset)}.lv-products__price.astro-fgldmnvg{display:flex;align-items:baseline;gap:var(--lv-space-2);margin:0;color:var(--lv-text-primary);font-variant-numeric:tabular-nums}.lv-products__was.astro-fgldmnvg{color:var(--lv-text-tertiary);font-size:var(--lv-text-xs)}.lv-products__empty.astro-fgldmnvg{display:flex;flex-direction:column;align-items:start;gap:var(--lv-space-3);max-width:48ch;padding:var(--lv-space-7);border:1px dashed var(--lv-line-strong);border-radius:var(--lv-radius-lg);background:var(--lv-surface-raised)}.lv-products__empty-title.astro-fgldmnvg{margin:0;font-size:var(--lv-text-md);font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary)}.lv-products__empty-body.astro-fgldmnvg{margin:0;color:var(--lv-text-secondary);line-height:var(--lv-leading-normal)}@media (prefers-reduced-motion: reduce){.lv-products__media.astro-fgldmnvg img.astro-fgldmnvg{transition:none}.lv-products--hover-zoom-in.astro-fgldmnvg .lv-products__card.astro-fgldmnvg:hover .lv-products__media.astro-fgldmnvg img.astro-fgldmnvg{transform:none}}
/* components/browse.segment-entry/renderers/segments.astro */
.lv-seg__card.astro-w3beacb4{text-decoration:none;color:inherit;transition:box-shadow var(--lv-dur-state) var(--lv-ease)}.lv-seg__card.astro-w3beacb4:hover{box-shadow:inset 0 0 0 1px var(--lv-line-strong),var(--lv-lift-1)}.lv-seg__label.astro-w3beacb4{font-weight:var(--lv-weight-semibold)}.lv-seg--tiles.astro-w3beacb4 .lv-seg__label.astro-w3beacb4,.lv-seg--cards.astro-w3beacb4 .lv-seg__label.astro-w3beacb4{font-size:var(--lv-text-md)}.lv-seg__count.astro-w3beacb4{font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-seg--list.astro-w3beacb4 .lv-chips.astro-w3beacb4{flex-direction:column;align-items:stretch}@media (prefers-reduced-motion: reduce){.lv-seg__card.astro-w3beacb4{transition:none}}
/* components/chrome.breadcrumbs/renderers/trail.astro */
.lv-trail.astro-t2ugo7l2{display:contents}.lv-trail--standalone.astro-t2ugo7l2{display:block;max-width:var(--lv-measure);margin-inline:auto;padding-inline:var(--lv-space-4);padding-block-start:var(--lv-space-4)}.lv-trail__nav.astro-t2ugo7l2{font-family:var(--lv-font-ui);margin-block-end:var(--lv-space-4)}.lv-trail__list.astro-t2ugo7l2{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-2);margin:0;padding:0;list-style:none;font-size:var(--lv-text-xs)}.lv-trail__item.astro-t2ugo7l2{display:inline-flex;align-items:center;gap:var(--lv-space-2);min-width:0}.lv-trail__sep.astro-t2ugo7l2{color:var(--lv-icon-quiet);user-select:none}.lv-trail__link.astro-t2ugo7l2{color:var(--lv-text-secondary);text-decoration:none;border-block-end:1px solid transparent;transition:color var(--lv-dur-state) var(--lv-ease),border-color var(--lv-dur-state) var(--lv-ease)}.lv-trail__link.astro-t2ugo7l2:hover{color:var(--lv-text-link);border-block-end-color:var(--lv-text-link)}.lv-trail__link.astro-t2ugo7l2:focus-visible{outline:var(--lv-focus-width) solid var(--lv-focus-ring);outline-offset:var(--lv-focus-offset);border-radius:var(--lv-radius-sm)}.lv-trail__current.astro-t2ugo7l2{color:var(--lv-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:28ch}@media (prefers-reduced-motion: reduce){.lv-trail__link.astro-t2ugo7l2{transition:none}}
/* components/decide.answer-objections/renderers/faq.astro */
.lv-faq.astro-yvhufgsr{max-width:52rem}.lv-faq__item.astro-yvhufgsr{border-block-end:1px solid var(--lv-line)}.lv-faq__item.astro-yvhufgsr:first-child{border-block-start:1px solid var(--lv-line)}.lv-faq__q.astro-yvhufgsr{display:flex;align-items:center;justify-content:space-between;gap:var(--lv-space-4);min-block-size:52px;padding-block:var(--lv-space-3);cursor:pointer;font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary);list-style:none}.lv-faq__q.astro-yvhufgsr::-webkit-details-marker{display:none}.lv-faq__q.astro-yvhufgsr::after{content:"";flex:none;inline-size:12px;block-size:2px;background:var(--lv-icon-quiet);box-shadow:0 0 0 0 transparent;position:relative}.lv-faq__q.astro-yvhufgsr::before{content:"";order:2;position:absolute;inset-inline-end:5px;inline-size:2px;block-size:12px;background:var(--lv-icon-quiet);transition:opacity var(--lv-dur-state) var(--lv-ease)}.lv-faq__item.astro-yvhufgsr[open] .lv-faq__q.astro-yvhufgsr::before{opacity:0}.lv-faq__q.astro-yvhufgsr{position:relative}.lv-faq__a.astro-yvhufgsr{padding-block-end:var(--lv-space-5)}@media (prefers-reduced-motion: reduce){.lv-faq__q.astro-yvhufgsr::before{transition:none}}
/* components/decide.calculate/renderers/calculator.astro */
.lv-calc.astro-aadf5tws{display:grid;gap:var(--lv-space-6);align-items:start}.lv-calc__row.astro-aadf5tws{display:grid;margin:0;max-width:none}.lv-calc__out.astro-aadf5tws{display:grid;gap:var(--lv-space-1);padding:var(--lv-space-6);border-radius:var(--lv-radius-lg);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-calc__out-label.astro-aadf5tws{font:var(--lv-weight-bold) var(--lv-text-2xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}.lv-calc__out-value.astro-aadf5tws{font-size:clamp(2rem,7cqi,3rem);font-weight:var(--lv-weight-semibold);line-height:1;color:var(--lv-text-primary)}.lv-calc__out-unit.astro-aadf5tws{color:var(--lv-text-secondary)}.lv-calc__assumption.astro-aadf5tws{margin-block-start:var(--lv-space-4);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}@container (min-width: 46rem){.lv-calc.astro-aadf5tws{grid-template-columns:minmax(0,1fr) minmax(15rem,20rem);gap:var(--lv-space-8)}}
/* components/decide.compare-live-data/renderers/compare.astro */
.lv-live.astro-c6nz424u{display:grid;gap:var(--lv-space-5)}.lv-live__filter.astro-c6nz424u{max-width:24rem}.lv-live__disclosure.astro-c6nz424u{max-width:var(--lv-measure);margin-block-start:var(--lv-space-5);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/decide.compare-options/renderers/compare.astro */
.lv-cmp__opt.astro-jpnacszu,.lv-cmp__crit.astro-jpnacszu{text-align:start}.lv-cmp__opt.astro-jpnacszu{display:table-cell}.lv-cmp__opt.astro-jpnacszu a.astro-jpnacszu{color:var(--lv-text-primary);text-decoration:none}.lv-cmp__opt.astro-jpnacszu a.astro-jpnacszu:hover{text-decoration:underline}.lv-cmp__note.astro-jpnacszu{display:block;font-weight:var(--lv-weight-regular);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-cmp__crit.astro-jpnacszu{position:sticky;inset-inline-start:0;background:var(--lv-surface);font-weight:var(--lv-weight-regular);color:var(--lv-text-secondary)}.is-highlight.astro-jpnacszu{background:var(--lv-brand-soft)}.lv-cmp__verdict.astro-jpnacszu{margin-block-start:var(--lv-space-5)}
/* components/decide.pricing/renderers/pricing.astro */
.lv-price__plan.astro-uid5b3bf.is-featured{box-shadow:inset 0 0 0 2px var(--lv-brand),var(--lv-lift-2)}.lv-price__amount.astro-uid5b3bf{margin:0;font-size:var(--lv-text-2xl);font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary)}.lv-price__features.astro-uid5b3bf{display:grid;gap:var(--lv-space-2);margin:var(--lv-space-3) 0 auto;padding:0;list-style:none;font-size:var(--lv-text-sm)}.lv-price__feature.astro-uid5b3bf{display:flex;align-items:start;gap:var(--lv-space-3);color:var(--lv-text-secondary)}.lv-price__mark.astro-uid5b3bf{flex:none;inline-size:10px;block-size:10px;margin-block-start:6px;border-radius:2px;background:var(--lv-brand)}.lv-price__feature.astro-uid5b3bf.is-out{color:var(--lv-text-tertiary);text-decoration:line-through}.lv-price__feature.astro-uid5b3bf.is-out .lv-price__mark.astro-uid5b3bf{background:none;box-shadow:inset 0 0 0 1px var(--lv-line-strong)}.lv-price__addons.astro-uid5b3bf{margin-block-start:var(--lv-space-6);max-width:40rem}.lv-price__addon.astro-uid5b3bf{display:flex;align-items:center;justify-content:space-between;gap:var(--lv-space-4)}.lv-price__addon-label.astro-uid5b3bf{display:flex;align-items:center;gap:var(--lv-space-3);min-block-size:32px}.lv-price__foot.astro-uid5b3bf{max-width:var(--lv-measure);margin-block-start:var(--lv-space-5);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/decide.recommend/renderers/recommender.astro */
.lv-rec.astro-36hco6rd{display:grid;gap:var(--lv-space-6)}.lv-rec__form.astro-36hco6rd{display:grid;gap:var(--lv-space-5)}.lv-rec__q.astro-36hco6rd{border:0;margin:0;padding:0}.lv-rec__q.astro-36hco6rd legend.astro-36hco6rd{padding:0;margin-block-end:var(--lv-space-3)}.lv-rec__opt.astro-36hco6rd{cursor:pointer}.lv-rec__opt.astro-36hco6rd:has(input:checked){background:var(--lv-brand-soft);box-shadow:inset 0 0 0 1px var(--lv-brand)}.lv-rec__outcomes.astro-36hco6rd{display:grid;gap:var(--lv-space-4)}.lv-rec__outcome.astro-36hco6rd{align-items:start}.lv-rec--answered.astro-36hco6rd .lv-rec__outcome.astro-36hco6rd[hidden]{display:none}@container (min-width: 46rem){.lv-rec__outcomes.astro-36hco6rd{grid-template-columns:repeat(auto-fit,minmax(min(16rem,100%),1fr))}}
/* components/decide.variant-picker/renderers/picker.astro */
.lv-picker.astro-m23bntyl{display:grid;gap:var(--lv-space-4);max-width:34rem}.lv-picker__form.astro-m23bntyl{display:grid;gap:var(--lv-space-4);justify-items:start}.lv-picker__attr.astro-m23bntyl{border:0;margin:0;padding:0}.lv-picker__attr.astro-m23bntyl legend.astro-m23bntyl{padding:0;margin-block-end:var(--lv-space-2)}.lv-picker__value.astro-m23bntyl{cursor:pointer}.lv-picker__value.astro-m23bntyl:has(input:checked){background:var(--lv-brand-soft);box-shadow:inset 0 0 0 1px var(--lv-brand)}.lv-picker__value.astro-m23bntyl.is-out{cursor:not-allowed;color:var(--lv-text-tertiary)}.lv-picker__swatch.astro-m23bntyl{inline-size:16px;block-size:16px;border-radius:var(--lv-radius-pill);box-shadow:inset 0 0 0 1px var(--lv-line-strong)}.lv-picker__out.astro-m23bntyl{font-size:var(--lv-text-2xs);text-transform:uppercase;letter-spacing:var(--lv-tracking-label)}
/* components/explain.audio/renderers/episode.astro */
.lv-audio.astro-xtlxuwqs{display:grid;gap:var(--lv-space-4);max-width:44rem;padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-audio__head.astro-xtlxuwqs{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--lv-space-3)}.lv-audio__player.astro-xtlxuwqs{inline-size:100%}.lv-audio__transcript.astro-xtlxuwqs>summary.astro-xtlxuwqs{cursor:pointer;font-weight:var(--lv-weight-medium);color:var(--lv-text-link);min-block-size:32px}.lv-audio__transcript.astro-xtlxuwqs[open]>summary.astro-xtlxuwqs{margin-block-end:var(--lv-space-3)}
/* components/explain.before-after/renderers/compare.astro */
.lv-ba__pair.astro-nboiqvbl figure.astro-nboiqvbl{position:relative}.lv-ba__cap.astro-nboiqvbl{position:absolute;inset-block-end:var(--lv-space-3);inset-inline-start:var(--lv-space-3);padding:2px var(--lv-space-3);border-radius:var(--lv-radius-pill);background:var(--lv-surface);color:var(--lv-text-primary);font:var(--lv-weight-semibold) var(--lv-text-xs) / 1.8 var(--lv-font-ui)}.lv-ba__slider.astro-nboiqvbl{position:relative;overflow:hidden;border-radius:var(--lv-radius-md);aspect-ratio:16 / 9}.lv-ba__img.astro-nboiqvbl{position:absolute;inset:0;inline-size:100%;block-size:100%;object-fit:cover}.lv-ba__img--clip.astro-nboiqvbl{clip-path:inset(0 calc(100% - var(--lv-ba-pos)) 0 0)}.lv-ba__range.astro-nboiqvbl{position:absolute;inset-block-end:var(--lv-space-5);inset-inline:var(--lv-space-5);inline-size:auto;min-block-size:44px}.lv-ba__labels.astro-nboiqvbl{position:absolute;inset-block-start:var(--lv-space-3);inset-inline:var(--lv-space-3);display:flex;justify-content:space-between;margin:0}.lv-ba__note.astro-nboiqvbl{max-width:var(--lv-measure);margin-block-start:var(--lv-space-4);color:var(--lv-text-secondary)}
/* components/explain.callout/renderers/callout.astro */
.lv-note__body.astro-crtf3wp5 p:last-child{margin-block-end:0}
/* components/explain.capability-bento/renderers/bento.astro */
.lv-bento.astro-g6ekzl4p{display:grid;gap:var(--lv-space-4);margin:0;padding:0;list-style:none;grid-template-columns:minmax(0,1fr)}.lv-bento__tile.astro-g6ekzl4p{justify-content:end}.lv-bento__media.astro-g6ekzl4p{margin-block-end:auto}.lv-bento__link.astro-g6ekzl4p{margin-block-start:var(--lv-space-2)}@container (min-width: 46rem){.lv-bento.astro-g6ekzl4p{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(11rem,auto)}.lv-bento__tile--1x1.astro-g6ekzl4p{grid-column:span 2}.lv-bento__tile--2x1.astro-g6ekzl4p{grid-column:span 4}.lv-bento__tile--1x2.astro-g6ekzl4p{grid-column:span 2;grid-row:span 2}.lv-bento__tile--2x2.astro-g6ekzl4p{grid-column:span 2;grid-row:span 2}}@container (min-width: 68rem){.lv-bento.astro-g6ekzl4p{grid-template-columns:repeat(6,minmax(0,1fr))}.lv-bento__tile--1x1.astro-g6ekzl4p{grid-column:span 2}.lv-bento__tile--2x1.astro-g6ekzl4p{grid-column:span 4}.lv-bento__tile--1x2.astro-g6ekzl4p{grid-column:span 2;grid-row:span 2}.lv-bento__tile--2x2.astro-g6ekzl4p{grid-column:span 4;grid-row:span 2}}
/* components/explain.capability-grid/renderers/grid.astro */
.lv-caps__icon.astro-hl3h37ig{display:grid;place-items:center;inline-size:var(--lv-space-7);block-size:var(--lv-space-7);border-radius:var(--lv-radius-sm);background:var(--lv-brand-soft);color:var(--lv-brand-strong)}.lv-caps--icon-left.astro-hl3h37ig .lv-caps__item.astro-hl3h37ig{display:grid;grid-template-columns:var(--lv-space-7) minmax(0,1fr);gap:var(--lv-space-2) var(--lv-space-4);align-items:start}.lv-caps--icon-left.astro-hl3h37ig .lv-caps__icon.astro-hl3h37ig{grid-row:span 3}.lv-caps--strip.astro-hl3h37ig .lv-grid.astro-hl3h37ig{gap:var(--lv-space-4)}.lv-caps--strip.astro-hl3h37ig .lv-card__body.astro-hl3h37ig{display:none}.lv-caps--strip.astro-hl3h37ig .lv-card__title.astro-hl3h37ig{font-size:var(--lv-text-sm)}
/* components/explain.changelog/renderers/log.astro */
.lv-log.astro-fmksnraa{max-width:52rem}.lv-log__entry.astro-fmksnraa{display:grid;gap:var(--lv-space-2)}.lv-log__meta.astro-fmksnraa{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-3);margin:0;font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-log__kind--added.astro-fmksnraa{background:var(--lv-ok-surface);color:var(--lv-ok-text)}.lv-log__kind--fixed.astro-fmksnraa{background:var(--lv-warn-surface);color:var(--lv-warn-text)}.lv-log__kind--removed.astro-fmksnraa{background:var(--lv-bad-surface);color:var(--lv-bad-text)}.lv-log__body.astro-fmksnraa{margin-block-start:var(--lv-space-2)}
/* components/explain.checklist/renderers/list.astro */
.lv-check.astro-5njhugbd{max-width:var(--lv-measure)}.lv-check__title.astro-5njhugbd{margin-block-end:var(--lv-space-3)}.lv-check__item.astro-5njhugbd{display:grid;gap:var(--lv-space-1)}.lv-check__label.astro-5njhugbd{display:flex;align-items:start;gap:var(--lv-space-3);margin:0;min-block-size:32px;font-weight:var(--lv-weight-medium);color:var(--lv-text-primary)}.lv-check__label.astro-5njhugbd input.astro-5njhugbd{margin-block-start:3px;inline-size:18px;block-size:18px;flex:none}.lv-check__mark.astro-5njhugbd{flex:none;inline-size:18px;block-size:18px;margin-block-start:3px;border-radius:var(--lv-radius-sm);box-shadow:inset 0 0 0 1px var(--lv-line-strong)}.lv-check__note.astro-5njhugbd{margin:0;padding-inline-start:calc(18px + var(--lv-space-3));font-size:var(--lv-text-sm);color:var(--lv-text-secondary)}
/* components/explain.integrations/renderers/integrations.astro */
.lv-integr.astro-er5ma4eq{display:grid;gap:var(--lv-space-7)}.lv-integr__label.astro-er5ma4eq{padding-block-end:var(--lv-space-2);margin-block-end:var(--lv-space-4);border-block-end:1px solid var(--lv-line)}.lv-integr__logo.astro-er5ma4eq{inline-size:2.5rem;block-size:2.5rem;object-fit:contain;object-position:left center}
/* components/explain.narrative-media/renderers/story.astro */
.lv-story__blocks.astro-ifnxmb4c{display:grid;gap:var(--lv-space-8)}.lv-story__title.astro-ifnxmb4c{font-size:var(--lv-text-lg)}.lv-story__media.astro-ifnxmb4c{position:relative}@container (min-width: 46rem){.lv-story--alternating.astro-ifnxmb4c .lv-story__block.astro-ifnxmb4c:nth-child(even)>.astro-ifnxmb4c:first-child{order:2}.lv-story--overlap.astro-ifnxmb4c .lv-story__media.astro-ifnxmb4c{margin-inline-start:calc(var(--lv-space-7) * -1)}.lv-story--layered.astro-ifnxmb4c .lv-story__media.astro-ifnxmb4c{margin-block-start:var(--lv-space-7);box-shadow:var(--lv-lift-3)}.lv-story--layered.astro-ifnxmb4c .lv-story__block.astro-ifnxmb4c:nth-child(even) .lv-story__media.astro-ifnxmb4c{margin-block-start:0;margin-block-end:var(--lv-space-7)}}.lv-story__swap.astro-ifnxmb4c{position:absolute;inset:0;opacity:0;transition:opacity var(--lv-dur-panel) var(--lv-ease)}.lv-story--material.astro-ifnxmb4c .lv-story__block.astro-ifnxmb4c:hover .lv-story__swap.astro-ifnxmb4c,.lv-story--material.astro-ifnxmb4c .lv-story__block.astro-ifnxmb4c:focus-within .lv-story__swap.astro-ifnxmb4c{opacity:1}@media (prefers-reduced-motion: reduce){.lv-story__swap.astro-ifnxmb4c{transition:none}}
/* components/explain.pinned-walkthrough/renderers/pinned.astro */
.lv-pinned__grid.astro-g3wdmnfx{display:grid;gap:var(--lv-space-7)}.lv-pinned__caption.astro-g3wdmnfx{margin-block-start:var(--lv-space-2)}@container (min-width: 52rem){.lv-pinned__grid.astro-g3wdmnfx{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.lv-pinned--end.astro-g3wdmnfx .lv-pinned__pin.astro-g3wdmnfx{order:2}.lv-pinned__pin.astro-g3wdmnfx{position:sticky;inset-block-start:var(--lv-space-6);align-self:start}}
/* components/explain.problem/renderers/problem.astro */
.lv-problem__list.astro-hv4bmycq{max-width:52rem}.lv-problem__item.astro-hv4bmycq{display:grid;gap:var(--lv-space-2)}.lv-problem__turn.astro-hv4bmycq{max-width:var(--lv-measure);margin-block-start:var(--lv-space-6);font-size:var(--lv-text-lg);font-weight:var(--lv-weight-medium);color:var(--lv-text-primary);text-wrap:pretty}
/* components/explain.product-demo/renderers/demo.astro */
.lv-demo.astro-j323odj3{border-radius:var(--lv-radius-lg);background:var(--lv-surface);box-shadow:inset 0 0 0 1px var(--lv-line),var(--lv-lift-2);overflow:hidden}.lv-demo--device.astro-j323odj3{border-radius:var(--lv-radius-xl);max-inline-size:24rem;margin-inline:auto}.lv-demo--none.astro-j323odj3{background:none;box-shadow:none;border-radius:0}.lv-demo__chrome.astro-j323odj3{display:flex;align-items:center;gap:var(--lv-space-4);padding:var(--lv-space-3) var(--lv-space-4);border-block-end:1px solid var(--lv-line);background:var(--lv-surface-sunken)}.lv-demo__dots.astro-j323odj3{inline-size:42px;block-size:10px;border-radius:var(--lv-radius-pill);background:radial-gradient(circle 4px at 5px 5px,var(--lv-line-strong) 100%,transparent 0),radial-gradient(circle 4px at 21px 5px,var(--lv-line-strong) 100%,transparent 0),radial-gradient(circle 4px at 37px 5px,var(--lv-line-strong) 100%,transparent 0)}.lv-demo__url.astro-j323odj3{font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-demo__scenes.astro-j323odj3{display:grid;gap:var(--lv-space-5);padding:var(--lv-space-5)}.lv-demo__cap.astro-j323odj3{display:grid;gap:var(--lv-space-1);margin-block-start:var(--lv-space-3);font-size:var(--lv-text-sm);color:var(--lv-text-secondary)}@container (min-width: 52rem){.lv-demo__scenes.astro-j323odj3{grid-template-columns:repeat(auto-fit,minmax(min(18rem,100%),1fr))}}
/* components/explain.progressive-disclosure/renderers/panels.astro */
.lv-disc__panels.astro-iu43v7vy{max-width:56rem}.lv-disc__panel.astro-iu43v7vy{border-block-end:1px solid var(--lv-line)}.lv-disc__panel.astro-iu43v7vy:first-child{border-block-start:1px solid var(--lv-line)}.lv-disc__summary.astro-iu43v7vy{display:flex;align-items:center;justify-content:space-between;gap:var(--lv-space-4);min-block-size:52px;padding-block:var(--lv-space-3);cursor:pointer;font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary);list-style:none}.lv-disc__summary.astro-iu43v7vy::-webkit-details-marker{display:none}.lv-disc__summary.astro-iu43v7vy::after{content:"";flex:none;inline-size:10px;block-size:10px;border-inline-end:2px solid var(--lv-icon-quiet);border-block-end:2px solid var(--lv-icon-quiet);transform:rotate(45deg);transition:transform var(--lv-dur-state) var(--lv-ease)}.lv-disc__panel.astro-iu43v7vy[open] .lv-disc__summary.astro-iu43v7vy::after{transform:rotate(-135deg)}.lv-disc__body.astro-iu43v7vy{padding-block:0 var(--lv-space-5)}.lv-disc__media.astro-iu43v7vy{margin-block-end:var(--lv-space-4);max-inline-size:32rem}@media (prefers-reduced-motion: reduce){.lv-disc__summary.astro-iu43v7vy::after{transition:none}}
/* components/explain.prose/renderers/prose.astro */
.lv-proseblock--narrow.astro-37bccrgj{max-width:34rem}.lv-proseblock--dropcap.astro-37bccrgj>p:first-of-type::first-letter{float:inline-start;margin-inline-end:var(--lv-space-2);font-size:3.2em;line-height:0.82;font-weight:var(--lv-weight-heading);color:var(--lv-brand-strong)}@container (max-width: 26rem){.lv-proseblock--dropcap.astro-37bccrgj>p:first-of-type::first-letter{float:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;margin:0}}
/* components/explain.pull-quote/renderers/quote.astro */
.lv-quote.astro-kdpnkjon{padding-block:var(--lv-space-5);border-block:1px solid var(--lv-line)}.lv-quote__text.astro-kdpnkjon{border:0;padding:0}.lv-quote__by.astro-kdpnkjon cite.astro-kdpnkjon{font-style:normal}
/* components/explain.roadmap/renderers/board.astro */
.lv-roadmap.astro-4igdh3a7{display:grid;gap:var(--lv-space-6)}.lv-roadmap__label.astro-4igdh3a7{padding-block-end:var(--lv-space-2);border-block-end:2px solid var(--lv-line)}.lv-roadmap__col.astro-4igdh3a7.is-shipped .lv-roadmap__label.astro-4igdh3a7{border-block-end-color:var(--lv-brand)}.lv-roadmap__col.astro-4igdh3a7.is-in-progress .lv-roadmap__label.astro-4igdh3a7{border-block-end-color:var(--lv-brand-soft)}.lv-roadmap__items.astro-4igdh3a7{display:grid;gap:var(--lv-space-3);margin:var(--lv-space-4) 0 0;padding:0;list-style:none;align-content:start}@container (min-width: 46rem){.lv-roadmap.astro-4igdh3a7{grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr))}}
/* components/explain.scroll-pinned-showcase/renderers/showcase.astro */
.lv-showcase__grid.astro-2m4wc6yr{display:grid;gap:var(--lv-space-6)}.lv-showcase__steps.astro-2m4wc6yr{display:grid;gap:var(--lv-space-9);margin:0;padding:0;list-style:none}.lv-showcase__step.astro-2m4wc6yr{display:grid;gap:var(--lv-space-4);scroll-margin-block:var(--lv-space-8)}.lv-showcase__frame.astro-2m4wc6yr{display:none}.lv-showcase__rail.astro-2m4wc6yr{display:none}.lv-showcase__thumb.astro-2m4wc6yr{display:block;inline-size:3.5rem;block-size:3.5rem;border-radius:var(--lv-radius-sm);overflow:hidden;box-shadow:inset 0 0 0 1px var(--lv-line);opacity:0.55;transition:opacity var(--lv-dur-state) var(--lv-ease)}.lv-showcase__thumb.astro-2m4wc6yr img.astro-2m4wc6yr{inline-size:100%;block-size:100%;object-fit:cover}.lv-showcase__thumb.astro-2m4wc6yr[aria-current=true]{opacity:1;box-shadow:inset 0 0 0 2px var(--lv-brand)}@container (min-width: 56rem){.lv-showcase__grid.astro-2m4wc6yr{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;column-gap:var(--lv-space-7);align-items:start}.lv-showcase__steps.astro-2m4wc6yr{grid-column:1;grid-row:1}.lv-showcase__frame.astro-2m4wc6yr{display:block;grid-column:2;grid-row:1;position:sticky;inset-block-start:var(--lv-space-6);aspect-ratio:16 / 9;border-radius:var(--lv-radius-md);background:var(--lv-surface-sunken);overflow:hidden}.lv-showcase--rail.astro-2m4wc6yr .lv-showcase__rail.astro-2m4wc6yr{display:block;grid-column:3;grid-row:1;position:sticky;inset-block-start:var(--lv-space-6)}.lv-showcase__rail.astro-2m4wc6yr ol.astro-2m4wc6yr{display:grid;gap:var(--lv-space-2);margin:0;padding:0;list-style:none}.lv-showcase__media.astro-2m4wc6yr[data-lv-showcase-lifted]{visibility:hidden}}@media (prefers-reduced-motion: reduce){.lv-showcase__thumb.astro-2m4wc6yr{transition:none}}
/* components/explain.sequence/renderers/steps.astro */
.lv-steps__stamp.astro-u7fvoeey{margin:0 0 var(--lv-space-2);font-size:var(--lv-text-xs);font-weight:var(--lv-weight-bold);letter-spacing:var(--lv-tracking-label);text-transform:uppercase;color:var(--lv-brand-strong)}.lv-steps__media.astro-u7fvoeey{margin-block-end:var(--lv-space-3)}
/* components/explain.spec-table/renderers/specs.astro */
.lv-specs.astro-hwfd6nre{max-width:48rem}.lv-specs.astro-hwfd6nre caption.astro-hwfd6nre{text-align:start;margin-block-end:var(--lv-space-5)}.lv-specs__group.astro-hwfd6nre th.astro-hwfd6nre{padding-block:var(--lv-space-4) var(--lv-space-2);font:var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary);text-align:start}.lv-specs.astro-hwfd6nre tbody.astro-hwfd6nre th.astro-hwfd6nre[scope=row]{font-weight:var(--lv-weight-regular);color:var(--lv-text-secondary);text-align:start}.lv-specs__value.astro-hwfd6nre{display:flex;align-items:baseline;gap:var(--lv-space-2);justify-content:end;color:var(--lv-text-primary)}.lv-specs__unit.astro-hwfd6nre{font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-specs__note.astro-hwfd6nre{max-width:var(--lv-measure);margin-block-start:var(--lv-space-4);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/explain.video/renderers/embed.astro */
.lv-video__frame.astro-fmt2ac2w{position:relative;display:grid;place-items:center}.lv-video__play.astro-fmt2ac2w{position:absolute;inset-block-end:var(--lv-space-5);inset-inline-start:var(--lv-space-5)}.lv-video__summary.astro-fmt2ac2w{max-width:var(--lv-measure);margin-block-start:var(--lv-space-4);color:var(--lv-text-secondary)}.lv-video__transcript.astro-fmt2ac2w{margin-block-start:var(--lv-space-3)}
/* components/locate.practical-info/renderers/practical.astro */
.lv-practical.astro-k5u7sa4a{display:grid;gap:var(--lv-space-7);align-items:start}.lv-practical__hours.astro-k5u7sa4a .lv-kv.astro-k5u7sa4a{margin-block-start:var(--lv-space-3)}.lv-practical__fact.astro-k5u7sa4a{display:grid;gap:2px}.lv-practical__value.astro-k5u7sa4a{margin:0;color:var(--lv-text-primary)}@container (min-width: 46rem){.lv-practical.astro-k5u7sa4a{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
/* components/open.atmosphere/renderers/scene.astro */
.lv-scene.astro-e6euaccx{position:relative;isolation:isolate;display:grid;align-content:end;min-block-size:70svh;padding:var(--lv-space-8) var(--lv-space-6);overflow:hidden;color:var(--lv-text-on-brand)}.lv-scene.astro-e6euaccx::before{content:"";position:absolute;inset:0;z-index:-2;background:radial-gradient(120% 90% at 12% 0%,var(--lv-scene-a) 0%,transparent 66%),radial-gradient(110% 80% at 92% 8%,var(--lv-scene-b) 0%,transparent 62%),var(--lv-canvas-deep)}.lv-scene--workshop.astro-e6euaccx{--lv-scene-a: var(--lv-navy-700);--lv-scene-b: var(--lv-teal-800)}.lv-scene--coast.astro-e6euaccx{--lv-scene-a: var(--lv-teal-700);--lv-scene-b: var(--lv-navy-800)}.lv-scene--kitchen.astro-e6euaccx{--lv-scene-a: var(--lv-navy-800);--lv-scene-b: var(--lv-teal-600)}.lv-scene--forest.astro-e6euaccx{--lv-scene-a: var(--lv-teal-800);--lv-scene-b: var(--lv-navy-950)}.lv-scene--city-night.astro-e6euaccx{--lv-scene-a: var(--lv-navy-950);--lv-scene-b: var(--lv-navy-700)}.lv-scene--studio.astro-e6euaccx{--lv-scene-a: var(--lv-navy-600);--lv-scene-b: var(--lv-teal-700)}.lv-scene__media.astro-e6euaccx{position:absolute;inset:0;z-index:-1}.lv-scene__media.astro-e6euaccx img.astro-e6euaccx{inline-size:100%;block-size:100%;object-fit:cover}.lv-scene__media.astro-e6euaccx::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgb(var(--lv-glass-under) / var(--lv-scene-scrim, 0.78)) 0%,rgb(var(--lv-glass-under) / calc(var(--lv-scene-scrim, 0.78) * 0.3)) 68%)}.lv-scene--scrim-soft.astro-e6euaccx{--lv-scene-scrim: 0.55}.lv-scene__copy.astro-e6euaccx{max-width:var(--lv-measure)}.lv-scene__title.astro-e6euaccx{margin:0;font-size:clamp(var(--lv-text-xl),6cqi,3.5rem);color:inherit}.lv-scene__lede.astro-e6euaccx{margin:var(--lv-space-4) 0 var(--lv-space-6);font-size:var(--lv-text-lg);color:inherit;opacity:0.9}
/* components/open.editorial/renderers/masthead.astro */
.lv-masthead__title.astro-3hbe6dmh{font-size:clamp(var(--lv-text-xl),4.2cqi,2.75rem)}.lv-masthead__deck.astro-3hbe6dmh{font-size:var(--lv-text-lg)}.lv-masthead__by.astro-3hbe6dmh{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-3) var(--lv-space-5);max-width:var(--lv-measure);padding-block-end:var(--lv-space-5);border-block-end:1px solid var(--lv-line)}.lv-masthead__by-text.astro-3hbe6dmh{display:flex;flex-direction:column;gap:2px;margin:0}.lv-masthead__author.astro-3hbe6dmh{font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary);text-decoration:none}.lv-masthead__author.astro-3hbe6dmh:hover{text-decoration:underline}.lv-masthead__role.astro-3hbe6dmh{font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-masthead__stamp.astro-3hbe6dmh{display:flex;flex-wrap:wrap;gap:var(--lv-space-4);margin:0;margin-inline-start:auto;font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-masthead__media.astro-3hbe6dmh{margin:var(--lv-space-6) 0 0}
/* components/open.entity/renderers/profile.astro */
.lv-entity.astro-hxo5rkx7{display:grid;gap:var(--lv-space-6);align-items:start}.lv-entity__media.astro-hxo5rkx7{max-inline-size:16rem}.lv-entity__rating.astro-hxo5rkx7{display:flex;align-items:baseline;gap:var(--lv-space-2);margin-block-start:var(--lv-space-4);font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-entity__rating-value.astro-hxo5rkx7{font-size:var(--lv-text-xl);color:var(--lv-text-primary)}.lv-entity__facts.astro-hxo5rkx7{margin-block-start:var(--lv-space-5)}.lv-entity__actions.astro-hxo5rkx7{margin-block-start:var(--lv-space-6)}@container (min-width: 46rem){.lv-entity.astro-hxo5rkx7{grid-template-columns:16rem minmax(0,1fr)}}
/* components/open.listing/renderers/header.astro */
.lv-index.astro-topsee3x{display:grid;gap:var(--lv-space-6);align-items:end}.lv-index__head.astro-topsee3x{margin-block-end:0}.lv-index__count.astro-topsee3x{margin-block-start:var(--lv-space-4);font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-index__search.astro-topsee3x .lv-btn.astro-topsee3x span.astro-topsee3x{max-width:12ch;overflow:hidden;text-overflow:ellipsis}@container (min-width: 52rem){.lv-index.astro-topsee3x{grid-template-columns:minmax(0,1fr) minmax(18rem,24rem)}}
/* components/open.pitch/renderers/pitch.astro */
.lv-hero.astro-ggkms7zt{position:relative;isolation:isolate;padding-block:var(--lv-space-9)}.lv-hero--compact.astro-ggkms7zt{padding-block:var(--lv-space-7)}.lv-hero--tall.astro-ggkms7zt{padding-block:calc(var(--lv-space-9) * 1.6)}.lv-hero__bg.astro-ggkms7zt{position:absolute;inset:0;z-index:-1;overflow:hidden}.lv-hero__bg.astro-ggkms7zt img.astro-ggkms7zt{inline-size:100%;block-size:100%;object-fit:cover}.lv-hero--scrim-soft.astro-ggkms7zt .lv-hero__bg.astro-ggkms7zt::after,.lv-hero--scrim-strong.astro-ggkms7zt .lv-hero__bg.astro-ggkms7zt::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgb(var(--lv-glass-under) / var(--lv-hero-scrim, 0.62)) 0%,rgb(var(--lv-glass-under) / calc(var(--lv-hero-scrim, 0.62) * 0.45)) 72%)}.lv-hero--scrim-strong.astro-ggkms7zt{--lv-hero-scrim: 0.82}.lv-hero--scrim-soft.astro-ggkms7zt .lv-hero__title.astro-ggkms7zt,.lv-hero--scrim-strong.astro-ggkms7zt .lv-hero__title.astro-ggkms7zt,.lv-hero--scrim-soft.astro-ggkms7zt .lv-hero__lede.astro-ggkms7zt,.lv-hero--scrim-strong.astro-ggkms7zt .lv-hero__lede.astro-ggkms7zt,.lv-hero--scrim-soft.astro-ggkms7zt .lv-sec__eyebrow.astro-ggkms7zt,.lv-hero--scrim-strong.astro-ggkms7zt .lv-sec__eyebrow.astro-ggkms7zt{color:var(--lv-text-on-brand)}.lv-hero__inner.astro-ggkms7zt{display:grid;gap:var(--lv-space-7)}.lv-hero__copy.astro-ggkms7zt{max-width:var(--lv-measure)}.lv-hero--centered.astro-ggkms7zt .lv-hero__copy.astro-ggkms7zt{margin-inline:auto;text-align:center}.lv-hero__title.astro-ggkms7zt{margin:0;font-size:clamp(var(--lv-text-2xl),5cqi,3.25rem);color:var(--lv-text-primary)}.lv-hero__lede.astro-ggkms7zt{margin-block-start:var(--lv-space-4);font-size:var(--lv-text-lg);color:var(--lv-text-secondary);line-height:var(--lv-leading-normal)}.lv-hero__actions.astro-ggkms7zt{display:flex;flex-wrap:wrap;gap:var(--lv-space-3);margin-block-start:var(--lv-space-6)}.lv-hero--centered.astro-ggkms7zt .lv-hero__actions.astro-ggkms7zt{justify-content:center}.lv-hero__stats.astro-ggkms7zt{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(9rem,100%),1fr));gap:var(--lv-space-5);margin:0;padding-block-start:var(--lv-space-5);border-block-start:1px solid var(--lv-line)}.lv-hero__stat-value.astro-ggkms7zt{font-size:var(--lv-text-xl);font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary)}.lv-hero__stat-label.astro-ggkms7zt{margin:var(--lv-space-1) 0 0;font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}@container (min-width: 56rem){.lv-hero--stat-rail.astro-ggkms7zt .lv-hero__inner.astro-ggkms7zt{grid-template-columns:minmax(0,1.6fr) minmax(14rem,0.9fr);align-items:end}.lv-hero--stat-rail.astro-ggkms7zt .lv-hero__stats.astro-ggkms7zt{grid-template-columns:minmax(0,1fr);border-block-start:0;border-inline-start:1px solid var(--lv-line);padding-block-start:0;padding-inline-start:var(--lv-space-5)}}
/* components/orient.answer-first/renderers/answer.astro */
.lv-answer__box.astro-eqcacd5p{max-width:var(--lv-measure);padding:var(--lv-space-6);border-radius:var(--lv-radius-lg);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-answer__q.astro-eqcacd5p{margin:0 0 var(--lv-space-3);font-size:var(--lv-text-lg)}.lv-answer__a.astro-eqcacd5p{font-size:var(--lv-text-md)}.lv-answer__bullets.astro-eqcacd5p{margin:var(--lv-space-4) 0 0;padding-inline-start:var(--lv-space-5);display:grid;gap:var(--lv-space-2);color:var(--lv-text-secondary)}.lv-answer__paths.astro-eqcacd5p{margin-block-start:var(--lv-space-5)}.lv-answer__source.astro-eqcacd5p{margin:var(--lv-space-5) 0 0;padding-block-start:var(--lv-space-4);border-block-start:1px solid var(--lv-line);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/orient.jump-nav/renderers/nav.astro */
.lv-jump.astro-kywt5mm5{max-width:var(--lv-measure);padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-jump__title.astro-kywt5mm5{margin:0 0 var(--lv-space-3);font:var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}.lv-jump__short.astro-kywt5mm5{margin:0 0 var(--lv-space-4);padding-block-end:var(--lv-space-4);border-block-end:1px solid var(--lv-line);color:var(--lv-text-primary);font-weight:var(--lv-weight-medium)}.lv-jump__list.astro-kywt5mm5{display:grid;gap:var(--lv-space-2);margin:0;padding:0;list-style:none;counter-reset:lv-jump}.lv-jump__list.astro-kywt5mm5>li.astro-kywt5mm5{counter-increment:lv-jump}.lv-jump__link.astro-kywt5mm5{display:flex;gap:var(--lv-space-3);min-block-size:32px;align-items:center;color:var(--lv-text-link);text-decoration:none}.lv-jump__link.astro-kywt5mm5::before{content:counter(lv-jump,decimal-leading-zero);font:var(--lv-weight-medium) var(--lv-text-xs) / 1 var(--lv-font-mono);color:var(--lv-text-tertiary);font-variant-numeric:tabular-nums}.lv-jump__link.astro-kywt5mm5:hover{text-decoration:underline}@media (pointer: coarse){.lv-jump__link.astro-kywt5mm5{min-block-size:44px}}@container (min-width: 60rem){.lv-jump--sticky-rail.astro-kywt5mm5{position:sticky;inset-block-start:var(--lv-space-5)}}
/* components/orient.language-region/renderers/switcher.astro */
.lv-lang.astro-wqh5m37v{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-3);padding-block:var(--lv-space-4)}.lv-lang__label.astro-wqh5m37v{font:var(--lv-weight-bold) var(--lv-text-xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}.lv-lang__current.astro-wqh5m37v{font-size:var(--lv-text-sm);font-weight:var(--lv-weight-semibold)}.lv-lang__list.astro-wqh5m37v .astro-wqh5m37v[aria-current=true]{background:var(--lv-brand-soft);box-shadow:inset 0 0 0 1px var(--lv-brand)}
/* components/orient.progress/renderers/indicator.astro */
.lv-progress__bar.astro-rvpainuc{position:sticky;inset-block-start:0;z-index:var(--lv-z-bar);block-size:3px;background:var(--lv-line)}.lv-progress__bar.astro-rvpainuc::after{content:"";display:block;block-size:100%;transform-origin:0 50%;background:var(--lv-ramp);animation:lv-progress-scroll linear;animation-timeline:scroll()}@keyframes lv-progress-scroll{from{transform:scaleX(0)}to{transform:scaleX(1)}}.lv-progress__steps.astro-rvpainuc{display:grid;gap:var(--lv-space-4);margin:var(--lv-space-4) 0 0;padding:0;list-style:none}.lv-progress__step.astro-rvpainuc{display:flex;align-items:center;gap:var(--lv-space-3);color:var(--lv-text-tertiary)}.lv-progress__dot.astro-rvpainuc{inline-size:10px;block-size:10px;border-radius:var(--lv-radius-pill);background:var(--lv-line-strong);flex:none}.lv-progress__step.astro-rvpainuc.is-done{color:var(--lv-text-secondary)}.lv-progress__step.astro-rvpainuc.is-done .lv-progress__dot.astro-rvpainuc{background:var(--lv-brand)}.lv-progress__step.astro-rvpainuc.is-current{color:var(--lv-text-primary);font-weight:var(--lv-weight-semibold)}.lv-progress__step.astro-rvpainuc.is-current .lv-progress__dot.astro-rvpainuc{background:var(--lv-brand);box-shadow:0 0 0 4px var(--lv-brand-soft)}@container (min-width: 46rem){.lv-progress__steps.astro-rvpainuc{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}}@media (prefers-reduced-motion: reduce){.lv-progress__bar.astro-rvpainuc::after{animation:none;transform:scaleX(1)}}
/* components/orient.site-notice/renderers/bar.astro */
.lv-notice.astro-pvwqwkbs{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--lv-space-2) var(--lv-space-5);padding:var(--lv-space-3) var(--lv-space-5);background:var(--lv-surface-sunken);color:var(--lv-text-primary);font-size:var(--lv-text-sm);text-align:center}.lv-notice--warn.astro-pvwqwkbs{background:var(--lv-warn-surface);color:var(--lv-warn-text)}.lv-notice--urgent.astro-pvwqwkbs{background:var(--lv-bad-surface);color:var(--lv-bad-text)}.lv-notice__text.astro-pvwqwkbs{margin:0;max-width:none}.lv-notice__kicker.astro-pvwqwkbs{margin-inline-end:var(--lv-space-2);font:var(--lv-weight-bold) var(--lv-text-2xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase}.lv-notice__link.astro-pvwqwkbs{color:inherit;font-weight:var(--lv-weight-semibold);text-underline-offset:3px}
/* components/orient.trail/renderers/trail.astro */
.lv-trail2.astro-ask4nnt2{font-family:var(--lv-font-ui)}.lv-trail2--standalone.astro-ask4nnt2{max-width:var(--lv-measure);margin-inline:auto;padding-block:var(--lv-space-4)}.lv-trail2--inline.astro-ask4nnt2{display:contents}.lv-trail2__list.astro-ask4nnt2{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-2);margin:0;padding:0;list-style:none;font-size:var(--lv-text-xs)}.lv-trail2__item.astro-ask4nnt2{display:inline-flex;align-items:center;gap:var(--lv-space-2);min-width:0}.lv-trail2__sep.astro-ask4nnt2{color:var(--lv-icon-quiet);user-select:none}.lv-trail2__link.astro-ask4nnt2{color:var(--lv-text-secondary);text-decoration:none;border-block-end:1px solid transparent;transition:color var(--lv-dur-state) var(--lv-ease),border-color var(--lv-dur-state) var(--lv-ease)}.lv-trail2__link.astro-ask4nnt2:hover{color:var(--lv-text-link);border-block-end-color:var(--lv-text-link)}.lv-trail2__current.astro-ask4nnt2{color:var(--lv-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:28ch}@media (prefers-reduced-motion: reduce){.lv-trail2__link.astro-ask4nnt2{transition:none}}
/* components/prove.ai-citations/renderers/citations.astro */
.lv-cites.astro-5nah5ipk{max-width:52rem}.lv-cites__row.astro-5nah5ipk{display:grid;gap:var(--lv-space-2)}.lv-cites__meta.astro-5nah5ipk{display:flex;align-items:baseline;gap:var(--lv-space-3);margin:0;font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-cites__prompt.astro-5nah5ipk{margin:0;font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}.lv-cites__quote.astro-5nah5ipk{margin:0;padding-inline-start:var(--lv-space-4);border-inline-start:1px solid var(--lv-line-strong);color:var(--lv-text-primary);text-wrap:pretty}.lv-cites__method.astro-5nah5ipk{max-width:var(--lv-measure);margin-block-start:var(--lv-space-5);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/prove.authorship/renderers/byline.astro */
.lv-author.astro-jvf5gslb{max-width:var(--lv-measure);color:var(--lv-text-secondary)}.lv-author--card.astro-jvf5gslb{display:grid;gap:var(--lv-space-3);padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-author--strip.astro-jvf5gslb{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-2) var(--lv-space-4);padding-block:var(--lv-space-3);border-block:1px solid var(--lv-line)}.lv-author__role.astro-jvf5gslb{margin:0;font:var(--lv-weight-bold) var(--lv-text-2xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}.lv-author__who.astro-jvf5gslb{display:flex;align-items:center;gap:var(--lv-space-3)}.lv-author__name.astro-jvf5gslb{display:grid;gap:2px;margin:0;font-size:var(--lv-text-sm)}.lv-author__name.astro-jvf5gslb a.astro-jvf5gslb{color:var(--lv-text-primary);text-decoration:none}.lv-author__name.astro-jvf5gslb a.astro-jvf5gslb:hover{text-decoration:underline}.lv-author__cred.astro-jvf5gslb{color:var(--lv-text-tertiary)}.lv-author__statement.astro-jvf5gslb{margin:0}.lv-author__checked.astro-jvf5gslb{margin:0;font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-author--strip.astro-jvf5gslb .lv-portrait.astro-jvf5gslb{--lv-portrait-size: 2rem}
/* components/prove.case-study/renderers/cases.astro */
.lv-cases.astro-cvh23qg4{display:grid;gap:var(--lv-space-8)}.lv-case__narrative.astro-cvh23qg4{display:grid;gap:var(--lv-space-1);margin-block:var(--lv-space-4)}.lv-case__narrative.astro-cvh23qg4 dt.astro-cvh23qg4{font:var(--lv-weight-bold) var(--lv-text-2xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary);margin-block-start:var(--lv-space-3)}.lv-case__narrative.astro-cvh23qg4 dd.astro-cvh23qg4{margin:0;color:var(--lv-text-secondary)}.lv-case__outcomes.astro-cvh23qg4{padding-block:var(--lv-space-4);border-block:1px solid var(--lv-line);margin-block-end:var(--lv-space-4)}
/* components/prove.certification/renderers/certs.astro */
.lv-certs__logo.astro-2bbcazqt{block-size:2.25rem;inline-size:auto;object-position:left center}.lv-certs__kv.astro-2bbcazqt{grid-template-columns:minmax(5.5rem,max-content) 1fr;font-size:var(--lv-text-sm)}.lv-certs__contact.astro-2bbcazqt{max-width:var(--lv-measure);margin-block-start:var(--lv-space-5);font-size:var(--lv-text-sm);color:var(--lv-text-tertiary)}
/* components/prove.chart/renderers/chart.astro */
.lv-chart__legend.astro-m4dxaa47{display:flex;flex-wrap:wrap;gap:var(--lv-space-2) var(--lv-space-5);margin:0 0 var(--lv-space-4);padding:0;list-style:none;font-size:var(--lv-text-sm);color:var(--lv-text-secondary)}.lv-chart__key.astro-m4dxaa47{display:flex;align-items:center;gap:var(--lv-space-2)}.lv-chart__swatch.astro-m4dxaa47{inline-size:12px;block-size:12px;border-radius:3px}.lv-chart__figure.astro-m4dxaa47{margin:0}.lv-chart__svg.astro-m4dxaa47{inline-size:100%;block-size:auto;aspect-ratio:720 / 280;overflow:visible}.lv-chart__grid.astro-m4dxaa47{stroke:var(--lv-chart-grid);stroke-width:1}.lv-chart__tick.astro-m4dxaa47{fill:var(--lv-chart-axis);font-family:var(--lv-font-mono);font-size:11px;font-variant-numeric:tabular-nums}.lv-chart__line.astro-m4dxaa47{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.lv-chart__source.astro-m4dxaa47{display:flex;flex-wrap:wrap;gap:var(--lv-space-2) var(--lv-space-4);margin-block-start:var(--lv-space-3);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-chart__table.astro-m4dxaa47{margin-block-start:var(--lv-space-4)}.lv-chart__table.astro-m4dxaa47>summary.astro-m4dxaa47{cursor:pointer;min-block-size:32px;font-size:var(--lv-text-sm);color:var(--lv-text-link)}.lv-chart__table.astro-m4dxaa47[open]>summary.astro-m4dxaa47{margin-block-end:var(--lv-space-3)}
/* components/prove.customer-voice/renderers/voices.astro */
.lv-voices__list.astro-mytenaww{display:grid;gap:var(--lv-space-5);margin:0;padding:0;list-style:none;grid-template-columns:repeat(auto-fit,minmax(min(19rem,100%),1fr))}.lv-voices--single.astro-mytenaww .lv-voices__list.astro-mytenaww{grid-template-columns:minmax(0,1fr);max-inline-size:46rem}.lv-voices--carousel.astro-mytenaww .lv-voices__list.astro-mytenaww{grid-auto-flow:column;grid-auto-columns:minmax(min(19rem,82%),24rem);grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;padding-block-end:var(--lv-space-3)}.lv-voices--carousel.astro-mytenaww .lv-voices__item.astro-mytenaww{scroll-snap-align:start}.lv-voices__text.astro-mytenaww{font-size:var(--lv-text-md)}.lv-voices--single.astro-mytenaww .lv-voices__text.astro-mytenaww{font-size:var(--lv-text-lg)}.lv-voices__rating.astro-mytenaww{margin:0;font-size:var(--lv-text-lg);font-weight:var(--lv-weight-semibold);color:var(--lv-brand-strong)}.lv-voices__of.astro-mytenaww{font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}.lv-voices__ctx.astro-mytenaww{display:block}
/* components/prove.dataset/renderers/dataset.astro */
.lv-dataset__meta.astro-jg7rvyvz{display:flex;flex-wrap:wrap;gap:var(--lv-space-4);margin-block-start:var(--lv-space-3);font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/prove.numbers/renderers/figures.astro */
.lv-figs--strip.astro-m2ix4a6r .lv-figures.astro-m2ix4a6r{padding-block:var(--lv-space-5);border-block:1px solid var(--lv-line)}.lv-figs--inline.astro-m2ix4a6r .lv-figures.astro-m2ix4a6r{grid-template-columns:minmax(0,1fr);gap:var(--lv-space-3)}.lv-figs--inline.astro-m2ix4a6r .lv-figs__item.astro-m2ix4a6r{display:flex;align-items:baseline;gap:var(--lv-space-3)}.lv-figs--inline.astro-m2ix4a6r .lv-figure__value.astro-m2ix4a6r{font-size:var(--lv-text-lg)}.lv-figs__source.astro-m2ix4a6r{margin:var(--lv-space-2) 0 0;font-size:var(--lv-text-2xs);color:var(--lv-text-tertiary)}
/* components/prove.people/renderers/people.astro */
.lv-people__item.astro-ovyxz3td{gap:var(--lv-space-4)}.lv-people__contact.astro-ovyxz3td{display:flex;flex-wrap:wrap;gap:var(--lv-space-2) var(--lv-space-4);margin:var(--lv-space-2) 0 0;font-size:var(--lv-text-sm)}.lv-people--compact.astro-ovyxz3td .lv-card__body.astro-ovyxz3td{display:none}.lv-people--list.astro-ovyxz3td .lv-grid.astro-ovyxz3td{grid-template-columns:minmax(0,1fr)}.lv-people--list.astro-ovyxz3td .lv-people__item.astro-ovyxz3td,.lv-people--compact.astro-ovyxz3td .lv-people__item.astro-ovyxz3td{flex-direction:row;align-items:start;gap:var(--lv-space-4)}.lv-people--compact.astro-ovyxz3td .lv-portrait--lg.astro-ovyxz3td{--lv-portrait-size: 3rem}
/* components/prove.press/renderers/press.astro */
.lv-press.astro-wscphhoj{max-width:52rem}.lv-press__row.astro-wscphhoj{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--lv-space-1) var(--lv-space-4);align-items:baseline}.lv-press__logo.astro-wscphhoj{grid-row:span 2;block-size:1.75rem;inline-size:auto}.lv-press__outlet.astro-wscphhoj{margin:0;font:var(--lv-weight-bold) var(--lv-text-2xs) / 1 var(--lv-font-ui);letter-spacing:var(--lv-tracking-eyebrow);text-transform:uppercase;color:var(--lv-text-tertiary)}.lv-press__title.astro-wscphhoj{margin:0;font-weight:var(--lv-weight-medium)}.lv-press__title.astro-wscphhoj a.astro-wscphhoj{color:var(--lv-text-primary);text-decoration:none}.lv-press__title.astro-wscphhoj a.astro-wscphhoj:hover{text-decoration:underline}.lv-press__date.astro-wscphhoj{grid-column:2;grid-row:1 / span 2;font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}
/* components/prove.rating-summary/renderers/summary.astro */
.lv-rating.astro-ba36gsrw{display:grid;gap:var(--lv-space-6);align-items:center}.lv-rating__avg.astro-ba36gsrw{margin:var(--lv-space-3) 0 0;font-size:clamp(2.5rem,8cqi,4rem);font-weight:var(--lv-weight-semibold);line-height:1;color:var(--lv-text-primary)}.lv-rating__of.astro-ba36gsrw{font-size:var(--lv-text-md);color:var(--lv-text-tertiary)}.lv-rating__count.astro-ba36gsrw{display:flex;gap:var(--lv-space-2);margin:var(--lv-space-2) 0 0;color:var(--lv-text-secondary)}.lv-rating__source.astro-ba36gsrw{margin:var(--lv-space-1) 0 0;font-size:var(--lv-text-sm)}.lv-rating__dist.astro-ba36gsrw{display:grid;gap:var(--lv-space-2);margin:0}.lv-rating__row.astro-ba36gsrw{display:grid;grid-template-columns:1.5rem minmax(0,1fr);align-items:center;gap:var(--lv-space-3)}.lv-rating__row.astro-ba36gsrw dt.astro-ba36gsrw{color:var(--lv-text-tertiary);font-size:var(--lv-text-sm)}.lv-rating__row.astro-ba36gsrw dd.astro-ba36gsrw{display:flex;align-items:center;gap:var(--lv-space-3);margin:0}.lv-rating__row.astro-ba36gsrw .lv-meter.astro-ba36gsrw{flex:1}.lv-rating__n.astro-ba36gsrw{font-size:var(--lv-text-xs);color:var(--lv-text-tertiary);min-inline-size:3ch;text-align:end}@container (min-width: 44rem){.lv-rating.astro-ba36gsrw{grid-template-columns:minmax(0,14rem) minmax(0,1fr);gap:var(--lv-space-8)}}
/* components/prove.third-party-marks/renderers/marks.astro */
.lv-marks__list.astro-ke5sk3id{display:flex;flex-wrap:wrap;align-items:center;gap:var(--lv-space-5) var(--lv-space-7);margin:0;padding:0;list-style:none}.lv-marks__item.astro-ke5sk3id{display:grid;gap:var(--lv-space-1)}.lv-marks__link.astro-ke5sk3id{display:flex;align-items:center;gap:var(--lv-space-3);color:var(--lv-text-primary);text-decoration:none}.lv-marks__img.astro-ke5sk3id{block-size:2rem;inline-size:auto}.lv-marks--logo.astro-ke5sk3id .lv-marks__img.astro-ke5sk3id+.lv-marks__name.astro-ke5sk3id{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%)}.lv-marks--badge.astro-ke5sk3id .lv-marks__link.astro-ke5sk3id{padding:var(--lv-space-3) var(--lv-space-4);border-radius:var(--lv-radius-md);background:var(--lv-surface);box-shadow:inset 0 0 0 1px var(--lv-line);font-weight:var(--lv-weight-semibold);font-size:var(--lv-text-sm)}.lv-marks__note.astro-ke5sk3id{font-size:var(--lv-text-xs);color:var(--lv-text-tertiary)}@media (prefers-reduced-motion: no-preference){.lv-marks--marquee.astro-ke5sk3id .lv-marks__list.astro-ke5sk3id{flex-wrap:nowrap;overflow:hidden;animation:lv-marks-drift 38s linear infinite}.lv-marks--marquee.astro-ke5sk3id .lv-marks__list.astro-ke5sk3id:hover{animation-play-state:paused}}@keyframes lv-marks-drift{from{transform:none}to{transform:translateX(-50%)}}
/* components/sidebar.cta/renderers/cta.astro */
.lv-swidget.astro-php5gdmr{display:grid;gap:var(--lv-space-3);padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface-raised);box-shadow:inset 0 0 0 1px var(--lv-line)}@container (min-width: 60rem){.lv-swidget--sticky.astro-php5gdmr{position:sticky;inset-block-start:var(--lv-space-5)}}
/* components/sidebar.info/renderers/info.astro */
.lv-sinfo.astro-5bv4dqwo{display:grid;gap:var(--lv-space-3);padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface-sunken)}.lv-sinfo__body.astro-5bv4dqwo{font-size:var(--lv-text-sm)}.lv-sinfo__rows.astro-5bv4dqwo{grid-template-columns:minmax(4rem,max-content) 1fr;font-size:var(--lv-text-sm)}.lv-sinfo__source.astro-5bv4dqwo{margin:0;font-size:var(--lv-text-2xs);color:var(--lv-text-tertiary)}
/* components/sidebar.promote-item/renderers/promote.astro */
.lv-spromote.astro-5vwqfelh{display:grid;gap:var(--lv-space-3);padding:var(--lv-space-5);border-radius:var(--lv-radius-md);background:var(--lv-surface);box-shadow:inset 0 0 0 1px var(--lv-line)}.lv-spromote__price.astro-5vwqfelh{margin:0;font-size:var(--lv-text-lg);font-weight:var(--lv-weight-semibold);color:var(--lv-text-primary)}

/* GENERATED by packages/themes — theme 'simple'. Edit themes/simple/theme.mjs, never this file. */
/* Enkel — Klassisk og uden ornamentik: læsbar typografi, rolige flader og ingen effekter. Standardvalget når et site skal fungere frem for at gøre indtryk. */

/* ── theme overrides ─────────────────────────────────────────────────── */
:root {
  --lv-bad-surface: oklch(93% 0.0254 26);
  --lv-bad-text: oklch(46% 0.16 26);
  --lv-band-tone: var(--lv-ramp);
  --lv-brand: oklch(47% 0.06 220);
  --lv-brand-soft: oklch(93% 0.0085 220);
  --lv-brand-strong: oklch(34% 0.06 220);
  --lv-canvas: oklch(96.6% 0.0006 226);
  --lv-canvas-deep: oklch(93.1% 0.0012 226);
  --lv-canvas-wash-a: oklch(84% 0.0327 220);
  --lv-canvas-wash-alpha: 0.2;
  --lv-canvas-wash-b: oklch(80% 0.0436 254);
  --lv-canvas-wash-c: oklch(87% 0.0212 192);
  --lv-canvas-worst: #e6edef;
  --lv-container-max: 1160px;
  --lv-display-case: none;
  --lv-display-family: var(--lv-font-ui);
  --lv-display-tracking: -0.018em;
  --lv-focus-ring: oklch(50% 0.066 220);
  --lv-foot-ink: var(--lv-text-primary);
  --lv-foot-tone: var(--lv-canvas);
  --lv-glass-tint: 255 255 255;
  --lv-glass-worst: #f4f7f8;
  --lv-gutter: clamp(20px, 5vw, 40px);
  --lv-hero-display: clamp(1.8076rem, 5.4vw, 3.0904rem);
  --lv-icon-quiet: oklch(57.5% 0.0052 226);
  --lv-leading-normal: 1.55;
  --lv-leading-snug: 1.35;
  --lv-leading-tight: 1.08;
  --lv-lift-1: 0 1px 0 0 rgb(var(--lv-shadow-tint) / 0.06);
  --lv-lift-2: 0 1px 0 0 rgb(var(--lv-shadow-tint) / 0.09);
  --lv-lift-3: 0 2px 0 0 rgb(var(--lv-shadow-tint) / 0.11);
  --lv-line: oklch(91% 0.0016 226);
  --lv-line-control: oklch(59.5% 0.0047 226);
  --lv-line-strong: oklch(82.5% 0.0035 226);
  --lv-nav-height: 64px;
  --lv-nav-ink: var(--lv-text-primary);
  --lv-nav-tone: transparent;
  --lv-ok-surface: oklch(93% 0.0159 168);
  --lv-ok-text: oklch(46% 0.1 168);
  --lv-ornament-ink: var(--lv-brand);
  --lv-ornament-size: 18px;
  --lv-radius-lg: 9px;
  --lv-radius-md: 6px;
  --lv-radius-pill: 999px;
  --lv-radius-sm: 4px;
  --lv-radius-xl: 12px;
  --lv-ramp: linear-gradient(135deg, var(--lv-brand-strong) 0%, var(--lv-ramp-terminal) 100%);
  --lv-ramp-terminal: oklch(48% 0.06 246);
  --lv-reveal-distance: 8px;
  --lv-reveal-stagger: 30ms;
  --lv-section-py: 61px;
  --lv-section-py-lg: 91px;
  --lv-shadow-tint: 10 22 42;
  --lv-space-5: 22px;
  --lv-space-6: 30px;
  --lv-space-7: 46px;
  --lv-space-8: 60px;
  --lv-space-9: 92px;
  --lv-surface: oklch(99.5% 0 226);
  --lv-surface-raised: oklch(98.5% 0.0001 226);
  --lv-surface-sunken: oklch(95.2% 0.0006 226);
  --lv-text-2xl: 2.9155rem;
  --lv-text-lg: 1.4875rem;
  --lv-text-link: oklch(47% 0.06 220);
  --lv-text-on-brand: oklch(98.5% 0.008 193);
  --lv-text-primary: oklch(26% 0.0064 226);
  --lv-text-secondary: oklch(43% 0.006 226);
  --lv-text-tertiary: oklch(51% 0.0056 226);
  --lv-text-xl: 2.0825rem;
  --lv-tracking-eyebrow: 0.01em;
  --lv-tracking-heading: -0.018em;
  --lv-warn-surface: oklch(93% 0.0206 62);
  --lv-warn-text: oklch(46% 0.1262 62);
  --lv-weight-heading: 700;
}

:root[data-theme='dark'] {
  --lv-bad-surface: oklch(34% 0.08 26);
  --lv-bad-text: oklch(82% 0.1034 26);
  --lv-band-tone: var(--lv-ramp);
  --lv-brand: oklch(72% 0.06 220);
  --lv-brand-soft: oklch(30% 0.027 220);
  --lv-brand-strong: oklch(34% 0.06 220);
  --lv-canvas: oklch(16% 0.0046 226);
  --lv-canvas-deep: oklch(13% 0.0037 226);
  --lv-canvas-wash-a: oklch(42% 0.045 220);
  --lv-canvas-wash-alpha: 0.16;
  --lv-canvas-wash-b: oklch(38% 0.048 254);
  --lv-canvas-wash-c: oklch(45% 0.036 192);
  --lv-canvas-worst: #11191c;
  --lv-container-max: 1160px;
  --lv-display-case: none;
  --lv-display-family: var(--lv-font-ui);
  --lv-display-tracking: -0.018em;
  --lv-focus-ring: oklch(78% 0.0659 220);
  --lv-foot-ink: var(--lv-text-primary);
  --lv-foot-tone: var(--lv-canvas);
  --lv-glass-tint: 18 26 38;
  --lv-glass-worst: #11191d;
  --lv-gutter: clamp(20px, 5vw, 40px);
  --lv-hero-display: clamp(1.8076rem, 5.4vw, 3.0904rem);
  --lv-icon-quiet: oklch(66% 0.0083 226);
  --lv-leading-normal: 1.55;
  --lv-leading-snug: 1.35;
  --lv-leading-tight: 1.08;
  --lv-lift-1: 0 1px 0 0 rgb(var(--lv-shadow-tint) / 0.06);
  --lv-lift-2: 0 1px 0 0 rgb(var(--lv-shadow-tint) / 0.09);
  --lv-lift-3: 0 2px 0 0 rgb(var(--lv-shadow-tint) / 0.11);
  --lv-line: oklch(30.5% 0.0064 226);
  --lv-line-control: oklch(62% 0.0076 226);
  --lv-line-strong: oklch(39% 0.007 226);
  --lv-nav-height: 64px;
  --lv-nav-ink: var(--lv-text-primary);
  --lv-nav-tone: transparent;
  --lv-ok-surface: oklch(34% 0.05 168);
  --lv-ok-text: oklch(82% 0.0818 168);
  --lv-ornament-ink: var(--lv-brand);
  --lv-ornament-size: 18px;
  --lv-radius-lg: 9px;
  --lv-radius-md: 6px;
  --lv-radius-pill: 999px;
  --lv-radius-sm: 4px;
  --lv-radius-xl: 12px;
  --lv-ramp: linear-gradient(135deg, var(--lv-brand-strong) 0%, var(--lv-ramp-terminal) 100%);
  --lv-ramp-terminal: oklch(48% 0.06 246);
  --lv-reveal-distance: 8px;
  --lv-reveal-stagger: 30ms;
  --lv-section-py: 61px;
  --lv-section-py-lg: 91px;
  --lv-shadow-tint: 4 8 14;
  --lv-space-5: 22px;
  --lv-space-6: 30px;
  --lv-space-7: 46px;
  --lv-space-8: 60px;
  --lv-space-9: 92px;
  --lv-surface: oklch(22% 0.0035 226);
  --lv-surface-raised: oklch(26% 0.0038 226);
  --lv-surface-sunken: oklch(13% 0.003 226);
  --lv-text-2xl: 2.9155rem;
  --lv-text-lg: 1.4875rem;
  --lv-text-link: oklch(72% 0.06 220);
  --lv-text-on-brand: oklch(98.5% 0.008 193);
  --lv-text-primary: oklch(95% 0.0023 226);
  --lv-text-secondary: oklch(78% 0.0096 226);
  --lv-text-tertiary: oklch(70% 0.0089 226);
  --lv-text-xl: 2.0825rem;
  --lv-tracking-eyebrow: 0.01em;
  --lv-tracking-heading: -0.018em;
  --lv-warn-surface: oklch(34% 0.065 62);
  --lv-warn-text: oklch(82% 0.1063 62);
  --lv-weight-heading: 700;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
  --lv-bad-surface: oklch(34% 0.08 26);
  --lv-bad-text: oklch(82% 0.1034 26);
  --lv-brand: oklch(72% 0.06 220);
  --lv-brand-soft: oklch(30% 0.027 220);
  --lv-canvas: oklch(16% 0.0046 226);
  --lv-canvas-deep: oklch(13% 0.0037 226);
  --lv-canvas-wash-a: oklch(42% 0.045 220);
  --lv-canvas-wash-alpha: 0.16;
  --lv-canvas-wash-b: oklch(38% 0.048 254);
  --lv-canvas-wash-c: oklch(45% 0.036 192);
  --lv-canvas-worst: #11191c;
  --lv-focus-ring: oklch(78% 0.0659 220);
  --lv-glass-tint: 18 26 38;
  --lv-glass-worst: #11191d;
  --lv-icon-quiet: oklch(66% 0.0083 226);
  --lv-line: oklch(30.5% 0.0064 226);
  --lv-line-control: oklch(62% 0.0076 226);
  --lv-line-strong: oklch(39% 0.007 226);
  --lv-ok-surface: oklch(34% 0.05 168);
  --lv-ok-text: oklch(82% 0.0818 168);
  --lv-shadow-tint: 4 8 14;
  --lv-surface: oklch(22% 0.0035 226);
  --lv-surface-raised: oklch(26% 0.0038 226);
  --lv-surface-sunken: oklch(13% 0.003 226);
  --lv-text-link: oklch(72% 0.06 220);
  --lv-text-primary: oklch(95% 0.0023 226);
  --lv-text-secondary: oklch(78% 0.0096 226);
  --lv-text-tertiary: oklch(70% 0.0089 226);
  --lv-warn-surface: oklch(34% 0.065 62);
  --lv-warn-text: oklch(82% 0.1063 62);
}
}


.lvt-page {
  min-block-size: 100dvh;
  display: flex;
  flex-direction: column;
  background: var(--lv-canvas);
  color: var(--lv-text-primary);
  font: var(--lv-weight-regular) var(--lv-text-md) / var(--lv-leading-normal) var(--lv-font-ui);
}

.lvt-main { flex: 1 1 auto; }

/* A keyboard user's first Tab lands here. Off-screen until focused — never
   display:none, because a hidden skip link is not a skip link. */
.lvt-skip {
  position: absolute;
  inset-inline-start: var(--lv-space-2);
  inset-block-start: -4rem;
  z-index: var(--lv-z-overlay);
  padding: var(--lv-space-2) var(--lv-space-4);
  border-radius: 0 0 var(--lv-radius-sm) var(--lv-radius-sm);
  background: var(--lv-brand-strong);
  color: var(--lv-text-on-brand);
  font-weight: var(--lv-weight-semibold);
  text-decoration: none;
}
.lvt-skip:focus-visible { inset-block-start: 0; }

:where(.lvt-page) :where(a, button, summary, [tabindex]):focus-visible {
  outline: var(--lv-focus-width, 2px) solid var(--lv-focus-ring);
  outline-offset: var(--lv-focus-offset, 2px);
  border-radius: var(--lv-radius-sm);
}

/* ── The block shell — the seam between the theme and the registry ───────── */

.lvt-shell {
  padding-block: var(--lv-section-py);
  padding-inline: var(--lv-gutter);
}

.lvt-shell > * { max-inline-size: var(--lv-container-max); margin-inline: auto; }

.lvt-shell--loose { padding-block: var(--lv-section-py-lg); }
.lvt-shell--sunken { background: var(--lv-surface-sunken); }

/* A full-bleed brand band. Carries the mark's ramp and inverts the ink — the
   one place a public page goes to full brand colour. No glass: glass on a
   filled band has nothing to refract (saas-glass-theme.md §6). */
.lvt-shell--band {
  background: var(--lv-band-tone);
  color: var(--lv-text-on-brand);
}
.lvt-shell--band :where(h1, h2, h3, p, li) { color: inherit; }

/* Glass on a page section. Budgeted, and the budget is a gate rather than
   advice — see check/index.mjs theme-glass-budget and theme-glass-on-prose. */
.lvt-shell--glass > * {
  padding: var(--lv-space-6);
  border-radius: var(--lv-radius-lg);
}

@media (prefers-reduced-motion: no-preference) {
  .lvt-reveal {
    opacity: 0;
    transform: translateY(var(--lv-reveal-distance));
    transition:
      opacity var(--lv-dur-panel) var(--lv-ease) var(--lv-reveal-delay, 0ms),
      transform var(--lv-dur-panel) var(--lv-ease) var(--lv-reveal-delay, 0ms);
  }
  .lvt-reveal[data-shown] { opacity: 1; transform: none; }
}

/* Nothing may be invisible waiting for an observer that will never fire — the
   failure mode that makes a reduced-motion page blank. */
@media (prefers-reduced-motion: reduce) {
  .lvt-reveal { opacity: 1; transform: none; }
}

/* ── Chrome shared ──────────────────────────────────────────────────────── */

.lvt-nav {
  --lvt-nav-gap: var(--lv-space-5);
  display: flex;
  align-items: center;
  gap: var(--lvt-nav-gap);
  padding-inline: var(--lv-gutter);
  min-block-size: var(--lv-nav-height);
  background: var(--lv-nav-tone);
  color: var(--lv-nav-ink);
}

.lvt-nav__brand {
  font: var(--lv-weight-heading) var(--lv-text-lg) / 1 var(--lv-display-family);
  letter-spacing: var(--lv-display-tracking);
  text-transform: var(--lv-display-case);
  color: inherit;
  text-decoration: none;
}

.lvt-nav__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--lvt-nav-gap);
  align-items: center;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lvt-nav__link {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
  color: inherit;
  font-size: var(--lv-text-sm);
  font-weight: var(--lv-weight-medium);
  text-decoration: none;
}
.lvt-nav__link[aria-current='page'] { font-weight: var(--lv-weight-bold); }

/* One breakpoint and a full-screen overlay — the LPH saas nav's single good
   structural idea, kept (saas-glass-theme.md §2). It is a <details>, so it
   opens, closes on Escape and is operable with no JavaScript at all; the
   renderer adds nothing to make it work. */
.lvt-nav__menu { margin-inline-start: auto; }
.lvt-nav__toggle {
  display: none;
  align-items: center;
  min-block-size: 44px;
  min-inline-size: 44px;
  padding-inline: var(--lv-space-3);
  border: 1px solid var(--lv-line-control);
  border-radius: var(--lv-radius-sm);
  background: transparent;
  color: inherit;
  font: var(--lv-weight-semibold) var(--lv-text-sm) / 1 var(--lv-font-ui);
  cursor: pointer;
  list-style: none;
}
.lvt-nav__toggle::-webkit-details-marker { display: none; }

@media (max-width: 56.25rem) {
  .lvt-nav__toggle { display: inline-flex; }
  .lvt-nav__menu[open] .lvt-nav__links,
  .lvt-nav__menu:not([open]) .lvt-nav__links { position: static; }
  .lvt-nav__menu:not([open]) .lvt-nav__links { display: none; }
  .lvt-nav__menu[open] .lvt-nav__links {
    position: fixed;
    inset: var(--lv-nav-height) 0 0 0;
    z-index: var(--lv-z-overlay);
    flex-direction: column;
    align-items: flex-start;
    gap: var(--lv-space-4);
    padding: var(--lv-space-6) var(--lv-gutter);
    background: var(--lv-surface);
    overflow-y: auto;
  }
  .lvt-nav__menu[open] .lvt-nav__link { font-size: var(--lv-text-lg); }
}

.lvt-foot {
  padding-block: var(--lv-section-py);
  padding-inline: var(--lv-gutter);
  background: var(--lv-foot-tone);
  color: var(--lv-foot-ink);
}
.lvt-foot__inner { max-inline-size: var(--lv-container-max); margin-inline: auto; }
.lvt-foot__links { display: flex; flex-wrap: wrap; gap: var(--lv-space-4); margin: 0; padding: 0; list-style: none; }
.lvt-foot a { color: inherit; }
.lvt-foot__colophon { margin: 0; font-size: var(--lv-text-xs); }
.lvt-foot__figure { font-family: var(--lv-font-mono); font-variant-numeric: tabular-nums; }

/* nav archetype: inline-plain */

.lvt-nav {
  justify-content: space-between;
  background: transparent;
  border-block-end: 1px solid var(--lv-line);
}
.lvt-nav__link { text-underline-offset: 0.35em; text-decoration: underline solid transparent 1px; }
.lvt-nav__link:hover { text-decoration-color: currentColor; }

/* footer archetype: columns */

.lvt-foot { border-block-start: 1px solid var(--lv-line); }
.lvt-foot__inner { display: grid; gap: var(--lv-space-6); grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.lvt-foot__links { flex-direction: column; gap: var(--lv-space-2); }
.lvt-foot__colophon { grid-column: 1 / -1; border-block-start: 1px solid var(--lv-line); padding-block-start: var(--lv-space-4); }

/* ornament device: none */

/* Deliberately empty. A theme whose whole argument is that it gets out of the
   way, and the one device a *second* theme may not also choose — see
   check/axes.mjs. */


