/* Approved desktop language, adapted for touch screens. Desktop is untouched. */
@media (max-width: 1100px) {
  :root {
    --g5-color-white: #FFFFFF; --g5-color-grey: #F5F5F5; --g5-color-stone: #F2F0EB;
    --g5-color-charcoal: #373A39; --g5-color-selection: #FFF8ED;
    --g5-color-accent: #FCC973; --g5-color-hover: #FFBB50; --g5-color-text: #666666;
    --g5-color-border: #949895; --g5-color-eco: #71805A;
    --g5-weight-light: 300; --g5-weight-regular: 400; --g5-weight-strong: 600;
    --g5-type-12: 12px; --g5-type-13: 13px; --g5-type-20: 20px; --g5-type-30: 30px;
    --g5-space-1: 4px; --g5-space-2: 8px; --g5-space-3: 12px; --g5-space-4: 16px;
    --g5-space-6: 24px; --g5-space-8: 32px; --g5-space-12: 48px; --g5-space-16: 64px;
    --heading: var(--g5-color-charcoal); --text: var(--g5-color-text);
    --background: var(--g5-color-white); --secondary: var(--g5-color-grey);
    --accent: var(--g5-color-accent); --hover-solid: var(--g5-color-hover); --rule: var(--heading);
  }
  body { font-family: Montserrat, -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif; font-size: 16px; line-height: 1.6; color: var(--text); background: var(--background); }
  b, strong { font-weight: 600; }
  :is(main, section, .wrap, .wf-hero-copy, .wf-hero-media, .project-intro-copy, .editorial-grid > *, .footer-cols > *) { min-width: 0; }
  body .wrap { padding-inline: 32px; }
  body :is(.wf-section, .wf-hero, .case-section, .project-chapter, .project-opposites, .article-intro, .blog-index, .legal) { padding-block: 48px; }
  body .wf-section + .wf-section { padding-top: 48px; }
  body :is(h1, h2, .wf-site h1, .wf-site h2, .project-intro-copy h1, .chapter-heading h2, .article-intro h1) { font-size: 30px; font-weight: 300; line-height: 1.3; }
  body :is(h3, .wf-site h3, .opposite-copy h3) { font-size: 20px; line-height: 1.3; }
  body .sec-head { gap: 2px; margin-bottom: 32px; }
  body .sec-head :is(h1, h2) { max-width: none; font-size: 30px; margin: 0; line-height: 1.3; }
  body :is(.wf-points, .project-description, .chapter-heading > p, .opposite-copy p, .result-heading > p, .article-body, .article-summary) { font-size: 16px; line-height: 1.6; }
  body .wf-points { padding-left: 20px; }
  body .wf-hero-copy .wf-points:has(span) { padding-left: 20px; }
  body .wf-hero-copy .wf-points li:has(span) { list-style: disc; padding-left: 4px; margin-bottom: 16px; }
  body .wf-hero-copy .wf-points li:last-child { margin-bottom: 0; }
  body .wf-points li span { margin-top: 4px; }
  body .wf-hero-copy p { max-width: none; }
  body :is(.wf-hero-grid, .wf-performance-grid, .wf-image-pair, .wf-package-grid) { gap: 32px; }
  body .wf-hero-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  body .wf-hero-media :is(img, .wf-drawing img) { width: 100%; height: auto; min-height: 0; max-height: none; }
  body figure { margin-inline: 0; }
  body :is(.wf-hero-media, .wf-drawing, .stage-photo) { max-width: 100%; }

  /* Same approved content at every width, not the old mobile substitutes. */
  body :is(.services-projects-legacy, .services-legacy-cta-title,
    .new-homes-legacy-hero, .new-homes-legacy-concepts,
    .lofts-legacy-hero, .lofts-legacy-copy, .lofts-legacy-concepts, .lofts-legacy-process,
    .architectural-legacy-drawings, .architectural-legacy-copy, .architectural-legacy-package-title,
    .architectural-legacy-package-stages, .architectural-legacy-cta-title,
    .technical-legacy-subtitle, .technical-legacy-scope, .technical-legacy-enlarge,
    .technical-legacy-process-title, .technical-legacy-stage-label,
    .construction-legacy-intro, .construction-legacy-inspections, .construction-legacy-process-title, .construction-legacy-stage-label,
    .complete-legacy-intro, .complete-legacy-process-title, .complete-legacy-stage-label) { display: none; }
  body :is(.new-homes-hero-concept, .new-homes-intro, .new-homes-design,
    .lofts-hero-visual, .lofts-hero-details, .lofts-design,
    .architectural-hero-sketch, .architectural-hero-details, .architectural-stages, .architectural-process-section,
    .technical-stage-note, .construction-intro, .construction-stage-note, .complete-intro, .complete-stage-note) { display: block; }
  body :is(.services-desktop-cta-title, .architectural-package-title, .architectural-cta-title,
    .lofts-process-title, .technical-process-title, .construction-process-title, .complete-process-title) { display: inline; }
  body .construction-inspections { display: list-item; }
  body .services-projects-desktop { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
  body.wf-services-overview #process { display: block; }
  body :is(.architectural-title-emphasis, .construction-title-emphasis, .complete-title-emphasis, .lofts-title-emphasis, .lofts-cta-emphasis) { font-weight: 600; }
  body :is(.new-homes-design-grid, .lofts-design-grid) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
  body :is(.new-homes-design-grid, .lofts-design-grid) img { width: 100%; height: auto; object-fit: contain; }
  body :is(.new-homes-design-grid, .lofts-design-grid) figcaption { margin-top: 8px; font-size: 13px; }

  /* Touch navigation: visible active page, rounded service rows and a scrollable menu. */
  body .site-header { position: sticky; top: 0; z-index: 60; background: var(--background); }
  body .site-header .wrap { min-height: 80px; justify-content: space-between; }
  body .brand img { height: 54px; }
  body .burger { min-width: 44px; min-height: 44px; margin: 0; padding: 8px; }
  body .site-header > .wrap > .burger { margin-left: auto; }
  body .site-header > .wrap > nav { flex: 0; width: 0; }
  body .topbar .wrap { height: auto; padding-block: 8px; gap: 8px 16px; flex-wrap: wrap; justify-content: center; font-size: 12px; }
  body .topbar a { min-height: 24px; }
  body .nav.open { max-height: calc(100dvh - 130px); overflow-y: auto; overscroll-behavior: contain; padding: 12px 24px; }
  body .wireframe-nav { gap: 8px; }
  body .wireframe-nav > li > a { min-height: 44px; padding: 12px 8px; border: 0; font-size: 14px; font-weight: 400; }
  body .wireframe-nav a[aria-current], body .wireframe-nav .is-current-section > a { color: var(--hover-solid); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
  body .wireframe-nav .subnav { opacity: 1 !important; visibility: visible !important; transform: none !important; display: grid; gap: 4px; padding: 8px; border-radius: 24px; background: var(--heading); }
  body .wireframe-nav .subnav a { display: flex; align-items: center; min-height: 44px; padding: 12px 16px; border-radius: 24px; color: var(--g5-color-white); font-size: 14px; line-height: 1.5; }
  body .wireframe-nav .subnav a:is(:hover, :focus-visible, [aria-current]) { color: var(--heading); background: var(--hover-solid); text-decoration: none; }
  body .wireframe-nav .nav-cta > a { display: flex; justify-content: center; padding: 12px 20px; margin: 12px 0 0; font-weight: 600; }
  body :is(.btn, .btn-ghost) { display: inline-flex; justify-content: center; align-items: center; min-height: 48px; padding: 12px 24px; font-size: 14px; font-weight: 600; line-height: 1.5; border-radius: 999px; text-align: center; }
  body .btn { background: var(--accent); color: var(--heading); }
  body .btn:is(:hover, :focus-visible) { background: var(--hover-solid); }
  body.wf-home .btn-ghost:is(:hover, :focus-visible) { background: var(--secondary); color: var(--heading); border-color: var(--secondary); }
  body .wf-home-text-link { font-style: italic; text-decoration: none; }
  body .wf-home-text-link::after { content: '↗'; display: inline-block; margin-left: 8px; color: var(--accent); font-style: normal; }
  body :is(a, button, summary):focus-visible { outline: 2px solid var(--hover-solid); outline-offset: 4px; }

  body .wf-home-hero { min-height: calc(100svh - 130px); height: auto; }
  body .wf-home-hero .wf-home-layout { grid-template-columns: 1fr; gap: 24px; padding-block: 48px 32px; }
  body .wf-home-hero .hero-copy h1 { font-size: 30px; font-weight: 400; white-space: normal; margin-bottom: 16px; }
  body .wf-home-hero .hero-copy .eyebrow { font-size: 12px; white-space: normal; flex-wrap: wrap; }
  body .wf-home-hero .hero-copy .wf-hero-description { font-size: 16px; line-height: 1.6; }
  body .wf-home-hero .hero-actions { width: 100%; max-width: 400px; justify-self: start; flex-direction: row; flex-wrap: wrap; gap: 12px; }
  body .wf-home-hero .hero-actions a { width: auto; flex: 1 1 160px; font-size: 14px; }
  body .wf-home .trust-copy strong { font-size: 13px; font-weight: 600; }
  body .wf-home .trust-copy span { font-size: 12px; }
  body .wf-home .trust-card:is(:hover, :focus-visible) .trust-copy :is(strong, span) { color: var(--hover-solid); }
  body :is(.wf-icon-grid, .contact-options) { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
  body .wf-icon-card { gap: 12px; }
  body .wf-icon-card .wf-icon-frame { width: 140px; height: 140px; border-radius: 24px; }
  body .wf-icon-card > span:last-child { font-size: 14px; font-weight: 400; line-height: 1.5; }
  body .wf-grid-heading { font-weight: 400; margin: 32px 0 24px; }
  body .process { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
  body .process-step { padding: 40px 12px 12px; border: 1px solid transparent; border-radius: 12px; }
  body .process-step::before { top: 6px; left: 12px; font-size: 32px; font-weight: 300; }
  body .process-step h3 { margin: 8px 0; font-size: 16px; font-weight: 600; }
  body .process-step p { font-size: 14px; line-height: 1.6; }
  body .process-step.is-selected { background: var(--g5-color-selection); border-color: var(--hover-solid); }
  /* Homepage: all six stages fit in one row on phones and tablets. */
  body.wf-home #process .process { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; padding-block: 4px 8px; }
  body.wf-home #process .process-step { min-width: 0; padding: 40px 4px 8px; text-align: center; }
  body.wf-home #process .process-step::before { content: attr(data-stage); left: 50%; transform: translateX(-50%); }
  body.wf-home #process .process-step h3 { margin: 8px 0 0; font-size: 14px; line-height: 1.5; overflow-wrap: normal; word-break: normal; hyphens: none; }
  body.wf-home #process .home-stage-guide { margin-top: 12px; }
  body.wf-home #process .home-stage-guide summary { width: fit-content; min-height: 44px; padding-block: 12px; color: var(--heading); font-size: var(--home-phone-body-size, 14px); line-height: 1.5; cursor: pointer; }
  body.wf-home #process .home-stage-descriptions { display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: 12px; }
  body.wf-home #process .home-stage-descriptions h3 { margin: 0 0 4px; font-size: var(--g5-type-13); font-weight: 600; line-height: 1.5; }
  body.wf-home #process .home-stage-descriptions p { margin: 0; font-size: var(--home-phone-body-size, 14px); line-height: 1.6; }
  body .architectural-process-timeline { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px; list-style: none; padding: 0; margin: 0; }
  body .architectural-process-step { position: relative; min-width: 0; }
  body .architectural-process-step h3 { margin: 0 0 24px; font-weight: 600; }
  body .architectural-process-timeline img { width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: contain; }
  body .architectural-process-arrow { position: absolute; left: calc(100% + 8px); top: 50%; color: var(--hover-solid); width: 32px; height: 24px; cursor: default; pointer-events: none; }
  body .wf-package { padding: 32px; border-radius: 24px; background: var(--g5-color-selection); }
  body .wf-package-dark { background: var(--heading); color: var(--g5-color-white); }
  body .wf-package-dark h3 { color: var(--accent); }
  body .wf-package h3 { font-weight: 600; }

  /* Building-type icons use the same reversible rollouts on touch screens. */
  body :is(#extension-types, #garden-types).is-tabbed .extension-types-legacy { display: none; }
  body :is(#extension-types, #garden-types).is-tabbed .extension-tabs-desktop { display: block; }
  body .extension-type-tabs { display: flex; justify-content: center; gap: 48px; margin-bottom: 24px; }
  body .extension-type-tab { position: relative; min-width: 0; width: 200px; padding: 0; border: 0; background: transparent; font: inherit; color: var(--heading); cursor: pointer; }
  body .extension-type-tab .wf-icon-frame { position: relative; }
  body .extension-type-tab[aria-selected='true'] .wf-icon-frame { border: 2px solid var(--hover-solid); padding: 7px; background: var(--g5-color-selection); }
  body .extension-type-tab .extension-type-name { display: inline-flex; align-items: center; gap: 8px; }
  body .extension-type-chevron { width: 16px; height: 16px; flex: none; color: var(--hover-solid); transition: transform .2s ease; }
  body .extension-type-tab[aria-selected='true'] .extension-type-chevron { transform: rotate(180deg); }
  body .extension-tab-check { position: absolute; top: 8px; right: 8px; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--hover-solid); font-size: 13px; visibility: hidden; }
  body .extension-type-tab[aria-selected='true'] .extension-tab-check { visibility: visible; }
  body .extension-type-panel { padding: 0; border: 0; border-radius: 24px; background: var(--g5-color-selection); overflow: hidden; }
  body .extension-type-panel[hidden] { display: none; }
  body .extension-tabs-body { padding: 32px; }
  body .extension-layouts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
  body .extension-layout { border-top: 1px solid var(--g5-color-border); padding-top: 16px; }
  body :is(.extension-type-intro, .extension-layout) h3 { font-weight: 600; margin: 0 0 12px; }
  body .extension-layout-note { margin-block: 24px; }

  body .projects-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px 32px; }
  body .project-card .shot { aspect-ratio: 2 / 1; }
  body .project-card h3 { margin: 8px 0 0; font-size: 20px; font-weight: 600; line-height: 1.3; }
  body .project-card .meta { margin: 0; font-size: 13px; line-height: 1.3; }
  body.wf-site .wf-featured-projects .project-card h3 { margin-bottom: 0; }
  body .project-meta-line { display: block; }
  body .project-card .meta > br { display: none; }
  body .project-meta-stages { display: block; margin: 0; font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--hover-solid); }
  body .wf-extensions #projects { background: var(--background); color: var(--heading); }
  body .wf-extensions #projects :is(h2, h3, .sec-foot a) { color: var(--heading); }
  body .wf-extensions #projects .meta { color: var(--text); }
  body .wf-extensions #projects .rule { background: var(--rule); }
  body .sec-foot { margin-top: 24px; text-align: left; }
  body .wf-comparison-scroll { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
  body :is(.wf-extension-comparison, .brislington-comparison-table) { min-width: 650px; font-size: 13px; line-height: 1.5; }
  body :is(.wf-extension-comparison, .brislington-comparison-table) thead { background: var(--background); color: var(--heading); }
  body :is(.wf-extension-comparison, .brislington-comparison-table) :is(th, td) { border-bottom: 1px solid var(--g5-color-border); padding: 12px 16px; }
  body :is(.wf-extension-comparison, .brislington-comparison-table) .comparison-summary { background: var(--g5-color-selection); }
  body .wf-performance-grid > img { width: 100%; height: auto; max-height: none; aspect-ratio: 3 / 2; object-fit: cover; }

  /* All original quotations remain reachable in the compact carousel. */
  body.wf-home #testimonials.wf-carousel-ready .wrap > :is(.testimonial, .wf-review-heading), body.wf-home #testimonials.wf-carousel-ready .wf-reviews { display: none; }
  body .wf-testimonial-carousel { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; gap: 8px; align-items: center; }
  body .wf-testimonial-track { display: grid; min-width: 0; overflow: hidden; }
  /* Hidden slides still size the grid, preventing photo/text changes from
     collapsing the carousel and shifting the reader's scroll position. */
  body.wf-home #testimonials .wf-testimonial-slide { display: grid; grid-area: 1 / 1; align-self: center; grid-template-columns: minmax(0, 1fr); gap: 8px; visibility: hidden; pointer-events: none; }
  body.wf-home #testimonials .wf-testimonial-slide > .testimonial { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  body.wf-home #testimonials .wf-testimonial-slide:is(.is-active, .is-moving) { display: grid; visibility: visible; }
  body.wf-home #testimonials .wf-testimonial-slide.is-active { pointer-events: auto; }
  body.wf-home #testimonials .testimonial :is(blockquote, .who) { font-size: 16px; line-height: 1.6; }
  body.wf-home #testimonials .testimonial blockquote { font-weight: 400; }
  body.wf-home #testimonials .testimonial .who { margin-top: 16px; }
  body.wf-home #testimonials .testimonial img { width: 100%; height: auto; max-width: 320px; justify-self: center; }
  body .wf-testimonial-arrow { display: grid; place-items: center; width: 44px; height: 64px; padding: 0; border: 0; border-radius: 12px; background: transparent; color: var(--accent); font: 200 58px/1 Montserrat, sans-serif; cursor: pointer; }
  body .wf-testimonial-status { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  body.wf-home #testimonials .wf-review-heading { padding: 0; margin: 24px 0 0; background: transparent; color: var(--heading); }
  body.wf-home #testimonials .wf-review-heading a { color: var(--heading); }
  body.wf-home #testimonials .wf-testimonial-slide > .wf-review-heading { margin: 0; }
  body .wf-testimonial-arrow { translate: 0 calc(var(--testimonial-link-space, 0px) * -.5); }
  body.wf-home #process { scroll-margin-top: 88px; }
  body .wf-stars { color: var(--accent); }
  body :is(.wf-home #faq, .wf-architectural #design-planning-questions) .wf-faq { display: grid; gap: 16px; max-width: none; padding: 0; background: transparent; }
  body :is(.wf-home #faq, .wf-architectural #design-planning-questions) .wf-faq details { padding: 0; border: 1px solid var(--g5-color-border); border-radius: 24px; background: var(--background); }
  body :is(.wf-home #faq, .wf-architectural #design-planning-questions) .wf-faq summary { min-height: 48px; align-items: center; padding: 12px 16px; font-size: 14px; }
  body :is(.wf-home #faq, .wf-architectural #design-planning-questions) .wf-faq summary::after { flex: none; }
  body :is(.wf-home #faq, .wf-architectural #design-planning-questions) .wf-faq details[open] { border-color: var(--hover-solid); }
  body :is(.wf-home #faq, .wf-architectural #design-planning-questions) .wf-faq details > div { padding: 0 16px 16px; }
  body .wf-cta, body :is(#brislington-enquiry, #portishead-enquiry, #paulton-enquiry, #chepstow-enquiry) { padding-block: 48px; background: var(--g5-color-stone); color: var(--heading); }
  body .wf-cta .wrap, body :is(#brislington-enquiry, #portishead-enquiry, #paulton-enquiry, #chepstow-enquiry) .wrap { display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
  body :is(.wf-cta, #brislington-enquiry, #portishead-enquiry, #paulton-enquiry, #chepstow-enquiry) h2 { color: var(--heading); border: 0; margin: 0 0 16px; }
  body :is(.wf-cta, #brislington-enquiry, #portishead-enquiry, #paulton-enquiry, #chepstow-enquiry) p { color: var(--text); margin: 0; }

  /* Readable project opening: keep the menu anchored without compressing the copy. */
  body.project-viewport-page .project-opening-shell { position: relative; top: auto; height: auto; min-height: calc(100svh - var(--project-masthead-height)); }
  body.project-viewport-page .project-opening-stage { height: auto; }
  body.project-viewport-page .project-intro { padding: 32px 0 !important; }
  body.project-viewport-page .project-intro > .wrap { height: auto; }
  body.project-viewport-page .project-intro-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
  body.project-viewport-page .project-lead-image { height: auto; min-height: 0; }
  body.project-viewport-page .project-lead-image img { height: auto; max-height: none; min-height: 0; }
  body.project-viewport-page .project-facts-band { height: auto; }
  body.project-viewport-page .project-facts { height: auto; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body.project-viewport-page .project-facts > div { padding: 16px; border-bottom: 1px solid rgba(255,255,255,.2); }
  body.project-viewport-page .project-facts dt { font-size: 12px; line-height: 1.5; letter-spacing: .08em; }
  body.project-viewport-page .project-facts dd { font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
  body .project-story figcaption { font-size: 13px; line-height: 1.5; margin-top: 8px; }
  body .project-chapter-dark, body .project-details { background: var(--background); color: var(--text); }
  body .chapter-heading-light :is(h2, p) { color: var(--heading); border-color: var(--rule); }
  body .chapter-number { font-size: 40px; font-weight: 300; }
  body .chapter-heading { grid-template-columns: 48px minmax(0, 1fr); gap: 24px; margin-bottom: 32px; }
  body .chapter-heading > p { grid-column: 2; margin: 0; }
  body.paulton-page .chapter-heading { grid-template-columns: 1fr; }
  body.paulton-page .chapter-heading > p { grid-column: auto; }
  body .opposite-card { border-radius: 24px; overflow: hidden; }
  body .opposite-dark { background: var(--heading); }
  body .opposite-dark .opposite-copy :is(h3, p) { color: var(--g5-color-white); }
  body .opposite-dark .opposite-copy span { color: var(--accent); }
  body .opposite-light { background: var(--g5-color-stone); }
  body .opposite-light .opposite-copy :is(h3, p, span) { color: var(--heading); }
  body .opposite-copy { padding: 24px; }
  body .detail-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: auto; max-height: none; }
  body .detail-mosaic img { height: auto; min-height: 0; }
  body .result-gallery { margin-inline: 0; }
  body .stage-tabs { max-width: 100%; scroll-padding-inline: 8px; overscroll-behavior-inline: contain; }
  body .stage-tab { min-height: 48px; font-size: 14px; }
  body .stage-folder { padding: 24px; }
  body .stage-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
  body .stage-folder:not(#folder-brief):not(#folder-roof) .stage-photo img { aspect-ratio: 3 / 4; object-fit: cover; }
  body.chepstow-page #folder-roof .stage-gallery { grid-template-columns: 1fr; }
  body.chepstow-page #folder-roof .stage-photo img { aspect-ratio: auto; object-fit: contain; }
  body .case-quote blockquote { font-size: 16px; font-weight: 400; line-height: 1.6; }
  body .case-testimonial { display: grid; grid-template-columns: 1fr; gap: 24px; }
  body .case-testimonial-photo { width: 100%; max-width: 320px; height: auto; margin: 0; }
  body .project-lightbox figcaption { font-size: 13px; flex-wrap: wrap; gap: 8px; }
  body .wf-image-dialog { padding: 16px; max-width: calc(100vw - 24px); }
  body .wf-image-dialog button { min-height: 44px; border-radius: 24px; }

  body.wf-contact .contact-content { font-size: 16px; padding-block: 48px; }
  body.wf-contact .contact-choice-group { padding-inline: 0; }
  body.wf-contact .contact-process { margin-inline: 0; }
  body.wf-contact .contact-details { background: var(--g5-color-selection); padding: 24px; border-radius: 24px; }
  body.wf-contact .contact-stages > li { background: var(--g5-color-stone); border-color: var(--g5-color-border); }
  body.wf-contact .contact-stages > li.is-selected { background: var(--g5-color-selection); border-color: var(--hover-solid); }
  body.wf-contact .contact-option > input:checked + .wf-icon-card .wf-icon-frame { background: var(--g5-color-selection); }
  body.wf-contact .contact-field :is(input, textarea), body.wf-contact .contact-upload input { font-size: 16px; }
  body.wf-contact .contact-field :is(input, textarea) { min-height: 48px; border-color: var(--g5-color-border); }
  body.wf-contact .contact-submit { min-height: 48px; font-weight: 600; }
  body.wf-contact :is(.contact-choice-help, .contact-details-help, .contact-process-summary) { font-size: 13px; }
  body.wf-contact .contact-options .wf-icon-card > span:last-child { font-size: 14px; }
  body .site-footer { padding-block: 32px 24px; background: var(--heading); color: var(--g5-color-white); font-size: 13px; }
  body .footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
  body .site-footer .footer-cols h3 { display: block; color: var(--g5-color-white); font-size: 14px; font-weight: 600; margin: 0 0 12px; }
  body .site-footer .footer-cols .wf-footer-subheading { margin-top: 24px; }
  body .site-footer .footer-brand-link { display: block; width: 112px; height: 112px; max-width: 100%; padding: 0; background: transparent; margin: 0 0 12px; }
  body .site-footer .footer-brand-mark { display: block; width: 100%; height: 100%; object-fit: contain; object-position: left center; background: transparent; filter: none; mix-blend-mode: normal; }
  body .site-footer .footer-location { display: flex; flex-direction: column; gap: 8px; }
  body .site-footer p, body .site-footer li { margin-bottom: 8px; }
  body .site-footer a { overflow-wrap: anywhere; }
  body .site-footer .copyright { margin-top: 32px; gap: 16px; font-size: 12px; }
  body .site-footer .copyright a, body #g5-cookie-settings { min-height: 44px; display: inline-flex; align-items: center; }
}
/* A deliberate, body-sized phone menu; tablet/desktop keep their existing menu. */
@media (max-width: 600px), (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  html body .site-header nav.phone-menu { display: grid; grid-template-rows: 0fr; visibility: hidden; transition: grid-template-rows .55s ease, visibility 0s linear .55s; background: var(--g5-color-white); border-radius: 0 0 24px 24px; overflow: hidden; box-shadow: 0 12px 24px rgba(0,0,0,.12); }
  html body .site-header nav.phone-menu.is-open { grid-template-rows: 1fr; visibility: visible; transition-delay: 0s; }
  html body .phone-menu-shell { min-height: 0; overflow: hidden; }
  html body .phone-menu-panel { padding: 16px 24px 24px; max-height: calc(100dvh - var(--home-phone-contact-height) - var(--home-phone-menu-height)); overflow-y: auto; overscroll-behavior: contain; }
  html body .phone-menu-label { margin: 0 0 8px; font-size: var(--g5-phone-body-size); font-weight: 600; line-height: 1.6; letter-spacing: .12em; text-transform: uppercase; color: var(--heading); }
  html body .phone-menu :is(.nav, .nav.open) { position: static; display: flex; gap: 0; padding: 0; margin: 0; max-height: none; overflow: visible; background: transparent; box-shadow: none; }
  html body .phone-menu .nav > li:not(.nav-cta) { position: relative; border-bottom: 0; }
  html body .phone-menu .nav > li:not(.nav-cta)::after { content: ''; position: absolute; left: 12px; right: 12px; bottom: 0; height: 1px; background: var(--g5-color-border); pointer-events: none; }
  html body .phone-menu .nav > li > a { width: 100%; min-height: 44px; padding: 12px 8px; font-size: var(--g5-phone-body-size); line-height: 1.6; font-weight: 400; color: var(--heading); text-decoration: none; border: 0; border-radius: 12px; }
  html body .phone-menu #nav a { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body .phone-menu .nav a::after { display: none; }
  html body .phone-menu .nav > li > a:is(:hover, :focus-visible, [aria-current]), html body .phone-menu .nav > .is-current-section > a { background: var(--g5-color-hover); color: var(--heading); text-decoration: none; }
  html body .phone-menu .has-sub > a { width: calc(100% - 44px); }
  html body .phone-menu .has-sub > a .caret { display: none; }
  html body .phone-service-toggle { width: 100%; min-height: 44px; display: flex; align-items: center; justify-content: space-between; padding: 6px 8px; border: 0; border-radius: 12px; background: transparent; color: var(--heading); font: inherit; font-size: var(--g5-phone-body-size); font-weight: 400; line-height: 1.6; text-align: left; cursor: pointer; }
  html body .phone-service-toggle:is(:hover, :focus-visible) { background: var(--g5-color-hover); }
  html body .phone-menu .is-current-section > .phone-service-toggle, html body .phone-current-service { background: var(--g5-color-hover); }
  html body .phone-service-toggle svg { flex: none; width: 32px; height: 32px; fill: none; stroke: currentColor; stroke-width: 1.5; transition: transform .3s ease; }
  html body .phone-service-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
  html body .phone-services-rollout { display: grid; grid-template-rows: 0fr; visibility: hidden; transition: grid-template-rows .55s ease, visibility 0s linear .55s; }
  html body .phone-services-open .phone-services-rollout { grid-template-rows: 1fr; visibility: visible; transition-delay: 0s; }
  html body .phone-services-shell { min-height: 0; overflow: hidden; }
  html body .phone-menu .subnav { margin: 0 0 8px; width: 100%; padding: 8px; gap: 4px; border-radius: 24px; }
  html body .phone-menu .subnav[hidden] { display: none !important; }
  html body .phone-menu .subnav a { min-height: 44px; padding: 12px 16px; font-size: var(--g5-phone-body-size); line-height: 1.6; font-weight: 400; }
  html body .phone-menu .nav .nav-cta > a { display: flex; width: 100%; min-height: 48px; margin: 16px 0 0; padding: 12px 24px; border-radius: 999px; background: var(--accent); font-weight: 600; transform: none; }
  html body .phone-menu .nav .nav-cta > a:is(:hover, :focus-visible, [aria-current]) { background: var(--hover-solid); }
  html body .burger { position: relative; }
  html body .burger span { transition: opacity .3s ease; }
  html body .burger[aria-expanded="true"] span { opacity: 0; }
  html body .phone-menu-up-arrow { position: absolute; width: 32px; height: 32px; left: 50%; top: 50%; transform: translate(-50%, -40%); opacity: 0; fill: none; stroke: var(--heading); stroke-width: 1.5; transition: transform .3s ease, opacity .3s ease; }
  html body .burger[aria-expanded="true"] .phone-menu-up-arrow { transform: translate(-50%, -50%); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  html body .site-header nav.phone-menu, html body .phone-services-rollout, html body .phone-service-toggle svg, html body .phone-menu-up-arrow, html body .burger span { transition: none; }
}

@media (max-width: 860px) {
  body .wrap { padding-inline: 24px; }
  body .wf-hero-grid, body .wf-performance-grid { grid-template-columns: 1fr; }
  body .wf-hero-copy { order: -1; }
  body :is(.wf-icon-grid, .services-projects-desktop, .contact-options) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body .wf-package-grid { grid-template-columns: 1fr; }
  body .architectural-process-timeline { grid-template-columns: 1fr; gap: 64px; }
  body .architectural-process-timeline img { max-height: 400px; aspect-ratio: auto; }
  body .architectural-process-arrow { top: calc(100% + 8px); left: calc(50% - 16px); transform: rotate(90deg); font-size: 48px; }
  body.project-viewport-page .project-intro-grid { grid-template-columns: 1fr; grid-template-rows: auto; }
  body.project-viewport-page .project-lead-image img { max-height: 420px; object-fit: contain; }
  body .stage-folder-heading { grid-template-columns: 1fr; gap: 16px; }
  body .editorial-grid { grid-template-columns: 1fr; gap: 32px; }
  body .article-contents { position: static; }
}
@media (max-width: 600px), (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  /* Phone footer: company information and Quick Links side by side only. */
  body .footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 16px; }
  body .footer-cols > div:is(:nth-child(2), :nth-child(4)) { display: none; }
  body .footer-cols > div:first-child { grid-column: 1; grid-row: 1; }
  body .footer-cols > div:nth-child(3) { grid-column: 2; grid-row: 1; }
  /* Shared phone tokens from the approved homepage. */
  body {
    --g5-type-13: 12px;
    --g5-type-12: 10px;
    --g5-type-20: 14px;
    --g5-type-30: 18px;
    --g5-type-36: 20px;
    --home-phone-body-size: 10px;
    --home-phone-trust-mark-width: 86.4px;
    --home-phone-stage-gutter: 24px;
    --home-phone-heading-gap: 12px;
    --home-phone-menu-height: 80px;
    --home-phone-contact-height: calc(var(--home-phone-menu-height) * .5);
    font-size: var(--home-phone-body-size);
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }
  body.wf-home main :is(p, li, blockquote) { font-size: var(--home-phone-body-size); line-height: 1.6; }
  body.wf-home :is(h2, .sec-head h2, .wf-cta h2) { font-size: var(--g5-type-30); line-height: 1.3; }
  body.wf-home :is(h3, .wf-grid-heading, .project-card h3) { font-size: var(--g5-type-20); line-height: 1.3; }
  body.wf-home .sec-head { margin-bottom: var(--home-phone-heading-gap); }
  body.wf-home :is(.wf-grid-heading, .wf-cta h2) { margin-bottom: var(--home-phone-heading-gap); }
  /* The contact banner, menu and hero together fill the initial phone viewport. */
  body.wf-home .wf-home-hero {
    min-height: 0;
    height: calc(100vh - var(--home-phone-contact-height) - var(--home-phone-menu-height));
    height: calc(100svh - var(--home-phone-contact-height) - var(--home-phone-menu-height));
  }
  body.wf-home .wf-home-hero::after { display: block; background: rgba(0,0,0,.2); }
  body.wf-home .wf-home-hero .wf-home-layout { position: relative; height: 100%; align-content: end; padding-block: 24px; gap: var(--home-phone-heading-gap); }
  body.wf-home .wf-home-hero .hero-copy { position: static; text-shadow: 0 2px 4px rgba(0,0,0,.75), 0 1px 12px rgba(0,0,0,.5); }
  body.wf-home .wf-home-hero .hero-copy :is(h1, .wf-hero-description) { text-shadow: 0 2px 4px rgba(0,0,0,.95), 0 0 12px rgba(0,0,0,.75); }
  body.wf-home .wf-home-hero .hero-copy h1 { font-size: var(--g5-type-36); line-height: 1.3; margin-bottom: var(--home-phone-heading-gap); }
  body.wf-home .wf-home-hero .hero-copy .wf-hero-description { font-size: var(--home-phone-body-size); line-height: 1.5; }
  body.wf-home .wf-home-hero .hero-copy .eyebrow { position: absolute; top: 24px; left: 24px; right: 24px; font-size: var(--g5-type-12); line-height: 1.5; letter-spacing: .4px; gap: 4px 8px; margin: 0; }
  body.wf-home .wf-home-hero .wf-featured-credit { flex-basis: 100%; }
  body.wf-home .wf-home-hero .wf-featured-credit::before { content: none; }
  body.wf-home .wf-home-hero .hero-actions { flex-direction: column; flex-wrap: nowrap; width: 100%; max-width: 400px; gap: var(--home-phone-heading-gap); }
  body.wf-home .wf-home-hero .hero-actions a { flex: none; width: 100%; min-height: 48px; }
  body.wf-home :is(.btn, .btn-ghost), body.wf-home .wf-home-hero .hero-actions a,
  body.wf-home .wireframe-nav a { font-size: var(--g5-type-13); line-height: 1.5; }
  body.wf-home .wf-icon-card > span:last-child { font-size: var(--home-phone-body-size); line-height: 1.5; }
  /* Keep the homepage's project and service icons in one compact phone row. */
  body.wf-home #services .wf-icon-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
  body.wf-home #services .wf-icon-grid + .wf-grid-heading { margin-top: 24px; }
  body.wf-home #services .wf-icon-card { min-width: 0; gap: 8px; }
  body.wf-home #services .wf-icon-frame { width: min(100%, 100px); height: auto; aspect-ratio: 1; padding: 4px; border-radius: 16px; }
  body.wf-home #services .wf-icon-art { border-radius: 12px; }
  body.wf-home #services .wf-icon-card > span:last-child { width: 100%; font-size: var(--home-phone-body-size); font-weight: 400; line-height: 1.6; overflow-wrap: anywhere; }
  body.wf-home #process .process { gap: 4px; margin-inline: calc(8px - var(--home-phone-stage-gutter)); }
  body.wf-home #process .process-step { padding: 40px 0 8px; container-type: inline-size; }
  body.wf-home #process .process-step::before { font-size: 32px; }
  body.wf-home #process .process-step h3 { font-size: min(var(--home-phone-body-size), 15cqw); }
  body.wf-home .trust-heading, body.wf-home .trust-copy span { font-size: var(--g5-type-12); line-height: 1.5; }
  body.wf-home .trust-copy strong { font-size: var(--home-phone-body-size); line-height: 1.5; }
  /* Equal logo columns line every accreditation caption up with FMB. */
  body.wf-home .trust-card { display: grid; grid-template-columns: var(--home-phone-trust-mark-width) minmax(0, 1fr); }
  body.wf-home .trust-mark { justify-self: center; }
  body.wf-home .trust-copy { min-width: 0; text-align: left; }
  body.wf-home .process-step h3 { font-size: var(--g5-type-13); line-height: 1.5; }
  body.wf-home .process-step p { font-size: var(--home-phone-body-size); line-height: 1.6; }
  body.wf-home .project-card .meta { font-size: var(--home-phone-body-size); line-height: 1.5; }
  body.wf-home .wf-home-text-link { font-size: var(--home-phone-body-size); font-weight: 400; line-height: 1.6; }
  body.wf-home #testimonials .testimonial :is(blockquote, .who, .who span) { font-size: var(--home-phone-body-size); line-height: 1.6; }
  body :is(.wf-home #faq, .wf-architectural #design-planning-questions) .wf-faq summary { font-size: var(--home-phone-body-size); font-weight: 400; line-height: 1.5; }
  body.wf-home .site-footer, body.wf-home .site-footer :is(p, li, a) { font-size: var(--home-phone-body-size); line-height: 1.6; }
  body.wf-home .site-footer .footer-cols h3 { font-size: var(--g5-type-13); line-height: 1.3; }
  body.wf-home .site-footer .copyright, body.wf-home .site-footer .copyright a { font-size: var(--home-phone-body-size); line-height: 1.5; }
  body.wf-home .site-footer .copyright button { font-size: var(--g5-type-13); line-height: 1.5; }
  html body.wf-home #g5-consent h2 { font-size: var(--g5-type-20); line-height: 1.3; }
  html body.wf-home #g5-consent p { font-size: var(--home-phone-body-size); line-height: 1.6; }
  html body.wf-home #g5-consent button { font-size: var(--g5-type-13); line-height: 1.6; }
  /* Shared phone header: keep Menu at the right edge and contacts icon-only. */
  html body .site-header > .wrap { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 44px; gap: 0; padding-inline: 16px; min-height: var(--home-phone-menu-height); }
  body .site-header .brand { grid-column: 1; grid-row: 1; justify-self: start; }
  body .site-header > .wrap > .burger { grid-column: 2; grid-row: 1; margin: 0; justify-self: end; }
  body .site-header > .wrap > nav { position: absolute; top: 100%; left: 0; right: 0; width: auto; }
  body .site-header .nav { top: 0; }
  body .site-header .nav.open { max-height: calc(100dvh - var(--home-phone-contact-height) - var(--home-phone-menu-height)); }
  html body .topbar > .wrap { display: flex; flex-wrap: nowrap; justify-content: flex-end; gap: 4px; padding: 0 16px; height: var(--home-phone-contact-height); align-items: center; }
  /* Keep the link text as its accessible name, but show only the contact icons. */
  body .topbar > .wrap > a { width: 44px; height: var(--home-phone-contact-height); min-height: 0; justify-content: center; gap: 0; font-size: 0; line-height: 0; white-space: nowrap; }
  body .topbar .social { margin-left: 0; align-items: center; gap: 4px; }
  body .topbar .social a { width: 44px; height: var(--home-phone-contact-height); min-height: 0; justify-content: center; }
  body .topbar svg { flex: none; width: 18px; height: 18px; }
}
@media (max-width: 600px) and (max-height: 520px) and (orientation: portrait) {
  body.wf-home .wf-home-hero .wf-home-layout { padding-block: 8px; }
}
@media (min-width: 601px) and (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  body.wf-home { --home-phone-trust-mark-width: 98.4px; }
}
@media (max-width: 360px) {
  body { --home-phone-stage-gutter: 16px; }
  body.wf-home .wf-home-hero .hero-copy .eyebrow { left: 16px; right: 16px; }
}
@media (min-width: 861px) and (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  body { --home-phone-stage-gutter: 32px; }
}
@media (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  body { --home-phone-menu-height: 56px; }
  body .site-header .brand img { height: 40px; }
  body.wf-home .wf-home-hero .wf-home-layout { grid-template-columns: minmax(0, 1fr) minmax(140px, 200px); padding: 8px 16px; gap: 16px; }
  body.wf-home .wf-home-hero .hero-copy .eyebrow { top: 16px; left: 16px; right: 16px; }
}
@media (max-width: 600px) {
  body .wrap, body.wf-site .wrap { padding-inline: 24px; }
  body .topbar .wrap { padding-inline: 16px; gap: 4px 12px; font-size: 12px; }
  body :is(.wf-section, .wf-hero, .case-section, .project-chapter, .project-opposites, .blog-index, .legal) { padding-block: 40px; }
  body .wf-section + .wf-section { padding-top: 40px; }
  body :is(h1, h2, .wf-site h1, .wf-site h2, .project-intro-copy h1, .chapter-heading h2) { font-size: 30px; }
  body .sec-head { margin-bottom: 24px; }
  body .wf-icon-card .wf-icon-frame { width: 120px; height: 120px; }
  body :is(.wf-icon-grid, .services-projects-desktop, .contact-options) { gap: 24px 16px; }
  body .process { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 16px; }
  body .process-step { padding-inline: 8px; }
  body .process-step::before { left: 8px; }
  body .projects-grid, body .wf-image-pair, body .new-homes-design-grid, body .lofts-design-grid, body .wf-package-grid { grid-template-columns: 1fr; gap: 32px; }
  body .extension-type-tabs { gap: 24px; }
  body .extension-type-tab { width: calc((100% - 24px) / 2); }
  body .extension-type-tab .wf-icon-frame { width: 120px; height: 120px; }
  body .extension-type-tab .extension-type-name { font-size: 14px; }
  body .extension-layouts { grid-template-columns: 1fr; }
  body .extension-tabs-body, body .wf-package { padding: 24px; }
  body .wf-testimonial-carousel { grid-template-columns: 44px minmax(0, 1fr) 44px; gap: 0; margin-inline: -16px; }
  body .wf-testimonial-arrow { align-self: center; margin-top: 0; }
  body .wf-testimonial-track { min-height: 0; }
  body .chapter-heading > p { grid-column: 1 / -1; }
  body .project-facts, body.project-viewport-page .project-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* One central divider and edge-to-edge row dividers, including odd last rows. */
  body.project-viewport-page .project-facts { position: relative; --project-facts-gutter: 24px; }
  body.project-viewport-page .project-facts::after { content: ''; position: absolute; top: 0; bottom: 0; left: 50%; width: 1px; background: rgba(255,255,255,.2); pointer-events: none; }
  body.project-viewport-page .project-facts > div { position: relative; border-right: 0; border-bottom: 1px solid transparent; }
  body.project-viewport-page .project-facts > div:nth-child(2n+3)::before { content: ''; position: absolute; top: 0; left: calc(-1 * var(--project-facts-gutter)); width: calc(200% + 2 * var(--project-facts-gutter)); height: 1px; background: rgba(255,255,255,.2); pointer-events: none; }
  body .drawing-stage, body .visual-study-grid, body .opposites-grid, body .detail-mosaic, body .fabric-sequence, body .transformation-triptych, body .brislington-gallery { grid-template-columns: 1fr; gap: 24px; }
  body .result-gallery, body .result-gallery-group { margin-inline: 0; }
  body .stage-gallery, body #folder-brief .stage-gallery { grid-template-columns: 1fr; }
  body .stage-folder { padding: 16px; }
  body .stage-photo img { max-height: none; }
  body .stage-gallery figure:last-child { grid-column: auto; }
  body .article-contents ol { grid-template-columns: 1fr; }
  body.wf-contact .contact-details { padding: 24px 16px; }
}
@media (max-width: 360px) {
  body .wrap, body.wf-site .wrap { padding-inline: 16px; }
  body.project-viewport-page .project-facts { --project-facts-gutter: 16px; }
  body .wf-icon-card .wf-icon-frame, body .extension-type-tab .wf-icon-frame { width: 100px; height: 100px; }
}
@media (max-width: 1100px) and (prefers-reduced-motion: reduce) {
  body :is(.btn, .btn-ghost, .wf-icon-frame, .stage-photo img, .extension-type-chevron, .wf-testimonial-arrow) { transition: none; }
  body :is(.btn:hover, .wf-icon-card:hover .wf-icon-frame, .stage-photo:hover img) { transform: none; }
}

/* Approved phone typography shared by every page; tablet/desktop stay unchanged.
   Homepage-specific composition and its responsive six-stage labels are retained. */
@media (max-width: 600px), (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  body {
    --g5-type-36: 20px;
    --g5-type-30: 18px;
    --g5-type-20: 14px;
    --g5-type-13: 12px;
    --g5-type-12: 10px;
    --g5-phone-body-size: 10px;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }
  html body:not(.wf-home) { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body:not(.wf-home) :is(h1, .wf-hero-copy h1, .project-intro-copy h1, .article-intro h1, .sec-head h1, .confirmation-card h1) { font-size: var(--g5-type-36); line-height: 1.3; }
  html body:not(.wf-home) :is(h2, .sec-head h2, .chapter-heading h2, .opposites-heading h2, .result-heading h2, .article-body .sec-head h2, .wf-cta h2) { font-size: var(--g5-type-30); line-height: 1.3; }
  html body:not(.wf-home) :is(h3, h4, .project-card h3, .opposite-copy h3, .wf-package h3, .wf-comparison caption) { font-size: var(--g5-type-20); line-height: 1.3; }
  html body:not(.wf-home) :is(p, li, blockquote, figcaption, dt, dd, th, td) { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body:not(.wf-home) :is(.process-step p, .project-card .meta, .project-facts dt, .project-facts dd, .opposites-heading > p, .result-heading > p, .contact-stage-descriptions p, .contact-upload p, .enquire .lede, .enquire .contact-lines li, .confirmation-card p) { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body:not(.wf-home) :is(.wf-points, .project-description, .article-body, .article-summary, .contact-content, .wf-choice-copy, .wf-faq summary, .wf-choices summary, .contact-stage-guide summary, .article-contents, .source-link, .article-source-note, .article-meta, .project-meta-stages, .project-eyebrow, .chapter-kicker, .project-back, .case-back, .case-kicker, .wf-stage-label, .wf-enlarge, .sec-foot, .wf-home-text-link, .project-support-link, .project-film-link, .opposite-copy > span, .result-gallery-group h3 > span, .testimonial .who, .testimonial .who span, .pull-quote cite, .contact-process-label, .contact-stage-number, .contact-choice-help, .contact-details-help, .contact-process-summary, .contact-choice-error, .form-status, .counter) { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body:not(.wf-home) :is(.wf-icon-card > span:last-child, .contact-options .wf-icon-card > span:last-child, .extension-type-tab .extension-type-name, .wf-type-icons figcaption) { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body:not(.wf-home) :is(.process-step h3, .contents-heading, .contact-stage-descriptions h3) { font-size: var(--g5-type-13); line-height: 1.5; }
  html body.wf-contact :is(.contact-choice-group legend, .contact-details h2) { font-size: var(--g5-type-30); line-height: 1.3; }
  html body.wf-contact :is(.contact-stages h3, .contact-field label, .contact-upload label) { font-size: var(--g5-phone-body-size); line-height: 1.5; }
  html body:not(.wf-home) :is(.btn, .btn-ghost, .confirmation-actions a, .contact-submit, .stage-tab, .wireframe-nav > li > a, .wireframe-nav .subnav a, .project-film-link a, .wf-image-dialog > button) { font-size: var(--g5-type-13); line-height: 1.5; }
  html body:not(.wf-home) .site-footer,
  html body:not(.wf-home) .site-footer :is(p, li, a, .copyright) { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body:not(.wf-home) .site-footer .footer-cols h3,
  html body:not(.wf-home) .site-footer .copyright button { font-size: var(--g5-type-13); line-height: 1.3; }
  html body:not(.wf-home) .topbar .wrap { font-size: var(--g5-type-13); line-height: 1.5; }
  html body:not(.wf-home) .project-lightbox figcaption,
  html body:not(.wf-home) .wf-image-dialog p { font-size: var(--g5-phone-body-size); line-height: 1.5; }
  html body:not(.wf-home) #g5-consent h2 { font-size: var(--g5-type-20); line-height: 1.3; }
  html body:not(.wf-home) #g5-consent p { font-size: var(--g5-phone-body-size); line-height: 1.6; }
  html body:not(.wf-home) #g5-consent button { font-size: var(--g5-type-13); line-height: 1.5; }
  /* Native entry fields remain 16px to avoid iOS focus zoom; labels/copy are 10px.
     Font changes never shrink the existing 44/48px touch targets. */
  html body:not(.wf-home) :is(input, select, textarea),
  html body.wf-contact :is(.contact-field input, .contact-field textarea, .contact-upload input) { font-size: 16px; line-height: 1.5; }

  /* Share the approved homepage rhythm without changing its composition. */
  html body:not(.wf-home) .sec-head { margin-bottom: var(--home-phone-heading-gap); }
  html body:not(.wf-home) :is(.wf-hero-copy h1, .project-intro-copy h1, .wf-cta h2) { margin-bottom: var(--home-phone-heading-gap); }
  html body:not(.wf-home) .wf-grid-heading { margin-block: 32px var(--home-phone-heading-gap); }
  html body:not(.wf-home) :is(.wf-icon-grid, .services-projects-desktop, .contact-options) + .wf-grid-heading { margin-top: 24px; }
  html body:not(.wf-home) .chapter-heading { gap: 12px; margin-bottom: var(--home-phone-heading-gap); }
  html body:not(.wf-home) .stage-folder-heading { gap: 12px; margin-bottom: 24px; }
  html body:not(.wf-home) .project-intro-grid { gap: 24px; }
  html body:not(.wf-home) .hero-actions { flex-direction: column; flex-wrap: nowrap; gap: 12px; width: 100%; max-width: 400px; }
  html body:not(.wf-home) .hero-actions :is(.btn, .btn-ghost) { width: 100%; flex: none; }
  html body:not(.wf-home) .btn-ghost:is(:hover, :focus-visible) { background: var(--secondary); color: var(--heading); border-color: var(--secondary); }
  html body:not(.wf-home) .page-hero { min-height: calc(100svh - var(--home-phone-contact-height) - var(--home-phone-menu-height)); }
  html body:not(.wf-home) .page-hero :is(h1, p) { text-shadow: 0 2px 4px rgba(0,0,0,.95), 0 0 12px rgba(0,0,0,.75); }
  html body:not(.wf-home) #process { scroll-margin-top: calc(var(--home-phone-menu-height) + 8px); }
  /* Override older short-landscape masthead rules on the four case studies. */
  html body.project-viewport-page .topbar > .wrap { height: var(--home-phone-contact-height); padding-block: 0; }
  html body.project-viewport-page .site-header > .wrap { min-height: var(--home-phone-menu-height); }
  html body.project-viewport-page .site-header .brand img { height: min(54px, calc(var(--home-phone-menu-height) - 16px)); }

  /* Four project/service choices in one row, with the approved body-size labels. */
  html body:not(.wf-home) :is(.wf-icon-grid, .services-projects-desktop, .contact-options) { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
  html body:not(.wf-home) :is(.wf-icon-grid, .services-projects-desktop, .contact-options) .wf-icon-card { min-width: 0; gap: 8px; }
  html body:not(.wf-home) :is(.wf-icon-grid, .services-projects-desktop, .contact-options) .wf-icon-frame { width: min(100%, 100px); height: auto; aspect-ratio: 1; padding: 4px; border-radius: 16px; }
  html body:not(.wf-home) :is(.wf-icon-grid, .services-projects-desktop, .contact-options) .wf-icon-art { border-radius: 12px; }
  html body:not(.wf-home) :is(.wf-icon-grid, .services-projects-desktop, .contact-options) .wf-icon-card > span:last-child { width: 100%; font-size: var(--g5-phone-body-size); font-weight: 400; line-height: 1.6; overflow-wrap: anywhere; }
  html body.wf-contact .contact-choice-help { margin-bottom: 12px; }
  html body.wf-contact .contact-option > input:checked + .wf-icon-card .wf-icon-frame { padding: 3px; }
  /* Services uses the identical content gutter and icon sizes as Home. */
  html body.wf-services-overview #services :is(.wf-icon-grid, .services-projects-desktop, .wf-grid-heading) { width: calc(100% - 2 * var(--home-phone-stage-gutter)); margin-inline: auto; }
  /* Equal, compact rows retain separate 24px policy/settings touch targets. */
  html body .site-footer .copyright { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 4px; font-size: var(--home-phone-body-size); line-height: 1.6; }
  html body .site-footer .copyright > :is(span, a, button), html body .site-footer .copyright #g5-cookie-settings { display: flex; align-items: center; min-height: 24px; margin: 0; padding: 0; font-size: inherit; line-height: inherit; text-align: left; }

  /* Keep all six stages coast-to-coast; descriptions remain in the closed guide. */
  html body:not(.wf-home) .mobile-process-row { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; padding-block: 4px 8px; margin-inline: calc(8px - var(--home-phone-stage-gutter)); }
  html body:not(.wf-home) .mobile-process-row .process-step { min-width: 0; padding: 40px 0 8px; container-type: inline-size; text-align: center; }
  html body:not(.wf-home) .mobile-process-row .process-step::before { content: attr(data-stage); top: 6px; left: 50%; transform: translateX(-50%); font-size: 32px; }
  html body:not(.wf-home) .mobile-process-row .process-step h3 { margin: 8px 0 0; font-size: min(var(--g5-phone-body-size), 15cqw); line-height: 1.5; overflow-wrap: normal; word-break: normal; hyphens: none; }
  html body:not(.wf-home) .mobile-stage-guide { margin-top: 12px; }
  html body:not(.wf-home) .mobile-stage-guide summary { width: fit-content; min-height: 44px; padding-block: 12px; font-size: var(--g5-phone-body-size); line-height: 1.5; color: var(--heading); cursor: pointer; }
  html body:not(.wf-home) .mobile-stage-descriptions { display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: 12px; }
  html body:not(.wf-home) .mobile-stage-descriptions h3 { margin: 0 0 4px; font-size: var(--g5-type-13); font-weight: 600; line-height: 1.5; }
  html body:not(.wf-home) .mobile-stage-descriptions p { margin: 0; }
  html body.wf-contact .contact-stages { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; margin-inline: calc(8px - var(--home-phone-stage-gutter)); }
  html body.wf-contact .contact-stages > li { min-width: 0; padding: 8px 0; text-align: center; container-type: inline-size; }
  html body.wf-contact .contact-stages .contact-stage-number { font-size: 32px; font-weight: 300; line-height: 1.3; margin-bottom: 8px; }
  html body.wf-contact .contact-stages h3 { font-size: min(var(--g5-phone-body-size), 15cqw); line-height: 1.5; overflow-wrap: normal; word-break: normal; hyphens: none; }
  html body.wf-contact .contact-stage-guide summary { min-height: 44px; padding-block: 12px; }
  /* Small, non-overlapping help controls reuse the enquiry form's popup pattern. */
  html body .mobile-process-row .process-step.has-stage-help,
  html body.wf-home #process .mobile-process-row .process-step.has-stage-help { position: relative; padding-top: 58px; }
  html body .mobile-process-row .process-step.has-stage-help::before { top: 28px; }
  html body .mobile-stage-help { position: absolute; top: 2px; right: 2px; display: grid; place-items: center; box-sizing: border-box; width: 28px; height: 28px; margin: 0; padding: 0; border: 0; background: transparent; color: var(--heading); font: inherit; cursor: pointer; }
  html body .mobile-stage-help > span { display: grid; place-items: center; width: 16px; height: 16px; border: 1px solid var(--g5-color-border); border-radius: 50%; font-size: 12px; line-height: 1; font-weight: 400; }
  html body .mobile-stage-help:is(:hover, [aria-expanded='true']) > span { border-color: var(--hover-solid); background: var(--accent); }
  html body .mobile-stage-help:focus-visible { outline: 2px solid var(--hover-solid); outline-offset: 2px; }
  html body .mobile-stage-tooltip { position: fixed; z-index: 10010; box-sizing: border-box; width: 320px; max-width: calc(100% - 16px); margin: 0; padding: 16px; border: 1px solid var(--g5-color-border); border-radius: 12px; background: var(--g5-color-selection); color: var(--text); font-size: var(--g5-phone-body-size); line-height: 1.6; box-shadow: 0 4px 12px rgba(0,0,0,.12); }
  html body .mobile-stage-tooltip[hidden] { display: none; }
  html body .mobile-stage-tooltip p { margin: 0; font-size: inherit; line-height: inherit; }
}
