/* Layout fixes for generator output: hero image without .scan frame, loose heading + paragraph sections, oversized rows */
.hero__grid > img.scan__base {
  position: relative;
  inset: auto;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-2);
}
.hero__title { font-size: clamp(2.5rem, 1rem + 3.6vw, 4.75rem); max-width: none; }

main > .section { padding-block: clamp(3.5rem, 2rem + 4vw, 6.5rem); }

/* heading on the left, copy on the right */
main .section:not(.cta) > .container:has(> h2 + p) {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  column-gap: clamp(2rem, 1rem + 4vw, 5rem);
  align-items: start;
}
main .section:not(.cta) > .container:has(> h2 + p) > h2 {
  grid-column: 1;
  grid-row: 1 / span 30;
  position: sticky;
  top: 7rem;
  margin: 0;
  font-size: clamp(2rem, 1.2rem + 2.4vw, 3.4rem);
  line-height: 1.08;
}
main .section:not(.cta) > .container:has(> h2 + p) > * { grid-column: 2; }
main .section:not(.cta) > .container:has(> h2 + p) > p { max-width: 44rem; margin: 0 0 1.1rem; }
main .section:not(.cta) > .container:has(> h2 + p) > p:first-of-type {
  font-size: clamp(1.125rem, 1rem + 0.4vw, 1.3rem);
  color: var(--fg);
}
.page-home .why, .page-home .area { background: var(--c-lilac, #f4f1ff); }

/* reviews + call-to-action: centred card */
.page-home .reviews .container, .page-home .cta .container { text-align: center; max-width: 52rem; }
.page-home .reviews .btn-row, .page-home .cta .btn-row { justify-content: center; }
.page-home .cta .container {
  padding: clamp(2rem, 1.5rem + 2vw, 3.5rem);
  border-radius: var(--r-xl, 2rem);
  background: var(--c-peach, #fff1e8);
}
.page-home .cta .container > p { margin-inline: auto; max-width: 40rem; }

/* locations: copy in two columns, area list as chips */
.loc__grid { display: block; }
.loc__copy {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
  gap: 1rem;
}
.loc__copy > h2, .loc__copy > .t-lead { grid-column: 1 / -1; margin: 0; }
.loc__copy > h2 { font-size: clamp(2rem, 1.2rem + 2.4vw, 3.4rem); }
.loc__copy > .t-lead { margin-bottom: 1rem; max-width: 48rem; }
.loc__copy > p.t-body {
  margin: 0;
  padding: 1.1rem 1.25rem;
  border-radius: var(--r-lg);
  background: var(--c-lilac, #f4f1ff);
  font-size: 0.975rem;
  line-height: 1.5;
}
.loc__grid > h3 { margin: 2.5rem 0 1rem; }
.loc__list { display: flex; flex-wrap: wrap; gap: 0.6rem; padding: 0; list-style: none; }
.loc__list > li { border: 0; padding: 0; }
.loc__list .loc__link {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.6rem 1.05rem;
  border-radius: var(--r-pill, 999px);
  background: var(--c-lilac, #f4f1ff);
  text-decoration: none;
  transition: background var(--dur-fast, 0.15s);
}
.loc__list .loc__link:hover { background: var(--c-peach, #fff1e8); }
.loc__list .loc__name { font-size: 1rem; font-weight: var(--fw-semibold, 600); line-height: 1.2; }
.loc__list .loc__link svg { width: 0.9rem; height: 0.9rem; flex: none; }

/* contact: details left, map right */
.contact__grid--solo { display: block; }
.contact__grid--solo .contact__info {
  width: 100%;
  max-width: none;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  column-gap: clamp(2rem, 1rem + 4vw, 5rem);
  align-items: start;
}
.contact__grid--solo .contact__info > :not(div) { grid-column: 1; }
.contact__grid--solo .contact__info > h2 { font-size: clamp(2rem, 1.2rem + 2.4vw, 3.4rem); line-height: 1.08; margin-bottom: 1rem; }
.contact__grid--solo .contact__info > div { grid-column: 2; grid-row: 1 / span 6; margin-top: 0 !important; }
.contact__grid--solo .contact__info iframe { height: 380px; border-radius: var(--r-lg); }

.page-home .area.section--flush-top { padding-top: clamp(3.5rem, 2rem + 4vw, 6.5rem); }

.svc:not(.svc--all) .svc-index__name { font-size: clamp(1.4rem, 1rem + 1.4vw, 2.25rem); }
.svc-index__link { padding-block: clamp(0.85rem, 0.7rem + 0.6vw, 1.3rem); }

@media (max-width: 899px) {
  main .section:not(.cta) > .container:has(> h2 + p) { grid-template-columns: minmax(0, 1fr); }
  main .section:not(.cta) > .container:has(> h2 + p) > h2 { grid-row: auto; position: static; margin-bottom: 1.25rem; }
  main .section:not(.cta) > .container:has(> h2 + p) > * { grid-column: 1; }
  .contact__grid--solo .contact__info { grid-template-columns: minmax(0, 1fr); }
  .contact__grid--solo .contact__info > div { grid-column: 1; grid-row: auto; margin-top: 1.5rem !important; }
}
