/* HomePage 2 ("Warm Light"): the homepage-only layer, linked after every shared sheet.
   Inner pages receive the same header, footer and dock markup but never this file or
   body.home2, so every selector that names a shared class is prefixed with .home2.
   All type is Inter (owner decision, 2026-09-18). Animations and transitions live only
   inside prefers-reduced-motion: no-preference blocks. Tests read literals from this file,
   so keep it in readable "prop: value;" form. */

@font-face { font-family: "Inter Fallback"; src: local("Arial"); size-adjust: 107.1%; ascent-override: 90.4%; descent-override: 22.5%; line-gap-override: 0%; }

/* ---------- Tokens ---------- */
:root {
  --h2-font-text: "Inter", "Inter Fallback", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;

  /* Fluid scale, linear 320px -> 1440px. Inter has no opsz axis, so display stops at 80px. */
  --h2-fs-display: clamp(2.25rem, 1.4643rem + 3.9286vw, 5rem);      /* 36 -> 80 */
  --h2-fs-headline: clamp(2.125rem, 1.5893rem + 2.6786vw, 4rem);    /* 34 -> 64 */
  --h2-fs-section: clamp(1.875rem, 1.4107rem + 2.3214vw, 3.5rem);   /* 30 -> 56 */
  --h2-fs-tile: clamp(1.625rem, 1.375rem + 1.25vw, 2.5rem);         /* 26 -> 40 */
  --h2-fs-card: clamp(1.3125rem, 1.1875rem + .625vw, 1.75rem);      /* 21 -> 28 */
  --h2-fs-product: clamp(1.375rem, 1.2321rem + .7143vw, 1.875rem);  /* 22 -> 30 */
  --h2-fs-subhead: clamp(1.1875rem, 1.0268rem + .8036vw, 1.75rem);  /* 19 -> 28 */
  --h2-fs-lede: clamp(1.125rem, 1.0714rem + .2679vw, 1.3125rem);    /* 18 -> 21 */
  --h2-fs-eyebrow: clamp(1rem, .9464rem + .2679vw, 1.1875rem);      /* 16 -> 19 */
  --h2-fs-body: 1.0625rem;  /* 17 */
  --h2-fs-small: 1rem;      /* 16: floor for running text */
  --h2-lh-display: calc(1em + 4px);
  --h2-lh-title: calc(1em + 6px);
  --h2-lh-text: calc(1em + 8px);
  --h2-ls-display: -.028em; --h2-ls-headline: -.026em; --h2-ls-section: -.024em; --h2-ls-tile: -.022em;
  --h2-ls-card: -.019em; --h2-ls-lede: -.016em; --h2-ls-body: -.012em; --h2-ls-label: 0em;

  /* Warm neutrals, an ink action with a white label and brass as the only accent (owner
     decision 2026-09-18: premium ink + brass replace the amber; no amber on the homepage). */
  --h2-canvas: #ffffff;
  --h2-porcelain: #f5f3ef;
  --h2-porcelain-deep: #ece8e1;
  --h2-ink: #232323;
  --h2-graphite: #66615a;
  --h2-stone: #8a847c;           /* borders only, never text */
  --h2-hairline: rgb(35 35 35 / .14);
  --h2-night: #141210;
  --h2-night-tile: #232323;
  --h2-night-text: #f5f3ef;
  --h2-night-text-2: #a8a29a;
  --h2-action: #232323;          /* white label 15.7:1 */
  --h2-action-label: #ffffff;
  --h2-action-hover: #3b3733;    /* 11.8:1 */
  --h2-action-press: #141210;
  --h2-brass: #a8844f;           /* decorative only: dots, pins, hairlines, never fills */
  --h2-brass-text: #86683a;      /* text: 5.2:1 on white, 4.7:1 on porcelain */
  --h2-brass-night: #c9a86f;     /* 8.3:1 on night, 7.0:1 on the night tile */
  --h2-glow: rgb(245 243 239 / .06);
  --h2-urgent: #e9e1d5;          /* ink 12.1:1 */
  --h2-error: #b3261e;
  --h2-focus: #232323;
  --h2-focus-dark: #f5f3ef;
  --h2-scrim-ink: 20 18 16;

  /* One glass material for header, dock and drawer. */
  --h2-glass: rgb(255 255 255 / .82);
  --h2-glass-solid: rgb(255 255 255 / .97);
  --h2-glass-filter: saturate(180%) blur(20px);

  --h2-gutter: max(20px, 6.25vw, calc(50vw - 630px));
  --h2-content: min(87.5vw, 1260px);
  --h2-section-y: clamp(5rem, 3.8571rem + 5.7143vw, 9rem);
  --h2-section-y-feature: clamp(6rem, 4.7143rem + 6.4286vw, 10.5rem);
  --h2-head-gap: clamp(2rem, 1.7143rem + 1.4286vw, 3rem);
  --h2-gap: 20px;

  --h2-radius-pill: 980px; --h2-radius-tile: 28px; --h2-radius-card: 18px; --h2-radius-media: 28px;
  --h2-radius-field: 12px; --h2-radius-thumb: 14px;
  /* One edge per surface: floating glass and sheets carry a soft shadow and no ring. */
  --h2-shadow-float: 0 2px 12px rgb(20 18 16 / .08), 0 16px 40px -16px rgb(20 18 16 / .32);
  --h2-shadow-lift: 0 16px 32px -16px rgb(20 18 16 / .18);

  --h2-ease-standard: cubic-bezier(.4, 0, .6, 1);
  --h2-ease-out: cubic-bezier(.215, .61, .355, 1);
  --h2-ease-emphasized: cubic-bezier(.28, .11, .32, 1);
  --h2-ease-media: cubic-bezier(.42, .46, .45, .99);
  --h2-ease-hover: cubic-bezier(0, 0, .5, 1);
  --h2-dur-press: 100ms; --h2-dur-ui: 240ms; --h2-dur-fade: 500ms;
  --h2-dur-rise: 700ms; --h2-dur-media: 720ms; --h2-dur-reveal: 900ms;
  --h2-stagger: 80ms;
  --h2-rise: 30px; --h2-hover-scale: 1.016; --h2-media-scale: 1.08;

  /* Shared header contract (hero-voice-layout.css stays untouched): the bar is flush with the
     top and its glass paints the safe area, so the tone above it is the page white (Rule 2.5). */
  --header-top-gap: 0px;
  --header-height: 64px;
  --header-tone: #fff;
  color-scheme: light;
  interpolate-size: allow-keywords;
}
@media (max-width: 734px) {
  :root { --header-height: 56px; --h2-radius-tile: 20px; --h2-radius-media: 20px; --h2-gap: 12px; }
}

/* ---------- Base ---------- */
html {
  background-color: var(--h2-canvas);
  /* The measured header already includes the safe area and grows with text zoom or voice. */
  scroll-padding-top: calc(var(--header-content-height, calc(var(--header-height) + env(safe-area-inset-top, 0px))) + 16px);
  scroll-padding-bottom: 112px;
}
body.home2 {
  /* Shared sheets paint with titan's --gold/--accent and compliance's --action; here they
     resolve to the ink palette, so a shared rule this file does not restyle cannot show amber. */
  --gold: var(--h2-porcelain-deep);
  --accent: var(--h2-action);
  --action: var(--h2-action);
  --action-hover: var(--h2-action-hover);
  background-color: var(--h2-canvas);
  color: var(--h2-ink);
  font: 400 var(--h2-fs-body)/1.47 var(--h2-font-text);
  letter-spacing: var(--h2-ls-body);
  font-synthesis: none;
  font-kerning: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.home2 :where(h1, h2, h3, h4, p, a, button, input, select, textarea, summary, dialog, blockquote) { font-family: inherit; }
.home2 :where(h1, h2, h3, h4) { font-weight: 600; }
/* One focus ring: 2px ink, 3px offset; the outline follows each target radius. */
.home2:focus-visible,
.home2 :focus-visible,
.home2 :is(.footer a, .contact-form input):focus-visible { outline: 2px solid var(--h2-focus); outline-offset: 3px; }
/* A brass tint (28% over white), opaque so the ink label reads on the night band too. */
.home2 ::selection { background: #e7ddce; color: var(--h2-ink); }
/* The glass header paints its own safe area; the shared opaque strip would sit above it. */
.has-dock-navigation body.home2::before { display: none; }

.home2-wrap { width: var(--h2-content); margin-inline: auto; }
.home2-band { padding-block: var(--h2-section-y); background-color: var(--h2-canvas); }
.home2-band--porcelain { background-color: var(--h2-porcelain); }

/* ---------- Header (shared markup, homepage material) ---------- */
body.home2 .site-header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 70;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  height: auto;
  min-height: calc(var(--header-height) + env(safe-area-inset-top, 0px));
  margin: 0;
  padding: env(safe-area-inset-top, 0px) max(var(--h2-gutter), env(safe-area-inset-right, 0px)) 0 max(var(--h2-gutter), env(safe-area-inset-left, 0px));
  border: 0;
  border-radius: 0;
  background-color: var(--h2-glass);
  -webkit-backdrop-filter: var(--h2-glass-filter);
  backdrop-filter: var(--h2-glass-filter);
  box-shadow: none;
}
body.home2 .site-header.is-scrolled { box-shadow: 0 1px 0 var(--h2-hairline); }
body.home2 .site-header .brand,
body.home2 .site-header.has-voice-entry .brand { flex: none; width: auto; background: transparent; }
body.home2 .site-header .brand img { width: auto; height: 48px; object-fit: contain; }
body.home2 .site-header .header-booking { min-height: 44px; padding: 10px 18px; font-size: 16px; line-height: 1.2; }
body.home2 .site-header .header-booking > span { display: none; }
body.home2 .site-header .header-voice__caption { border-right-color: var(--h2-hairline); color: var(--h2-ink); font-weight: 500; }
body.home2 .site-header .header-voice__scope { color: var(--h2-graphite); }
/* Voice entry states (shared voice-assistant.css): idle is an ink disc with a faint brass halo,
   connecting a dashed brass ring, live keeps the shared green. */
body.home2 .header-voice__signal { background: var(--h2-action); color: var(--h2-action-label); box-shadow: 0 0 0 4px rgb(168 132 79 / .22); }
body.home2 .header-voice[data-voice-state="connecting"] .header-voice__signal { box-shadow: none; outline: 2px dashed var(--h2-brass-text); outline-offset: 3px; }
/* Scripts on: the nav is portalled into the dock drawer; keep it out of the bar meanwhile. */
html.home2-js:not(.has-dock-navigation) body.home2 .site-header nav { display: none; }
/* No JavaScript at all: the header sits in flow with its inline navigation. */
html:not(.home2-js) body.home2 .site-header { position: relative; flex-wrap: wrap; row-gap: 8px; padding-bottom: 12px; }
@media (max-width: 734px) {
  body.home2 .site-header { gap: 10px; }
  body.home2 .site-header .brand img { height: 40px; }
  body.home2 .site-header .header-booking { padding: 8px 16px; }
}
@media (max-width: 370px) {
  body.home2 .site-header { gap: 8px; padding-inline: max(16px, env(safe-area-inset-left, 0px)) max(16px, env(safe-area-inset-right, 0px)); }
  body.home2 .site-header .header-booking { padding-inline: 12px; }
}

/* ---------- Dock and menu drawer (shared markup; sizes and wrap rules stay in compliance.css) ---------- */
.home2 .quick-actions {
  border: 0;
  border-radius: 26px;
  padding: 6px;
  background: var(--h2-glass);
  -webkit-backdrop-filter: var(--h2-glass-filter);
  backdrop-filter: var(--h2-glass-filter);
  box-shadow: var(--h2-shadow-float);
  color: var(--h2-ink);
}
.home2 .quick-actions__items > a,
.home2 .quick-actions__items > button { border-radius: 20px; color: var(--h2-ink); font-weight: 500; }
.home2 .quick-actions__items > a:hover,
.home2 .quick-actions__items > button:hover { background: var(--h2-porcelain-deep); }
.home2 .quick-actions__items > [data-quick-action="book"] { background: var(--h2-action); color: var(--h2-action-label); box-shadow: none; }
.home2 .quick-actions__items > [data-quick-action="book"]:hover { background: var(--h2-action-hover); }
.home2 .quick-actions__items > [data-quick-action="book"]:active { background: var(--h2-action-press); }
.home2 .quick-actions__items > .menu-toggle[aria-expanded="true"] { background: var(--h2-porcelain-deep); }
.home2 .quick-actions__items > :focus-visible { outline: 2px solid var(--h2-focus); outline-offset: 2px; }

.has-dock-navigation .home2 #primary-navigation {
  inset: auto max(12px, env(safe-area-inset-right)) calc(88px + env(safe-area-inset-bottom)) auto;
  width: min(360px, calc(100vw - 24px));
  max-height: calc(100svh - 104px - var(--header-height) - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  padding: 12px 24px 24px;
  border: 0;
  border-radius: 28px;
  background: var(--h2-glass);
  -webkit-backdrop-filter: var(--h2-glass-filter);
  backdrop-filter: var(--h2-glass-filter);
  box-shadow: var(--h2-shadow-float);
}
.has-dock-navigation .home2 #primary-navigation > a:not(.button) {
  min-height: 52px;
  padding-block: 10px;
  border-bottom: 1px solid var(--h2-hairline);
  color: var(--h2-ink);
  font: 600 24px/1.25 var(--h2-font-text);
  letter-spacing: -.02em;
}
.has-dock-navigation .home2 #primary-navigation > .button { width: 100%; margin-top: 16px; }

/* ---------- Buttons and links: one action component for the whole page ---------- */
.home2 .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 12px 24px;
  border: 0;
  border-radius: var(--h2-radius-pill);
  font: 500 var(--h2-fs-body)/1.25 var(--h2-font-text);
  letter-spacing: var(--h2-ls-body);
  text-align: center;
  text-decoration: none;
}
.home2 .button:hover { transform: none; }
/* Primary: ink with a white label and no coloured edge. Secondary: one 1px ink edge. */
.home2 .button:not(.button--outline) { background: var(--h2-action); color: var(--h2-action-label); box-shadow: none; }
.home2 .button:not(.button--outline):hover { background: var(--h2-action-hover); color: var(--h2-action-label); }
.home2 .button:not(.button--outline):active { background: var(--h2-action-press); }
.home2 .button--outline { background: transparent; color: var(--h2-ink); box-shadow: inset 0 0 0 1px var(--h2-ink); }
.home2 .button--outline:hover { background: var(--h2-ink); color: var(--h2-action-label); }
.home2 .button:focus-visible { outline: 2px solid var(--h2-focus); outline-offset: 3px; }
.home2 .button:is(:disabled, [aria-disabled="true"]) { opacity: .42; }
.home2 :is(.button, .text-link) > span[aria-hidden="true"] { font-size: 1em; font-weight: inherit; line-height: 1; }
/* ↗ marks leaving the page; the office picker, flows and callback open in place. */
.home2 :is([data-office-picker], [data-native-flow], [data-callback-open]) > span[aria-hidden="true"] { display: none; }
.home2 .text-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 44px;
  border: 0;
  color: var(--h2-ink);
  font: 500 var(--h2-fs-body)/1.3 var(--h2-font-text);
  letter-spacing: var(--h2-ls-body);
  text-decoration: none;
}
.home2 .text-link:hover,
.home2 .text-link:focus-visible { text-decoration: underline; text-underline-offset: 4px; }

/* ---------- Section heading and labels ---------- */
.home2 .eyebrow { margin: 0 0 12px; color: var(--h2-graphite); font: 600 var(--h2-fs-eyebrow)/1.3 var(--h2-font-text); letter-spacing: var(--h2-ls-label); font-variant-numeric: tabular-nums; }
.home2-heading { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 20px; align-items: end; margin-bottom: var(--h2-head-gap); }
.home2-heading > :first-child { grid-column: 1 / 8; }
.home2-heading__aside { grid-column: 8 / -1; }
.home2-heading h2 { font-size: var(--h2-fs-section); line-height: var(--h2-lh-display); letter-spacing: var(--h2-ls-section); text-wrap: balance; }
.home2-heading h2 em { font-style: normal; color: var(--h2-graphite); }
.home2-heading__aside p { max-width: 40ch; color: var(--h2-graphite); font-size: var(--h2-fs-lede); line-height: var(--h2-lh-text); letter-spacing: var(--h2-ls-lede); text-wrap: pretty; }
.home2 .home2-heading__aside .text-link { margin-top: 12px; }
@media (max-width: 1068px) {
  .home2-heading { display: block; }
  .home2-heading__aside { margin-top: 16px; }
}

/* ---------- Reveal system (homepage.js adds .is-visible; html.js-motion is removed under reduced motion) ---------- */
.home2 .home2-stagger > :nth-child(2) { --i: 1; }
.home2 .home2-stagger > :nth-child(3) { --i: 2; }
.home2 .home2-stagger > :nth-child(4) { --i: 3; }
.home2 .home2-stagger > :nth-child(5) { --i: 4; }
.home2 .home2-stagger > :nth-child(6) { --i: 5; }

/* ---------- #home: the hero film lives in home2-hero.css (round 4) ---------- */

/* ---------- #locations: three offices ---------- */
.home2-locations { padding-block: var(--h2-section-y) var(--h2-gap); }
.home2-locations__heading { max-width: 21em; margin-bottom: var(--h2-head-gap); font-size: var(--h2-fs-section); font-weight: 600; line-height: var(--h2-lh-display); letter-spacing: var(--h2-ls-section); text-wrap: balance; }
.home2-locations__heading h2,
.home2-locations__heading p { display: inline; font: inherit; letter-spacing: inherit; }
.home2-locations__heading p { color: var(--h2-graphite); }
/* Owner decision (Jacob, 2026-09-22): the network is growing, and the locations band says so —
   no area named while the next practice is still being bought. Its own small line, not part of
   the display sentence above it; brass on porcelain is 4.67:1. */
.home2-locations__heading .home2-locations__soon { display: block; margin-top: 16px; color: var(--h2-brass-text); font-size: var(--h2-fs-small); font-weight: 500; line-height: var(--h2-lh-text); letter-spacing: var(--h2-ls-body); }
.home2 .home2-office-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--h2-gap); }
.home2 .home2-office-grid .office-card { position: relative; display: flex; flex-direction: column; gap: 4px; min-width: 0; padding: 0 0 28px; overflow: hidden; border: 0; border-radius: var(--h2-radius-tile); background: var(--h2-canvas); color: var(--h2-ink); }
.home2 .home2-office-grid .office-card > :not(.office-card__media) { margin-inline: 28px; }
.home2 .home2-office-grid .office-card__media { aspect-ratio: 16 / 9; margin-bottom: 20px; overflow: hidden; background: var(--h2-porcelain-deep); }
.home2 .home2-office-grid .office-card__media img { width: 100%; height: 100%; object-fit: cover; }
/* Keep the neon sign in frame when a layout crops the 4:3 photo. */
.home2 .home2-office-grid [data-office="freeport"] .office-card__media img { object-position: 30% 50%; }
.home2 .home2-office-grid .office-card h3 { margin: 0 0 8px; font-size: var(--h2-fs-card); line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-card); }
/* Jacob (2026-09-23): the office name opens the office's own page. */
.home2 .home2-office-grid .office-card h3 a { color: inherit; text-decoration: none; }
.home2 .home2-office-grid .office-card h3 a:hover { text-decoration: underline; text-underline-offset: 4px; }
.home2 .home2-office-grid .office-card > h3:first-child { margin-top: 32px; }
.home2 .home2-office-grid .office-card__contacts { display: flex; flex-direction: column; gap: 0; }
.home2 .home2-office-grid :is(.office-card__address, .office-card__contacts > a) {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 44px;
  margin: 0;
  padding: 6px 0 6px 28px;
  color: var(--h2-ink);
  font-size: var(--h2-fs-body);
  line-height: 1.4;
  letter-spacing: var(--h2-ls-body);
  overflow-wrap: anywhere;
}
.home2 .home2-office-grid :is(.office-card__address, .office-card__contacts > a)::before {
  content: "";
  position: absolute;
  top: 12px;
  left: 0;
  width: 20px;
  height: 20px;
  background-color: var(--h2-graphite);
  -webkit-mask: var(--h2-icon) center / contain no-repeat;
  mask: var(--h2-icon) center / contain no-repeat;
}
.home2 .home2-office-grid .office-card__address { --h2-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5a7 7 0 0 1 14 0C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E"); }
.home2 .home2-office-grid .office-card__contacts > a[href^="tel:"] { --h2-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 4h3l1.7 4.3-2.2 1.4a11 11 0 0 0 6.3 6.3l1.4-2.2 4.3 1.7v3a1.5 1.5 0 0 1-1.6 1.5A16 16 0 0 1 4 5.6 1.5 1.5 0 0 1 5.5 4z'/%3E%3C/svg%3E"); font-variant-numeric: tabular-nums; }
.home2 .home2-office-grid .office-card__contacts > a[href^="mailto:"] { --h2-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2.5'/%3E%3Cpath d='m3.8 6.8 8.2 6.4 8.2-6.4'/%3E%3C/svg%3E"); }
.home2 .home2-office-grid :is(.office-card__address, .office-card__contacts > a):hover { text-decoration: underline; text-underline-offset: 4px; }
.home2 .home2-office-grid .office-card__actions { display: flex; flex-direction: column; align-items: stretch; gap: 4px; margin-top: auto; padding-top: 16px; }
.home2 .home2-office-grid .office-card__actions .button { width: 100%; }
.home2 .home2-office-grid .office-card__actions .text-link { justify-content: center; }
.home2 .home2-office-grid :is(.office-card__address, .office-card__contacts > a):focus-visible { outline-offset: 0; border-radius: 6px; }
@media (max-width: 734px) {
  .home2 .home2-office-grid { grid-template-columns: minmax(0, 1fr); }
  .home2 .home2-office-grid .office-card { padding: 20px; }
  .home2 .home2-office-grid .office-card > :not(.office-card__media) { margin-inline: 0; }
  .home2 .home2-office-grid .office-card > h3:first-child { margin-top: 0; }
  .home2 .home2-office-grid .office-card:has(> .office-card__media) { display: grid; grid-template-columns: 80px minmax(0, 1fr); column-gap: 16px; row-gap: 4px; }
  .home2 .home2-office-grid .office-card__media { grid-column: 1; grid-row: 1; width: 80px; height: 80px; aspect-ratio: 1 / 1; margin: 0 0 8px; border-radius: var(--h2-radius-thumb); }
  .home2 .home2-office-grid .office-card:has(> .office-card__media) > h3 { grid-column: 2; grid-row: 1; align-self: center; margin: 0 0 8px; }
  .home2 .home2-office-grid .office-card:has(> .office-card__media) > :not(.office-card__media, h3) { grid-column: 1 / -1; grid-row: auto; }
  .home2 .home2-office-grid .office-card__actions { padding-top: 12px; }
}
/* Under the map (the layout without JavaScript): one card per row, 2 + 1 from 51em (the longest
   email fits one line). A card wider than 34rem sets its photo beside the contacts, which keep
   24rem. Direct children only: a card opened in the office sheet keeps the sheet layout. */
@media (min-width: 735px) {
  .home2 .home2-map__offices { grid-template-columns: minmax(0, 1fr); }
  .home2 .home2-map__offices > .office-card { --photo: min(50% - var(--h2-gap) / 2, 100% - 24rem); container: office / inline-size; }
}
@media (min-width: 51em) {
  .home2 .home2-map__offices { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home2 .home2-map__offices > .office-card:last-child { grid-column: 1 / -1; }
}
@container office (min-width: 34rem) {
  .home2 .home2-map__offices > .office-card > .office-card__media { position: absolute; inset: 0 auto 0 0; width: var(--photo); aspect-ratio: auto; margin: 0; }
  .home2 .home2-map__offices > .office-card > :not(.office-card__media) { margin-left: calc(var(--photo) + var(--h2-gap) + 28px); }
  .home2 .home2-map__offices > .office-card > h3 { margin-top: 28px; }
}

/* ---------- #locations: the Long Island map ---------- */
/* assets/map-long-island.svg (US Census boundaries and primary roads, public domain) is a linear
   projection of lon -73.97…-73.33, lat 40.565…40.875: x% = (lon + 73.97) / .64 * 100,
   y% = (40.875 - lat) / .31 * 100. The canvas crops it like object-fit: cover (--map-w,
   --map-ox, --map-oy), and every overlay goes through the same transform. */
.home2-map {
  --map-ratio: 1.5649;
  --map-h: 100cqw;
  --map-w: max(100cqw, var(--map-h) * var(--map-ratio));
  --map-ox: calc((100cqw - var(--map-w)) / 2);
  --map-oy: calc((var(--map-h) - var(--map-w) / var(--map-ratio)) / 2);
  --map-water-text: #56636e;      /* 4.8:1 on the water */
  display: grid;
  container-type: inline-size;
}
.home2-map [data-pin="bellerose"], .home2-map [data-chip="bellerose"], .home2 .home2-map [data-office="bellerose"] { --x: 39.22; --y: 42.58; --seq: 0; }
.home2-map [data-pin="roslyn"], .home2-map [data-chip="roslyn"], .home2 .home2-map [data-office="roslyn"] { --x: 47.62; --y: 24.91; --seq: 1; }
.home2-map [data-pin="freeport"], .home2-map [data-chip="freeport"], .home2 .home2-map [data-office="freeport"] { --x: 59.08; --y: 71.73; --seq: 2; }
.home2-map [data-map-label="sound"] { --x: 36; --y: 10; }
.home2-map [data-map-label="queens"] { --x: 29; --y: 74; }
.home2-map [data-map-label="nassau"] { --x: 66; --y: 45; }
.home2-map [data-map-label="suffolk"] { --x: 88; --y: 18; }
.home2-map [data-map-label="ocean"] { --x: 45; --y: 96.5; }
.home2-map__canvas { position: relative; grid-area: 1 / 1; height: var(--map-h); overflow: hidden; }
.home2-map__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 9%, #000 91%, transparent);
  mask-image: linear-gradient(to bottom, transparent, #000 9%, #000 91%, transparent);
}
.home2-map__pin,
.home2-map__label {
  position: absolute;
  left: calc(var(--map-ox) + var(--map-w) * var(--x) / 100);
  top: calc(var(--map-oy) + var(--map-w) / var(--map-ratio) * var(--y) / 100);
}
.home2-map__label {
  transform: translate(-50%, -50%);
  color: var(--h2-graphite);
  font: 500 .8125rem/1 var(--h2-font-text);
  letter-spacing: .14em;
  text-transform: uppercase;
  white-space: nowrap;
}
.home2-map__label--water { color: var(--map-water-text); }
.home2-map__label.is-hidden { visibility: hidden; }
.home2-map [data-map-label="suffolk"] { display: none; }
/* A brass dot with a white halo and the office name above it. Never a tab stop: the chips (or,
   without JavaScript, the cards) are. */
.home2-map__pin { z-index: 1; width: 0; height: 0; }
.home2-map__pin::before,
.home2-map__pin::after { content: ""; position: absolute; left: -7px; top: -7px; width: 14px; height: 14px; border-radius: 50%; }
.home2-map__pin::before { background: var(--h2-brass); box-shadow: 0 0 0 3px #fff, 0 2px 8px 1px rgb(20 18 16 / .26); scale: calc(1 + var(--on, 0) * .25); }
.home2-map__pin::after { box-shadow: 0 0 0 1.5px var(--h2-brass); opacity: calc(var(--on, 0) * .9); scale: calc(1 + var(--on, 0) * .9); pointer-events: none; }
.home2-map__pin > span {
  position: absolute;
  left: 0;
  bottom: 15px;
  transform: translateX(-50%);
  color: var(--h2-ink);
  font: 600 .875rem/1.2 var(--h2-font-text);
  font-weight: calc(600 + var(--on, 0) * 100);
  letter-spacing: -.006em;
  white-space: nowrap;
  text-shadow: 0 0 2px #fff, 0 0 6px #fff, 0 0 12px #fff;
}
/* Hovering or focusing an office's chip or card, or hovering its pin, marks the pin. */
.home2 .home2-map:has([data-chip="bellerose"]:is(:hover, :focus-visible), [data-office="bellerose"]:is(:hover, :focus-within), [data-pin="bellerose"]:hover) :is([data-pin="bellerose"], [data-chip="bellerose"]),
.home2 .home2-map:has([data-chip="roslyn"]:is(:hover, :focus-visible), [data-office="roslyn"]:is(:hover, :focus-within), [data-pin="roslyn"]:hover) :is([data-pin="roslyn"], [data-chip="roslyn"]),
.home2 .home2-map:has([data-chip="freeport"]:is(:hover, :focus-visible), [data-office="freeport"]:is(:hover, :focus-within), [data-pin="freeport"]:hover) :is([data-pin="freeport"], [data-chip="freeport"]) { --on: 1; }
.home2 .home2-map__offices { grid-area: 2 / 1; width: var(--h2-content); margin: 32px auto 0; }
@media (min-width: 735px) {
  .home2-map { --map-h: calc(100cqw / var(--map-ratio)); }
  .home2-map [data-map-label="sound"] { --x: 31; }
  .home2-map [data-map-label="queens"] { --x: 25; }
  .home2-map [data-map-label="suffolk"] { display: block; }
}

/* home2.js takes over (.is-expandable): each office is a chip beside its pin that opens the
   office's own card in the office sheet. Only then do the cards leave the page; without
   JavaScript they stay under the map as above. */
.home2 .home2-map.is-expandable .home2-map__offices { margin: 0; }
.home2 .home2-map.is-expandable .home2-map__offices > .office-card { display: none; }
.home2 .home2-map.is-expandable:not(.is-listed) .home2-map__pin > span { display: none; }
.home2-map.is-expandable .home2-map__pin { cursor: pointer; }
/* Chip: photo, name and street beside the pin, on the side --side prefers (1 east, -1 west).
   home2.js flips a chip that would leave the column or touch another chip or pin (.is-flipped)
   and lines them all up under the map when they cannot fit (.is-listed, e.g. enlarged text). */
.home2-map__chips { position: relative; z-index: 2; grid-area: 1 / 1; height: var(--map-h); pointer-events: none; }
.home2-map__chips[hidden] { display: none; }
.home2 .home2-map__chip {
  --dir: calc(var(--side, 1) * var(--flip, 1));
  position: absolute;
  left: calc(var(--map-ox) + var(--map-w) * var(--x) / 100);
  top: calc(var(--map-oy) + var(--map-w) / var(--map-ratio) * var(--y) / 100);
  display: grid;
  grid-template-columns: auto auto auto;
  align-items: center;
  column-gap: 12px;
  width: max-content;
  min-height: 44px;
  margin: 0;
  padding: 6px 14px 6px 6px;
  border: 0;
  border-radius: 16px;
  background: rgb(255 255 255 / .94);
  box-shadow: 0 1px 2px rgb(20 18 16 / .06), 0 12px 28px -12px rgb(20 18 16 / calc(.3 + var(--on, 0) * .18));
  color: var(--h2-ink);
  text-align: left;
  white-space: nowrap;
  cursor: pointer;
  pointer-events: auto;
  transform: translate(calc(var(--dir) * 14px + min(var(--dir), 0) * 100%), -50%);
}
.home2-map__chip.is-flipped { --flip: -1; }
.home2-map__chip > img { grid-row: 1 / span 2; width: 44px; max-width: none; height: 44px; border-radius: 11px; background: var(--h2-porcelain-deep); object-fit: cover; }
.home2-map__chip[data-chip="freeport"] > img { object-position: 30% 50%; }
.home2-map__chip[data-chip="roslyn"] > img { object-position: 72% 50%; }
.home2-map__chip-name { grid-column: 2; align-self: end; font: 600 .9375rem/1.25 var(--h2-font-text); letter-spacing: -.012em; }
.home2-map__chip-street { grid-column: 2; align-self: start; color: var(--h2-graphite); font: 400 .8125rem/1.35 var(--h2-font-text); letter-spacing: 0; }
.home2-map__chip::after {
  content: "";
  grid-column: 3;
  grid-row: 1 / span 2;
  width: 7px;
  height: 12px;
  margin-left: 2px;
  background-color: var(--h2-graphite);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 14' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m1.5 1.5 5 5.5-5 5.5'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 14' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m1.5 1.5 5 5.5-5 5.5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.home2 .home2-map.is-listed .home2-map__chips { grid-area: 2 / 1; display: flex; flex-wrap: wrap; gap: 12px; width: var(--h2-content); height: auto; margin: 24px auto 0; }
.home2 .home2-map.is-listed .home2-map__chip { position: static; transform: none; }
@media (min-width: 735px) {
  .home2-map [data-chip="bellerose"] { --side: -1; }
}
@media (min-width: 64em) {
  .home2 .home2-map__chip { column-gap: 14px; padding: 7px 16px 7px 7px; border-radius: 18px; }
  .home2-map__chip > img { width: 52px; height: 52px; border-radius: 12px; }
  .home2-map__chip-name { font-size: 1rem; }
  .home2-map__chip-street { font-size: .875rem; }
}
@media (max-width: 734px) {
  .home2-map [data-chip="freeport"] { --side: -1; }
  .home2 .home2-map__chip { column-gap: 10px; padding: 5px 12px 5px 5px; border-radius: 14px; }
  .home2-map__chip > img { width: 36px; height: 36px; border-radius: 9px; }
  .home2-map__chip-name { grid-row: 1 / span 2; align-self: center; }
  .home2-map__chip-street { display: none; }
}

/* ---------- #locations: the office sheet (the card a chip opens) ---------- */
/* A transparent stage over the window: the office's own card is the one surface. home2.js moves
   the card into the frame, zooms it from its chip and back, and moves it home on close. The page
   behind is dimmed, blurred and does not scroll. */
.home2 .home2-office-sheet { width: 100%; max-width: none; height: 100%; max-height: none; margin: 0; padding: 32px; overflow: auto; overscroll-behavior: contain; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.home2 .home2-office-sheet[open] { display: flex; flex-direction: column; }
.home2 .home2-office-sheet::backdrop { background: rgb(20 18 16 / .3); -webkit-backdrop-filter: blur(16px) saturate(1.1); backdrop-filter: blur(16px) saturate(1.1); opacity: 0; }
.home2 .home2-office-sheet.is-open::backdrop { opacity: 1; }
html:has(.home2-office-sheet[open]) { overflow: hidden; scrollbar-gutter: stable; }
.home2 .home2-office-sheet__frame { position: relative; display: block; width: min(34rem, 100%); margin: auto; }
.home2 .home2-office-sheet .office-card { gap: 0; padding-bottom: 32px; box-shadow: 0 2px 8px rgb(20 18 16 / .08), 0 48px 96px -32px rgb(20 18 16 / .5); }
.home2 .home2-office-sheet .office-card > .office-card__media { aspect-ratio: 4 / 3; margin-bottom: 28px; }
.home2 .home2-office-sheet .office-card > :not(.office-card__media) { margin-inline: 36px; }
.home2 .home2-office-sheet .office-card > h3 { margin: 0 0 12px; font-size: clamp(1.75rem, 1.5rem + .75vw, 2.25rem); letter-spacing: var(--h2-ls-tile); }
.home2 .home2-office-sheet .office-card__actions { padding-top: 24px; }
.home2 .home2-office-sheet .office-card__actions :is(.button, .text-link) { margin: 0; }
.home2 .home2-office-sheet__close { top: 14px; right: 14px; z-index: 1; background: rgb(255 255 255 / .86); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); box-shadow: 0 2px 10px rgb(20 18 16 / .18); }
/* Wide or landscape windows: the photo beside the details, like the chip it came from. */
@media (min-width: 64em), (min-width: 735px) and (orientation: landscape) {
  .home2 .home2-office-sheet__frame { width: min(58rem, 100%); }
  .home2 .home2-office-sheet .office-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: auto auto auto 1fr; padding: 0; }
  .home2 .home2-office-sheet .office-card > .office-card__media { grid-column: 1; grid-row: 1 / -1; aspect-ratio: auto; margin: 0; }
  .home2 .home2-office-sheet .office-card > :not(.office-card__media) { grid-column: 2; margin-inline: 44px; }
  .home2 .home2-office-sheet .office-card > h3 { margin-top: 52px; }
  .home2 .home2-office-sheet .office-card__actions { align-items: flex-start; gap: 4px; padding: 28px 0 44px; }
  .home2 .home2-office-sheet .office-card__actions .button { width: auto; }
}
/* Phones: a near-full-screen sheet; the photo takes the height the details leave. */
@media (max-width: 734px) {
  .home2 .home2-office-sheet { padding: max(24px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); }
  .home2 .home2-office-sheet__frame { flex: 1 0 auto; display: flex; flex-direction: column; width: 100%; margin: 0; }
  .home2 .home2-office-sheet .office-card:has(> .office-card__media) { flex: 1 0 auto; display: flex; flex-direction: column; padding: 0 0 20px; }
  .home2 .home2-office-sheet .office-card > .office-card__media { flex: 1 1 12rem; width: auto; height: auto; min-height: 12rem; aspect-ratio: auto; margin: 0 0 20px; border-radius: 0; }
  .home2 .home2-office-sheet .office-card > :not(.office-card__media) { margin-inline: 24px; }
  .home2 .home2-office-sheet .office-card:has(> .office-card__media) > h3 { align-self: auto; margin: 0 24px 8px; }
}

/* ---------- #urgent-help: continues the porcelain contact band ---------- */
/* A soft warm-taupe surface with no edge; the ink CTA is the only strong mark in it. */
.home2-urgent { padding-block: 0 var(--h2-section-y); }
.home2-urgent__tile {
  display: flex;
  align-items: center;
  gap: 16px 20px;
  padding: 20px 28px;
  border: 0;
  border-radius: var(--h2-radius-card);
  background: var(--h2-urgent);
  color: var(--h2-ink);
}
.home2-urgent__tile > i { flex: none; width: 20px; font-size: 20px; text-align: center; }
.home2-urgent__tile > p { flex: 1; min-width: 0; color: inherit; font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
.home2-urgent__tile strong { font-weight: 600; }
.home2 .home2-urgent__tile > .button { flex: none; }
@media (max-width: 734px) {
  .home2-urgent__tile { display: grid; grid-template-columns: 20px minmax(0, 1fr); align-items: start; padding: 24px; }
  .home2-urgent__tile > i { margin-top: 3px; }
  .home2 .home2-urgent__tile > .button { grid-column: 1 / -1; width: 100%; margin-top: 4px; }
}

/* ---------- #care: Apple-style photo tiles (round 4); layout and tiles live in home2-services.css ---------- */
/* One surface, no edge: kept here with the page-wide no-double-frames rules. */
.home2 .home2-bento .service-card { border: 0; }

/* ---------- #care-requests: the Second Opinion / Check Your Insurance pair ---------- */
.home2-pair-band { padding-block: 24px var(--h2-section-y); }
.home2 .home2-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--h2-gap); align-items: start; }
.home2 .home2-pair__card {
  display: grid;
  grid-template-rows: auto auto auto auto;
  row-gap: 16px;
  align-content: start;
  justify-items: start;
  min-width: 0;
  padding: 40px;
  border-radius: var(--h2-radius-tile);
  background: var(--h2-porcelain);
}
.home2 .home2-pair__card h2 { font-size: var(--h2-fs-tile); line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-tile); }
.home2 .home2-pair__card > p { max-width: 36ch; color: var(--h2-graphite); font-size: var(--h2-fs-lede); line-height: var(--h2-lh-text); letter-spacing: var(--h2-ls-lede); text-wrap: pretty; }
.home2 .home2-pair__card > .button { margin: 0; }
.home2 .home2-pair__card details { justify-self: stretch; margin-top: 8px; border-top: 1px solid var(--h2-hairline); }
.home2 .home2-pair__card summary { display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 56px; list-style: none; font-weight: 600; cursor: pointer; }
.home2 .home2-pair__card summary::-webkit-details-marker { display: none; }
.home2 .home2-pair__card summary > span { display: grid; place-items: center; flex: none; width: 32px; height: 32px; border-radius: 50%; background: var(--h2-porcelain-deep); font-size: 20px; font-weight: 400; line-height: 1; }
.home2 .home2-pair__card details[open] summary > span { rotate: 45deg; }
.home2 :is(.home2-pair__card, .faq__list) summary:focus-visible { border-radius: 8px; }
.home2 .home2-pair__card details > p { padding: 4px 0 8px; color: var(--h2-graphite); font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
/* Shared rows line up the headings, CTAs and disclosures across both cards; opening one
   disclosure only lengthens the last row, so neither CTA ever moves. */
@supports (grid-template-rows: subgrid) {
  @media (min-width: 735px) {
    .home2 .home2-pair { grid-template-rows: repeat(4, auto); row-gap: 16px; }
    .home2 .home2-pair__card { grid-row: span 4; grid-template-rows: subgrid; }
  }
}
@media (max-width: 734px) {
  .home2 .home2-pair { grid-template-columns: minmax(0, 1fr); }
  .home2 .home2-pair__card { padding: 28px; }
}

/* ---------- Shared type for the lower sections ---------- */
.home2 h2 :is(em, .home2-tone) { font-style: normal; color: var(--h2-graphite); }
.home2 :is(.journey__copy, .home2-faq__intro) h2 { font-size: var(--h2-fs-section); line-height: var(--h2-lh-display); letter-spacing: var(--h2-ls-section); text-wrap: balance; }
.home2 :is(.journey__copy, .home2-faq__intro) > p:not(.eyebrow) {
  max-width: 36ch;
  margin-top: 20px;
  color: var(--h2-graphite);
  font-size: var(--h2-fs-lede);
  line-height: var(--h2-lh-text);
  letter-spacing: var(--h2-ls-lede);
  text-wrap: pretty;
}

/* ---------- #all-on-x: the night band (brass only on the eyebrow and numerals; a porcelain pill) ---------- */
.home2-feature { padding-block: var(--h2-section-y-feature); background: radial-gradient(60% 45% at 50% 0%, var(--h2-glow), transparent 70%), var(--h2-night); color: var(--h2-night-text); text-align: center; }
.home2-feature > .home2-wrap { max-width: 980px; }
.home2 .home2-feature .eyebrow { color: var(--h2-brass-night); }
.home2-feature h2 { color: var(--h2-night-text); font-size: var(--h2-fs-headline); line-height: var(--h2-lh-display); letter-spacing: var(--h2-ls-headline); }
/* Line masks: the inner span stays inline-block in every state so the rise can animate. */
.home2-line { display: block; overflow: clip; padding-block-end: .12em; margin-block-end: -.12em; }
.home2-line > span { display: inline-block; }
.home2-line + .home2-line { color: var(--h2-night-text-2); }
.home2-feature__description { max-width: 60ch; margin: 32px auto 0; }
.home2-feature__description > p { color: var(--h2-night-text-2); font-size: var(--h2-fs-lede); line-height: var(--h2-lh-text); letter-spacing: var(--h2-ls-lede); text-wrap: pretty; }
.home2-feature__description > p + p { margin-top: 20px; }
.home2 .home2-feature__lede { font-size: var(--h2-fs-subhead); line-height: var(--h2-lh-title); }
.home2-highlight { color: var(--h2-night-text); font-weight: 500; }
.home2 .home2-feature__steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--h2-gap); margin-top: var(--h2-head-gap); padding: 0; list-style: none; text-align: left; }
.home2-feature__steps li { min-width: 0; padding: 32px; border-radius: var(--h2-radius-tile); background: var(--h2-night-tile); }
.home2-feature__steps span { display: block; margin-bottom: 40px; color: var(--h2-brass-night); font-size: var(--h2-fs-body); font-weight: 600; font-variant-numeric: tabular-nums; }
.home2-feature__steps h3 { margin-bottom: 10px; color: var(--h2-night-text); font-size: var(--h2-fs-card); line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-card); }
.home2-feature__steps p { color: var(--h2-night-text-2); font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
.home2-feature__actions { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 16px 28px; margin-top: 48px; }
.home2 .home2-feature .button:not(.button--outline) { background: var(--h2-porcelain); color: var(--h2-ink); }
.home2 .home2-feature .button:not(.button--outline):is(:hover, :active) { background: #ffffff; color: var(--h2-ink); }
.home2 .home2-feature .text-link { color: var(--h2-night-text); }
.home2 .home2-feature :focus-visible { outline-color: var(--h2-focus-dark); }
.home2 .home2-fine-print { max-width: 60ch; margin-top: 28px; color: var(--h2-night-text-2); font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
@media (max-width: 734px) {
  .home2 .home2-feature__steps { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .home2-feature__steps li { padding: 28px; }
  .home2-feature__steps span { margin-bottom: 20px; }
}

/* ---------- #experience: gallery ---------- */
/* Slides are one content column wide and a trailing spacer lets the last one reach the
   column edge too, so practice-gallery.js can make every photo current ("Photo 3 of 3"). */
.home2-experience { padding-bottom: var(--h2-section-y); }
.home2 .home2-gallery { --h2-slide: var(--h2-content); --h2-frame: 2 / 1; min-width: 0; }
.home2 .home2-gallery .practice-gallery__track {
  display: flex;
  gap: var(--h2-gap);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  padding: 4px 0 4px calc((100% - var(--h2-content)) / 2);
  scroll-padding-inline: calc((100% - var(--h2-content)) / 2);
  border-radius: 0;
  background: none;
  scrollbar-color: var(--h2-stone) transparent;
}
.home2 .home2-gallery .practice-gallery__track::after { content: ""; flex: 0 0 max(0px, calc(100% - var(--h2-slide) - var(--h2-gap))); }
/* Without JS the thin scrollbar stays as the cue. */
.home2 .home2-gallery[data-enhanced] .practice-gallery__track { scrollbar-width: none; }
.home2 .home2-gallery[data-enhanced] .practice-gallery__track::-webkit-scrollbar { display: none; }
.home2 :is(.home2-gallery .practice-gallery__track, .reviews-rail):focus-visible { outline-offset: -3px; }
.home2 .home2-gallery .practice-slide {
  position: relative;
  isolation: isolate;
  flex: 0 0 var(--h2-slide);
  min-width: 0;
  aspect-ratio: var(--h2-frame);
  margin: 0;
  overflow: hidden; overflow: clip;
  border-radius: var(--h2-radius-media);
  background: var(--h2-porcelain);
  color: var(--h2-ink);
  scroll-snap-align: start;
  scroll-snap-stop: always;
}
.home2 .home2-gallery .practice-slide__image { position: absolute; inset: 0; z-index: -1; overflow: hidden; background: #1b1917; }
.home2 .home2-gallery .practice-slide__image img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 55%; }
.home2 .home2-gallery figcaption { max-width: 26em; padding: clamp(24px, 3vw, 40px); }
.home2 .home2-gallery .practice-slide__office { margin-bottom: 10px; color: var(--h2-graphite); font-size: var(--h2-fs-small); font-weight: 600; line-height: 1.3; }
.home2 .home2-gallery figcaption h3 { margin-bottom: 12px; font-size: var(--h2-fs-tile); line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-tile); text-wrap: balance; }
.home2 .home2-gallery figcaption p:last-child { color: var(--h2-graphite); font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
/* Portraits sit beside their caption, so the chair, sign, door and steps stay visible. All three
   slides are portraits since round 4 (the landscape reception photo repeated the hero's sign). */
.home2 .home2-gallery .practice-slide--portrait { display: grid; grid-template-columns: 40% minmax(0, 1fr); align-items: end; }
.home2 .home2-gallery .practice-slide--portrait .practice-slide__image { position: relative; inset: auto; z-index: auto; height: 100%; }
.home2 .home2-gallery .practice-slide--exterior .practice-slide__image img { object-position: 50% 35%; }
.home2 .home2-gallery .practice-gallery__controls { display: flex; align-items: center; gap: 16px; width: var(--h2-content); margin: 24px auto 0; padding: 0; }
.home2 .practice-gallery__count { min-width: 7.5em; color: var(--h2-graphite); font-size: var(--h2-fs-small); font-variant-numeric: tabular-nums; }
.home2 .practice-gallery__arrows { display: flex; gap: 8px; }
.home2 .practice-gallery__arrows button {
  display: grid;
  place-items: center;
  min-width: 48px;
  min-height: 48px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--h2-porcelain-deep);
  color: var(--h2-ink);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.home2 .home2-gallery .why-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 32px; width: var(--h2-content); margin: 56px auto 0; }
.home2 .home2-gallery .why-grid article { padding: 24px 0 0; border: 0; border-top: 1px solid var(--h2-hairline); border-radius: 0; background: none; }
.home2 .home2-gallery .why-grid h3 { margin: 0 0 10px; font-size: 1.3125rem; line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-card); }
.home2 .home2-gallery .why-grid p { color: var(--h2-graphite); font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
@media (min-width: 735px) and (max-width: 1068px) {
  .home2 .home2-gallery { --h2-frame: 16 / 10; }
  .home2 .home2-gallery .practice-slide--portrait { grid-template-columns: 50% minmax(0, 1fr); }
}
@media (max-width: 734px) {
  .home2 .home2-gallery { --h2-slide: 84vw; }
  .home2 .home2-gallery .practice-slide { display: flex; flex-direction: column; align-items: stretch; aspect-ratio: auto; overflow: visible; border-radius: 0; background: none; }
  .home2 .home2-gallery .practice-slide__image { position: relative; inset: auto; z-index: auto; aspect-ratio: 4 / 5; border-radius: var(--h2-radius-media); }
  .home2 .practice-slide figcaption { position: static; max-width: none; padding: 16px 4px 0; }
  .home2 [data-enhanced] .practice-slide:not(.is-current) figcaption { opacity: 0; }
  .home2 .home2-gallery .why-grid { grid-template-columns: minmax(0, 1fr); margin-top: 40px; }
}

/* ---------- #reviews (renderer markup untouched; reviews.js is the only thing that moves on its own) ---------- */
.home2 .home2-reviews .reviews-cta { margin-top: 20px; }
.home2 .reviews-cta .review-arrow { width: 20px; height: 20px; }
.home2 .reviews-controls { display: flex; justify-content: flex-end; margin-bottom: 16px; }
.home2 .reviews-pause { min-height: 44px; padding: 10px 20px; border: 0; border-radius: var(--h2-radius-pill); background: var(--h2-porcelain-deep); color: var(--h2-ink); font: 500 var(--h2-fs-small)/1.2 var(--h2-font-text); cursor: pointer; }
.home2 .reviews-pause:hover { box-shadow: inset 0 0 0 1px var(--h2-stone); }
.home2 .reviews-pause:disabled { display: none; }
.home2 .reviews-rail { gap: var(--h2-gap); padding: 4px calc((100% - var(--h2-content)) / 2) 24px; scroll-padding-inline: calc((100% - var(--h2-content)) / 2); scrollbar-color: var(--h2-stone) transparent; }
.home2 .reviews-rail .review-card { flex: 0 0 380px; padding: 28px; border: 0; border-radius: var(--h2-radius-card); background: var(--h2-canvas); color: var(--h2-ink); }
.home2 .review-card__header { gap: 14px; margin-bottom: 20px; }
.home2 .review-card__avatar { width: 44px; height: 44px; background: var(--h2-porcelain-deep); color: var(--h2-ink); font-size: var(--h2-fs-small); font-weight: 600; }
.home2 .review-card__author { font: 600 var(--h2-fs-body)/1.35 var(--h2-font-text); letter-spacing: var(--h2-ls-body); }
.home2 .review-card__office { width: fit-content; margin-top: 6px; padding: 4px 10px; border-radius: var(--h2-radius-pill); background: var(--h2-porcelain); color: var(--h2-graphite); font-size: var(--h2-fs-small); line-height: 1.3; }
.home2 .review-card__stars { margin-bottom: 16px; color: var(--h2-ink); font-size: 17px; letter-spacing: 3px; }
.home2 .review-card__quote { margin: 0 0 20px; color: var(--h2-ink); font: 400 var(--h2-fs-lede)/var(--h2-lh-text) var(--h2-font-text); letter-spacing: var(--h2-ls-lede); }
.home2 :is(.review-card__date, .review-card__excerpt) { color: var(--h2-graphite); font-size: var(--h2-fs-small); }
.home2 .review-card__footer { border-top-color: var(--h2-hairline); }
.home2 .review-card__source { gap: 6px; color: var(--h2-ink); }
@media (min-width: 735px) and (max-width: 1068px) {
  .home2 .reviews-rail .review-card { flex-basis: 340px; }
}
@media (max-width: 734px) {
  .home2 .reviews-rail { gap: 12px; }
  .home2 .reviews-rail .review-card { flex-basis: 84vw; padding: 24px; }
}

/* #doctors: the round-4 editorial triptych lives in home2-doctors.css. */

/* ---------- #first-visit: a static story everywhere; pinned only on tall desktops (below) ---------- */
.home2 .journey,
.home2 .journey.journey-ready { height: auto; min-height: 0; margin: 0; padding-block: var(--h2-section-y); background: var(--h2-porcelain); }
.home2 .journey-ready .journey-sticky,
.home2 .journey-sticky {
  position: relative;
  top: auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: none;
  gap: 32px;
  width: var(--h2-content);
  height: auto;
  max-height: none;
  min-height: 0;
  margin-inline: auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
}
.home2 :is(.journey__copy, .journey__photos, .journey__control) { grid-column: 1; grid-row: auto; }
.home2 .journey__copy > .button { margin-top: 28px; }
.home2 .journey__photos { aspect-ratio: 16 / 10; height: auto; min-height: 0; border: 0; border-radius: var(--h2-radius-media); background: #1b1917; }
.home2 .journey__photos img { transform: none; scale: 1.04; }
.home2 .journey__photos img.is-active { scale: 1; }
/* Roslyn keeps its window light and the chair in the 4:5 frame. */
.home2 .journey__photos img[data-journey-image="1"] { object-position: 35% 50%; }
.home2 .journey__tabs { flex-direction: column; gap: 0; padding: 0; }
.home2 .journey__tabs::before,
.home2 .journey__tabs::after { display: none; }
.home2 .journey__tabs button {
  position: relative;
  flex: none;
  display: flex;
  align-items: center;
  min-height: 56px;
  padding: 10px 0 10px 22px;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--h2-graphite);
  font: 600 1.3125rem/1.3 var(--h2-font-text);
  letter-spacing: var(--h2-ls-card);
  text-align: left;
}
/* A 2px rail per step; outside the pinned story the active tab is simply filled. */
.home2 .journey__tabs button::before,
.home2 .journey__tabs button::after { content: ""; position: absolute; top: 8px; bottom: 8px; left: 0; width: 2px; border-radius: 2px; background: var(--h2-hairline); }
.home2 .journey__tabs button::after { background: var(--h2-ink); transform: scaleY(0); transform-origin: top; }
.home2 .journey__tabs button[aria-selected="true"] { background: none; color: var(--h2-ink); }
.home2 .journey__tabs button[aria-selected="true"]::after { transform: none; }
.home2 .journey__panels { min-height: calc(3 * var(--h2-lh-text)); padding-top: 16px; font-size: var(--h2-fs-lede); }
.home2 .journey__panels p { max-width: 36ch; color: var(--h2-graphite); font-size: inherit; line-height: var(--h2-lh-text); letter-spacing: var(--h2-ls-lede); }
@media (min-width: 1069px) {
  .home2 .journey-ready .journey-sticky,
  .home2 .journey-sticky { grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: auto auto; align-content: center; column-gap: 20px; row-gap: 40px; }
  .home2 .journey__copy { grid-column: 1 / 6; grid-row: 1; align-self: end; }
  .home2 .journey__control { grid-column: 1 / 6; grid-row: 2; align-self: start; }
  /* Sized from the column width, capped by the viewport so it fits the pinned stage. */
  .home2 .journey__photos { grid-column: 7 / -1; grid-row: 1 / 3; align-self: center; justify-self: end; width: min(100%, 576px, calc((100svh - 160px) * .8)); aspect-ratio: 4 / 5; }
}
@media (max-width: 734px) {
  .home2 .journey__photos { aspect-ratio: 4 / 5; }
}

/* ---------- #faq (the band layout and item cards live in home2-cta.css) ---------- */
.home2 .home2-faq__intro .text-link { margin-top: 12px; }
.home2 .faq__list { border-top: 1px solid var(--h2-hairline); }
.home2 .faq__list details { border-bottom: 1px solid var(--h2-hairline); }
.home2 .faq__list summary { gap: 24px; min-height: 72px; padding-block: 22px; font-size: var(--h2-fs-lede); font-weight: 600; line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-lede); }
.home2 .faq__list summary > span { display: grid; place-items: center; flex: none; width: 36px; height: 36px; border-radius: 50%; background: var(--h2-porcelain); font-size: 22px; font-weight: 400; line-height: 1; }
.home2 .faq__list details[open] summary > span { transform: none; rotate: 45deg; }
.home2 .faq__list details p { max-width: 60ch; padding: 0 0 28px; color: var(--h2-graphite); font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
.home2 .faq__list details p a { color: var(--h2-ink); text-decoration: underline; text-underline-offset: 3px; }

/* ---------- #visit: the detailed office cards with hours ---------- */
.home2 .office-card__hours { margin-block: 20px 4px; padding-top: 16px; border-top: 1px solid var(--h2-hairline); }
.home2 .office-card__hours h4 { color: var(--h2-graphite); font: 600 var(--h2-fs-small)/1.4 var(--h2-font-text); letter-spacing: 0; }
.home2 .office-card__hours ul { margin-top: 4px; line-height: 1.4; }
.home2 .office-card__hours li { padding: 10px 0; border-bottom: 1px solid var(--h2-hairline); color: var(--h2-graphite); font-size: var(--h2-fs-body); font-variant-numeric: tabular-nums; }
.home2 .office-card__hours li:last-child { border-bottom: 0; }
/* home2.js marks today's row only where that office lists hours; no text is added. */
.home2 .office-card__hours li.is-today { color: var(--h2-ink); font-weight: 600; }
/* One office per row until three columns fit the longest email and hour range on one line
   (87em, with some slack); hours beside the contacts from 60em, below them under that. */
@media (min-width: 735px) and (max-width: 86.99em) {
  .home2 .home2-visit-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (min-width: 735px) and (max-width: 59.99em) {
  .home2 .home2-visit-grid .office-card__actions { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 24px; }
  .home2 .home2-visit-grid .office-card__actions .button { width: auto; }
}
@media (min-width: 60em) and (max-width: 86.99em) {
  .home2 .home2-visit-grid .office-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: auto auto auto 1fr; padding: 32px 0; }
  .home2 .home2-visit-grid .office-card > * { grid-column: 1; grid-row: auto; }
  .home2 .home2-visit-grid .office-card > h3:first-child { margin-top: 0; }
  .home2 .home2-visit-grid .office-card__hours { grid-column: 2; grid-row: 1 / -1; margin-block: 0; padding: 0 0 0 28px; border-top: 0; border-left: 1px solid var(--h2-hairline); }
  .home2 .home2-visit-grid .office-card__actions { grid-row: 4; align-self: end; }
}

/* ---------- Form fields shared by the callback dialog and the CTA card (card overrides in home2-cta.css) ---------- */
.home2 :is(.office-select-label, .contact-form-field label) { display: block; margin-bottom: 8px; color: var(--h2-ink); font-size: var(--h2-fs-small); font-weight: 600; }
.home2 :is(.office-select, .contact-form-field input, .contact-form-field textarea) {
  min-height: 56px;
  padding: 14px 16px;
  border: 1px solid var(--h2-stone);
  border-radius: var(--h2-radius-field);
  background-color: var(--h2-canvas);
  color: var(--h2-ink);
  font: 400 var(--h2-fs-body)/1.4 var(--h2-font-text);
}
.home2 .office-select { appearance: none; padding-right: 48px; background: var(--h2-canvas) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23232323' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right 16px center / 18px no-repeat; }
/* Transparent outline keeps a ring in forced colours; elsewhere the border and halo show focus. */
.home2 :is(.office-select, .contact-form-field input, .contact-form-field textarea):focus-visible { outline: 2px solid transparent; border-color: var(--h2-ink); box-shadow: 0 0 0 1px var(--h2-ink), 0 0 0 5px rgb(35 35 35 / .08); }
.home2 .contact-form :user-invalid { border-color: var(--h2-error); }
.home2 .contact-form-consent input { width: 24px; height: 24px; accent-color: var(--h2-ink); }
.home2 :is(.contact-form > p, .contact-form-intro, .contact-form-consent, .contact-form-field p) { color: var(--h2-graphite); }
.home2 .contact-form button[type="submit"] { width: 100%; min-height: 52px; }

/* ---------- Footer (shared markup; porcelain band on the homepage only) ---------- */
.home2 .footer { margin: 0; padding: var(--h2-section-y) var(--h2-gutter) calc(120px + env(safe-area-inset-bottom, 0px)); border: 0; border-radius: 0; background: var(--h2-porcelain); color: var(--h2-ink); }
/* V1 "framed" inner outline: titan hides it for the footer only by source order; never draw it here. */
.home2 .framed::before { content: none; }
.home2 .footer :is(.footer__intro, .footer__primary, .footer__grid, .footer__offices, .footer__socials, .footer__legal) { border: 0; border-bottom: 1px solid var(--h2-hairline); border-radius: 0; }
.home2 .footer__intro { display: flex; flex-wrap: wrap; align-items: center; gap: 20px 32px; padding: 0 0 40px; }
.home2 .brand--footer { width: auto; padding: 0; border-radius: 0; background: none; align-self: center; }
.home2 .brand--footer img { width: auto; height: 48px; }
.home2 .footer__statement { margin-right: auto; font: 600 1.3125rem/1.3 var(--h2-font-text); letter-spacing: var(--h2-ls-card); }
.home2 .footer__intro > .button { display: inline-flex; }
.home2 .footer__primary { display: flex; flex-wrap: wrap; gap: 0 32px; padding: 20px 0; overflow: visible; }
.home2 .footer__primary a { min-height: 44px; padding: 0; border: 0; color: var(--h2-ink); font-size: var(--h2-fs-body); font-weight: 500; }
.home2 .footer__grid { grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, 1fr)); gap: 32px; padding: 40px 0; }
.home2 .footer__grid p { max-width: 40ch; }
.home2 .footer :is(.footer__grid h2, .footer__legal h2) { margin-bottom: 8px; color: var(--h2-ink); font: 600 var(--h2-fs-small)/1.5 var(--h2-font-text); letter-spacing: 0; }
.home2 .footer :is(.footer__grid p, .footer__bottom p, .footer__grid a, .footer__office a, .footer__legal-links a, .footer__privacy a) { color: var(--h2-graphite); font-size: var(--h2-fs-small); }
.home2 .footer__offices { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; padding: 40px 0; }
.home2 .footer__office + .footer__office { padding-top: 0; border-top: 0; }
.home2 .footer__office h3 { margin-bottom: 8px; font-size: var(--h2-fs-body); line-height: 1.4; letter-spacing: var(--h2-ls-body); }
.home2 .footer__socials { padding: 20px 0; }
.home2 .footer__socials a { color: var(--h2-ink); font-size: var(--h2-fs-small); }
.home2 .footer__legal { padding: 24px 0; }
.home2 .footer__bottom { padding: 20px 0 0; border: 0; border-radius: 0; }
.home2 .footer__bottom > a { margin-left: auto; color: var(--h2-ink); font-size: var(--h2-fs-small); font-weight: 500; }
.home2 .footer a:not(.button):hover { background: none; color: var(--h2-ink); text-decoration: underline; text-underline-offset: 4px; }
@media (max-width: 1068px) {
  .home2 .footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home2 .footer__offices { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .home2 .footer__grid > div:first-child { grid-column: 1 / -1; }
}
@media (max-width: 734px) {
  .home2 .footer__statement { flex-basis: 100%; }
  .home2 .footer__grid { gap: 24px 16px; }
  .home2 .footer__bottom > a { margin-left: 0; }
}

/* ---------- Dialogs (homepage.js and modules-ui.js keep their behaviour; the chat keeps its geometry) ---------- */
.home2 dialog { border: 0; border-radius: 28px; background: var(--h2-canvas); color: var(--h2-ink); box-shadow: var(--h2-shadow-float); }
.home2 dialog::backdrop { background: rgb(20 18 16 / .36); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.home2 :is(#office-dialog, #flow-offices) { width: min(760px, calc(100vw - 32px)); padding: 40px; }
.home2 #callback-dialog { width: min(560px, calc(100vw - 32px)); padding: 40px; }
.home2 dialog h2 { margin-bottom: 12px; padding-right: 48px; text-wrap: balance; font-size: clamp(1.5rem, 1.35rem + .75vw, 2rem); line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-card); }
.home2 dialog :is(h2 + p, [data-chat-choices] > p) { color: var(--h2-graphite); font-size: var(--h2-fs-body); line-height: var(--h2-lh-text); }
.home2 .dialog-close { top: 16px; right: 16px; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--h2-porcelain-deep); color: var(--h2-ink); font-size: 24px; line-height: 1; }
.home2 :is(.office-choices, .flow-office-grid) { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-top: 24px; }
.home2 :is(.office-choices, .flow-office-grid) article { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 0; padding: 20px; border: 0; border-radius: var(--h2-radius-card); background: var(--h2-porcelain); }
.home2 :is(.office-choices, .flow-office-grid) h3 { font-size: var(--h2-fs-card); line-height: var(--h2-lh-title); letter-spacing: var(--h2-ls-card); }
.home2 .office-choices p { color: var(--h2-graphite); font-size: var(--h2-fs-small); line-height: 1.5; }
.home2 .office-choices p a { text-decoration: underline; text-underline-offset: 3px; }
.home2 .office-choice__actions { display: flex; flex-direction: column; gap: 8px; margin-top: auto; padding-top: 8px; }
.home2 :is(.office-choice__actions, .flow-office-grid, .chat-office-choices) .button { width: 100%; margin: 0; }
@media (min-width: 735px) {
  .home2 .office-choices { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .home2 .office-choices article { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 24px; }
  .home2 .office-choice__actions { grid-area: 1 / 2 / 3; margin: 0; padding: 0; }
  .home2 .office-choice__actions .button { white-space: nowrap; }
}
@media (max-width: 734px) {
  .home2 :is(#office-dialog, #flow-offices, #callback-dialog) { padding: 24px; }
  .home2 :is(.office-choices, .flow-office-grid) { grid-template-columns: minmax(0, 1fr); gap: 12px; }
}

/* ---------- Motion (every animation and transition is gated here) ---------- */
@keyframes home2-pin-pulse { from { opacity: 0; scale: 1; } 15% { opacity: .9; } to { opacity: 0; scale: 3.4; } }
@media (prefers-reduced-motion: no-preference) {
  body.home2 .site-header { transition: box-shadow var(--h2-dur-ui) var(--h2-ease-emphasized); }
  .home2 .button { transition: background-color var(--h2-dur-ui) var(--h2-ease-standard), color var(--h2-dur-ui) var(--h2-ease-standard), box-shadow var(--h2-dur-ui) var(--h2-ease-standard), scale var(--h2-dur-press) var(--h2-ease-standard); }
  .home2 .button:active { scale: .98; }
  /* Titan animates the dock's min-height and padding; only colours and label opacity move here. */
  .home2 .quick-actions__items > a,
  .home2 .quick-actions__items > button { transition: background-color var(--h2-dur-ui) var(--h2-ease-standard), color var(--h2-dur-ui) var(--h2-ease-standard); }
  .home2 .quick-actions__items > * > span { transition: opacity 160ms var(--h2-ease-standard); }
  .has-dock-navigation .home2 #primary-navigation { transition: opacity var(--h2-dur-ui) var(--h2-ease-emphasized), translate var(--h2-dur-ui) var(--h2-ease-emphasized); }
  @starting-style {
    .has-dock-navigation .home2 #primary-navigation { opacity: 0; translate: 0 8px; }
  }
  .home2 .home2-rail-controls .round-button { transition: background-color var(--h2-dur-ui) var(--h2-ease-standard); }

  /* Reveals move translate and opacity; delays belong to those two properties only, so a
     later hover (scale) is never delayed. */
  .home2 .reveal { transition: opacity var(--h2-dur-reveal) var(--h2-ease-out), translate var(--h2-dur-rise) var(--h2-ease-out); }
  .js-motion .home2 .reveal:not(.is-visible) { opacity: 0; translate: 0 var(--h2-rise); transform: none; }
  .js-motion .home2 .home2-stagger.reveal:not(.is-visible) { opacity: 1; translate: none; }
  .js-motion .home2 .home2-stagger.reveal:not(.is-visible) > * { opacity: 0; translate: 0 var(--h2-rise); }
  .home2 .home2-stagger > * {
    transition:
      opacity var(--h2-dur-reveal) var(--h2-ease-out) calc(var(--i, 0) * var(--h2-stagger)),
      translate var(--h2-dur-rise) var(--h2-ease-out) calc(var(--i, 0) * var(--h2-stagger)),
      scale 300ms var(--h2-ease-hover),
      box-shadow 300ms var(--h2-ease-hover);
  }
  .home2 .home2-office-grid .office-card__media img { transition: scale var(--h2-dur-media) var(--h2-ease-media); }
  .js-motion .home2 .home2-office-grid.reveal:not(.is-visible) .office-card__media img { scale: var(--h2-media-scale); }

  /* #locations (about 1.6s, armed by home2.js on a fresh visit only): the map settles, then each
     office (.is-in) drops its pin, raises its chip and rings once, west to east (--step);
     .is-quick drops the delays. The cards are never hidden by the entrance. */
  .home2-map { --pace: 1; --pin-lead: 250ms; --pin-gap: 180ms; --ring-at: 700ms; }
  .home2-map.is-quick { --pace: 0; }
  .home2-motion .home2 .home2-map.is-armed:not(.is-entered) .home2-map__img { opacity: 0; scale: 1.06; }
  .home2-motion .home2 .home2-map.is-armed:not(.is-entered) .home2-map__label { opacity: 0; }
  .home2-motion .home2 .home2-map.is-armed .home2-map__pin:not(.is-in) { opacity: 0; translate: 0 -20px; scale: .6; }
  .home2-motion .home2 .home2-map.is-armed .home2-map__chip:not(.is-in) { opacity: 0; translate: 0 10px; }
  .home2-map__pin::before,
  .home2-map__pin::after { transition: scale var(--h2-dur-ui) var(--h2-ease-standard), opacity var(--h2-dur-ui) var(--h2-ease-standard); }
  .home2 .home2-map__chip { transition: box-shadow 300ms var(--h2-ease-hover), scale var(--h2-dur-press) var(--h2-ease-standard); }
  .home2 .home2-map__chip:active { scale: .97; }
  .home2-map.is-entered .home2-map__img { transition: opacity 1200ms var(--h2-ease-out), scale 1200ms var(--h2-ease-out); }
  .home2-map.is-entered .home2-map__label { transition: opacity 700ms var(--h2-ease-standard) calc(var(--pace) * 450ms); }
  .home2-map.is-entered .home2-map__pin.is-in {
    --wait: calc(var(--pace) * (var(--pin-lead) + var(--step) * var(--pin-gap)));
    transition: opacity 300ms var(--h2-ease-out) var(--wait), translate 560ms cubic-bezier(.34, 1.3, .64, 1) var(--wait), scale 560ms cubic-bezier(.34, 1.3, .64, 1) var(--wait);
  }
  .home2-map.is-entered .home2-map__pin.is-in::after { animation: home2-pin-pulse 1000ms var(--h2-ease-out) calc(var(--pace) * (var(--ring-at) + var(--step) * var(--pin-gap))) backwards; }
  .home2 .home2-map.is-entered .home2-map__chip.is-in {
    --wait: calc(var(--pace) * (var(--pin-lead) + 220ms + var(--step) * var(--pin-gap)));
    transition: opacity 420ms var(--h2-ease-out) var(--wait), translate 640ms var(--h2-ease-out) var(--wait), box-shadow 300ms var(--h2-ease-hover), scale var(--h2-dur-press) var(--h2-ease-standard);
  }
  /* The office sheet: home2.js zooms the frame (transform/opacity); the backdrop fades in with it
     and out a little faster. The shared dialog fade does not apply here. */
  .home2 .home2-office-sheet[open] { transition-property: none; }
  .home2 .home2-office-sheet::backdrop { transition: opacity 360ms var(--h2-ease-standard); }
  .home2 .home2-office-sheet.is-open::backdrop { transition: opacity 520ms var(--h2-ease-out); }

  .home2 :is(.home2-pair__card, .faq__list) summary > span { transition: rotate var(--h2-dur-ui) var(--h2-ease-standard), background-color var(--h2-dur-ui) var(--h2-ease-standard); }

  /* All-on-X: the intro block stays put; its copy fades in and each line rises out of its mask. */
  .js-motion .home2 .home2-feature__intro.reveal:not(.is-visible) { opacity: 1; translate: none; }
  .js-motion .home2 .home2-feature__intro.reveal:not(.is-visible) > :not(h2) { opacity: 0; translate: 0 var(--h2-rise); }
  .js-motion .home2 .home2-feature__intro.reveal:not(.is-visible) .home2-line > span { transform: translateY(105%); }
  .home2 .home2-feature__intro > :not(h2) { transition: opacity var(--h2-dur-reveal) var(--h2-ease-out) 240ms, translate var(--h2-dur-rise) var(--h2-ease-out) 240ms; }
  .home2-line > span { transition: transform var(--h2-dur-reveal) var(--h2-ease-out); }
  .home2-line + .home2-line > span { transition-delay: 120ms; }
  /* Media reveals: the frame is visible at once and only the photo settles. */
  .js-motion .home2 .home2-reveal-media.reveal:not(.is-visible) { opacity: 1; translate: none; }
  .js-motion .home2 .home2-reveal-media.reveal:not(.is-visible) img { scale: var(--h2-media-scale); }
  .home2 :is(.home2-reveal-media, .journey__photos) img { transition: opacity 600ms var(--h2-ease-standard), scale var(--h2-dur-media) var(--h2-ease-media); }
  .home2 .journey__tabs button { transition: color var(--h2-dur-ui) var(--h2-ease-standard); }
  .home2 .journey__tabs button::after { transition: transform var(--h2-dur-ui) var(--h2-ease-standard); }
  .home2 :is(.reviews-pause, .practice-gallery__arrows button, .dialog-close) { transition: background-color var(--h2-dur-ui) var(--h2-ease-standard), box-shadow var(--h2-dur-ui) var(--h2-ease-standard); }
  .home2 dialog[open] { transition: opacity var(--h2-dur-ui) var(--h2-ease-out), scale var(--h2-dur-ui) var(--h2-ease-out); }
  @starting-style {
    .home2 dialog[open] { opacity: 0; scale: .96; }
  }
}
@media (max-width: 734px) and (prefers-reduced-motion: no-preference) {
  .home2 .practice-slide figcaption { transition: opacity var(--h2-dur-fade) var(--h2-ease-standard); }
}
/* Pinned story (1.6 viewports), tall desktops with motion only (1069 × 800 at default text; em,
   so enlarged browser text keeps the static story instead of a stage taller than the window). */
@media (min-width: 66.8125em) and (min-height: 50em) and (prefers-reduced-motion: no-preference) {
  .home2 #first-visit.journey-ready { height: 260svh; padding-block: 0; }
  .home2 #first-visit.journey-ready .journey-sticky {
    position: sticky;
    top: var(--header-content-height, calc(var(--header-height) + env(safe-area-inset-top, 0px)));
    min-height: calc(100svh - var(--header-content-height, calc(var(--header-height) + env(safe-area-inset-top, 0px))));
    padding-block: 32px;
  }
  .home2 #first-visit.journey-ready .journey__tabs button::after { transform: scaleY(clamp(0, calc(var(--journey-progress, 0) * 3 - var(--i)), 1)); }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .home2 .home2-office-grid .office-card:hover .office-card__media img { scale: 1.04; }
}
@supports (interpolate-size: allow-keywords) {
  @media (prefers-reduced-motion: no-preference) {
    .home2 :is(.home2-pair__card, .faq__list) details::details-content { block-size: 0; overflow: clip; transition: block-size 320ms var(--h2-ease-standard), content-visibility 320ms allow-discrete; }
    .home2 :is(.home2-pair__card, .faq__list) details[open]::details-content { block-size: auto; }
  }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .home2 .practice-gallery__track { scroll-behavior: auto; }
}

/* ---------- Glass fallbacks (after the chrome rules they replace) ---------- */
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  body.home2 .site-header,
  .home2 .quick-actions,
  .has-dock-navigation .home2 #primary-navigation { background-color: var(--h2-glass-solid); }
}
@media (prefers-reduced-transparency: reduce) {
  body.home2 .site-header,
  .home2 .quick-actions,
  .has-dock-navigation .home2 #primary-navigation { background-color: var(--h2-glass-solid); -webkit-backdrop-filter: none; backdrop-filter: none; }
}
@media (forced-colors: active) {
  body.home2 .site-header,
  .home2 .quick-actions,
  .has-dock-navigation .home2 #primary-navigation { background: Canvas !important; border: 1px solid CanvasText !important; -webkit-backdrop-filter: none; backdrop-filter: none; }
  .home2 .button { border: 1px solid ButtonText !important; }
  .home2 :is(.home2-map__chip, .home2-office-sheet .office-card) { border: 1px solid CanvasText; }
}
