@charset "UTF-8";
/* =============================================================================
   DRC — main stylesheet
   -----------------------------------------------------------------------------
   Import order matters: tokens → base → container → components → the page shell → pages.
   A new partial is not picked up automatically — add it here.
   abstracts/ is not imported here: it prints no CSS. Each partial pulls it in
   with `@use '../abstracts' as *;`.
   ============================================================================= */
/* Barrel: every partial does `@use '../abstracts' as *;` to get tokens, functions and mixins. */
/* =============================================================================
   Design tokens — every value that repeats lives here, once.
   Values come from the Figma variables (docs/figma-map.md, "Design tokens").
   base/_root.scss prints them as CSS variables; components use only var(--…).
   This is the only SCSS file allowed to contain colour values
   (tools/check-tokens.mjs enforces it).
   ============================================================================= */
/* -- fluid range: sizes scale between these viewport widths (px) ------------------------- */
/* -- colour: the palette, each raw value once --------------------------------------------------- */
/* -- colour: semantic — Figma's variable names, pointing at the palette ------------------------- */
/* -- type: Figtree, one entry per Figma text style -------------------------------------------
   size/line: px at 1440+. min: px at 320 for the fluid styles (no min = fixed size).
   tracking: Figma's percentage as em, so it scales with the text.                        */
/* -- spacing: Figma's scale ------------------------------------------------------------------ */
/* -- layout ----------------------------------------------------------------------------------------- */
/* -- controls and lines ---------------------------------------------------------------------- */
/* -- radius ----------------------------------------------------------------------------------------- */
/* -- effects (measured from the Figma layers) ------------------------------------------------- */
/* -- motion ------------------------------------------------------------------------------------------ */
/* -- layers ------------------------------------------------------------------------------------------- */
/* -- breakpoints: structural changes only (desktop-first, mq() in _mixins.scss) ------------------- */
/* -- icon sizes the components use (px): each gets an .icon--N class -------------------------- */
/* Round to 4 decimals so the CSS stays readable: round4(1.8035714) → 1.8036 */
/* 24 or 24px → 24 */
/* px → rem on the 16px root: rem(24) → 1.5rem */
/* A size that grows with the window: $min px at 320px wide, $max px from 1440px up.
   fluid(34, 52) → clamp(2.125rem, 1.8036rem + 1.6071vw, 3.25rem) */
/* Breakpoint lookup: bp(md) → 1024px */
/* =============================================================================
   Mixins — media queries, interaction helpers, and one mixin per Figma text style.
   ============================================================================= */
/* -- media queries, desktop-first: mq(md) → below 1024px; mq-up(md) → 1024px and up ----- */
/* -- hover only where a pointer hovers, so a tap never leaves an element stuck ------------ */
/* -- a linked tile rising on hover and keyboard focus (Industry Links, partner logos): it lifts, its border turns
      pink, its shadow deepens and its picture ($picture, inside it) grows a touch ------------------------------ */
/* -- focus ring on a wrapper whose real control is visually hidden ---------------------------- */
/* -- at least --touch-min (44px) to tap on touch screens, without changing the look --------
   Uses ::after — do not use on an element that needs its own ::after. An element positioned already
   passes null so it keeps its own position.                                                */
/* -- text styles: one per Figma style. Components never set font-size themselves. -------- */
/* -- the check-marked list (Figma's tick list): the prose's ul.ticks, and a block text's plain list ------------ */
/* Every token as a CSS variable on :root. Components read only these. */
:root {
  --white: #ffffff;
  --black: #000000;
  --neutral-50: #fafafa;
  --neutral-500: #8a8a8a;
  --neutral-700: #414141;
  --neutral-800: #262626;
  --neutral-900: #242424;
  --gray-50: #f8f9fb;
  --gray-100: #f3f4f6;
  --gray-200: #e5e7eb;
  --gray-300: #d1d5db;
  --gray-350: #c5c9d0;
  --gray-700: #374151;
  --gray-800: #1f2937;
  --red-50: #fdf1f1;
  --red-100: #f9c4c4;
  --red-200: #f3c2b8;
  --red-500: #e44126;
  --red-600: #c9361c;
  --yellow-400: #fbb929;
  --youtube-red: #ff0000;
  --c-brand-primary: var(--red-500);
  --c-brand-primary-dark: var(--red-600);
  --c-brand-secondary: var(--yellow-400);
  --c-text-primary: var(--neutral-900);
  --c-text-secondary: var(--neutral-700);
  --c-text-muted: var(--neutral-700);
  --c-text-subtle: var(--neutral-500);
  --c-text-brand: var(--red-500);
  --c-text-inverse: var(--white);
  --c-icon-primary: var(--gray-800);
  --c-icon-secondary: var(--gray-700);
  --c-icon-disabled: var(--gray-350);
  --c-icon-brand: var(--red-500);
  --c-icon-inverse: var(--white);
  --c-bg-primary: var(--white);
  --c-bg-secondary: var(--gray-100);
  --c-bg-subtle: var(--gray-50);
  --c-bg-brand: var(--red-500);
  --c-bg-brand-subtle: var(--red-50);
  --c-surface-default: var(--white);
  --c-surface-subtle: var(--neutral-50);
  --c-surface-inverse: var(--neutral-800);
  --c-surface-overlay: var(--black);
  --c-border-subtle: var(--gray-200);
  --c-border-default: var(--gray-300);
  --c-border-brand: var(--red-500);
  --c-border-selected: var(--red-100);
  --c-border-inverse: var(--white);
  --c-action-primary: var(--red-500);
  --c-action-primary-hover: var(--red-600);
  --c-action-disabled: var(--red-200);
  --c-action-secondary: var(--white);
  --c-state-selected-bg: var(--red-50);
  --c-state-selected-border: var(--red-100);
  --c-state-hover-bg: var(--white);
  --c-error: var(--red-600);
  --c-focus: var(--red-500);
  --c-video-play: var(--youtube-red);
  /* Text and icon colours for surfaces that are always white (secondary buttons). Declared here only, so
     they keep :root's values: a band that inverts --c-text-primary cannot turn a white button's label white. */
  --c-on-light-text: var(--c-text-primary);
  --c-on-light-icon: var(--c-icon-primary);
  --font-sans: Figtree, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
  --fs-display-l: clamp(2.125rem, 1.8036rem + 1.6071vw, 3.25rem);
  --lh-display-l: 1;
  --fs-h1: clamp(2rem, 1.7143rem + 1.4286vw, 3rem);
  --lh-h1: 1;
  --fs-h2: clamp(1.875rem, 1.6607rem + 1.0714vw, 2.625rem);
  --lh-h2: 1.0476;
  --fs-h3: clamp(1.5rem, 1.3571rem + 0.7143vw, 2rem);
  --lh-h3: 1.125;
  --fs-h4: clamp(1.1875rem, 1.1339rem + 0.2679vw, 1.375rem);
  --lh-h4: 1.0909;
  --fs-h5: 1rem;
  --lh-h5: 1.1875;
  --fs-h6: 0.8125rem;
  --lh-h6: 1.2308;
  --fs-body-l: clamp(1rem, 0.9643rem + 0.1786vw, 1.125rem);
  --lh-body-l: 1.3333;
  --fs-body: 1rem;
  --lh-body: 1.25;
  --fs-body-s: 0.8125rem;
  --lh-body-s: 1.5385;
  --fs-body-xs: 0.6406rem;
  --lh-body-xs: 1.561;
  --fs-label-nav: 0.9375rem;
  --lh-label-nav: 1.3333;
  --fs-label-button: 0.9375rem;
  --lh-label-button: 1.3333;
  --fs-label-button-s: 0.875rem;
  --lh-label-button-s: 1.2857;
  --fs-eyebrow: 0.875rem;
  --lh-eyebrow: 1.2857;
  --fs-eyebrow-s: 0.6875rem;
  --lh-eyebrow-s: 1.2727;
  --fs-metadata: 0.75rem;
  --lh-metadata: 1.3333;
  --fs-numeral-l: 1.625rem;
  --lh-numeral-l: 1.0769;
  --fs-label-process: 1rem;
  --lh-label-process: 1.1875;
  --fs-body-relaxed: 1rem;
  --lh-body-relaxed: 1.65;
  --fs-body-article: 1.125rem;
  --lh-body-article: 1.6667;
  --fs-title-s: 1.125rem;
  --lh-title-s: 1.2222;
  --fs-link: 0.875rem;
  --lh-link: 1.4286;
  --fs-link-s: 0.8125rem;
  --lh-link-s: 1.2308;
  --fs-blurb: 0.8438rem;
  --lh-blurb: 1.4074;
  --space-3xs: 0.125rem;
  --space-2xs: 0.1875rem;
  --space-xs: 0.5rem;
  --space-sm: 0.625rem;
  --space-md: 0.75rem;
  --space-lg: 1rem;
  --space-xl: 1.25rem;
  --space-2xl: 1.5rem;
  --space-3xl: 2rem;
  --space-4: 0.25rem;
  --space-6: 0.375rem;
  --space-14: 0.875rem;
  --space-18: 1.125rem;
  --space-22: 1.375rem;
  --space-28: 1.75rem;
  --space-40: 2.5rem;
  --space-48: 3rem;
  --space-64: 4rem;
  --space-36: 2.25rem;
  --space-44: 2.75rem;
  --space-56: 3.5rem;
  --space-96: 6rem;
  --size-control-lg: 3rem;
  --size-control-sm: 2.4375rem;
  --size-control-xs: 2.375rem;
  --size-control-square: 2.5rem;
  --size-check-box: 1.125rem;
  --size-rule: 2.125rem;
  --size-logo-bar: 10rem;
  --size-column-min: 20rem;
  --size-column-max: 32.5rem;
  --size-service-card: 15.8125rem;
  --size-logo-tile-h: 6.4375rem;
  --size-logo-tile-min: 11.25rem;
  --size-logo-tile-max: 15rem;
  --size-logo-grid: 28.75rem;
  --size-column-text: 23.75rem;
  --size-title-measure: 60rem;
  --size-step-image: 12.5rem;
  --size-text-measure: 47.5rem;
  --size-column-text-max: 35rem;
  --size-column-mid: 26.25rem;
  --size-column-max-sm: 30rem;
  --size-card-max: 28.75rem;
  --size-values-media: 30rem;
  --size-values-content: 40rem;
  --size-mv-card: 18.75rem;
  --size-page-hero-media: 27.5rem;
  --size-feature-visual: 27.5rem;
  --size-feature-media: 35rem;
  --size-column-min-sm: 17.5rem;
  --size-modal: 50rem;
  --size-modal-message: 6.25rem;
  --size-sidebar: 18rem;
  --radius-xs: 4px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 12px;
  --radius-xl: 14px;
  --radius-2xl: 16px;
  --radius-pill: 999px;
  --shadow-card: 0 10px 30px rgba(0, 0, 0, 0.08);
  --shadow-video: 0 6px 16px rgba(0, 0, 0, 0.08);
  --shadow-button: 0 6px 9px rgba(18, 23, 38, 0.08);
  --shadow-tile: 0 8px 10px rgba(18, 23, 38, 0.08);
  --shadow-nav: 0 4px 7px rgba(15, 20, 36, 0.07);
  --shadow-news: 0 4px 14px rgba(15, 20, 36, 0.07);
  --shadow-logo-tile: 0 3px 5px rgba(15, 20, 36, 0.06);
  --shadow-overlay: 0 10px 15px rgba(0, 0, 0, 0.08);
  --shadow-row: 0 2px 3px rgba(15, 20, 31, 0.04);
  --shadow-chip: 0 1px 3px rgba(15, 20, 31, 0.06);
  --shadow-popover: 0 6px 9px rgba(15, 20, 31, 0.14);
  --shadow-focus: 0 0 0 3px rgba(228, 65, 38, 0.14);
  --shadow-modal: 0 16px 48px rgba(15, 20, 31, 0.18);
  --shadow-glow: 0 0 0 6px rgba(228, 65, 38, 0.1), 0 18px 40px rgba(228, 65, 38, 0.18);
  --shadow-node-glow: 0 0 0 4px rgba(228, 65, 38, 0.12), 0 6px 18px rgba(228, 65, 38, 0.18);
  --shadow-pulse: 0 0 0 3px rgba(228, 65, 38, 0.2), 0 0 10px rgba(228, 65, 38, 0.7);
  --gradient-service-scrim: linear-gradient(180deg, rgba(38, 38, 38, 0.8) 0%, rgba(38, 38, 38, 0.4) 45%, rgba(38, 38, 38, 0.08) 72%, rgba(38, 38, 38, 0.4) 100%);
  --gradient-service-scrim-hover: linear-gradient(180deg, rgba(38, 38, 38, 0.86) 0%, rgba(38, 38, 38, 0.68) 55%, rgba(38, 38, 38, 0.82) 100%);
  --gradient-image-scrim: linear-gradient(180deg, rgba(17, 24, 39, 0) 0%, rgba(17, 24, 39, 0.15) 45%, rgba(17, 24, 39, 0.85) 100%);
  --gradient-video-shade: linear-gradient(180deg, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 100%);
  --gradient-brand-band: linear-gradient(130.18deg, #e44126 0%, #d0382a 47.83%, #c9361c 86.96%);
  --gradient-image-fade: linear-gradient(90deg, #f8f9fb 0%, rgba(248, 249, 251, 0.95) 17.56%, rgba(248, 249, 251, 0) 50.28%);
  --gradient-image-fade-down: linear-gradient(180deg, #f8f9fb 0%, rgba(248, 249, 251, 0.95) 17.56%, rgba(248, 249, 251, 0) 50.28%);
  --gradient-image-fade-end: linear-gradient(270deg, #f8f9fb 0%, rgba(248, 249, 251, 0.95) 17.56%, rgba(248, 249, 251, 0) 50.28%);
  --gradient-scan: linear-gradient(180deg, rgba(228, 65, 38, 0) 55%, rgba(228, 65, 38, 0.14) 92%, rgba(228, 65, 38, 0.9) 99%, rgba(255, 255, 255, 0.9) 100%);
  --gradient-sheen: linear-gradient(105deg, rgba(255, 255, 255, 0) 35%, rgba(255, 255, 255, 0.85) 50%, rgba(255, 255, 255, 0) 65%);
  --gradient-hero-glow: radial-gradient(1067px 276px at 50% 469px, #ffffff 0%, rgba(255, 255, 255, 0.95) 55%, rgba(255, 255, 255, 0) 100%);
  --tint-strip: rgba(38, 38, 38, 0.7);
  --tint-strip-rule: rgba(255, 255, 255, 0.35);
  --tint-scrim: rgba(38, 38, 38, 0.6);
  --opacity-disabled: 0.5;
  --opacity-muted: 0.72;
  --opacity-panel-tint: 0.4;
  --opacity-ring: 0.05;
  --opacity-ring-faint: 0.04;
  --opacity-ring-fainter: 0.035;
  --opacity-ring-bright: 0.075;
  --z-header: 200;
  --z-dropdown: 300;
  --z-overlay: 900;
  --z-modal: 1000;
  --container-max: 1824px;
  --gutter: clamp(1rem, 0rem + 5vw, 4.5rem);
  --section-y: clamp(3.5rem, 2.5rem + 5vw, 7rem);
  --button-pad-x: 1.375rem;
  --control-h: 3.25rem;
  --control-pad-y: 0.875rem;
  --border-w: 1px;
  --border-extra: 0.5px;
  --bar-w: 3px;
  --accent-line: 2px;
  --icon-stroke: 2px;
  --touch-min: 44px;
  --header-full: 9.25rem;
  --header-slim: 4.5rem;
  --header-bar: 4.5rem;
  --bp-nav: 1280px;
  --focus-offset: 2px;
  --focus-reach: 4px;
  --duration: 200ms;
  --duration-off: 0.01ms;
  --ease: cubic-bezier(0.2, 0, 0, 1);
  --zoom: 1.03;
  --lift: 0.25rem;
  --duration-reveal: 700ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --stagger: 70ms;
  --reveal-shift: 1rem;
  --settle: 1.04;
}

/* Tokens built from semantic colours are declared on every element, not only on :root, so they resolve
   against the colours in force where they are used: a section that redefines --c-border-subtle or
   --c-focus changes the hairlines and focus rings inside it too. */
:where(*) {
  --line-subtle: var(--border-w) solid var(--c-border-subtle);
  --line-default: var(--border-w) solid var(--c-border-default);
  --focus-ring: 2px solid var(--c-focus);
}

/* Figtree, variable weight 300–900 (the design uses 400–700). Self-hosted from
   @fontsource-variable/figtree (OFL); ranges match Fontsource's latin / latin-ext split. */
@font-face {
  font-family: "Figtree";
  font-style: normal;
  font-display: swap;
  font-weight: 300 900;
  src: url("../fonts/figtree-latin-ext-wght-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Figtree";
  font-style: normal;
  font-display: swap;
  font-weight: 300 900;
  src: url("../fonts/figtree-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
*, *::before, *::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  overflow-wrap: anywhere;
} /* anywhere, not break-word: flex and grid items may then shrink below a long word */
h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd {
  margin: 0;
}

h1, h2, h3, h4, h5, h6 {
  font: inherit;
  text-wrap: balance;
}

ul[class], ol[class] {
  margin: 0;
  padding: 0;
  list-style: none;
}

img, picture, video, svg {
  display: block;
  max-width: 100%;
}

img, video {
  height: auto;
}

input, button, textarea, select {
  font: inherit;
  color: inherit;
}

button {
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}

a {
  color: inherit;
  text-decoration: none;
}

address {
  font-style: normal;
}

[hidden] {
  display: none !important;
}

:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: var(--duration-off) !important;
    animation-iteration-count: 1 !important;
    transition-duration: var(--duration-off) !important;
    scroll-behavior: auto !important;
  }
}
body {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-primary);
  background: var(--c-bg-primary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* One utility class per Figma text style (.t-h2, .t-body-s …) for markup that needs a style
   without a component of its own. Components use the mixins instead. */
.t-display-l {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-display-l);
  line-height: var(--lh-display-l);
  letter-spacing: -0.02em;
}

.t-h1 {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  letter-spacing: -0.015em;
}

.t-h2 {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
}

.t-h3 {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
}

.t-h4 {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
}

.t-h5 {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
}

.t-h6 {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h6);
  line-height: var(--lh-h6);
  letter-spacing: 0;
}

.t-body-l {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
}

.t-body {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
}

.t-body-s {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
}

.t-body-xs {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-xs);
  line-height: var(--lh-body-xs);
  letter-spacing: 0;
}

.t-label-nav {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-label-nav);
  line-height: var(--lh-label-nav);
  letter-spacing: 0;
}

.t-label-button {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-label-button);
  line-height: var(--lh-label-button);
  letter-spacing: 0;
}

.t-label-button-s {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
}

.t-eyebrow {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-eyebrow);
  line-height: var(--lh-eyebrow);
  letter-spacing: 0.125em;
  text-transform: uppercase;
}

.t-eyebrow-s {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.t-metadata {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
}

.t-numeral-l {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-numeral-l);
  line-height: var(--lh-numeral-l);
  letter-spacing: -0.01em;
}

.t-label-process {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-label-process);
  line-height: var(--lh-label-process);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.t-body-relaxed {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-relaxed);
  line-height: var(--lh-body-relaxed);
  letter-spacing: 0;
}

.t-body-article {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-article);
  line-height: var(--lh-body-article);
  letter-spacing: 0;
}

.t-title-s {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-title-s);
  line-height: var(--lh-title-s);
  letter-spacing: -0.01em;
}

.t-link {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-link);
  line-height: var(--lh-link);
  letter-spacing: 0;
}

.t-link-s {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-link-s);
  line-height: var(--lh-link-s);
  letter-spacing: 0;
}

.t-blurb {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-blurb);
  line-height: var(--lh-blurb);
  letter-spacing: 0;
}

/* The page column: 1680px of content at 1920 (1824 minus two 72px gutters); gutters shrink to 16px at 320. */
.container {
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* Vertical rhythm of a page section: 112px from 1440 up, 56px at 320. */
.section {
  padding-block: var(--section-y);
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* -- components -- */
/* <svg class="icon icon--16"><use href="img/sprite.svg#icon-arrow-right"></use></svg>
   Colour comes from `color` (the sprite draws in currentColor); stroke width from --icon-stroke.
   A two-tone icon (play-circle) draws its second colour from --icon-contrast. */
.icon {
  --icon-size: 1.5rem;
  --icon-contrast: var(--c-icon-inverse);
  flex: none;
  width: var(--icon-size);
  height: var(--icon-size);
  stroke-width: var(--icon-stroke);
}

.icon--9 {
  --icon-size: 0.5625rem;
}

.icon--12 {
  --icon-size: 0.75rem;
}

.icon--13 {
  --icon-size: 0.8125rem;
}

.icon--14 {
  --icon-size: 0.875rem;
}

.icon--15 {
  --icon-size: 0.9375rem;
}

.icon--16 {
  --icon-size: 1rem;
}

.icon--17 {
  --icon-size: 1.0625rem;
}

.icon--18 {
  --icon-size: 1.125rem;
}

.icon--19 {
  --icon-size: 1.1875rem;
}

.icon--20 {
  --icon-size: 1.25rem;
}

.icon--22 {
  --icon-size: 1.375rem;
}

.icon--24 {
  --icon-size: 1.5rem;
}

.icon--25 {
  --icon-size: 1.5625rem;
}

.icon--27 {
  --icon-size: 1.6875rem;
}

.icon--36 {
  --icon-size: 2.25rem;
}

.icon--44 {
  --icon-size: 2.75rem;
}

/* Figma Logo (62:1175): 212×68. Set --logo-w to resize — the header uses 249px. */
.logo {
  display: inline-block;
  max-width: 100%;
}

.logo__img {
  width: var(--logo-w, 13.25rem);
  max-width: 100%;
  height: auto;
}

/* Figma Button (43:632). .btn alone is Primary / Rounded / Large; the variants change only what
   differs. Heights are minimums, so a long label wraps instead of overflowing a narrow screen;
   the small block padding only shows then (one line plus 2 × 8px is below every Figma height). */
.btn {
  --btn-h: var(--size-control-lg);
  --btn-pad-start: var(--space-2xl);
  --btn-pad-end: var(--button-pad-x);
  --btn-radius: var(--radius-md);
  --btn-gap: var(--space-sm);
  --btn-bg: var(--c-action-primary);
  --btn-bg-hover: var(--c-action-primary-hover);
  --btn-bg-disabled: var(--c-action-disabled);
  --btn-disabled-opacity: 1;
  --btn-fg: var(--c-text-inverse);
  --btn-border: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--btn-gap);
  min-height: var(--btn-h);
  max-width: 100%;
  padding-block: var(--space-xs);
  padding-inline: var(--btn-pad-start) var(--btn-pad-end);
  border: var(--border-w) solid var(--btn-border);
  border-radius: var(--btn-radius);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-label-button);
  line-height: var(--lh-label-button);
  letter-spacing: 0;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .btn {
    position: relative;
  }
  .btn::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .btn:hover:not(:disabled, [aria-disabled=true]) {
    background: var(--btn-bg-hover);
    color: var(--btn-fg-hover, var(--btn-fg));
  }
}
.btn:disabled, .btn[aria-disabled=true] {
  cursor: not-allowed;
  background: var(--btn-bg-disabled);
  opacity: var(--btn-disabled-opacity);
}

.btn__icon {
  color: var(--btn-icon, currentColor);
}

.btn--primary-md {
  --btn-h: 2.8125rem;
  --btn-pad-start: var(--button-pad-x);
  --btn-pad-end: var(--space-xl);
  --btn-gap: var(--space-md);
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
}

.btn--primary-pill {
  --btn-h: 2.75rem;
  --btn-pad-start: var(--button-pad-x);
  --btn-pad-end: var(--space-xl);
  --btn-radius: var(--radius-pill);
}

.btn--secondary,
.btn--secondary-pill,
.btn--secondary-pill-brand {
  --btn-bg: var(--c-action-secondary);
  --btn-bg-disabled: var(--c-action-secondary);
  --btn-disabled-opacity: var(--opacity-disabled);
  --btn-fg: var(--c-on-light-text);
}

.btn--secondary {
  --btn-pad-start: var(--space-xl);
  --btn-pad-end: var(--space-2xl);
  --btn-bg-hover: var(--c-action-secondary);
  --btn-fg-hover: var(--c-text-brand);
  --btn-icon: var(--c-icon-brand);
  box-shadow: var(--shadow-button);
}

.btn--secondary-pill,
.btn--secondary-pill-brand {
  --btn-h: var(--size-control-sm);
  --btn-pad-start: var(--space-18);
  --btn-pad-end: var(--btn-pad-start);
  --btn-radius: var(--radius-pill);
  --btn-gap: var(--space-md);
  --btn-bg-hover: var(--c-bg-brand-subtle);
  --btn-icon: var(--c-on-light-icon);
  --icon-stroke: 1.4px;
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
}

.btn--secondary-pill-brand {
  --btn-fg: var(--c-text-brand);
  --btn-icon: var(--c-icon-brand);
}

.btn--outline-pill {
  --btn-h: var(--size-control-xs);
  --btn-radius: var(--radius-pill);
  --btn-border: var(--c-border-brand);
  --btn-bg: transparent;
  --btn-bg-hover: var(--c-bg-brand-subtle);
  --btn-bg-disabled: transparent;
  --btn-disabled-opacity: var(--opacity-disabled);
  --btn-fg: var(--c-text-brand);
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
}

/* Text links. .link — Figma Link/Default (14/20 semibold, brand red) with an arrow icon;
   .link--sm — Link/Small; .link--underline — the "Learn more →" style. */
.link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  color: var(--c-text-brand);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-link);
  line-height: var(--lh-link);
  letter-spacing: 0;
  text-decoration-thickness: from-font;
  text-underline-position: from-font;
}
@media (pointer: coarse) {
  .link {
    position: relative;
  }
  .link::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .link:hover {
    text-decoration-line: underline;
  }
}

.link--sm {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-link-s);
  line-height: var(--lh-link-s);
  letter-spacing: 0;
}

.link--underline {
  text-decoration-line: underline;
}

/* Figma Eyebrow (40:617): a 37×4 brand bar and an uppercase label. .eyebrow--sm is the small
   label without a bar (Label/Eyebrow Small). On dark or red bands set --eyebrow-color (and --eyebrow-bar). */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  color: var(--eyebrow-color, var(--c-text-primary));
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-eyebrow);
  line-height: var(--lh-eyebrow);
  letter-spacing: 0.125em;
  text-transform: uppercase;
}
.eyebrow::before {
  content: "";
  flex: none;
  width: 2.3125rem;
  height: 0.25rem;
  border-radius: var(--radius-pill);
  background: var(--eyebrow-bar, var(--c-brand-primary));
}

.eyebrow--sm {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.eyebrow--sm::before {
  content: none;
}

/* Section header (pattern of Figma 13:177): eyebrow + title, the intro beside the title when
   there is room and below it when there is not, actions (arrows, a link) at the end. */
.section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2xl);
}

.section-head__main {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xl);
  flex: 0 1 var(--size-column-max);
  min-width: min(100%, var(--size-column-min-sm));
}

.section-head__title {
  color: var(--c-text-primary);
}

.section-head__accent {
  color: var(--c-text-brand);
}

.section-head__intro {
  flex: 1 1 var(--size-column-min);
  max-width: 29.75rem;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-primary);
}

.section-head__actions {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  margin-inline-start: auto;
}

.section-head--center {
  flex-direction: column;
  text-align: center;
}
.section-head--center .section-head__main {
  flex-basis: auto;
  align-items: center;
}
.section-head--center .section-head__intro {
  flex-basis: auto;
  max-width: 45rem;
}
.section-head--center .section-head__actions {
  margin-inline: auto;
}

/* Figma Contact Input (198:4589): label + 52px field, textarea 136px. Focus: brand border plus a
   3px glow (the 1.5px border is a 1px border plus a --border-extra ring, so nothing shifts).
   Errors use --c-error — not designed in Figma. */
.field {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  min-width: 0;
}

.field__label {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
  color: var(--c-text-primary);
}

.field__control {
  width: 100%;
  min-height: var(--control-h);
  padding: var(--control-pad-y) var(--space-lg);
  border: var(--line-default);
  border-radius: var(--radius-sm);
  background: var(--c-surface-default);
  color: var(--c-text-primary);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  transition: border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}
.field__control::placeholder {
  color: var(--c-text-subtle);
}
.field__control:focus {
  outline: none;
  border-color: var(--c-brand-primary);
  box-shadow: 0 0 0 var(--border-extra) var(--c-brand-primary), var(--shadow-focus);
}
.field__control:disabled {
  background: var(--c-bg-secondary);
  color: var(--c-text-subtle);
  cursor: not-allowed;
}
.field__control[aria-invalid=true] {
  border-color: var(--c-error);
  box-shadow: 0 0 0 var(--border-extra) var(--c-error);
}
.field__control[aria-invalid=true]:focus {
  box-shadow: 0 0 0 var(--border-extra) var(--c-error), var(--shadow-focus);
}

.field__control--multiline {
  min-height: 8.5rem;
  resize: vertical;
}

.field__error {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  color: var(--c-error);
}

/* Figma Selector / Document Type (201:4808): a checkbox drawn as a chip. */
.check-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  min-height: var(--size-control-lg);
  padding-inline: var(--space-14) var(--space-18);
  border: var(--line-default);
  border-radius: var(--radius-sm);
  background: var(--c-surface-default);
  color: var(--c-text-primary);
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
  cursor: pointer;
  transition: background-color var(--duration) var(--ease), border-color var(--duration) var(--ease);
}
.check-chip:has(:focus-visible) {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}
.check-chip:has(:checked) {
  border-color: var(--c-brand-primary);
  background: var(--c-bg-brand-subtle);
  box-shadow: inset 0 0 0 var(--border-extra) var(--c-brand-primary);
}

.check-chip__input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.check-chip__box {
  display: grid;
  place-items: center;
  flex: none;
  width: var(--size-check-box);
  aspect-ratio: 1;
  border: 1.5px solid var(--c-border-default);
  border-radius: var(--radius-xs);
  background: var(--c-surface-default);
  color: var(--c-icon-inverse);
}
.check-chip:has(:checked) .check-chip__box {
  border-color: var(--c-brand-primary);
  background: var(--c-brand-primary);
}

.check-chip__tick {
  opacity: 0;
}
.check-chip:has(:checked) .check-chip__tick {
  opacity: 1;
}

/* Figma Upload Field (201:4811). The real file input is hidden inside the box; the box shows its focus ring. */
.upload {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  min-width: 0;
}

.upload__box {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  min-height: var(--control-h);
  padding: var(--space-xs) var(--space-lg);
  border: var(--border-w) dashed var(--c-border-default);
  border-radius: var(--radius-sm);
  background: var(--c-surface-default);
  cursor: pointer;
}
.upload__box:has(:focus-visible) {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

.upload__input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.upload:has(.upload__input[aria-invalid=true]) .upload__box {
  border-color: var(--c-error);
  box-shadow: 0 0 0 var(--border-extra) var(--c-error);
}

.upload__clip {
  color: var(--c-icon-secondary);
}

.upload__text {
  flex: 1;
  min-width: 0;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
  overflow-wrap: anywhere;
}

.upload__browse {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-link);
  line-height: var(--lh-link);
  letter-spacing: 0;
  color: var(--c-text-brand);
}

/* The assessment popup (Figma Modal / Assessment Form 201:5464; partials/assessment.njk): an 800px card on
   Background/Subtle over the dimmed page, with 12px corners and Figma's shadow. The eyebrow and H3 heading, the round
   close button at the top right, then the form — two fields a row while they fit, the document chips, the upload, the
   message — and the red button. On a narrow screen it keeps a margin and scrolls inside. It rises in as it opens. */
.assessment {
  width: min(var(--size-modal), 100% - var(--space-2xl));
  max-width: none;
  max-height: calc(100dvh - var(--space-2xl));
  padding: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 0;
  border-radius: var(--radius-lg);
  background: var(--c-bg-subtle);
  box-shadow: var(--shadow-modal);
  color: var(--c-text-primary);
}
.assessment::backdrop {
  background: var(--tint-scrim);
}

.assessment__panel {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
  padding: clamp(1.5rem, 1.2143rem + 1.4286vw, 2.5rem) clamp(1.25rem, 0.75rem + 2.5vw, 3rem) clamp(1.5rem, 1.1429rem + 1.7857vw, 2.75rem);
}

.assessment__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  align-items: flex-start;
  padding-inline-end: var(--space-48);
}

.assessment__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.assessment__close {
  position: absolute;
  top: var(--space-2xl);
  right: var(--space-2xl);
  display: grid;
  place-items: center;
  width: var(--space-40);
  aspect-ratio: 1;
  border: var(--line-default);
  border-radius: var(--radius-pill);
  background: var(--c-surface-default);
  color: var(--c-icon-primary);
  transition: border-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .assessment__close::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .assessment__close:hover {
    border-color: var(--c-border-brand);
    color: var(--c-icon-brand);
  }
}

.assessment__form {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
}

.assessment__row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--size-column-min-sm)), 1fr));
  gap: var(--space-xl);
}

.assessment__formats {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.assessment__formats legend {
  margin-bottom: var(--space-xs);
  padding: 0;
}

.assessment__options {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
}

.assessment .field__control--multiline {
  min-height: var(--size-modal-message);
}

.assessment__actions {
  margin-top: var(--space-4);
}

.assessment__thanks {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.assessment__thanks-title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.assessment__thanks-text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

@keyframes assessment-fade {
  from {
    opacity: 0;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .assessment[open] {
    animation: rise var(--duration-reveal) var(--ease-out);
  }
  .assessment[open]::backdrop {
    animation: assessment-fade var(--duration) var(--ease);
  }
}
/* The thank-you after a form is sent (contact page): a small card over the dimmed page, as the assessment popup is
   drawn (its sizes and shadow), with the round close button; the form stays behind it for the next message. Without
   scripts the server renders it open, in the page's flow. The client asked for a popup (2026-10-15). */
.thanks-dialog {
  width: min(var(--size-column-text-max), 100% - var(--space-2xl));
  max-width: none;
  padding: 0;
  border: 0;
  border-radius: var(--radius-lg);
  background: var(--c-bg-subtle);
  box-shadow: var(--shadow-modal);
  color: var(--c-text-primary);
}
.thanks-dialog::backdrop {
  background: var(--tint-scrim);
}
.thanks-dialog[open]:not(:modal) {
  margin-top: var(--space-2xl);
}

.thanks-dialog__panel {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-md);
  padding: clamp(1.5rem, 1.2143rem + 1.4286vw, 2.5rem) clamp(1.25rem, 0.75rem + 2.5vw, 3rem) clamp(1.5rem, 1.1429rem + 1.7857vw, 2.75rem);
  padding-inline-end: var(--space-48);
}

.thanks-dialog__close {
  position: absolute;
  top: var(--space-2xl);
  right: var(--space-2xl);
  display: grid;
  place-items: center;
  width: var(--space-40);
  aspect-ratio: 1;
  border: var(--line-default);
  border-radius: var(--radius-pill);
  background: var(--c-surface-default);
  color: var(--c-icon-primary);
  transition: border-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .thanks-dialog__close::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .thanks-dialog__close:hover {
    border-color: var(--c-border-brand);
    color: var(--c-icon-brand);
  }
}

.thanks-dialog__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.thanks-dialog__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.thanks-dialog__ok {
  margin-top: var(--space-xs);
}

@media (prefers-reduced-motion: no-preference) {
  .thanks-dialog[open]:modal {
    animation: rise var(--duration-reveal) var(--ease-out);
  }
  .thanks-dialog[open]::backdrop {
    animation: assessment-fade var(--duration) var(--ease);
  }
}
/* Figma Breadcrumb (112:1302). Wraps onto a second line on narrow screens. */
.breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-xs);
}

.breadcrumb__item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
}

.breadcrumb__link {
  color: var(--c-text-muted);
}
@media (pointer: coarse) {
  .breadcrumb__link {
    position: relative;
  }
  .breadcrumb__link::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .breadcrumb__link:hover {
    color: var(--c-text-primary);
    text-decoration-line: underline;
  }
}

.breadcrumb__current {
  color: var(--c-text-primary);
}

.breadcrumb__sep {
  color: var(--c-icon-disabled);
}

/* Figma Pagination Item (171:3243), 8px apart. */
.pagination__list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-xs);
}

.pagination__item {
  display: grid;
  place-items: center;
  width: var(--size-control-square);
  aspect-ratio: 1;
  border: var(--line-default);
  border-radius: var(--radius-sm);
  color: var(--c-text-primary);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  transition: background-color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .pagination__item {
    position: relative;
  }
  .pagination__item::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .pagination__item:hover {
    background: var(--c-bg-secondary);
  }
}
.pagination__item[aria-current=page] {
  border-color: var(--c-brand-primary);
  background: var(--c-brand-primary);
  color: var(--c-text-inverse);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h6);
  line-height: var(--lh-h6);
  letter-spacing: 0;
}

/* Figma Sub Navigation (98:1275): pill tabs in one capsule. Too narrow for them → it scrolls inside itself, as the design
   does on phones. More tabs than the designed three (an activated extra company page) and the box wraps its rows: its
   corners then follow the pills' (their radius plus the padding) instead of the single row's stadium shape. */
.subnav {
  display: inline-flex;
  gap: var(--space-4);
  max-width: 100%;
  padding: var(--space-6);
  border: var(--line-subtle);
  border-radius: var(--radius-pill);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-nav);
  overflow-x: auto;
  scrollbar-width: none;
}
.subnav::-webkit-scrollbar {
  display: none;
}

.subnav--wrap {
  flex-wrap: wrap;
  border-radius: calc(var(--space-6) + 1.25rem);
  overflow: visible;
}
@media (max-width: 1023.98px) {
  .subnav--wrap {
    flex-wrap: nowrap;
    border-radius: var(--radius-pill);
    overflow-x: auto;
  }
}

.subnav__link {
  flex: none;
  padding: var(--space-sm) var(--space-xl);
  border-radius: var(--radius-pill);
  color: var(--c-text-secondary);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-label-nav);
  line-height: var(--lh-label-nav);
  letter-spacing: 0;
  white-space: nowrap;
  transition: background-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .subnav__link {
    position: relative;
  }
  .subnav__link::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .subnav__link:hover {
    background: var(--c-bg-secondary);
    color: var(--c-text-primary);
  }
}
.subnav__link[aria-current=page] {
  background: var(--c-surface-inverse);
  color: var(--c-text-inverse);
}

/* Figma Sidebar Nav Item (156:2766): rows of the service / solution sidebars. */
.sidenav {
  width: 100%;
}

.sidenav__link {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-lg) var(--space-lg) var(--space-lg) var(--space-xl);
  border-bottom: var(--line-subtle);
  color: var(--c-text-secondary);
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
  transition: background-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .sidenav__link:hover {
    background: var(--c-bg-subtle);
    color: var(--c-text-primary);
  }
  .sidenav__link:hover .sidenav__arrow {
    opacity: 1;
  }
}
.sidenav__link[aria-current=page] {
  padding-block: var(--space-xl);
  background: var(--c-bg-secondary);
  color: var(--c-text-primary);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
}
.sidenav__link[aria-current=page]::before {
  content: "";
  position: absolute;
  inset: 0 auto calc(var(--border-w) * -1) 0;
  width: var(--bar-w);
  background: var(--c-brand-primary);
}
.sidenav__link[aria-current=page] .sidenav__arrow {
  opacity: 1;
  color: var(--c-icon-brand);
}

.sidenav__label {
  flex: 1;
  min-width: 0;
}

.sidenav__arrow {
  color: var(--c-icon-secondary);
  opacity: 0;
  transition: opacity var(--duration) var(--ease);
}

/* Figma Solutions Toggle (17:408): two equal segments; the pressed one is brand red.
   Below 576px the segments' side padding drops from 28px to 16px, so both labels stay on one line down to 320px. */
.toggle {
  display: inline-grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  max-width: 100%;
  padding: var(--space-3xs);
  border: var(--line-subtle);
  border-radius: var(--radius-md);
  background: var(--c-surface-subtle);
}

.toggle__btn {
  min-width: 0;
  padding: var(--control-pad-y) var(--space-28);
  border-radius: var(--radius-md);
}
@media (max-width: 575.98px) {
  .toggle__btn {
    padding-inline: var(--space-lg);
  }
}
.toggle__btn {
  color: var(--c-text-primary);
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
  transition: background-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .toggle__btn:hover:not([aria-pressed=true]) {
    background: var(--c-bg-secondary);
  }
}
.toggle__btn[aria-pressed=true] {
  background: var(--c-action-primary);
  color: var(--c-text-inverse);
}

/* Figma Industry Row (17:456): the homepage solutions list. Hover and pressed recolour the icon and
   the chevron through --row-accent and --chevron-border. */
.industry-row {
  display: flex;
  align-items: center;
  gap: var(--space-2xl);
  width: 100%;
  min-height: var(--control-h);
  padding: var(--space-sm) var(--space-lg) var(--space-sm) var(--space-xl);
  border: var(--line-subtle);
  border-radius: var(--radius-md);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-row);
  color: var(--c-text-primary);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  text-align: start;
  transition: border-color var(--duration) var(--ease), background-color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .industry-row:hover {
    border-color: var(--c-border-brand);
    --row-accent: var(--c-icon-brand);
    --chevron-border: var(--c-border-selected);
  }
}
.industry-row[aria-pressed=true] {
  border-color: var(--c-state-selected-border);
  background: var(--c-state-selected-bg);
  color: var(--c-text-brand);
  --row-accent: var(--c-icon-brand);
  --chevron-border: var(--c-border-inverse);
}

.industry-row__icon {
  color: var(--row-accent, var(--c-icon-secondary));
}

.industry-row__label {
  flex: 1;
  min-width: 0;
}

.industry-row__chevron {
  display: grid;
  place-items: center;
  flex: none;
  width: 1.6875rem;
  aspect-ratio: 1;
  border: var(--border-w) solid var(--chevron-border, var(--c-border-subtle));
  border-radius: var(--radius-pill);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-chip);
  color: var(--row-accent, var(--c-icon-secondary));
}

/* Figma Carousel Arrow (15:338) — outline and brand styles, each with hover and disabled. */
.carousel-arrow {
  display: inline-grid;
  place-items: center;
  flex: none;
  width: var(--size-control-xs);
  aspect-ratio: 1;
  border: var(--border-w) solid var(--arrow-border);
  border-radius: var(--radius-pill);
  background: var(--arrow-bg);
  color: var(--arrow-fg);
  transition: background-color var(--duration) var(--ease), border-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .carousel-arrow {
    position: relative;
  }
  .carousel-arrow::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
.carousel-arrow:disabled {
  cursor: default;
}

.carousel-arrow--outline {
  --arrow-bg: var(--c-action-secondary);
  --arrow-border: var(--c-border-default);
  --arrow-fg: var(--c-icon-secondary);
}
@media (hover: hover) and (pointer: fine) {
  .carousel-arrow--outline:hover:not(:disabled) {
    --arrow-border: var(--c-border-brand);
    --arrow-fg: var(--c-icon-brand);
  }
}
.carousel-arrow--outline:disabled {
  --arrow-border: var(--c-border-subtle);
  --arrow-fg: var(--c-icon-disabled);
}

.carousel-arrow--brand {
  --arrow-bg: var(--c-action-primary);
  --arrow-border: var(--c-action-primary);
  --arrow-fg: var(--c-icon-inverse);
}
@media (hover: hover) and (pointer: fine) {
  .carousel-arrow--brand:hover:not(:disabled) {
    --arrow-bg: var(--c-action-primary-hover);
    --arrow-border: var(--c-action-primary-hover);
  }
}
.carousel-arrow--brand:disabled {
  --arrow-bg: var(--c-action-disabled);
  --arrow-border: var(--c-action-disabled);
}

/* Figma Carousel Pagination (43:654). Touch screens: dots spread out so each 44px tap area stands alone. */
.carousel-dots {
  --dot: 0.6563rem;
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
}
@media (pointer: coarse) {
  .carousel-dots {
    gap: calc(var(--touch-min) - var(--dot));
  }
}

.carousel-dots__dot {
  width: var(--dot);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-border-subtle);
  transition: background-color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .carousel-dots__dot {
    position: relative;
  }
  .carousel-dots__dot::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
.carousel-dots__dot[aria-current=true], .carousel-dots__dot.is-active {
  background: var(--c-brand-primary);
}

/* Figma Social Icon Button (198:4575). */
.social-btn {
  display: inline-grid;
  place-items: center;
  width: var(--size-control-square);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-surface-subtle);
  color: var(--c-icon-primary);
  transition: background-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .social-btn {
    position: relative;
  }
  .social-btn::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .social-btn:hover {
    background: var(--c-bg-brand-subtle);
    color: var(--c-icon-brand);
  }
}

/* Figma Challenge Card (10:147): the homepage "What's slowing you down?" choices. */
.challenge-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  padding: var(--space-xl) var(--space-xl) var(--space-18) var(--space-2xl);
  border: var(--line-subtle);
  border-radius: var(--radius-sm);
  background: var(--c-surface-subtle);
  color: var(--c-text-primary);
  text-align: start;
  transition: background-color var(--duration) var(--ease), border-color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .challenge-card:hover {
    background: var(--c-state-hover-bg);
    border-color: var(--c-border-brand);
  }
}
.challenge-card[aria-pressed=true] {
  background: var(--c-state-selected-bg);
  border-color: var(--c-border-brand);
  box-shadow: inset 0 0 0 var(--border-extra) var(--c-border-brand);
}

.challenge-card__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding-block-end: var(--space-sm);
  padding-inline-end: 0.4375rem;
}

.challenge-card__num {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-brand);
}

.challenge-card__icon {
  color: var(--c-icon-brand);
}

.challenge-card__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.challenge-card__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
}

.challenge-card__row {
  display: flex;
  align-items: flex-start;
  gap: var(--space-md);
}

.challenge-card__text {
  flex: 1;
  min-width: 0;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.challenge-card__arrow {
  color: var(--c-icon-brand);
}

/* Figma Stat (21:487). */
.stat {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.stat__value {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.stat__label {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
  color: var(--c-text-muted);
}

/* Figma Icon Tile (5:69). */
.icon-tile {
  display: inline-grid;
  place-items: center;
  flex: none;
  width: 3.3125rem;
  aspect-ratio: 1;
  border-radius: var(--radius-lg);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-tile);
  color: var(--c-icon-brand);
}

/* Figma Info Block (98:1311): a top rule with a short brand accent on it. */
.info-block {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  padding-top: var(--space-3xl);
  border-top: var(--line-subtle);
}
.info-block::before {
  content: "";
  position: absolute;
  top: calc(var(--border-w) * -1);
  left: 0;
  width: 3rem;
  height: var(--accent-line);
  background: var(--c-brand-primary);
}

.info-block__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.info-block__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

/* Figma Feature Row (17:458). */
.feature-row {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
}

.feature-row__icon {
  display: grid;
  place-items: center;
  flex: none;
  width: 2.5625rem;
  aspect-ratio: 1;
  border-radius: var(--radius-sm);
  background: var(--c-bg-brand-subtle);
  color: var(--c-icon-brand);
}

.feature-row__text {
  flex: 1;
  min-width: 0;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-primary);
}

/* Figma Map Location Card (198:4592): sits over the map with its pointer on the pin.
   --tail-x moves the pointer along the bottom edge (default: the middle). */
.map-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-xs);
  width: 100%;
  max-width: var(--size-card-max);
  padding: var(--space-xl);
  border-radius: var(--radius-lg);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-popover);
}
.map-card::after {
  content: "";
  position: absolute;
  left: var(--tail-x, 50%);
  bottom: 0;
  width: 1.125rem;
  aspect-ratio: 1;
  background: inherit;
  translate: -50% 50%;
  rotate: 45deg;
}

.map-card__name {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}

.map-card__address {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

/* Figma Service Card (192:3918): photo, dark scrim, number and title. Hover (and keyboard focus)
   deepens the scrim, zooms the photo slightly, shows the description and "Explore" and hides the
   arrow button. Touch screens never hover — they keep the arrow, which is the cue to tap. */
.service-card {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: var(--space-lg);
  aspect-ratio: 253/380;
  padding: var(--space-2xl);
  overflow: clip;
  border-radius: var(--radius-md);
  background: var(--c-surface-inverse);
  color: var(--c-text-inverse);
}

.service-card__img {
  position: absolute;
  inset: 0;
  z-index: -2;
}
.service-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--duration) var(--ease);
}

.service-card__scrim {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--gradient-service-scrim);
}
.service-card__scrim::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--gradient-service-scrim-hover);
  opacity: 0;
  transition: opacity var(--duration) var(--ease);
}

.service-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.service-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-sm);
}

.service-card__num {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-eyebrow);
  line-height: var(--lh-eyebrow);
  letter-spacing: 0.125em;
  text-transform: uppercase;
}
.service-card__num::before {
  content: "";
  width: var(--space-2xl);
  height: var(--accent-line);
  background: var(--c-brand-primary);
}

.service-card__cat {
  padding-inline-start: var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  opacity: var(--opacity-muted);
}

.service-card__text {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.service-card__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
}

.service-card__desc,
.service-card__explore {
  opacity: 0;
  transition: opacity var(--duration) var(--ease);
}

.service-card__desc {
  max-width: 11.625rem;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
}

.service-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.service-card__explore {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-link);
  line-height: var(--lh-link);
  letter-spacing: 0;
  color: var(--c-text-brand);
}

.service-card__arrow {
  display: grid;
  place-items: center;
  width: 2.25rem;
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-brand-primary);
  color: var(--c-icon-inverse);
  transition: opacity var(--duration) var(--ease);
}

@media (hover: hover) and (pointer: fine) {
  .service-card:hover .service-card__img img {
    transform: scale(var(--zoom));
  }
  .service-card:hover .service-card__scrim::after,
  .service-card:hover .service-card__desc,
  .service-card:hover .service-card__explore {
    opacity: 1;
  }
  .service-card:hover .service-card__arrow {
    opacity: 0;
  }
}
.service-card:focus-visible .service-card__img img {
  transform: scale(var(--zoom));
}
.service-card:focus-visible .service-card__scrim::after,
.service-card:focus-visible .service-card__desc,
.service-card:focus-visible .service-card__explore {
  opacity: 1;
}
.service-card:focus-visible .service-card__arrow {
  opacity: 0;
}

/* Figma Image Card (98:1325): photo under a dark fade, icon tile and title at the bottom. */
.image-card {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  gap: var(--space-xl);
  aspect-ratio: 306/420;
  padding: var(--space-28);
  overflow: clip;
  border-radius: var(--radius-2xl);
  background: var(--c-surface-inverse);
  color: var(--c-text-inverse);
}
.image-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--gradient-image-scrim);
}

.image-card__img {
  position: absolute;
  inset: 0;
  z-index: -2;
}
.image-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.image-card__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
}

/* Figma News Card (26:580). The title is the link; "Learn more" repeats it for the eye only. */
.news-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding-block-end: var(--space-md);
  border-radius: var(--radius-sm);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-news);
}

.news-card__media {
  display: block;
}

.news-card__img {
  display: block;
  aspect-ratio: 319.5/120;
  overflow: clip;
}
.news-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: scale var(--duration) var(--ease);
}

@media (hover: hover) and (pointer: fine) {
  .news-card:has(.news-card__media:hover, .news-card__title a:hover) .news-card__img img {
    scale: var(--zoom);
  }
}
.news-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: var(--space-lg) var(--space-lg) 0;
}

.news-card__title {
  display: flex;
  gap: var(--space-sm);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h6);
  line-height: var(--lh-h6);
  letter-spacing: 0;
  color: var(--c-text-primary);
  overflow-wrap: anywhere;
}
.news-card__title::before {
  content: "";
  flex: none;
  width: var(--bar-w);
  background: var(--c-brand-secondary);
}
@media (hover: hover) and (pointer: fine) {
  .news-card__title a:hover {
    text-decoration-line: underline;
  }
}

.news-card__details {
  --news-gap: 0.8125rem;
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--news-gap);
  padding-block-start: var(--news-gap);
  padding-inline-start: calc(var(--bar-w) + var(--space-sm));
}

.news-card__meta {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.news-card__details > .link {
  margin-top: auto;
}

.news-card__date {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
  color: var(--c-text-subtle);
}

.news-card__excerpt {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-xs);
  line-height: var(--lh-body-xs);
  letter-spacing: 0;
  color: var(--c-text-muted);
  overflow-wrap: anywhere;
}

/* Figma Video Card (25:521) draws YouTube's player before it plays: the video's thumbnail, its title over a shade
   along the top, the red play button in the middle. Here that is what it is until it is played — a link to the
   video on YouTube, so a page loads nothing from YouTube but the thumbnail — and js/app/video-cards.js puts
   YouTube's privacy-enhanced player in its place. A 16:9 frame, so the video fills it without black bars. */
.video-card {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16/9;
  border-radius: var(--radius-md);
  background: var(--c-surface-inverse);
  box-shadow: var(--shadow-video);
}
.video-card:has(:focus-visible) {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

.video-card__link,
.video-card__player {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.video-card__link {
  color: var(--c-text-inverse);
}
.video-card__link:focus-visible {
  outline: none;
}

.video-card__player {
  border: 0;
}

.video-card__thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.video-card__bar {
  position: absolute;
  inset: 0 0 auto;
  padding: var(--space-14) var(--space-14) var(--space-40);
  background: var(--gradient-video-shade);
}

.video-card__title {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
  overflow-wrap: anywhere;
}

.video-card__play {
  position: absolute;
  top: 50%;
  left: 50%;
  display: grid;
  place-items: center;
  width: 3.5313rem;
  height: 2.4375rem;
  border-radius: 0.6875rem;
  background: var(--c-video-play);
  color: var(--c-icon-inverse);
  translate: -50% -50%;
}
.video-card__play .icon {
  translate: 0.1094rem 0;
}

/* Figma Partner Logo Tile (26:578). The tile's size comes from its width and ratio alone: the logo is laid over
   it and scaled to fit, so a tall logo cannot stretch the tile. A linked tile rises on hover. */
.logo-tile {
  position: relative;
  display: block;
  aspect-ratio: 232/103;
  border: var(--line-subtle);
  border-radius: var(--radius-sm);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-logo-tile);
}

.logo-tile[href] {
  transition: translate var(--duration) var(--ease), border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}
.logo-tile[href] .logo-tile__img {
  transition: scale var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .logo-tile[href]:hover {
    translate: 0 calc(var(--lift) * -1);
    border-color: var(--c-border-selected);
    box-shadow: var(--shadow-card);
  }
  .logo-tile[href]:hover .logo-tile__img {
    scale: var(--zoom);
  }
}
.logo-tile[href]:focus-visible {
  translate: 0 calc(var(--lift) * -1);
  border-color: var(--c-border-selected);
  box-shadow: var(--shadow-card);
}
.logo-tile[href]:focus-visible .logo-tile__img {
  scale: var(--zoom);
}

.logo-tile__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  padding: var(--space-4);
  object-fit: contain;
}

/* The header's burger below the burger breakpoint (no Figma design): a 44px button, three lines in the icon
   colour. Its lines, not its tap area, line up with the content edge. .burger--close is the same button with
   the close icon: the slide-in menu's close button, in the burger's place. */
.burger {
  --burger-line: 1.375rem;
  --burger-step: calc(var(--space-6) + var(--icon-stroke));
  display: grid;
  flex: none;
  place-items: center;
  width: var(--touch-min);
  aspect-ratio: 1;
  margin-inline-end: calc((var(--touch-min) - var(--burger-line)) / -2);
  border-radius: var(--radius-sm);
  color: var(--c-icon-primary);
  transition: color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .burger:hover {
    color: var(--c-icon-brand);
  }
}

.burger__lines,
.burger__lines::before,
.burger__lines::after {
  width: var(--burger-line);
  height: var(--icon-stroke);
  border-radius: var(--radius-pill);
  background: currentColor;
}

.burger__lines {
  position: relative;
}
.burger__lines::before, .burger__lines::after {
  content: "";
  position: absolute;
  left: 0;
}
.burger__lines::before {
  top: calc(var(--burger-step) * -1);
}
.burger__lines::after {
  top: var(--burger-step);
}

/* Figma Back to Top (97:1324): a 33px square outlined in Brand/Secondary with a white ↑, on the red footer.
   js/app/back-to-top.js scrolls up and moves focus to the top of the page. */
.back-to-top {
  display: grid;
  place-items: center;
  width: 2.0625rem;
  aspect-ratio: 1;
  border: var(--border-w) solid var(--c-brand-secondary);
  color: var(--c-icon-inverse);
  transition: background-color var(--duration) var(--ease), color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .back-to-top {
    position: relative;
  }
  .back-to-top::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .back-to-top:hover {
    background: var(--c-brand-secondary);
    color: var(--c-icon-primary);
  }
}

/* The faint white rings on the red bands (Figma "Background Rings": the footer, the CTA band) — bands, not discs.
   A band clips its overflow and places each ring: --ring (outer diameter), --ring-w (thickness) and its offsets. */
.rings {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ring {
  position: absolute;
  width: var(--ring);
  aspect-ratio: 1;
  border: var(--ring-w) solid var(--c-icon-inverse);
  border-radius: 50%;
  opacity: var(--opacity-ring);
}

.ring--faint {
  opacity: var(--opacity-ring-faint);
}

.ring--fainter {
  opacity: var(--opacity-ring-fainter);
}

.ring--bright {
  opacity: var(--opacity-ring-bright);
}

/* Figma CTA Banner (97:1181), drawn at 1440: Brand/Primary with two faint circles at the top right; the heading
   and a line of text on the left, the white pill on the right. Figma insets the row 40px past the page gutter
   (112px at 1440); the inset narrows with the screen. The button drops under the text on phones. */
.cta-band {
  --c-focus: var(--c-border-inverse);
  position: relative;
  overflow: clip;
  background: var(--c-bg-brand);
  color: var(--c-text-inverse);
}

.cta-band__ring--outer {
  --ring: 34.625rem;
  --ring-w: 3.025rem;
  top: -14.7188rem;
  right: -0.1688rem;
}

.cta-band__ring--inner {
  --ring: 28.575rem;
  --ring-w: 3.0188rem;
  top: -11.6938rem;
  right: 2.8563rem;
}

.cta-band__inner {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-40);
  padding-block: 3.6563rem 3.0875rem;
  padding-inline: calc(var(--gutter) + clamp(0rem, -0.7143rem + 3.5714vw, 2.5rem));
}
.cta-band__inner .btn {
  flex: none;
}
@media (max-width: 767.98px) {
  .cta-band__inner {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-2xl);
  }
}

.cta-band__content {
  display: flex;
  flex-direction: column;
  gap: 0.8188rem;
  min-width: 0;
}

.cta-band__title {
  max-width: 38.4688rem;
  text-wrap: wrap;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
}

.cta-band__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  opacity: 0.92;
}

/* Figma Trust Banner (333:5064), drawn at 1920 × 480: Background/Subtle, the maple-leaf watermark on the left,
   the Parliament photo on the right half fading into the band, the statement (eyebrow, heading with the
   red words, a line) inset 80px past the page gutter. The text stays within the left 60% of the content
   box, where the fade still hides the photo. Below 1024px the photo goes under the text, full width. */
.trusted-band {
  position: relative;
  overflow: clip;
  background: var(--c-bg-subtle);
}
.trusted-band::before {
  content: "";
  position: absolute;
  top: 1.8125rem;
  left: -5.625rem;
  width: clamp(15rem, 12.1607rem + 14.1964vw, 24.9375rem);
  aspect-ratio: 399/432;
  background: var(--c-brand-primary);
  opacity: 0.1;
  mask: url("../img/shell/maple-leaf.svg") no-repeat center/contain;
}
@media (max-width: 1023.98px) {
  .trusted-band {
    display: flex;
    flex-direction: column;
  }
}

.trusted-band__inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  min-height: 30rem;
}
@media (max-width: 1023.98px) {
  .trusted-band__inner {
    min-height: 0;
    padding-block: var(--section-y) var(--space-40);
  }
}

.trusted-band__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xl);
  max-width: 60%;
  padding-inline-start: clamp(0rem, -1.4286rem + 7.1429vw, 5rem);
}
@media (max-width: 1023.98px) {
  .trusted-band__content {
    max-width: none;
  }
}

.trusted-band__title,
.trusted-band__text {
  max-width: 47.25rem;
}

.trusted-band__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.trusted-band__accent {
  color: var(--c-text-brand);
}

.trusted-band__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.trusted-band__media {
  position: absolute;
  inset: 0 0 0 auto;
  width: 49.03%;
}
.trusted-band__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--gradient-image-fade);
}
@media (max-width: 1023.98px) {
  .trusted-band__media {
    position: relative;
    width: 100%;
    aspect-ratio: 941.33/480;
  }
  .trusted-band__media::after {
    background: var(--gradient-image-fade-down);
  }
}

.trusted-band__img {
  width: 100%;
  height: 100%;
}
.trusted-band__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Figma Industry Links (378:5169), drawn at 1920: a centred eyebrow and heading, then the four accreditation
   logos as Partner Logo Tiles (252 × 102.5 here) in a centred row — two by two below 1024px. */
.industry-links__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-40);
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem);
}
.industry-links__inner .section-head__main {
  gap: var(--space-lg);
}

.industry-links__logos {
  --tile: 15.75rem;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, var(--tile)));
  justify-content: center;
  gap: var(--space-2xl);
  width: 100%;
}
.industry-links__logos .logo-tile {
  aspect-ratio: 252/102.5;
}
@media (max-width: 1023.98px) {
  .industry-links__logos {
    grid-template-columns: repeat(2, minmax(0, var(--tile)));
  }
}

/* Content rising into view (js/app/reveal.js), and the two moves the homepage's animated parts share.
   [data-reveal] waits, faded and a little low, until it scrolls into view; --reveal-i (0, 1, 2…) staggers
   neighbours. Only with JavaScript (.has-reveal), only on screen, and never with reduced motion. */
@media screen and (prefers-reduced-motion: no-preference) {
  .has-reveal [data-reveal]:not(.is-revealed) {
    opacity: 0;
    translate: 0 var(--reveal-shift);
  }
  .has-reveal [data-reveal].is-revealed {
    transition: opacity var(--duration-reveal) var(--ease-out), translate var(--duration-reveal) var(--ease-out);
    transition-delay: calc(var(--reveal-i, 0) * var(--stagger));
  }
}
@keyframes rise {
  from {
    opacity: 0;
    translate: 0 var(--reveal-shift);
  }
}
@keyframes settle {
  from {
    opacity: 0;
    scale: var(--settle);
  }
}
/* CKEditor text (.prose): what a paragraph's text field may hold — paragraphs, h3/h4, lists, links, emphasis,
   quotes and images — plus three styles the editor offers instead of the old site's inline red spans:
   p.lead (the larger intro text), p.accent (a red line after a red bar) and ul.ticks (check-marked list). */
.prose {
  --tick-sm: calc(var(--fs-body) * 1.5);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
  overflow-wrap: anywhere;
}
.prose > * + * {
  margin-top: var(--space-lg);
}
.prose h3 {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}
.prose h4 {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}
.prose > * + h3,
.prose > * + h4 {
  margin-top: var(--space-2xl);
}
.prose strong,
.prose b {
  font-weight: 600;
  color: var(--c-text-primary);
}
.prose a {
  color: var(--c-text-brand);
  text-decoration-line: underline;
  text-underline-offset: 0.15em;
}
@media (hover: hover) and (pointer: fine) {
  .prose a:hover {
    text-decoration-thickness: var(--accent-line);
  }
}
.prose ul,
.prose ol {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding-inline-start: var(--space-xl);
}
.prose ul {
  list-style: disc;
}
.prose ol {
  list-style: decimal;
}
.prose li::marker {
  color: var(--c-brand-primary);
}
.prose blockquote {
  padding-inline-start: var(--space-lg);
  border-inline-start: var(--bar-w) solid var(--c-brand-primary);
  color: var(--c-text-primary);
}
.prose img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius-md);
}
.prose .lead {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
}
.prose .accent {
  position: relative;
  padding-inline-start: calc(var(--bar-w) + var(--space-md));
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-brand);
}
.prose .accent::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--bar-w);
  background: var(--c-brand-primary);
}
.prose ul.ticks {
  --tick-sm: calc(var(--fs-body) * 1.5);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding-inline-start: 0;
  list-style: none;
}
.prose ul.ticks li {
  position: relative;
  min-height: var(--tick-sm);
  padding-inline-start: calc(var(--tick-sm) + var(--space-md));
  color: var(--c-text-primary);
}
.prose ul.ticks li::before {
  content: "";
  position: absolute;
  top: calc((var(--fs-body) * var(--lh-body) - var(--tick-sm)) / 2);
  left: 0;
  width: var(--tick-sm);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-bg-brand-subtle);
}
.prose ul.ticks li::after {
  content: "";
  position: absolute;
  top: calc(var(--fs-body) * var(--lh-body) / 2);
  left: calc(var(--tick-sm) / 2);
  width: calc(var(--tick-sm) / 4);
  height: calc(var(--tick-sm) / 2.4);
  border: solid var(--c-brand-primary);
  border-width: 0 var(--accent-line) var(--accent-line) 0;
  translate: -50% -60%;
  rotate: 45deg;
}

/* Paragraphs (components/paragraphs.njk): the blocks Service, Solution and News Article pages are made of — Figma
   05 Service (157:2879) and 06 Solution (167:3092). A ruled block of a header (eyebrow + h2) and a body
   (CKEditor text, an image), stacked or split, with optional points in one of five looks and an outcome line.
   Container queries size the inner layouts by the column the block sits in, not by the window. */
.paragraph {
  --head-col: 23.125rem;
  --split-gap: var(--space-56);
  --title-measure: var(--size-title-measure);
  --text-measure: 760px;
  container: paragraph/inline-size;
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding-block: var(--space-48);
}
.paragraph:first-child {
  padding-top: 0;
}
.paragraph + .paragraph {
  border-top: var(--line-subtle);
}

.paragraph__main {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
}

.paragraph__head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xl);
}

.paragraph__title {
  max-width: var(--title-measure);
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.paragraph__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xl);
  min-width: 0;
}

.paragraph--stacked:has(.paragraph__media) .paragraph__text > * {
  max-width: var(--text-measure);
}

.paragraph--stacked .paragraph__text > .lead {
  max-width: none;
}

/* split: the header in its 370px column, the body beside it; they stack where the column is too narrow */
.paragraph--split .paragraph__main {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-2xl) var(--split-gap);
}

.paragraph--split .paragraph__head {
  flex: 0 0 var(--head-col);
  max-width: 100%;
}

.paragraph--split .paragraph__body {
  flex: 1 1 var(--size-column-min);
}

/* split with ticks: the header and the text on the left, the ticks on the right after a rule */
.paragraph--aside .paragraph__main {
  gap: var(--space-3xl) var(--space-64);
}

.paragraph--aside .paragraph__lead .paragraph__head,
.paragraph--aside .paragraph__lead .paragraph__body {
  flex: none;
}

.paragraph--aside .paragraph__lead {
  display: flex;
  flex: 1 1 var(--size-column-min);
  flex-direction: column;
  gap: var(--space-2xl);
  max-width: var(--size-column-max);
}

.paragraph--aside .paragraph__aside {
  flex: 1 1 var(--size-column-min);
  padding-inline-start: var(--space-64);
  border-inline-start: var(--line-default);
}

@container paragraph (max-width: 704px) {
  .paragraph--aside .paragraph__lead {
    max-width: none;
  }
  .paragraph--aside .paragraph__aside {
    padding: var(--space-xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
/* images */
.paragraph__media {
  overflow: clip;
  border-radius: var(--radius-2xl);
}
.paragraph__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.paragraph__media--top {
  position: relative;
  aspect-ratio: 1328/293;
}
.paragraph__media--top img {
  position: absolute;
  inset: 0;
}

@container paragraph (max-width: 760px) {
  .paragraph__media--top {
    aspect-ratio: 16/9;
  }
}
.paragraph__beside {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2xl);
  align-items: flex-start;
}
.paragraph__beside .paragraph__media {
  flex: 1 1 var(--size-column-min-sm);
}
.paragraph__beside .paragraph__text {
  flex: 1 1 var(--size-column-min);
}

.paragraph__beside--right .paragraph__media {
  order: 1;
}

/* the outcome line under the points (chips put it in their last cell) */
.paragraph__outcome {
  display: flex;
  gap: var(--space-md);
  align-items: flex-start;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-primary);
}
.paragraph__outcome::before {
  content: "";
  flex: none;
  width: var(--bar-w);
  height: calc(var(--fs-body) * var(--lh-body));
  background: var(--c-brand-primary);
}

/* -- points ------------------------------------------------------------------------------------------- */
.points {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.points__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-brand);
}

.points__mark {
  flex: none;
  object-fit: contain;
  color: var(--c-brand-primary);
}

.points__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  min-width: 0;
}

.points__title {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}

.points__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.points--badges .points__list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
}

.points--badges .points__item {
  display: flex;
  flex: 1 0 0;
  gap: var(--space-md);
  align-items: center;
  min-width: min(100%, 15rem);
  padding: var(--space-14) var(--space-18);
  border: var(--border-w) solid var(--c-border-selected);
  border-radius: var(--radius-lg);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-nav);
}

.points--chips {
  container: chips/inline-size;
}

.points--chips .points__list {
  display: flex;
  flex-wrap: wrap;
  row-gap: var(--space-2xl);
  padding: var(--space-3xl) var(--space-40);
  border: var(--line-subtle);
  border-radius: var(--radius-2xl);
  background: var(--c-surface-default);
}

.points--chips .points__item,
.points--chips .points__outcome {
  display: flex;
  flex: 1 0 0;
  align-items: center;
  min-width: 12.5rem;
}
.points--chips .points__item + *,
.points--chips .points__outcome + * {
  padding-inline-start: var(--space-3xl);
  border-inline-start: var(--line-subtle);
}

.points__tile {
  box-shadow: none;
}

.points--chips .points__outcome {
  gap: var(--space-md);
  min-width: 16.25rem;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-brand);
}
.points--chips .points__outcome::before {
  content: "";
  flex: none;
  width: var(--bar-w);
  height: var(--space-40);
  background: var(--c-brand-primary);
}

@container chips (max-width: 542px) {
  .points--chips .points__list:has(> :last-child:nth-child(2)) {
    flex-direction: column;
    padding: var(--space-xl);
  }
  .points--chips .points__list:has(> :last-child:nth-child(2)) > * {
    flex: none;
    min-width: 0;
  }
  .points--chips .points__list:has(> :last-child:nth-child(2)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-subtle);
  }
}
@container chips (max-width: 742px) {
  .points--chips .points__list:has(> :last-child:nth-child(3)) {
    flex-direction: column;
    padding: var(--space-xl);
  }
  .points--chips .points__list:has(> :last-child:nth-child(3)) > * {
    flex: none;
    min-width: 0;
  }
  .points--chips .points__list:has(> :last-child:nth-child(3)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-subtle);
  }
}
@container chips (max-width: 942px) {
  .points--chips .points__list:has(> :last-child:nth-child(4)) {
    flex-direction: column;
    padding: var(--space-xl);
  }
  .points--chips .points__list:has(> :last-child:nth-child(4)) > * {
    flex: none;
    min-width: 0;
  }
  .points--chips .points__list:has(> :last-child:nth-child(4)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-subtle);
  }
}
@container chips (max-width: 1142px) {
  .points--chips .points__list:has(> :last-child:nth-child(5)) {
    flex-direction: column;
    padding: var(--space-xl);
  }
  .points--chips .points__list:has(> :last-child:nth-child(5)) > * {
    flex: none;
    min-width: 0;
  }
  .points--chips .points__list:has(> :last-child:nth-child(5)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-subtle);
  }
}
@container chips (max-width: 1342px) {
  .points--chips .points__list:has(> :last-child:nth-child(6)) {
    flex-direction: column;
    padding: var(--space-xl);
  }
  .points--chips .points__list:has(> :last-child:nth-child(6)) > * {
    flex: none;
    min-width: 0;
  }
  .points--chips .points__list:has(> :last-child:nth-child(6)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-subtle);
  }
}
@container chips (max-width: 760px) {
  .points--chips .points__list {
    flex-direction: column;
    padding: var(--space-xl);
  }
  .points--chips .points__list > * {
    flex: none;
    min-width: 0;
  }
  .points--chips .points__list > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-subtle);
  }
}
.points--stages {
  --number: 4rem;
  container: stages/inline-size;
}

.points--stages .points__list {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-auto-columns: minmax(0, 1fr);
  grid-auto-flow: column;
  gap: var(--space-40);
  padding: var(--space-44) var(--space-48);
  overflow: clip;
  border-radius: var(--radius-2xl);
  background: var(--c-surface-default);
}
.points--stages .points__list::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--c-bg-brand-subtle);
  opacity: var(--opacity-panel-tint);
}

.points--stages .points__item {
  container: stage/inline-size;
}
.points--stages .points__item + .points--stages .points__item {
  padding-inline-start: var(--space-40);
  border-inline-start: var(--line-default);
}

.points__number {
  display: grid;
  flex: none;
  place-items: center;
  width: var(--number);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-bg-brand-subtle);
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-numeral-l);
  line-height: var(--lh-numeral-l);
  letter-spacing: -0.01em;
  color: var(--c-text-brand);
}

.points--stages .points__body {
  gap: var(--space-md);
}

.points--stages .points__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-label-process);
  line-height: var(--lh-label-process);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--c-brand-primary);
}

.points--stages .points__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-relaxed);
  line-height: var(--lh-body-relaxed);
  letter-spacing: 0;
}

.points__stage {
  display: flex;
  gap: var(--space-2xl);
  align-items: flex-start;
}

@container stage (max-width: 18.75rem) {
  .points__stage {
    flex-direction: column;
  }
}
@container stages (max-width: 536px) {
  .points--stages .points__list:has(> :last-child:nth-child(2)) {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list:has(> :last-child:nth-child(2)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
@container stages (max-width: 776px) {
  .points--stages .points__list:has(> :last-child:nth-child(3)) {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list:has(> :last-child:nth-child(3)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
@container stages (max-width: 1016px) {
  .points--stages .points__list:has(> :last-child:nth-child(4)) {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list:has(> :last-child:nth-child(4)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
@container stages (max-width: 1256px) {
  .points--stages .points__list:has(> :last-child:nth-child(5)) {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list:has(> :last-child:nth-child(5)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
@container stages (max-width: 1496px) {
  .points--stages .points__list:has(> :last-child:nth-child(6)) {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list:has(> :last-child:nth-child(6)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
@container stages (max-width: 1736px) {
  .points--stages .points__list:has(> :last-child:nth-child(7)) {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list:has(> :last-child:nth-child(7)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
@container stages (max-width: 1976px) {
  .points--stages .points__list:has(> :last-child:nth-child(8)) {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list:has(> :last-child:nth-child(8)) > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
@container stages (max-width: 760px) {
  .points--stages .points__list {
    grid-auto-flow: row;
    padding: var(--space-2xl);
  }
  .points--stages .points__list > * + * {
    padding: var(--space-2xl) 0 0;
    border-inline-start: 0;
    border-top: var(--line-default);
  }
}
/* steps: a numbered process (Figma 05 Service, "Paper → Digital"). Each step is a node, then the title and the
   text; arrows join the nodes. A node is the step's round picture (its icon badge over the top-left, its number on
   a disc beside the badge), or its icon, or its number. Any picture in the list makes every node the pictures'
   size: a step without one is then a light circle with its icon in the middle (its number on the disc too) or its
   number. In a row while every step has $step-col of room, the titles on one line, otherwise a timeline down the
   page, where the pictures are too small for the number and it labels the title. Every size follows the node's diameter --d, so a step scales with its column. */
.points--steps {
  container: steps/inline-size;
}

.points--steps .points__label {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-label-process);
  line-height: var(--lh-label-process);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--c-text-brand);
}

.points--steps .points__list {
  --arrow: var(--space-3xl);
  --d-picture: min(12.5rem, calc(100cqi - var(--arrow)));
  --d: 3.5rem;
  --badge-x: 0.285;
  --badge-y: 0.215;
  display: grid;
  grid-auto-columns: minmax(0, 1fr);
  grid-auto-flow: column;
  padding-top: var(--space-xs);
}

.points--steps .points__list--pictured {
  --d: var(--d-picture);
}

.step {
  container: step/inline-size;
  position: relative;
  display: flex;
  flex-direction: column;
  padding-inline-end: var(--space-2xl);
}

.step__media {
  position: relative;
  display: grid;
  place-items: center;
  width: var(--d);
  aspect-ratio: 1;
  margin-bottom: var(--space-lg);
}

.step__image {
  display: block;
  width: 100%;
  height: 100%;
  overflow: clip;
  border-radius: var(--radius-pill);
  background: var(--c-bg-secondary);
}
.step__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.step__badge {
  display: grid;
  place-items: center;
  width: 100%;
  aspect-ratio: 1;
  border: var(--border-w) solid var(--c-border-selected);
  border-radius: var(--radius-pill);
  background: var(--c-surface-default);
  color: var(--c-brand-primary);
}
.step__badge .points__mark {
  width: 45%;
  height: 45%;
}

.step--image .step__badge {
  position: absolute;
  z-index: 1;
  top: calc(var(--d) * var(--badge-y));
  left: calc(var(--d) * var(--badge-x));
  width: 30%;
  border-color: transparent;
  box-shadow: var(--shadow-video);
  translate: -50% -50%;
}

.points__list--pictured > .step:not(.step--image) .step__media {
  border-radius: var(--radius-pill);
  background: var(--c-bg-secondary);
}

.points__list--pictured > .step:not(.step--image) .step__badge {
  width: 45%;
  border-color: transparent;
  box-shadow: var(--shadow-video);
}

.step:last-child .step__badge:has(> svg) {
  border-color: var(--c-brand-primary);
  background: var(--c-brand-primary);
}
.step:last-child .step__badge:has(> svg) .points__mark {
  color: var(--c-icon-inverse);
}

.step__number {
  color: var(--c-text-brand);
}

.points__list:not(.points__list--pictured) > .step > .step__number {
  margin-bottom: var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

:where(.points__list:not(.points__list--pictured):has(> .step:not(.step--plain))) > .step--plain .points__body {
  padding-top: calc(var(--fs-eyebrow-s) * var(--lh-eyebrow-s) + var(--space-xs));
}

/* pictures in the list: on a white disc by the badge's place, sized with the node (Figma's 16px number on a 45px
   disc over its 200px picture), at least 13px, and placed by its own size so the badge never covers the digits */
.points__list--pictured > .step > .step__number {
  --nf: max(var(--fs-body-s), calc(var(--d) * 0.08));
  position: absolute;
  top: calc(var(--d) * var(--badge-y) - var(--nf) * 1.55);
  left: calc(var(--d) * var(--badge-x) - var(--nf) * 2.2);
  display: grid;
  place-items: center;
  width: max(var(--d) * 0.224, var(--nf) * 2.2);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-video);
  font-size: var(--nf);
  font-weight: 600;
  line-height: 1;
  translate: -50% -50%;
}

.step--plain .step__media {
  border-radius: var(--radius-pill);
  background: var(--c-bg-brand-subtle);
}

.step--plain .step__number {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-numeral-l);
  line-height: var(--lh-numeral-l);
  letter-spacing: -0.01em;
}

.points__list--pictured .step--plain .step__number {
  font-size: max(var(--fs-numeral-l), var(--d) * 0.2);
}

.step .points__body {
  gap: var(--space-xs);
}

.step .points__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-title-s);
  line-height: var(--lh-title-s);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.step .points__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.step:not(:last-child)::before, .step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: calc(var(--d) / 2);
}
.step:not(:last-child)::before {
  right: var(--space-md);
  left: calc(var(--d) + var(--space-md));
  border-top: var(--accent-line) solid var(--c-border-selected);
  translate: 0 -50%;
}
.step:not(:last-child)::after {
  right: var(--space-md);
  width: var(--space-sm);
  aspect-ratio: 1;
  border: solid var(--c-brand-primary);
  border-width: var(--accent-line) var(--accent-line) 0 0;
  translate: 0 -50%;
  rotate: 45deg;
}

@container steps (max-width: 360px) {
  .points--steps .points__list:has(> :last-child:nth-child(2)) {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(2)) .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(2)) .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(2)) .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(2)) .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list:has(> :last-child:nth-child(2)).points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list:has(> :last-child:nth-child(2)) .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(2)) .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
@container steps (max-width: 540px) {
  .points--steps .points__list:has(> :last-child:nth-child(3)) {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(3)) .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(3)) .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(3)) .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(3)) .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list:has(> :last-child:nth-child(3)).points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list:has(> :last-child:nth-child(3)) .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(3)) .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
@container steps (max-width: 720px) {
  .points--steps .points__list:has(> :last-child:nth-child(4)) {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(4)) .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(4)) .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(4)) .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(4)) .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list:has(> :last-child:nth-child(4)).points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list:has(> :last-child:nth-child(4)) .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(4)) .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
@container steps (max-width: 900px) {
  .points--steps .points__list:has(> :last-child:nth-child(5)) {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(5)) .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(5)) .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(5)) .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(5)) .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list:has(> :last-child:nth-child(5)).points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list:has(> :last-child:nth-child(5)) .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(5)) .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
@container steps (max-width: 1080px) {
  .points--steps .points__list:has(> :last-child:nth-child(6)) {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(6)) .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(6)) .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(6)) .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(6)) .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list:has(> :last-child:nth-child(6)).points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list:has(> :last-child:nth-child(6)) .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(6)) .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
@container steps (max-width: 1260px) {
  .points--steps .points__list:has(> :last-child:nth-child(7)) {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(7)) .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(7)) .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(7)) .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(7)) .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list:has(> :last-child:nth-child(7)).points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list:has(> :last-child:nth-child(7)) .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(7)) .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
@container steps (max-width: 1440px) {
  .points--steps .points__list:has(> :last-child:nth-child(8)) {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(8)) .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(8)) .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(8)) .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(8)) .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list:has(> :last-child:nth-child(8)).points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list:has(> :last-child:nth-child(8)) .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list:has(> :last-child:nth-child(8)) .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
@container steps (max-width: 760px) {
  .points--steps .points__list {
    --rail: var(--space-48);
    --d-picture: min(7.5rem, 30cqi);
    grid-auto-flow: row;
    row-gap: var(--rail);
    padding-top: 0;
  }
  .points--steps .points__list .step {
    display: grid;
    grid-template: "media number" auto "media body" 1fr/var(--d) minmax(0, 1fr);
    column-gap: var(--space-xl);
    align-items: start;
    padding-inline-end: 0;
  }
  .points--steps .points__list .step__media {
    grid-area: media;
    margin-bottom: 0;
  }
  .points--steps .points__list .points__body {
    grid-area: body;
    padding-top: 0;
  }
  .points--steps .points__list .step > .step__number {
    grid-area: number;
  }
  .points--steps .points__list.points__list--pictured > .step > .step__number {
    position: static;
    display: block;
    width: auto;
    aspect-ratio: auto;
    margin-bottom: var(--space-xs);
    background: none;
    box-shadow: none;
    translate: none;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: var(--fs-eyebrow-s);
    line-height: var(--lh-eyebrow-s);
    letter-spacing: 0.2em;
    text-transform: uppercase;
  }
  .points--steps .points__list .step:not(:last-child)::before {
    top: calc(var(--d) + var(--space-sm));
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    border-top: 0;
    border-left: var(--accent-line) solid var(--c-border-selected);
    translate: -50% 0;
  }
  .points--steps .points__list .step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--space-sm) - var(--rail));
    left: calc(var(--d) / 2);
    translate: -50% 0;
    rotate: 135deg;
  }
}
.points--ticks {
  --tick: var(--size-control-lg);
}

.points--ticks .points__item {
  display: flex;
  gap: var(--space-2xl);
  align-items: center;
  padding-block: var(--space-2xl);
}

.points__mark-wrap {
  display: grid;
  flex: none;
  place-items: center;
  width: var(--tick);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-bg-brand-subtle);
}

/* Figma News Listing item (171:3334): an article on the News page — the picture, the date after a short red
   rule, the title (the link), the excerpt and "Learn more", over a bottom rule. */
.news-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  align-items: flex-start;
  width: 100%;
  padding-bottom: var(--space-40);
  border-bottom: var(--line-subtle);
}

.news-item__media {
  display: block;
  align-self: stretch;
}

.news-item__img {
  display: block;
  width: 100%;
  aspect-ratio: 410.67/274;
  overflow: clip;
  border-radius: var(--radius-lg);
}
.news-item__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: scale var(--duration) var(--ease);
}

@media (hover: hover) and (pointer: fine) {
  .news-item:has(.news-item__media:hover, .news-item__title a:hover) .news-item__img img {
    scale: var(--zoom);
  }
}
.news-item__date {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  padding-top: var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
  color: var(--c-text-muted);
}
.news-item__date::before {
  content: "";
  width: var(--space-2xl);
  height: var(--accent-line);
  background: var(--c-brand-primary);
}

.news-item__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
  overflow-wrap: anywhere;
}
@media (hover: hover) and (pointer: fine) {
  .news-item__title a:hover {
    text-decoration-line: underline;
  }
}

.news-item__excerpt {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

/* -- the page shell (after the components it arranges) -- */
/* The page around the fixed header: its height is reserved at the top, and anchors land below it. */
:root {
  --header-h: var(--header-full);
}
@media (max-width: 1279.98px) {
  :root {
    --header-h: var(--header-bar);
  }
}

html {
  scroll-padding-top: var(--header-h);
}

body {
  padding-top: var(--header-h);
}

/* While a modal is open (js/app/helpers.js lockScroll): the page stops scrolling, and the scrollbar's width
   turns into padding, so neither the page nor the fixed header moves sideways. */
.is-scroll-locked {
  overflow: hidden;
}
.is-scroll-locked body,
.is-scroll-locked .header {
  padding-inline-end: var(--scrollbar-w);
}

.page:focus-visible {
  outline: none;
}

/* Skip link: waits above the viewport, slides into view when it gets keyboard focus (also when back to top
   sends focus here from the keyboard; after a click it stays out of sight). */
.skip-link {
  position: fixed;
  top: var(--space-xs);
  left: var(--space-xs);
  z-index: var(--z-modal);
  padding: var(--space-sm) var(--space-lg);
  border-radius: var(--radius-sm);
  background: var(--c-surface-inverse);
  color: var(--c-text-inverse);
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
  translate: 0 -200%;
}
.skip-link:focus-visible {
  translate: none;
}

/* Figma Header (97:1086): fixed, on Background/Secondary, 148px. js/app/header.js adds .is-stuck (the shadow)
   and .is-slim (a slimmer bar) while scrolling. Between 1440px and 1280px the gaps shrink so the full menu
   still fits; below 1280px the logo and the burger take over. */
.header {
  --bar-h: var(--header-full);
  position: fixed;
  inset: 0 0 auto;
  z-index: var(--z-header);
  background: var(--c-bg-secondary);
  transition: box-shadow var(--duration) var(--ease);
}
.header.is-stuck {
  box-shadow: var(--shadow-nav);
}
.header.is-slim {
  --bar-h: var(--header-slim);
}

.header__bar {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(1.5rem, -6rem + 9.375vw, 2.4375rem);
  min-height: var(--bar-h);
  transition: min-height var(--duration) var(--ease);
}

.header .logo,
.header__actions {
  position: relative;
  z-index: 1;
  flex: none;
}

.header .logo__img {
  --logo-w: 15.5881rem;
  transition: width var(--duration) var(--ease);
}

.header.is-slim .logo__img {
  --logo-w: var(--size-logo-bar);
}

.header__nav {
  flex: 0 1 40.625rem;
}

.header__menu {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2xl);
}

.header__link {
  position: relative;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  gap: var(--space-6);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-label-nav);
  line-height: var(--lh-label-nav);
  letter-spacing: 0;
  color: var(--c-text-primary);
  white-space: nowrap;
  transition: color var(--duration) var(--ease);
}
.header__link::before {
  content: "";
  position: absolute;
  inset: calc(var(--space-sm) * -1) calc(var(--space-14) * -1);
  z-index: -1;
  border-radius: var(--radius-pill);
  background: var(--c-surface-inverse);
  opacity: 0;
  scale: 0.9;
  transition: opacity var(--duration) var(--ease), scale var(--duration) var(--ease);
}
.header__link[aria-current] {
  color: var(--c-text-brand);
}
.header__link[aria-expanded=true] {
  color: var(--c-text-inverse);
}
.header__link[aria-expanded=true]::before {
  opacity: 1;
  scale: 1;
}
@media (hover: hover) and (pointer: fine) {
  .header__link:hover {
    color: var(--c-text-inverse);
  }
  .header__link:hover::before {
    opacity: 1;
    scale: 1;
  }
}

.header__toggle[aria-expanded=true]::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline: calc(var(--space-14) * -1);
  height: calc(var(--bar-h) / 2);
}

.header__chevron {
  transition: rotate var(--duration) var(--ease);
}
[aria-expanded=true] > .header__chevron {
  rotate: 180deg;
}

/* Below the burger breakpoint: the 72px bar — the logo, the pill (from 576px up) and the burger; no slim
   state. The menu itself is in the slide-in menu (_mobile-nav.scss). */
@media (min-width: 1280px) {
  .header .burger {
    display: none;
  }
}
@media (max-width: 1279.98px) {
  .header,
  .header.is-slim {
    --bar-h: var(--header-bar);
  }
  .header .logo__img,
  .header.is-slim .logo__img {
    --logo-w: var(--size-logo-bar);
  }
  .header__nav {
    display: none;
  }
  .header__actions {
    margin-inline-start: auto;
  }
}
@media (max-width: 575.98px) {
  .header__actions {
    display: none;
  }
}
/* Figma Mega Menu (87:671 Services, 87:1038 Solutions): a white card under the header, centred under its toggle
   and kept within the content width (js/app/header.js sets --mega-x), overlapping the header's bottom edge by
   6px — groups of links on the left, the grey promo panel on the right. Hidden until header.js opens it. */
.mega {
  position: absolute;
  top: calc(100% - var(--space-6));
  inset-inline: var(--gutter);
}
.mega::before {
  content: "";
  position: absolute;
  bottom: 100%;
  inset-inline: 0;
  height: calc(var(--bar-h) / 2 - var(--space-xl));
}

.mega__card {
  display: flex;
  width: min(100%, 76.25rem);
  margin-inline-start: var(--mega-x, 0);
  overflow: clip;
  border-radius: var(--radius-2xl);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-card);
}

.mega__groups {
  flex: 1;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: var(--space-48);
  padding: var(--space-40);
}

.mega__group {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
}

.mega__title {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}
.mega__title::after {
  content: "";
  width: var(--size-rule);
  height: var(--accent-line);
  background: var(--c-brand-primary);
}

.mega__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.mega__link {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
  transition: color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .mega__link:hover {
    color: var(--c-text-brand);
  }
}

.mega__promo {
  flex: none;
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  width: 21.5rem;
  padding: var(--space-40);
  background: var(--c-bg-subtle);
}

.mega__img {
  aspect-ratio: 264/160;
  overflow: clip;
  border-radius: var(--radius-md);
}
.mega__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.mega__promo-title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.mega__promo-text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

/* The slide-in menu below the burger breakpoint (no Figma design: the header's parts, stacked). A modal
   <dialog> from the right, min(420px, 100%) wide and full height, over the dimmed page; js/app/mobile-nav.js
   opens it. The top row repeats the header bar; the rest scrolls on its own. Browsers that cannot animate a
   dialog simply show it; reduced motion makes the slide instant (base/_reset.scss). */
.mobile-nav {
  --pad: min(var(--gutter), var(--space-2xl));
  inset: 0 0 0 auto;
  width: min(26.25rem, 100%);
  max-width: none;
  height: auto;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: var(--c-surface-default);
  color: var(--c-text-primary);
  translate: 100% 0;
  transition: translate var(--duration) var(--ease), overlay var(--duration) allow-discrete, display var(--duration) allow-discrete;
}
.mobile-nav[open] {
  display: flex;
  flex-direction: column;
  translate: none;
}
@starting-style {
  .mobile-nav[open] {
    translate: 100% 0;
  }
}
.mobile-nav::backdrop {
  background: transparent;
  transition: background-color var(--duration) var(--ease), overlay var(--duration) allow-discrete, display var(--duration) allow-discrete;
}
.mobile-nav[open]::backdrop {
  background: var(--tint-scrim);
}
@starting-style {
  .mobile-nav[open]::backdrop {
    background: transparent;
  }
}

.mobile-nav__top {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
  min-height: var(--header-bar);
  padding-inline: var(--pad);
  background: var(--c-bg-secondary);
}
.mobile-nav__top .logo__img {
  --logo-w: var(--size-logo-bar);
}

.mobile-nav__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-3xl);
  padding: var(--space-xs) var(--pad) var(--space-3xl);
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* -- the menu: rows, and the Services and Solutions accordions --------------------------------------- */
.mobile-nav__item {
  border-bottom: var(--line-subtle);
}

.mobile-nav__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  width: 100%;
  min-height: var(--control-h);
  padding-block: var(--space-sm);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
  text-align: start;
  transition: color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .mobile-nav__row:hover {
    color: var(--c-text-brand);
  }
}
.mobile-nav__row[aria-current] {
  color: var(--c-text-brand);
}

.mobile-nav__chevron {
  transition: rotate var(--duration) var(--ease);
}
[aria-expanded=true] > .mobile-nav__chevron {
  rotate: 180deg;
}

.mobile-nav__sub {
  display: grid;
  grid-template-rows: 0fr;
  visibility: hidden;
  transition: grid-template-rows var(--duration) var(--ease), visibility var(--duration);
}
[aria-expanded=true] + .mobile-nav__sub {
  grid-template-rows: 1fr;
  visibility: visible;
}

.mobile-nav__groups {
  min-height: 0;
  margin-inline: calc(var(--focus-reach) * -1);
  padding-inline: calc(var(--space-lg) + var(--focus-reach)) var(--focus-reach);
  overflow: clip;
}

.mobile-nav__list:last-child {
  padding-bottom: var(--space-lg);
}

.mobile-nav__title {
  padding-block: var(--space-md) var(--space-4);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-secondary);
}

.mobile-nav__link,
.mobile-nav__phone {
  display: flex;
  align-items: center;
  min-height: var(--touch-min);
  padding-block: var(--space-xs);
  transition: color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .mobile-nav__link:hover,
  .mobile-nav__phone:hover {
    color: var(--c-text-brand);
  }
}

.mobile-nav__link {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

/* -- below the menu: phones and social links (the pill stretches across on its own) ---------------- */
.mobile-nav__contact {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.mobile-nav__phone {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}

.mobile-nav__social {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
}

/* Figma Footer (97:1327): the brand-red gradient band with four faint white circles; white text and icons.
   From 1280px the brand block sits beside the link columns (at 1440 as drawn, Resources wrapping under
   Company; from 1600px all four in one row); below 1280px it goes on top, and the columns go from three to
   two below 1024px and to one on phones. The bottom bar is one row from 1280px, two below. Opacities are
   Figma's layer opacities; values off the token scale are Figma's own and used once. */
.footer {
  --c-focus: var(--c-border-inverse);
  position: relative;
  overflow: clip;
  background: var(--gradient-brand-band);
  color: var(--c-text-inverse);
}

/* -- the rings (components/_rings.scss): Figma's sizes, thicknesses and places at 1440 × 746; the top pair hangs from the
   top-right corner, the other two from the bottom-left one ------------------------------------------------ */
.footer__ring--top {
  --ring: 44.375rem;
  --ring-w: 4.8813rem;
  top: -28.25rem;
  right: -12.875rem;
}

.footer__ring--top-inner {
  --ring: 32.75rem;
  --ring-w: 1.1438rem;
  top: -22.4375rem;
  right: -7.0625rem;
}

.footer__ring--left {
  --ring: 48.375rem;
  --ring-w: 3.625rem;
  bottom: -12.875rem;
  left: -34.25rem;
}

.footer__ring--bottom {
  --ring: 52.375rem;
  --ring-w: 2.6188rem;
  bottom: -47.5625rem;
  left: -6rem;
}

.footer__top,
.footer__bottom {
  position: relative;
}

/* -- top: the brand block and the link columns ------------------------------------------------------ */
.footer__top {
  display: grid;
  grid-template-columns: 12.875rem minmax(0, 1fr);
  column-gap: clamp(3rem, -33rem + 45vw, 7.5rem);
  row-gap: var(--space-48);
  padding-block: 4.0313rem var(--space-48);
}
@media (max-width: 1279.98px) {
  .footer__top {
    grid-template-columns: minmax(0, 1fr);
  }
}

.footer__brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-22);
}
.footer__brand .logo__img {
  --logo-w: 11.7463rem;
}

.footer__blurb {
  max-width: 50ch;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-blurb);
  line-height: var(--lh-blurb);
  letter-spacing: 0;
  opacity: 0.96;
}

.footer__social {
  --social-gap: var(--space-xs);
  display: flex;
  align-items: center;
  gap: var(--social-gap);
}
@media (max-width: 1279.98px) {
  .footer__social {
    --social-gap: var(--space-xl);
  }
}
.footer__social li + li {
  display: flex;
  align-items: center;
  gap: var(--social-gap);
}
.footer__social li + li::before {
  content: "";
  width: var(--border-w);
  height: var(--space-2xl);
  background: currentColor;
  opacity: 0.45;
}

.footer__social-link {
  display: grid;
  place-items: center;
  transition: color var(--duration) var(--ease);
}
@media (pointer: coarse) {
  .footer__social-link {
    position: relative;
  }
  .footer__social-link::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
@media (hover: hover) and (pointer: fine) {
  .footer__social-link:hover {
    color: var(--c-brand-secondary);
  }
}

.footer__nav {
  display: grid;
  grid-template-columns: minmax(0, 216.3fr) minmax(0, 297.8fr) minmax(0, 455.9fr);
  grid-template-areas: "company services solutions" "resources . .";
  row-gap: var(--space-3xl);
  padding-top: 0.2813rem;
}
@media (min-width: 1600px) {
  .footer__nav {
    grid-template-columns: repeat(4, auto);
    grid-template-areas: "company services solutions resources";
    justify-content: space-between;
    column-gap: var(--space-3xl);
  }
}
@media (max-width: 1279.98px) {
  .footer__nav {
    padding-top: 0;
  }
}
@media (max-width: 1023.98px) {
  .footer__nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-areas: "company services" "solutions solutions" "resources .";
    column-gap: var(--space-3xl);
  }
}
@media (max-width: 575.98px) {
  .footer__nav {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "company" "services" "solutions" "resources";
  }
}

.footer__col {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
}

.footer__col--company {
  grid-area: company;
}

.footer__col--resources {
  grid-area: resources;
}

.footer__col--services {
  grid-area: services;
  padding-inline-end: var(--space-2xl);
}
@media (max-width: 1023.98px) {
  .footer__col--services {
    padding-inline-end: 0;
  }
}

.footer__col--solutions {
  --line-x: 3.6875rem;
  grid-area: solutions;
  padding-inline-start: var(--line-x);
}
@media (max-width: 1023.98px) {
  .footer__col--solutions {
    padding-inline-start: 0;
  }
}

.footer__heading {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
}
.footer__heading::after {
  content: "";
  width: var(--size-rule);
  height: 0.15rem;
  background: var(--c-brand-secondary);
}

.footer__links {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-link-s);
  line-height: var(--lh-link-s);
  letter-spacing: 0;
}

.footer__link {
  opacity: 0.94;
  transition: opacity var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .footer__link:hover {
    opacity: 1;
    text-decoration: underline;
  }
}

.footer__sub {
  --sub-gap: 2.125rem;
  --sub-line: calc(var(--space-xl) + var(--border-w));
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 162fr) minmax(0, 160fr);
  column-gap: var(--sub-gap);
}
@media (max-width: 1023.98px) {
  .footer__sub {
    --sub-gap: var(--space-3xl);
    --sub-line: calc((var(--sub-gap) + var(--border-w)) / 2);
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .footer__sub::before {
    content: none;
  }
}

.footer__subcol {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.footer__sub::before,
.footer__subcol + .footer__subcol::before {
  content: "";
  position: absolute;
  inset-block: 0;
  width: var(--border-w);
  background: currentColor;
  opacity: 0.28;
}

.footer__sub::before {
  inset-inline-start: calc(var(--line-x) * -1);
}

.footer__subcol + .footer__subcol::before {
  inset-inline-start: calc(var(--sub-line) * -1);
}

.footer__subheading {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h6);
  line-height: var(--lh-h6);
  letter-spacing: 0;
}

/* -- bottom bar: contact details; copyright and legal links; back to top -------------------------------- */
.footer__bottom::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: var(--border-w);
  background: currentColor;
  opacity: 0.3;
}

.footer__bar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-areas: "contact legal top";
  align-items: center;
  gap: var(--space-xl) var(--space-2xl);
  padding-block: 1.0938rem 2.8438rem;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
}
@media (max-width: 1279.98px) {
  .footer__bar {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "contact top" "legal legal";
    align-items: start;
  }
}

.footer__contact {
  grid-area: contact;
  display: flex;
  align-items: flex-start;
  gap: var(--space-md);
}

.footer__pin {
  --icon-contrast: var(--c-brand-primary-dark);
  width: 1rem;
  color: var(--c-brand-secondary);
}

.footer__address {
  display: flex;
  flex-direction: column;
}

.footer__company {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h6);
  line-height: var(--lh-h6);
  letter-spacing: 0;
}

.footer__street,
.footer__copyright,
.footer__small-link {
  opacity: 0.95;
}

.footer__small-link {
  transition: opacity var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .footer__small-link:hover {
    opacity: 1;
    text-decoration: underline;
  }
}

.footer__legal {
  grid-area: legal;
  justify-self: end;
}
@media (max-width: 1279.98px) {
  .footer__legal {
    justify-self: start;
  }
}

.footer__bar .back-to-top {
  grid-area: top;
}

.footer__sep {
  --sep-gap: var(--space-sm);
  margin: calc(var(--focus-reach) * -1);
  padding: var(--focus-reach);
  overflow: clip;
}

.footer__legal {
  --sep-gap: var(--space-md);
}

.footer__sep > .footer__sep-list {
  display: flex;
  flex-wrap: wrap;
  margin-inline-start: calc((var(--sep-gap) * 2 + var(--border-w)) * -1);
}
.footer__sep > .footer__sep-list li {
  position: relative;
  padding-inline-start: calc(var(--sep-gap) * 2 + var(--border-w));
}
.footer__sep > .footer__sep-list li::before {
  content: "";
  position: absolute;
  top: 50%;
  inset-inline-start: var(--sep-gap);
  width: var(--border-w);
  height: 0.75lh;
  translate: 0 -50%;
  background: currentColor;
  opacity: 0.5;
}

/* The inner pages' hero (Figma 01 Hero 149:6017, 167:2967, 161:2881…) on Background/Subtle: the copy column
   (532px) beside the photo (440px tall) with the breadcrumb over the photo. Below 1024px: the breadcrumb, the
   copy, then the photo. */
.page-hero {
  background: var(--c-bg-subtle);
}

.page-hero__inner {
  --copy-col: 33.25rem;
  display: grid;
  grid-template: "content crumbs" auto "content media" 1fr/minmax(0, var(--copy-col)) minmax(0, 1fr);
  gap: var(--space-lg) var(--space-64);
  padding-block: var(--space-xl) clamp(2.5rem, 1.9286rem + 2.8571vw, 4.5rem);
}

.page-hero__crumbs {
  grid-area: crumbs;
  justify-self: end;
}

.page-hero__content {
  display: flex;
  flex-direction: column;
  grid-area: content;
  gap: var(--space-3xl);
  padding-top: var(--space-36);
}

.page-hero__copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xl);
}

.page-hero__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-display-l);
  line-height: var(--lh-display-l);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.page-hero__text {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.page-hero__lead {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.page-hero__intro {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}
.page-hero__intro > * + * {
  margin-top: var(--space-lg);
}

.page-hero__media {
  grid-area: media;
  height: var(--size-page-hero-media);
  overflow: clip;
  border-radius: var(--radius-2xl);
}
.page-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 1023.98px) {
  .page-hero__inner {
    grid-template: "crumbs" auto "content" auto "media" auto/minmax(0, 1fr);
  }
  .page-hero__crumbs {
    justify-self: start;
  }
  .page-hero__content {
    padding-top: 0;
  }
  .page-hero__media {
    height: auto;
    aspect-ratio: 16/9;
  }
}
/* -- pages -- */
/* The styleguide page only — a build reference, not part of the site. */
.sg {
  display: flex;
  flex-direction: column;
  gap: var(--section-y);
  padding-block: var(--section-y);
}

.sg__intro {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  max-width: 48rem;
}

.sg__heading {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  letter-spacing: -0.015em;
}

.sg__lead {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.sg__section {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
}

.sg__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  padding-block-end: var(--space-md);
  border-block-end: var(--line-subtle);
}

.sg__subtitle {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
}

.sg__note {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.sg__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
  gap: var(--space-2xl);
  align-items: start;
}

.sg__grid--swatches {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 10rem), 1fr));
}

.sg__stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
}

.sg__item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-xs);
  min-width: 0;
}

.sg__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-lg);
}

.sg__type {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding-block-end: var(--space-xl);
  border-block-end: var(--line-subtle);
}

.sg__name, .sg__value {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
  color: var(--c-text-subtle);
  overflow-wrap: anywhere;
}

.sg__swatch {
  width: 100%;
  aspect-ratio: 3/2;
  border: var(--line-subtle);
  border-radius: var(--radius-sm);
}

.sg__bar {
  height: var(--space-lg);
  background: var(--c-brand-primary);
}

.sg__box {
  width: 100%;
  aspect-ratio: 2;
  border: var(--line-subtle);
  background: var(--c-surface-default);
}

.sg__dark {
  padding: var(--space-xl);
  border-radius: var(--radius-md);
  background: var(--c-surface-inverse);
}

.sg__frame {
  width: 100%;
  max-width: 22rem;
  align-items: stretch;
}

.sg__icon {
  color: var(--c-icon-primary);
}

.sg__brand-band {
  padding: var(--space-xl);
  border-radius: var(--radius-md);
  background: var(--c-bg-brand);
  --c-focus: var(--c-border-inverse);
}

.sg__stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-48);
}

.sg__specimen {
  width: 100%;
  align-items: stretch;
}

.sg__item--tail {
  gap: var(--space-xl);
}

/* Homepage hero (Figma 02 Hero 256:4902 and Hero Visual 235:11220), drawn at 1920: the centred headline, then the
   rounded visual — a slider whose slides each hold their media (video or photo, overflowing 131px below and
   clipped) and a white card — with the accreditation strip fixed over the bottom of every slide. Between the
   card and the strip runs the controls' row: the pause button (WCAG 2.2.2; not in Figma) and, below 1024px,
   the dots, which replace the arrows there. Below 768px the strip turns into a 2 × 2 grid. */
.hero {
  --pad-top: clamp(1rem, 0.5179rem + 2.4107vw, 2.6875rem);
  --pad-end: clamp(1rem, -0.9464rem + 9.7321vw, 7.8125rem);
  --pad-start: clamp(1rem, -0.8036rem + 9.0179vw, 7.3125rem);
  --strip-bottom: clamp(1rem, 0.5357rem + 2.3214vw, 2.625rem);
  --logo-h: 3.9375rem;
  --strip-h: 4.8125rem;
  --strip-blur: 0.5rem;
  --arrow-h: 4.8438rem;
  --arrow-w: calc(var(--arrow-h) * 36 / 77.5);
  --controls-h: var(--size-control-xs);
  --card-clearance: max(clamp(1.5rem, 0.8393rem + 3.3036vw, 3.8125rem), calc(var(--controls-h) + var(--space-sm) * 2));
  --controls-bottom: calc(var(--strip-bottom) + var(--strip-h) + (var(--card-clearance) - var(--controls-h)) / 2);
  position: relative;
  overflow: clip;
  background: var(--gradient-hero-glow), var(--c-bg-secondary);
}

.hero__decor {
  position: absolute;
  inset: 0 auto auto 50%;
  width: 90rem;
  height: 51.375rem;
  translate: -50% 0;
  pointer-events: none;
}

.hero__glow {
  position: absolute;
  top: -4.0625rem;
  left: 6.5rem;
  width: 77rem;
  max-width: none;
}

.hero__ring {
  position: absolute;
  top: 4.5rem;
  left: 9.9375rem;
  width: 70.875rem;
  max-width: none;
}

.hero__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-48);
  padding-block: var(--space-xl) var(--space-48);
}

.hero__head {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-md);
  text-align: center;
}

.hero__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-display-l);
  line-height: var(--lh-display-l);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.hero__accent {
  color: var(--c-text-brand);
}

.hero__intro {
  max-width: 34.5938rem;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

/* -- the visual: slider + strip -------------------------------------------------------------------------- */
.hero__visual {
  position: relative;
  width: 100%;
  overflow: clip;
  border-radius: var(--radius-2xl);
  background: var(--c-bg-secondary);
}

.hero__slide {
  position: relative;
  display: flex;
  align-items: flex-start;
  height: auto;
  padding: var(--pad-top) var(--pad-end) calc(var(--strip-bottom) + var(--strip-h) + var(--card-clearance)) var(--pad-start);
}

.hero__media {
  position: absolute;
  inset: 0 0 -8.1875rem;
}
.hero__media img,
.hero__media video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hero__media .hero__img {
  height: 100%;
}
.hero__media .hero__video {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity var(--duration-reveal) var(--ease-out);
}
.hero__media .hero__video.is-playing {
  opacity: 1;
}

.hero__card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-xs);
  width: 100%;
  max-width: 38.8125rem;
  padding: var(--space-lg) var(--space-3xl) var(--space-xl);
  border: var(--border-w) solid var(--c-border-inverse);
  border-radius: var(--radius-lg);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-card);
}

.hero__eyebrow {
  margin-bottom: var(--space-4);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-primary);
}

.hero__card-title {
  max-width: 26.7813rem;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.hero__text {
  max-width: 27.4063rem;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.hero__actions {
  padding-top: var(--space-14);
}

@media (prefers-reduced-motion: no-preference) {
  .swiper-slide-active .hero__card > * {
    animation: rise var(--duration-reveal) var(--ease-out) both;
  }
  .swiper-slide-active .hero__card > *:nth-child(2) {
    animation-delay: calc(var(--stagger) * 1);
  }
  .swiper-slide-active .hero__card > *:nth-child(3) {
    animation-delay: calc(var(--stagger) * 2);
  }
  .swiper-slide-active .hero__card > *:nth-child(4) {
    animation-delay: calc(var(--stagger) * 3);
  }
}
.hero__arrow,
.hero__play {
  position: absolute;
  z-index: 1;
  display: grid;
  place-items: center;
  opacity: 0.9;
  transition: opacity var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .hero__arrow:hover,
  .hero__play:hover {
    opacity: 1;
  }
}

.hero__arrow {
  top: 50%;
  translate: 0 -50%;
  width: var(--arrow-w);
  height: var(--arrow-h);
}
.hero__arrow img {
  width: 100%;
  height: 100%;
}

.hero__arrow--prev {
  left: min(2.9375rem, var(--pad-start) - var(--arrow-w) - var(--space-sm));
}

.hero__arrow--next {
  right: 6.25rem;
}

.hero__play {
  z-index: 2;
  right: var(--pad-end);
  bottom: var(--controls-bottom);
  width: var(--controls-h);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--tint-strip);
  backdrop-filter: blur(var(--strip-blur));
  color: var(--c-icon-inverse);
}
@media (pointer: coarse) {
  .hero__play::after {
    content: "";
    position: absolute;
    inset: min(0px, (100% - var(--touch-min)) / 2);
  }
}
.hero__play .hero__play-icon--play, .hero__play.is-paused .hero__play-icon--pause {
  display: none;
}
.hero__play.is-paused .hero__play-icon--play {
  display: block;
}

.hero__dots {
  display: none;
}

.hero .hero__logos {
  position: absolute;
  right: var(--pad-end);
  bottom: var(--strip-bottom);
  left: var(--pad-start);
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: var(--strip-h);
  padding-inline: clamp(1rem, -0.0893rem + 5.4464vw, 4.8125rem) clamp(1rem, -0.2679rem + 6.3393vw, 5.4375rem);
  border-radius: var(--radius-md);
  background: var(--tint-strip);
  backdrop-filter: blur(var(--strip-blur));
}

.hero__logo {
  display: contents;
}
.hero__logo + .hero__logo::before {
  content: "";
  width: var(--border-w);
  height: 1.875rem;
  background: var(--tint-strip-rule);
}

/* -- smaller screens: dots instead of arrows, in the controls' row ---------------------------------------- */
@media (max-width: 1023.98px) {
  .hero__card-title {
    max-width: none;
  }
  .hero__arrow {
    display: none;
  }
  .hero .hero__dots {
    position: absolute;
    bottom: var(--controls-bottom);
    left: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: var(--controls-h);
  }
}
@media (max-width: 767.98px) {
  .hero {
    --strip-h: calc(var(--logo-h) * 2 + var(--space-md) * 3);
  }
  .hero__slide {
    padding-top: calc(var(--space-40) * 4);
  }
  .hero .hero__logos {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    justify-items: center;
    row-gap: var(--space-md);
    padding: var(--space-md);
  }
  .hero__logo + .hero__logo::before {
    content: none;
  }
}
/* Homepage sections after the hero (Figma 01 Homepage 1:2), each drawn at 1920; paddings are Figma's there and
   shrink fluidly. The hero is pages/_home-hero.scss. */
/* -- What's slowing you down? (10:148) ---------------------------------------------------------------- */
.challenges__inner {
  --intro-w: 20.625rem;
  display: grid;
  grid-template-columns: var(--intro-w) minmax(0, 1fr);
  gap: var(--space-3xl) var(--space-2xl);
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem) clamp(3rem, 2.625rem + 1.875vw, 4.3125rem);
}
@media (max-width: 1439.98px) {
  .challenges__inner {
    grid-template-columns: minmax(0, 1fr);
  }
}

.challenges__intro {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-md);
}

.challenges__title {
  max-width: 20.0938rem;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  letter-spacing: -0.015em;
  color: var(--c-text-primary);
}
@media (max-width: 1439.98px) {
  .challenges__title {
    max-width: none;
  }
}

.challenges__text {
  max-width: var(--intro-w);
  margin-block: var(--space-xs) var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.challenges__cards {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3xl);
  padding-top: var(--space-4);
}
.challenges__cards li {
  display: flex;
}
@media (max-width: 1279.98px) {
  .challenges__cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-2xl);
  }
}
@media (max-width: 575.98px) {
  .challenges__cards {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* -- Information Services That Work (13:176) -------------------------------------------------------- */
.services {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xl);
  padding-block: clamp(3rem, 2.5893rem + 2.0536vw, 4.4375rem) clamp(3rem, 2.4464rem + 2.7679vw, 4.9375rem);
  background: var(--c-bg-secondary);
}

.services .section-head__title {
  text-wrap: wrap;
}

.services__track .swiper {
  padding-block: var(--space-sm) var(--space-xl);
}

.services__slide {
  width: var(--size-service-card);
}

/* -- Solutions for Every Industry and Application (19:368) -------------------------------------------- */
.solutions__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
  padding-block: clamp(3rem, 2.3929rem + 3.0357vw, 5.125rem) clamp(3rem, 2.4643rem + 2.6786vw, 4.875rem);
  border-bottom: var(--line-default);
}

.solutions__top {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-xl);
}
.solutions__top .toggle {
  margin-top: var(--space-sm);
}

.solutions__heading {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.solutions__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  letter-spacing: -0.015em;
  color: var(--c-text-primary);
}

.solutions__group {
  display: flex;
  gap: var(--space-3xl);
}
@media (max-width: 1023.98px) {
  .solutions__group {
    flex-direction: column;
  }
}

.solutions__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  flex: 1 1 0;
  max-width: 22rem;
  min-width: var(--size-column-min-sm);
}
@media (max-width: 1023.98px) {
  .solutions__list {
    max-width: none;
    min-width: 0;
  }
}

.solutions__panel {
  display: flex;
  flex: 1 1 0;
  min-height: 28.875rem;
  overflow: clip;
  border-radius: var(--radius-lg);
}
@media (max-width: 1023.98px) {
  .solutions__panel {
    flex: none;
  }
}
@media (max-width: 767.98px) {
  .solutions__panel {
    flex-direction: column-reverse;
    min-height: 0;
  }
}

.solutions__detail {
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  gap: var(--space-lg);
  padding: var(--space-2xl) var(--space-xl) var(--space-2xl) var(--space-2xl);
}
@media (max-width: 767.98px) {
  .solutions__detail {
    flex: none;
    padding-inline: 0;
  }
}

.solutions__text-block {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-sm);
}

.solutions__name {
  max-width: 38.5rem;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}
@media (max-width: 767.98px) {
  .solutions__name {
    max-width: none;
  }
}

.solutions__link {
  align-self: flex-start;
}

.solutions__text,
.solutions__points {
  max-width: 38.5rem;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-primary);
}

.solutions__points {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.solutions__photo {
  flex: 1 1 0;
  min-width: 11.25rem;
  overflow: clip;
  border-radius: var(--radius-lg);
}
.solutions__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media (max-width: 767.98px) {
  .solutions__photo {
    flex: none;
    aspect-ratio: 16/9;
    min-width: 0;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .solutions__group:not([hidden]) .industry-row,
  .solutions__panel:not([hidden]) :is(.solutions__text-block > *, .solutions__points > li, .solutions__link) {
    animation: rise var(--duration-reveal) var(--ease-out) both;
    animation-delay: calc(var(--i, 0) * var(--stagger));
  }
  .solutions__panel:not([hidden]) .solutions__photo img {
    animation: settle var(--duration-reveal) var(--ease-out) both;
  }
}
/* -- About DRC (21:492) --------------------------------------------------------------------------------- */
.about__inner {
  display: flex;
  align-items: flex-start;
  gap: clamp(2rem, 0.4286rem + 7.8571vw, 7.5rem);
  padding-block: clamp(3rem, 2.3571rem + 3.2143vw, 5.25rem) clamp(3rem, 2.1964rem + 4.0179vw, 5.8125rem);
}
@media (max-width: 1023.98px) {
  .about__inner {
    flex-direction: column;
    align-items: stretch;
  }
}

.about__photo {
  flex: 1 1 0;
  height: 29.5625rem;
  overflow: clip;
  border-radius: var(--radius-md);
}
.about__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 71%;
}
@media (min-width: 1024px) {
  .about__photo {
    position: sticky;
    top: calc(var(--header-slim) + var(--space-2xl));
  }
}
@media (max-width: 1023.98px) {
  .about__photo {
    flex: none;
    height: auto;
    aspect-ratio: 16/10;
  }
}

.about__content {
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-md);
  max-width: 37.5rem;
}

.about__title {
  max-width: 35.4063rem;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.about__text {
  max-width: var(--size-column-text-max);
  margin-bottom: var(--space-sm);
  padding-bottom: var(--space-2xl);
  border-bottom: var(--line-subtle);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-primary);
}
.about__text > * + * {
  margin-top: var(--space-lg);
}
.about__text > p:first-child:not(:only-child) {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
}
.about__text strong {
  font-weight: 600;
  color: var(--c-text-primary);
}
.about__text ul {
  --tick-sm: calc(var(--fs-body) * 1.5);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding-inline-start: 0;
  list-style: none;
}
.about__text ul li {
  position: relative;
  min-height: var(--tick-sm);
  padding-inline-start: calc(var(--tick-sm) + var(--space-md));
  color: var(--c-text-primary);
}
.about__text ul li::before {
  content: "";
  position: absolute;
  top: calc((var(--fs-body) * var(--lh-body) - var(--tick-sm)) / 2);
  left: 0;
  width: var(--tick-sm);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-bg-brand-subtle);
}
.about__text ul li::after {
  content: "";
  position: absolute;
  top: calc(var(--fs-body) * var(--lh-body) / 2);
  left: calc(var(--tick-sm) / 2);
  width: calc(var(--tick-sm) / 4);
  height: calc(var(--tick-sm) / 2.4);
  border: solid var(--c-brand-primary);
  border-width: 0 var(--accent-line) var(--accent-line) 0;
  translate: -50% -60%;
  rotate: 45deg;
}

.about__stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2xl);
}

.about__link {
  margin-top: var(--space-xs);
}

/* -- Good to Know (25:554) ------------------------------------------------------------------------------ */
.videos__inner {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3xl) var(--space-18);
  padding-block: clamp(3rem, 2.1964rem + 4.0179vw, 5.8125rem) clamp(3rem, 2.2589rem + 3.7054vw, 5.5938rem);
}

.videos__intro {
  display: flex;
  flex: 1 1 var(--size-column-min);
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-lg);
  max-width: 29.25rem;
  padding-top: var(--space-xs);
}

.videos__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.videos__text {
  max-width: 24.2813rem;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.videos__cards {
  --cards-min: 38.75rem;
  display: grid;
  flex: 2 1 var(--cards-min);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-xl);
  min-width: min(100%, var(--cards-min));
}
@media (max-width: 767.98px) {
  .videos__cards {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* -- Partners + Company News (26:597) ------------------------------------------------------------------- */
.partners-news {
  background: var(--c-bg-secondary);
}

.partners-news__inner {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (max-width: 1023.98px) {
  .partners-news__inner {
    grid-template-columns: minmax(0, 1fr);
  }
}

.partners-news__col {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  min-width: 0;
  padding: clamp(2rem, 1.3625rem + 3.1875vw, 4.2313rem) clamp(0rem, -1rem + 5vw, 3.5rem) clamp(2rem, 1.5714rem + 2.1429vw, 3.5rem);
}

.partners-news__col--partners {
  isolation: isolate;
  background: var(--c-bg-subtle);
}
.partners-news__col--partners::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  right: 0;
  width: 11.875rem;
  aspect-ratio: 190/200;
  background: url("../img/home/light-wedge.svg") no-repeat top right/contain;
  pointer-events: none;
}
@media (max-width: 1023.98px) {
  .partners-news__col--partners {
    margin-inline: calc(var(--gutter) * -1);
    padding-inline: var(--gutter);
  }
}

.partners-news__head {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-md);
}

.partners-news__title-block {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.partners-news__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.partners-news__text {
  max-width: 29.5rem;
  margin-bottom: var(--space-xl);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.partners-news__col .swiper {
  width: 100%;
  padding-block: var(--space-4) var(--space-sm);
}

.partners-news__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  margin-top: var(--space-md);
}

.partners-news__foot--end {
  justify-content: flex-end;
}

.partners-news__foot .carousel-dots {
  width: auto;
}

.partners-news__col--news .swiper-slide {
  height: auto;
}

.partners-news__col--news .news-card {
  height: 100%;
}

.partners-news__arrows {
  display: flex;
  gap: var(--space-md);
}

.partners-news__text--news {
  max-width: 22.25rem;
  margin-bottom: 0;
}

.partners-news__logos {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-lg);
}
@media (max-width: 575.98px) {
  .partners-news__logos {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.partners-news .logo-tile {
  aspect-ratio: auto;
  height: var(--size-logo-tile-h);
}

.partners-news .news-card__title a,
.partners-news .news-card__excerpt {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

/* Service and Solution bodies (Figma 157:2749, 167:2999): the 288px sidebar beside the paragraphs, 64px apart.
   The paragraphs come first in the markup; from 1024px up the grid puts the sidebar on their left. */
.detail__inner {
  --sidebar: var(--size-sidebar);
  display: grid;
  grid-template-columns: var(--sidebar) minmax(0, 1fr);
  gap: var(--space-48) var(--space-64);
  align-items: start;
  padding-block: clamp(2.5rem, 1.9286rem + 2.8571vw, 4.5rem);
}
@media (max-width: 1023.98px) {
  .detail__inner {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (min-width: 1024px) {
  .detail__inner .detail__sidebar {
    grid-area: 1/1;
  }
  .detail__inner .detail__content {
    grid-area: 1/2;
  }
}

@media (min-width: 1024px) {
  .detail__sidebar {
    position: sticky;
    top: calc(var(--header-slim) + var(--space-2xl));
    scroll-margin-bottom: var(--space-2xl);
  }
}
.detail__sidebar {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
}
.detail__sidebar .sidenav {
  border-top: var(--line-subtle);
}

.detail__sidebar-head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-md);
}

.detail__sidebar-title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.detail__content {
  min-width: 0;
}

.detail__inner--single {
  grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 1024px) {
  .detail__inner--single .detail__content {
    grid-area: auto;
  }
}

/* The company pages (Figma 02 Company Profile, 03 Our Team, 04 Mission, Vision & Values), drawn at 1920: their
   paddings are Figma's there and shrink fluidly. Sections in page order; the hero is layout/_page-hero.scss. */
/* -- Diagram Node (98:1310): an icon and a label in a pill card ---------------------------------------------- */
.diagram-node {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  padding: var(--space-14) var(--space-18);
  border-radius: var(--radius-lg);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}

.diagram-node__icon {
  color: var(--c-brand-primary);
}

.diagram-node--digital {
  border: var(--border-w) solid var(--c-border-selected);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-nav);
}

.diagram-node--analog {
  background: var(--c-bg-secondary);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
}
.diagram-node--analog .diagram-node__icon {
  color: var(--c-icon-secondary);
}

/* -- a photo with a card over its edge, beside the copy (Who We Are 100:1366, Management 126:1315) ----------- */
.feature__inner {
  --media-h: var(--size-feature-media);
  --visual-min: var(--size-feature-visual);
  --content-min: var(--size-column-mid);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-56) var(--space-96);
  align-items: center;
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem);
}

.feature__visual {
  position: relative;
  flex: 1 1 var(--visual-min);
  min-width: min(100%, var(--visual-min));
}

.feature__media {
  display: block;
  height: var(--media-h);
  overflow: clip;
  border-radius: var(--radius-2xl);
}
.feature__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.feature__visual:has(.feature__stat) .feature__media {
  height: calc(var(--media-h) + var(--space-40));
}

.feature .feature__card {
  position: absolute;
  right: calc(var(--space-36) * -1);
  bottom: var(--space-40);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--space-2xl);
  border-radius: var(--radius-2xl);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-overlay);
}

.feature__stat {
  bottom: calc(var(--space-96) + var(--space-40));
  gap: var(--space-xs);
  padding: var(--space-28) var(--space-3xl);
}

.feature__stat-value {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-display-l);
  line-height: var(--lh-display-l);
  letter-spacing: -0.02em;
  color: var(--c-text-brand);
}

.feature__stat-label {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-eyebrow);
  line-height: var(--lh-eyebrow);
  letter-spacing: 0.125em;
  text-transform: uppercase;
  color: var(--c-text-primary);
}

.feature__stat-note {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.feature__content {
  display: flex;
  flex: 1 1 var(--content-min);
  flex-direction: column;
  gap: var(--space-2xl);
  align-items: flex-start;
  max-width: 36.25rem;
  min-width: min(100%, var(--content-min));
}

.feature__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.feature__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.feature__statement {
  display: flex;
  gap: var(--space-xl);
  padding-block: var(--space-xs);
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}
.feature__statement::before {
  content: "";
  flex: none;
  width: var(--bar-w);
  background: var(--c-brand-primary);
}

.feature .feature__notes {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  padding-top: var(--space-xs);
}
.feature .feature__notes li {
  padding-inline-start: var(--space-md);
  border-inline-start: var(--accent-line) solid var(--c-brand-primary);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

@media (max-width: 1023.98px) {
  .feature__media,
  .feature__visual:has(.feature__stat) .feature__media {
    height: auto;
    aspect-ratio: 4/3;
  }
  .feature .feature__card {
    position: relative;
    right: auto;
    bottom: auto;
    margin: calc(var(--space-48) * -1) var(--space-lg) 0;
  }
}
/* -- a heading over info blocks (Why It Matters 101:1436, DRC Employees 127:1297) --------------------------- */
.info-section--subtle {
  background: var(--c-bg-subtle);
}

.info-section__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-56);
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem);
}

.info-section__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  align-items: flex-start;
  max-width: 42.5rem;
}

.info-section__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.info-section__blocks {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--size-column-min-sm)), 1fr));
  gap: var(--space-48);
}

/* -- Bridging the Gap (100:1429): analog content → DRC → modern systems ------------------------------------- */
.bridge {
  background: var(--c-bg-subtle);
}

.bridge__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-64);
  align-items: center;
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem);
}

.bridge__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  align-items: center;
  max-width: var(--size-title-measure);
  text-align: center;
}

.bridge__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.bridge__text {
  max-width: var(--size-text-measure);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.bridge__stage {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  align-items: flex-end;
  width: 100%;
}

.bridge__diagram {
  --card-max: 25rem;
  --card-min: 13.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

.bridge__card {
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  max-width: var(--card-max);
  min-width: var(--card-min);
  overflow: clip;
  border-radius: var(--radius-2xl);
  background: var(--c-surface-default);
  box-shadow: var(--shadow-news);
}

.bridge__card--drc {
  position: relative;
  flex: 0 1 auto;
  gap: var(--space-xl);
  align-items: center;
  min-width: 0;
  padding: var(--space-3xl) var(--space-2xl);
  overflow: visible;
  border: var(--line-subtle);
  box-shadow: var(--shadow-nav);
}

.bridge__card--modern {
  position: relative;
  padding-top: var(--space-4);
}
.bridge__card--modern::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: var(--space-4);
  background: var(--c-brand-primary);
  transform-origin: left;
}

.bridge__media {
  display: block;
  aspect-ratio: 400/190;
}
.bridge__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.bridge__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--space-28);
}

.bridge__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-subtle);
}
.bridge__card--modern .bridge__label {
  color: var(--c-text-brand);
}

.bridge .bridge__nodes {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.bridge__logo {
  width: 13.625rem;
  height: auto;
}

.bridge__steps {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  align-items: center;
  justify-content: center;
}
.bridge__steps li {
  display: flex;
  gap: var(--space-xs);
  align-items: center;
}
.bridge__steps .icon {
  color: var(--c-icon-secondary);
}

.bridge__step {
  --step-bg: var(--c-bg-secondary);
  --step-fg: var(--c-text-primary);
  padding: var(--space-6) var(--space-md);
  border-radius: var(--radius-pill);
  background: var(--step-bg);
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-label-button-s);
  line-height: var(--lh-label-button-s);
  letter-spacing: 0;
  color: var(--step-fg);
}
li:last-child .bridge__step {
  --step-bg: var(--c-bg-brand-subtle);
  --step-fg: var(--c-text-brand);
}

.bridge__connector {
  display: flex;
  flex: 1 1 var(--space-48);
  align-items: center;
  max-width: 5.5rem;
  min-width: var(--space-48);
  padding-inline: var(--space-md) var(--space-4);
  color: var(--c-border-default);
}
.bridge__connector::before {
  content: "";
  flex: 1;
  border-top: var(--border-w) dashed currentColor;
}

.bridge__connector--out {
  color: var(--c-brand-primary);
}
.bridge__connector--out::before {
  border-top-style: solid;
}

@media (max-width: 1023.98px) {
  .bridge__diagram {
    flex-direction: column;
  }
  .bridge__card {
    flex: none;
    width: 100%;
    min-width: 0;
  }
  .bridge__connector {
    flex: none;
    width: var(--space-48);
    rotate: 90deg;
  }
}
/* -- What DRC Enables (101:1542): every solution in a carousel --------------------------------------------- */
.enables {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xl);
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem);
}

.enables__track .swiper {
  padding-block: var(--space-sm) var(--space-xl);
}

.enables__slide {
  width: var(--size-service-card);
}

/* -- Our Partners (127:1362): copy and a link beside the logo grid ---------------------------------------- */
.partners-grid__inner {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-56) var(--space-96);
  align-items: center;
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem);
}

.partners-grid__content {
  --content-min: var(--size-column-text);
  display: flex;
  flex: 1 1 var(--content-min);
  flex-direction: column;
  gap: var(--space-2xl);
  align-items: flex-start;
  max-width: var(--size-column-max-sm);
  min-width: min(100%, var(--content-min));
}

.partners-grid__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.partners-grid__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.partners-grid .partners-grid__logos {
  --tile-min: var(--size-logo-tile-min);
  display: flex;
  flex: 1 1 var(--size-logo-grid);
  flex-wrap: wrap;
  gap: var(--space-lg);
  min-width: min(100%, var(--tile-min));
}
.partners-grid .partners-grid__logos li {
  flex: 1 0 var(--tile-min);
  max-width: var(--size-logo-tile-max);
}
.partners-grid .partners-grid__logos .logo-tile {
  aspect-ratio: auto;
  height: var(--size-logo-tile-h);
}

/* -- Mission & Vision (136:1553): the red card and the grey one ---------------------------------------------- */
.mv__inner {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3xl);
  padding-block: clamp(3rem, 2.5714rem + 2.1429vw, 4.5rem);
}

.mv__card {
  --card-min: var(--size-column-mid);
  position: relative;
  isolation: isolate;
  display: flex;
  flex: 1 1 var(--card-min);
  flex-direction: column;
  gap: var(--space-2xl);
  min-width: min(100%, var(--card-min));
  min-height: var(--size-mv-card);
  padding: clamp(1.75rem, 1.3929rem + 1.7857vw, 3rem);
  overflow: clip;
  border-radius: var(--radius-2xl);
}
.mv__card > .rings {
  z-index: -1;
}

.mv__card--brand {
  --eyebrow-color: var(--c-text-inverse);
  --eyebrow-bar: var(--c-bg-primary);
  border-radius: var(--radius-xl);
  background: var(--c-brand-primary);
  color: var(--c-text-inverse);
}

.mv__card--subtle {
  background: var(--c-bg-subtle);
  color: var(--c-text-primary);
}
.mv__card--subtle .mv__number {
  color: var(--c-text-brand);
}

.mv__ring {
  --ring: 31.25rem;
  --ring-w: var(--space-48);
  top: -5rem;
  right: -8.75rem;
}

.mv__top {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  justify-content: space-between;
}

.mv__number {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
}

.mv__text {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
}

/* -- DRC Values (144:2352): the photo fading into the band, four values two by two ------------------------- */
.values {
  background: var(--c-bg-subtle);
}

.values__inner {
  display: flex;
  flex-wrap: wrap;
}

.values__visual {
  --visual-min: var(--size-column-text);
  display: flex;
  flex: 1 1 var(--visual-min);
  align-self: stretch;
  min-width: min(100%, var(--visual-min));
  padding-block: var(--space-56);
}

.values__media {
  position: relative;
  display: block;
  width: 100%;
  min-height: var(--size-values-media);
  overflow: clip;
  border-radius: var(--radius-2xl);
}
.values__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.values__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--gradient-image-fade-end);
}

.values__content {
  --content-min: var(--size-values-content);
  display: flex;
  flex: 1 1 var(--content-min);
  flex-direction: column;
  gap: var(--space-xl);
  align-items: flex-start;
  min-width: min(100%, var(--content-min));
  padding: var(--space-40) 0 var(--space-56) var(--gutter);
}

.values__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.values .values__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  width: 100%;
  padding-top: var(--space-3xl);
}

.values__item {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding-block: var(--space-xl);
}
.values__item:nth-child(odd) {
  padding-inline-end: var(--space-48);
}
.values__item:nth-child(even) {
  padding-inline-start: var(--space-48);
  border-inline-start: var(--line-subtle);
}
.values__item:nth-child(-n+2) {
  border-bottom: var(--line-subtle);
}

.values__icon {
  margin-bottom: var(--space-md);
  color: var(--c-brand-primary);
}

.values__name {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.values__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

@media (max-width: 1023.98px) {
  .values__visual {
    padding-block: var(--space-40) 0;
  }
  .values__content {
    padding-inline-start: 0;
  }
}
@media (max-width: 767.98px) {
  .values .values__grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .values__item:nth-child(n) {
    padding-inline: 0;
    border-inline-start: 0;
    border-bottom: var(--line-subtle);
  }
  .values__item:last-child {
    border-bottom: 0;
  }
}
/* -- Anti-racism, Access and Equity (136:1643): the statement beside the numbered commitments --------------- */
.commitment__inner {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-56) var(--space-96);
  align-items: flex-start;
  padding-block: clamp(3rem, 1.8571rem + 5.7143vw, 7rem);
}

.commitment__statement {
  --content-min: var(--size-column-text);
  display: flex;
  flex: 1 1 var(--content-min);
  flex-direction: column;
  gap: var(--space-2xl);
  align-items: flex-start;
  max-width: var(--size-column-text-max);
  min-width: min(100%, var(--content-min));
}

.commitment__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.commitment__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.commitments {
  --list-min: var(--size-column-mid);
  display: flex;
  flex: 1 1 var(--list-min);
  flex-direction: column;
  gap: var(--space-xs);
  min-width: min(100%, var(--list-min));
  padding-top: var(--space-4);
}

.commitments__intro {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}

.commitments .commitments__list {
  margin-top: var(--space-lg);
  border-bottom: var(--line-default);
  list-style: none;
}

.commitments__item {
  display: flex;
  gap: var(--space-2xl);
  align-items: flex-start;
  padding-block: var(--space-28);
  border-top: var(--line-default);
}

.commitments__number {
  flex: none;
  width: var(--space-48);
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-brand-primary);
}

.commitments__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-primary);
}

/* Bridging the Gap, animated (js/app/bridge.js): the diagram plays the process it draws.
   Build, once, as it scrolls into view (.is-armed, then .is-playing): the analog card rises, its photo settles and
   its items slide in; the dashed line draws to DRC; DRC's card grows in with its steps; the red line draws on; the
   modern card rises, its red edge draws across and its qualities slide in.
   Then a loop of --cycle while it is on screen (.is-looping), each part at its moment in the cycle:
     0s    a red scan sweeps the analog photo, and a light passes over each analog item
     1.4s  a grey pulse runs to DRC
     2.2s  DRC glows while Capture → Digitize → Enrich light up in turn
     4.5s  a red pulse runs on
     5.3s  Searchable, Accessible, Auditable and AI-ready light up one after another
   Paused off screen (.is-offscreen) and by the button (.is-held). Never with reduced motion: the diagram then stays as
   drawn, and the button hidden. --i (in the markup) is an item's place in its list. */
.bridge__diagram {
  --cycle: 8s;
  --build: 2.4s;
  --loop: 0s;
  --rise: 0.8s;
  --slide: 0.6s;
  --draw: 0.5s;
  --pop: 0.4s;
  --next: 0.1s;
  --play: running;
}

.bridge__diagram.is-armed {
  --loop: var(--build);
}

.bridge__toggle .bridge__toggle-play,
.bridge__toggle.is-held .bridge__toggle-pause {
  display: none;
}

.bridge__toggle.is-held .bridge__toggle-play {
  display: block;
}

.bridge__diagram:is(.is-armed:not(.is-playing), .is-offscreen, .is-held) {
  --play: paused;
}

/* -- the build: each part comes in from these, to where it is drawn ------------------------------------------- */
@keyframes bridge-rise {
  from {
    opacity: 0;
    translate: 0 var(--reveal-shift);
  }
}
@keyframes bridge-grow {
  from {
    opacity: 0;
    scale: 0.94;
  }
}
@keyframes bridge-slide {
  from {
    opacity: 0;
    translate: var(--from) 0;
  }
}
@keyframes bridge-draw {
  from {
    scale: 0 1;
  }
}
@keyframes bridge-pop {
  from {
    opacity: 0;
    scale: 0.6;
  }
}
/* -- the loop (percentages of --cycle) ------------------------------------------------------------------------ */
@keyframes bridge-scan {
  0% {
    opacity: 0;
    translate: 0 -100%;
  }
  2%, 14% {
    opacity: 1;
  }
  16.25%, 100% {
    opacity: 0;
    translate: 0 0;
  }
}
@keyframes bridge-sheen {
  0% {
    translate: -100% 0;
  }
  11.25%, 100% {
    translate: 100% 0;
  }
}
@keyframes bridge-travel {
  0% {
    left: 0%;
    opacity: 0;
  }
  2%, 8% {
    opacity: 1;
  }
  10%, 100% {
    left: 100%;
    opacity: 0;
  }
}
@keyframes bridge-glow {
  0%, 35%, 100% {
    opacity: 0;
  }
  5%, 27.5% {
    opacity: 1;
  }
}
@keyframes bridge-step {
  0%, 11.25%, 100% {
    background-color: var(--step-bg);
    color: var(--step-fg);
    scale: 1;
  }
  2.5%, 8.75% {
    background-color: var(--c-brand-primary);
    color: var(--c-text-inverse);
    scale: 1.06;
  }
}
@keyframes bridge-chevron {
  0%, 6%, 100% {
    color: var(--c-icon-secondary);
    translate: 0 0;
  }
  2% {
    color: var(--c-icon-brand);
    translate: var(--space-3xs) 0;
  }
}
@keyframes bridge-quality {
  0%, 25%, 100% {
    border-color: var(--c-border-selected);
  }
  3%, 20% {
    border-color: var(--c-brand-primary);
  }
}
@keyframes bridge-light {
  0%, 25%, 100% {
    opacity: 0;
  }
  3%, 20% {
    opacity: 1;
  }
}
@keyframes bridge-icon {
  0%, 6%, 100% {
    scale: 1;
  }
  2.5% {
    scale: 1.3;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .bridge__diagram.is-armed .bridge__card--analog {
    animation: bridge-rise var(--rise) var(--ease-out) both var(--play);
  }
  .bridge__diagram.is-armed .bridge__media img {
    animation: settle calc(var(--rise) * 1.5) var(--ease-out) var(--next) both var(--play);
  }
  .bridge__diagram.is-armed .bridge__card--analog .bridge__nodes > li {
    --from: calc(var(--space-lg) * -1);
    animation: bridge-slide var(--slide) var(--ease-out) calc(0.35s + var(--i) * var(--next)) both var(--play);
  }
  .bridge__diagram.is-armed .bridge__connector::before {
    transform-origin: left;
    animation: bridge-draw var(--draw) var(--ease-out) both var(--play);
  }
  .bridge__diagram.is-armed .bridge__connector .icon {
    animation: bridge-pop var(--pop) var(--ease-out) both var(--play);
  }
  .bridge__diagram.is-armed .bridge__connector--in::before {
    animation-delay: 0.55s;
  }
  .bridge__diagram.is-armed .bridge__connector--in .icon {
    animation-delay: 0.95s;
  }
  .bridge__diagram.is-armed .bridge__card--drc {
    animation: bridge-grow var(--rise) var(--ease-out) 0.75s both var(--play);
  }
  .bridge__diagram.is-armed .bridge__card--drc > :is(.eyebrow, .bridge__logo) {
    animation: bridge-rise var(--slide) var(--ease-out) 0.95s both var(--play);
  }
  .bridge__diagram.is-armed .bridge__steps > li {
    animation: bridge-pop var(--pop) var(--ease-out) calc(1.15s + var(--i) * var(--next) * 1.2) both var(--play);
  }
  .bridge__diagram.is-armed .bridge__connector--out::before {
    animation-delay: 1.35s;
  }
  .bridge__diagram.is-armed .bridge__connector--out .icon {
    animation-delay: 1.75s;
  }
  .bridge__diagram.is-armed .bridge__card--modern {
    animation: bridge-rise var(--rise) var(--ease-out) 1.55s both var(--play);
  }
  .bridge__diagram.is-armed .bridge__card--modern::before {
    animation: bridge-draw calc(var(--draw) * 1.4) var(--ease-out) 1.75s both var(--play);
  }
  .bridge__diagram.is-armed .bridge__card--modern .bridge__nodes > li {
    --from: var(--space-lg);
    animation: bridge-slide var(--slide) var(--ease-out) calc(1.8s + var(--i) * var(--next)) both var(--play);
  }
  .bridge__diagram.is-looping .bridge__media {
    position: relative;
  }
  .bridge__diagram.is-looping .bridge__media::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--gradient-scan);
    opacity: 0;
    animation: bridge-scan var(--cycle) ease-in-out var(--loop) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__card--analog .diagram-node {
    position: relative;
    isolation: isolate;
    overflow: clip;
  }
  .bridge__diagram.is-looping .bridge__card--analog .diagram-node::after {
    content: "";
    position: absolute;
    z-index: -1;
    inset: 0;
    background: var(--gradient-sheen);
    translate: -100% 0;
    animation: bridge-sheen var(--cycle) ease-in-out calc(var(--loop) + 0.5s + var(--i) * var(--next) * 3) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__connector {
    position: relative;
  }
  .bridge__diagram.is-looping .bridge__connector::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    width: var(--space-xs);
    aspect-ratio: 1;
    border-radius: var(--radius-pill);
    background: currentColor;
    opacity: 0;
    translate: -50% -50%;
    animation: bridge-travel var(--cycle) ease-in-out calc(var(--loop) + 1.4s) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__connector--in::after {
    background: var(--c-text-subtle);
  }
  .bridge__diagram.is-looping .bridge__connector--out::after {
    box-shadow: var(--shadow-pulse);
    animation-delay: calc(var(--loop) + 4.5s);
  }
  .bridge__diagram.is-looping .bridge__card--drc::after {
    content: "";
    position: absolute;
    inset: calc(var(--border-w) * -1);
    border-radius: inherit;
    box-shadow: var(--shadow-glow);
    opacity: 0;
    pointer-events: none;
    animation: bridge-glow var(--cycle) var(--ease) calc(var(--loop) + 2.2s) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__steps > li {
    --at: calc(var(--loop) + 2.4s + var(--i) * var(--next) * 7);
  }
  .bridge__diagram.is-looping .bridge__step {
    animation: bridge-step var(--cycle) var(--ease) var(--at) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__steps .icon {
    animation: bridge-chevron var(--cycle) var(--ease) calc(var(--at) - var(--next) * 1.5) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__card--modern .bridge__nodes > li {
    --at: calc(var(--loop) + 5.3s + var(--i) * var(--next) * 3.5);
  }
  .bridge__diagram.is-looping .bridge__card--modern .diagram-node {
    position: relative;
    animation: bridge-quality var(--cycle) var(--ease) var(--at) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__card--modern .diagram-node::after {
    content: "";
    position: absolute;
    inset: calc(var(--border-w) * -1);
    border-radius: inherit;
    box-shadow: var(--shadow-node-glow);
    opacity: 0;
    pointer-events: none;
    animation: bridge-light var(--cycle) var(--ease) var(--at) infinite both var(--play);
  }
  .bridge__diagram.is-looping .bridge__card--modern .diagram-node__icon {
    animation: bridge-icon var(--cycle) var(--ease) var(--at) infinite both var(--play);
  }
}
/* The listing pages and the article (Figma 07 News, 08 News Article, 09 Partners, 10 Contact Us), drawn at 1920:
   paddings are Figma's there and shrink fluidly. The plain page intro the three listings share comes first. */
/* -- Page Intro (171:3308, 177:3743, 199:4127): the H1 on the left, the supporting line on the right --------- */
.page-intro {
  background: var(--c-bg-subtle);
}

.page-intro__inner {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2xl) var(--space-48);
  align-items: flex-end;
  justify-content: space-between;
  padding-block: var(--space-40) clamp(2.5rem, 2.2143rem + 1.4286vw, 3.5rem);
}

.page-intro__heading {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
  align-items: flex-start;
}

.page-intro__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-display-l);
  line-height: var(--lh-display-l);
  letter-spacing: -0.02em;
  color: var(--c-text-primary);
}

.page-intro__text {
  flex: 1 1 var(--size-column-min);
  max-width: var(--size-column-max-sm);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

/* -- News (171:3334): nine articles three by three, then the pagination ------------------------------------ */
.news-list__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-48);
  align-items: center;
  padding-block: clamp(3rem, 1.8571rem + 5.7143vw, 7rem) clamp(3rem, 2.1429rem + 4.2857vw, 6rem);
}

.news-list .news-list__grid {
  --item-min: 27.5rem;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--item-min)), 1fr));
  gap: var(--space-3xl);
  width: 100%;
}
.news-list .news-list__grid > li {
  display: flex;
}

/* -- News Article (173:3539, 173:3567) ----------------------------------------------------------------------- */
.article-hero__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding-top: var(--space-40);
}

.article-hero__row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-40) var(--space-96);
  align-items: center;
}

.article-hero__header {
  --header-min: var(--size-column-max-sm);
  display: flex;
  flex: 1 1 var(--header-min);
  flex-direction: column;
  gap: var(--space-2xl);
  align-items: flex-start;
  max-width: var(--size-text-measure);
  min-width: min(100%, var(--header-min));
}

.article-hero__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  align-items: center;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
  color: var(--c-text-muted);
}

.article-hero__topic {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  color: var(--c-text-brand);
}
.article-hero__topic::before {
  content: "";
  width: var(--space-4);
  aspect-ratio: 1;
  border-radius: var(--radius-pill);
  background: var(--c-border-default);
}

.article-hero__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.article-hero__media {
  display: block;
  flex: 1 1 var(--size-column-text);
  aspect-ratio: 824/420;
  overflow: clip;
  border-radius: var(--radius-lg);
}
.article-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.article__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding-block: clamp(2.5rem, 1.9286rem + 2.8571vw, 4.5rem) clamp(3rem, 1.8571rem + 5.7143vw, 7rem);
}

.article__body .paragraph__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
}
.article__body .paragraph__text > * {
  max-width: none;
}

.article__footer {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xl);
  align-items: flex-start;
  width: 100%;
  padding-top: var(--space-40);
  border-top: var(--line-subtle);
}

.article__siblings {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3xl);
  width: 100%;
}
@media (max-width: 767.98px) {
  .article__siblings {
    flex-direction: column;
  }
}

.article__sibling {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  max-width: var(--size-column-text-max);
}

.article__sibling--next {
  margin-left: auto;
  align-items: flex-end;
  text-align: right;
}
@media (max-width: 767.98px) {
  .article__sibling--next {
    margin-left: 0;
    align-items: flex-start;
    text-align: left;
  }
}

.article__sibling-label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-brand);
}

.article__sibling-title {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}
@media (hover: hover) and (pointer: fine) {
  .article__sibling-title a:hover {
    text-decoration-line: underline;
  }
}

.article__sibling-date {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
  color: var(--c-text-muted);
}

/* -- Partners (177:3769) and Industry Links: a row per organisation — the logo in its frame, then the name, the text
      and the links (partials/org-list.njk) ------------------------------------------------------------------------ */
.org-list__inner {
  padding-block: clamp(1.5rem, 0.9286rem + 2.8571vw, 3.5rem) clamp(3rem, 1.8571rem + 5.7143vw, 7rem);
}

.org-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3xl) var(--space-56);
  align-items: flex-start;
  padding-block: clamp(2rem, 1.5714rem + 2.1429vw, 3.5rem);
  border-bottom: var(--line-default);
}

.org-row__logo {
  flex: 0 1 23.5rem;
  min-width: 0;
}

.org-row__tile {
  display: grid;
  place-items: center;
  height: 13.5rem;
  padding: var(--space-2xl);
  border: var(--line-default);
  border-radius: var(--radius-lg);
  background: var(--c-bg-primary);
  transition: translate var(--duration) var(--ease), border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}
.org-row__tile img {
  transition: scale var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .org-row__tile:hover {
    translate: 0 calc(var(--lift) * -1);
    border-color: var(--c-border-selected);
    box-shadow: var(--shadow-card);
  }
  .org-row__tile:hover img {
    scale: var(--zoom);
  }
}
.org-row__tile:focus-visible {
  translate: 0 calc(var(--lift) * -1);
  border-color: var(--c-border-selected);
  box-shadow: var(--shadow-card);
}
.org-row__tile:focus-visible img {
  scale: var(--zoom);
}
.org-row__tile img {
  width: 15.5rem;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.org-row__content {
  display: flex;
  flex: 1 1 var(--size-column-text);
  flex-direction: column;
  gap: var(--space-xl);
  align-items: flex-start;
}

.org-row__name {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.org-row__text {
  max-width: var(--size-text-measure);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-article);
  line-height: var(--lh-body-article);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.org-row__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs) var(--space-48);
}

@media (max-width: 767.98px) {
  .org-row__logo {
    flex-basis: 100%;
  }
  .org-row__tile {
    height: auto;
    aspect-ratio: 376/216;
  }
}
/* -- Contact (199:4153): the details beside the form ---------------------------------------------------------- */
.contact__inner {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-56) var(--gutter);
  align-items: flex-start;
  padding-block: clamp(2.5rem, 2.0714rem + 2.1429vw, 4rem) clamp(3rem, 2.1429rem + 4.2857vw, 6rem);
}

.contact__details {
  display: flex;
  flex: 1 1 var(--size-column-min);
  flex-direction: column;
  align-items: flex-start;
  max-width: var(--size-card-max);
  padding-top: var(--space-xs);
}

.contact__group {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  align-items: flex-start;
  width: 100%;
  padding-block: var(--space-28);
  border-bottom: var(--line-default);
}
.contact__group:first-of-type {
  padding-top: var(--space-3xl);
}
.contact__group:last-child {
  gap: var(--space-lg);
  border-bottom: 0;
}

.contact__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-brand);
}

.contact__phone {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}
@media (hover: hover) and (pointer: fine) {
  .contact__phone:hover {
    color: var(--c-text-brand);
  }
}

.contact__note {
  margin-top: calc(var(--space-xs) * -1);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.contact__address {
  font-style: normal;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-l);
  line-height: var(--lh-body-l);
  letter-spacing: 0;
  color: var(--c-text-primary);
}

.contact__social {
  display: flex;
  gap: var(--space-xs);
}

.contact__form-card {
  --card-min: 35rem;
  flex: 1 1 var(--card-min);
  min-width: min(100%, var(--card-min));
  padding: clamp(1.5rem, 1.0714rem + 2.1429vw, 3rem);
  border-radius: var(--radius-lg);
  background: var(--c-bg-subtle);
}

.contact__form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xl);
  align-items: stretch;
}

.contact__form-head {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  align-items: flex-start;
}

.contact__form-title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.contact__fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-xl);
}
@media (max-width: 767.98px) {
  .contact__fields {
    grid-template-columns: minmax(0, 1fr);
  }
}

.contact__wide {
  grid-column: 1/-1;
}

/* -- Location (199:4224): Figma's map with its pin, a link to Google Maps, under the location card ----------- */
.location__inner {
  padding-bottom: clamp(3rem, 2.1429rem + 4.2857vw, 6rem);
}

.location__frame {
  --pin-x: 53%;
  --pin-y: 61.1%;
  --card-shift: 3.75rem;
  position: relative;
}

.location__map {
  display: block;
  aspect-ratio: 1920/626;
  overflow: clip;
  border-radius: var(--radius-lg);
  background: var(--c-bg-subtle);
}
.location__map img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.location__card {
  position: absolute;
  bottom: calc(100% - var(--pin-y) + var(--space-xl));
  left: calc(var(--pin-x) - var(--card-shift));
  width: min(var(--size-card-max), 100% - var(--space-lg) * 2);
  translate: -50% 0;
  pointer-events: none;
}
.location__card .map-card {
  --tail-x: calc(50% + var(--card-shift));
  pointer-events: auto;
}

@media (max-width: 767.98px) {
  .location__card {
    position: relative;
    bottom: auto;
    left: auto;
    width: auto;
    margin-top: var(--space-lg);
    translate: none;
  }
  .location__card .map-card {
    --tail-x: 50%;
  }
}
/* The pages Figma does not design (docs/superpowers/specs/2026-10-09-drc-utility-pages-design.md), built from the
   design system: the legal pages, the sitemap, the videos and the 404. Industry Links shares the Partners page's rows
   (pages/_listing.scss). */
/* -- Legal pages (partials/legal.njk): the contents beside the text from 1024px up, sticky under the header, and
      above it on narrower screens; the text in the article's 18/30 --------------------------------------------- */
.legal__inner {
  display: grid;
  grid-template-columns: var(--size-sidebar) minmax(0, var(--size-text-measure));
  gap: var(--space-48) var(--space-64);
  align-items: start;
  padding-block: clamp(2.5rem, 1.9286rem + 2.8571vw, 4.5rem) clamp(3rem, 1.8571rem + 5.7143vw, 7rem);
}
@media (max-width: 1023.98px) {
  .legal__inner {
    grid-template-columns: minmax(0, 1fr);
  }
}

.legal__toc {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  padding: var(--space-2xl);
  border: var(--line-subtle);
  border-radius: var(--radius-lg);
  background: var(--c-surface-default);
}
@media (min-width: 1024px) {
  .legal__toc {
    position: sticky;
    top: calc(var(--header-slim) + var(--space-2xl));
  }
}

.legal__toc-title {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-brand);
}

.legal .legal__toc-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  counter-reset: toc;
}
.legal .legal__toc-list li {
  counter-increment: toc;
}
.legal .legal__toc-list a {
  display: flex;
  gap: var(--space-sm);
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-s);
  line-height: var(--lh-body-s);
  letter-spacing: 0;
  color: var(--c-text-secondary);
  transition: color var(--duration) var(--ease);
}
.legal .legal__toc-list a::before {
  content: counter(toc, decimal-leading-zero);
  color: var(--c-text-subtle);
  font-variant-numeric: tabular-nums;
}
@media (hover: hover) and (pointer: fine) {
  .legal .legal__toc-list a:hover {
    color: var(--c-text-brand);
  }
}

.legal__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  min-width: 0;
}
.legal__body .prose {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body-article);
  line-height: var(--lh-body-article);
  letter-spacing: 0;
  color: var(--c-text-primary);
}

.legal__updated {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-metadata);
  line-height: var(--lh-metadata);
  letter-spacing: 0;
  color: var(--c-text-muted);
}

.legal__section {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  padding-top: var(--space-40);
  border-top: var(--line-subtle);
}

.legal__heading {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

/* -- Sitemap: four columns from 1024px up — Company, then Services across three (one column a group), Solutions
      across two, Resources, Legal — so every group lines up with the columns; two below, one on a phone ------------ */
.sitemap__inner {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-56) var(--space-3xl);
  padding-block: clamp(2.5rem, 1.9286rem + 2.8571vw, 4.5rem) clamp(3rem, 1.8571rem + 5.7143vw, 7rem);
}
@media (max-width: 1023.98px) {
  .sitemap__inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 767.98px) {
  .sitemap__inner {
    grid-template-columns: minmax(0, 1fr);
  }
}

.sitemap__group {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  min-width: 0;
}

.sitemap__group--3 {
  --groups: 3;
}

.sitemap__group--2 {
  --groups: 2;
}

.sitemap__group--3,
.sitemap__group--2 {
  grid-column: span var(--groups);
}

.sitemap__subgroups {
  display: grid;
  grid-template-columns: repeat(var(--groups), minmax(0, 1fr));
  gap: var(--space-2xl) var(--space-3xl);
}

.sitemap__title {
  padding-bottom: var(--space-md);
  border-bottom: var(--line-default);
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: -0.01em;
  color: var(--c-text-primary);
}

.sitemap__subgroup {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.sitemap__subtitle {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-brand);
}

.sitemap .sitemap__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}
.sitemap .sitemap__list a {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
  transition: color var(--duration) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .sitemap .sitemap__list a:hover {
    color: var(--c-text-brand);
    text-decoration-line: underline;
  }
}

@media (max-width: 1023.98px) {
  .sitemap__group:first-child,
  .sitemap__group--3,
  .sitemap__group--2 {
    grid-column: 1/-1;
  }
  .sitemap__subgroups {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--size-column-min-sm)), 1fr));
  }
}
/* -- Videos: every video a player with its title under it, as many across as fit 320px each -------------------- */
.video-list__inner {
  padding-block: clamp(2.5rem, 1.9286rem + 2.8571vw, 4.5rem) clamp(3rem, 1.8571rem + 5.7143vw, 7rem);
}

.video-list .video-list__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--size-column-min)), 1fr));
  gap: var(--space-48) var(--space-3xl);
}

.video-list__item {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.video-list__title {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-h5);
  line-height: var(--lh-h5);
  letter-spacing: -0.005em;
  color: var(--c-text-primary);
}

/* -- 404: a large pink number, the heading and a line, home and contact, then the pages most people want --------- */
.error-page {
  background: var(--c-bg-subtle);
}

.error-page__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  align-items: center;
  padding-block: clamp(3rem, 2.1429rem + 4.2857vw, 6rem) clamp(4rem, 3.1429rem + 4.2857vw, 7rem);
  text-align: center;
}

.error-page__code {
  font-size: clamp(7.5rem, 5.3571rem + 10.7143vw, 15rem);
  font-weight: 700;
  line-height: 0.8;
  letter-spacing: -0.04em;
  color: var(--c-border-selected);
}

.error-page__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
  align-items: center;
  max-width: var(--size-text-measure);
}

.error-page__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  letter-spacing: -0.015em;
  color: var(--c-text-primary);
}

.error-page__text {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: 0;
  color: var(--c-text-secondary);
}

.error-page__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  justify-content: center;
}

.error-page__nav {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  align-items: center;
  width: min(100%, var(--size-text-measure));
  padding-top: var(--space-40);
  border-top: var(--line-subtle);
}

.error-page__links-title {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-eyebrow-s);
  line-height: var(--lh-eyebrow-s);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-text-muted);
}

.error-page .error-page__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md) var(--space-2xl);
  justify-content: center;
}