/* Color Variables — the new page family inherits all colors from styles.css. */
:root { --page-title:56px; --page-heading:40px; --page-card-title:22px; --page-body:18px; --page-section-space:72px; --page-card-gap:24px; --page-copy-width:800px; --page-control-height:56px; }
/* Shared navigation: native links remain useful when JavaScript is unavailable. */
.site-shell .header-inner { gap:22px; }
.site-shell .desktop-nav { gap:22px; }
.site-shell .desktop-nav > a,.site-shell [data-dropdown-toggle] { font-size:15px; }
.site-shell .nav-book { font-size:16px; min-height:50px; padding:12px 22px; }
.nav-dropdown { position:relative; }
[data-dropdown-toggle] { display:flex; align-items:center; gap:5px; min-height:44px; border:0; background:var(--color-white); font-weight:600; padding:0; }
[data-dropdown-toggle] .icon { width:15px; height:15px; }
[data-dropdown-toggle][aria-expanded=true] { color:var(--color-blue); }
.nav-dropdown-panel { position:absolute; top:calc(100% + 9px); left:-18px; width:290px; padding:12px; background:var(--color-white); border:1px solid var(--color-line); border-radius:var(--radius-card); box-shadow:var(--shadow-dialog); }
.site-shell .nav-dropdown-panel a { min-height:44px; padding:9px 12px; font-size:15px; line-height:1.35; border-radius:5px; }
.site-shell .nav-dropdown-panel a:hover { background:var(--color-soft); }
.site-shell .nav-dropdown-panel a.active::after { display:none; }
.site-shell .mobile-nav { max-height:calc(100dvh - 90px); overflow-y:auto; }
.mobile-services summary { cursor:pointer; min-height:44px; display:flex; align-items:center; color:var(--color-blue); font-weight:700; }
.mobile-services a { padding-left:18px; }
.site-shell .site-footer { height:auto; padding:48px 0 0; }
.site-shell .footer-grid { grid-template-columns:1.65fr .9fr 1.25fr 1fr 1.2fr; gap:30px; }
.site-shell .footer-grid ul a { min-height:32px; padding:4px 0; line-height:1.4; }
.site-shell .footer-contact .button { font-size:16px; min-height:52px; padding:12px 20px; margin-top:20px; }
.site-shell .footer-bottom { margin-top:32px; }
/* Inner page typography and spacing are scoped to avoid changing Home components. */
.inner-page h1 { font-size:var(--page-title); line-height:1.12; overflow-wrap:break-word; }
.inner-page h2 { font-size:var(--page-heading); line-height:1.2; }
.page-section { padding:var(--page-section-space) 0; }
.page-soft,.page-hero,.page-cta { background:var(--color-soft); }
.page-hero { padding:32px 0 64px; }
.page-hero .breadcrumbs { margin-bottom:32px; flex-wrap:wrap; gap:12px; }
.breadcrumbs > span[aria-current]::before { content:'/'; margin-right:12px; color:var(--color-copy); }
.page-hero-grid { display:grid; grid-template-columns:minmax(0,1fr); gap:56px; align-items:center; }
.page-hero-grid > div { max-width:980px; }
.page-hero--split .page-hero-grid { grid-template-columns:1.05fr .95fr; }
.page-hero h1 { margin:14px 0 22px; }
.page-lead { font-size:var(--page-body); line-height:1.65; max-width:820px; }
.page-hero .button { min-height:var(--page-control-height); font-size:19px; margin-top:26px; padding:14px 25px; }
.page-photo { display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; border-radius:var(--radius-card); }
.page-hero--split .page-photo { min-height:340px; }
.prose { font-size:var(--page-body); line-height:1.65; }
.prose-section + .prose-section { margin-top:32px; }
.prose-section h2 { font-size:28px; margin-bottom:14px; }
.prose p { line-height:1.75; }
.prose a,.page-lead a,.home-page .about-copy a { color:var(--color-blue); text-decoration:underline; text-underline-offset:3px; }
.prose a:hover,.page-lead a:hover { color:var(--color-blue-hover); }
.article-column { max-width:var(--page-copy-width); }
.article-column > .page-photo { margin-bottom:42px; }
.article-section { padding-top:48px; }
.detail-layout { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:72px; }
.detail-aside { min-width:0; }
.aside-card { margin-top:24px; padding:28px; background:var(--color-soft); border:1px solid var(--color-decoration); border-radius:var(--radius-card); }
.aside-card h2 { font-size:24px; }
.aside-card ul { padding-left:20px; color:var(--color-copy); font-size:17px; line-height:1.7; }
.source-note { padding:24px; border-left:3px solid var(--color-blue); background:var(--color-soft); margin:32px 0; }
.source-note h2 { font-size:22px; margin-bottom:10px; }
.process-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin-top:30px; }
.process-grid article { padding:30px; background:var(--color-white); border:1px solid var(--color-line); border-radius:var(--radius-card); }
.step-number { color:var(--color-blue); font-size:30px; font-weight:700; }
.process-grid h3 { font-size:22px; margin:18px 0 12px; }
.process-grid p { font-size:17px; line-height:1.65; }
/* Card contents are inside their own link, tying hub thumbnails to leaf heroes. */
.hub-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--page-card-gap); align-items:stretch; }
.hub-card { min-width:0; background:var(--color-card); border:1px solid var(--color-line); border-radius:var(--radius-card); overflow:hidden; box-shadow:var(--shadow-card); transition:transform var(--transition),box-shadow var(--transition); }
.hub-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-blue); }
.hub-card > a { height:100%; display:flex; flex-direction:column; }
.hub-card > a:focus-visible { outline-offset:-4px; }
.hub-photo { width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; }
.hub-card-body { padding:24px; display:flex; flex:1; flex-direction:column; }
.hub-card .eyebrow { font-size:11px; letter-spacing:1.6px; }
.hub-card h2 { font-size:var(--page-card-title); line-height:1.3; margin:12px 0 20px; }
.card-link { display:flex; align-items:center; gap:10px; margin-top:auto; min-height:44px; color:var(--color-blue); font-size:16px; font-weight:700; }
.card-link .icon { width:17px; height:17px; }
.pagination { display:flex; justify-content:center; gap:12px; margin-top:36px; }
.pagination a { min-width:48px; min-height:48px; display:flex; align-items:center; justify-content:center; padding:8px 15px; border:1px solid var(--color-decoration); border-radius:var(--radius-card); color:var(--color-blue); }
.pagination a[aria-current] { background:var(--color-blue); color:var(--color-white); border-color:var(--color-blue); }
.pagination-status { text-align:center; margin-top:16px; font-size:16px; }
.faq-item { border:1px solid var(--color-decoration); border-radius:var(--radius-card); padding:0 24px; margin:16px 0; background:var(--color-white); }
.faq-item summary { cursor:pointer; padding:22px 30px 22px 0; min-height:64px; font-weight:700; position:relative; list-style:none; line-height:1.45; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::after { content:'+'; position:absolute; right:0; top:20px; color:var(--color-blue); font-size:24px; }
.faq-item[open] summary::after { content:'−'; }
.faq-item p { padding-bottom:24px; }
.faq-item summary:focus-visible { outline:3px solid var(--color-focus); outline-offset:3px; }
.prose .faq-item + .prose-section { margin-top:36px; }
.inner-page .review-card { display:block; padding:32px; height:auto; }
.inner-page .review-card blockquote { font-size:18px; line-height:1.7; margin:14px 0; }
.review-followup { margin-top:40px; max-width:800px; }
.review-followup p { margin-top:16px; }
.page-cta { padding:48px 0; border-block:1px solid var(--color-decoration); }
.page-cta .container { display:flex; align-items:center; justify-content:space-between; gap:32px; }
.page-cta h2 { font-size:32px; margin:10px 0 14px; }
.page-cta p { font-size:17px; line-height:1.6; }
.page-cta .button { font-size:20px; min-height:60px; flex-shrink:0; }
/* Home retains its composition while accommodating the approved longer content. */
.home-page .services,.home-page .about,.home-page .areas,.home-page .reviews,.home-page .final-cta { height:auto; }
.home-page .services { padding-bottom:36px; }
.home-page .service-card { min-height:350px; }
.home-page .service-card:nth-child(n+5) { position:static; width:auto; }
.home-page .about-inner { padding-block:30px; }
.home-page .about-copy > p { font-size:18px; line-height:1.55; margin-top:14px; }
.home-page .areas { padding-block:32px; }
.home-page .area-list { flex-wrap:wrap; gap:8px; }
.home-page .area-list li { padding:0; }
.home-page .area-list a { min-height:44px; display:flex; align-items:center; padding:4px 10px; color:var(--color-blue); }
.service-area-panel { padding:36px; border:1px solid var(--color-decoration); border-radius:var(--radius-card); background:var(--color-soft); }
.service-area-panel h3 { font-size:26px; line-height:1.3; margin:12px 0 22px; }
.area-directory { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 20px; }
.area-directory a { display:flex; align-items:center; min-height:44px; font-size:17px; color:var(--color-blue); }
.home-page .reviews { padding-block:26px; }
.home-page .final-cta { padding:18px 30px; }
.home-page .cta-copy h2 { font-size:25px; }
.home-page .cta-inner { flex-wrap:wrap; }
.home-page .hero h1 { font-size:56px; }
@media (min-width:1200px) and (max-width:1399px) { .site-shell .header-inner { gap:16px; padding-inline:24px; } .site-shell .desktop-nav { gap:16px; } .site-shell .brand { font-size:18px; gap:10px; } .site-shell .brand img { width:50px; height:50px; } }
@media (max-width:1199px) { .site-shell .desktop-nav { display:none; } .site-shell .menu-toggle { display:flex; } .site-shell .nav-book { margin-left:auto; } }
@media (min-width:768px) and (max-width:1099px) { .hub-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .page-hero-grid { gap:30px; } .page-hero--split .page-photo { min-height:280px; } .detail-layout { gap:32px; } .site-shell .footer-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:1099px) { :root { --page-title:44px; --page-heading:34px; } .home-page .hero h1 { font-size:44px; } }
@media (max-width:767px) {
 :root { --page-title:36px; --page-heading:28px; --page-card-title:20px; --page-body:16px; --page-section-space:40px; --page-card-gap:16px; }
 .site-shell .header-inner { gap:12px; padding-inline:18px; } .site-shell .nav-book { display:none; } .site-shell .menu-toggle { margin-left:auto; }
 .page-hero { padding:22px 0 40px; } .page-hero .breadcrumbs { font-size:14px; margin-bottom:22px; gap:8px; } .page-hero-grid,.page-hero--split .page-hero-grid,.detail-layout { grid-template-columns:minmax(0,1fr); gap:30px; }
 .page-hero--split .page-photo { min-height:0; } .page-hero h1 { margin-top:12px; } .page-hero .button { font-size:18px; }
 .hub-grid,.process-grid { grid-template-columns:minmax(0,1fr); } .hub-card-body { padding:22px; } .process-grid article { padding:24px; }
 .prose-section h2 { font-size:25px; } .prose p { line-height:1.65; } .source-note { padding:20px; } .source-note h2 { font-size:22px; }
 .faq-item { padding-inline:18px; } .faq-item summary { padding-block:18px; }
 .page-cta .container { flex-direction:column; align-items:flex-start; gap:22px; } .page-cta h2 { font-size:28px; }
 .site-shell .footer-grid { grid-template-columns:minmax(0,1fr); gap:28px; } .site-shell .footer-grid ul a { min-height:44px; display:inline-flex; align-items:center; }
 .site-shell .footer-bottom { padding-block:24px; }
 .home-page .hero h1 { font-size:39px; } .home-page .about-copy > p { font-size:16px; } .home-page .about-inner { padding-block:0; }
 .service-area-panel { padding:24px; } .area-directory { gap:4px 12px; } .area-directory a { font-size:15px; }
 .home-page .final-cta { padding:24px 22px; } .home-page .cta-inner { align-items:flex-start; } .home-page .cta-copy { flex-basis:100%; }
}
@media (prefers-reduced-motion:reduce) { .hub-card { transition:none; } .hub-card:hover { transform:none; } }
/* Keep shared footer and dialog typography independent of page headings. */
.site-shell .footer-grid h2 { font-size:17px; line-height:1.4; }
.site-shell #service-dialog h2 { font-size:32px; }
/* The existing abstract map texture remains decorative; directory links name the actual service areas. */
:root { --page-map-wash:rgb(246 251 254 / 88%); }
.service-area-panel { background-image:linear-gradient(var(--page-map-wash),var(--page-map-wash)),url('../images/map-background.svg'); background-size:cover; }
