/**
 * Site header: mobile navbar + desktop strip + floating shortcut rail.
 * Pill chrome: #1b1b1b fill, #454545 border; strip has no bottom border.
 */
:root {
  /* Desktop strip: inline-end reserved so center pill cannot cover absolute-positioned langs; mirrors ~max cluster width */
  --tpl-header-lang-slot: clamp(7.75rem, 28vw, 22rem);
  /* Mobile bar: logo + langs — cap lang cluster width so FAB column / logo stay balanced on tiny viewports */
  --tpl-navbar-lang-max: min(54vw, calc(100% - clamp(9.25rem, 46vw, 15rem)));

  /* Accent: use global --brand-red only (base.css) */
  /* Balanced: smooth but not sluggish */
  --tpl-nav-menu-ease: cubic-bezier(0.22, 1, 0.32, 1);
  --tpl-nav-menu-dur: 0.72s;
  --tpl-nav-strip-bg: #000000;
  --tpl-nav-pill-bg: #1b1b1b;
  --tpl-nav-pill-border: #454545;
  --tpl-nav-mobile-bg: #000000;
  /* Vertical padding for header chrome (scales with larger logo / nav type) */
  --tpl-header-pad-y-desktop: 26px;
  --tpl-header-pad-y-mobile: 20px;
  /* Above main/section layers (e.g. home .sec-main z-index) so the fixed center pill is not covered */
  --tpl-z-site-header: 10020;
}

/* Sits above <main> siblings in #page-root; fixed .tpl-menu-center-track uses this context */
.tpl-site-header {
  position: relative;
  z-index: var(--tpl-z-site-header);
  font-size: var(--text-header-root-vw);
}

/* —— Mobile top bar (navigation source .navbar) —— */
.tpl-navbar {
  display: none;
  background: var(--tpl-nav-mobile-bg);
  /* Match desktop strip (`.tpl-menu-desktop`): without this, links inherit `body` ink and lang labels flip dark on small screens. */
  color: #f8f8f8;
  position: sticky;
  top: 0;
  z-index: 1001;
}

.tpl-navbar__inner {
  width: min(1040px, 92%);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(6px, 2vw, 12px);
  padding: var(--tpl-header-pad-y-mobile) 0;
  /* Keep logo + language cluster in the same corners as English when html[dir=rtl] (fa) */
  direction: ltr;
}

.tpl-logo-wrap {
  position: relative;
  z-index: 2;
  text-decoration: none;
  color: inherit;
  display: flex;
  align-items: center;
  min-width: 0;
  flex: 1 1 auto;
}

.tpl-logo-wrap img,
.tpl-logo-img {
  display: block;
  height: clamp(40px, 5.2vw, 52px);
  width: auto;
  max-width: min(300px, 68vw);
}

/* —— Desktop strip (navigation source .sec-menu_desctop) ——
 * In bar: horizontal pill ( .tpl-menu-center .tpl-menu-center-track ).
 * After scroll, fixed vertical rail: .tpl-menu-center-track--floating (toggled in home.js).
 */
.tpl-menu-desktop {
  display: block;
  position: relative;
  z-index: 1;
  color: #f8f8f8;
  background-color: var(--tpl-nav-strip-bg);
  padding: 0 20px;
  line-height: 1;
  overflow: visible;
}

.tpl-menu-desktop__container {
  width: 100%;
  max-width: none;
  margin: 0;
}

.tpl-menu-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  min-height: 0;
  padding-top: var(--tpl-header-pad-y-desktop);
  padding-bottom: var(--tpl-header-pad-y-desktop);
  /* Reserve trailing edge so `.tpl-lang-switch--desktop` + center pill never stack visually */
  padding-inline-end: var(--tpl-header-lang-slot);
  /* Same strip geometry on RTL locales: logo left, langs right, pill centered */
  direction: ltr;
}

/* Logo: first flex child, pinned left */
.tpl-logo-desktop {
  position: relative;
  z-index: 3;
  flex: 0 0 auto;
  margin-right: auto;
}

/* Center: horizontal pill in the black bar */
.tpl-menu-center {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}

.tpl-menu-center .tpl-menu-center-track {
  position: relative;
  z-index: 1;
  display: inline-flex;
  flex-direction: row;
  align-items: stretch;
  justify-content: center;
  flex-wrap: nowrap;
  /* Width lives inside padded `.tpl-menu-wrapper` + absolute center inset (no vw guess vs langs). */
  max-width: min(56rem, 100%);
  pointer-events: auto;
  overflow: visible;
}

.tpl-menu-center-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-color: var(--tpl-nav-pill-bg);
  border: 1px solid var(--tpl-nav-pill-border);
  box-sizing: border-box;
  pointer-events: none;
  will-change: opacity, border-color, background-color;
  transition:
    opacity var(--tpl-nav-menu-dur) var(--tpl-nav-menu-ease),
    border-color var(--tpl-nav-menu-dur) var(--tpl-nav-menu-ease),
    background-color var(--tpl-nav-menu-dur) var(--tpl-nav-menu-ease);
}

.tpl-menu-center .tpl-menu-center-track .tpl-menu-center-bg {
  border-radius: 100px;
}

.tpl-menu-center-track--floating .tpl-menu-center-bg {
  border-radius: 40px;
}

/* Hover/focus: per-link pill; outer group chrome fades */
.tpl-menu-center-track:has(.tpl-menu-btn:hover) .tpl-menu-center-bg,
.tpl-menu-center-track:has(.tpl-menu-btn:focus-visible) .tpl-menu-center-bg,
.tpl-menu-center-track:has(.tpl-menu-btn:active) .tpl-menu-center-bg,
.tpl-menu-center-track:has(.tpl-menu-rail-cta:hover) .tpl-menu-center-bg,
.tpl-menu-center-track:has(.tpl-menu-rail-cta:focus-visible) .tpl-menu-center-bg,
.tpl-menu-center-track:has(.tpl-menu-rail-cta:active) .tpl-menu-center-bg {
  opacity: 0;
  border-color: transparent;
  background-color: transparent;
}

.tpl-menu-center .tpl-menu-center-inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  justify-content: center;
  flex-wrap: nowrap;
  gap: 3px;
  padding: 0;
  margin: 0;
  width: auto;
  pointer-events: auto;
}

/* Fixed right rail: vertical column + back-to-top (visible when .tpl-menu-desktop is off-screen) */
.tpl-menu-center-track--floating {
  position: fixed;
  bottom: calc(4.25rem + env(safe-area-inset-bottom, 0px));
  right: max(1rem, env(safe-area-inset-right, 0px));
  top: auto;
  left: auto;
  transform: none;
  z-index: calc(var(--tpl-z-site-header) + 2);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  max-width: min(13.5rem, calc(100vw - 1.5rem));
  max-height: min(72dvh, 28rem);
  pointer-events: auto;
  overflow: visible;
  transform: translateX(0);
  transition:
    opacity 0.34s var(--tpl-nav-menu-ease),
    visibility 0.34s var(--tpl-nav-menu-ease),
    transform 0.34s var(--tpl-nav-menu-ease);
}

@media (prefers-reduced-motion: reduce) {
  .tpl-menu-center-track--floating {
    transition: none;
    transform: none;
  }

  .tpl-menu-center-track--floating.is-concealed {
    transform: none;
  }

  .tpl-menu-floating-links {
    transition: none !important;
  }
}

.tpl-menu-center-track--floating.is-concealed {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateX(10px);
}

.tpl-menu-center-track--floating .tpl-menu-center-inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  flex-wrap: nowrap;
  gap: 4px;
  padding: 6px 0;
  margin: 0;
  width: 100%;
  pointer-events: auto;
}

.tpl-menu-center-track--floating .tpl-menu-center-inner .tpl-menu-btn {
  width: 100%;
  justify-content: center;
  text-align: center;
}

/*
 * Floating shortcuts: animate away instead of display:none (footer .is-cta-only).
 * Wrapper collapses height + fades so the rail doesn’t snap when only “top” stays.
 */
.tpl-menu-center-track--floating .tpl-menu-floating-links {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  overflow: hidden;
  max-height: min(52dvh, 22rem);
  max-width: 100%;
  min-width: 0;
  opacity: 1;
  transform: translateY(0);
  visibility: visible;
  transition:
    max-height 0.42s var(--tpl-nav-menu-ease),
    max-width 0.36s var(--tpl-nav-menu-ease),
    opacity 0.32s var(--tpl-nav-menu-ease),
    transform 0.32s var(--tpl-nav-menu-ease),
    visibility 0s linear;
}

.tpl-menu-center-track--floating.is-cta-only .tpl-menu-floating-links {
  /* Zero cross-size so longest nav label no longer sets rail width (flex min-width:auto). */
  max-height: 0;
  max-width: 0;
  min-width: 0;
  padding-inline: 0;
  margin: 0;
  border: 0;
  opacity: 0;
  transform: translateY(-6px);
  visibility: hidden;
  pointer-events: none;
  transition:
    max-height 0.38s var(--tpl-nav-menu-ease),
    max-width 0.32s var(--tpl-nav-menu-ease),
    opacity 0.26s var(--tpl-nav-menu-ease),
    transform 0.26s var(--tpl-nav-menu-ease),
    visibility 0s linear 0.3s;
}

/* When leaving footer: show links immediately for interaction, then fade/size in */
.tpl-menu-center-track--floating:not(.is-cta-only) .tpl-menu-floating-links {
  transition:
    max-height 0.46s var(--tpl-nav-menu-ease) 0.04s,
    max-width 0.4s var(--tpl-nav-menu-ease) 0.04s,
    opacity 0.34s var(--tpl-nav-menu-ease) 0.06s,
    transform 0.34s var(--tpl-nav-menu-ease) 0.06s,
    visibility 0s linear;
}

/* When the footer is in view, show only back-to-top in the floating rail (set by site-chrome.js) */
.tpl-menu-center-track--floating.is-cta-only .tpl-menu-center-inner {
  padding: 8px 0 6px;
  gap: 0;
  width: auto;
  max-width: 100%;
  align-items: center;
  align-self: center;
}

/* Shrink-wrapped column when only back-to-top — width follows the circle CTA, not hidden links */
.tpl-menu-center-track--floating.is-cta-only {
  min-width: 4.25rem;
  width: auto;
  /* max-width: inherit from base + breakpoints (do not override e.g. 9.5rem on small screens) */
  align-items: center;
  /* Half the width lost when links collapse keeps the disk visually fixed (site-chrome.js measures & sets). */
  margin-right: var(--tpl-floating-cta-right-nudge, 0px);
}

.tpl-menu-btn {
  color: #fff;
  text-transform: uppercase;
  text-decoration: none;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 100px;
  padding: 10px 16px;
  font-family: Antonio, sans-serif;
  font-size: var(--text-nav-pill);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.02em;
  white-space: nowrap;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  transition:
    color calc(var(--tpl-nav-menu-dur) * 0.92) var(--tpl-nav-menu-ease),
    background-color calc(var(--tpl-nav-menu-dur) * 0.92) var(--tpl-nav-menu-ease),
    border-color calc(var(--tpl-nav-menu-dur) * 0.92) var(--tpl-nav-menu-ease);
}

/* Desktop strip (home): `--text-tpl-menu-label` uses vw mids so strip matches EN regardless of scaled `body` (not floating rail) */
body.neogym-route-home .tpl-menu-desktop .tpl-menu-center-track:not(.tpl-menu-center-track--floating) .tpl-menu-btn {
  font-size: var(--text-tpl-menu-label);
}

.tpl-menu-btn:hover,
.tpl-menu-btn:focus-visible {
  color: var(--brand-red);
  background-color: var(--tpl-nav-pill-bg);
  border: 1px solid var(--tpl-nav-pill-border);
  border-radius: 100px;
}

.tpl-menu-btn.is-active {
  color: var(--brand-red);
}

/* Language switcher (desktop: right edge bar slot; mobile: top bar) */
.tpl-lang-switch {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.28rem 0.55rem;
  pointer-events: auto;
}

.tpl-lang-switch a {
  /* `--text-lang-link` is pinned in `base.css` (not shrunk with locale html/rem). */
  font-size: var(--text-lang-link);
  font-weight: 500;
  letter-spacing: 0.02em;
  text-decoration: none;
  color: inherit;
  opacity: 0.82;
  border-bottom: 1px solid transparent;
  transition:
    opacity 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease;
}

.tpl-lang-switch a:hover,
.tpl-lang-switch a:focus-visible {
  opacity: 1;
  color: var(--brand-red);
  border-bottom-color: color-mix(in srgb, var(--brand-red) 55%, transparent);
}

.tpl-lang-switch--desktop {
  position: absolute;
  top: 50%;
  right: 0;
  left: auto;
  transform: translateY(-50%);
  z-index: 3;
  max-width: min(320px, 46vw, var(--tpl-header-lang-slot));
  min-width: 0;
  justify-content: flex-end;
}

.tpl-lang-switch--navbar {
  flex: 0 1 auto;
  min-width: 0;
  max-width: var(--tpl-navbar-lang-max);
  justify-content: flex-end;
}

/* ≤479px: hide desktop strip, show compact navbar */
@media (max-width: 479px) {
  .tpl-menu-desktop {
    display: none;
  }

  .tpl-navbar {
    display: block;
  }

  /* Floating rail sits lower on small screens only (desktop/tablet use defaults above) */
  .tpl-menu-center-track--floating {
    right: max(0.5rem, env(safe-area-inset-right, 0px));
    bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
    max-width: min(9.5rem, calc(100vw - 0.5rem));
    max-height: min(68dvh, 24rem);
  }

  .tpl-menu-center-track--floating .tpl-menu-center-inner {
    gap: 3px;
    padding: 5px 0;
  }

  .tpl-menu-center-track--floating .tpl-menu-floating-links {
    gap: 3px;
  }

  .tpl-menu-center-track--floating .tpl-menu-center-inner .tpl-menu-btn {
    font-size: var(--text-header-nav-xs);
    padding: 7px 9px;
    -webkit-tap-highlight-color: transparent;
  }

  .tpl-menu-center-track--floating .tpl-menu-center-inner .tpl-menu-btn:hover,
  .tpl-menu-center-track--floating .tpl-menu-center-inner .tpl-menu-btn:focus-visible {
    background-color: transparent;
    border: 1px solid transparent;
  }

  .tpl-menu-center-track--floating .tpl-menu-center-inner .tpl-menu-btn:active {
    background-color: transparent;
    border: 1px solid var(--tpl-nav-pill-border);
  }

  .tpl-menu-center-track--floating .tpl-menu-center-inner .tpl-menu-btn.is-pressing {
    background-color: transparent;
    border: 1px solid var(--tpl-nav-pill-border);
  }

  .tpl-menu-center-track--floating:not(:has(.tpl-menu-btn:active)):not(:has(.tpl-menu-rail-cta:active)) .tpl-menu-center-bg {
    opacity: 1;
    border-color: var(--tpl-nav-pill-border);
    background-color: var(--tpl-nav-pill-bg);
  }
}

@media (min-width: 480px) {
  .tpl-navbar {
    display: none !important;
  }
}

@media (min-width: 480px) and (max-width: 900px) {
  .tpl-menu-center-track--floating {
    right: max(0.75rem, env(safe-area-inset-right, 0px));
    bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px));
    max-width: min(10.5rem, calc(100vw - 0.75rem));
  }
}

@media (max-width: 720px) {
  .tpl-menu-btn {
    padding: 8px 10px;
    font-size: var(--text-header-nav-sm);
  }
}
