.header {
  position: sticky;
  top: 0;
  z-index: var(--z-header);
  height: var(--h-header);
  background: var(--c-paper);
  border-bottom: var(--bw-hair) solid var(--c-line);
  transition: height 220ms var(--ease), border-color 220ms var(--ease);
}
.header__in {
  height: 100%;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  column-gap: 48px;
}
.header.is-compact { height: var(--h-header-compact); border-bottom-color: var(--c-line-strong); }

.brand {
  display: flex;
  align-items: center;
  text-decoration: none;
  color: var(--c-ink);
}
.brand__mark {
  width: 44px; height: 44px;
  flex: none;
  border: var(--bw-hair) solid var(--c-ink);
  border-radius: var(--radius-0);
  display: grid;
  place-content: center;
  font-family: var(--ff-head);
  font-weight: var(--fw-semi);
  font-size: 17px;
  letter-spacing: -.01em;

  line-height: 1;
  padding-top: 2px;
  transition: border-color var(--dur) var(--ease);
}
.brand:hover .brand__mark { border-color: var(--c-brand); }
.brand__div {
  width: 1px; height: 28px;
  background: var(--c-line);
  margin-inline: 14px;
  flex: none;
}
.brand__name {
  display: block;
  font-family: var(--ff-head);
  font-weight: var(--fw-semi);
  font-size: 17.5px;
  letter-spacing: -.008em;
  line-height: 1.2;
  white-space: nowrap;
}
.brand__role {
  display: block;
  margin-top: 4px;
  font-family: var(--ff-mono);
  font-weight: var(--fw-med);
  font-size: 10px;
  letter-spacing: .2em;
  color: var(--c-muted);
  white-space: nowrap;
  overflow: hidden;
  transition: opacity 220ms var(--ease), max-height 220ms var(--ease), margin-top 220ms var(--ease);
  max-height: 20px;
}
.header.is-compact .brand__role { opacity: 0; max-height: 0; margin-top: 0; }

@media (max-width: 599px) {
  .brand__mark { width: 38px; height: 38px; font-size: 15px; }
  .brand__div { margin-inline: 10px; }
  .brand__name { font-size: 14.5px; }
  .brand__role { font-size: 8.5px; letter-spacing: .12em; margin-top: 3px; }
}
@media (max-width: 379px) {
  .brand__div { display: none; }
  .brand__mark { margin-right: 10px; }
  .brand__name { font-size: 13.5px; }
  .brand__role { font-size: 8px; letter-spacing: .08em; }
}

.nav { justify-self: end; height: 100%; }
.nav__list { display: flex; gap: 32px; height: 100%; }
.nav__item { display: flex; }
.nav__link {
  position: relative;
  display: flex;
  align-items: center;
  height: 100%;
  padding-inline: 2px;
  font-size: 15px;
  font-weight: var(--fw-med);
  color: var(--c-ink);
  text-decoration: none;
  background: none;
  white-space: nowrap;
}
.nav__link::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -1px;
  height: 1px;
  background: var(--c-brand);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 180ms var(--ease);
}
.nav__link:hover::after, .nav__link:focus-visible::after { transform: scaleX(1); }
.nav__link[aria-current="page"] {
  font-weight: var(--fw-semi);
}
.nav__link[aria-current="page"]::after {
  height: 2px;
  background: var(--c-ink);
  transform: scaleX(1);
}
.nav__caret {
  display: inline-block;
  margin-left: 6px;
  font-size: 10px;
  transition: transform var(--dur) var(--ease);
}
.nav__link[aria-expanded="true"] .nav__caret { transform: rotate(180deg); }

@media (max-width: 1199px) {
  .header__in { column-gap: 20px; }
  .nav__list { gap: 18px; }
  .nav__link { font-size: 14px; }
}
@media (max-width: 1023px) { .nav { display: none; } }

.header__cta {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: var(--sp-3);
}
@media (max-width: 1199px) {
  .header__cta .btn { padding-inline: 14px; font-size: 13.5px; height: 42px; }
}
@media (max-width: 1023px) { .header__cta .btn { display: none; } }

.header__mobile { display: none; gap: var(--sp-2); justify-self: end; }
.icon-btn {
  width: 44px; height: 44px;
  border: var(--bw-hair) solid var(--c-line-interactive);
  border-radius: var(--radius-1);
  display: grid;
  place-content: center;
  color: var(--c-ink);
  background: #fff;
  text-decoration: none;
}
.icon-btn:hover { border-color: var(--c-brand); color: var(--c-brand); }
.burger__lines { position: relative; width: 20px; height: 12px; }
.burger__lines i {
  position: absolute;
  left: 0; width: 20px; height: 2px;
  background: currentColor;
  transition: transform 220ms var(--ease), opacity 220ms var(--ease);
}
.burger__lines i:nth-child(1) { top: 0; }
.burger__lines i:nth-child(2) { top: 5px; }
.burger__lines i:nth-child(3) { top: 10px; }

[aria-expanded="true"] .burger__lines i:nth-child(1) { transform: translateY(5px); }
[aria-expanded="true"] .burger__lines i:nth-child(2) { opacity: 0; }
[aria-expanded="true"] .burger__lines i:nth-child(3) { transform: translateY(-5px); }

@media (max-width: 1023px) {
  .header { height: var(--h-header-tablet); }
  .header__mobile { display: flex; }
}
@media (max-width: 767px) { .header { height: var(--h-header-mobile); } }

.mega {
  position: absolute;
  left: 0; right: 0;
  top: 100%;
  z-index: var(--z-megapanel);
  background: #fff;
  border-top: var(--bw-hair) solid var(--c-line);
  border-bottom: var(--bw-hair) solid var(--c-line-interactive);
  padding-block: var(--sp-5);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 140ms var(--ease), transform 140ms var(--ease), visibility 140ms;
}
.mega.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
.mega__in {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--gutter);
  align-items: start;
}
.mega__dir { grid-column: 1 / span 9; display: grid; grid-template-columns: repeat(4, 1fr); }
.mega__col { border-right: var(--bw-hair) solid var(--c-line); padding-right: var(--sp-4); }
.mega__col:last-child { border-right: 0; }
.mega__col + .mega__col { padding-left: var(--sp-4); }
.mega__link {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  min-height: 32px;
  padding-block: 3px;
  text-decoration: none;
  color: var(--c-ink);
}
.mega__i {
  font-family: var(--ff-mono);
  font-size: var(--fs-mono);
  font-variant-numeric: tabular-nums;
  color: var(--c-muted);
  flex: none;
}
.mega__t { font-size: 14px; line-height: 1.3; }
.mega__link:hover .mega__t { color: var(--c-brand); }
.mega__link:hover .mega__i { color: var(--c-copper); }
.mega__aside { grid-column: 10 / span 3; }
.mega__aside .fig { aspect-ratio: 16 / 9; }
.mega__cap {
  margin-top: var(--sp-2);
  font-family: var(--ff-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-mono);
  color: var(--c-muted);
}

@media (max-width: 1023px) { .mega { display: none; } }

.mnav-layer {
  position: fixed;
  inset: 0;
  z-index: var(--z-mobilemenu);
  overflow: hidden;
  pointer-events: none;
}

.mnav-scrim {
  position: absolute;
  inset: 0;
  background: rgba(7, 23, 38, .48);
  opacity: 0;
  visibility: hidden;
  pointer-events: auto;
  transition: opacity 260ms var(--ease), visibility 260ms;
}
.mnav-scrim.is-open { opacity: 1; visibility: visible; }

.mnav {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: min(400px, 86vw);
  pointer-events: auto;
  background: var(--c-paper);
  border-left: var(--bw-hair) solid var(--c-line-interactive);
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overscroll-behavior: contain;
  visibility: hidden;
  transform: translateX(100%);
  transition: transform 260ms var(--ease), visibility 260ms;
}
.mnav.is-open { visibility: visible; transform: translateX(0); }
.mnav__top {
  height: 64px;
  flex: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-inline: var(--pad-x);
  border-bottom: var(--bw-hair) solid var(--c-line);
}
.mnav__close {
  width: 44px; height: 44px;
  display: grid; place-content: center;
  font-size: 22px;
  color: var(--c-ink);
}
.mnav__list { padding-inline: var(--pad-x); }
.mnav__list > li { border-bottom: var(--bw-hair) solid var(--c-line); }
.mnav__row {
  position: relative;
  display: grid;
  grid-template-columns: 40px 1fr auto;
  align-items: center;
  gap: var(--sp-2);
  min-height: 60px;
  width: 100%;
  padding: 0;
  text-align: left;
  text-decoration: none;
  color: var(--c-ink);
  font-family: inherit;
}
.mnav__row.is-active::before {
  content: "";
  position: absolute;
  left: calc(var(--pad-x) * -1 + 0px);
  top: 8px; bottom: 8px;
  width: 3px;
  background: var(--c-brand);
}
.mnav__i {
  font-family: var(--ff-mono);
  font-size: var(--fs-mono);
  font-variant-numeric: tabular-nums;
  color: var(--c-muted);
}
.mnav__t { font-family: var(--ff-head); font-weight: var(--fw-semi); font-size: 21px; }
.mnav__arrow { font-size: 14px; color: var(--c-muted); transition: transform var(--dur) var(--ease); }

.mnav__split { display: flex; align-items: center; }
.mnav__split .mnav__row { grid-template-columns: 40px 1fr; flex: 1 1 auto; }
.mnav__toggle {
  flex: none;
  width: 52px;
  align-self: stretch;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  background: none;
  border: 0;
  padding: 0;
  color: var(--c-muted);
  cursor: pointer;
}
[aria-expanded="true"] > .mnav__arrow { transform: rotate(180deg); }

.mnav__sub {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 240ms var(--ease);
  background: var(--c-paper-blue);
  margin-inline: calc(var(--pad-x) * -1);
}
.mnav__sub.is-open { grid-template-rows: 1fr; }
.mnav__sub > div { overflow: hidden; }
.mnav__sublink {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  min-height: 46px;
  padding-left: 40px;
  padding-right: var(--pad-x);
  text-decoration: none;
  color: var(--c-ink);
  font-size: 16px;
}
.mnav__sublink .mnav__i { font-size: 10.5px; }
.mnav__foot { padding: var(--sp-7) var(--pad-x) var(--sp-9); }
.mnav__contact { margin-top: var(--sp-5); }
.mnav__phone { font-size: 17px; font-weight: var(--fw-semi); color: var(--c-ink); text-decoration: none; }
.mnav__sig {
  margin-top: var(--sp-7);
  font-family: var(--ff-mono);
  font-size: 10.5px;
  letter-spacing: var(--ls-mono);
  color: var(--c-muted);
}

.footer {
  background: var(--c-deep);
  border-top: var(--bw-emph) solid var(--c-brand);
  color: var(--c-ink-invert);
  padding-top: 72px;
}
.footer a:not(.btn) { color: var(--c-ink-invert); text-decoration: none; }
.footer a:not(.btn):hover { color: #fff; }
.footer__top { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 0; }
.footer__col { padding-inline: var(--sp-7); border-left: var(--bw-hair) solid rgba(255, 255, 255, .10); }
.footer__col:first-child { padding-left: 0; border-left: 0; }
.footer__col--brand { grid-column: span 4; }
.footer__col--map { grid-column: span 2; }
.footer__col--areas { grid-column: span 3; }
.footer__col--contact { grid-column: span 3; }

.footer__mark {
  width: 44px; height: 44px;
  border: var(--bw-hair) solid rgba(255, 255, 255, .35);
  display: grid; place-content: center;
  font-family: var(--ff-head);
  font-weight: var(--fw-semi);
  font-size: 17px;
  color: #fff;
  line-height: 1;
  padding-top: 2px;
}
.footer__name { margin-top: var(--sp-4); font-family: var(--ff-head); font-weight: var(--fw-semi); font-size: 19px; color: #fff; }
.footer__role {
  margin-top: 6px;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: var(--ls-mono);
  color: var(--c-ink-invert);
}
.footer__desc { margin-top: var(--sp-5); font-size: 15px; line-height: 1.7; max-width: 34ch; color: var(--c-ink-invert); }
.footer__addr { margin-top: var(--sp-6); font-size: 14.5px; line-height: 1.6; color: rgba(255, 255, 255, .75); max-width: 34ch; }

.footer__h {
  font-family: var(--ff-mono);
  font-size: 10.5px;
  letter-spacing: var(--ls-mono);
  color: rgba(255, 255, 255, .5);
  margin-bottom: var(--sp-4);
}
.footer__links li a {
  display: block;
  font-size: 14.5px;
  line-height: 34px;
  padding-block: 5px;
}
.footer__phone { display: block; font-size: 19px; color: #fff; font-weight: var(--fw-semi); }
.footer__meta { margin-top: var(--sp-3); font-size: 14.5px; line-height: 1.7; color: var(--c-ink-invert); }
.footer__domain {
  margin-top: 10px;
  font-family: var(--ff-mono);
  font-size: 10.5px;
  letter-spacing: var(--ls-mono-tight);
  color: rgba(255, 255, 255, .55);
}

.footer__legal {
  margin-top: var(--sp-8);
  border-top: var(--bw-hair) solid rgba(255, 255, 255, .15);
  padding-block: var(--sp-6);
  font-family: var(--ff-mono);
  font-size: 11px;
  line-height: 1.7;
  color: rgba(255, 255, 255, .68);
}
.footer__bar {
  border-top: var(--bw-hair) solid rgba(255, 255, 255, .15);
  padding-block: var(--sp-5);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  font-family: var(--ff-mono);
  font-size: 11px;
  color: rgba(255, 255, 255, .6);
}
.footer__legal-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2) var(--sp-4);
  margin-top: var(--sp-4);
  padding-top: var(--sp-4);
  border-top: var(--bw-hair) solid rgba(255, 255, 255, .14);
}
.footer__legal-links a { font-size: 13.5px; }
.footer__acc { display: none; }

@media (max-width: 1023px) {
  .footer__col--brand { grid-column: span 6; }
  .footer__col--map { grid-column: span 6; }
  .footer__col--areas { grid-column: span 6; margin-top: var(--sp-8); }
  .footer__col--contact { grid-column: span 6; margin-top: var(--sp-8); }
}
@media (max-width: 767px) {
  .footer { padding-top: var(--sp-9); }
  .footer__top { grid-template-columns: 1fr; }
  .footer__col {
    grid-column: 1 / -1 !important;
    padding: 28px 0;
    margin-top: 0 !important;
    border-left: 0;
    border-top: var(--bw-hair) solid rgba(255, 255, 255, .10);
  }
  .footer__col:first-child { border-top: 0; padding-top: 0; }
  .footer__bar { flex-direction: column; align-items: flex-start; }

  .footer__acc { display: block; }
  .footer__acc summary {
    list-style: none;
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    font-family: var(--ff-mono);
    font-size: 10.5px;
    letter-spacing: var(--ls-mono);
    color: rgba(255, 255, 255, .5);
  }
  .footer__acc summary::-webkit-details-marker { display: none; }
  .footer__acc summary::after { content: "+"; font-size: 16px; }
  .footer__acc[open] summary::after { content: "−"; }
  .footer__plain { display: none; }
}

[data-loading] .preloader { opacity: 1; visibility: visible; }

.preloader {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-content: center;
  background: var(--c-paper-blue);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--dur-slow) var(--ease), visibility 0s linear var(--dur-slow);
}
[data-loading] .preloader { transition-delay: 0s; }

.preloader__in { display: grid; justify-items: center; gap: var(--sp-5); }

.preloader__mark {
  display: grid;
  place-content: center;
  width: 52px;
  height: 52px;
  border: var(--bw-hair) solid var(--c-line-strong);
  font-family: var(--ff-head);
  font-size: 18px;
  font-weight: var(--fw-semi);
  color: var(--c-ink);
}

.preloader__bar {
  display: block;
  width: 128px;
  height: 2px;
  background: var(--c-line);
  overflow: hidden;
}
.preloader__bar > i {
  display: block;
  width: 40%;
  height: 100%;
  background: var(--c-copper);
  animation: preloader-slide 1.1s var(--ease) infinite;
}
@keyframes preloader-slide {
  from { transform: translateX(-100%); }
  to { transform: translateX(320%); }
}

.preloader__text {
  font-family: var(--ff-mono);
  font-size: var(--fs-mono-sm);
  letter-spacing: var(--ls-mono);
  color: var(--c-muted);
}

@media (prefers-reduced-motion: reduce) {
  .preloader { transition: none; }
  .preloader__bar > i { animation: none; width: 100%; }
}

.consent {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 150;
  background: #fff;
  border-top: var(--bw-mark) solid var(--c-copper);
  box-shadow: 0 -12px 32px rgba(7, 23, 38, .12);
}
.consent[hidden] { display: none; }

.consent__in {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sp-5) var(--sp-7);
  align-items: center;
  padding-block: var(--sp-5);
}

.consent__title {
  font-family: var(--ff-head);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semi);
  color: var(--c-ink);
}
.consent__text {
  margin-top: 6px;
  max-width: 84ch;
  font-size: 14px;
  line-height: 1.7;
  color: var(--c-muted);
}
.consent__link { margin-top: 10px; }

.consent__actions { display: flex; gap: var(--sp-3); flex-wrap: wrap; }

@media (max-width: 899px) {
  .consent__in { grid-template-columns: 1fr; }
  .consent__actions .btn { flex: 1 1 auto; }
}

.mapframe--cover { display: grid; place-content: stretch; background: var(--c-paper-blue); }

.mapcover {
  display: grid;
  align-content: center;
  justify-items: center;
  gap: var(--sp-5);
  padding: var(--sp-7);
  text-align: center;
}
.mapcover__text {
  max-width: 56ch;
  font-size: var(--fs-sm);
  line-height: 1.7;
  color: var(--c-muted);
}

.credit {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-3);
}

.credit__text {
  font-family: var(--ff-mono);
  font-size: var(--fs-mono-sm);
  letter-spacing: var(--ls-mono);
  color: rgba(255, 255, 255, .5);
}

.credit__link {
  display: inline-flex;
  opacity: .72;
  transition: opacity var(--dur) var(--ease);
}
.credit__link:hover { opacity: 1; }

.credit__logo { display: block; width: auto; height: 18px; }
