.site-header { position: sticky; z-index: 100; top: 0; border-bottom: 1px solid rgb(223 210 197 / 80%); background: rgb(255 255 255 / 94%); backdrop-filter: blur(12px); }
.admin-bar .site-header { top: 32px; }
.site-header__inner { display: grid; grid-template-columns: 150px 1fr auto; align-items: center; width: min(calc(100% - 40px), 1320px); min-height: 82px; margin-inline: auto; gap: 24px; }
.site-brand img { width: 145px; height: auto; }
.primary-nav .menu, .footer-nav .menu { display: flex; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; gap: 10px 18px; }
.primary-nav .menu > li { position: relative; }
.primary-nav a { font-size: .84rem; font-weight: 700; text-decoration: none; }
.primary-nav .current-menu-item > a, .primary-nav .current-menu-ancestor > a { color: var(--red); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .45em; }
.primary-nav .sub-menu { position: absolute; z-index: 120; top: calc(100% + 12px); left: -16px; display: none; width: max-content; min-width: 220px; max-width: 320px; margin: 0; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); box-shadow: var(--shadow); list-style: none; }
.primary-nav .sub-menu::before { position: absolute; right: 0; bottom: 100%; left: 0; height: 14px; content: ""; }
.primary-nav .menu-item-has-children:hover > .sub-menu, .primary-nav .menu-item-has-children:focus-within > .sub-menu { display: block; }
.primary-nav .sub-menu a { display: block; padding: 9px 10px; border-radius: 8px; }
.primary-nav .sub-menu a:hover, .primary-nav .sub-menu a:focus-visible { background: var(--paper); }
.header-actions { display: flex; gap: 8px; }
.mobile-menu { position: relative; z-index: 1; display: none; }
.mobile-menu summary { width: 44px; height: 44px; padding: 11px; border: 1px solid var(--line); border-radius: 50%; cursor: pointer; list-style: none; }
.mobile-menu summary::-webkit-details-marker { display: none; }
.mobile-menu summary span { display: block; height: 2px; margin: 4px 0; background: var(--navy); }
.site-main { min-height: 55vh; }
.section { padding: clamp(70px, 9vw, 126px) 0; }
.section--paper { background: var(--paper); }
.section--navy { color: rgb(255 255 255 / 85%); background: var(--navy); }
.section--navy h2, .section--navy h3 { color: var(--white); }
.split { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(36px, 7vw, 100px); }
.card-grid { display: grid; gap: 22px; }
.card-grid--3 { grid-template-columns: repeat(3, 1fr); }
.card-grid--fluid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.service-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 36px; }
.content-shell { padding-block: 80px 120px; }
.content-shell--narrow { max-width: 820px; }
.entry-header { margin-bottom: 40px; }
.entry-content > * { max-width: 760px; margin-inline: auto; }
.entry-content > .alignwide { max-width: var(--wrap); }
.entry-card { padding-block: 30px; border-bottom: 1px solid var(--line); }
.site-footer { padding: 72px 0 22px; color: rgb(255 255 255 / 78%); background: var(--navy-dark); }
.site-footer__inner { display: grid; grid-template-columns: 1fr 1.7fr; width: min(calc(100% - 40px), var(--wrap)); margin-inline: auto; gap: 50px; }
.site-footer__brand { color: var(--white); font-family: var(--font-serif); font-size: 1.45rem; }
.footer-nav a { font-size: .88rem; text-decoration: none; }
.footer-fallback-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.footer-fallback-grid h2 { margin-bottom: 12px; color: var(--white); font-family: var(--font-sans); font-size: .9rem; }
.footer-fallback-grid ul { margin: 0; padding: 0; list-style: none; }
.footer-fallback-grid li + li { margin-top: 8px; }
.site-footer__copy { width: min(calc(100% - 40px), var(--wrap)); margin: 52px auto 0; padding-top: 18px; border-top: 1px solid rgb(255 255 255 / 15%); font-size: .76rem; }
.mobile-contact { display: none; }
.breadcrumbs { margin-bottom: 24px; color: var(--muted); font-size: .78rem; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; gap: 6px; }
.breadcrumbs li:not(:last-child)::after { margin-left: 6px; content: "/"; }
.breadcrumbs a { text-underline-offset: .2em; }

@media (max-width: 1180px) {
  .site-header__inner { grid-template-columns: 145px minmax(0, 1fr); }
  .primary-nav, .header-actions { display: none; }
  .mobile-menu { display: block; justify-self: end; }
  .mobile-menu[open]::before { position: fixed; z-index: -1; inset: 82px 0 0; background: rgb(15 45 69 / 42%); content: ""; }
  .mobile-menu[open] nav { position: absolute; top: 82px; right: 0; width: min(360px, calc(100vw - 64px)); max-height: calc(100vh - 102px); overflow-y: auto; overscroll-behavior: contain; padding: 20px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); box-shadow: var(--shadow); }
  .mobile-menu .menu { display: grid; margin: 0; padding: 0; list-style: none; }
  .mobile-menu a { display: block; padding: 10px; text-decoration: none; }
  .mobile-menu .sub-menu { margin: 0 0 8px 14px; padding: 0 0 0 12px; border-left: 2px solid var(--line); list-style: none; }
  .mobile-menu .current-menu-item > a, .mobile-menu .current-menu-ancestor > a { color: var(--red); font-weight: 800; }
  .service-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 720px) {
  body.has-mobile-contact { padding-bottom: calc(58px + env(safe-area-inset-bottom)); }
  .site-header__inner { width: min(calc(100% - 28px), 1320px); min-height: 72px; }
  .admin-bar .site-header { top: 46px; }
  .mobile-menu[open]::before { inset-block-start: 72px; }
  .mobile-menu[open] nav { top: 72px; right: 0; }
  .wrap { width: min(calc(100% - 28px), var(--wrap)); }
  .split, .card-grid--3, .service-grid, .site-footer__inner, .footer-fallback-grid { grid-template-columns: 1fr; }
  .site-footer { padding-bottom: 40px; }
  .mobile-contact { position: fixed; z-index: 90; right: 0; bottom: 0; left: 0; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; padding-bottom: env(safe-area-inset-bottom); color: var(--white); background: var(--navy-dark); box-shadow: 0 -8px 28px rgb(15 45 69 / 20%); }
  .mobile-contact a { display: grid; min-height: 58px; padding: 8px; place-items: center; border-right: 1px solid rgb(255 255 255 / 18%); font-weight: 800; text-decoration: none; }
  .mobile-contact__line { background: var(--line-green); }
}

@media (max-width: 600px) {
  .admin-bar .site-header { top: 0; }
}
