/* Shared layout: one spacing scale, explicit responsive layouts. */
:root {
  --gutter: clamp(1rem, 4vw, 3rem);
  --shell-width: 1440px;
  --section-space: clamp(2.5rem, 5.5vw, 5rem);
  --layout-gap: clamp(1.5rem, 3vw, 3rem);
  --card-pad: clamp(1.25rem, 2.4vw, 2rem);
  --text-gap: 1.125rem;
}
body { line-height: 1.65; }
h1, h2, h3 { text-wrap: balance; }
.section, .header, footer { max-width: var(--shell-width); padding-inline: var(--gutter); }
.section { padding-block: var(--section-space); }
.section-heading { display: flex; gap: var(--layout-gap); align-items: end; margin-bottom: clamp(1.5rem, 3vw, 2.5rem); }
.section-heading > * { min-width: 0; }
.section-heading h2 { font-size: clamp(2rem, 3.6vw, 3.5rem); line-height: 1.15; margin-bottom: 0; }
.section-heading > p { margin: 0; }
.eyebrow { font-size: .875rem; margin-bottom: 1rem; }
p { margin-bottom: var(--text-gap); }
.button { min-height: 48px; max-width: 100%; white-space: normal; text-align: center; gap: 1.25rem; }
.button > span { flex-shrink: 0; }
.actions { gap: 1rem 1.5rem; flex-wrap: wrap; margin-top: 1.5rem; }
.fine { font-size: .875rem; }

/* Header and navigation */
.header { position: relative; z-index: 10; padding-block: clamp(1rem, 2vw, 1.5rem); gap: clamp(1rem, 2.5vw, 2.5rem); }
.logo { display: inline-flex; align-items: center; flex-shrink: 0; line-height: 1; }
.brand-logo { display: block; width: 145px; height: auto; max-width: 100%; }
.header .site-nav { display: flex; align-items: center; gap: clamp(1rem, 2vw, 2rem); }
.nav-dropdown { position: relative; }
.nav-dropdown summary { font-size: 1rem; padding: .65rem 1.4rem .65rem 0; }
.nav-dropdown summary:after { content: '⌄'; font-size: 1rem; right: 0; top: .45rem; }
.nav-panel { position: absolute; top: 100%; left: -1rem; width: 330px; background: #fff; border: 1px solid var(--line); border-radius: 20px; padding: 1rem; box-shadow: 0 20px 70px #30395225; }
.nav-panel a { display: block; padding: .75rem; border-radius: 10px; font-size: .95rem; }
.nav-panel a:hover { background: var(--pale); text-decoration: none!important; }
.mobile-nav { display: none; }

/* Homepage */
.hero, .page-hero, .professional, .closing { width: calc(100% - 2 * var(--gutter)); max-width: calc(var(--shell-width) - 2 * var(--gutter)); margin: 0 auto; }
.hero { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); padding: clamp(1.5rem, 4.5vw, 4rem); min-height: 0; gap: var(--layout-gap); }
.hero-copy { padding: 0; min-width: 0; }
.hero h1 { font-size: clamp(2.15rem, 4.5vw, 4.5rem); line-height: 1.1; letter-spacing: -.05em; margin-bottom: 1.5rem; overflow-wrap: normal; }
.hero .intro { font-size: clamp(1.3rem, 2vw, 1.65rem)!important; line-height: 1.4; margin: 0 0 1rem; }
.hero-copy > p:last-child { margin-bottom: 0; }
.hero-photo { min-height: 0; min-width: 0; margin: 0; }
.hero-photo > img { width: 100%; height: auto; margin: 0; max-height: 420px; }
.photo-label { max-width: 100%; margin: 0; padding: .875rem 1.125rem; transform: none; }
.photo-label span { font-size: .8125rem; }
.homepage-trust { width: calc(100% - 2 * var(--gutter)); max-width: calc(var(--shell-width) - 2 * var(--gutter)); margin: 0 auto; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); padding: clamp(1rem, 2vw, 1.75rem) 0; gap: 0; }
.homepage-trust .trust-item { padding: .875rem clamp(.75rem, 2vw, 1.5rem); }
.homepage-trust span { font-size: .9375rem; }
.featured-grid, .guide-grid, .directory-grid { display: grid; gap: clamp(1rem, 2vw, 1.5rem); }
.featured-grid, .guide-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
.service, .featured, .directory-card, .guide-grid > a, .steps article { padding: var(--card-pad); min-width: 0; }
.featured { min-height: 0; }
.featured h3 { font-size: clamp(1.85rem, 3vw, 2.6rem); line-height: 1.2; }
.service h3, .directory-card h3, .guide-grid h3, .steps h3 { margin-bottom: 1rem; }
.service .number { margin-bottom: 1.25rem; }
.card-link { padding-top: 1.25rem; }
.service-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1.25rem; margin-top: 1.25rem; }
.service-grid .service { padding: var(--card-pad); }
.service-grid .card-link { display: flex; }
.service-grid .card-link > span { margin: 0; }
.purpose, .professional, .faq { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--layout-gap); }
.purpose { max-width: none; padding: var(--section-space) max(var(--gutter), calc((100% - var(--shell-width)) / 2 + var(--gutter))); }
.purpose > div, .professional > div, .faq > div { min-width: 0; }
.purpose-links, .audiences, .questions { margin-top: 0; }
.purpose-links > a { padding: 1.25rem 1.5rem; }
.purpose h2, .professional h2, .faq h2 { font-size: clamp(2rem, 3.6vw, 3.5rem); line-height: 1.15; }
.professional { padding: clamp(1.5rem, 4vw, 3.5rem); }
.steps { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.25rem; margin-top: 2rem; }
.steps article > span { margin-bottom: 1.25rem; }
.guide-grid > a { display: flex; flex-direction: column; }
.guide-grid h3 { font-size: clamp(1.6rem, 2.3vw, 2rem); line-height: 1.25; }
.guide-grid .text-link { align-self: flex-start; margin-top: auto; }
.faq { padding-top: clamp(1.5rem, 3vw, 2.5rem); }
.questions summary { padding-block: 1.25rem; line-height: 1.5; }
.questions summary:after { top: 1rem; }
.questions details p { margin-bottom: 1.25rem; padding-right: 1.5rem; }
.closing { padding: var(--section-space) var(--card-pad); }
.closing h2 { font-size: clamp(2.3rem, 5vw, 4.75rem); line-height: 1.15; }
.closing > p:not(.eyebrow):not(.fine) { max-width: 52ch; margin-inline: auto; }

/* Service, location, partner and article templates */
.breadcrumbs { max-width: var(--shell-width); margin: .75rem auto 1rem; padding: 0 var(--gutter); display: flex; align-items: center; flex-wrap: wrap; gap: .4rem .6rem; font-size: .875rem; line-height: 1.5; color: var(--muted); }
.breadcrumbs a { text-decoration: underline; text-underline-offset: 3px; }
.breadcrumbs > span:last-child { min-width: 0; overflow-wrap: anywhere; }
.page-hero { padding: clamp(1.5rem, 4vw, 3.5rem); border-radius: 32px; background: var(--pale); display: flex; align-items: center; gap: var(--layout-gap); }
.page-hero > div { flex: 1; min-width: 0; }
.page-hero h1 { font-size: clamp(2rem, 3.8vw, 3.6rem); line-height: 1.15; max-width: 24ch; margin-bottom: 1.25rem; overflow-wrap: anywhere; }
.page-hero .eyebrow { margin-bottom: 1rem; }
.page-hero .lead { font-size: 1.125rem; line-height: 1.65; max-width: 65ch; margin-bottom: 1.5rem; }
.page-hero p:last-child { margin-bottom: 0; }
.page-hero .button { font-size: 1.25rem; font-weight: 700; }
.page-illustration { width: 28%; max-width: 300px; height: auto; mix-blend-mode: multiply; }
.article-hero { display: block; }
.article-hero h1 { max-width: 32ch; font-size: clamp(2rem, 3.4vw, 3.4rem); }
.article-meta, .article-byline { font-size: .9375rem; line-height: 1.5; }
.article-byline { margin: .75rem 0 0; color: var(--navy); }
.article-image { max-width: 1120px; padding: 0 var(--gutter); margin: clamp(1.5rem, 3vw, 2.5rem) auto 0; }
.article-image img { display: block; width: 100%; height: auto; max-height: 520px; object-fit: cover; border-radius: 24px; }
.reading-layout { display: grid; grid-template-columns: minmax(0, 75ch) 248px; justify-content: space-between; gap: clamp(2rem, 4vw, 4rem); align-items: start; max-width: 1280px; padding-block: clamp(2rem, 4vw, 3.5rem) 1.5rem; }
.reading-layout:not(:has(.contents)) { display: block; max-width: 1040px; }
.prose { font-size: 1.0625rem; line-height: 1.75; min-width: 0; max-width: 75ch; overflow-wrap: break-word; }
.prose h2 { font-size: clamp(1.65rem, 2.4vw, 2rem); line-height: 1.25; letter-spacing: -.035em; margin: 2.5rem 0 1rem; scroll-margin-top: 1.5rem; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { font-size: clamp(1.2rem, 1.8vw, 1.45rem); line-height: 1.35; letter-spacing: -.025em; margin: 2rem 0 .75rem; }
.prose h4, .prose h5, .prose h6 { font-size: 1.125rem; line-height: 1.4; margin: 1.5rem 0 .75rem; }
.prose p, .prose ul, .prose ol { margin: 0 0 var(--text-gap); }
.prose p, .prose li { color: #49566d; }
.prose ul, .prose ol { padding-left: 1.5rem; }
.prose li { padding-left: .25rem; margin: .5rem 0; }
.prose li > p { margin: .375rem 0; }
.prose > :last-child { margin-bottom: 0; }
.prose a { text-decoration: underline; text-underline-offset: 3px; color: #155cc0; overflow-wrap: anywhere; }
.prose blockquote { padding: 1.25rem; border-left: 4px solid var(--blue); background: var(--pale); margin: 1.5rem 0; }
.prose blockquote > :last-child { margin-bottom: 0; }
.table-scroll { max-width: 100%; overflow-x: auto; margin: 1.5rem 0; border: 1px solid var(--line); border-radius: 14px; }
.prose table { border-collapse: collapse; width: 100%; font-size: 1rem; line-height: 1.55; }
.prose th, .prose td { padding: 1rem; min-width: 150px; border: 1px solid var(--line); text-align: left; vertical-align: top; }
.prose th { background: var(--pale); color: var(--navy); }
.prose td > :last-child, .prose th > :last-child { margin-bottom: 0; }
.contents { position: sticky; top: 1.5rem; max-height: calc(100vh - 3rem); overflow: auto; padding: 1.25rem; background: #f5f7fb; border-radius: 20px; }
.contents strong { display: block; margin-bottom: .75rem; }
.contents a { display: block; font-size: .9375rem; line-height: 1.5; padding: .5rem 0; margin: 0; color: var(--muted); }
.contents a:hover { color: #155cc0; }
.contents .contents-quote { border-top: 1px solid var(--line); margin-top: .75rem; padding-top: 1rem; color: var(--navy); font-weight: 700; }
.directory, .related { padding-block: clamp(2rem, 4vw, 3.5rem); }
.directory h2, .related h2 { font-size: clamp(2rem, 3.4vw, 3rem); line-height: 1.2; }
.directory-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
.directory-card { display: flex; flex-direction: column; background: var(--pale); border-radius: 24px; transition: transform .2s; }
.directory-card:hover { transform: translateY(-3px); }
.directory-card h3 { font-size: clamp(1.3rem, 1.8vw, 1.6rem); line-height: 1.3; letter-spacing: -.025em; overflow-wrap: anywhere; }
.directory-card p { font-size: 1rem; line-height: 1.65; }
.directory-card .eyebrow { font-size: .875rem; margin-bottom: 1rem; }
.directory-search { display: flex; flex-direction: column; gap: .5rem; font-size: .9375rem; min-width: 0; max-width: 100%; flex: 0 1 320px; }
.directory-search input { width: 100%; min-width: 0; min-height: 48px; padding: .75rem 1.125rem; border: 1px solid #c6d1e1; border-radius: 100px; font: inherit; background: white; color: var(--navy); }
.result-count { font-size: .9375rem; margin-bottom: 1.25rem; }
.related-links.section { display: flex; flex-wrap: wrap; gap: .75rem; padding-block: 0 clamp(2rem, 4vw, 3rem); }
.related-links a { border: 1px solid #c6d1e1; border-radius: 100px; padding: .65rem 1rem; font-size: .9375rem; line-height: 1.5; }
.no-results { padding: 1.5rem; background: var(--pale); border-radius: 20px; }

/* Enquiry forms */
.quote-layout { display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr); gap: var(--layout-gap); align-items: start; padding-top: clamp(2rem, 4vw, 3.5rem); }
.quote-layout > div, .quote-form, .form-grid label { min-width: 0; }
.quote-layout h2 { font-size: clamp(2rem, 3.4vw, 3.25rem); line-height: 1.15; }
.quote-form { background: var(--pale); padding: var(--card-pad); border-radius: 26px; margin: 0; }
.form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.25rem; }
.form-grid label { font-size: 1rem; font-weight: 500; line-height: 1.5; }
.form-grid label > span { font-size: .9375rem; font-weight: 400; }
.form-grid .wide { grid-column: 1/-1; }
.form-grid input, .form-grid select, .form-grid textarea { display: block; width: 100%; max-width: 100%; min-width: 0; min-height: 48px; margin-top: .5rem; border: 1px solid #c9d5e6; border-radius: 10px; padding: .75rem; font: inherit; font-size: 1rem; background: white; color: var(--navy); }
.form-grid textarea { resize: vertical; }
.consent { display: flex; align-items: start; gap: .75rem; margin: 1.5rem 0; font-size: .9375rem; }
.consent input { width: 20px; height: 20px; flex-shrink: 0; margin: .15rem 0 0; }
.consent a, .form-result a { text-decoration: underline; }
.contact-card { background: #f5f7fb; padding: var(--card-pad); border-radius: 22px; margin-top: 1.5rem; }
.contact-card h3 { margin-bottom: 1rem; }
.contact-card a { display: block; text-decoration: underline; padding-block: .25rem; margin-bottom: .25rem; overflow-wrap: anywhere; }
.contact-card p { margin: 1rem 0 0; }
.form-result { background: #fff; padding: 1.5rem; border: 2px solid var(--blue); border-radius: 18px; margin-top: 1.5rem; overflow-wrap: anywhere; }
.form-result h3 { font-size: 1.3rem; }
.form-result p { font-size: 1rem; margin-bottom: 0; }
.form-result .button { margin-top: 1rem; }
.form-result[data-state="error"] { border-left: 4px solid #a42828; }
.prototype-note, .test-notice { padding: 1rem; font-size: .9375rem; border-radius: 10px; background: #fff; color: #49566d; }
.test-notice { border-left: 4px solid var(--blue); }
.form-honeypot, [hidden] { display: none!important; }
.quote-form button:disabled { opacity: .65; cursor: wait; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid #155cc0; outline-offset: 4px; }

/* Footer */
footer { padding-block: var(--section-space) 1.5rem; }
.footer-top { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1.3fr); gap: var(--layout-gap); }
.footer-top .brand-logo { width: 160px; }
.footer-top a { overflow-wrap: anywhere; }
.footer-top .logo { margin-bottom: 1rem; }
.footer-top strong { margin-bottom: .75rem; }
.footer-top p:last-child { margin-bottom: 0; }
.footer-bottom { gap: 1.25rem; flex-wrap: wrap; margin-top: 2rem; padding-top: 1.5rem; font-size: .875rem; }
.footer-bottom > div { gap: .5rem 1.25rem; }
.footer-bottom a { padding-block: .375rem; }

@media (max-width:1100px) {
  .header .site-nav { display: none; }
  .header .small { margin-left: auto; font-size: .9375rem; gap: .75rem; padding: .75rem 1rem; }
  .header .mobile-nav { display: block; position: static; }
  .mobile-nav > summary { padding: .5rem; font-size: 1.5rem; line-height: 1.2; min-width: 44px; min-height: 44px; text-align: center; }
  .mobile-nav > summary:after { display: none; }
  .header .mobile-nav nav { display: block; position: absolute; top: 100%; left: var(--gutter); right: var(--gutter); margin: 0; padding: 1rem; background: white; border: 1px solid var(--line); border-radius: 1rem; box-shadow: 0 16px 40px #30395225; max-height: 70vh; overflow: auto; }
  .header .mobile-nav nav a { display: block; padding: .75rem; font-size: 1rem; }
  .header .nav-panel a { display: block; }
  .service-grid, .directory-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .reading-layout { grid-template-columns: minmax(0,1fr) 220px; gap: 2rem; }
  .quote-layout { grid-template-columns: minmax(0,.7fr) minmax(0,1.3fr); }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid .wide { grid-column: auto; }
}
@media (max-width:900px) {
  .hero { display: grid; grid-template-columns: 1fr; text-align: left; }
  .hero h1 { max-width: 22ch; }
  .hero-copy > p:not(.eyebrow) { margin-left: 0; }
  .hero .actions { justify-content: flex-start; }
  .hero-photo { max-width: 440px; width: 100%; margin: 0 auto; }
  .hero-photo > img { max-height: 280px; }
  .homepage-trust { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .5rem 0; }
  .homepage-trust .trust-item:nth-child(3) { border-left: 0; }
  .reading-layout { display: grid; grid-template-columns: minmax(0,1fr); }
  .prose { max-width: 75ch; }
  .contents { position: static; max-height: none; margin: 0; }
  .section-heading { flex-wrap: wrap; align-items: start; }
  .section-heading > p { max-width: none; }
  .steps { grid-template-columns: 1fr; }
  .steps article { display: grid; grid-template-columns: 48px minmax(0,1fr); column-gap: 1.25rem; }
  .steps article > span { grid-row: 1/3; width: 48px; height: 48px; margin: 0; }
  .steps article > h3, .steps article > p { grid-column: 2; }
  .quote-layout { display: grid; grid-template-columns: minmax(0,1fr); gap: 2rem; }
  .quote-layout .form-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .quote-layout .form-grid .wide { grid-column: 1/-1; }
  .footer-top { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .footer-top > div:last-child { grid-column: 1/-1; }
}
@media (max-width:760px) {
  .hero, .page-hero, .professional, .closing { border-radius: 24px; }
  .hero { padding: 1.75rem 1.25rem; gap: 1.5rem; }
  .hero h1 { font-size: clamp(2rem, 6vw, 2.75rem); }
  .hero .eyebrow { font-size: .8125rem; margin-bottom: 1.25rem; }
  .hero-copy > p { font-size: 1rem!important; }
  .hero .intro { font-size: 1.3rem!important; }
  .hero-photo > img { max-height: 240px; }
  .section-heading { display: flex; flex-direction: column; gap: 1rem; }
  .section-heading > p, .section-heading > .text-link { margin-top: 0; }
  .section-heading h2 { font-size: clamp(1.9rem, 5vw, 2.5rem); }
  .section-heading h2 br, .section h2 br { display: none; }
  .purpose, .professional, .faq { display: grid; grid-template-columns: minmax(0,1fr); gap: 1.75rem; }
  .purpose-links, .audiences, .questions { margin-top: 0; }
  .professional { padding: 1.5rem; }
  .professional h2, .purpose h2, .faq h2 { font-size: clamp(1.9rem, 5vw, 2.5rem); }
  .page-hero { padding: 1.75rem 1.25rem; display: block; }
  .page-hero h1 { max-width: 100%; font-size: clamp(2rem, 5vw, 2.6rem); }
  .page-hero .lead { font-size: 1rem; }
  .page-illustration { display: none; }
  .breadcrumbs { font-size: .875rem; }
  .prose { font-size: 1rem; }
  .prose h2 { margin-top: 2rem; }
  .article-image img { border-radius: 18px; }
  .directory-search { flex: auto; width: 100%; margin: 0; }
  .related h2, .directory h2 { font-size: clamp(1.9rem, 5vw, 2.5rem); }
}
@media (max-width:600px) {
  .header { gap: .5rem; }
  .header .brand-logo { width: 100px; }
  .header .small { font-size: .875rem; padding: .65rem .8rem; gap: .5rem; }
  .hero h1 { font-size: clamp(2rem, 8vw, 2.75rem); }
  .hero .actions .button { width: 100%; }
  .homepage-trust .trust-item { padding: .75rem; }
  .homepage-trust strong { font-size: 1rem; }
  .homepage-trust .trust-item:nth-child(2) strong { font-size: 1.7rem; }
  .homepage-trust span { font-size: .875rem; }
  .featured-grid, .service-grid, .guide-grid, .directory-grid { grid-template-columns: minmax(0,1fr); }
  .service-grid .service { padding: var(--card-pad); }
  .service-grid .card-link { font-size: 1rem; }
  .featured h3 br { display: none; }
  .steps article { grid-template-columns: 40px minmax(0,1fr); gap: 0 1rem; }
  .steps article > span { width: 40px; height: 40px; font-size: 1rem; }
  .steps h3 { font-size: 1.4rem; }
  .page-hero .button, .quote-form > .button { width: 100%; font-size: 1.125rem; }
  .quote-layout .form-grid { grid-template-columns: minmax(0,1fr); }
  .quote-layout .form-grid .wide { grid-column: auto; }
  .quote-layout h2 br { display: none; }
  .prose th, .prose td { padding: .875rem; }
  .purpose-links > a { padding: 1.125rem; }
  .closing .button { width: 100%; font-size: 1.125rem; }
  .closing > p:not(.eyebrow):not(.fine) { font-size: 1.125rem; line-height: 1.6; }
  .footer-top { grid-template-columns: minmax(0,1fr); gap: 1.75rem; }
  .footer-top > div:last-child { grid-column: auto; }
}
@media (max-width:360px) {
  .header .small > span { display: none; }
  .header .brand-logo { width: 88px; }
  .header .small { padding-inline: .65rem; }
}
@media (prefers-reduced-motion:reduce) {
  *, *:before, *:after { animation: none!important; scroll-behavior: auto!important; }
}

/* Report-specific enquiry form */
.quote-form .form-introduction { margin-bottom: 1.5rem; }
.form-section { border: 0; padding: 0; margin: 0 0 2rem; min-width: 0; }
.form-section + .form-section { border-top: 1px solid #cbd9ee; padding-top: 1.5rem; }
.form-section legend { font-size: 1.3rem; font-weight: 600; line-height: 1.4; padding: 0; margin-bottom: 1.25rem; width: 100%; }
.form-section legend > span { display: inline-block; font-size: .875rem; color: #155cc0; margin-right: .65rem; vertical-align: middle; }
.form-field { margin-bottom: 1.25rem; min-width: 0; }
.form-field:last-child { margin-bottom: 0; }
.form-field > label { display: block; font-size: 1rem; line-height: 1.5; font-weight: 600; margin-bottom: .5rem; }
.form-field label > span:not([data-notes-label]) { font-weight: 400; }
.form-field > input, .form-field > select, .form-field > textarea, .form-field > .address-input-wrap > input { display: block; width: 100%; max-width: 100%; min-width: 0; min-height: 50px; border: 1px solid #a9bbd5; border-radius: 10px; padding: .75rem; font: inherit; font-size: 1rem; background: white; color: var(--navy); }
.form-field > textarea { resize: vertical; }
.form-field select { text-overflow: ellipsis; }
.field-hint { font-size: .875rem; line-height: 1.5; margin: .5rem 0 0; color: #526078; }
.conditional-fields { margin: 1.5rem 0; padding-left: 1.25rem; border-left: 3px solid #2080ff; }
.form-field > .consent { display: flex; align-items: start; font-weight: 400; margin-bottom: 1.25rem; }
.form-errors { border: 2px solid #a42828; border-radius: 14px; padding: 1.25rem; margin-bottom: 1.5rem; background: white; }
.form-errors strong { font-size: 1.2rem; }
.form-errors ul { margin: .75rem 0 0; padding-left: 1.25rem; }
.form-errors li { margin: .5rem 0; }
.form-errors a { color: #8d2020; text-decoration: underline; }
.field-error { color: #8d2020; font-weight: 600; font-size: .9375rem; margin: .5rem 0 0; }
.form-field [aria-invalid="true"] { border: 2px solid #a42828; }
.prefill-notice { padding: 1rem; border-radius: 10px; background: white; border-left: 3px solid var(--blue); font-size: .9375rem; }
.form-next-step { margin-top: 1rem; }
@media(min-width:901px) { .quote-intro { position: sticky; top: 1.5rem; } }
@media(max-width:900px) { .quote-form { order: -1; } }
@media(max-width:600px) { .conditional-fields { padding-left: .875rem; } .quote-form .button { font-size: 1.125rem; } }

/* Service roles and quote expectations: readable, specific to each report. */
.service-confidence { padding-bottom: 0; }
.service-confidence h2, .quote-expectations-panel h2 { font-size: clamp(1.8rem, 3vw, 2.75rem); line-height: 1.18; max-width: 26ch; margin-bottom: 1rem; }
.confidence-intro { max-width: 68ch; }
.report-roles { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.25rem; margin-top: 1.75rem; }
.report-role { min-width: 0; background: var(--pale); border-top: 4px solid #2080FF; border-radius: 0 0 20px 20px; padding: var(--card-pad); }
.report-role h3 { font-size: clamp(1.3rem, 1.8vw, 1.65rem); line-height: 1.3; margin-bottom: 1rem; }
.report-role p:last-child { margin-bottom: 0; }
.role-label { font-size: .875rem; font-weight: 600; color: #155cc0; margin-bottom: .65rem; }
.confidence-about { margin: 1.25rem 0 0; font-size: .9375rem; }
.confidence-about a, .service-sources a { text-decoration: underline; text-underline-offset: .2em; }
.quote-expectations { padding-top: 0; }
.quote-expectations-panel { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: var(--layout-gap); padding: clamp(1.25rem,3.5vw,3rem); background: #eef5ff; border-radius: 26px; }
.quote-expectations-panel > div { min-width: 0; }
.quote-expectations-panel .button { margin-top: .75rem; }
.quote-checklist { margin: 0; }
.quote-checklist > div { padding: 1.25rem 0; border-bottom: 1px solid #c7d8ef; }
.quote-checklist > div:first-child { padding-top: 0; }
.quote-checklist > div:last-child { border-bottom: 0; padding-bottom: 0; }
.quote-checklist dt { font-size: 1.125rem; font-weight: 600; margin-bottom: .5rem; }
.quote-checklist dd { margin: 0; }
.service-sources { max-width: 82ch; margin-top: 2rem; }
.service-sources h2 { font-size: 1.25rem; line-height: 1.4; margin-bottom: .875rem; }
.service-sources ul { padding-left: 1.25rem; }
.service-sources li p { margin: .4rem 0 .875rem; }
@media(max-width:900px) { .report-roles, .quote-expectations-panel { grid-template-columns: minmax(0,1fr); } .report-role { padding: 1.25rem; } }
@media(max-width:600px) { .quote-expectations-panel .button { width: 100%; } }

/* Open, architectural layout: full-width colour, contained reading widths. */
:root { --shell-width: 1320px; --band-inset: max(var(--gutter), calc((100% - var(--shell-width)) / 2 + var(--gutter))); }
.hero, .page-hero, .professional, .closing, .purpose {
  width: 100%; max-width: none; margin-inline: 0; border-radius: 0;
  padding-inline: var(--band-inset);
  padding-block: clamp(2.75rem, 6vw, 5.5rem);
}
.hero { grid-template-columns: minmax(0,.95fr) minmax(0,1.15fr); align-items: center; gap: clamp(1.5rem,3vw,3rem); }
.hero h1 { font-size: clamp(2.25rem,4.1vw,4rem); line-height: 1.12; letter-spacing: -.045em; }
.hero-copy > p:not(.eyebrow) { max-width: 49ch; }
.hero-photo { align-self: center; width: calc(100% + var(--gutter) - 12px); }
.hero-photo > img { max-height: none; display: block; object-fit: contain; }
.photo-label { display: none; }
.button { border-radius: 10px; font-size: 1.0625rem; }
.button:hover { transform: none; box-shadow: none; }
.hero .button { font-size: 1.125rem; }
.homepage-trust { border-bottom: 1px solid var(--line); }
.service, .featured, .directory-card, .quote-form, .contact-card, .quote-expectations-panel { border-radius: 12px; box-shadow: none; }
.service:hover { transform: none; box-shadow: none; }
.service:hover h3 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
.service-grid .service { background: transparent; border-top: 1px solid #cbd5e3; border-radius: 0; padding-inline: 0; }
.service-grid { gap: clamp(1.5rem,3vw,2.5rem); margin-top: 2.5rem; }
.purpose-links { gap: 0; }
.purpose-links > a { background: transparent; border-radius: 0; border-bottom: 1px solid #c5d4e7; padding: 1.25rem 0; }
.purpose-links > a:first-child { border-top: 1px solid #c5d4e7; }
.purpose-links > a:hover { transform: none; color: #155cc0; }
.steps article { border-radius: 0; background: transparent; border-top: 1px solid #cbd5e3; padding-inline: 0; }
.steps article > span { background: transparent; color: #155cc0; border-radius: 0; justify-content: start; font-size: 1rem; height: auto; }
.professional { gap: clamp(2rem,6vw,6rem); }
.professional .audiences a { padding-block: 1rem; }
.guide-grid > a, .guide-grid > a:last-child { background: transparent; border-radius: 0; border-top: 1px solid #cbd5e3; padding-inline: 0; }
.closing { text-align: left; display: grid; grid-template-columns: minmax(0,1fr) auto; column-gap: clamp(2rem,5vw,5rem); align-items: center; }
.closing > .eyebrow { grid-column: 1/-1; }
.closing h2 { font-size: clamp(2.2rem,4vw,3.75rem); margin-bottom: 1.25rem; }
.closing > p:not(.eyebrow):not(.fine) { grid-column: 1; max-width: 52ch; font-weight: 400; font-size: 1.125rem; margin: 0; }
.closing > .button { grid-column: 2; grid-row: 2/4; margin: 0; }
.closing > .eyebrow, .closing > .fine { display: block; padding: 0; background: transparent; color: white; border-radius: 0; margin-inline: 0; }
.closing > .fine { grid-column: 1/-1; margin-top: 1.5rem; margin-bottom: 0; }
@media(max-width:900px) {
 .hero { grid-template-columns: minmax(0,1fr); }
 .hero h1 { max-width: 24ch; }
 .hero-photo { width: 100%; max-width: 660px; }
 .hero-photo > img { max-height: none; }
 .closing { grid-template-columns: minmax(0,1fr); }
 .closing > .button { grid-column: 1; grid-row: auto; justify-self: start; margin-top: 1.5rem; }
}
@media(max-width:600px) {
 .hero, .page-hero, .professional, .closing, .purpose { padding-block: 2.5rem; }
 .hero { gap: 1.5rem; }
 .hero-photo { width: calc(100% + 2 * var(--gutter)); max-width: none; margin-inline: calc(-1 * var(--gutter)); }
 .hero-photo > img { max-height: none; }
 .hero h1 { font-size: clamp(2rem,8vw,2.75rem); }
 .closing h2 { font-size: 2.25rem; }
 .closing .button { width: 100%; }
 .service-grid { margin-top: 1.75rem; gap: 1.25rem; }
}

/* Licensed photography supports the report categories without crowding the copy. */
.service-card-photo { display: block; width: calc(100% + 2 * var(--card-pad)); max-width: none; height: auto; aspect-ratio: 16/9; object-fit: cover; margin: calc(-1 * var(--card-pad)) calc(-1 * var(--card-pad)) 1.5rem; border-radius: 12px 12px 0 0; }
.service-photograph { flex: 0 1 40%; min-width: 0; margin: 0; max-width: 490px; }
.service-photograph img { display: block; width: 100%; height: auto; aspect-ratio: 4/3; object-fit: cover; border-radius: 8px; }
.service-photograph figcaption { color: #526078; font-size: .8125rem; margin-top: .6rem; }
@media(max-width:760px) { .service-photograph { max-width: none; margin-top: 2rem; } .service-photograph img { aspect-ratio: 16/9; max-height: 320px; } }

/* Preserve the transparent illustration without darkening its colours. */
.hero-photo > img, .page-illustration { mix-blend-mode: normal; background: transparent; }

/* Editorial pages prioritise the answer and a comfortable reading measure. */
.page-hero.article-hero { padding-block: clamp(1.5rem, 3vw, 2.5rem); }
.article-image img { max-height: 280px; border-radius: 12px; }
@media (max-width: 600px) {
  .article-image { margin-top: 1.25rem; }
  .article-image img { max-height: 190px; }
}

/* Accessible primary actions; bright blue remains the brand accent. */
:root { --action-blue: #1263D6; --action-blue-hover: #0D4EA9; }
.button.dark:not(.small), .quote-form > .button { background:var(--action-blue); color:#fff; }
button.button { appearance:none; -webkit-appearance:none; border:0; font-family:inherit; cursor:pointer; }
.quote-form > .button { display:inline-flex; align-items:center; justify-content:center; gap:1rem; min-height:54px; padding:.95rem 1.7rem; border-radius:12px; font-size:1.0625rem; line-height:1.4; font-weight:700; box-shadow:0 3px 8px #30395218; transition:background-color .18s,box-shadow .18s; }
.button.dark:not(.small):hover { background:var(--action-blue-hover); }
.quote-form > .button:focus-visible { outline:3px solid #303952; outline-offset:4px; }
.quote-form > .button:disabled { cursor:wait; opacity:1; background:#59647b; box-shadow:none; }
.button-arrow { display:inline-block; font-size:1.2em; line-height:1; }
.directory-filters { display:flex; flex-wrap:wrap; gap:.625rem; margin:0 0 1.5rem; }
.directory-filters button { appearance:none; font:inherit; font-size:1rem; font-weight:600; color:#303952; background:#fff; border:1px solid #a9bbd5; border-radius:100px; min-height:46px; padding:.6rem 1.1rem; cursor:pointer; }
.directory-filters button[aria-pressed="true"] { background:#303952; color:#fff; border-color:#303952; }
.directory-card[hidden] { display:none; }
@media(max-width:600px) { .quote-form > .button { width:100%; } .enquiry-page .page-hero { padding-block:1.5rem; } .enquiry-page .page-hero h1 { font-size:2rem; } .enquiry-page .page-hero .lead { margin-bottom:0; } }

.client-feedback { display:grid; grid-template-columns:1fr 1.3fr; gap:clamp(1.5rem,4vw,4rem); padding-block:var(--section-space); }
.client-feedback h2 { font-size:clamp(1.8rem,3vw,2.75rem); }
.client-feedback figure { margin:0; border-left:3px solid #2080FF; padding-left:1.5rem; }
.client-feedback blockquote { margin:0 0 1rem; font-size:clamp(1.2rem,2vw,1.6rem); }
.client-feedback blockquote p { color:#303952; }
.client-feedback figcaption { display:flex; flex-direction:column; gap:.3rem; font-size:.9375rem; }
.client-feedback figcaption a { text-decoration:underline; text-underline-offset:3px; }
@media(max-width:700px) { .client-feedback { grid-template-columns:1fr; } }

/* Report pricing stays readable within the existing page rhythm. */
.service-price { font-weight:700; font-size:1.125rem; }
.footer-pricing { border-top:1px solid #cbd5e3; padding-block:1.25rem; }
.footer-pricing p { max-width:90ch; font-size:.9375rem; margin:.5rem 0; }
.footer-pricing a { text-decoration:underline; text-underline-offset:3px; }
.report-pricing { border-top:1px solid #cbd5e3; }
.report-pricing h2 { font-size:clamp(1.5rem,3vw,2rem); }
.report-pricing p { max-width:78ch; }
.form-pricing { margin-block:1.5rem; }

/* Focus the enquiry on the customer's next action. */
.form-help {margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #c6d5eb}.form-help p{margin:0 0 .4rem}.form-help [data-form-price]{font-weight:700}.form-help a{display:inline-block;color:#155cc0}.quote-form .prefill-notice{padding:.65rem .8rem;font-size:.875rem;margin-bottom:1rem}.estimate-details{display:grid;gap:1.1rem}.renovation-entry{border:1px solid #a9bbd5;border-radius:12px;padding:1rem;margin:1rem 0;min-width:0}.renovation-entry legend{font-size:1rem;font-weight:700;padding:0 .4rem}.renovation-pair{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.renovation-entry button,.add-renovation{font:inherit;min-height:44px;border:1px solid #8ea5c7;border-radius:8px;padding:.55rem .8rem;background:white;color:#303952;cursor:pointer}.renovation-entry button:focus-visible,.add-renovation:focus-visible{outline:3px solid #303952;outline-offset:3px}.enquiry-page .page-hero{padding-block:1.5rem}.enquiry-page .page-hero h1{font-size:clamp(1.8rem,4vw,2.5rem)}.enquiry-page .page-hero .lead{margin-bottom:0}.quote-intro .form-pricing{display:none}
@media(max-width:600px){.renovation-pair{grid-template-columns:1fr}.quote-layout{padding-top:1.25rem}.quote-form{padding:1.1rem}.form-help .fine{font-size:.875rem}.enquiry-page .page-hero .eyebrow{display:none}.enquiry-page .page-hero h1{margin-bottom:.65rem}}

/* Quiet, consistent controls: compact corners, typography and flat colour. */
.button, .hero .button, .page-hero .button, .closing .button, .quote-form > .button {
  min-height: 50px; padding: .8rem 1.5rem; border: 1px solid transparent;
  border-radius: 4px; font-family: inherit; font-size: 1rem; line-height: 1.4;
  font-weight: 600; letter-spacing: 0; gap: .65rem; box-shadow: none;
  transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}
.button:hover, .quote-form > .button:hover { transform: none; box-shadow: none; }
.button.dark, .button.dark:not(.small), .quote-form > .button { background: #303952; color: #fff; border-color: #303952; }
.button.dark:hover, .button.dark:not(.small):hover, .quote-form > .button:hover { background: #20283d; border-color: #20283d; }
.hero .button.dark, .page-hero .button.dark, .quote-form > .button { background: var(--action-blue); border-color: var(--action-blue); }
.hero .button.dark:hover, .page-hero .button.dark:hover, .quote-form > .button:hover { background: var(--action-blue-hover); border-color: var(--action-blue-hover); }
.button.light { background: #fff; color: #303952; border-color: #fff; }
.button.light:hover { background: #edf3fb; border-color: #edf3fb; }
.header .button.small { min-height: 46px; padding: .7rem 1.15rem; font-size: .9375rem; }
.button:focus-visible { outline: 3px solid #2080ff; outline-offset: 4px; }
.professional .button:focus-visible, .closing .button:focus-visible { outline-color: #fff; }
.button > [data-submit-label] { flex-shrink: 1; overflow-wrap: anywhere; }
.quote-form > .button:disabled, .quote-form > .button:disabled:hover { background: #59647b; border-color: #59647b; cursor: wait; }
.directory-filters button, .renovation-entry button, .add-renovation { border-radius: 4px; box-shadow: none; }
.directory-filters button:hover { border-color: #303952; }
.card-link > span { border: 0; border-radius: 0; width: auto; height: auto; }
@media(prefers-reduced-motion:reduce) { .button { transition: none; } }

/* Service illustrations: twice the previous 300px desktop cap. */
.page-illustration { display:block; flex:0 0 min(50%,600px); width:50%; max-width:600px; height:auto; object-fit:contain; }
@media(max-width:1000px) {
 .page-hero:has(> .page-illustration) { flex-direction:column; align-items:stretch; }
 .page-hero > .page-illustration { flex:none; width:min(100%,560px); max-width:560px; align-self:center; margin:1.5rem auto 0; }
}
@media(max-width:600px) {
 .page-hero > .page-illustration { display:block; width:100%; max-width:440px; margin:1.5rem auto 0; }
}

/* A compact service directory gives specialist reports room to read naturally. */
#reports .service-directory { margin-top: clamp(2rem,4vw,3.5rem); border-top: 1px solid var(--line); }
#reports .service-directory-link { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.25fr) 32px; align-items: center; gap: clamp(1.5rem,4vw,4rem); padding: 30px 12px; border-bottom: 1px solid var(--line); transition: background-color .15s; }
#reports .service-directory-link h3 { margin: 0; font-size: clamp(1.2rem,1.8vw,1.5rem); line-height: 1.3; letter-spacing: -.025em; }
#reports .service-directory-link p { margin: 0; max-width: 55ch; font-size: 1rem; line-height: 1.65; }
#reports .service-directory-arrow { color: #155cc0; font-size: 1.65rem; justify-self: end; }
#reports .service-directory-link:hover, #reports .service-directory-link:focus-visible { background: #f5f8fc; }
#reports .service-directory-link:hover h3 { color: #155cc0; }
@media(max-width:650px) {
 #reports .service-directory-link { grid-template-columns: minmax(0,1fr) 28px; gap: 10px 18px; padding: 24px 4px; }
 #reports .service-directory-link p { grid-column: 1; font-size: .975rem; }
 #reports .service-directory-arrow { grid-column: 2; grid-row: 1; }
}

/* Address suggestions follow the form's type, colour and spacing. */
.address-input-wrap{position:relative}.quote-form .address-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;list-style:none;margin:0;padding:6px;background:#fff;border:1px solid #bbc8df;border-radius:12px;box-shadow:0 12px 30px #30395226;max-height:280px;overflow-y:auto;overscroll-behavior:contain}.quote-form .address-suggestions li{font-size:16px;line-height:1.5;padding:12px;border-radius:7px;cursor:pointer;overflow-wrap:anywhere;color:#303952}.address-suggestions li:hover,.address-suggestions li[aria-selected="true"]{background:#edf3ff;outline:2px solid #2080ff;outline-offset:-2px}.quote-form .address-manual{background:transparent;border:0;border-radius:4px;color:#155cc0;padding:8px 0;font-size:14px;text-decoration:underline;box-shadow:none;min-height:44px;cursor:pointer}.quote-form .address-credit{font-size:12px;line-height:1.5;margin:4px 0 0;color:#536078}.address-credit a{color:inherit}.address-status:empty{display:none}.address-unit input{max-width:320px}
