.site-header {
  /* Прозрачная по умолчанию: под шапкой виден фон следующего блока (герой).
     Непрозрачная плавающая версия — отдельное sticky-состояние при скролле вверх (159:3471), делается отдельным блоком. */
  position: relative;
  z-index: 20;
}

.site-header__inner {
  /* Без max-width/margin-auto: лого и кнопка должны быть прибиты к
     истинным левому/правому краю окна на любой ширине (в т.ч. шире 1440),
     а не к краям центрированного бокса. Навигация центрируется отдельно
     через .site-nav (left:50% от этого же full-width контейнера). */
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: var(--header-height);
  padding: 0 var(--header-pad-right) 0 var(--header-pad-left);
}

.logo {
  display: inline-flex;
  align-items: center;
  transition: opacity 0.2s ease;
}

.logo:hover {
  opacity: 0.75;
}

.logo__image {
  display: block;
  width: 180px;
  height: 34.56px;
}

.site-nav {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.site-nav__list {
  display: flex;
  align-items: center;
  gap: 40px;
}

.site-nav__link {
  display: inline-block;
  font-size: var(--fs-nav);
  font-weight: var(--fw-semibold);
  color: var(--color-ink-muted);
  white-space: nowrap;
  /* Анимируем color, а не opacity: opacity < 1 переключает текст на
     grayscale-сглаживание (антиалиасинг) вместо LCD/subpixel, из-за чего
     в момент завершения перехода начертание визуально "дёргается". */
  transition: color 0.2s ease;
}

.site-nav__link:hover,
.site-nav__link:focus-visible {
  color: var(--color-ink);
}

.site-nav__link.is-active {
  color: var(--color-ink);
}

.mobile-nav-toggle {
  display: none;
}

/*
  Мобильная адаптация (600px, база
  390px). Хедер на мобильном — принципиально другое поведение, не сжатая
  копия десктопного: плавающая белая pill-капсула (position:fixed, всегда
  видна, без скрытия по направлению скролла — это поведение принадлежит
  ТОЛЬКО отдельному sticky-варианту header-sticky.njk, который на мобильном
  просто выключен целиком, см. header-sticky.css). Раз капсула не в потоке
  документа — .hero больше не поджимает себя отрицательным margin-top под
  неё (см. мобильный блок в hero.css), поэтому здесь этот трюк не нужен.
*/
@media (max-width: 599.98px) {
  .site-header {
    position: fixed;
    top: min(10px, calc(10 / 390 * 100vw));
    left: 50%;
    transform: translateX(-50%);
    width: min(370px, calc(370 / 390 * 100vw));
    z-index: 40;
  }

  .site-header__inner {
    height: min(60px, calc(60 / 390 * 100vw));
    padding: 0 min(20px, calc(20 / 390 * 100vw));
    border-radius: var(--radius-pill);
    background: var(--color-surface);
    box-shadow: 0 10px 30px rgba(10, 22, 33, 0.08);
  }

  .logo__image {
    width: min(143px, calc(143 / 390 * 100vw));
    height: auto;
  }

  /* Десктопное меню и кнопка уступают место бургеру. display:none у
     .site-nav переехал сюда из снесённого @media (max-width:960px)
     (правки 2026-08-05, п.18, этап 2): другого правила, которое прячет
     десктопную навигацию на телефоне, в проекте нет — без этой строки
     она вернулась бы поверх капсулы. */
  .site-nav {
    display: none;
  }

  .site-header__inner > .btn {
    display: none;
  }

  .mobile-nav-toggle {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: min(4px, calc(4 / 390 * 100vw));
    width: min(44px, calc(44 / 390 * 100vw));
    height: min(44px, calc(44 / 390 * 100vw));
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
  }

  .mobile-nav-toggle__line {
    width: min(16px, calc(16 / 390 * 100vw));
    height: 1.6px;
    background: var(--color-ink);
    border-radius: 1px;
    transition: transform 0.25s ease, opacity 0.2s ease;
  }

  /* Бургер → крестик: типовой паттерн, средняя линия исчезает, крайние
     разворачиваются в X друг напротив друга (см. main.js → initMobileNav,
     класс .is-open ставится на саму кнопку). */
  .mobile-nav-toggle.is-open .mobile-nav-toggle__line:nth-child(1) {
    transform: translateY(min(5.6px, calc(5.6 / 390 * 100vw))) rotate(45deg);
  }

  .mobile-nav-toggle.is-open .mobile-nav-toggle__line:nth-child(2) {
    opacity: 0;
  }

  .mobile-nav-toggle.is-open .mobile-nav-toggle__line:nth-child(3) {
    transform: translateY(min(-5.6px, calc(-5.6 / 390 * 100vw))) rotate(-45deg);
  }
}
