.breadcrumbs { display:flex; flex-wrap:wrap; gap:12px; padding-top:28px; font-size:13px; font-weight:400; color:var(--muted); }
.breadcrumbs a { min-height:36px; display:flex; align-items:center; padding:0; }
.breadcrumbs span { display:flex; align-items:center; }
.breadcrumbs a:hover { color:var(--navy); }
.header a[aria-current=page] { text-decoration:underline; text-underline-offset:7px; }
.page-head { padding-block:46px 58px; }
.page-head h1 { font-size:clamp(35px,3.7vw,54px); line-height:1.15; margin:0; max-width:22ch; text-wrap:balance; }
.page-title-grid { display:grid; grid-template-columns:.9fr 1.1fr; gap:90px; align-items:start; }
.prose { line-height:1.75; overflow-wrap:break-word; }
.prose p { margin:0 0 22px; }
.prose > :last-child { margin-bottom:0; }
.prose h2 { font-size:29px; margin:42px 0 20px; line-height:1.3; }
.prose h3 { font-size:23px; margin:28px 0 16px; line-height:1.35; }
.prose li { padding-left:3px; margin-block:8px; }
.prose ul,.prose ol { margin:18px 0 24px; padding-left:24px; }
.prose a { color:var(--navy); text-decoration:underline; text-underline-offset:4px; }
.prose .button { text-decoration:none; }
.topic-nav { display:flex; flex-wrap:wrap; gap:0 25px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding-block:10px; font-size:15px; }
.topic-nav a { min-height:44px; display:flex; align-items:center; }
.service-topic { padding-block:60px; border-bottom:1px solid var(--line); scroll-margin-top:24px; }
.service-topic > h2 { font-size:36px; margin-bottom:28px; }
.topic-prose { max-width:75ch; }
.detail-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; max-width:1120px; margin-top:34px; }
.detail-gallery img { width:100%; aspect-ratio:3/2; object-fit:cover; }
.photo-link { display:block; }
.photo-link:hover { opacity:.9; }
.photo-section { padding-bottom:65px; }
.supplier-mark { padding-block:30px 55px; }
.supplier-mark img { width:min(700px,100%); }
.service-maintenance { padding-bottom:70px; }
.service-maintenance .prose { max-width:75ch; }
.service-maintenance .prose h2:first-child { margin-top:0; }
.team-wide { padding-bottom:20px; }
.team-wide img { width:min(1040px,100%); aspect-ratio:2/1; object-fit:contain; }
.staff-section { padding-block:48px; border-bottom:1px solid var(--line); }
.staff-section h2 { font-size:30px; max-width:35ch; line-height:1.35; }
.staff-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:38px 30px; }
.person { min-width:0; }
.portrait { width:100%; aspect-ratio:1; object-fit:cover; }
.person-copy { padding-top:19px; }
.person-copy h3 { font-size:22px; line-height:1.25; margin-bottom:8px; letter-spacing:-.02em; }
.person-copy p { font-size:15px; line-height:1.6; color:var(--muted); margin:0; }
.history-list { list-style:none; padding:0 0 65px; }
.history-list li { display:grid; grid-template-columns:220px minmax(0,760px); gap:60px; padding-block:34px; border-top:1px solid var(--line); }
.history-year { font-size:38px; font-weight:650; color:var(--navy); letter-spacing:-.025em; line-height:1.2; }
.history-list h2 { font-size:28px; margin:0 0 16px; }
.jobs-list { padding-bottom:70px; }
.job { border-top:1px solid var(--line); padding:0; }
.job:last-child { border-bottom:1px solid var(--line); }
.job summary { padding:24px 8px 24px 0; font-size:20px; font-weight:600; color:var(--navy); justify-content:space-between; gap:30px; line-height:1.5; }
.job summary:after { flex-shrink:0; width:9px; height:9px; margin-right:10px; }
.job-body { max-width:80ch; padding:8px 0 36px; }
.job-body h3 { margin-top:24px; }
.references-section { padding-bottom:70px; }
.gallery-controls { display:none; flex-wrap:wrap; gap:10px; padding-block:0 18px; }
.filter-button { border:1px solid var(--line); padding:10px 22px; min-height:46px; background:white; color:var(--navy); cursor:pointer; font:inherit; font-size:15px; font-weight:600; border-radius:2px; }
.filter-button[aria-pressed=true] { background:var(--navy); border-color:var(--navy); color:white; }
.filter-button:hover { border-color:var(--navy); }
.js .gallery-controls { display:flex; }
.gallery-count { font-size:13px; color:var(--muted); margin-bottom:24px; }
.reference-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px 24px; }
.reference-grid figure { margin:0; min-width:0; }
.reference-grid [hidden] { display:none; }
.reference-grid img { width:100%; aspect-ratio:3/2; object-fit:cover; }
.reference-grid figcaption { font-size:14px; margin-top:11px; color:var(--muted); }
.lightbox { width:min(1100px,calc(100% - 32px)); max-width:none; max-height:calc(100vh - 32px); max-height:calc(100dvh - 32px); border:0; padding:22px; background:white; color:var(--ink); }
.lightbox::backdrop { background:#0c173dd9; }
.lightbox-toolbar,.lightbox-navigation { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.lightbox-toolbar p { font-size:17px; font-weight:600; margin:0; }
.lightbox button { background:var(--navy); border:0; color:white; min-height:44px; padding:10px 20px; font:inherit; font-size:14px; cursor:pointer; border-radius:2px; }
.lightbox button:disabled { opacity:.5; cursor:default; }
.lightbox-image { margin-block:20px; }
.lightbox-image img { margin-inline:auto; max-height:65vh; max-height:65dvh; width:auto; max-width:100%; object-fit:contain; }
.lightbox-navigation p { margin:0; font-size:13px; }
.contact-layout { display:grid; grid-template-columns:1fr 1.1fr; gap:80px; padding-bottom:70px; align-items:start; }
.contact-address { border-top:1px solid var(--line); margin-top:30px; padding-top:25px; font-weight:550; color:var(--navy); }
.contact-photo img { width:100%; aspect-ratio:2/1; object-fit:contain; }
.location-layout { display:grid; grid-template-columns:1fr 1fr; gap:80px; padding-bottom:70px; }
.location-services { padding:32px; background:var(--paper); }
.legal-layout { padding-bottom:80px; }
.legal-note { padding:22px 26px; margin-bottom:38px; background:var(--paper); color:var(--muted); font-size:14px; max-width:80ch; }
.legal-prose { max-width:78ch; }
.legal-prose > h2:first-child { margin-top:0; }
.legal-prose a { overflow-wrap:anywhere; }
.legal-prose table { width:100%; border-collapse:collapse; }
.legal-prose th,.legal-prose td { padding:10px; border:1px solid var(--line); }
@media (max-width:1000px) {
  .page-title-grid { gap:45px; }
  .staff-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .history-list li { grid-template-columns:150px 1fr; gap:35px; }
  .contact-layout { gap:40px; }
}
@media (max-width:900px) {
  .page-title-grid { grid-template-columns:1fr; gap:28px; }
  .page-head h1 { max-width:24ch; font-size:43px; }
  .page-head .prose { max-width:75ch; }
  .reference-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .contact-layout { grid-template-columns:1fr; gap:35px; }
  .contact-photo { max-width:720px; }
}
@media (max-width:600px) {
  .breadcrumbs { padding-top:18px; font-size:12px; gap:9px; }
  .page-head { padding-block:28px 35px; }
  .page-head h1 { font-size:35px; max-width:23ch; }
  .page-title-grid { gap:23px; }
  .prose { font-size:16px; }
  .prose h2 { font-size:25px; margin-top:32px; }
  .prose h3 { font-size:21px; }
  .topic-nav { gap:0 19px; font-size:14px; }
  .service-topic { padding-block:38px; }
  .service-topic > h2 { font-size:29px; margin-bottom:22px; }
  .detail-gallery { gap:12px; margin-top:25px; }
  .detail-gallery img { aspect-ratio:1; }
  .photo-section { padding-bottom:40px; }
  .service-maintenance { padding-bottom:42px; }
  .staff-section { padding-block:32px; }
  .staff-section h2 { font-size:24px; margin-bottom:25px; }
  .staff-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px 18px; }
  .person-copy { padding-top:14px; }
  .person-copy h3 { font-size:19px; }
  .person-copy p { font-size:13px; }
  .history-list { padding-bottom:40px; }
  .history-list li { grid-template-columns:70px minmax(0,1fr); gap:20px; padding-block:27px; }
  .history-year { font-size:25px; }
  .history-list h2 { font-size:23px; line-height:1.35; }
  .jobs-list { padding-bottom:40px; }
  .job summary { font-size:17px; padding-block:21px; gap:18px; overflow-wrap:anywhere; }
  .job-body { padding-bottom:28px; }
  .gallery-controls { gap:8px; }
  .filter-button { padding-inline:16px; font-size:14px; }
  .reference-grid { gap:25px 16px; }
  .reference-grid img { aspect-ratio:1; }
  .references-section { padding-bottom:40px; }
  .lightbox { padding:15px; }
  .lightbox-toolbar { align-items:start; gap:15px; }
  .lightbox-toolbar p { font-size:14px; }
  .lightbox button { padding-inline:13px; }
  .lightbox-image img { max-height:58dvh; }
  .contact-layout { padding-bottom:42px; }
  .location-layout { grid-template-columns:1fr; gap:30px; padding-bottom:42px; }
  .location-services { padding:24px; }
  .legal-layout { padding-bottom:45px; }
  .legal-note { padding:20px; font-size:13px; }
}

.header summary { padding-right:4px; }
.legal-title h1 { font-size:clamp(28px,3.7vw,54px); }

.job summary h2 { margin:0; font:inherit; color:inherit; letter-spacing:0; text-wrap:wrap; }
