  @charset "UTF-8";

  /* ==========================================================================
   MetaCare India v2.0 — Theme
   Tokens, typeface, reset, typography, layout primitives.

   Design concept: "Protective layer".
   A coating is a stack of layers between steel and the sea. The interface
   borrows that idea — surfaces sit in visible strata, edges catch light the
   way a cured topcoat does, and the palette is taken from the logo (navy
   #144474, steel #6A91BA) with oxide and verdigris (rust and patina, the
   two things this company exists to prevent) doing semantic duty.
   ========================================================================== */

  /* --------------------------------------------------------------------------
   1. Typeface — IBM Plex, self-hosted.
   Chosen because it was drawn for technical and engineering contexts and
   gives three coherent roles from one superfamily. Self-hosted rather than
   pulled from a CDN so no visitor IP leaves the server and first paint does
   not wait on a third party.
   -------------------------------------------------------------------------- */

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-400-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-400-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-500-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-500-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-600-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-600-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-700-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }

  @font-face {
    font-family: 'Plex Sans';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/IBMPlexSans-700-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }

  @font-face {
    font-family: 'Plex Serif';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/IBMPlexSerif-600-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }

  @font-face {
    font-family: 'Plex Serif';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/IBMPlexSerif-600-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }

  @font-face {
    font-family: 'Plex Mono';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/IBMPlexMono-500-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }

  @font-face {
    font-family: 'Plex Mono';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/IBMPlexMono-500-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }

  /* --------------------------------------------------------------------------
   2. Tokens — light is the base definition.
   Every colour used anywhere in the product resolves from here. Nothing is
   defined only inside a media query or [data-theme] block, so the un-stamped
   "system" state always has a complete palette.
   -------------------------------------------------------------------------- */

  :root {
    /* Brand — sampled from the logo file */
    --navy-900: #071726;
    --navy-800: #0A2338;
    --navy-700: #0D3050;
    --navy-600: #144474;
    /* logo navy */
    --navy-500: #1B5490;
    --steel-500: #6A91BA;
    /* logo steel */
    --steel-400: #8AABCE;
    --steel-300: #A8C3DD;
    --steel-200: #CBDCEC;
    --steel-100: #E3EBF4;
    --steel-50: #F1F5FA;

    /* Semantic — oxide is rust, verdigris is patina. The two corrosion
     products this company exists to prevent, doing warning/success duty. */
    --oxide: #B0512A;
    --oxide-soft: #FBEBE4;
    --amber: #8A5A00;
    --amber-soft: #FAF0DB;
    --verdigris: #1B7A66;
    --verd-soft: #DEF0EB;

    /* Surfaces & ink */
    --paper: #F4F7FA;
    --surface: #FFFFFF;
    --surface-2: #EDF2F7;
    --surface-3: #E1E9F1;
    --ink: #0C1D2B;
    --ink-2: #46617A;
    --ink-3: #74899C;
    --rule: #D7E1EB;
    --rule-soft: #E8EEF4;

    /* Roles */
    --accent: var(--navy-600);
    --accent-strong: var(--navy-700);
    --on-accent: #FFFFFF;
    --link: var(--navy-600);

    /* Hero / footer are permanently dark in both themes — a deliberate
     constant, the way a coated hull is dark whatever the weather. */
    --deep-bg: var(--navy-900);
    --deep-bg-2: var(--navy-800);
    --deep-ink: #EAF1F8;
    --deep-ink-2: #9FB8CE;
    --deep-rule: rgba(255, 255, 255, .12);

    /* Elevation. Two levels, plus a "coated edge" highlight used on cards. */
    --shadow-1: 0 1px 2px rgba(10, 35, 56, .06), 0 2px 8px -4px rgba(10, 35, 56, .12);
    --shadow-2: 0 2px 4px rgba(10, 35, 56, .06), 0 18px 40px -20px rgba(10, 35, 56, .28);
    --shadow-3: 0 30px 70px -30px rgba(10, 35, 56, .42);
    --sheen: linear-gradient(150deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, 0) 42%);

    /* Type */
    --font-display: 'Plex Serif', 'Iowan Old Style', Georgia, 'Times New Roman', serif;
    --font-body: 'Plex Sans', 'Segoe UI', system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
    --font-mono: 'Plex Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;

    /* Fluid scale. clamp() means there is no jump at a breakpoint — the type
     is correct at 360px and at 2560px and everywhere between. */
    --t-xs: 0.75rem;
    --t-sm: 0.8125rem;
    --t-base: 1rem;
    --t-md: clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem);
    --t-lg: clamp(1.1875rem, 1.1rem + 0.5vw, 1.375rem);
    --t-xl: clamp(1.375rem, 1.25rem + 0.8vw, 1.75rem);
    --t-2xl: clamp(1.625rem, 1.4rem + 1.3vw, 2.25rem);
    --t-3xl: clamp(2rem, 1.6rem + 2.1vw, 3rem);
    --t-4xl: clamp(2.5rem, 1.9rem + 3.2vw, 4.25rem);
    --t-5xl: clamp(2.9rem, 2rem + 4.6vw, 5.5rem);

    /* Spacing */
    --s-1: 0.25rem;
    --s-2: 0.5rem;
    --s-3: 0.75rem;
    --s-4: 1rem;
    --s-5: 1.5rem;
    --s-6: 2rem;
    --s-7: 3rem;
    --s-8: 4rem;
    --s-9: 6rem;
    --s-10: 8rem;

    /* Section rhythm — shrinks on phones so a page is not all whitespace */
    --section-y: clamp(3.5rem, 2rem + 7vw, 7.5rem);

    /* Shape */
    --r-sm: 6px;
    --r-md: 10px;
    --r-lg: 16px;
    --r-xl: 24px;
    --r-pill: 999px;

    /* Layout */
    --container: 1240px;
    --container-narrow: 860px;
    --measure: 68ch;
    --gutter: clamp(1rem, 0.6rem + 2vw, 2.5rem);

    /* Motion */
    --ease-out: cubic-bezier(.22, .8, .3, 1);
    --ease-spring: cubic-bezier(.34, 1.4, .5, 1);
    --d-fast: 150ms;
    --d-mid: 280ms;
    --d-slow: 600ms;

    /* Chrome */
    --header-h: 72px;
    color-scheme: light;
  }

  /* Dark — token overrides only. Guarded so an explicit light choice beats a
   dark operating system. */
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme='light']) {
      --paper: #071320;
      --surface: #0C1E2E;
      --surface-2: #122839;
      --surface-3: #183246;
      --ink: #E6EEF6;
      --ink-2: #9DB5CA;
      --ink-3: #6F8AA2;
      --rule: #20394F;
      --rule-soft: #17293A;

      --steel-100: #16293B;
      --steel-50: #101F2E;
      --steel-200: #1D3448;

      --accent: #5E93CE;
      --accent-strong: #7FAEE2;
      --on-accent: #06121E;
      --link: #7FAEE2;

      --oxide: #E58A5E;
      --oxide-soft: #2B1710;
      --amber: #D9A441;
      --amber-soft: #2A2010;
      --verdigris: #4FBFA4;
      --verd-soft: #0D2A25;

      --deep-bg: #050F1A;
      --deep-bg-2: #081A29;

      --shadow-1: 0 1px 2px rgba(0, 0, 0, .5), 0 2px 8px -4px rgba(0, 0, 0, .6);
      --shadow-2: 0 2px 4px rgba(0, 0, 0, .5), 0 18px 40px -20px rgba(0, 0, 0, .8);
      --shadow-3: 0 30px 70px -30px rgba(0, 0, 0, .9);
      --sheen: linear-gradient(150deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, 0) 42%);

      color-scheme: dark;
    }
  }

  /* Explicit dark choice wins over a light operating system. */
  :root[data-theme='dark'] {
    --paper: #071320;
    --surface: #0C1E2E;
    --surface-2: #122839;
    --surface-3: #183246;
    --ink: #E6EEF6;
    --ink-2: #9DB5CA;
    --ink-3: #6F8AA2;
    --rule: #20394F;
    --rule-soft: #17293A;

    --steel-100: #16293B;
    --steel-50: #101F2E;
    --steel-200: #1D3448;

    --accent: #5E93CE;
    --accent-strong: #7FAEE2;
    --on-accent: #06121E;
    --link: #7FAEE2;

    --oxide: #E58A5E;
    --oxide-soft: #2B1710;
    --amber: #D9A441;
    --amber-soft: #2A2010;
    --verdigris: #4FBFA4;
    --verd-soft: #0D2A25;

    --deep-bg: #050F1A;
    --deep-bg-2: #081A29;

    --shadow-1: 0 1px 2px rgba(0, 0, 0, .5), 0 2px 8px -4px rgba(0, 0, 0, .6);
    --shadow-2: 0 2px 4px rgba(0, 0, 0, .5), 0 18px 40px -20px rgba(0, 0, 0, .8);
    --shadow-3: 0 30px 70px -30px rgba(0, 0, 0, .9);
    --sheen: linear-gradient(150deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, 0) 42%);

    color-scheme: dark;
  }

  /* --------------------------------------------------------------------------
   3. Reset
   -------------------------------------------------------------------------- */

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

  * {
    margin: 0;
  }

  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    scroll-padding-top: calc(var(--header-h) + 1rem);
    -webkit-tap-highlight-color: rgba(20, 68, 116, .15);
  }

  @media (prefers-reduced-motion: no-preference) {
    html {
      scroll-behavior: smooth;
    }
  }

  body {
    min-height: 100svh;
    background: var(--paper);
    color: var(--ink);
    font-family: var(--font-body);
    font-size: var(--t-base);
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-synthesis-weight: none;
    text-rendering: optimizeLegibility;
    overflow-x: clip;
    overscroll-behavior-y: none;
  }

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

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

  /* 16px minimum on form controls stops iOS Safari zooming the viewport the
   moment a field takes focus. */
  input,
  select,
  textarea {
    font-size: max(16px, 1rem);
  }

  p,
  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    overflow-wrap: break-word;
  }

  h1,
  h2,
  h3,
  h4 {
    text-wrap: balance;
  }

  p {
    text-wrap: pretty;
  }

  ul[role='list'],
  ol[role='list'] {
    list-style: none;
    padding: 0;
  }

  :where(a) {
    color: var(--link);
    text-underline-offset: 3px;
  }

  :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
    border-radius: var(--r-sm);
  }

  ::selection {
    background: color-mix(in srgb, var(--accent) 25%, transparent);
    color: var(--ink);
  }

  hr {
    border: 0;
    border-top: 1px solid var(--rule);
  }

  /* --------------------------------------------------------------------------
   4. Typography
   -------------------------------------------------------------------------- */

  .display-1,
  .display-2,
  .display-3 {
    font-family: var(--font-display);
    font-weight: 600;
    line-height: 1.04;
    letter-spacing: -0.022em;
  }

  .display-1 {
    font-size: var(--t-5xl);
  }

  .display-2 {
    font-size: var(--t-4xl);
  }

  .display-3 {
    font-size: var(--t-3xl);
    line-height: 1.1;
  }

  .h1 {
    font-size: var(--t-3xl);
    font-family: var(--font-display);
    font-weight: 600;
    line-height: 1.12;
    letter-spacing: -0.018em;
  }

  .h2 {
    font-size: var(--t-2xl);
    font-family: var(--font-display);
    font-weight: 600;
    line-height: 1.18;
    letter-spacing: -0.014em;
  }

  .h3 {
    font-size: var(--t-xl);
    font-weight: 600;
    line-height: 1.28;
    letter-spacing: -0.008em;
  }

  .h4 {
    font-size: var(--t-lg);
    font-weight: 600;
    line-height: 1.35;
  }

  .h5 {
    font-size: var(--t-md);
    font-weight: 600;
    line-height: 1.4;
  }

  .lede {
    font-size: var(--t-md);
    line-height: 1.6;
    color: var(--ink-2);
    max-width: 58ch;
  }

  .eyebrow {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    font-family: var(--font-mono);
    font-size: var(--t-xs);
    font-weight: 500;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--accent);
  }

  .eyebrow::before {
    content: '';
    width: 22px;
    height: 2px;
    background: currentColor;
    flex: none;
    border-radius: 2px;
  }

  .eyebrow--light {
    color: var(--steel-400);
  }

  .prose {
    max-width: var(--measure);
  }

  .prose>*+* {
    margin-top: var(--s-4);
  }

  .prose h2 {
    margin-top: var(--s-7);
  }

  .prose h3 {
    margin-top: var(--s-6);
  }

  .prose ul,
  .prose ol {
    padding-left: 1.3em;
  }

  .prose li+li {
    margin-top: var(--s-2);
  }

  .prose li::marker {
    color: var(--steel-500);
  }

  .mono {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
  }

  .tnum {
    font-variant-numeric: tabular-nums;
  }

  .text-muted {
    color: var(--ink-2);
  }

  .text-faint {
    color: var(--ink-3);
  }

  .text-accent {
    color: var(--accent);
  }

  .text-oxide {
    color: var(--oxide);
  }

  .text-verdigris {
    color: var(--verdigris);
  }

  .text-center {
    text-align: center;
  }

  /* --------------------------------------------------------------------------
   5. Layout primitives
   Spacing is done with gap on a flex/grid parent rather than margins on
   children, so nothing collapses or doubles unexpectedly.
   -------------------------------------------------------------------------- */

  .container {
    width: 100%;
    max-width: var(--container);
    margin-inline: auto;
    padding-inline: var(--gutter);
    /* Respects the iPhone notch and Android gesture areas in landscape. */
    padding-left: max(var(--gutter), env(safe-area-inset-left));
    padding-right: max(var(--gutter), env(safe-area-inset-right));
  }

  .container--narrow {
    max-width: var(--container-narrow);
  }

  .container--wide {
    max-width: 1440px;
  }

  .section {
    padding-block: var(--section-y);
    position: relative;
  }

  .section--tight {
    padding-block: calc(var(--section-y) * .6);
  }

  .section--flush-top {
    padding-top: 0;
  }

  .stack,
  .stack-1,
  .stack-2,
  .stack-3,
  .stack-4,
  .stack-5,
  .stack-6,
  .stack-7 {
    display: flex;
    flex-direction: column;
  }

  .stack-1 {
    gap: var(--s-1);
  }

  .stack-2 {
    gap: var(--s-2);
  }

  .stack-3 {
    gap: var(--s-3);
  }

  .stack-4 {
    gap: var(--s-4);
  }

  .stack-5 {
    gap: var(--s-5);
  }

  .stack-6 {
    gap: var(--s-6);
  }

  .stack-7 {
    gap: var(--s-7);
  }

  .row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-3);
  }

  .row--between {
    justify-content: space-between;
  }

  .row--center {
    justify-content: center;
  }

  .row--end {
    justify-content: flex-end;
  }

  .row--top {
    align-items: flex-start;
  }

  .grid {
    display: grid;
    gap: var(--s-5);
  }

  /* Blanket fix for the classic grid-overflow trap: a grid item defaults to
   min-width: auto, so text that lacks a good wrap point can force its
   track — and the whole row — wider than the viewport instead of
   wrapping. Applies to every .grid usage, including the inline
   grid-template-columns instances on form rows throughout the portal and
   admin views. */
  .grid>* {
    min-width: 0;
  }

  /* auto-fit grids: the card count adapts to the viewport with no breakpoint
   maths, which is what keeps a 360px Galaxy and a 27" monitor both correct. */
  .grid--2 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  }

  .grid--3 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr));
  }

  .grid--4 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr));
  }

  /* Explicit split used where the two halves are not equivalent content. */
  .split {
    display: grid;
    /* A bare "auto" track — the default when no columns are declared —
     sizes to the max-content (unwrapped) width of its content and will
     grow past the viewport rather than let text wrap. An explicit
     minmax(0, 1fr) track has no such content-based ceiling. min-width: 0
     on the children (below) only lifts the automatic minimum floor and
     does not fix this on its own. */
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(var(--s-6), 4vw, var(--s-8));
    align-items: center;
  }

  .split>* {
    min-width: 0;
  }

  @media (min-width: 900px) {
    .split {
      grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }

    .split--wide-left {
      grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
    }

    .split--wide-right {
      grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    }
  }

  .section-head {
    display: flex;
    flex-direction: column;
    gap: var(--s-3);
    max-width: 60ch;
    margin-bottom: clamp(var(--s-6), 4vw, var(--s-8));
  }

  .section-head--center {
    margin-inline: auto;
    align-items: center;
    text-align: center;
  }

  /* Full-bleed dark band, used for the mission statement and the footer. */
  .band-deep {
    background: var(--deep-bg);
    color: var(--deep-ink);
    position: relative;
    overflow: hidden;
  }

  .band-deep .h1,
  .band-deep .h2,
  .band-deep .display-1,
  .band-deep .display-2,
  .band-deep .display-3 {
    color: #fff;
  }

  .band-deep .lede,
  .band-deep .text-muted {
    color: var(--deep-ink-2);
  }

  .band-tint {
    background: var(--steel-50);
  }

  /* --------------------------------------------------------------------------
   6. Utilities
   -------------------------------------------------------------------------- */

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

  .skip-link {
    position: absolute;
    top: 0;
    left: 50%;
    translate: -50% -120%;
    z-index: 200;
    background: var(--accent);
    color: var(--on-accent);
    padding: var(--s-3) var(--s-5);
    border-radius: 0 0 var(--r-md) var(--r-md);
    font-weight: 600;
    text-decoration: none;
    transition: translate var(--d-fast) var(--ease-out);
  }

  .skip-link:focus-visible {
    translate: -50% 0;
  }

  .no-scroll {
    overflow: hidden;
  }

  .full-bleed {
    width: 100vw;
    margin-left: 50%;
    translate: -50%;
  }

  .scroll-x {
    overflow-x: auto;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
  }

  .hide-mobile {
    display: none;
  }

  @media (min-width: 768px) {
    .hide-mobile {
      display: revert;
    }

    .hide-desktop {
      display: none;
    }
  }

  .aspect-16-9 {
    aspect-ratio: 16 / 9;
  }

  .aspect-4-3 {
    aspect-ratio: 4 / 3;
  }

  .aspect-square {
    aspect-ratio: 1;
  }

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

  /* --------------------------------------------------------------------------
   7. Print — a corrosion survey enquiry does get printed.
   -------------------------------------------------------------------------- */

  @media print {

    .site-header,
    .site-footer,
    .no-print {
      display: none !important;
    }

    body {
      background: #fff;
      color: #000;
    }

    .section {
      padding-block: 1rem;
    }

    a[href^='http']::after {
      content: ' (' attr(href) ')';
      font-size: .8em;
    }
  }

  /* --------------------------------------------------------------------------
   FAQ component — visible Q&A list (not hidden) so Google can read and
   index the content for Featured Snippets and PAA boxes.
   -------------------------------------------------------------------------- */

  .faq-list {
    display: flex;
    flex-direction: column;
    gap: var(--s-1);
    margin-top: var(--s-6);
  }

  .faq-item {
    border: 1px solid var(--steel-200);
    border-radius: var(--radius-lg);
    background: var(--surface-raised);
    overflow: hidden;
    transition: border-color 180ms ease, box-shadow 180ms ease;
  }

  .faq-item:hover {
    border-color: var(--navy-400);
    box-shadow: 0 4px 20px rgba(20,68,116,.08);
  }

  .faq-item__q {
    font-family: var(--f-serif);
    font-size: var(--t-md);
    font-weight: 600;
    color: var(--navy-700);
    padding: var(--s-5) var(--s-6);
    margin: 0;
    line-height: 1.4;
  }

  .faq-item__a {
    font-size: var(--t-sm);
    line-height: 1.7;
    color: var(--text-muted);
    padding: 0 var(--s-6) var(--s-5) var(--s-6);
    margin: 0;
  }

  .faq-item__a a {
    color: var(--navy-600);
    text-decoration: underline;
    text-underline-offset: 2px;
  }

  [data-theme='dark'] .faq-item {
    border-color: var(--steel-700);
  }

  [data-theme='dark'] .faq-item:hover {
    border-color: var(--steel-500);
  }

  [data-theme='dark'] .faq-item__q {
    color: var(--steel-100);
  }

  [data-theme='dark'] .faq-item__a {
    color: var(--steel-400);
  }

  @media (max-width: 640px) {
    .faq-item__q { font-size: var(--t-base); padding: var(--s-4); }
    .faq-item__a { padding: 0 var(--s-4) var(--s-4); }
  }