/* ============================================================
   Guardian Transmission Repair — site.css
   DC Design Export Contract v2.1 (Production R10)
   One site-wide stylesheet. All design values flow through
   canonical --dc-* tokens declared in :root below.

   EXTENSION TOKENS (documented per contract §11):
   Colors
   --dc-color-ink-2          dark-band hover / dividers on dark
   --dc-color-ink-3          borders on dark bands
   --dc-color-input-border   form input + outline-button borders
   --dc-color-gray           secondary text on dark backgrounds
   --dc-color-warm           lead paragraph tint on dark
   --dc-color-rose           paragraph tint on maroon CTA band
   --dc-color-fine           fine-print gray
   --dc-color-warn-bg        red-tinted warning callout background
   --dc-color-sev-minor / -moderate   severity table accents
   --dc-color-call-border    topbar mobile call-pill border
   --dc-color-scrim          hero photo scrim
   --dc-shadow-menu          dropdown menu shadow
   Type (approved design sizes outside the canonical scale)
   --dc-text-display         home hero H1 (52/36/36)
   --dc-text-post-h1         blog post H1 (40/32/28)
   --dc-text-cta-heading(-lg) CTA band headings (30 / 32)
   --dc-text-title-md        sub-section H2 (28/24)
   --dc-text-article-h2      long-form article H2 (26)
   --dc-text-heading-lg/-md  flagship card H3 (24) / post card H2 (22)
   --dc-text-form-heading    form card heading (20)
   --dc-text-stars           review star row (20)
   --dc-text-card-heading-lg city-card heading (18)
   --dc-text-h3-sm           compact card/FAQ/tick headings (16)
   --dc-text-body-lg         long-form article body + callouts (16)
   --dc-text-lead-lg         home hero lead (17)
   --dc-text-body-sm         compact supporting copy in cards (14)
   --dc-text-button-sm/-xs   compact button labels (13 / 12)
   --dc-text-nav             mobile nav item labels (15)
   --dc-text-fine            fine print / star meta / tiny eyebrows (11)
   --dc-text-micro           footer badge + brand tag (10)
   --dc-text-icon            hamburger glyph (26)
   --dc-text-logo/-sm/-tag   header/footer brand lockup (19/17/11)
   --dc-text-num-xl/-lg/-md/-sm  display numerals (52/40/26/22)
   Layout
   --dc-section-space-bottom section bottom padding (72/48)
   --dc-section-space-tight  tight section padding (56)
   --dc-font-weight-heavy    extra-bold headings (800)
   ============================================================ */

:root {
  /* Canonical colors */
  --dc-color-primary: #DA0B20;
  --dc-color-secondary: #93172E;
  --dc-color-dark: #2C2C2C;
  --dc-color-background: #F8F4F0;
  --dc-color-background-alt: #F1E8DF;
  --dc-color-surface: #FFFFFF;
  --dc-color-heading: #2C2C2C;
  --dc-color-body: #2C2C2C;
  --dc-color-muted: #5A5A5A;
  --dc-color-border: #E2DAD1;
  --dc-color-light: #F8F4F0;
  /* Extension colors */
  --dc-color-ink-2: #3A3A3A;
  --dc-color-ink-3: #4A4A4A;
  --dc-color-input-border: #C9C0B6;
  --dc-color-gray: #B5B5B5;
  --dc-color-warm: #D9D4CE;
  --dc-color-rose: #EBD9DC;
  --dc-color-fine: #8A8A8A;
  --dc-color-warn-bg: #FFF3F4;
  --dc-color-sev-minor: #1E7B34;
  --dc-color-sev-moderate: #B26A00;
  --dc-color-call-border: #6E6E6E;
  --dc-color-scrim: rgba(44, 44, 44, 0.72);
  --dc-shadow-menu: 0 14px 30px rgba(44, 44, 44, 0.16);

  /* Canonical fonts */
  --dc-font-heading: 'Albert Sans', sans-serif;
  --dc-font-body: 'Montserrat', sans-serif;
  --dc-font-heading-weight: 700;
  --dc-font-body-weight: 400;
  --dc-heading-line-height: 1.15;
  --dc-body-line-height: 1.8;
  --dc-font-weight-heavy: 800;

  /* Canonical layout */
  --dc-container-width: 1200px;
  --dc-content-width: 860px;
  --dc-page-gutter: 48px;
  --dc-section-space: 80px;
  --dc-section-space-bottom: 72px;
  --dc-section-space-tight: 56px;

  /* Canonical radii (square-cornered design) */
  --dc-radius-sm: 0px;
  --dc-radius-md: 0px;
  --dc-radius-lg: 0px;
  --dc-button-radius: 0px;

  /* Canonical responsive type scale */
  --dc-text-h1: 46px;
  --dc-text-h2: 34px;
  --dc-text-h3: 19px;
  --dc-text-card-heading: 17px;
  --dc-text-lead: 16px;
  --dc-text-body: 15px;
  --dc-text-button: 14px;
  --dc-text-small: 13px;
  --dc-text-eyebrow: 12px;
  --dc-text-meta: 12px;
  /* Extension type */
  --dc-text-display: 52px;
  --dc-text-post-h1: 40px;
  --dc-text-cta-heading: 30px;
  --dc-text-cta-heading-lg: 32px;
  --dc-text-title-md: 28px;
  --dc-text-article-h2: 26px;
  --dc-text-heading-lg: 24px;
  --dc-text-heading-md: 22px;
  --dc-text-form-heading: 20px;
  --dc-text-stars: 20px;
  --dc-text-card-heading-lg: 18px;
  --dc-text-h3-sm: 16px;
  --dc-text-body-lg: 16px;
  --dc-text-lead-lg: 17px;
  --dc-text-body-sm: 14px;
  --dc-text-button-sm: 13px;
  --dc-text-button-xs: 12px;
  --dc-text-nav: 15px;
  --dc-text-fine: 11px;
  --dc-text-micro: 10px;
  --dc-text-icon: 26px;
  --dc-text-logo: 19px;
  --dc-text-logo-sm: 17px;
  --dc-text-logo-tag: 11px;
  --dc-text-num-xl: 52px;
  --dc-text-num-lg: 40px;
  --dc-text-num-md: 26px;
  --dc-text-num-sm: 22px;
}

/* Responsive token values — canonical names stay the same */
@media (max-width: 920px) {
  :root {
    --dc-page-gutter: 20px;
    --dc-section-space: 56px;
    --dc-section-space-bottom: 48px;
    --dc-text-h1: 34px;
    --dc-text-h2: 28px;
    --dc-text-title-md: 24px;
    --dc-text-display: 36px;
    --dc-text-post-h1: 32px;
  }
}
@media (max-width: 480px) {
  :root {
    --dc-text-h1: 30px;
    --dc-text-post-h1: 28px;
  }
}

/* ---------- Base ---------- */
body {
  margin: 0;
  font-family: var(--dc-font-body);
  font-weight: var(--dc-font-body-weight);
  color: var(--dc-color-body);
  background: var(--dc-color-background);
}
a { color: var(--dc-color-secondary); }
a:hover { color: var(--dc-color-primary); }
h1, h2, h3 { font-family: var(--dc-font-heading); margin: 0; color: var(--dc-color-heading); }
.gt-band--dark h1, .gt-band--dark h2, .gt-band--dark h3,
.gt-hero h1, .gt-home-hero h1, .gt-post-hero h1, .gt-cta h2, .gt-step h2, .gt-step h3 { color: inherit; }

/* ---------- Layout primitives ---------- */
.gt-container { max-width: var(--dc-container-width); margin: 0 auto; padding-left: var(--dc-page-gutter); padding-right: var(--dc-page-gutter); }
.gt-section { padding-top: var(--dc-section-space); padding-bottom: var(--dc-section-space-bottom); }
.gt-section--tight { padding-top: var(--dc-section-space-tight); padding-bottom: var(--dc-section-space-tight); }
.gt-band--white { background: var(--dc-color-surface); border-top: 1px solid var(--dc-color-border); border-bottom: 1px solid var(--dc-color-border); }
.gt-band--sand { background: var(--dc-color-background-alt); border-top: 1px solid var(--dc-color-border); border-bottom: 1px solid var(--dc-color-border); }
.gt-band--dark { background: var(--dc-color-dark); color: var(--dc-color-light); }

/* ---------- Typography ---------- */
.gt-eyebrow { font-family: var(--dc-font-heading); font-size: var(--dc-text-eyebrow); font-weight: 700; letter-spacing: 0.18em; color: var(--dc-color-secondary); text-transform: uppercase; }
.gt-eyebrow--light { color: var(--dc-color-gray); }
.gt-eyebrow a { color: inherit; text-decoration: none; }

.gt-title-xl { font-size: var(--dc-text-h1); font-weight: var(--dc-font-weight-heavy); line-height: 1.1; text-wrap: balance; }
.gt-title-lg { font-size: var(--dc-text-h2); font-weight: var(--dc-font-heading-weight); line-height: var(--dc-heading-line-height); text-wrap: balance; }
.gt-title-md { font-size: var(--dc-text-title-md); font-weight: var(--dc-font-heading-weight); line-height: 1.2; }

.gt-lead { font-size: var(--dc-text-lead); line-height: 1.75; margin: 0; }
.gt-band--dark .gt-lead { color: var(--dc-color-warm); }
.gt-body { font-size: var(--dc-text-body); line-height: var(--dc-body-line-height); margin: 0; color: var(--dc-color-muted); }
.gt-small { font-size: var(--dc-text-small); line-height: 1.65; margin: 0; color: var(--dc-color-muted); }

/* ---------- Buttons ---------- */
.gt-btn {
  display: inline-block; padding: 15px 26px;
  font-family: var(--dc-font-body); font-size: var(--dc-text-button); font-weight: 700; letter-spacing: 0.05em;
  text-decoration: none; text-transform: uppercase; white-space: nowrap;
  border: none; border-radius: var(--dc-button-radius); cursor: pointer;
}
.gt-btn--red { background: var(--dc-color-primary); color: var(--dc-color-surface); }
.gt-btn--red:hover { background: var(--dc-color-secondary); color: var(--dc-color-surface); }
.gt-btn--ghost-light { color: var(--dc-color-light); border: 2px solid var(--dc-color-gray); padding: 13px 24px; background: transparent; }
.gt-btn--ghost-light:hover { color: var(--dc-color-light); border-color: var(--dc-color-light); }
.gt-btn--ghost-dark { color: var(--dc-color-dark); border: 2px solid var(--dc-color-dark); padding: 9px 18px; font-size: var(--dc-text-button-sm); background: transparent; }
.gt-btn--ghost-dark:hover { background: var(--dc-color-dark); color: var(--dc-color-light); }
.gt-btn--cream { background: var(--dc-color-background); color: var(--dc-color-secondary); }
.gt-btn--cream:hover { background: var(--dc-color-surface); color: var(--dc-color-secondary); }
.gt-btn--ghost-cream { color: var(--dc-color-light); border: 2px solid var(--dc-color-light); padding: 13px 24px; background: transparent; }
.gt-btn--ghost-cream:hover { background: var(--dc-color-primary); border-color: var(--dc-color-primary); color: var(--dc-color-light); }

.gt-link-more { color: var(--dc-color-secondary); font-size: var(--dc-text-button); font-weight: 700; text-decoration: none; border-bottom: 2px solid var(--dc-color-secondary); padding-bottom: 3px; }
.gt-link-more:hover { color: var(--dc-color-primary); }

.gt-btn-row { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }

@media (max-width: 920px) {
  .gt-title-xl { text-wrap: pretty; }
  .gt-title-lg { text-wrap: pretty; }
}
@media (max-width: 600px) {
  .gt-btn-row { flex-direction: column; align-items: stretch; }
  .gt-btn { display: block; text-align: center; white-space: normal; }
}

/* ---------- Page hero ---------- */
.gt-hero { background: var(--dc-color-dark); color: var(--dc-color-light); padding: 72px 0 64px; }
.gt-hero .gt-eyebrow { color: var(--dc-color-gray); margin-bottom: 14px; }
.gt-hero h1 { margin-bottom: 18px; max-width: 24ch; }
.gt-hero .gt-lead { max-width: 74ch; margin-bottom: 26px; }

/* ---------- Section header ---------- */
.gt-section-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; margin-bottom: 36px; }
.gt-section-head .gt-eyebrow { margin-bottom: 10px; }
.gt-section-head .gt-link-more { flex-shrink: 0; }

/* ---------- Card grids ---------- */
.gt-cards { display: grid; gap: 20px; }
.gt-cards--2 { grid-template-columns: repeat(2, 1fr); }
.gt-cards--3 { grid-template-columns: repeat(3, 1fr); }
.gt-cards--4 { grid-template-columns: repeat(4, 1fr); }

.gt-card {
  background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); border-radius: var(--dc-radius-md); padding: 26px 24px;
  text-decoration: none; color: var(--dc-color-body);
  display: flex; flex-direction: column; gap: 12px;
}
a.gt-card:hover { border-color: var(--dc-color-primary); color: var(--dc-color-body); }
.gt-card h2, .gt-card h3 { font-size: var(--dc-text-card-heading); font-weight: 700; }
.gt-card p { margin: 0; font-size: var(--dc-text-small); line-height: 1.65; color: var(--dc-color-muted); }
.gt-card ul { font-size: var(--dc-text-small); line-height: 1.7; margin: 0; color: var(--dc-color-muted); padding-left: 18px; }
.gt-card__icon { width: 44px; height: 44px; object-fit: contain; align-self: flex-start; }
.gt-card__more { font-size: var(--dc-text-button-xs); font-weight: 700; color: var(--dc-color-primary); letter-spacing: 0.05em; margin-top: auto; }
.gt-card--cream { background: var(--dc-color-background); }
.gt-card--dark { background: var(--dc-color-dark); border-color: var(--dc-color-dark); color: var(--dc-color-light); }
.gt-card--dark h3 { color: var(--dc-color-light); font-size: var(--dc-text-h3); }
.gt-card--dark p { color: var(--dc-color-gray); font-size: var(--dc-text-body-sm); line-height: 1.75; }
.gt-card--dark .gt-eyebrow { color: var(--dc-color-primary); margin-bottom: 10px; }
.gt-card--sand { background: var(--dc-color-background-alt); font-size: var(--dc-text-body-sm); line-height: 1.75; color: var(--dc-color-muted); }
.gt-card--accent h3 { color: var(--dc-color-primary); }
.gt-card--alert { border-top: 4px solid var(--dc-color-primary); }

.gt-card--row { flex-direction: row; justify-content: space-between; align-items: center; padding: 16px 20px; }
.gt-card--row .gt-card__name { font-weight: 600; font-size: var(--dc-text-body-sm); }
.gt-card--row .gt-card__meta { font-size: var(--dc-text-meta); color: var(--dc-color-muted); }
.gt-card--row .gt-card__meta--accent { color: var(--dc-color-secondary); font-weight: 700; }

.gt-card__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.gt-card__head h3 { font-size: var(--dc-text-card-heading-lg); margin: 0; }
.gt-card__head .gt-card__meta { font-size: var(--dc-text-meta); color: var(--dc-color-muted); }
.gt-card__head .gt-card__meta--accent { color: var(--dc-color-primary); font-weight: 700; }
.gt-card--dark .gt-card__head .gt-card__meta--accent { color: var(--dc-color-primary); }

/* ---------- Symptom quote cards ---------- */
.gt-symptoms { display: flex; flex-direction: column; gap: 12px; }
.gt-symptom { background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); padding: 16px 20px; font-size: var(--dc-text-body-sm); line-height: 1.6; }

/* ---------- Red-tick list ---------- */
.gt-ticks { display: flex; flex-direction: column; gap: 18px; }
.gt-tick { display: flex; gap: 16px; }
.gt-tick::before { content: ""; width: 4px; background: var(--dc-color-primary); flex-shrink: 0; }
.gt-tick h3 { font-size: var(--dc-text-h3-sm); font-weight: 700; margin-bottom: 4px; }
.gt-tick p { font-size: var(--dc-text-body-sm); line-height: 1.7; margin: 0; color: var(--dc-color-muted); }
.gt-ticks--compact { gap: 10px; font-size: var(--dc-text-body-sm); line-height: 1.65; }
.gt-ticks--muted .gt-tick::before { background: var(--dc-color-input-border); }

/* ---------- Severity label row ---------- */
.gt-label-row { display: flex; align-items: center; gap: 14px; margin-bottom: 22px; flex-wrap: wrap; }
.gt-label { background: var(--dc-color-primary); color: var(--dc-color-surface); font-family: var(--dc-font-heading); font-size: var(--dc-text-meta); font-weight: 700; letter-spacing: 0.1em; padding: 7px 14px; text-transform: uppercase; }
.gt-label--dark { background: var(--dc-color-dark); }

/* ---------- Numbered cards ---------- */
.gt-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.gt-step { border: 1px solid var(--dc-color-ink-3); border-radius: var(--dc-radius-md); padding: 30px 28px; }
.gt-step__num { font-family: var(--dc-font-heading); font-size: var(--dc-text-num-lg); font-weight: 800; color: var(--dc-color-primary); line-height: 1; }
.gt-step h2, .gt-step h3 { font-size: var(--dc-text-h3); font-weight: 700; margin: 16px 0 10px; }
.gt-step p { font-size: var(--dc-text-body-sm); line-height: 1.7; margin: 0; color: var(--dc-color-gray); }
.gt-steps--light .gt-step { background: var(--dc-color-surface); border-color: var(--dc-color-border); }
.gt-steps--light .gt-step p { color: var(--dc-color-muted); }

.gt-signs { display: flex; flex-direction: column; gap: 16px; }
.gt-sign { background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); padding: 22px 28px; display: flex; gap: 18px; align-items: baseline; }
.gt-sign__num { font-family: var(--dc-font-heading); font-size: var(--dc-text-num-sm); font-weight: 800; color: var(--dc-color-primary); }
.gt-sign--cream { background: var(--dc-color-background); }
.gt-sign p { font-size: var(--dc-text-body); line-height: 1.75; margin: 0; }

/* ---------- Callout ---------- */
.gt-callout { background: var(--dc-color-surface); border-left: 4px solid var(--dc-color-primary); padding: 24px 28px; }
.gt-callout p { font-size: var(--dc-text-body-lg); line-height: var(--dc-body-line-height); margin: 0; }

/* ---------- Testimonial quotes ---------- */
.gt-quote { background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); border-left: 4px solid var(--dc-color-primary); border-radius: var(--dc-radius-sm); padding: 22px 24px; margin: 0; }
.gt-quote p { font-size: var(--dc-text-body-sm); line-height: 1.7; margin: 0; font-style: italic; }
.gt-quote__who { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.gt-quote__avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--dc-color-dark); color: var(--dc-color-light); display: flex; align-items: center; justify-content: center; font-family: var(--dc-font-heading); font-weight: 700; font-size: var(--dc-text-body-sm); }
.gt-quote__avatar--maroon { background: var(--dc-color-secondary); }
.gt-quote__name { font-size: var(--dc-text-small); font-weight: 700; }
.gt-quote__stars { font-size: var(--dc-text-fine); color: var(--dc-color-primary); letter-spacing: 0.08em; }
.gt-quote--bare { background: transparent; border: none; border-left: 4px solid var(--dc-color-primary); padding: 4px 0 4px 24px; }
.gt-quote--bare p { font-size: var(--dc-text-body-lg); line-height: 1.75; margin-bottom: 10px; }
.gt-quote--plain { border-left: 1px solid var(--dc-color-border); }
.gt-quote .gt-quote__note { font-size: var(--dc-text-small); line-height: 1.65; color: var(--dc-color-muted); margin-top: 10px; font-style: normal; }

/* ---------- Rating summary card ---------- */
.gt-ratecard { background: var(--dc-color-background); color: var(--dc-color-body); border-radius: var(--dc-radius-lg); padding: 28px; display: flex; flex-direction: column; gap: 14px; }
.gt-ratecard__score { display: flex; align-items: baseline; gap: 12px; }
.gt-ratecard__num { font-family: var(--dc-font-heading); font-size: var(--dc-text-num-xl); font-weight: 800; color: var(--dc-color-secondary); line-height: 1; }
.gt-ratecard__stars { color: var(--dc-color-primary); font-size: var(--dc-text-stars); letter-spacing: 2px; }
.gt-ratecard__meta { font-size: var(--dc-text-small); color: var(--dc-color-muted); line-height: 1.6; }
.gt-ratecard__badges { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; font-size: var(--dc-text-meta); }
.gt-ratecard__badges span { background: var(--dc-color-background-alt); padding: 7px 12px; font-weight: 600; }
.gt-ratecard__fine { font-size: var(--dc-text-fine); color: var(--dc-color-fine); }

/* ---------- FAQ accordions ---------- */
.gt-faqs { display: flex; flex-direction: column; gap: 14px; }
.gt-faq { background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); border-radius: var(--dc-radius-sm); padding: 18px 22px; }
.gt-faq--cream { background: var(--dc-color-background); }
.gt-faq summary { font-family: var(--dc-font-heading); font-size: var(--dc-text-h3-sm); font-weight: 700; cursor: pointer; }
.gt-faq p { font-size: var(--dc-text-body-sm); line-height: 1.75; color: var(--dc-color-muted); margin: 12px 0 0; }

/* ---------- Two-column splits ---------- */
.gt-split { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; }
.gt-split--center { align-items: center; }
.gt-split--wide-right { grid-template-columns: 1fr 1.2fr; }
.gt-split--narrow-left { grid-template-columns: 0.9fr 1.4fr; }
.gt-split--wide-left { grid-template-columns: 1.2fr 1fr; }

/* ---------- Hero stat row ---------- */
.gt-hero__stats { display: flex; gap: 28px; margin-top: 18px; font-size: var(--dc-text-small); color: var(--dc-color-gray); flex-wrap: wrap; }
.gt-hero__stats strong { color: var(--dc-color-light); }

/* ---------- Spec list ---------- */
.gt-speclist { border: 1px solid var(--dc-color-border); display: flex; flex-direction: column; }
.gt-speclist__head { background: var(--dc-color-dark); color: var(--dc-color-light); padding: 16px 22px; font-family: var(--dc-font-heading); font-size: var(--dc-text-small); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.gt-speclist__body { background: var(--dc-color-surface); padding: 8px 22px 16px; display: flex; flex-direction: column; }
.gt-speclist__row { padding: 12px 0; border-bottom: 1px solid var(--dc-color-border); font-size: var(--dc-text-body-sm); line-height: 1.6; }
.gt-speclist__row:last-child { border-bottom: none; }

/* ---------- Vertical stack ---------- */
.gt-stack { display: flex; flex-direction: column; gap: 16px; }

/* ---------- CTA band ---------- */
.gt-cta { background: var(--dc-color-secondary); color: var(--dc-color-light); }
.gt-cta__inner { padding-top: 56px; padding-bottom: 56px; display: flex; justify-content: space-between; align-items: center; gap: 40px; flex-wrap: wrap; }
.gt-cta h2 { font-size: var(--dc-text-cta-heading); font-weight: 800; margin-bottom: 8px; }
.gt-cta p { font-size: var(--dc-text-body); line-height: 1.7; margin: 0; color: var(--dc-color-rose); max-width: 60ch; }
.gt-cta .gt-btn-row { flex-shrink: 0; flex-wrap: nowrap; }

/* ---------- Trust/logo bar ---------- */
.gt-trustbar { display: flex; justify-content: center; align-items: center; gap: 56px; padding: 24px var(--dc-page-gutter); flex-wrap: wrap; max-width: var(--dc-container-width); margin: 0 auto; }
.gt-trustbar img { height: 56px; width: auto; object-fit: contain; }
.gt-trustbar__tag { font-size: var(--dc-text-small); font-weight: 600; border-left: 2px solid var(--dc-color-input-border); padding-left: 24px; }
.gt-trustbar--boxed { background: var(--dc-color-background-alt); border: 1px solid var(--dc-color-border); padding: 32px; gap: 40px; }

/* ---------- Contact info rows ---------- */
.gt-inforows { display: flex; flex-direction: column; gap: 14px; font-size: var(--dc-text-body-sm); line-height: 1.7; }
.gt-inforow { display: flex; gap: 14px; }
.gt-inforow__label { color: var(--dc-color-primary); font-weight: 700; flex-shrink: 0; width: 80px; }
.gt-hero .gt-inforow a { color: var(--dc-color-light); font-weight: 600; text-decoration: none; }
.gt-hero .gt-inforow a:hover { text-decoration: underline; }

/* ---------- Forms ---------- */
.gt-form { background: var(--dc-color-background); color: var(--dc-color-body); border-radius: var(--dc-radius-lg); padding: 28px; display: flex; flex-direction: column; gap: 12px; }
.gt-form h2 { font-size: var(--dc-text-form-heading); font-weight: 700; }
.gt-form__hint { font-size: var(--dc-text-meta); line-height: 1.6; color: var(--dc-color-muted); margin: 0; }
.gt-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.gt-form input, .gt-form textarea, .gt-form select {
  border: 1px solid var(--dc-color-input-border); background: var(--dc-color-surface); border-radius: var(--dc-radius-sm);
  padding: 11px 12px; font-family: var(--dc-font-body); font-size: var(--dc-text-small); min-width: 0;
}
.gt-form .gt-btn { width: 100%; padding: 13px; font-size: var(--dc-text-button-sm); }
.gt-form__fine { font-size: var(--dc-text-fine); color: var(--dc-color-fine); margin: 0; text-align: center; }
/* Injected embeds: when WordPress swaps the reference form for a shortcode or a
   JS/iframe embed snippet, the injected content fills the shell cleanly. */
.gt-form iframe { width: 100%; border: 0; display: block; }
.gt-form > div[id], .gt-form > form { min-width: 0; max-width: 100%; }
/* QA-5: an injected booking widget (e.g. #hello-booking-root) must wrap its fields
   two-up like the reference form instead of stacking every field full-width, which
   made the hero as tall as the widget. Fields flow into as many 200px+ columns as the
   shell allows (two at desktop widths, one when narrow); headings, copy, textareas
   and the submit control always take the full row. */
.gt-form > div[id] form,
.gt-form > div[id]:not(:has(form)) > div:has(> input, > select, > textarea, > label, > fieldset) {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px 12px; align-items: start;
}
.gt-form > div[id] form > *,
.gt-form > div[id]:not(:has(form)) > div:has(> input, > select, > textarea, > label, > fieldset) > * { min-width: 0; max-width: 100%; }
.gt-form > div[id] form > :is(h1, h2, h3, h4, p, fieldset, textarea, button, [type="submit"], :has(> textarea), :has(> button), :has(> [type="submit"])),
.gt-form > div[id]:not(:has(form)) > div > :is(h1, h2, h3, h4, p, fieldset, textarea, button, [type="submit"], :has(> textarea), :has(> button), :has(> [type="submit"])) { grid-column: 1 / -1; }
.gt-form > div[id] label { display: block; font-size: var(--dc-text-fine); font-weight: 600; margin-bottom: 4px; }
.gt-form > div[id] input, .gt-form > div[id] select, .gt-form > div[id] textarea { width: 100%; }
.gt-form > div[id] textarea { min-height: 72px; resize: vertical; }
/* QA-5 (R12): the Hello Booking widget (#hello-booking, booking.js) renders inside an open
   Shadow DOM with inline styles, so nothing above can reach its internals. It brings its own
   white card (max 720px) and lays its symptom options out in a repeat(auto-fit, minmax(240px, 1fr))
   grid — it only stacks when the shell starves it of width. So for this widget the shell gets
   out of the way: no padding, no cream backdrop (the widget's card is the frame), and the full
   width the widget asks for (720px card + its own 12px wrapper padding). */
.gt-form:has(> #hello-booking) { padding: 0; background: transparent; border-radius: 0; gap: 0; }
.gt-form:has(> #hello-booking) > #hello-booking { width: 100%; max-width: 744px; margin: 0 auto; }
/* QA-5 (R13): /contact/ — a two-column split that carries the booking widget becomes a true
   50/50 on desktop, matching the home hero, instead of the 1.2fr/1fr "wide-left" ratio that
   squeezed the widget's symptom cards. Scoped above the 920px breakpoint so the mobile
   single-column collapse in the media query below is untouched. */
@media (min-width: 921px) {
  .gt-split:has(> .gt-form > #hello-booking) { grid-template-columns: 1fr 1fr; }
}

/* ---------- Responsive collapses ---------- */
@media (max-width: 920px) {
  .gt-cards--2, .gt-cards--3, .gt-cards--4 { grid-template-columns: 1fr; }
  .gt-split, .gt-split--wide-right, .gt-split--narrow-left, .gt-split--wide-left { grid-template-columns: 1fr; gap: 36px; }
  .gt-steps { grid-template-columns: 1fr; gap: 16px; }
  .gt-section-head { flex-direction: column; align-items: flex-start; gap: 12px; margin-bottom: 28px; }
  .gt-cta__inner { flex-direction: column; align-items: flex-start; gap: 24px; }
  .gt-cta .gt-btn-row { flex-wrap: wrap; flex-shrink: 1; width: 100%; }
  .gt-trustbar { gap: 28px; }
}
@media (max-width: 700px) {
  .gt-cards--4 { grid-template-columns: 1fr; }
  .gt-form__row { grid-template-columns: 1fr; }
}

/* ================== Header ================== */
.gt-header { font-family: var(--dc-font-body); position: sticky; top: 0; z-index: 100; border-bottom: 1px solid var(--dc-color-border); }

.gt-topbar { background: var(--dc-color-dark); color: var(--dc-color-light); font-size: var(--dc-text-small); display: flex; justify-content: space-between; align-items: center; padding: 8px 20px; gap: 8px 16px; }
.gt-topbar__group { display: flex; gap: 28px; align-items: center; flex-wrap: wrap; }
.gt-topbar__hours { letter-spacing: 0.02em; white-space: nowrap; }
.gt-topbar__muted { color: var(--dc-color-gray); }
.gt-topbar__phone { color: var(--dc-color-light); font-weight: 600; text-decoration: none; }
.gt-topbar__phone:hover { color: var(--dc-color-light); }
.gt-topbar__call { display: none; border: 1px solid var(--dc-color-call-border); color: var(--dc-color-light); font-weight: 700; text-decoration: none; padding: 5px 12px; font-size: var(--dc-text-meta); letter-spacing: 0.03em; white-space: nowrap; }
.gt-topbar__call:hover { color: var(--dc-color-light); border-color: var(--dc-color-gray); }

.gt-mainbar { background: var(--dc-color-background); display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 12px 20px; }

.gt-logo { display: flex; align-items: center; gap: 12px; text-decoration: none; flex-shrink: 0; }
.gt-logo img { height: 52px; width: auto; }
.gt-logo__text { font-family: var(--dc-font-heading); color: var(--dc-color-dark); line-height: 1.1; }
.gt-logo__name { display: block; font-weight: 700; font-size: var(--dc-text-logo); letter-spacing: 0.04em; }
.gt-logo__tag { display: block; font-weight: 500; font-size: var(--dc-text-logo-tag); letter-spacing: 0.14em; color: var(--dc-color-secondary); }

.gt-nav { display: flex; gap: 24px; align-items: center; font-size: var(--dc-text-button); font-weight: 600; }
.gt-nav__item { position: relative; }
.gt-nav__link { color: var(--dc-color-dark); text-decoration: none; display: flex; align-items: center; gap: 5px; padding: 14px 0; }
.gt-nav__link:hover { color: var(--dc-color-primary); }
.gt-nav__caret { font-size: var(--dc-text-micro); color: var(--dc-color-secondary); }

.gt-nav__menu {
  display: none; position: absolute; top: 100%; left: -18px; z-index: 80;
  background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); border-top: 3px solid var(--dc-color-primary); border-radius: var(--dc-radius-sm);
  box-shadow: var(--dc-shadow-menu);
  min-width: 262px; padding: 8px 0; flex-direction: column;
}
.gt-nav__menu--compact { min-width: 212px; }
.gt-nav__item:hover .gt-nav__menu, .gt-nav__item:focus-within .gt-nav__menu { display: flex; }
.gt-nav__menu a { color: var(--dc-color-dark); text-decoration: none; padding: 10px 20px; font-weight: 500; }
.gt-nav__menu a:hover { background: var(--dc-color-background); color: var(--dc-color-primary); }
.gt-nav__menu a.gt-nav__all { color: var(--dc-color-secondary); font-weight: 700; border-top: 1px solid var(--dc-color-border); margin-top: 6px; }

.gt-header__ctas { display: flex; gap: 12px; align-items: center; flex-shrink: 0; }
.gt-header__ctas .gt-btn--red { padding: 11px 20px; font-size: var(--dc-text-button-sm); }

.gt-burger { display: none; background: none; border: none; color: var(--dc-color-dark); font-size: var(--dc-text-icon); line-height: 1; padding: 9px; cursor: pointer; min-height: 44px; min-width: 44px; flex-shrink: 0; }

.gt-mobile-ctas { display: none; background: var(--dc-color-background); gap: 10px; padding: 0 20px 12px; }
.gt-mobile-ctas a { flex: 1; text-align: center; font-size: var(--dc-text-button-xs); font-weight: 700; text-decoration: none; letter-spacing: 0.04em; white-space: nowrap; }
.gt-mobile-ctas .gt-mobile-ctas__primary { background: var(--dc-color-primary); color: var(--dc-color-surface); padding: 11px 8px; }
.gt-mobile-ctas .gt-mobile-ctas__secondary { color: var(--dc-color-dark); border: 1px solid var(--dc-color-input-border); padding: 10px 8px; }

.gt-mobile-panel { display: none; background: var(--dc-color-background); border-bottom: 3px solid var(--dc-color-primary); font-size: var(--dc-text-nav); font-weight: 600; }
.gt-mobile-panel.is-open { display: block; }
.gt-mobile-panel__toggle {
  display: flex; justify-content: space-between; align-items: center; width: 100%;
  background: none; border: none; border-top: 1px solid var(--dc-color-border);
  color: var(--dc-color-dark); font: inherit; font-weight: 700; padding: 14px 24px;
  cursor: pointer; text-align: left; min-height: 48px;
}
.gt-mobile-panel__toggle .gt-nav__caret { font-size: var(--dc-text-fine); }
.gt-mobile-panel__sub { display: none; flex-direction: column; background: var(--dc-color-surface); padding: 4px 0; }
.gt-mobile-panel__sub.is-open { display: flex; }
.gt-mobile-panel__sub a { color: var(--dc-color-dark); text-decoration: none; padding: 12px 36px; font-weight: 500; }
.gt-mobile-panel__sub a.gt-nav__all { color: var(--dc-color-secondary); font-weight: 700; }
.gt-mobile-panel__link { display: block; color: var(--dc-color-dark); text-decoration: none; font-weight: 700; padding: 14px 24px; border-top: 1px solid var(--dc-color-border); }
.gt-mobile-panel__foot { display: flex; flex-direction: column; gap: 10px; padding: 16px 24px 20px; border-top: 1px solid var(--dc-color-border); }
.gt-mobile-panel__foot a { text-align: center; background: var(--dc-color-dark); color: var(--dc-color-light); padding: 13px; font-size: var(--dc-text-button-sm); font-weight: 700; text-decoration: none; letter-spacing: 0.04em; }

@media (max-width: 1179px) {
  .gt-nav, .gt-header__ctas { display: none; }
  .gt-topbar__address, .gt-topbar__tagline, .gt-topbar__phone { display: none; }
  .gt-topbar__call { display: inline-block; }
  .gt-burger { display: block; }
  .gt-mobile-ctas { display: flex; }
}

/* CSS-only mobile nav */
.gt-nav-toggle { position: absolute; opacity: 0; pointer-events: none; }
.gt-burger { cursor: pointer; }
.gt-burger__close { display: none; }
#gt-nav-toggle:checked ~ .gt-mainbar .gt-burger__open { display: none; }
#gt-nav-toggle:checked ~ .gt-mainbar .gt-burger__close { display: inline; }
#gt-nav-toggle:checked ~ .gt-mobile-panel { display: block; }
.gt-mobile-panel__group { border: 0; }
.gt-mobile-panel__group > summary { list-style: none; width: 100%; box-sizing: border-box; }
.gt-mobile-panel__group > summary::-webkit-details-marker { display: none; }
.gt-mobile-panel__group[open] > summary .gt-nav__caret { display: inline-block; transform: rotate(180deg); }
.gt-mobile-panel__group .gt-mobile-panel__sub { display: block; }

/* ================== Footer ================== */
.gt-footer { background: var(--dc-color-dark); color: var(--dc-color-light); font-family: var(--dc-font-body); }
.gt-footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 48px; padding: 56px 48px 40px; max-width: 1440px; margin: 0 auto; }

.gt-footer__brand { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.gt-footer__brand img { height: 44px; width: auto; }
.gt-footer__brand-text { font-family: var(--dc-font-heading); line-height: 1.1; }
.gt-footer__brand-name { display: block; font-weight: 700; font-size: var(--dc-text-logo-sm); letter-spacing: 0.04em; }
.gt-footer__brand-tag { display: block; font-weight: 500; font-size: var(--dc-text-micro); letter-spacing: 0.14em; color: var(--dc-color-gray); }
.gt-footer__blurb { font-size: var(--dc-text-small); line-height: 1.7; color: var(--dc-color-gray); margin: 0 0 16px; }
.gt-footer__contact { font-size: var(--dc-text-small); line-height: 1.9; }
.gt-footer__contact a { color: var(--dc-color-light); font-weight: 600; text-decoration: none; }
.gt-footer__hours { margin-top: 8px; color: var(--dc-color-gray); }

.gt-footer__heading { font-family: var(--dc-font-heading); font-size: var(--dc-text-eyebrow); font-weight: 700; letter-spacing: 0.14em; color: var(--dc-color-gray); margin: 0 0 16px; text-transform: uppercase; }
.gt-footer__links { display: flex; flex-direction: column; gap: 9px; font-size: var(--dc-text-small); }
.gt-footer__links a { color: var(--dc-color-light); text-decoration: none; }
.gt-footer__links a:hover { color: var(--dc-color-primary); }

.gt-footer__badges { margin-top: 24px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.gt-footer__badge { background: var(--dc-color-ink-2); color: var(--dc-color-gray); font-size: var(--dc-text-micro); font-weight: 700; letter-spacing: 0.1em; padding: 5px 10px; }

.gt-footer__legal { border-top: 1px solid var(--dc-color-ink-2); padding: 18px 48px; display: flex; justify-content: space-between; align-items: center; font-size: var(--dc-text-meta); color: var(--dc-color-gray); max-width: 1440px; margin: 0 auto; gap: 12px; flex-wrap: wrap; }
.gt-footer__legal-links { display: flex; gap: 20px; }
.gt-footer__legal a { color: var(--dc-color-gray); text-decoration: none; }
.gt-footer__legal a:hover { color: var(--dc-color-light); }

@media (max-width: 920px) {
  .gt-footer__grid { grid-template-columns: 1fr; gap: 36px; padding: 44px 20px 32px; }
  .gt-footer__legal { padding: 18px 20px; flex-direction: column; align-items: flex-start; }
}

/* ================== Home ================== */
.gt-home-hero { background: var(--dc-color-dark); color: var(--dc-color-light); display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; } /* QA-5: 50/50 split */
.gt-home-hero__copy { padding: 80px 64px 72px 48px; display: flex; flex-direction: column; justify-content: center; gap: 22px; }
.gt-home-hero__copy h1 { font-size: var(--dc-text-display); font-weight: 800; line-height: 1.08; text-wrap: balance; }
.gt-home-hero__copy .gt-lead { font-size: var(--dc-text-lead-lg); line-height: 1.7; max-width: 56ch; }

.gt-home-hero__stats { display: flex; gap: 28px; margin-top: 14px; font-size: var(--dc-text-small); color: var(--dc-color-gray); }
.gt-home-hero__stats strong { color: var(--dc-color-light); }

.gt-home-hero__media { position: relative; min-height: 480px; display: flex; align-items: center; justify-content: center; padding: 48px 40px; }
.gt-home-hero__media > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.gt-home-hero__scrim { position: absolute; inset: 0; background: var(--dc-color-scrim); }
.gt-home-hero__media .gt-form { position: relative; width: 100%; max-width: 560px; } /* QA-5: wide enough for two-up fields */
.gt-home-hero__media .gt-form:has(> #hello-booking) { max-width: 744px; } /* QA-5 (R12): widget needs ≥568px inner for two columns */

.gt-photo-stat { position: relative; }
.gt-photo-stat > img { width: 100%; height: 460px; object-fit: cover; }
.gt-photo-stat__chip { position: absolute; left: 24px; bottom: -24px; background: var(--dc-color-primary); color: var(--dc-color-surface); padding: 18px 22px; max-width: 280px; }
.gt-photo-stat__num { font-family: var(--dc-font-heading); font-size: var(--dc-text-num-md); font-weight: 800; line-height: 1; }
.gt-photo-stat__label { font-size: var(--dc-text-meta); font-weight: 600; letter-spacing: 0.05em; margin-top: 6px; }

.gt-flagship { grid-column: 1 / -1; background: var(--dc-color-dark); color: var(--dc-color-light); padding: 34px 32px; text-decoration: none; display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: center; }
.gt-flagship:hover { background: var(--dc-color-ink-2); color: var(--dc-color-light); }
.gt-flagship__eyebrow { font-family: var(--dc-font-heading); font-size: var(--dc-text-fine); font-weight: 700; letter-spacing: 0.16em; color: var(--dc-color-primary); margin-bottom: 8px; }
.gt-flagship h3 { font-size: var(--dc-text-heading-lg); font-weight: 700; margin-bottom: 10px; color: inherit; }
.gt-flagship p { font-size: var(--dc-text-body-sm); line-height: 1.7; margin: 0; color: var(--dc-color-gray); max-width: 70ch; }
.gt-flagship__btn { font-size: var(--dc-text-button); font-weight: 700; color: var(--dc-color-light); border: 2px solid var(--dc-color-gray); padding: 12px 20px; letter-spacing: 0.05em; }

.gt-reviews-strip { display: flex; gap: 16px; align-items: center; background: var(--dc-color-background-alt); padding: 16px 22px; }
.gt-reviews-strip__score { font-family: var(--dc-font-heading); font-size: var(--dc-text-heading-lg); font-weight: 800; color: var(--dc-color-secondary); }
.gt-reviews-strip__meta { font-size: var(--dc-text-small); line-height: 1.5; color: var(--dc-color-muted); }
.gt-reviews-strip a { margin-left: auto; color: var(--dc-color-secondary); font-size: var(--dc-text-small); font-weight: 700; text-decoration: none; }
.gt-reviews-strip a:hover { color: var(--dc-color-primary); }

@media (max-width: 920px) {
  .gt-home-hero { grid-template-columns: 1fr; }
  .gt-home-hero__copy { padding: 48px 20px 40px; }
  .gt-home-hero__copy h1 { text-wrap: pretty; }
  .gt-home-hero__media { min-height: 0; padding: 0 20px 40px; }
  .gt-home-hero__stats { flex-wrap: wrap; gap: 12px 24px; }
  .gt-flagship { grid-template-columns: 1fr; }
  .gt-photo-stat > img { height: 320px; }
}

/* ================== Post ================== */
.gt-post-hero { background: var(--dc-color-dark); color: var(--dc-color-light); padding: 56px 0; }
.gt-post-hero__inner { max-width: var(--dc-content-width); margin: 0 auto; padding: 0 var(--dc-page-gutter); display: flex; flex-direction: column; gap: 14px; }
.gt-post-hero h1 { font-size: var(--dc-text-post-h1); font-weight: 800; line-height: 1.15; text-wrap: balance; }
.gt-post-hero__byline { font-size: var(--dc-text-body); line-height: 1.7; color: var(--dc-color-warm); margin: 0; }

.gt-article { max-width: var(--dc-content-width); margin: 0 auto; padding: 56px var(--dc-page-gutter); display: flex; flex-direction: column; gap: 32px; }
.gt-article h2 { font-size: var(--dc-text-article-h2); font-weight: 800; }
.gt-article p { font-size: var(--dc-text-body-lg); line-height: var(--dc-body-line-height); margin: 0; }
.gt-article .gt-faq p, .gt-article .gt-sign p { font-size: var(--dc-text-body); }

.gt-postcards { display: flex; flex-direction: column; gap: 24px; }
.gt-postcard { background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); border-radius: var(--dc-radius-md); padding: 28px; }
.gt-postcard h2 { font-size: var(--dc-text-heading-md); font-weight: 800; margin: 0 0 10px; }
.gt-postcard p { font-size: var(--dc-text-body); line-height: var(--dc-body-line-height); margin: 0; }
.gt-postcard--maroon { background: var(--dc-color-secondary); border-color: var(--dc-color-secondary); color: var(--dc-color-light); }
.gt-postcard--maroon h2 { color: inherit; }
.gt-postcard--maroon p { color: var(--dc-color-rose); }
.gt-postcard--maroon a { color: var(--dc-color-light); }

.gt-table { background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); padding: 8px 28px; }
.gt-table__grid { display: grid; font-size: var(--dc-text-body-sm); }
.gt-table__h { font-family: var(--dc-font-heading); font-weight: 800; padding: 14px 0; border-bottom: 2px solid var(--dc-color-dark); }
.gt-table__c { padding: 14px 12px 14px 0; border-bottom: 1px solid var(--dc-color-border); line-height: 1.6; }
.gt-table__c--last { border-bottom: none; }
.gt-table__c--strong { font-weight: 600; }
.gt-sev--minor { color: var(--dc-color-sev-minor); font-weight: 600; }
.gt-sev--moderate { color: var(--dc-color-sev-moderate); font-weight: 600; }
.gt-sev--major { color: var(--dc-color-primary); font-weight: 600; }

.gt-numlist { background: var(--dc-color-surface); border: 1px solid var(--dc-color-border); padding: 12px 28px; display: grid; grid-template-columns: auto 1fr; gap: 0 18px; font-size: var(--dc-text-body); }
.gt-numlist__num { font-family: var(--dc-font-heading); font-weight: 800; color: var(--dc-color-primary); padding: 13px 0; border-bottom: 1px solid var(--dc-color-border); }
.gt-numlist__txt { padding: 13px 0; border-bottom: 1px solid var(--dc-color-border); line-height: 1.7; }
.gt-numlist__num--last, .gt-numlist__txt--last { border-bottom: none; }

.gt-callout--warn { background: var(--dc-color-warn-bg); border: 1px solid var(--dc-color-primary); border-left-width: 1px; padding: 22px 28px; }
.gt-callout--warn p { font-size: var(--dc-text-body); line-height: var(--dc-body-line-height); margin: 0; }

/* ================== Photo bands ================== */
.gt-photo-band { max-width: var(--dc-container-width); margin: 0 auto; padding: 44px 48px 0; }
.gt-photo-band figure { margin: 0; }
.gt-photo-band img { width: 100%; height: 380px; object-fit: cover; display: block; }
.gt-photo-band figcaption { font-size: var(--dc-text-meta); color: var(--dc-color-fine); margin-top: 10px; letter-spacing: 0.02em; }
.gt-photo-band--post { max-width: var(--dc-content-width); padding: 40px 48px 0; }
.gt-photo-band--post img { height: 340px; }
.gt-photo-duo { max-width: var(--dc-container-width); margin: 0 auto; padding: 0 48px 64px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.gt-photo-duo figure { margin: 0; }
.gt-photo-duo img { width: 100%; height: 300px; object-fit: cover; display: block; }
.gt-photo-duo figcaption { font-size: var(--dc-text-meta); color: var(--dc-color-fine); margin-top: 8px; }
@media (max-width: 920px) {
  .gt-photo-band, .gt-photo-band--post { padding-left: 20px; padding-right: 20px; }
  .gt-photo-band img { height: 260px; }
  .gt-photo-duo { grid-template-columns: 1fr; padding-left: 20px; padding-right: 20px; }
}

/* ================== Utilities ==================
   Replacements for former presentational inline styles.
   Spacing/measure adjustments approved in the design baseline. */
.u-m0 { margin: 0; }
.u-mb0 { margin-bottom: 0; }
.u-mb8 { margin-bottom: 8px; }
.u-mb10 { margin-bottom: 10px; }
.u-mb12 { margin-bottom: 12px; }
.u-mb14 { margin-bottom: 14px; }
.u-mb16 { margin-bottom: 16px; }
.u-mb18 { margin-bottom: 18px; }
.u-mb20 { margin-bottom: 20px; }
.u-mb24 { margin-bottom: 24px; }
.u-mb26 { margin-bottom: 26px; }
.u-mb28 { margin-bottom: 28px; }
.u-mt6 { margin-top: 6px; }
.u-mt14 { margin-top: 14px; }
.u-mt16 { margin-top: 16px; }
.u-mt18 { margin-top: 18px; }
.u-mt20 { margin-top: 20px; }
.u-mt22 { margin-top: 22px; }
.u-py56 { padding-top: 56px; padding-bottom: 56px; }
.u-py64 { padding-top: 64px; padding-bottom: 64px; }
.u-py72 { padding-top: 72px; padding-bottom: 72px; }
.u-pt64-pb24 { padding-top: 64px; padding-bottom: 24px; }
.u-pt64-pb32 { padding-top: 64px; padding-bottom: 32px; }
.u-pt48-pb24 { padding-top: 48px; padding-bottom: 24px; }
.u-pt48-pb64 { padding-top: 48px; padding-bottom: 64px; }
.u-pt8-pb64 { padding-top: 8px; padding-bottom: 64px; }
.u-pt44-pb0 { padding-top: 44px; padding-bottom: 0; }
.u-gap14 { gap: 14px; }
.u-gap48 { gap: 48px; }
.u-bt0 { border-top: none; }
.u-bold { font-weight: 700; }
.u-center-mb44 { text-align: center; margin-bottom: 44px; }
.u-center-mt36 { text-align: center; margin-top: 36px; }
.u-max900 { max-width: 900px; }
.u-max80ch { max-width: 80ch; }
.u-intro72 { max-width: 72ch; margin-bottom: 32px; }
.u-stack16 { display: flex; flex-direction: column; gap: 16px; }
.u-cols-a { grid-template-columns: 1.2fr 1fr 1.6fr; }
.u-cols-b { grid-template-columns: 1fr 1.4fr 1.4fr; }
.u-cols-c { grid-template-columns: 1fr 2fr; }
.u-cols-d { grid-template-columns: 1fr 2fr 1fr; }
.u-cols-e { grid-template-columns: 1.4fr 1fr; }
/* Type-role utilities (consume --dc-text-* tokens) */
.u-body-lg { font-size: var(--dc-text-body-lg); }
.u-body-sm { font-size: var(--dc-text-body-sm); line-height: 1.7; }
.u-body-sm-fs { font-size: var(--dc-text-body-sm); }
.u-body-sm-175 { font-size: var(--dc-text-body-sm); line-height: 1.75; }
.u-body-sm-mb24 { font-size: var(--dc-text-body-sm); margin-bottom: 24px; }
.u-body-sm-mb28 { font-size: var(--dc-text-body-sm); margin-bottom: 28px; }
.u-body-sm-mt14 { font-size: var(--dc-text-body-sm); margin-top: 14px; }
.u-body-sm-muted { font-size: var(--dc-text-body-sm); line-height: var(--dc-body-line-height); color: var(--dc-color-muted); }
.u-small-loose { font-size: var(--dc-text-small); line-height: 1.7; }
.u-small-note { font-size: var(--dc-text-small); line-height: 1.7; margin-top: 14px; }
.u-note-90ch { margin-top: 22px; max-width: 90ch; font-size: var(--dc-text-body-sm); }
.u-h3 { font-size: var(--dc-text-h3); }
.u-h3-bold { font-size: var(--dc-text-h3); font-weight: 700; }
.u-h3-lg { font-size: var(--dc-text-card-heading-lg); }
.u-h3-xl { font-size: var(--dc-text-heading-lg); font-weight: 700; margin-bottom: 10px; }
.u-h3-compact { font-size: var(--dc-text-h3-sm); }
.u-h2-article { font-size: var(--dc-text-article-h2); }
.u-h2-28 { font-size: var(--dc-text-title-md); }
.u-cta-h2-lg { font-size: var(--dc-text-cta-heading-lg); }
.u-legal-list { margin: 0; padding-left: 22px; font-size: var(--dc-text-body-lg); line-height: var(--dc-body-line-height); display: flex; flex-direction: column; gap: 6px; }
.u-badge-box { background: var(--dc-color-background-alt); border: 1px solid var(--dc-color-border); height: 300px; display: flex; align-items: center; justify-content: center; padding: 32px; }
.u-img-contain { height: auto; max-height: 100%; width: auto; max-width: 100%; }
