/* About — DESIGN.md §§8.2–8.4. Shared home recipes remain in home.css. */
.page-about .about-hero { position: relative; isolation: isolate; padding-block: 0; background: var(--hero-bg); }
.page-about .about-hero-photo { width: 100%; height: 14rem; object-fit: cover; object-position: 76% 48%; }
.page-about .about-hero-content { padding-block-start: 1.75rem; }
.page-about .about-hero .door-shell { --halo-gap: .8rem; position: relative; width: calc(100% - 1.5rem); margin-inline: auto; }
.page-about .about-hero .invitation-card { padding: 4rem 1.25rem 2.5rem; }
.page-about .about-hero .motif { color: var(--navy); }
.page-about .about-hero h1 { font-size: 2.75rem; }
.page-about .about-hero .hero-lede { max-width: 36ch; }
.page-about .about-hero .detail-rows { margin-block-start: 1.4rem; }
.page-about .about-hero .detail-rows > div { line-height: 1.5; padding-block: .65rem; }
.page-about .about-hero .hero-action { margin-block-start: 1.35rem; }
.page-about .about-story { padding-block: 4.5rem 2rem; }
.page-about .about-split { display: grid; gap: 2.5rem; align-items: center; }
.page-about .about-copy { min-width: 0; }
.page-about .about-copy > p { margin-block-start: 1.25rem; max-width: 42ch; color: var(--muted); font-size: 1.25rem; }
.page-about .about-photo { width: min(100%, 25rem); margin-inline: auto; }
.page-about .about-photo .arch-window { max-height: 27rem; }
.page-about .about-photo img { object-position: 50% 50%; animation: none; }
.page-about .about-identity { padding-block: 3rem 4.5rem; }
.page-about .about-identity-layout { display: grid; gap: 2.5rem; align-items: center; }
/* A 4rem inset preserves 25% clear space around the logo's maximum 16rem width. */
.page-about .about-logo-field { display: grid; place-items: center; padding: 4rem; border-radius: 999px 999px 0 0; background: var(--sand); }
.page-about .about-logo-field img { width: min(100%, 16rem); height: auto; }
.page-about .about-heritage { flex-wrap: wrap; row-gap: .75rem; }
.page-about .about-heritage span { flex: 1 1 8rem; min-width: min(100%, 8rem); max-width: 38ch; }
.page-about .about-purpose { padding-block: 4.5rem; background: var(--booking-bg); color: var(--booking-text); border-block: 1px solid var(--booking-rule); }
.page-about .about-purpose-layout { display: grid; gap: 2.5rem; }
.page-about .about-purpose article { border-block-start: 1px solid var(--booking-rule); padding-block-start: 1.5rem; }
.page-about .about-purpose h2 { font-size: 1.5rem; }
.page-about .about-purpose p { margin-block-start: 1rem; max-width: 38ch; font-size: 1.25rem; line-height: 1.8; }
.page-about .about-values { padding-block: 3rem 4.5rem; }
.page-about .about-values-list { margin-block-start: 2rem; border-block-start: 1px solid var(--rule); }
.page-about .about-values-list > div { display: grid; gap: .25rem; padding-block: 1.25rem; border-block-end: 1px solid var(--rule); }
.page-about .about-values-list dt { font-family: var(--font-display); font-size: 1.5rem; font-weight: 700; line-height: 1.35; }
.page-about .about-values-list dd { color: var(--muted); }
.page-about .about-values-photo img { object-position: 50% 50%; }
.page-about .footer-main nav a[aria-current] { text-decoration: underline; }
.page-about .detail-rows [data-wa] { display: inline-flex; align-items: center; min-height: 2.75rem; }
.page-about [data-wa-number] { direction: ltr; }
.page-about:lang(en) .about-hero h1 { font-size: 2rem; }
.page-about:lang(en) .about-purpose p { line-height: 1.65; }
.page-about:lang(en) .about-values-list dt { font-weight: 400; line-height: 1.1; }

@media (max-width: 47.99rem) {
  .page-about .about-hero .door-halo > span { border-color: var(--text); }
  /* Let enlarged text reflow the shared controls instead of pushing them off screen. */
  .page-about .header-inner { flex-wrap: wrap; }
  .page-about .header-actions { flex-wrap: wrap; max-width: 100%; }
}

@media (min-width: 48rem) {
  .page-about .about-hero { padding-block-start: 3rem; }
  .page-about .about-hero-photo { position: absolute; z-index: -1; inset: 0; height: 100%; object-position: 50% 50%; }
  .page-about .about-hero-content { padding-block-start: 0; }
  /* The wall's relief stays visible on the right; the paper stays physically left in both languages. */
  .page-about .about-hero .door-shell { width: min(62%, 32.5rem); margin-left: 0; margin-right: auto; }
  .page-about .about-hero .invitation-card { padding: 5.3rem 2rem 2.25rem; }
  .page-about .about-hero h1 { font-size: clamp(2.75rem, 4.4vw, 4rem); }
  .page-about .about-story { padding-block-start: 6rem; }
  .page-about .about-split { grid-template-columns: minmax(0, 1.2fr) minmax(0, .85fr); gap: clamp(3rem, 6vw, 6rem); }
  .page-about .about-photo { max-width: 25rem; }
  .page-about .about-photo .arch-window { max-height: none; }
  .page-about .about-identity { padding-block: 5rem 6rem; }
  .page-about .about-identity-layout { grid-template-columns: minmax(0, .85fr) minmax(0, 1.2fr); gap: clamp(3rem, 6vw, 6rem); }
  .page-about .about-purpose { padding-block: 6rem; }
  .page-about .about-purpose-layout { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(3rem, 6vw, 6rem); }
  .page-about .about-values { padding-block: 5rem 6rem; }
  .page-about .about-values-list > div { grid-template-columns: minmax(8rem, .7fr) minmax(0, 1.5fr); gap: 1.5rem; }
}

@media (min-width: 64rem) {
  .page-about .about-hero .door-shell { width: min(44%, 32.5rem); }
  .page-about:lang(en) .about-hero h1 { font-size: clamp(2.5rem, 4vw, 3.5rem); }
}

/* Services — editorial hero and open service blocks, DESIGN.md §§8.2–8.4.
   These mirror About's recipes without widening any About selector. */
.page-services .services-hero { position: relative; isolation: isolate; padding-block: 0; background: var(--hero-bg); }
.page-services .services-hero-photo { width: 100%; height: 14rem; object-fit: cover; object-position: 65% 50%; }
.page-services .services-hero-content { padding-block-start: 1.75rem; }
.page-services .services-hero .door-shell { --halo-gap: .8rem; position: relative; width: calc(100% - 1.5rem); margin-inline: auto; }
.page-services .services-hero .invitation-card { padding: 4rem 1.25rem 2.5rem; }
.page-services .services-hero .motif { color: var(--navy); }
.page-services .services-hero h1 { font-size: 2.75rem; }
.page-services .services-hero .hero-lede { max-width: 36ch; }
/* Match About's compact hero action using the shared padding, type and icon. */
.page-services .services-hero .invitation-card .hero-action { max-inline-size: 100%; min-block-size: 2.75rem; margin-block-start: 1.35rem; white-space: nowrap; }
.page-services .services-hero .hero-action span { min-inline-size: 0; }
/* Match About's phone sizing; the existing phone rule keeps this action hidden. */
@media (width < 48rem) {
  /* Use the same full-width action and spacing as About on phones. */
  .page-services .services-hero .invitation-card .hero-action { inline-size: 100%; margin-block-start: var(--ph-group-gap); padding-inline: .75rem; white-space: normal; }
}
/* Every card carries its audience tag, pinned to its top edge (live, 2026-10-28).
   Sand on clay passes only as large text, so the tag stays at 1.1875rem bold. */
.page-services .services-catalog .service-block { position: relative; }
.page-services .service-tag { position: absolute; inset-block-start: 0; inset-inline-start: 1.1rem; translate: 0 -50%; padding: .3rem 1rem; border-radius: 999px; background: var(--clay); color: var(--sand); font-size: 1.1875rem; font-weight: 700; line-height: 1.3; }
.page-services .promise-photo { display: none; }
.page-services .promise-motif { color: var(--clay); }
.page-services .services-catalog { padding-block: 1.75rem 4.5rem; }
.page-services .services-grid { grid-template-columns: minmax(0, 1fr); gap: 3rem; }
.page-services .service-block { padding-block: 2.5rem; border-block-end: 1px solid var(--rule); scroll-margin-block-start: 1rem; }
.page-services .service-block:first-of-type { padding-block-start: 0; }
/* The no-JS shell exposes two extra navigation rows inside the sticky header. */
.page-services:has(.fallback-nav) .service-block { scroll-margin-block-start: 14rem; }
.page-services .service-intro { display: grid; grid-template-columns: min(4.75rem, 24%) minmax(0, 1fr); gap: 1rem; align-items: center; }
.page-services .service-inline-photo { width: 100%; max-width: 4.75rem; height: 6.5rem; object-fit: cover; object-position: 50% 50%; border-radius: 999px 999px .5rem .5rem; }
.page-services .service-block h2 { font-size: clamp(2.2rem, 3.6vw, 3.25rem); overflow-wrap: anywhere; }
.page-services .service-body { margin-block-start: 1.25rem; max-width: 42ch; font-size: 1.25rem; color: var(--muted); }
.page-services .service-fit { max-width: 48ch; margin-block-start: 1.25rem; color: var(--muted); }
.page-services .service-fit strong { margin-inline-end: .5rem; font-weight: 700; color: var(--text); }
.page-services .service-inclusions { margin-block-start: 1.5rem; }
.page-services .service-inclusions h3 { font-size: 1.125rem; line-height: 1.5; }
.page-services .service-inclusions ul { margin-block-start: .6rem; padding-inline-start: 1.25rem; list-style: disc; color: var(--muted); }
.page-services .service-inclusions li { padding-inline-start: .2rem; }
.page-services .services-stage-column { display: none; }
.page-services .services-stage img { object-position: 50% 50%; animation: none; }
.page-services .services-stage img.is-active { opacity: 1; }
.page-services .services-promise { padding-block: 4.5rem; background: var(--booking-bg); color: var(--booking-text); border-block: 1px solid var(--booking-rule); }
.page-services .services-promise-layout { display: grid; gap: 2rem; }
.page-services .services-promise ul { border-block-start: 1px solid var(--booking-rule); }
.page-services .services-promise li { padding-block: 1rem; border-block-end: 1px solid var(--booking-rule); }
.page-services .footer-main nav a[aria-current] { text-decoration: underline; }
.page-services .detail-rows [data-wa] { display: inline-flex; align-items: center; min-height: 2.75rem; }
.page-services [data-wa-number] { direction: ltr; }
.page-services:lang(en) .services-hero h1 { font-size: 2rem; }
.page-services:lang(en) .service-inclusions h3 { font-family: var(--font-body); font-weight: 700; }

@media (max-width: 47.99rem) {
  .page-services .services-hero .door-halo > span { border-color: var(--text); }
  .page-services .header-inner { flex-wrap: wrap; }
  .page-services .header-actions { flex-wrap: wrap; max-width: 100%; }
}

@media (min-width: 48rem) {
  .page-services .services-hero { padding-block-start: 3rem; }
  .page-services .services-hero-photo { position: absolute; z-index: -1; inset: 0; height: 100%; object-position: 65% 50%; }
  .page-services .services-hero-content { padding-block-start: 0; }
  /* Physical left remains the clear wall side in both languages. */
  .page-services .services-hero .door-shell { width: min(62%, 32.5rem); margin-left: 0; margin-right: auto; }
  .page-services .services-hero .invitation-card { padding: 5.3rem 2rem 2.25rem; }
  .page-services .services-hero h1 { font-size: clamp(2.75rem, 4.4vw, 4rem); }
  .page-services .services-catalog { padding-block: 3rem 6rem; }
  .page-services .service-block { padding-block: 3rem; }
  .page-services .service-intro { grid-template-columns: 8rem minmax(0, 1fr); gap: 2rem; }
  .page-services .service-inline-photo { width: 8rem; max-width: none; height: 10rem; }
  .page-services .services-promise { padding-block: 6rem; }
  .page-services .services-promise-layout { grid-template-columns: minmax(0, .85fr) minmax(0, 1.3fr); gap: clamp(3rem, 6vw, 6rem); }
}

/* JS only promotes the inline baseline when the stage fits the viewport. */
@media (min-width: 64rem) and (min-height: 40rem) {
  .page-services.has-services-stage .services-catalog { padding-block-end: 8rem; }
  .page-services.has-services-stage .services-grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, .85fr); gap: clamp(3rem, 6vw, 6rem); }
  .page-services.has-services-stage .services-stage-column { display: block; align-self: stretch; margin-block-end: -8rem; }
  .page-services.has-services-stage .services-stage { position: sticky; top: calc(var(--header-height) + 1.5rem); aspect-ratio: 3 / 4; max-width: min(28rem, calc((100svh - var(--header-height) - 3rem) * .75)); }
  .page-services.has-services-stage .service-intro { display: block; }
  .page-services.has-services-stage .service-inline-photo { display: none; }
}

@media (min-width: 64rem) {
  .page-services .services-hero .door-shell { width: min(44%, 32.5rem); }
  .page-services:lang(en) .services-hero h1 { font-size: clamp(2.5rem, 4vw, 3.5rem); }
}

/* Inner-page phone standard — DESIGN.md §§5.1–5.2. The home never opts in.
   Keep these adaptations below 48rem; the tablet/desktop recipes above are fixed. */
@media (max-width: 47.99rem) {
  .page-inner {
    --ph-section-start: 1.25rem;
    --ph-section-end: 1.5rem;
    --ph-field-end: 4.5rem;
    --ph-head-gap: .5rem;
    --ph-intro-end: 1.85rem;
    --ph-group-gap: 1.25rem;
    --ph-row: .85rem;
    --ph-title-gap: .2rem;
    --ph-first-start: 2rem;
    --ph-band-start: 1.5rem;
    --ph-caption-start: .35rem;
    --ph-caption-gap: .75rem;
    --ph-logo-size: 11rem;
    --ph-short-leading: 1.4;
    --ph-description-leading: 1.4;
    --ph-long-leading: 1.6;
  }
  .page-inner:lang(en) {
    --ph-short-leading: 1.5;
    --ph-description-leading: 1.45;
    --ph-long-leading: 1.5;
  }

  /* The photo opens the page; the sand doorway keeps the home's proportions. */
  .page-inner :is(.about-hero-photo, .services-hero-photo) { height: 12rem; }
  .page-inner :is(.about-hero-content, .services-hero-content) { padding-block-start: var(--ph-row); }

  /* Story and identity share the page field; the purpose band changes it. */
  .page-inner .about-story { padding-block: var(--ph-first-start) var(--ph-section-end); }
  .page-inner .about-identity { padding-block: var(--ph-section-start) var(--ph-field-end); }
  .page-inner :is(.about-split, .about-identity-layout) { gap: var(--ph-intro-end); }
  .page-inner .about-photo { display: none; }
  .page-inner .about-copy > p { margin-block-start: var(--ph-head-gap); line-height: var(--ph-short-leading); }
  .page-inner .about-story .about-copy > p { line-height: var(--ph-long-leading); }
  /* A fixed quarter-width inset keeps at least 25% clear space on every side. */
  .page-inner .about-logo-field { width: calc(var(--ph-logo-size) * 1.5); max-width: 100%; justify-self: center; padding: calc(var(--ph-logo-size) / 4); }
  .page-inner .about-logo-field img { width: min(100%, var(--ph-logo-size)); }
  .page-inner .about-heritage { gap: var(--ph-caption-gap); margin-block-start: var(--ph-caption-start); }
  .page-inner .about-purpose { padding-block: var(--ph-band-start) var(--ph-field-end); }
  .page-inner .about-purpose-layout { gap: var(--ph-group-gap); }
  .page-inner .about-purpose article { padding-block-start: var(--ph-group-gap); }
  .page-inner .about-purpose h2 { font-size: 1.4rem; }
  .page-inner .about-purpose p { margin-block-start: var(--ph-head-gap); line-height: var(--ph-short-leading); }
  .page-inner:lang(en) .about-purpose p { line-height: var(--ph-short-leading); }
  .page-inner .about-values { padding-block: var(--ph-section-start) var(--ph-field-end); }
  .page-inner .about-values-list { margin-block-start: var(--ph-intro-end); }
  .page-inner .about-values-list > div { gap: var(--ph-title-gap); padding-block: var(--ph-row); }
  .page-inner .about-values-list dt { font-size: 1.25rem; }
  .page-inner .about-values-list dd { font-size: 1rem; line-height: var(--ph-description-leading); }

  /* Audience navigation sits close to the hero, ahead of the first body section. */
  .page-inner .services-catalog { padding-block: 1.75rem 1.5rem; }
  .page-inner .services-grid { gap: var(--ph-group-gap); }
  /* The two sides of each rule add up to about 1.5rem between services. */
  .page-inner .service-block { padding-block: .75rem; }
  .page-inner .service-block:first-of-type { padding-block-start: 0; }
  .page-inner .service-block:last-child { padding-block-end: 0; border-block-end: 0; }
  .page-inner .service-intro { grid-template-columns: 4.75rem minmax(0, 1fr); gap: var(--ph-caption-gap); }
  .page-inner .service-inline-photo { width: 4.75rem; height: 6rem; }
  .page-inner .service-block h2 { font-size: 1.6rem; }
  .page-inner .service-body { margin-block-start: var(--ph-head-gap); font-size: 1.125rem; line-height: var(--ph-long-leading); }
  .page-inner .service-fit { margin-block-start: var(--ph-head-gap); font-size: 1rem; line-height: var(--ph-short-leading); }
  .page-inner .service-fit strong { margin-inline-end: var(--ph-head-gap); }
  .page-inner .service-inclusions { margin-block-start: var(--ph-head-gap); }
  .page-inner .service-inclusions h3 { font-size: 1rem; line-height: var(--ph-short-leading); }
  .page-inner .service-inclusions ul { margin-block-start: var(--ph-title-gap); padding-inline-start: var(--ph-group-gap); font-size: 1rem; line-height: var(--ph-description-leading); }
  .page-inner .service-inclusions li { padding-inline-start: var(--ph-title-gap); }
  .page-inner .service-inclusions li + li { margin-block-start: var(--ph-title-gap); }
  .page-inner .services-promise { padding-block: var(--ph-band-start); }
  .page-inner .services-promise-layout { gap: var(--ph-intro-end); }
  .page-inner .services-promise li { padding-block: var(--ph-row); line-height: var(--ph-short-leading); }
}


/* Shared phone photo hero: opt in with .photo-hero, .photo-hero-picture and
   .photo-hero-content. The home keeps its own approved recipe. */
.photo-hero .photo-hero-picture {
  display: none;
}

@media (max-width: 47.99rem) {
  .page-inner .photo-hero {
    --photo-hero-ratio: 4 / 5;
    --photo-hero-cover: .4;
    --photo-hero-door: 81%;
    --photo-hero-height: calc(100vw / (var(--photo-hero-ratio)));
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    padding: 0;
    background: var(--sand);
  }

  .photo-hero .photo-hero-picture,
  .photo-hero .photo-hero-picture img {
    display: block;
    width: 100%;
    aspect-ratio: var(--photo-hero-ratio);
  }

  .photo-hero .photo-hero-picture img {
    height: auto;
    object-fit: cover;
    object-position: center;
  }

  .photo-hero .photo-hero-content {
    position: relative;
    z-index: 1;
    width: 100%;
    padding-block-start: 0;
    margin-block-start: calc(-1 * var(--photo-hero-height) * var(--photo-hero-cover));
  }

  .page-inner .photo-hero .door-shell {
    width: var(--photo-hero-door);
    margin-inline: auto;
  }

  .page-inner .photo-hero .door-halo > span {
    border-color: var(--stone);
  }

  .page-services .photo-hero .services-hero-photo {
    display: none;
  }
}

/* Services phone door: narrower, meeting the next section directly (live, 2026-10-28). */
@media (max-width: 47.99rem) {
  /* The photo loses sky from the top; its bottom edge, where the door sits, stays. */
  .page-services .photo-hero .photo-hero-picture,
  .page-services .photo-hero .photo-hero-picture img {
    aspect-ratio: auto;
    height: 105vw;
  }

  .page-services .photo-hero .photo-hero-picture img {
    object-position: 50% 35%;
  }

  .page-services .photo-hero .door-shell {
    --halo-gap: .6rem;
    width: 70%;
  }

  .page-services .photo-hero .invitation-card {
    padding: 5rem 1.1rem 2.25rem;
  }

  .page-services .photo-hero h1 {
    font-size: 2.6rem;
  }

  .page-services .photo-hero .invitation-card .hero-lede {
    margin-block-start: .5rem;
    font-size: 1.175rem;
    line-height: 1;
  }

  /* Each service sits in its own card; what we take care of reads as tags. */
  .page-services .services-catalog .service-block:first-of-type {
    margin-block-start: .9rem;
  }

  .page-services .services-catalog .service-block + .service-block {
    margin-block-start: 1.6rem;
  }

  /* On phones the photo leads the card, so the tag moves to the other corner. */
  .page-services .service-tag {
    inset-inline: auto 1.1rem;
  }

  .page-services .services-catalog .service-block {
    margin-block-end: .6rem;
    padding: 1.25rem 1.1rem .875rem;
    border: 1px solid var(--rule);
    border-radius: 1.5rem;
  }

  /* Card type, set live (2026-10-28): one step larger, close lines. */
  .page-services .services-catalog .service-block h2 {
    font-size: 1.875rem;
    line-height: 1.25;
  }

  .page-services .services-catalog .service-block:last-of-type {
    margin-block-end: 0;
  }

  .page-services .services-catalog .service-body {
    margin-block-start: .4rem;
    font-size: 1.34rem;
    line-height: .95;
  }

  /* A ruled second zone: who it suits, then what we take care of. */
  .page-services .services-catalog .service-fit {
    margin-block-start: .7rem;
    padding-block-start: .625rem;
    border-block-start: 1px solid var(--rule);
    font-size: 1.14rem;
    line-height: 1.15;
  }

  .page-services .services-catalog .service-inclusions {
    margin-block-start: .5rem;
  }

  .page-services .services-catalog .service-inclusions h3 {
    font-size: 1.14rem;
  }

  .page-services .services-catalog .service-inclusions ul {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin-block-start: .3rem;
    padding: 0;
    list-style: none;
  }

  .page-services .services-catalog .service-inclusions li {
    margin: 0;
    padding: .3rem .75rem;
    border: 1px solid var(--rule);
    border-radius: 999px;
    font-size: 1.075rem;
    line-height: 1.05;
  }

  /* The promise sits in one card, drawn like the service cards. */
  .page-services .services-promise .services-promise-layout {
    gap: .45rem;
    width: auto;
    margin-inline: var(--gutter);
    padding: .65rem 1.1rem .35rem;
    border: 1px solid var(--booking-rule);
    border-radius: 1.5rem;
  }

  .page-services .services-promise .services-promise-layout h2 {
    font-size: 1.875rem;
    line-height: 1.25;
  }

  .page-services .services-promise .services-promise-layout ul {
    border-block-start: 0;
  }

  .page-services .services-promise .services-promise-layout li {
    padding-block: .4rem;
    font-size: 1.14rem;
    line-height: 1.2;
  }

  .page-services .services-promise .services-promise-layout li:last-child {
    border-block-end: 0;
  }

  /* The closing matches the home: it ends at the WhatsApp line. */
  .page-services .closing-feast {
    padding-block-start: 1.75rem;
  }

  .page-services .closing-feast .rsvp-card {
    padding-block-end: 1.5rem;
  }

  .page-services .closing-feast .rsvp-card h2 {
    margin-block-start: .75rem;
  }

  .page-services .closing-feast .rsvp-card > p {
    margin-block-start: .35rem;
    line-height: 1.3;
  }

  .page-services:lang(en) .closing-feast .rsvp-card > p {
    line-height: 1.4;
  }

  .page-services .closing-feast :is(.detail-rows, .action) {
    display: none;
  }

  /* Phones hide the hero button (live, 2026-10-28); desktop keeps it. */
  .page-services .photo-hero .hero-action {
    display: none;
  }

  /* Dark mode: the door turns navy with the page. */
  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .photo-hero {
    background: var(--navy);
  }

  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .photo-hero .invitation-card {
    color: var(--sand);
    background: var(--navy);
  }

  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .photo-hero :is(h1, .motif) {
    color: var(--sand);
  }

  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .photo-hero .invitation-card .hero-lede {
    color: var(--mist);
  }

  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .photo-hero .door-halo > span {
    border-color: var(--mist);
  }
}

/* Services on wider phones: align the door with the photo's bottom edge. */
@media (min-width: 30rem) and (max-width: 47.99rem) {
  .page-services .photo-hero .photo-hero-picture,
  .page-services .photo-hero .photo-hero-content {
    grid-area: 1 / 1;
  }

  .page-services .photo-hero .photo-hero-content {
    align-self: end;
    margin-block-start: 0;
  }
}

/* About (Arabic, approved 2026-10-27, formerly about-5) */
.about-v5 .about-hero {
  display: grid;
  align-items: center;
  padding-block: calc(var(--ph-first-start) + var(--ph-group-gap)) var(--ph-section-end);
  background: var(--sand);
}

.about-v5 .about-hero-photo {
  position: absolute;
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 76% 42%;
}

.about-v5 .about-hero-content {
  position: relative;
  z-index: 1;
  padding-block-start: 0;
}

.about-v5 .about-hero .door-shell {
  width: min(calc(100% - 1.5rem), 32.5rem);
  margin-inline: auto;
}

/* A dark, warm outline stays legible on the wall in either theme. */
.about-v5 .about-hero .door-halo > span {
  border-color: var(--stone);
}

.about-v5 .about-hero h1 {
  line-height: 1.05;
}

.about-v5 .about-hero .invitation-card .hero-lede {
  margin-block-start: .75rem;
  line-height: 1.5;
}

.about-v5 .about-hero .invitation-card .hero-action {
  max-width: 100%;
  min-height: 2.75rem;
  white-space: normal;
}

.about-v5 .av-section {
  padding-block: 4.5rem 2rem;
}

.about-v5 .av-section + .av-section {
  padding-block-start: 3rem;
}

.about-v5 .av-section.av-last {
  padding-block-end: 4.5rem;
}

.about-v5 .av-prose {
  color: var(--muted);
  font-size: 1.25rem;
}

.about-v5 .av-prose p + p {
  margin-block-start: 1.25rem;
}

.about-v5 .av-letter-column {
  max-width: 43rem;
}

.about-v5 .av-letter .av-prose {
  margin-block-start: 1.5rem;
}

.about-v5 .av-pull-line {
  margin: 2rem 0 0;
  padding-block: 1.25rem;
  border-block-start: 1px solid var(--rule);
  color: var(--text);
  font-family: var(--font-display);
  font-size: clamp(2.2rem, 3.6vw, 3.25rem);
  font-weight: 700;
  line-height: 1.35;
}

.about-v5 .av-pull-line .motif {
  width: 4rem;
  height: 1rem;
  margin: 0 0 .75rem;
  color: var(--clay);
}

.about-v5 .av-identity-note {
  display: grid;
  gap: 1rem;
  padding-block-start: 1.25rem;
  border-block-start: 1px solid var(--rule);
}

.about-v5 .av-identity-note p {
  max-width: 46ch;
  color: var(--muted);
}

.about-v5 .av-purpose-open {
  display: grid;
  gap: 2rem;
  margin-block-start: 2.5rem;
}

.about-v5 .av-purpose-open article {
  min-width: 0;
  padding-block-start: 1.25rem;
  border-block-start: 1px solid var(--rule);
}

.about-v5 .av-purpose-open p {
  max-width: 40ch;
  margin-block-start: .5rem;
  color: var(--muted);
}

@media (min-width: 48rem) {
  .about-v5 .about-hero {
    min-height: min(40rem, calc(100svh - var(--header-height)));
    padding-block: clamp(2rem, 5svh, 3.5rem);
  }

  .about-v5 .about-hero-photo {
    object-position: 76% 48%;
  }

  .about-v5 .about-hero .door-shell {
    width: min(62%, 32.5rem);
    margin-left: 0;
    margin-right: auto;
  }

  .about-v5 .about-hero .invitation-card {
    padding-block: clamp(2rem, 9svh, 5.3rem) clamp(1.25rem, 3svh, 2.25rem);
  }

  .about-v5 .av-section {
    padding-block-start: 6rem;
  }

  .about-v5 .av-section + .av-section {
    padding-block-start: 5rem;
  }

  .about-v5 .av-section.av-last {
    padding-block-end: 6rem;
  }

  .about-v5 .av-identity-note {
    grid-template-columns: minmax(0, .8fr) minmax(0, 1.3fr);
    align-items: start;
    gap: clamp(3rem, 6vw, 6rem);
  }

  .about-v5 .av-purpose-open {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 3rem;
  }
}

@media (min-width: 64rem) {
  .about-v5 .about-hero .door-shell {
    width: min(44%, 32.5rem);
  }

}

/* Reuse the shared phone density. */
@media (max-width: 47.99rem) {
  /* The whole wall at its own ratio, with the door rising out of its lower edge (chosen live). */
  .about-v5 .about-hero {
    overflow: hidden;
    padding: 0;
  }

  .about-v5 .about-hero-photo {
    position: static;
    height: auto;
    aspect-ratio: 3 / 2;
    object-position: 70% 50%;
  }

  /* The door covers 65% of the photo's height, and the wall frames its shoulders (chosen live). */
  .about-v5 .about-hero-content {
    margin-block-start: calc(-66.667vw * .65);
  }

  .about-v5 .about-hero .door-shell {
    width: 81%;
  }

  .about-v5 .about-hero .invitation-card {
    padding: 2.25rem var(--ph-group-gap) 2rem;
  }

  .about-v5 .about-hero .invitation-card h1,
  .about-v5 .about-hero .invitation-card .hero-lede {
    margin-block-start: var(--ph-head-gap);
  }

  .about-v5 .about-hero .invitation-card .hero-lede {
    line-height: var(--ph-short-leading);
  }

  .about-v5 .about-hero .invitation-card .hero-action {
    margin-block-start: var(--ph-group-gap);
  }

  .about-v5 .av-section,
  .about-v5 .av-section + .av-section {
    padding-block: var(--ph-section-start) var(--ph-section-end);
  }

  .about-v5 .about-hero + .av-section {
    padding-block-start: var(--ph-first-start);
  }

  .about-v5 .av-section.av-last {
    padding-block-end: var(--ph-field-end);
  }

  .about-v5 .av-prose,
  .about-v5 .av-identity-note p {
    line-height: var(--ph-long-leading);
  }

  .about-v5 .av-prose p + p {
    margin-block-start: var(--ph-group-gap);
  }

  /* A signed letter: calm prose, and the pull line closes the column like a sign-off (chosen live). */
  .about-v5 .av-letter h2 {
    font-size: 2rem;
    line-height: 1.3;
  }

  .about-v5 .av-letter .av-prose {
    margin-block-start: var(--ph-intro-end);
    font-size: 1.125rem;
    line-height: 1.6;
  }

  .about-v5 .av-letter .av-prose p + p {
    margin-block-start: .85rem;
  }

  .about-v5 .av-pull-line {
    display: grid;
    justify-items: end;
    gap: .6rem;
    margin-block-start: var(--ph-intro-end);
    padding-block: 0;
    border: 0;
    font-size: 1.4rem;
    line-height: 1.35;
    text-align: end;
  }

  .about-v5 .av-pull-line .motif {
    margin: 0;
  }

  .about-v5 .av-identity-note {
    gap: var(--ph-head-gap);
    padding-block-start: var(--ph-group-gap);
  }

  .about-v5 .av-purpose-open {
    gap: var(--ph-group-gap);
    margin-block-start: var(--ph-group-gap);
  }

  .about-v5 .av-purpose-open article {
    padding-block-start: var(--ph-group-gap);
  }

  .about-v5 .av-purpose-open h3 {
    font-size: 1.4rem;
  }

  .about-v5 .av-purpose-open p {
    margin-block-start: var(--ph-head-gap);
    line-height: var(--ph-short-leading);
  }
}

/* Services desktop, set live (2026-10-28): the phone system at large sizes. A narrower,
   taller door; outlined cards beside the photo stage; the promise in one card. */
@media (min-width: 48rem) {
  .page-services .services-hero { padding-block: 3.5rem 0; }
  .page-services .services-hero .door-shell { width: min(38%, 27rem); }
  .page-services .services-hero .invitation-card { padding-block: 6rem 2.5rem; }
  .page-services .services-catalog { padding-block: 3rem 4rem; }
  .page-services.has-services-stage .services-catalog { padding-block-end: 4rem; }
  .page-services.has-services-stage .services-stage-column { margin-block-end: -4rem; }
  .page-services .services-catalog .service-block { margin-block-end: 1.25rem; padding: 2rem 2.25rem; border: 1px solid var(--rule); border-radius: 1.75rem; }
  .page-services .services-catalog .service-block:last-of-type { margin-block-end: 0; }
  .page-services .services-catalog .service-block:first-of-type { margin-block-start: 0; }
  .page-services .services-catalog .service-block + .service-block { margin-block-start: 1.5rem; }
  .page-services .service-tag { inset-inline-start: 2.25rem; }
  /* Each card carries its own arch photo on the far side; the shared stage is retired. */
  .page-services .services-grid .services-stage-column { display: none; }
  .page-services .services-catalog .services-grid { grid-template-columns: minmax(0, 1fr); }
  .page-services .services-catalog .service-block { display: grid; grid-template-columns: minmax(0, 1fr) min(22rem, 40%); column-gap: 2.5rem; align-items: start; }
  .page-services .services-catalog .service-intro { display: contents; }
  .page-services .services-catalog .service-block > *,
  .page-services .services-catalog .service-block h2 { grid-column: 1; }
  .page-services .services-catalog .service-inline-photo { display: block; grid-column: 2; grid-row: 1 / span 4; width: 100%; max-width: none; height: 100%; min-height: 16rem; max-height: 24rem; object-position: 50% 50%; border-radius: 999px 999px 1rem 1rem; }
  .page-services .services-catalog .service-body { margin-block-start: .6rem; }
  .page-services .services-catalog .service-fit { margin-block-start: 1.1rem; padding-block-start: 1rem; border-block-start: 1px solid var(--rule); }
  .page-services .services-catalog .service-inclusions { margin-block-start: .85rem; }
  .page-services .services-catalog .service-inclusions ul { display: flex; flex-wrap: wrap; gap: .5rem; margin-block-start: .5rem; padding: 0; list-style: none; }
  .page-services .services-catalog .service-inclusions li { padding: .35rem .9rem; border: 1px solid var(--rule); border-radius: 999px; line-height: 1.4; }
  .page-services .services-promise { padding-block: 4rem; }
  /* The promise card: motif, title and triangle-marked rows beside an arch photo. */
  .page-services .services-promise .services-promise-layout { grid-template-columns: minmax(0, 1.3fr) minmax(0, .8fr); grid-template-areas: "motif photo" "title photo" "list photo"; grid-template-rows: auto auto 1fr; column-gap: 4rem; row-gap: 1rem; padding: 2.5rem 2.75rem; border: 1px solid var(--booking-rule); border-radius: 1.75rem; }
  .page-services .services-promise .services-promise-layout h2 { grid-area: title; }
  .page-services .services-promise .promise-motif { grid-area: motif; width: 6rem; height: 1.5rem; margin: 0; }
  .page-services .services-promise ul { grid-area: list; align-self: start; }
  .page-services .services-promise li { position: relative; padding-inline-start: 1.6rem; }
  .page-services .services-promise li::before { content: ""; position: absolute; inset-inline-start: 0; top: 50%; width: .75rem; height: .65rem; background: var(--clay); clip-path: polygon(50% 0, 100% 100%, 0 100%); translate: 0 -50%; }
  .page-services .services-promise .promise-photo { display: block; grid-area: photo; width: 100%; height: 100%; min-height: 24rem; max-height: 32rem; object-fit: cover; object-position: 50% 50%; border-radius: 999px 999px 1.25rem 1.25rem; }
  .page-services .services-promise li:last-child { border-block-end: 0; }
  .page-services .closing-feast { padding-block-start: 4rem; }
  /* Dark mode: the door turns navy, with the selected clay outline and motif. */
  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .services-hero .invitation-card { --button-bg: var(--sand); --button-text: var(--navy); --focus: var(--sand); color: var(--sand); background: var(--navy); }
  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .services-hero h1 { color: var(--sand); }
  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .services-hero .motif { color: var(--clay); }
  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .services-hero .invitation-card .hero-lede { color: var(--mist); }
  :root:is([data-theme="dark"], :has(#theme-dark:target)) .page-services .services-hero .door-halo > span { border-color: var(--clay); }
}

/* Contact — the merged contact and booking page. Shared home recipes stay intact. */
.page-contact {
  --contact-halo: var(--text);
  --contact-label: var(--palm);
  --contact-chip-fill: color-mix(in srgb, var(--sand) 30%, transparent);
}
:root:is([data-theme="dark"], :has(#theme-dark:target)) .page-contact {
  --contact-halo: var(--clay);
  --contact-label: var(--muted);
  --contact-chip-fill: color-mix(in srgb, var(--sand) 8%, transparent);
}
:root:has(#theme-light:target) .page-contact {
  --contact-halo: var(--text);
  --contact-label: var(--palm);
  --contact-chip-fill: color-mix(in srgb, var(--sand) 30%, transparent);
}
.page-contact .contact-hero.photo-hero {
  position: relative;
  isolation: isolate;
  display: block;
  padding-block: 1.5rem 0;
  background: var(--page-bg);
}
.page-contact .contact-hero-photo { display: none; }
.page-contact .contact-hero .contact-hero-content {
  position: relative;
  z-index: 1;
  inline-size: min(100% - var(--gutter) * 2, 80rem);
  margin-block-start: 0;
  padding-block-start: 0;
}
.page-contact .contact-hero .door-shell {
  --halo-gap: .6rem;
  position: relative;
  inline-size: calc(100% - 1.5rem);
  max-inline-size: 32.5rem;
  margin-inline: auto;
}
.page-contact .contact-hero .door-halo > span { border-color: var(--contact-halo); }
.page-contact .contact-hero .invitation-card {
  --button-bg: inherit;
  --button-text: inherit;
  --focus: inherit;
  padding-block: 2.75rem 1.25rem;
  padding-inline: 1.25rem;
  background: var(--page-bg);
  color: var(--text);
}
.page-contact .contact-hero .invitation-card ::selection { color: var(--page-bg); background: var(--text); }
.page-contact .contact-hero .motif { color: var(--clay); }
.page-contact .contact-hero .invitation-card h1 {
  margin-block-start: .5rem;
  color: var(--text);
  font-size: 2.75rem;
  line-height: 1.05;
}
.page-contact .contact-hero .invitation-card .hero-lede {
  margin-block-start: .5rem;
  color: var(--muted);
  font-size: 1.1875rem;
  line-height: 1.5;
}
/* Match About's compact hero action using the shared padding, type and icon. */
.page-contact .contact-hero .invitation-card .hero-action {
  max-inline-size: 100%;
  min-block-size: 2.75rem;
  margin-block-start: 1.25rem;
  white-space: nowrap;
}
/* Keep hero labels wrapping at spaces, as on About. */
.page-contact .contact-hero .hero-action span { overflow-wrap: normal; }
/* Match About's full-width phone action. */
@media (width < 48rem) {
  /* Use the same full-width action and spacing as About on phones. */
  .page-contact .contact-hero .invitation-card .hero-action { inline-size: 100%; margin-block-start: var(--ph-group-gap); padding-inline: .75rem; white-space: normal; }
}
.page-contact .action { max-inline-size: 100%; white-space: normal; }
.page-contact .action span { min-inline-size: 0; overflow-wrap: anywhere; }
.page-contact .contact-hero .detail-rows { margin-block-start: var(--ph-group-gap, 1.25rem); }
.page-contact .contact-hero :is(.detail-rows, .detail-rows > div) { border-color: var(--rule); }
.page-contact .contact-hero .detail-rows > div { flex-wrap: wrap; gap: .25rem 1rem; padding-block: .65rem; line-height: 1.5; }
.page-contact .contact-hero .detail-rows dt { color: var(--contact-label); }
.page-contact .contact-hero .detail-rows dd { min-inline-size: 0; margin-inline-start: auto; }
.page-contact .detail-rows [data-wa] { display: inline-flex; align-items: center; min-block-size: 2.75rem; text-decoration: underline; }
.page-contact [data-wa-number] { direction: ltr; unicode-bidi: isolate; overflow-wrap: anywhere; }
.page-contact .booking.booking-chat {
  --booking-bg: inherit;
  --booking-text: inherit;
  --booking-rule: inherit;
  --button-bg: inherit;
  --button-text: inherit;
  scroll-margin-block-start: 1rem;
}
.page-contact:has(.fallback-nav) .booking.booking-chat { scroll-margin-block-start: 16rem; }
.page-contact .chat-layout { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3rem; align-items: center; }
.page-contact .chat-copy { min-inline-size: 0; }
.page-contact .chat-copy .section-intro p { max-inline-size: 40ch; margin-block-start: 1rem; font-size: 1.25rem; line-height: 1.6; }
.page-contact .chat-copy .what-to-send { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; margin-block-start: 2rem; padding-block-start: 1.5rem; }
.page-contact .chat-copy .what-to-send h3 + p { margin-block-start: .5rem; line-height: 1.6; }
.page-contact .chat-copy .what-to-send ul { gap: .6rem; }
.page-contact .booking-chat .chat-copy .what-to-send li {
  max-inline-size: 100%;
  min-inline-size: 0;
  min-block-size: 2.25rem;
  padding-block: .4rem;
  padding-inline: 1rem;
  background: var(--contact-chip-fill);
  font-size: 1.05rem;
  line-height: 1.5;
  white-space: normal;
  overflow-wrap: anywhere;
}
.page-contact .chat-copy .what-to-send .action { grid-column: 1; padding-inline: 1.25rem; }
.page-contact .booking-chat .phone-stage { padding: 0; }
.page-contact .booking-chat .booking-phone { transform: none; }
/* home.js may arm either state; instructions on Contact always remain readable. */
.page-contact .booking-chat .phone-stage .booking-steps li,
.page-contact .booking-chat .phone-stage:is(.will-play, .is-playing) .booking-steps li { opacity: 1; transform: none; animation: none; }
.page-contact .booking-phone .booking-steps li > span { direction: ltr; unicode-bidi: isolate; }
.page-contact .booking-phone .booking-steps li > div { padding-block-end: .85rem; }
.page-contact .contact-day { padding-block: 5rem 2rem; }
.page-contact .contact-intro p { max-inline-size: 40ch; margin-block-start: 1rem; color: var(--muted); font-size: 1.25rem; }
.page-contact .contact-day-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; margin-block-start: 2.5rem; }
.page-contact .contact-day-list li { min-inline-size: 0; padding-block-start: 1.25rem; border-block-start: 1px solid var(--rule); }
.page-contact .contact-day-list p { max-inline-size: 38ch; margin-block-start: .5rem; color: var(--muted); }
.page-contact .contact-faq { padding-block: 3rem 6rem; }
.page-contact .contact-faq-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 3rem; align-items: start; }
.page-contact .contact-faq-list { inline-size: 100%; max-inline-size: 44rem; border-block-start: 1px solid var(--rule); }
.page-contact .contact-faq details { border-block-end: 1px solid var(--rule); }
.page-contact .contact-faq summary {
  position: relative;
  display: flex;
  align-items: center;
  min-block-size: 2.75rem;
  padding-block: 1rem;
  padding-inline: 0 2.75rem;
  color: var(--text);
  font-weight: 700;
  line-height: 1.5;
  list-style: none;
  cursor: pointer;
  overflow-wrap: anywhere;
}
.page-contact .contact-faq summary::-webkit-details-marker { display: none; }
.page-contact .contact-faq summary::before,
.page-contact .contact-faq summary::after { content: ""; position: absolute; inset-inline-end: .625rem; inset-block-start: calc(50% - 1px); inline-size: .875rem; block-size: 2px; background: currentColor; pointer-events: none; }
.page-contact .contact-faq summary::after { transform: rotate(90deg); }
.page-contact .contact-faq details[open] summary::after { transform: rotate(0); }
.page-contact .contact-faq summary:hover { text-decoration: underline; }
.page-contact .contact-faq details p { max-inline-size: 65ch; padding-block-end: 1.25rem; padding-inline-end: 2.75rem; color: var(--muted); }
.page-contact .closing-feast .detail-rows > div { flex-wrap: wrap; gap: .25rem 1rem; }
.page-contact .closing-feast .detail-rows dd { min-inline-size: 0; margin-inline-start: auto; }
.page-contact .closing-feast .rsvp-card .action { min-block-size: 2.75rem; }
.page-contact .footer-main nav a[aria-current] { text-decoration: underline; }
.page-contact .footer-main { flex-wrap: wrap; }
.page-contact .footer-wa { max-inline-size: 100%; }
.page-contact .mobile-nav:not([hidden]) { flex-wrap: wrap; }
.page-contact .header-inner, .page-contact .header-actions { flex-wrap: wrap; }
.page-contact .header-actions { max-inline-size: 100%; }
.page-contact:lang(en) .contact-hero .invitation-card h1 { font-size: 2rem; line-height: 1.1; }
.page-contact:lang(en) .contact-hero .invitation-card .hero-lede { font-size: 1.125rem; line-height: 1.65; }

/* Fragment themes must also override the home's data-theme-only chat recipes. */
:root:has(#theme-light:target) .page-contact .booking.booking-chat { border-block: 0; }
:root:has(#theme-light:target) .page-contact .booking-phone { border-color: var(--text); }
:root:has(#theme-dark:target) .page-contact .booking-phone { border-color: var(--text); }

@media (min-width: 48rem) {
  .page-contact .contact-hero.photo-hero { padding-block: 3rem 0; }
  .page-contact .contact-hero-photo { position: absolute; z-index: 0; inset: 0; display: block; inline-size: 100%; block-size: 100%; object-fit: cover; object-position: right center; }
  /* Physical placement follows the photograph; the halo keeps its long left leg. */
  .page-contact .contact-hero .door-shell { --halo-gap: .8rem; inline-size: min(50%, 32.5rem); margin-left: 0; margin-right: auto; }
  .page-contact .contact-hero .invitation-card { padding-block: 3.5rem 1.75rem; padding-inline: 1.75rem; }
  .page-contact .contact-hero .invitation-card h1 { font-size: clamp(2.75rem, 4.4vw, 4rem); }
  .page-contact .contact-day { padding-block-start: 6rem; }
}
@media (min-width: 64rem) {
  .page-contact .contact-hero .door-shell { inline-size: min(44%, 32.5rem); }
  .page-contact .chat-layout { gap: 5rem; }
  .page-contact:lang(en) .contact-hero .invitation-card h1 { font-size: clamp(2.5rem, 4vw, 3.5rem); }
}
@media (max-width: 47.99rem) {
  .page-contact .contact-hero .invitation-card .hero-lede,
  .page-contact:lang(en) .contact-hero .invitation-card .hero-lede { line-height: var(--ph-short-leading); }
  .page-contact .booking.booking-chat { padding-block: var(--ph-first-start) var(--ph-field-end); }
  .page-contact .chat-layout { grid-template-columns: minmax(0, 1fr); gap: var(--ph-group-gap); }
  .page-contact .chat-copy .section-intro p { margin-block-start: var(--ph-head-gap); line-height: var(--ph-short-leading); }
  .page-contact .chat-copy .what-to-send { gap: var(--ph-group-gap); margin-block-start: var(--ph-group-gap); padding-block-start: var(--ph-group-gap); }
  .page-contact .chat-copy .what-to-send h3 { margin-block-end: 0; font-size: 1.4rem; }
  .page-contact .chat-copy .what-to-send h3 + p { margin-block-start: var(--ph-head-gap); line-height: var(--ph-short-leading); }
  .page-contact .chat-copy .what-to-send ul { gap: var(--ph-head-gap); }
  .page-contact .chat-copy .what-to-send li { padding-block: var(--ph-title-gap); padding-inline: var(--ph-caption-gap); line-height: var(--ph-short-leading); }
  .page-contact .chat-copy .what-to-send .action { inline-size: 100%; }
  .page-contact .booking-phone { inline-size: 100%; max-inline-size: 26rem; }
  .page-contact .booking-phone .booking-steps { padding-block: var(--ph-group-gap); padding-inline: var(--ph-caption-gap); gap: var(--ph-row); }
  .page-contact .booking-phone .booking-steps li { max-inline-size: 100%; max-width: 100%; }
  .page-contact .booking-phone .booking-steps li > div { padding-block: var(--ph-row); padding-inline: var(--ph-caption-gap); }
  .page-contact .booking-phone .booking-steps h3 { line-height: var(--ph-description-leading); }
  .page-contact .booking-phone .booking-steps p { margin-block-start: var(--ph-title-gap); line-height: var(--ph-short-leading); }
  .page-contact .contact-day { padding-block: var(--ph-section-start) var(--ph-section-end); }
  .page-contact .contact-intro p { margin-block-start: var(--ph-head-gap); line-height: var(--ph-short-leading); }
  .page-contact .contact-day-list { grid-template-columns: minmax(0, 1fr); gap: 0; margin-block-start: var(--ph-intro-end); }
  .page-contact .contact-day-list li { padding-block: var(--ph-row); }
  .page-contact .contact-day-list h3 { font-size: 1.4rem; }
  .page-contact .contact-day-list p { margin-block-start: var(--ph-title-gap); font-size: 1rem; line-height: var(--ph-description-leading); }
  .page-contact .contact-faq { padding-block: var(--ph-section-start) var(--ph-field-end); }
  .page-contact .contact-faq-layout { grid-template-columns: minmax(0, 1fr); gap: var(--ph-intro-end); }
  .page-contact .contact-faq summary { padding-block: var(--ph-row); line-height: var(--ph-short-leading); }
  .page-contact .contact-faq details p { padding-block-end: var(--ph-row); padding-inline-end: 0; line-height: var(--ph-long-leading); }
  .page-contact .closing-feast { padding-block-start: 1.75rem; }
  .page-contact .closing-feast .rsvp-card { padding-block-end: 1.5rem; }
  .page-contact .closing-feast .rsvp-card h2 { margin-block-start: .75rem; }
  .page-contact .closing-feast .rsvp-card > p { margin-block-start: .35rem; line-height: 1.3; }
  .page-contact:lang(en) .closing-feast .rsvp-card > p { line-height: 1.4; }
  .page-contact .closing-feast .rsvp-card :is(.detail-rows, .action) { display: none; }
}

/* Services hero: the accepted About-style composition on phones and desktop. */
.page-services .services-hero .services-hero-facts,
.page-services .services-hero .services-hero-facts > div { border-color: var(--rule); }
.page-services .services-hero .services-hero-facts > div { display: flex; flex-wrap: wrap; gap: .25rem .75rem; line-height: 1.4; }
.page-services .services-hero .services-hero-facts dt { color: var(--muted); }
.page-services .services-hero .services-hero-facts dd { min-inline-size: 0; margin-inline-start: auto; color: var(--text); }
@media (width >= 48rem) {
  .page-services .services-hero .door-shell { --halo-gap: .75rem; }
  .page-services .services-hero .door-halo > span { border-color: var(--clay); border-width: 2px; }
  .page-services .services-hero .invitation-card { min-block-size: 0; padding-block: 3.75rem 1.5rem; }
  .page-services .services-hero .invitation-card .motif { color: var(--clay); }
  .page-services .services-hero .invitation-card h1 { font-size: 3.75rem; line-height: 1.05; }
  .page-services .services-hero .invitation-card .hero-lede { margin-block-start: .6rem; font-size: 1.375rem; line-height: 1.4; }
  .page-services .services-hero .services-hero-facts { margin-block-start: 1.1rem; }
  .page-services .services-hero .services-hero-facts > div { padding-block: .65rem; }
  .page-services .services-hero .services-hero-facts :is(dt, dd) { font-size: 1.1875rem; line-height: 1.4; }
  .page-services .services-hero .invitation-card .hero-action { white-space: normal; }
  .page-services:lang(en) .services-hero .invitation-card h1 { font-size: 3.25rem; line-height: 1.1; }
}
@media (width < 48rem) {
  .page-services .services-hero .door-shell { width: 81%; --halo-gap: .8rem; }
  .page-services .services-hero .invitation-card { padding-block: 2.25rem 1.8rem; padding-inline: var(--ph-group-gap); }
  .page-services .services-hero .invitation-card h1 { margin-block-start: var(--ph-head-gap); font-size: 2.75rem; line-height: 1.05; }
  .page-services .services-hero .invitation-card .hero-lede { margin-block-start: .6rem; font-size: 1.1875rem; line-height: 1.35; }
  .page-services .services-hero .services-hero-facts { margin-block-start: calc(var(--ph-group-gap) * .9); }
  .page-services .services-hero .services-hero-facts > div { padding-block: calc(var(--ph-row) * .9); line-height: 1.35; }
  .page-services .services-hero .invitation-card .hero-action { display: none; }
  .page-services:lang(en) .services-hero .invitation-card h1 { font-size: 2rem; line-height: 1.1; }
  .page-services:lang(en) .services-hero .invitation-card .hero-lede { line-height: 1.5; }
}

/* Larger promise text, selected in Live; the phone recipe stays unchanged. */
@media (width >= 48rem) {
  .page-services .services-promise .services-promise-layout li { font-size: 1.375rem; line-height: 1.5; padding-block: .85rem; }
}

/* Larger desktop catalogue typography, selected in Live. */
@media (width >= 48rem) {
  .page-services .services-catalog .service-block h2 { font-size: 3.375rem; line-height: 1.25; }
  .page-services .services-catalog :is(.service-body, .service-fit) { font-size: 1.5rem; line-height: 1.55; }
  .page-services .services-catalog .service-inclusions h3 { font-size: 1.125rem; line-height: 1.4; }
  .page-services .services-catalog .service-inclusions li { font-size: 1.125rem; line-height: 1.45; }
}

/* Contact desktop text: accepted page scale 1.25 and chat scale 1. */
@media (width >= 48rem) {
  .page-contact .contact-hero .invitation-card .hero-lede,
  .page-contact:lang(en) .contact-hero .invitation-card .hero-lede { font-size: 1.484375rem; line-height: 1.5; }
  .page-contact .detail-rows :is(dt, dd) { font-size: 1.25rem; line-height: 1.5; }
  .page-contact .chat-copy .section-intro p,
  .page-contact .contact-intro p,
  .page-contact .closing-feast .rsvp-card > p { font-size: 1.5625rem; line-height: 1.5; }
  .page-contact .chat-copy .what-to-send p,
  .page-contact .chat-copy .what-to-send h3 + p,
  .page-contact .contact-day-list p,
  .page-contact .contact-faq :is(summary, details p) { font-size: 1.40625rem; line-height: 1.5; }
  .page-contact .booking-chat .chat-copy .what-to-send li { font-size: 1.3125rem; line-height: 1.5; }
  .page-contact .booking-phone .booking-steps h3 { font-size: 1.1rem; line-height: 1.4; }
  .page-contact .booking-phone .booking-steps p,
  .page-contact:lang(en) .booking-phone .booking-steps p { font-size: 1rem; line-height: 1.5; }
}

/* English Services desktop typography, independently selected in Live. */
@media (width >= 48rem) {
  .page-services:lang(en) main .services-hero .invitation-card h1 { font-size: 2.375rem; line-height: 1.1; }
  .page-services:lang(en) main .services-hero .invitation-card .hero-lede { font-size: 1rem; line-height: 1.55; }
  .page-services:lang(en) main .services-hero .services-hero-facts :is(dt, dd) { font-size: .9375rem; line-height: 1.5; }
  .page-services:lang(en) main :is(.services-catalog .service-block h2, .services-promise h2, .closing-feast h2) { font-size: 2.125rem; line-height: 1.15; }
  .page-services:lang(en) main .services-catalog :is(.service-body, .service-fit),
  .page-services:lang(en) main .closing-feast .rsvp-card > p { font-size: 1rem; line-height: 1.55; }
  .page-services:lang(en) main .services-catalog .service-inclusions h3 { font-size: 1rem; line-height: 1.4; }
  .page-services:lang(en) main .services-catalog .service-inclusions li { font-size: .9375rem; line-height: 1.5; }
  .page-services:lang(en) main .services-promise .services-promise-layout li { font-size: 1rem; line-height: 1.55; }
}

/* English Contact desktop typography, independently selected in Live. */
@media (width >= 48rem) {
  .page-contact:lang(en) main .contact-hero .invitation-card h1 { font-size: 2.875rem; line-height: 1.1; }
  .page-contact:lang(en) main .contact-hero .invitation-card .hero-lede,
  .page-contact:lang(en) main .chat-copy .section-intro p,
  .page-contact:lang(en) main .chat-copy .what-to-send p,
  .page-contact:lang(en) main .chat-copy .what-to-send h3 + p,
  .page-contact:lang(en) main .contact-intro p,
  .page-contact:lang(en) main .contact-day-list p,
  .page-contact:lang(en) main .contact-faq :is(summary, details p),
  .page-contact:lang(en) main .closing-feast .rsvp-card > p { font-size: 1.125rem; line-height: 1.5; }
  .page-contact:lang(en) main .detail-rows :is(dt, dd) { font-size: 1.125rem; line-height: 1.5; }
  .page-contact:lang(en) main :is(.chat-copy .section-intro h2, .contact-intro h2, .contact-faq h2, .closing-feast h2) { font-size: 2.125rem; line-height: 1.15; }
  .page-contact:lang(en) main .chat-copy .what-to-send h3,
  .page-contact:lang(en) main .contact-day-list h3 { font-size: 1.375rem; line-height: 1.35; }
  .page-contact:lang(en) main .booking-chat .chat-copy .what-to-send li { font-size: 1.0625rem; line-height: 1.5; }
  .page-contact:lang(en) main .action { font-size: 1rem; }
  .page-contact:lang(en) main .chat-copy .what-to-send .action {
    font-size: .8125rem;
    min-height: 44px;
    min-block-size: 44px;
    inline-size: max-content;
    max-inline-size: 100%;
    padding-block: .45rem;
    padding-inline: .8125rem;
    gap: .45rem;
  }
  .page-contact:lang(en) main .chat-copy .what-to-send .action svg { width: 1.125rem; height: 1.125rem; }
}
