* { box-sizing: border-box; }
html { scroll-padding-top: 7rem; }
body { margin: 0; color: var(--color-text-primary); background: var(--color-bg); font: 400 var(--font-size-body)/var(--line-height-body) var(--font-body); }
a { color: var(--color-link); text-underline-offset: .22em; }
img { display: block; max-width: 100%; height: auto; }
button { font: inherit; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 4px; }
#main-content:focus { outline: none; }
.container { width: 100%; max-width: var(--layout-max); margin-inline: auto; padding-inline: var(--layout-gutter); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 60; top: var(--space-3); left: var(--space-4); transform: translateY(-200%); background: var(--color-surface); padding: var(--space-3) var(--space-4); border: 1px solid var(--color-input-border); border-radius: var(--radius-control); }
.skip-link:focus { transform: translateY(0); }

.site-header { position: sticky; z-index: 40; top: 0; padding-block: var(--space-3); }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: var(--space-6); min-height: 72px; padding: .65rem 1rem .65rem 1.25rem; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-panel); box-shadow: var(--shadow-header); transition: box-shadow .2s ease; }
.site-header[data-scrolled="true"] .header-inner { box-shadow: var(--shadow-panel); }
.brand { display: inline-flex; align-items: center; flex-shrink: 0; width: 174px; min-height: 44px; }
.brand img { width: 100%; }
.primary-nav { display: flex; align-items: center; gap: var(--space-1); font-size: var(--font-size-ui); line-height: var(--line-height-ui); font-weight: 500; }
.nav-link, .services-menu summary { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); min-height: 44px; padding: .6rem .75rem; border-radius: var(--radius-control); color: var(--color-text-primary); text-decoration: none; white-space: nowrap; transition: background .18s ease, color .18s ease; }
.nav-link:hover, .services-menu summary:hover { background: var(--color-surface-alt); }
.nav-link[aria-current="page"], .services-menu.is-current summary { background: var(--color-action-tint); color: var(--color-link); }
.button { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-4); min-height: 54px; padding: .6rem .7rem .6rem 1.15rem; border: 1px solid var(--color-action); border-radius: var(--radius-control); background: var(--color-action); color: var(--color-on-action); font-size: var(--font-size-ui); line-height: var(--line-height-ui); font-weight: 500; text-decoration: none; white-space: nowrap; cursor: pointer; transition: background .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.button > span[aria-hidden="true"] { display: inline-grid; flex-shrink: 0; place-items: center; width: 30px; height: 30px; border-radius: .5rem; background: var(--color-arrow-surface); font-size: 1.15rem; line-height: 1; transition: transform .18s ease; }
.button:hover { background: var(--color-action-hover); border-color: var(--color-action-hover); box-shadow: var(--shadow-control); transform: translateY(-2px); }
.button:hover > span[aria-hidden="true"] { transform: translate(1px, -1px); }
.button:active { transform: translateY(0); }
.button-secondary, .button.button-quiet { background: var(--color-surface); color: var(--color-text-primary); border-color: var(--color-input-border); }
.button-secondary > span[aria-hidden="true"], .button.button-quiet > span[aria-hidden="true"], .button.button-on-dark > span[aria-hidden="true"] { background: var(--color-surface-alt); }
.button-secondary:hover, .button.button-quiet:hover { background: var(--color-surface-alt); color: var(--color-text-primary); border-color: var(--color-text-primary); }
.primary-nav .header-contact, .primary-nav .header-contact.button-quiet { min-height: 48px; margin-left: var(--space-2); background: var(--color-dark-bg); color: var(--color-on-dark); border-color: var(--color-dark-bg); }
.primary-nav .header-contact > span[aria-hidden="true"] { width: 27px; height: 27px; background: var(--color-arrow-surface); }
.primary-nav .header-contact:hover { background: var(--color-text-secondary); border-color: var(--color-text-secondary); }
.services-menu { position: relative; }
.services-menu summary { list-style: none; cursor: pointer; }
.services-menu summary::-webkit-details-marker { display: none; }
.chevron { width: 7px; height: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .18s ease; }
.services-menu[open] .chevron { transform: translateY(2px) rotate(225deg); }
.services-dropdown { position: absolute; z-index: 45; top: calc(100% + 14px); left: -12px; width: 338px; padding: var(--space-3); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-panel); box-shadow: var(--shadow-panel); }
.services-dropdown-label { margin: 0; padding: .65rem .75rem .8rem; font-size: var(--font-size-small); color: var(--color-text-secondary); font-weight: 400; }
.services-dropdown a { display: flex; align-items: center; min-height: 44px; padding: .7rem .75rem; border-radius: var(--radius-control); color: var(--color-text-primary); text-decoration: none; line-height: 1.45; transition: background .18s ease, color .18s ease; }
.services-dropdown a:hover, .services-dropdown a[aria-current="page"] { background: var(--color-action-tint); color: var(--color-link); }
.services-dropdown .services-dropdown-all { justify-content: space-between; margin-top: var(--space-2); padding-top: var(--space-4); border-top: 1px solid var(--color-border); border-radius: 0 0 var(--radius-control) var(--radius-control); color: var(--color-link); }
.menu-toggle { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-3); min-height: 44px; border: 1px solid var(--color-border); border-radius: var(--radius-control); color: var(--color-text-primary); background: var(--color-bg); padding: .6rem .8rem; font-size: var(--font-size-ui); cursor: pointer; }
.menu-symbol { position: relative; width: 16px; height: 10px; border-block: 1.5px solid currentColor; }
.menu-toggle[aria-expanded="true"] .menu-symbol { border: 0; }
.menu-toggle[aria-expanded="true"] .menu-symbol::before, .menu-toggle[aria-expanded="true"] .menu-symbol::after { content: ""; position: absolute; top: 4px; left: 0; width: 16px; height: 1.5px; background: currentColor; transform: rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-symbol::after { transform: rotate(-45deg); }

.page-intro { padding-block: clamp(3rem, 2rem + 4vw, 5.5rem); }
.eyebrow { color: var(--color-link); font-size: var(--font-size-small); font-weight: 500; margin: 0 0 var(--space-4); }
h1 { max-width: 19ch; margin: 0; font-family: var(--font-display); font-size: var(--font-size-page-title); font-weight: 600; line-height: 1.12; letter-spacing: -.025em; text-wrap: balance; }
.lead { max-width: var(--measure-body); margin: var(--space-6) 0 0; color: var(--color-text-secondary); font-size: var(--font-size-lead); line-height: 1.6; }

.site-footer { position: relative; background: var(--color-dark-bg); color: var(--color-on-dark); padding-top: var(--space-16); }
.site-footer :focus-visible { outline-color: var(--color-on-dark); }
.footer-invitation { position: relative; display: grid; grid-template-columns: 1.15fr .85fr; align-items: center; gap: var(--space-16); padding-bottom: var(--space-12); margin-bottom: var(--space-12); border-bottom: 1px solid var(--color-dark-border); }
.footer-eyebrow { position: relative; z-index: 1; margin: 0 0 var(--space-4); color: var(--color-dark-secondary); font-size: var(--font-size-small); }
.footer-invitation h2 { position: relative; z-index: 1; margin: 0; max-width: 16ch; font: 600 clamp(2rem, 1.3rem + 2.3vw, 3.25rem)/1.12 var(--font-display); letter-spacing: -.025em; text-wrap: balance; }
.footer-invitation > div > p:not(.footer-eyebrow) { position: relative; z-index: 1; max-width: 48ch; margin: var(--space-4) 0 0; color: var(--color-dark-secondary); font-size: var(--font-size-ui); line-height: 1.65; }
.footer-invitation-action { position: relative; z-index: 1; justify-self: end; }
.footer-invitation .footer-invitation-action p { margin-top: var(--space-3); font-size: var(--font-size-small); text-align: center; }
.button.button-footer { background: var(--color-on-dark); color: var(--color-text-primary); border-color: var(--color-on-dark); }
.button.button-footer > span[aria-hidden="true"] { background: var(--color-surface-alt); }
.button.button-footer:hover { background: var(--color-surface-alt); border-color: var(--color-surface-alt); }
.footer-map { position: absolute; width: 180px; height: 180px; top: 0; right: 22%; color: var(--color-dark-border); stroke: currentColor; stroke-width: 1; pointer-events: none; }
.footer-map-point { fill: currentColor; stroke: none; }
.footer-grid { display: grid; grid-template-columns: 1.15fr .7fr 1.25fr .85fr; gap: var(--space-8); padding-bottom: var(--space-12); }
.footer-brand { width: 198px; padding: .85rem 1rem; margin-bottom: var(--space-6); border-radius: var(--radius-control); background: var(--color-bg); }
.footer-intro p { max-width: 27ch; margin: 0 0 var(--space-4); font-size: var(--font-size-ui); line-height: 1.65; }
.footer-location { color: var(--color-dark-secondary); }
.text-link { display: inline-flex; align-items: center; gap: var(--space-2); min-height: 44px; font-size: var(--font-size-ui); font-weight: 500; }
.footer-heading { margin: 0 0 var(--space-4); color: var(--color-on-dark); font: 500 var(--font-size-ui)/1.4 var(--font-body); }
.footer-links { list-style: none; padding: 0; margin: 0; }
.footer-links li { margin: 0; }
.footer-links a { display: inline-flex; align-items: center; gap: var(--space-2); min-height: 40px; padding-block: .3rem; color: var(--color-dark-secondary); font-size: var(--font-size-ui); line-height: 1.5; text-decoration: none; transition: color .18s ease; }
.footer-links a:hover { color: var(--color-on-dark); text-decoration: underline; text-underline-offset: .3em; }
.social-links a { justify-content: space-between; width: 100%; max-width: 132px; }
.social-links a > span[aria-hidden="true"] { display: grid; flex-shrink: 0; place-items: center; width: 24px; height: 24px; border-radius: .375rem; border: 1px solid var(--color-dark-border); transition: background .18s ease, transform .18s ease; }
.social-links a:hover > span[aria-hidden="true"] { background: var(--color-dark-hover); transform: translate(1px, -1px); }
.footer-note { max-width: 23ch; margin: var(--space-4) 0 0; color: var(--color-dark-secondary); font-size: var(--font-size-small); line-height: 1.65; }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; gap: var(--space-6); flex-wrap: wrap; padding-block: var(--space-6); border-top: 1px solid var(--color-dark-border); font-size: var(--font-size-small); color: var(--color-dark-secondary); }
.footer-bottom p { margin: 0; }
.footer-bottom a { min-height: 44px; display: inline-flex; align-items: center; color: var(--color-dark-secondary); text-decoration: none; }
.footer-bottom a:hover { color: var(--color-on-dark); text-decoration: underline; }

@media (max-width: 68rem) {
  .header-inner { gap: var(--space-3); padding-inline: .85rem; }
  .brand { width: 158px; }
  .nav-link, .services-menu summary { padding-inline: .55rem; }
  .primary-nav .header-contact { margin-left: var(--space-1); padding-left: .85rem; gap: var(--space-2); }
}
@media (max-width: 63.99rem) {
  .site-header:not([data-enhanced]) { position: relative; }
  .header-inner { flex-wrap: wrap; min-height: 68px; padding: .65rem .85rem; }
  .brand { width: 174px; }
  .primary-nav { width: 100%; display: flex; flex-direction: column; align-items: stretch; gap: var(--space-1); padding: var(--space-3) 0 var(--space-2); border-top: 1px solid var(--color-border); }
  .site-header[data-enhanced] .primary-nav { max-height: calc(100svh - 110px); overflow-y: auto; overscroll-behavior: contain; }
  .site-header[data-enhanced] .primary-nav[data-expanded="false"] { display: none; }
  .nav-link, .services-menu summary { width: 100%; justify-content: space-between; padding: .65rem .85rem; }
  .services-dropdown { position: static; width: 100%; padding: var(--space-2); margin-block: var(--space-2); background: var(--color-bg); box-shadow: none; }
  .primary-nav .header-contact { align-self: stretch; margin: var(--space-2) 0 0; }
  .footer-invitation { gap: var(--space-8); }
  .footer-map { right: 25%; width: 140px; height: 140px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--space-8) var(--space-12); }
  .footer-links a { min-height: 44px; }
}
@media (max-width: 36rem) {
  html { scroll-padding-top: 6rem; }
  .site-header { padding-block: var(--space-2); }
  .header-frame { padding-inline: .75rem; }
  .header-inner { border-radius: 1rem; }
  .brand { width: 150px; }
  .footer-invitation { grid-template-columns: 1fr; gap: var(--space-6); margin-bottom: var(--space-8); padding-bottom: var(--space-8); }
  .footer-invitation-action { justify-self: start; }
  .footer-invitation .footer-invitation-action p { text-align: left; }
  .footer-map { top: auto; bottom: 1.5rem; right: 0; width: 114px; height: 114px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--space-8) var(--space-6); padding-bottom: var(--space-8); }
  .footer-intro, .footer-grid > nav:last-child { grid-column: 1 / -1; }
  .footer-intro p { max-width: var(--measure-body); }
  .social-links { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--space-6); }
  .social-links a { max-width: 160px; }
  .footer-note { max-width: none; }
  .footer-bottom { align-items: flex-start; gap: var(--space-2); }
  .site-footer { padding-top: var(--space-12); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
  .header-inner, .nav-link, .services-menu summary, .button, .button > span[aria-hidden="true"], .chevron, .services-dropdown a, .footer-links a, .social-links a > span[aria-hidden="true"] { transition: none; }
  .button:hover, .button:hover > span[aria-hidden="true"], .social-links a:hover > span[aria-hidden="true"] { transform: none; }
}
