    :root {
      /* ----- Brand palette (matches havencasket.com) ----- */
      --primary:        #155aa5;
      --primary-deep:   #114a8a;
      --primary-darker: #0d3d73;
      --primary-soft:   #e7eff9;
      --primary-tint:   #f4f7fb;
      --gold:           #a8845e;

      /* ----- Neutrals ----- */
      --cream:          #ffffff;
      --cream-soft:     #f7f9fc;
      --paper:          #eef2f7;
      --charcoal:       #161a23;
      --ink:            #2b303d;
      --ink-soft:       #4f5663;
      --muted:          #6b7283;
      --line:           #e2e7ee;
      --line-soft:      #eef2f6;

      /* ----- Type ----- */
      --serif: 'Cormorant Garamond', 'Times New Roman', Georgia, serif;
      --sans:  'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

      /* ----- Layout ----- */
      --container: 1200px;
      --container-narrow: 920px;

      /* ----- Radius scale ----- */
      --radius:    6px;
      --radius-lg: 14px;

      /* ----- Multi-layer shadows for premium depth ----- */
      --shadow-xs:   0 1px 2px rgba(20,30,55,0.05);
      --shadow-sm:   0 1px 2px rgba(20,30,55,0.04), 0 4px 12px rgba(20,30,55,0.05);
      --shadow-md:   0 2px 4px rgba(20,30,55,0.05), 0 14px 32px rgba(20,30,55,0.08);
      --shadow-lg:   0 4px 8px rgba(20,30,55,0.06), 0 24px 48px rgba(20,30,55,0.12);

      /* ----- Motion ----- */
      --ease: cubic-bezier(.2,.8,.2,1);

      /* ----- Layout heights (used to pull hero up under header) ----- */
      --header-h: 80px;
    }

    /* =========== Base =========== */
    * { box-sizing: border-box; }
    *::selection { background: rgba(27,109,197,0.18); color: var(--charcoal); }
    html {
      scroll-behavior: smooth;
      overflow-x: visible;
    }
    body {
      margin: 0;
      font-family: var(--sans);
      color: var(--ink);
      background: var(--cream);
      line-height: 1.65;
      font-size: 16.5px;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-rendering: optimizeLegibility;
      font-feature-settings: 'ss01', 'cv11';
      overflow-x: visible;
    }
    img, svg { max-width: 100%; height: auto; display: block; }
    a {
      color: var(--primary-deep);
      text-decoration: none;
      transition: color .18s var(--ease);
    }
    a:hover { color: var(--gold); }

    /* Link system: inline prose links use a subtle underline; heading and
       card-title links inherit their section color until hover. */
    .category-body > p a,
    .content-section a,
    .faq-answer a,
    .custom-monuments-callout .lead a,
    .monuments-coda a {
      color: var(--primary-deep);
      border-bottom: 1px solid rgba(27,109,197,0.25);
      transition: color .18s var(--ease), border-color .18s var(--ease);
    }
    .category-body > p a:hover,
    .content-section a:hover,
    .faq-answer a:hover,
    .custom-monuments-callout .lead a:hover,
    .monuments-coda a:hover {
      color: var(--gold);
      border-bottom-color: var(--gold);
    }

    h1, h2, h3, h4 {
      font-family: var(--serif);
      color: var(--charcoal);
      font-weight: 500;
      line-height: 1.18;
      margin: 0 0 0.5em;
      font-feature-settings: 'liga', 'dlig';
    }
    h1 {
      font-size: clamp(1.98rem, 3.25vw, 3.4rem);
      letter-spacing: -0.01em;
      line-height: 1.06;
    }
    h2 {
      font-size: clamp(1.36rem, 1.88vw, 1.82rem);
      letter-spacing: -0.004em;
      color: var(--primary);
    }
    h3 {
      font-size: clamp(1.25rem, 2vw, 1.55rem);
      letter-spacing: -0.005em;
    }
    h4 {
      font-size: 0.78rem;
      font-family: var(--sans);
      font-weight: 600;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--primary-deep);
    }
    p { margin: 0 0 1em; }
    .container        { max-width: var(--container);        margin: 0 auto; padding: 0 28px; }
    .container-narrow { max-width: var(--container-narrow); margin: 0 auto; padding: 0 28px; }

    body.haven-home .utility {
      display: none;
    }

    .eyebrow {
      font-family: var(--sans);
      font-size: 0.74rem;
      font-weight: 600;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: var(--primary);
      margin: 0 0 1.25rem;
    }

    :focus-visible {
      outline: 2px solid var(--primary);
      outline-offset: 3px;
      border-radius: 2px;
    }

    /* =========== Buttons =========== */
    .btn {
      display: inline-flex;
      align-items: center;
      gap: 0.55em;
      padding: 0.95em 1.7em;
      font-family: var(--sans);
      font-size: 0.92rem;
      font-weight: 600;
      letter-spacing: 0.04em;
      border-radius: var(--radius);
      border: 1px solid transparent;
      cursor: pointer;
      transition: transform .2s var(--ease), background .2s var(--ease),
                  color .2s var(--ease), box-shadow .25s var(--ease),
                  border-color .2s var(--ease);
      text-decoration: none;
      white-space: nowrap;
    }
    .btn-primary {
      background: var(--primary-deep);
      color: var(--cream);
      box-shadow: 0 1px 0 rgba(255,255,255,0.18) inset,
                  0 6px 18px rgba(17,74,138,0.22);
    }
    .btn-primary:hover {
      background: var(--primary-darker);
      color: var(--cream);
      transform: translateY(-1px);
      box-shadow: 0 1px 0 rgba(255,255,255,0.18) inset,
                  0 10px 26px rgba(17,74,138,0.32);
    }
    .btn-secondary {
      background: transparent;
      color: var(--charcoal);
      border-color: var(--charcoal);
    }
    .btn-secondary:hover {
      background: var(--charcoal);
      color: var(--cream);
    }
    /* Modifier: secondary button on dark backgrounds (e.g. final CTA) */
    .btn-on-dark { border-color: var(--cream); color: var(--cream); }
    .btn-on-dark:hover {
      background: var(--cream);
      border-color: var(--cream);
      color: var(--charcoal);
    }

    /* =========== Shared header/footer chrome ===========
       The site header, top utility bar, primary nav, submenu, header actions,
       search overlay, footer, and floating call button are ALL defined in
       site-chrome.css, which loads site-wide (including this page). Do not
       redefine them here — edit site-chrome.css so every page stays in sync.
       Only homepage-specific hero/content rules belong in this file. */

    /* =========== Hero =========== */
    .hero {
      position: relative;
      overflow: hidden;
      /* Override the global `section { padding: 96px 0 }` -- the banner is
         full-bleed and must touch the header (no extra top/bottom padding). */
      padding: 0;
      margin-top: calc(-1 * var(--header-h));
    }

    /* Hero banner: full-bleed photo with overlaid headline + 3 category cards.
       Height is content-driven so wide screens don't get a tall empty band
       below the cards. */
    .hero-feature {
      position: relative;
      z-index: 2;
      width: 100%;
      overflow: hidden;
      background: #b8b9c2;
    }
    .hero-feature > img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      /* Keep the hero artwork balanced by default; larger desktops get a tuned crop below. */
      object-position: 82% center;
      z-index: 0;
    }
    /* White-screen wash: strong on the left for legible text, fades to clear
       by ~62% so the casket + monument on the right stay vivid. */
    .hero-feature::after {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(to right,
        rgba(255,255,255,1)    0%,
        rgba(255,255,255,0.92) 28%,
        rgba(255,255,255,0.70) 40%,
        rgba(255,255,255,0.35) 48%,
        rgba(255,255,255,0.10) 54%,
        rgba(255,255,255,0)    62%);
      mix-blend-mode: screen;
      z-index: 1;
      pointer-events: none;
    }
    .hero-feature-content {
      position: relative;
      z-index: 2;
      height: 100%;
      padding: calc(var(--header-h) + 70px) 0 72px;
    }
    .hero-feature-content .container {
      padding-left: clamp(48px, 4.8vw, 88px);
    }
    .hero-feature-content .hero-banners {
      max-width: clamp(300px, 30vw, 520px);
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: clamp(12px, 1.4vw, 24px);
      margin-top: 28px;
    }
    .hero-feature-content .hero-banner {
      align-items: center;
      text-align: center;
    }
    .hero-feature-content .hero-banner-head {
      flex-direction: column;
      align-items: center;
      gap: 8px;
      width: 100%;
    }
    .hero-feature-content .hero-banner-link {
      align-self: center;
      justify-content: center;
    }
    .hero-feature .lede { color: var(--charcoal); }

    .hero h1,
    .hero-tagline,
    .hero .lede,
    .hero-banners {
      transition: opacity .18s var(--ease);
    }

    .hero h1 {
      max-width: 22ch;
      margin-bottom: 1.02em;
      color: var(--charcoal);
      display: flex;
      flex-direction: column;
      gap: 0.11em;
      line-height: 1.04;
    }
    .hero h1 .title-line {
      display: block;
      white-space: nowrap;
    }
    .hero h1 .accent {
      font-style: italic;
      color: var(--primary);
      margin-top: 0.02em;
    }
    .hero-tagline {
      font-family: var(--serif);
      font-size: clamp(1.25rem, 2.2vw, 1.85rem);
      color: var(--charcoal);
      max-width: 38ch;
      margin: 0 0 2.15rem;
      line-height: 1.44;
      font-weight: 500;
    }
    .hero-tagline em {
      font-style: italic;
      color: var(--primary);
      font-weight: 500;
    }
    .mobile-tagline-break {
      display: none;
    }
    .hero .lede {
      font-size: clamp(1.05rem, 1.4vw, 1.18rem);
      max-width: 45ch;
      color: var(--ink-soft);
      margin-bottom: 4.15rem;
      line-height: 1.72;
    }
    .hero .lede-line {
      display: block;
      white-space: nowrap;
    }

    /* =========== Hero category cards (icon + title + link, on the hero photo) =========== */
    .hero-banners {
      display: grid;
      width: 100%;
    }
    .hero-banner {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 10px;
      padding: 12px 0;
      min-height: 130px;
      min-width: 0;                /* allow grid columns to shrink past content size */
      text-decoration: none;
      color: var(--charcoal);
    }
    .hero-banner-head {
      display: flex;
      align-items: center;
      gap: 12px;
    }
    .hero-banner-icon {
      flex: 0 0 60px;
      width: 60px;
      height: 60px;
      aspect-ratio: 1 / 1;
      border-radius: 50%;
      background: var(--primary-soft);
      color: var(--primary-deep);
      display: flex;
      align-items: center;
      justify-content: center;
      transition: background .25s var(--ease), color .25s var(--ease), transform .3s var(--ease);
    }
    .hero-banner:hover .hero-banner-icon {
      background: var(--primary-deep);
      color: var(--cream);
      transform: scale(1.05);
    }
    .hero-banner-icon svg { width: 30px; height: 30px; display: block; }
    .hero-banner-title {
      font-family: var(--serif);
      font-size: 1.35rem;
      color: var(--charcoal);
      margin: 0;
      font-weight: 500;
      line-height: 1.2;
      letter-spacing: -0.005em;
      white-space: nowrap;     /* keep "Cremation Urns" on one line */
    }
    .hero-banner-link {
      display: inline-flex;
      flex-direction: row;
      align-items: baseline;
      gap: 0.35em;
      align-self: flex-start;
      margin-top: auto;            /* push the link to the bottom of the card */
      max-width: 100%;
      font-size: 0.74rem;
      letter-spacing: 0.14em;
      font-weight: 600;
      color: var(--primary-deep);
      text-transform: uppercase;
      line-height: 1.35;
    }
    .hero-banner-link::after {
      content: "\2192";
      display: inline-block;
      margin-left: 0;
      transition: transform .2s var(--ease);
    }
    .hero-banner:hover .hero-banner-link::after { transform: translateX(4px); }

    @media (min-width: 1600px) {
      body.haven-home .site-header .container {
        max-width: min(1720px, calc(100% - 56px));
      }

      .hero-feature-content .container {
        max-width: 1460px;
      }

      .trust-strip .container {
        max-width: 1560px;
      }

      .hero-feature {
        min-height: clamp(900px, 51vw, 1048px);
      }
      .hero-feature > img {
        object-position: 82% 42%;
      }
    }

    /* ============================================================
       Hero responsive:
       - >1366px : full-width banner, text + cards overlay the left half
       - ≤1366px : compact card design clustered tight
       - ≤600px  : image becomes a top band, text overlays it
       ============================================================ */

    /* Narrow (≤1366px): compact card design (icon above title), tight cluster. */
    @media (min-width: 901px) {
      .hero h1 .title-line { white-space: nowrap; }
    }

    @media (max-width: 1366px) {
      .hero .lede {
        max-width: 43ch;
      }

      .hero-feature-content .hero-banners {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        width: max-content;
        max-width: 100%;
        gap: clamp(20px, 4vw, 56px);
        align-items: stretch;
      }
      .hero-feature-content .hero-banner {
        align-items: center;
        text-align: center;
        gap: 6px;
        min-height: auto;
        padding: 4px 0;
        height: 100%;
      }
      .hero-feature-content .hero-banner-head {
        flex-direction: column;
        align-items: center;
        gap: 8px;
        width: 100%;
      }
      .hero-feature-content .hero-banner-icon { flex: 0 0 56px; width: 56px; height: 56px; }
      .hero-feature-content .hero-banner-icon svg { width: 28px; height: 28px; }
      .hero-feature-content .hero-banner-title {
        font-size: clamp(0.85rem, 1.4vw, 1.2rem);
        line-height: 1.15;
      }
      .hero-feature-content .hero-banner-link {
        align-self: center;
        justify-content: center;
        font-size: clamp(0.65rem, 1vw, 0.78rem);
        letter-spacing: 0.04em;
        line-height: 1.3;
      }
    }

    @media (min-width: 601px) and (max-width: 1180px) {
      .hero-feature > img { object-position: 82% center; }
      .hero-feature::after {
        background: linear-gradient(to right,
          rgba(255,255,255,1)    0%,
          rgba(255,255,255,0.96) 34%,
          rgba(255,255,255,0.86) 48%,
          rgba(255,255,255,0.60) 58%,
          rgba(255,255,255,0.20) 70%,
          rgba(255,255,255,0)    82%);
      }
      .hero h1 {
        max-width: 18ch;
        font-weight: 500;
      }
      .hero h1 .accent { font-weight: 500; }
      .hero-tagline {
        max-width: 30ch;
        font-weight: 500;
      }
      .hero-tagline em { font-weight: 500; }
      .hero .lede {
        max-width: 41ch;
        color: var(--ink-soft);
        font-weight: 400;
      }
      .hero-feature-content .hero-banners {
        max-width: min(100%, 620px);
      }
    }

    /* Phone (≤600px): image becomes a 360px top band; text overlays it on a
       top-down white wash that goes fully opaque before the band ends. */
    @media (min-width: 901px) and (max-width: 1180px) {
      .hero-feature-content {
        padding: calc(var(--header-h) + 32px) 0 50px;
      }

      .hero-feature-content .container {
        padding-left: clamp(72px, 7vw, 104px);
        padding-right: clamp(28px, 4vw, 56px);
      }

      .hero h1 {
        margin-bottom: 0.72em;
      }

      .hero-tagline {
        margin-bottom: 1.35rem;
        line-height: 1.36;
      }

      .hero .lede {
        margin-bottom: 2rem;
        line-height: 1.65;
      }

      .hero-feature-content .hero-banners {
        margin-top: 14px;
      }
    }

    @media (max-width: 1060px) {
      html,
      body {
        overflow-x: hidden;
      }

      .hero {
        margin-top: 0;
      }

      .hero-feature-content {
        padding-top: calc(var(--header-h) + 32px);
      }
    }

    @media (max-width: 600px) {
      .hero-feature { background: #fff; }
      .hero-feature > img,
      .hero-feature::after {
        height: 360px;
        max-height: 48vh;
        inset: 0 0 auto 0;
      }
      .hero-feature > img {
        object-position: 78% 58%;
        opacity: 1;
        filter: contrast(1.04) saturate(1.03);
      }
      .hero-feature::after {
        background:
          linear-gradient(to right,
            rgba(255,255,255,0.82) 0%,
            rgba(255,255,255,0.58) 50%,
            rgba(255,255,255,0.06) 100%),
          linear-gradient(to bottom,
            rgba(255,255,255,0.22) 0,
            rgba(255,255,255,0.38) 140px,
            rgba(255,255,255,0.70) 280px,
            rgba(255,255,255,1)    360px);
        mix-blend-mode: normal;
      }
      .hero-feature-content {
        height: auto;
        padding: calc(var(--header-h) + 28px) 0 48px;
      }
      .hero-feature-content .container {
        padding-left: clamp(24px, 5vw, 32px);
        padding-right: clamp(24px, 5vw, 32px);
      }
      /* Stretch cards nearly full-width on phones so every icon/text column
         has equal room and stays centered under its own icon. */
      .hero-feature-content .hero-banners {
        width: calc(100vw - 24px);
        max-width: calc(100vw - 24px);
        margin-left: 50%;
        transform: translateX(-50%);
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: clamp(6px, 2vw, 10px);
      }
      .hero-feature-content .hero-banner {
        align-items: center;
        text-align: center;
        width: 100%;
        min-width: 0;
      }
      .hero-feature-content .hero-banner-head {
        align-items: center;
        width: 100%;
      }
      /* Let the desktop lede lines wrap naturally on phones. */
      .hero .lede br { display: none; }
      .hero .lede-line {
        display: inline;
        white-space: normal;
      }
      .hero h1 {
        font-size: clamp(1.86rem, 8vw, 2.52rem);
        font-weight: 500;
        line-height: 1.16;
        gap: 0.05em;
        margin-bottom: 0.82em;
      }
      .hero h1 .accent { font-weight: 500; }
      .hero .hero-tagline {
        font-size: clamp(1.14rem, 4.7vw, 1.42rem);
        font-weight: 500;
        line-height: 1.62;
        margin-bottom: 2rem;
        color: var(--charcoal);
        text-shadow: none;
      }
      .mobile-tagline-break {
        display: block;
      }
      .hero .hero-tagline em {
        color: var(--primary-deep);
        font-weight: 500;
      }
      .hero .lede {
        font-size: 1rem;
        line-height: 1.72;
        font-weight: 400;
        color: var(--ink-soft);
        text-shadow: none;
      }
    }

    /* =========== Trust strip =========== */
    .trust-strip {
      background: var(--cream-soft);
      border-bottom: 1px solid var(--line);
      padding: 34px 0 38px;
    }
    .trust-strip .container {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 0;
    }
    .trust-item {
      display: flex;
      flex-direction: row;
      gap: 14px;
      align-items: flex-start;
      padding: 6px 14px;
      position: relative;
    }
    /* Hairline dividers between items (premium feel) */
    .trust-item + .trust-item::before {
      content: "";
      position: absolute;
      left: 0;
      top: 8px;
      bottom: 8px;
      width: 1px;
      background: linear-gradient(180deg, transparent, var(--line) 25%, var(--line) 75%, transparent);
    }
    .trust-item .trust-icon {
      flex-shrink: 0;
      width: 52px;
      height: 52px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      position: relative;
      isolation: isolate;
      overflow: hidden;
      background:
        linear-gradient(145deg, rgba(255,255,255,0.98), rgba(229,239,251,0.96));
      color: var(--primary-darker);
      border: 1px solid rgba(21,90,165,0.22);
      margin-top: 1px;
      box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.95),
        inset 0 -9px 18px rgba(21,90,165,0.055),
        0 10px 22px rgba(22,26,35,0.075);
    }
    .trust-item .trust-icon::before {
      content: none;
    }
    .trust-item .trust-icon::after {
      content: none;
    }
    .trust-item .trust-icon svg {
      width: 24px;
      height: 24px;
      position: relative;
      z-index: 1;
      filter: drop-shadow(0 1px 0 rgba(255,255,255,0.7));
      stroke-width: 1.78;
    }
    .trust-item .trust-icon svg * { vector-effect: non-scaling-stroke; }
    .trust-item .trust-text {
      display: flex;
      flex-direction: column;
      gap: 3px;
      min-width: 0;
    }
    .trust-item strong {
      font-family: var(--serif);
      font-size: clamp(1.02rem, 0.9vw, 1.12rem);
      color: var(--charcoal);
      font-weight: 500;
      line-height: 1.36;
      letter-spacing: -0.005em;
      white-space: nowrap;
    }
    .trust-item .trust-text > span {
      font-size: 0.84rem;
      color: var(--muted);
      letter-spacing: 0.01em;
      line-height: 1.5;
      text-wrap: balance;
    }

    /* =========== Section base =========== */
    section { padding: 112px 0; }
    section.alt { background: var(--cream-soft); }

    .section-head {
      max-width: 720px;
      margin-bottom: 66px;
    }
    .section-head.center { margin-left: auto; margin-right: auto; text-align: center; }
    .section-head p {
      font-size: 1.06rem;
      color: var(--ink-soft);
      max-width: 56ch;
      line-height: 1.7;
    }
    .section-head.center p { margin-left: auto; margin-right: auto; }

    /* =========== Service pillars (5 cards) =========== */
    .pillars {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 22px;
    }
    .pillar {
      position: relative;
      background: var(--cream);
      border: 1px solid var(--line);
      padding: 38px 32px 32px;
      border-radius: var(--radius);
      transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .25s var(--ease);
      overflow: hidden;
    }
    .pillar::before {
      content: "";
      position: absolute;
      left: 32px;
      right: 32px;
      top: 0;
      height: 2px;
      background: linear-gradient(90deg, var(--gold), transparent);
      transform: scaleX(0.4);
      transform-origin: left;
      transition: transform .35s var(--ease);
    }
    .pillar:hover {
      transform: translateY(-3px);
      box-shadow: var(--shadow-md);
    }
    .pillar:hover::before { transform: scaleX(1); }
    .pillar .num {
      font-family: var(--serif);
      font-size: 1.1rem;
      font-style: italic;
      color: #7a5a38;
      display: block;
      margin-bottom: 16px;
      font-weight: 600;
      letter-spacing: 0.04em;
    }
    .pillar h3 {
      margin-bottom: 12px;
      letter-spacing: -0.005em;
    }
    .pillar p {
      color: var(--ink-soft);
      margin: 0;
      font-size: 0.95rem;
      line-height: 1.65;
    }

    /* =========== Category showcase =========== */
    .category-block {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 78px;
      align-items: center;
      margin-bottom: 112px;
    }
    .category-block:last-child { margin-bottom: 0; }
    .category-block.reverse > .category-media { order: 2; }

    .category-media {
      aspect-ratio: 4 / 3;
      border-radius: var(--radius-lg);
      overflow: hidden;
      position: relative;
      border: 1px solid var(--line);
      box-shadow: var(--shadow-sm);
    }
    .category-media img {
      width: 100%; height: 100%; object-fit: cover;
    }

    .category-body h2 { margin-bottom: 24px; }
    .category-body > p {
      color: var(--ink-soft);
      font-size: 1.02rem;
      line-height: 1.82;
    }
    .category-cta-row {
      display: grid;
      grid-template-columns: minmax(0, 1.15fr) repeat(2, minmax(0, 1fr));
      gap: 12px;
      margin-top: 28px;
      padding-top: 22px;
      border-top: 1px solid var(--line);
    }
    .category-cta-row + .category-cta-row {
      margin-top: 12px;
      padding-top: 0;
      border-top: 0;
    }
    .category-cta-row--two {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .category-cta-row--single {
      grid-template-columns: minmax(220px, max-content);
    }
    .category-cta-row--four {
      grid-template-columns: repeat(4, minmax(0, 1fr));
    }
    .category-cta {
      min-height: 46px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      padding: 10px 15px;
      border-radius: var(--radius);
      border: 1px solid rgba(21,90,165,0.18);
      background: rgba(255,255,255,0.58);
      color: var(--primary-darker);
      font-family: var(--sans);
      font-size: 0.88rem;
      font-weight: 600;
      letter-spacing: 0.01em;
      line-height: 1.25;
      text-align: center;
      box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.78),
        0 6px 16px rgba(22,26,35,0.035);
      transition: transform .18s var(--ease), border-color .18s var(--ease), background .18s var(--ease), color .18s var(--ease), box-shadow .18s var(--ease);
    }
    .category-cta.primary {
      background: linear-gradient(180deg, rgba(244,247,251,0.96), rgba(255,255,255,0.78));
      border-color: rgba(21,90,165,0.34);
      color: var(--primary-darker);
      box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.9),
        0 8px 18px rgba(17,74,138,0.07);
    }
    .category-cta-row--compact .category-cta {
      min-height: 42px;
      padding: 9px 11px;
      font-size: 0.78rem;
      letter-spacing: 0.005em;
    }
    .category-cta span {
      font-size: 0.95rem;
      line-height: 0;
      transition: transform .18s var(--ease);
    }
    .category-cta:hover {
      transform: translateY(-1px);
      border-color: rgba(21,90,165,0.45);
      background: var(--cream);
      color: var(--primary-deep);
      box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.95),
        0 10px 22px rgba(22,26,35,0.06);
    }
    .category-cta.primary:hover {
      background: var(--cream);
      border-color: var(--primary-deep);
      color: var(--primary-deep);
    }
    .category-cta:hover span { transform: translateX(3px); }
    .category-cta:focus-visible {
      outline: 3px solid rgba(27,109,197,0.22);
      outline-offset: 3px;
    }
    /* =========== Trusted band (photo backdrop with dark scrim + gold accents) =========== */
    .trusted-band {
      background:
        linear-gradient(180deg, rgba(11,30,55,0.55) 0%, rgba(11,30,55,0.78) 100%),
        url('../images/Haven Casket and Monument Serving Toronto and the GTA.webp') 85% 18% / cover no-repeat;
      color: var(--cream);
      padding: 64px 0;
      text-align: center;
      position: relative;
      overflow: hidden;
    }
    .trusted-band::before,
    .trusted-band::after {
      content: "";
      position: absolute;
      left: 50%;
      width: 96px;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--gold), transparent);
      transform: translateX(-50%);
    }
    .trusted-band::before { top: 28px; }
    .trusted-band::after { bottom: 28px; }
    .trusted-band > .container { position: relative; z-index: 1; }
    .trusted-band h2 {
      color: var(--cream);
      font-family: var(--serif);
      font-style: italic;
      font-weight: 400;
      max-width: 54ch;
      margin: 0 auto 24px;
      line-height: 1.3;
      letter-spacing: -0.005em;
      text-wrap: balance;
    }
    .service-areas {
      font-family: var(--sans);
      font-size: 0.78rem;
      letter-spacing: 0.08em;
      color: var(--cream);
      opacity: 0.88;
      text-transform: uppercase;
      white-space: nowrap;
    }
    .service-areas span { margin: 0 6px; opacity: 0.45; }

    /* =========== Pricing callout =========== */
    .pricing-callout {
      position: relative;
      background: var(--cream);
      border: 1px solid var(--line);
      padding: 64px 56px 56px;
      border-radius: var(--radius-lg);
      max-width: 880px;
      margin: 0 auto;
      text-align: center;
      box-shadow: var(--shadow-sm);
      overflow: hidden;
    }
    .pricing-callout::before {
      content: "";
      position: absolute;
      top: 0; left: 50%;
      transform: translateX(-50%);
      width: 96px;
      height: 3px;
      background: linear-gradient(90deg, transparent, var(--gold), transparent);
    }
    .pricing-callout h2 { margin-bottom: 22px; }
    .pricing-callout p {
      color: var(--ink-soft);
      max-width: 60ch;
      margin: 0 auto 14px;
      line-height: 1.7;
    }
    .pricing-callout .price-actions {
      margin-top: 32px;
      display: flex;
      gap: 14px;
      justify-content: center;
      flex-wrap: wrap;
    }

    @media (min-width: 1120px) {
      #service .section-head {
        max-width: none;
      }

      #service .section-head h2,
      .pricing-callout h2 {
        white-space: nowrap;
        text-wrap: normal;
      }

      .pricing-callout {
        max-width: 1120px;
      }
    }

    /* =========== Reviews =========== */
    /* No section-head above the embed; zero out the default section's
       top + bottom padding so the embed butts cleanly against neighbors. */
    .reviews { text-align: center; padding-top: 0; padding-bottom: 0; }
    .reviews .reviews-embed {
      position: relative;
      max-width: 1040px;
      margin: 0 auto;
      padding: 48px 32px;
      border: 1px solid var(--line);
      border-radius: var(--radius-lg);
      background:
        radial-gradient(ellipse at 50% 0%, rgba(168,132,94,0.08), transparent 64%),
        var(--cream);
      color: var(--ink);
      font-family: var(--sans);
      box-shadow: var(--shadow-sm);
      overflow: hidden;
    }
    .reviews .reviews-embed::before {
      content: "";
      position: absolute;
      top: 0;
      left: 50%;
      width: 96px;
      height: 3px;
      transform: translateX(-50%);
      background: linear-gradient(90deg, transparent, var(--gold), transparent);
    }
    .reviews-fallback {
      max-width: 720px;
      margin: 0 auto;
    }
    .reviews-fallback strong {
      display: block;
      font-family: var(--serif);
      color: var(--charcoal);
      font-size: clamp(1.7rem, 3vw, 2.35rem);
      line-height: 1.18;
      margin-bottom: 12px;
      font-weight: 500;
    }
    .reviews-fallback p {
      color: var(--ink-soft);
      margin: 0 auto 24px;
      max-width: 56ch;
      line-height: 1.7;
    }
    .reviews-fallback .review-actions {
      display: flex;
      justify-content: center;
      flex-wrap: wrap;
      gap: 12px;
    }

    /* =========== Charitable giving =========== */
    .giving {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 28px;
    }
    .give-card {
      background: var(--cream);
      border: 1px solid var(--line);
      padding: 40px;
      border-radius: var(--radius-lg);
      display: flex;
      flex-direction: column;
      gap: 16px;
      transition: transform .3s var(--ease), box-shadow .3s var(--ease);
      box-shadow: var(--shadow-xs);
    }
    .give-card:hover {
      transform: translateY(-3px);
      box-shadow: var(--shadow-md);
    }
    .give-card h3 {
      font-family: var(--serif);
      font-size: 1.45rem;
      margin: 0;
      letter-spacing: -0.005em;
    }
    .give-card p {
      color: var(--ink-soft);
      margin: 0;
      font-size: 0.96rem;
      line-height: 1.65;
    }
    .give-card .logo-mark {
      width: 64px; height: 64px;
      background: var(--primary-soft);
      border: 1px solid var(--line);
      border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-family: var(--serif);
      font-size: 0.9rem;
      color: var(--primary-deep);
      letter-spacing: 0.04em;
      font-weight: 600;
    }

    /* =========== Final CTA =========== */
    .final-cta {
      background:
        radial-gradient(ellipse at 50% 0%, rgba(168,132,94,0.20), transparent 65%),
        linear-gradient(180deg, #0d2a4f 0%, #0c1f3b 45%, #0e1219 100%);
      color: var(--cream);
      text-align: center;
      position: relative;
      overflow: hidden;
    }
    .final-cta::before {
      content: "";
      position: absolute;
      top: 36px; left: 50%;
      transform: translateX(-50%);
      width: 96px;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--gold), transparent);
    }
    .final-cta h2 {
      color: var(--cream);
      font-size: clamp(1.72rem, 2.65vw, 2.25rem);
      max-width: 24ch;
      margin: 0 auto 20px;
      letter-spacing: -0.012em;
    }
    .final-cta p {
      color: rgba(255,255,255,0.78);
      max-width: 52ch;
      margin: 0 auto 32px;
      font-size: 1.05rem;
      line-height: 1.7;
    }
    .final-cta .phone-display {
      font-family: var(--serif);
      font-size: clamp(1.85rem, 2.95vw, 2.35rem);
      letter-spacing: 0.01em;
      margin-bottom: 8px;
    }
    .final-cta .phone-display a {
      color: var(--cream);
      border-bottom: 1px solid var(--gold);
      transition: color .2s var(--ease), border-color .2s var(--ease);
    }
    .final-cta .phone-display a:hover { color: var(--gold); }
    .final-cta .hours-note {
      font-size: 0.78rem;
      letter-spacing: 0.18em;
      color: var(--gold);
      text-transform: uppercase;
      margin-bottom: 36px;
      font-weight: 600;
    }

    /* =========== Intro blurb (after reviews) =========== */
    .intro-blurb {
      padding: 24px 0;
      background: var(--primary-tint);
      text-align: center;
    }
    .intro-blurb p {
      font-size: 1.2rem;
      color: var(--ink);
      margin: 0 auto;
      line-height: 1.55;
      font-family: var(--serif);
      font-weight: 500;
    }

    /* =========== Single-column content sections =========== */
    /* Note: padding + .alt background inherited from base `section` rules */
    .content-section h2 { margin-bottom: 26px; }
    .content-section p {
      font-size: 1.02rem;
      color: var(--ink-soft);
      line-height: 1.8;
      margin: 0 0 1.05em;
    }
    .content-section p:last-child { margin-bottom: 0; }
    .monuments-closing { margin: 64px 0 0; }

    /* Premium custom-monuments callout card */
    .custom-monuments-callout {
      position: relative;
      text-align: center;
      background:
        radial-gradient(ellipse at 50% 0%, rgba(168,132,94,0.07), transparent 60%),
        linear-gradient(180deg, var(--paper) 0%, var(--cream-soft) 100%);
      border: 1px solid var(--line);
      border-radius: var(--radius-lg);
      padding: 64px 32px 60px;
      box-shadow: var(--shadow-sm);
      overflow: hidden;
    }
    .custom-monuments-callout::before,
    .custom-monuments-callout::after {
      content: "";
      position: absolute;
      left: 50%;
      width: 96px;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--gold), transparent);
      transform: translateX(-50%);
    }
    .custom-monuments-callout::before { top: 28px; }
    .custom-monuments-callout::after  { bottom: 28px; }
    .custom-monuments-callout .kicker {
      display: inline-block;
      font-family: var(--sans);
      font-size: 0.74rem;
      font-weight: 600;
      letter-spacing: 0.20em;
      text-transform: uppercase;
      color: var(--gold);
      margin: 0 0 20px;
    }
    .custom-monuments-callout .lead {
      font-family: var(--serif);
      font-style: italic;
      font-weight: 400;
      font-size: clamp(1.25rem, 1.9vw, 1.5rem);
      line-height: 1.45;
      letter-spacing: -0.005em;
      color: var(--charcoal);
      max-width: 50ch;
      margin: 0 auto 28px;
      text-wrap: balance;
    }
    .custom-monuments-callout .btn { margin: 0; }

    /* Closing coda paragraph */
    .monuments-coda {
      margin: 40px auto 0;
      max-width: 72ch;
      text-align: center;
      color: var(--ink-soft);
      font-size: 1rem;
      line-height: 1.8;
      text-wrap: balance;
    }

    /* =========== Monument H3 sub-cards =========== */
    .monument-types {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 22px;
      margin: 48px 0 40px;
    }
    .monument-type-card {
      display: block;
      background: var(--cream);
      border: 1px solid var(--line);
      border-radius: var(--radius-lg);
      overflow: hidden;
      text-decoration: none;
      color: var(--charcoal);
      transition: transform .3s var(--ease), border-color .25s var(--ease), box-shadow .3s var(--ease);
      box-shadow: var(--shadow-xs);
    }
    .monument-type-card:hover {
      transform: translateY(-4px);
      border-color: var(--primary);
      box-shadow: var(--shadow-md);
      color: var(--charcoal);
    }
    .monument-type-image {
      aspect-ratio: 1 / 1;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .monument-type-image img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
    }
    .monument-type-card h3 {
      font-family: var(--serif);
      font-size: 1.22rem;
      color: var(--charcoal);
      margin: 0;
      padding: 20px 26px;
      border-top: 1px solid var(--line);
      font-weight: 500;
      letter-spacing: -0.005em;
      transition: color .2s var(--ease);
    }
    .monument-type-card:hover h3 { color: var(--primary-deep); }

    /* =========== FAQ =========== */
    /* Note: padding inherited from base `section` rule */
    .faq-list {
      max-width: 880px;
      margin: 0 auto;
    }
    .faq-item {
      border-top: 1px solid var(--line);
      transition: background .2s var(--ease);
    }
    .faq-item:last-of-type { border-bottom: 1px solid var(--line); }
    .faq-item:hover { background: var(--cream-soft); }
    .faq-item summary {
      list-style: none;
      cursor: pointer;
      padding: 24px 56px 24px 4px;
      font-family: var(--serif);
      font-size: clamp(1.1rem, 1.8vw, 1.28rem);
      color: var(--charcoal);
      position: relative;
      font-weight: 500;
      line-height: 1.4;
      letter-spacing: -0.005em;
      transition: color .2s var(--ease);
    }
    .faq-item summary::-webkit-details-marker { display: none; }
    .faq-item summary::marker { content: ""; }
    .faq-item summary:hover { color: var(--primary-deep); }
    .faq-item summary::after {
      content: "";
      position: absolute;
      right: 8px;
      top: 50%;
      width: 10px;
      height: 10px;
      border-right: 1.5px solid var(--primary-deep);
      border-bottom: 1.5px solid var(--primary-deep);
      transform: translateY(-70%) rotate(45deg);
      transition: transform .25s var(--ease);
    }
    .faq-item[open] summary::after {
      transform: translateY(-30%) rotate(-135deg);
    }
    .faq-answer {
      padding: 0 56px 26px 4px;
      color: var(--ink-soft);
      font-size: 0.98rem;
      line-height: 1.75;
      max-width: 72ch;
    }
    .faq-answer p { margin: 0 0 0.85em; }
    .faq-answer p:last-child { margin-bottom: 0; }

    /* =========== Responsive (consolidated) =========== */
    @media (min-width: 981px) and (max-width: 1366px) {
      .trust-strip .container {
        max-width: min(100%, calc(100% - 48px));
      }

      .trust-item {
        gap: 12px;
        padding-left: clamp(12px, 1.5vw, 18px);
        padding-right: clamp(12px, 1.5vw, 18px);
      }

      .trust-item .trust-text > span {
        max-width: 22ch;
      }

      .trust-item:first-child .trust-text > span {
        max-width: 18ch;
      }
    }

    @media (max-width: 980px) {
      .trust-strip .container { grid-template-columns: repeat(2, 1fr); gap: 24px 0; }
      .trust-item { padding: 4px 18px; }
      .pillars { grid-template-columns: repeat(2, 1fr); }
      .category-block,
      .category-block.reverse { grid-template-columns: 1fr; gap: 32px; margin-bottom: 64px; }
      .category-block.reverse > .category-media { order: 0; }
      .category-cta-row {
        grid-template-columns: 1fr;
        gap: 10px;
      }
      .category-cta-row--two,
      .category-cta-row--single,
      .category-cta-row--four {
        grid-template-columns: 1fr;
      }
      .category-cta {
        min-height: 48px;
        justify-content: space-between;
        text-align: left;
      }
      .giving { grid-template-columns: 1fr; gap: 18px; }
      .faq-item summary { padding-right: 44px; }
      .faq-answer { padding-right: 0; }
    }

    @media (max-width: 760px) {
      .monument-types { grid-template-columns: 1fr; gap: 14px; margin: 36px 0 32px; }
      .monument-type-image { aspect-ratio: 3 / 2; padding: 24px; }
      .monuments-closing { margin-top: 48px; }
      .custom-monuments-callout { padding: 48px 22px 44px; }
      .custom-monuments-callout::before,
      .custom-monuments-callout::after { width: 64px; }
      .monuments-coda { font-size: 0.95rem; margin-top: 32px; }
    }

    @media (max-width: 600px) {
      :root { --header-h: 68px; }     /* mobile header is slightly shorter */
      section { padding: 64px 0; }
      .pillars { grid-template-columns: 1fr; }
      .hero-feature-content .hero-banner-icon {
        flex-basis: 70px;
        width: 70px;
        height: 70px;
      }
      .hero-feature-content .hero-banner-icon svg {
        width: 35px;
        height: 35px;
      }
      .hero-feature-content .hero-banner-title {
        width: 100%;
        max-width: 100%;
        font-size: clamp(0.98rem, 3.8vw, 1.12rem);
        line-height: 1.18;
        text-align: center;
        white-space: normal;
        text-wrap: balance;
      }
      .hero-feature-content .hero-banner {
        align-items: center;
        text-align: center;
        width: 100%;
        min-width: 0;
      }
      .hero-feature-content .hero-banner-head {
        align-items: center;
        width: 100%;
      }
      .hero-feature-content .hero-banner-link {
        display: grid;
        grid-template-columns: auto auto;
        grid-template-areas:
          "first first"
          "second arrow";
        width: 100%;
        align-self: center;
        justify-content: center;
        justify-items: center;
        column-gap: 0.35em;
        row-gap: 0;
        text-align: center;
      }
      .hero-feature-content .hero-banner-link span:first-child { grid-area: first; }
      .hero-feature-content .hero-banner-link span:nth-child(2) { grid-area: second; }
      .hero-feature-content .hero-banner-link::after {
        grid-area: arrow;
        margin: 0;
        align-self: center;
      }
      /* Trust strip: compact mobile list with one-line titles. */
      .trust-strip {
        padding: 30px 0 32px;
      }
      .trust-strip .container {
        grid-template-columns: 1fr;
        gap: 18px;
        max-width: 360px;
      }
      .trust-item {
        flex-direction: row;
        align-items: center;
        gap: 14px;
        padding: 0 4px;
        text-align: left;
      }
      .trust-item + .trust-item::before { display: none; }   /* section bg replaces dividers */
      .trust-item .trust-icon {
        width: 54px;
        height: 54px;
        margin-top: 0;
      }
      .trust-item .trust-icon svg { width: 25px; height: 25px; }
      .trust-item .trust-text {
        align-items: flex-start;
        gap: 3px;
      }
      .trust-item strong {
        font-size: clamp(1.04rem, 4vw, 1.14rem);
        line-height: 1.2;
        white-space: nowrap;
        text-wrap: normal;
      }
      .trust-item .trust-text > span {
        max-width: none;
        font-size: 0.84rem;
        line-height: 1.42;
        text-wrap: pretty;
      }
      .pricing-callout { padding: 44px 26px 36px; }
      .faq { padding: 64px 0; }
      .content-section { padding: 64px 0; }
      .intro-blurb { padding: 40px 0 32px; }
      .trusted-band { padding: 48px 0; }
      .trusted-band::before, .trusted-band::after { width: 64px; }
      .service-areas { white-space: normal; font-size: 0.74rem; }
    }


    /* =========== Hero blue-text legibility =========== */
    /* The italic blue accent + tagline run past the point where the white wash
       thins over the image, so deepen the blue for contrast and add a soft white
       halo so those lines never read as washed-out / "covered". */
    .hero h1 .accent,
    .hero-tagline em {
      color: var(--primary-darker);
    }
    .hero h1,
    .hero-tagline,
    .hero .lede {
      text-shadow: 0 1px 0 rgba(255,255,255,0.85), 0 2px 14px rgba(255,255,255,0.65);
    }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after { transition: none !important; animation: none !important; }
      html { scroll-behavior: auto; }
    }
