/* v5 «Сборка»: база v4 (светлый премиум), преимущества на фото с боевой,
   услуги скролл-историей из v3, карусель заказчиков с боевой (logoloop.js). Изолирован от боевых файлов. */

:root {
  --ink: #0f172a;
  --ink-soft: #374151;
  --ink-mute: #94a3b8;
  --paper: #f8fafc;
  --paper-warm: #f1f5f9;
  --line: #E2E8F0;
  --line-dark: rgba(255, 255, 255, .14);
  --deep: #1D3D6B;
  --deep-soft: #2a4d7a;
  --accent: #4568A8;
  --accent-light: #7FA0DB;
  --tint: rgba(69, 104, 168, .07);
  --on-deep: #F8FAFC;
  --on-deep-mute: rgba(248, 250, 252, .6);

  --shell: 1320px;
  --pad: 40px;
  --font: "Montserrat", -apple-system, BlinkMacSystemFont, sans-serif;
  --r: 14px;
  --shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 14px 34px -14px rgba(29, 61, 107, .12);
  --shadow-lift: 0 2px 4px rgba(15, 23, 42, .05), 0 22px 44px -16px rgba(29, 61, 107, .2);
  --ease: cubic-bezier(.22, .61, .36, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; background: #1D3D6B; }
body {
  margin: 0;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}
img, video { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
ul { padding: 0; list-style: none; }

::selection { background: var(--accent); color: #fff; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
body:not(.kbd-nav) :focus { outline: none; }

.shell { max-width: var(--shell); margin: 0 auto; padding: 0 var(--pad); }

/* Иконка из файла через маску: цвет управляется currentColor */
.micon {
  display: block;
  width: 40px;
  height: 40px;
  background-color: currentColor;
  -webkit-mask: var(--i) no-repeat center / contain;
  mask: var(--i) no-repeat center / contain;
}

/* ---------- Появление ---------- */

[data-reveal] {
  opacity: 0;
  transform: translate3d(0, 10px, 0);
  transition: opacity .5s var(--ease), transform .5s var(--ease);
  will-change: opacity, transform;
}
[data-reveal].is-in { opacity: 1; transform: none; }

[data-reveal="words"] { opacity: 1; transform: none; transition: none; }
/* Маска появления по словам: запас снизу под выносные элементы (р, у, ф, д),
   иначе overflow: hidden срезает их при плотном line-height заголовков */
.word { display: inline-block; overflow: hidden; vertical-align: bottom; padding-bottom: .14em; margin-bottom: -.14em; }
.word__in { display: inline-block; transform: translate3d(0, 130%, 0); transition: transform .6s var(--ease); }
.is-in .word__in, [data-split].is-in .word__in { transform: none; }

/* Плавный скролл не считаем анимацией — работает и при системном reduced-motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  .word__in { transform: none; }
}

/* ---------- Общие ---------- */

.kicker {
  display: inline-flex;
  align-items: baseline;
  gap: 12px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-mute);
}

.section { padding: 108px 0; position: relative; }
.section__head { margin-bottom: 48px; display: grid; gap: 18px; }
.section__title {
  font-weight: 700;
  font-size: clamp(25px, 2.6vw, 38px);
  line-height: 1.1;
  letter-spacing: -.025em;
  max-width: 24ch;
}

.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  padding-bottom: 8px;
  position: relative;
  white-space: nowrap;
}
.link-arrow::after {
  content: '';
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 1px; background: currentColor;
  transform-origin: right;
  transition: transform .45s var(--ease);
}
.link-arrow:hover::after { transform: scaleX(0); transform-origin: left; }
.link-arrow span { transition: transform .4s var(--ease); }
.link-arrow:hover span { transform: translateX(6px); }

/* ---------- Кнопки ---------- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 15px 28px;
  border-radius: 10px;
  border: 1px solid transparent;
  background: var(--ink);
  color: #fff;
  font: 600 13px/1 var(--font);
  letter-spacing: .08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color .3s var(--ease), transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;
}
.btn:hover { background: var(--deep); transform: translateY(-2px); box-shadow: 0 12px 26px -12px rgba(15, 23, 42, .5); }

/* Светлая: главная кнопка на видео и на тёмном футере */
.btn--light { background: #fff; color: var(--ink); }
.btn--light:hover { background: rgba(255, 255, 255, .88); box-shadow: 0 12px 28px -12px rgba(0, 0, 0, .55); }
.btn--ghost { background: transparent; border-color: rgba(248, 250, 252, .55); color: var(--on-deep); }
.btn--ghost:hover { background: rgba(248, 250, 252, .1); border-color: rgba(248, 250, 252, .7); box-shadow: none; }
.btn--sm { padding: 11px 20px; border-radius: 8px; font-size: 12px; }

/* ---------- Шапка ---------- */

.masthead {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 40;
  padding: 20px 0;
  color: var(--on-deep);
  transition: background-color .45s var(--ease), color .45s var(--ease), padding .45s var(--ease), border-color .45s, transform .5s var(--ease);
  border-bottom: 1px solid transparent;
}
.masthead.is-solid {
  padding: 12px 0;
  background: rgba(248, 250, 252, .95);
  color: var(--ink);
  border-bottom-color: var(--line);
}
.masthead.is-hidden { transform: translateY(-100%); }
.masthead__inner { display: flex; align-items: center; justify-content: space-between; gap: 40px; }
/* Логотип маской: на прозрачной шапке белый, на светлой — точный фирменный синий */
.masthead__logo-mask {
  display: block;
  width: 122px;
  height: 36px;
  background-color: currentColor;
  -webkit-mask: var(--i) no-repeat left center / contain;
  mask: var(--i) no-repeat left center / contain;
  transition: background-color .45s var(--ease);
}
.masthead.is-solid .masthead__logo-mask { background-color: var(--deep); }
/* бургер в цвет логотипа, а не почти чёрным текстом шапки */
.masthead.is-solid .burger { color: var(--deep); }

.masthead__nav { display: flex; gap: 32px; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.masthead__nav a { opacity: .75; padding-bottom: 4px; position: relative; transition: opacity .3s; }
.masthead__nav a:hover, .masthead__nav a[aria-current] { opacity: 1; }
.masthead__nav a::after {
  content: '';
  position: absolute; left: 0; bottom: 0; right: 0;
  height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: right;
  transition: transform .4s var(--ease);
}
.masthead__nav a:hover::after, .masthead__nav a[aria-current]::after { transform: scaleX(1); transform-origin: left; }

/* ---------- Мобильное меню ---------- */

/* Бургер без рамки: коробка с тонкой обводкой спорила с логотипом.
   Нажимается 44×44 (минимум для пальца), а штрихи правым краем стоят по краю
   контента — отрицательный отступ компенсирует пустое поле кнопки. */
.burger {
  display: none;
  width: 44px; height: 44px;
  margin-right: -10px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: inherit;
  padding: 0;
  cursor: pointer;
  position: relative;
  flex: 0 0 auto;
  -webkit-tap-highlight-color: transparent;
  transition: background-color .2s var(--ease);
}
.burger:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
@media (hover: hover) {
  .burger:hover { background: rgba(127, 140, 160, .14); }
}
.burger span {
  position: absolute;
  left: 10px; right: 10px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: transform .35s var(--ease), opacity .25s var(--ease);
}
.burger span:nth-child(1) { top: 15px; }
.burger span:nth-child(2) { top: 21px; }
.burger span:nth-child(3) { top: 27px; }
body.nav-open .burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
body.nav-open .burger span:nth-child(2) { opacity: 0; }
body.nav-open .burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.mobile-nav {
  position: fixed;
  inset: 0;
  z-index: 39;
  background: var(--deep);
  color: var(--on-deep);
  padding: 96px var(--pad) 40px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  transform: translateY(-100%);
  transition: transform .5s var(--ease);
  visibility: hidden;
}
body.nav-open .mobile-nav { transform: none; visibility: visible; }
.mobile-nav__links { display: grid; gap: 4px; }
.mobile-nav__links a {
  font-size: 30px;
  font-weight: 700;
  letter-spacing: -.03em;
  padding: 12px 0;
  border-bottom: 1px solid var(--line-dark);
}
.mobile-nav__foot { display: grid; gap: 10px; font-size: 15px; color: var(--on-deep-mute); }
.mobile-nav__foot a { color: var(--on-deep); font-weight: 600; }

/* ---------- Hero ---------- */

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  color: var(--on-deep);
}
.hero__media { position: absolute; inset: 0; background: var(--deep); }
.hero__media video, .hero__media img { width: 100%; height: 100%; object-fit: cover; }
.hero__media::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10, 22, 40, .55) 0%, rgba(10, 22, 40, .28) 45%, rgba(10, 22, 40, .72) 100%);
}
.hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  padding-bottom: 72px;
}
.hero__grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr); gap: 48px; align-items: end; }
.hero__title {
  font-weight: 800;
  font-size: clamp(34px, 4.6vw, 66px);
  line-height: 1.02;
  letter-spacing: -.03em;
  max-width: 14ch;
}
.hero__side { display: grid; gap: 26px; justify-items: start; }
.hero__actions { display: flex; gap: 14px; flex-wrap: wrap; }
.hero__lead { font-size: 16px; line-height: 1.6; color: rgba(248, 250, 252, .85); max-width: 44ch; }

/* Фоновая миллиметровка: инженерная фактура, растворяется к краям */
.section--blueprint::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(29, 61, 107, .05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(29, 61, 107, .05) 1px, transparent 1px);
  background-size: 72px 72px;
  -webkit-mask-image: radial-gradient(90% 80% at 72% 30%, #000 0%, transparent 68%);
  mask-image: radial-gradient(90% 80% at 72% 30%, #000 0%, transparent 68%);
  pointer-events: none;
}

/* ---------- 02 · Компания в цифрах ---------- */

/* Ровно пополам: правая кромка текста держит центральную ось секции */
.about__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(48px, 6vw, 96px); align-items: start; }
.about__title {
  font-weight: 700;
  font-size: clamp(25px, 2.6vw, 38px);
  line-height: 1.1;
  letter-spacing: -.025em;
  margin: 18px 0 22px;
}
.about__text { color: var(--ink-soft); display: grid; gap: 16px; }
.about__facts { margin-top: 26px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 13px; color: var(--ink-mute); letter-spacing: .04em; }
.about__facts b { color: var(--ink-soft); font-weight: 600; }

.stats { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(36px, 4vw, 60px) clamp(32px, 4vw, 72px); padding-top: 8px; }
.stat { display: grid; align-content: start; gap: 10px; border-top: 1px solid var(--line); padding-top: 22px; }
.stat__row { display: flex; align-items: center; gap: 18px; }
.stat .micon { width: 42px; height: 42px; color: var(--accent); flex: 0 0 auto; }
.stat__value {
  font-size: clamp(46px, 4.8vw, 72px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.03em;
  font-variant-numeric: tabular-nums;
}
/* «более» над числом: счётчик анимирует только вложенный [data-count] */
.num-more {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.geo__value { display: block; }
.geo__value .num-more { margin-bottom: 10px; font-size: 14px; transition: color .9s; }
.geo.is-dark .geo__value .num-more { color: var(--on-deep-mute); }
.stat__label { font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-mute); max-width: 24ch; }

/* ---------- 04 · Услуги: список + панель ---------- */

.svc__split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(32px, 4vw, 64px);
  align-items: stretch;
}
.svc__list { border-top: 1px solid var(--line); }
.svc__item {
  display: flex;
  align-items: center;
  gap: 20px;
  width: 100%;
  padding: 21px 16px 21px 8px;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: transparent;
  font: inherit;
  text-align: left;
  cursor: pointer;
  color: var(--ink);
  border-radius: 0;
  transition: background-color .3s var(--ease), padding-left .3s var(--ease);
}
.svc__item:hover, .svc__item.is-active { background: var(--tint); padding-left: 18px; }
.svc__item-num { font-size: 13px; font-weight: 600; color: var(--ink-mute); font-variant-numeric: tabular-nums; transition: color .3s; }
.svc__item.is-active .svc__item-num, .svc__item:hover .svc__item-num { color: var(--accent); }
.svc__item-title { font-size: clamp(17px, 1.6vw, 22px); font-weight: 600; letter-spacing: -.015em; flex: 1; }
.svc__item-arrow { font-size: 17px; color: var(--ink-mute); opacity: 0; transform: translateX(-6px); transition: opacity .3s, transform .3s var(--ease), color .3s; }
.svc__item.is-active .svc__item-arrow, .svc__item:hover .svc__item-arrow { opacity: 1; transform: none; color: var(--accent); }

.svc__panel {
  position: relative;
  border-radius: var(--r);
  background: var(--deep);
  box-shadow: var(--shadow);
  min-height: 440px;
  overflow: hidden;
}
.svc__pane {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 34px;
  color: var(--on-deep);
  opacity: 0;
  transition: opacity .5s var(--ease);
  pointer-events: none;
}
.svc__pane.is-active { opacity: 1; pointer-events: auto; }
.svc__pane-img {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: grayscale(.28) contrast(1.05) brightness(.92);
  transform: scale(1.05);
  transition: transform 1.6s var(--ease);
}
.svc__pane.is-active .svc__pane-img { transform: scale(1); }
.svc__pane::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10, 22, 40, .52) 0%, rgba(10, 22, 40, .2) 26%, rgba(10, 22, 40, .72) 58%, rgba(10, 22, 40, .95) 100%);
}
.svc__pane-title, .svc__pane-text, .svc__pane .btn { position: relative; z-index: 1; }
.svc__pane-title { font-size: clamp(20px, 1.9vw, 26px); font-weight: 700; letter-spacing: -.02em; margin-bottom: 10px; text-shadow: 0 1px 12px rgba(10, 22, 40, .6); }
.svc__pane-text { font-size: 14.5px; line-height: 1.6; color: rgba(248, 250, 252, .9); max-width: 44ch; margin-bottom: 22px; text-shadow: 0 1px 10px rgba(10, 22, 40, .55); }

/* ---------- 04 · Преимущества: карточки ---------- */

.adv__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.adv-card {
  border-radius: var(--r);
  border: 1px solid var(--line);
  background: #fff;
  padding: 26px 26px 30px;
  box-shadow: var(--shadow);
  transition: transform .35s var(--ease), border-color .35s var(--ease), background-color .35s var(--ease), box-shadow .35s var(--ease);
}
.adv-card:hover { transform: translateY(-4px); border-color: rgba(69, 104, 168, .4); background: #fbfcfe; box-shadow: var(--shadow-lift); }
.adv-card__top { margin-bottom: 24px; }
.adv-card .micon { color: var(--accent); }
.adv-card__title { font-size: 17.5px; font-weight: 600; letter-spacing: -.01em; margin-bottom: 6px; }
.adv-card__text { font-size: 13.5px; line-height: 1.55; color: var(--ink-soft); }

/* Точечная фактура под карточками преимуществ */
.section--dots::before {
  content: '';
  position: absolute; inset: 0;
  background-image: radial-gradient(rgba(29, 61, 107, .16) 1px, transparent 1px);
  background-size: 26px 26px;
  -webkit-mask-image: radial-gradient(80% 70% at 20% 80%, #000 0%, transparent 70%);
  mask-image: radial-gradient(80% 70% at 20% 80%, #000 0%, transparent 70%);
  pointer-events: none;
}
.section--dots .shell { position: relative; z-index: 1; }

/* ---------- 05 · Заказчики ---------- */

.clients { background: var(--paper-warm); padding: 92px 0; }
.clients__inner {
  display: grid;
  grid-template-columns: minmax(0, .72fr) minmax(0, 1.28fr);
  gap: clamp(40px, 5vw, 88px);
  align-items: center;
}
.clients__note { margin-top: 16px; font-size: 15.5px; line-height: 1.6; color: var(--ink-soft); max-width: 30ch; }

.clients__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(28px, 3.4vw, 44px) clamp(20px, 2.6vw, 36px);
  align-items: center;
  justify-items: center;
  padding-left: clamp(0px, 2vw, 24px);
  border-left: 1px solid var(--line);
}
.clients__grid img {
  height: var(--h, 30px);
  width: auto;
  max-width: 100%;
  object-fit: contain;
  filter: grayscale(1) opacity(.66);
  transition: filter .4s var(--ease);
}
.clients__grid img:hover { filter: grayscale(0) opacity(1); }

/* ---------- 07 · География: перелив + карта РФ ---------- */

.geo {
  padding-bottom: 84px;
  background: var(--paper);
  color: var(--ink);
  transition: background-color .9s var(--ease), color .9s var(--ease);
  overflow: hidden;
}
.geo.is-dark { background: var(--deep); color: var(--on-deep); }
.geo.is-dark .kicker { color: var(--on-deep-mute); }
.geo.is-dark .kicker__num { color: var(--accent-light); }

/* Карта страны фоном: масштабно, уходит за правый край */
.geo__map {
  position: absolute;
  top: 50%;
  right: -18%;
  width: 78%;
  transform: translateY(-50%);
  opacity: 0;
  transition: opacity 1.2s var(--ease) .15s;
  pointer-events: none;
  filter: invert(.8) grayscale(1) brightness(1.6);
}
.geo.is-dark .geo__map { opacity: .14; }

.geo .shell { position: relative; z-index: 1; }
.geo__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(48px, 6vw, 96px); align-items: start; }

.geo__list { border-top: 1px solid var(--line); transition: border-color .9s; }
.geo.is-dark .geo__list { border-color: var(--line-dark); }
.geo__item { display: block; padding: 17px 0 21px; border-bottom: 1px solid var(--line); position: relative; transition: border-color .9s; }
.geo.is-dark .geo__item { border-color: var(--line-dark); }
.geo__row { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; }
.geo__name { display: flex; align-items: baseline; gap: 16px; transition: transform .4s var(--ease); }
.geo__item:hover .geo__name { transform: translateX(8px); }
.geo__idx { font-size: 11px; font-weight: 600; color: var(--accent); font-variant-numeric: tabular-nums; }
.geo.is-dark .geo__idx { color: var(--accent-light); }
.geo__region { font-size: clamp(16px, 1.4vw, 21px); font-weight: 600; letter-spacing: -.015em; }
.geo__count { font-size: 12.5px; color: var(--ink-mute); white-space: nowrap; font-variant-numeric: tabular-nums; transition: color .9s; }
.geo.is-dark .geo__count { color: var(--on-deep-mute); }
.geo__bar {
  display: block;
  height: 2px;
  margin-top: 12px;
  width: var(--w, 10%);
  background: linear-gradient(90deg, var(--accent), rgba(69, 104, 168, .3));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .9s var(--ease) .15s;
}
.geo.is-dark .geo__bar { background: linear-gradient(90deg, var(--accent-light), rgba(127, 160, 219, .3)); }
.is-in .geo__bar { transform: scaleX(1); }
.geo__more { margin-top: 16px; font-size: 11.5px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-mute); transition: color .9s; }
.geo.is-dark .geo__more { color: var(--on-deep-mute); }

.geo__aside { padding-top: 8px; }
.geo__value {
  font-size: clamp(100px, 12vw, 190px);
  font-weight: 700;
  line-height: .9;
  letter-spacing: -.04em;
  font-variant-numeric: tabular-nums;
}
.geo__value-label { margin-top: 14px; font-size: 14px; color: var(--ink-mute); max-width: 30ch; transition: color .9s; }
.geo.is-dark .geo__value-label { color: var(--on-deep-mute); }
.geo__foot { margin-top: 34px; }

/* ---------- 08 · Футер ---------- */

/* Тёмная география перетекает в футер: отделяем тонкой линией, иначе стык теряется */
.foot {
  background: var(--deep);
  color: var(--on-deep);
  padding: 48px 0 28px;
  border-top: 1px solid var(--line-dark);
}
.foot__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: clamp(40px, 5vw, 88px);
  align-items: start;
  padding-bottom: 34px;
  border-bottom: 1px solid var(--line-dark);
}
.foot__brand { display: grid; gap: 18px; justify-items: start; }
.foot__brand img { width: 150px; height: auto; }

.foot__title { font-size: 11px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--on-deep-mute); margin-bottom: 18px; }
.foot__contact {
  display: inline-block;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  position: relative;
}
.foot__contact::after {
  content: '';
  position: absolute; left: 0; right: 0; bottom: 2px;
  height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: right;
  transition: transform .5s var(--ease);
}
.foot__contact:hover::after { transform: scaleX(1); transform-origin: left; }
.foot__contacts { display: grid; justify-items: start; gap: 8px; }
/* Телефон, ставший текстом (JS на десктопе): без ховера и руки-курсора */
.is-static { cursor: default; }
.is-static::after { content: none; }
.foot__addr { margin-top: 6px; font-size: 13.5px; color: var(--on-deep-mute); max-width: 40ch; }
.foot__nav { display: grid; gap: 12px; font-size: 14px; justify-items: start; }
.foot__nav a { transition: color .35s var(--ease); }
.foot__nav a:hover { color: var(--accent-light); }
.foot__bottom {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding-top: 20px;
  font-size: 12.5px;
  color: var(--on-deep-mute);
}
.foot__bottom-links { display: flex; gap: 20px; }
.foot__bottom-links a { transition: color .35s var(--ease); }
.foot__bottom-links a:hover { color: var(--accent-light); }

/* ---------- Адаптив ---------- */

@media (max-width: 1080px) {
  .about__grid, .geo__grid { grid-template-columns: 1fr; gap: 48px; }
  .svc__split { grid-template-columns: 1fr; }
  .svc__panel { min-height: 320px; }
  .adv__grid { grid-template-columns: 1fr 1fr; }
  .clients__inner { grid-template-columns: 1fr; gap: 36px; }
  .clients__grid { grid-template-columns: repeat(4, 1fr); border-left: 0; padding-left: 0; }
  .foot__grid { grid-template-columns: 1fr 1fr; }
  /* Лид ближе к заголовку, кнопки дальше от лида */
  .hero__grid { grid-template-columns: 1fr; gap: 14px; }
  .hero__side { gap: 38px; }
}

@media (max-width: 720px) {
  :root { --pad: 20px; }
  .section { padding: 68px 0; }
  .masthead__nav { display: none; }
  .burger { display: block; }
  body.nav-open { overflow: hidden; }
  /* Шапка поверх открытого меню и всегда светлым по тёмному */
  body.nav-open .masthead { background: transparent; border-color: transparent; color: var(--on-deep); }
  body.nav-open .masthead .masthead__logo-mask { background-color: var(--on-deep); }
  body.nav-open .masthead .burger { color: var(--on-deep); }
  .hero__inner { padding-bottom: 44px; }
  .stats { grid-template-columns: 1fr 1fr; gap: 30px 20px; }
  .stat .micon { width: 32px; height: 32px; }
  .svc__panel { display: none; }
  .svc__item { flex-wrap: wrap; }
  .svc__item-desc { display: block; width: 100%; font-size: 13px; color: var(--ink-soft); padding: 6px 0 2px 33px; }
  .adv__grid { grid-template-columns: 1fr; }
  .clients__inner { grid-template-columns: 1fr; gap: 32px; }
  .clients__grid { grid-template-columns: repeat(2, 1fr); border-left: 0; padding-left: 0; }
  .foot__grid { grid-template-columns: 1fr; gap: 36px; }
  .foot__bottom { flex-direction: column; gap: 10px; }
}
/* Узкие телефоны (320–400px): две колонки счётчиков с «500» крупным кеглем не влезали
   в половину экрана и растягивали сетку «О компании» — текст упирался в правый край.
   min-width: 0 не даёт содержимому колонки распирать сетку, остальное — ужать счётчик. */
.about__grid > *, .stats > *, .stat__row > * { min-width: 0; }
@media (max-width: 400px) {
  .stats { gap: 28px 16px; }
  .stat__row { gap: 10px; }
  .stat .micon { width: 26px; height: 26px; }
  .stat__value { font-size: 38px; }
  .stat__label { letter-spacing: .08em; }
  .hero__title { font-size: min(34px, 8.6vw); }
}

@media (min-width: 721px) {
  .svc__item-desc { display: none; }
}

/* ═══════════════ v5: надстройка сборки ═══════════════ */

/* Заголовки — Montserrat из базы v4 (антиква пробована и снята) */
:root {
  --flow-pad: clamp(48px, 6vw, 104px);
}

/* ---------- 04 · Преимущества: светлые карточки v4, тексты с боевой ---------- */


/* ---------- 05 · Услуги: скролл-история из v3 ---------- */

.chapter { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; }

.chapter__pane {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  color: var(--on-deep);
  background: var(--deep);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 96px clamp(32px, 4vw, 64px) 48px;
}
.chapter__pane-grid {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(to right, rgba(248, 250, 252, .05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(248, 250, 252, .05) 1px, transparent 1px);
  background-size: 140px 140px;
  pointer-events: none;
}
.chapter__pane-content { position: relative; z-index: 1; }
.chapter__pane-kicker { font-size: 11px; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; color: var(--on-deep-mute); margin-bottom: 14px; }
.chapter__pane-title {
  font-size: clamp(26px, 2.8vw, 42px);
  line-height: 1.08;
  letter-spacing: -.015em;
  max-width: 14ch;
}

.chapter__flow {
  padding: var(--flow-pad);
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.svc-pane-media { position: absolute; inset: 0; }
.svc-pane-media img {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  /* Фото почти не глушим — затемнение делает только градиент снизу */
  filter: grayscale(.25) contrast(1.03) brightness(.98);
  opacity: 0;
  transform: scale(1.06);
  transition: opacity .45s var(--ease), transform 1s var(--ease);
  will-change: opacity, transform;
}
.svc-pane-media img.is-on { opacity: 1; transform: scale(1); }
/* Салатовый трамвай глушится сильнее — конфликтует с палитрой */
.svc-pane-media img[data-svc-img="3"] { filter: grayscale(.5) contrast(1.05) brightness(.9); }
/* Инженеры стоят в правой части кадра — в узкой панели показываем её, а не центр */
.svc-pane-media img[data-svc-img="2"] { object-position: 90% center; }
.svc-pane-media::after {
  content: '';
  position: absolute; inset: 0;
  /* Сверху чистое фото, затемнение набирает силу только в нижней трети */
  background: linear-gradient(180deg, rgba(10, 22, 40, 0) 0%, rgba(10, 22, 40, .16) 40%, rgba(10, 22, 40, .62) 68%, rgba(10, 22, 40, .94) 100%);
}

.svc-pane-num {
  position: absolute;
  top: 9vh;
  right: clamp(24px, 3vw, 56px);
  z-index: 1;
  font-size: clamp(150px, 26vh, 340px);
  font-weight: 700;
  line-height: 1;
  color: rgba(248, 250, 252, .1);
  font-variant-numeric: tabular-nums;
  user-select: none;
  pointer-events: none;
}
.svc-pane-title { min-height: 2.1em; }
.svc-pane-title span { display: block; }
.svc-pane-title span[hidden] { display: none; }

.svc-progress { display: flex; align-items: center; gap: 16px; margin-top: 26px; position: relative; z-index: 1; }
.svc-progress__count { font-size: 12px; font-weight: 600; letter-spacing: .2em; color: var(--on-deep-mute); font-variant-numeric: tabular-nums; }
.svc-progress__track { flex: 1; height: 1px; background: var(--line-dark); position: relative; }
.svc-progress__bar {
  position: absolute; inset: 0;
  background: var(--accent-light);
  transform: scaleX(.1667);
  transform-origin: left;
  transition: transform .6s var(--ease);
}

/* Справа полоса 56px под липкие якоря 01-06 */
.svc-item { padding: 13vh 56px 13vh 0; border-bottom: 1px solid var(--line); }
.svc-item:first-child { padding-top: 6vh; }
.svc-item:last-child { border-bottom: 0; }

/* Липкая точечная навигация у правого края ленты: видно, где ты и сколько осталось.
   Абсолютная обёртка на всю высоту секции даёт sticky честный упор в её низ */
.svc-anchors-rail {
  position: absolute;
  top: 0;
  /* Останавливаемся с запасом от нижней кромки секции, не впритык */
  bottom: var(--flow-pad);
  right: var(--flow-pad);
  z-index: 2;
  display: flex;
  align-items: flex-start;
  pointer-events: none;
}
.svc-anchors {
  position: sticky;
  top: 44%;
  display: grid;
  gap: 4px;
  justify-items: end;
  pointer-events: auto;
}
.svc-anchors a {
  display: grid;
  place-items: center;
  width: 18px;
  height: 14px;
  font-size: 0;
}
.svc-anchors a::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(148, 163, 184, .45);
  transition: background-color .3s var(--ease), transform .3s var(--ease);
}
.svc-anchors a:hover::before { background: var(--ink-mute); }
.svc-anchors a.is-on::before { background: var(--accent); transform: scale(1.5); }
.svc-item__num { font-size: 13px; font-weight: 600; letter-spacing: .12em; color: var(--accent); font-variant-numeric: tabular-nums; display: block; margin-bottom: 16px; }
.svc-item__title {
  font-size: clamp(23px, 2.2vw, 34px);
  letter-spacing: -.015em;
  line-height: 1.08;
  margin-bottom: 18px;
  max-width: 16ch;
}
.svc-item__text { font-size: 15px; line-height: 1.65; color: var(--ink-soft); max-width: 46ch; margin-bottom: 26px; }

/* ---------- 06 · Заказчики: карусель с боевой ---------- */

.clients__loop-wrap { position: relative; }

/* Лента шире экрана — обрезаем здесь, а не через overflow-x на body:
   тот ломает position: sticky у сцены услуг (Safari на iOS и превью-инструменты) */
.logoloop {
  position: relative;
  overflow: hidden;
  --logoloop-gap: 64px;
  --logoloop-logoHeight: 48px;
  --logoloop-fadeColor: var(--paper-warm);
}
.logoloop__track {
  display: flex;
  width: max-content;
  user-select: none;
  position: relative;
  z-index: 0;
  will-change: transform;
}
.logoloop__list { display: flex; align-items: center; list-style: none; margin: 0; padding: 0; }
.logoloop__item { flex: 0 0 auto; margin-right: var(--logoloop-gap); line-height: 1; }
.logoloop__item img {
  height: var(--logoloop-logoHeight);
  width: auto;
  display: block;
  object-fit: contain;
  -webkit-user-drag: none;
  pointer-events: none;
}
.logoloop--fade::before,
.logoloop--fade::after {
  content: '';
  position: absolute;
  top: 0; bottom: 0;
  width: clamp(32px, 10%, 140px);
  pointer-events: none;
  z-index: 10;
}
.logoloop--fade::before { left: 0; background: linear-gradient(to right, var(--logoloop-fadeColor) 0%, rgba(0, 0, 0, 0) 100%); }
.logoloop--fade::after { right: 0; background: linear-gradient(to left, var(--logoloop-fadeColor) 0%, rgba(0, 0, 0, 0) 100%); }

/* Стрелки — только при reduced-motion, вместо автопрокрутки */
.logoloop-arrow {
  display: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 20;
  width: 44px; height: 44px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #fff;
  color: var(--deep-soft);
  cursor: pointer;
  align-items: center;
  justify-content: center;
  transition: background-color .2s, color .2s, box-shadow .2s;
  box-shadow: var(--shadow);
}
.logoloop-arrow:hover { background: var(--deep-soft); color: #fff; box-shadow: var(--shadow-lift); }
.logoloop-arrow--prev { left: 12px; }
.logoloop-arrow--next { right: 12px; }

@media (prefers-reduced-motion: reduce) {
  .logoloop { overflow: hidden; }
  .logoloop__track { animation: none !important; }
  .logoloop-arrow { display: flex; }
}

/* ---------- Адаптив v5 ---------- */

/* Ниже 1024px сцена в одну колонку: панель липнет сверху на половину экрана,
   список идёт под ней и переключает кадры */
@media (max-width: 1024px) {
  /* Не грид в одну колонку: панель и список оказались бы в разных строках,
     и липкой панели было бы некуда двигаться — она просто уезжала бы вверх */
  .chapter { display: block; }
  .chapter__pane {
    top: 0;
    height: 46vh;
    height: 46svh;
    min-height: 300px;
    padding: 20px var(--pad) 18px;
    /* iOS-вебвью: при съезде visual viewport sticky запаздывает и над панелью
       мелькает контент — продолжаем её фон вверх за экран тёмной плитой.
       z-index — чтобы уходящие пункты ленты не рисовались поверх фото */
    overflow: visible;
    z-index: 3;
  }
  .chapter__pane::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: -40vh;
    height: 40vh;
    background: var(--deep);
    display: none;
  }
  /* Плита видна только у прилипшей панели, иначе закрывала бы секцию выше */
  .chapter__pane.is-stuck::before { display: block; }
  .svc-pane-media { overflow: hidden; }
  .chapter__pane-grid { background-size: 90px 90px; }
  .chapter__pane-kicker { margin-bottom: 10px; }
  .chapter__pane-title { font-size: clamp(21px, 4.4vw, 30px); max-width: none; }
  .svc-progress { margin-top: 12px; }
  .svc-pane-num { top: 10px; right: var(--pad); font-size: clamp(76px, 17vw, 124px); }

  .chapter__flow { min-height: 0; padding: 10px var(--pad) 80px; }
  .svc-anchors-rail { display: none; }
  .svc-item, .svc-item:first-child, .svc-item:last-child { padding: 11vh 0; }
  .svc-item:first-child { padding-top: 5vh; }
  .svc-item__title { font-size: clamp(22px, 4vw, 27px); max-width: none; }
  .svc-item__text { font-size: 14px; max-width: 56ch; }
}

@media (max-width: 720px) {
  .logoloop { --logoloop-gap: 40px; --logoloop-logoHeight: 34px; }
}

/* ═══════════════ v5: внутренние страницы (услуги / проекты / контакты) ═══════════════ */

/* Мост токенов: контент-стили внутренних страниц перенесены с боевой как есть,
   их старые имена токенов замаплены на палитру v5 */
:root {
  --color-primary: var(--deep);
  --color-primary-alpha-light: rgba(29, 61, 107, .04);
  --color-text: var(--ink);
  --color-text-secondary: var(--ink-soft);
  --color-text-muted: var(--ink-mute);
  --color-border: var(--line);
  --color-bg-card: #fff;
  --color-bg-subtle: var(--paper-warm);
  --color-accent: #567EC9;
  --color-accent-on-light: var(--accent);
  --container: min(1280px, 100%);
  --container-pad: var(--pad);
  --section-pad: clamp(64px, 8vw, 120px);
  --section-pad-tight: clamp(32px, 4vw, 56px);
  --radius-sm: 10px;
  --radius-md: 14px;
  --shadow-card: var(--shadow);
  --transition-fast: .2s ease;
  --transition-slow: .35s ease;
}
.container { max-width: var(--container); margin: 0 auto; padding: 0 var(--container-pad); }

/* Компактный hero внутренних страниц */
.page-hero {
  position: relative;
  min-height: 44vh;
  min-height: 44svh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--deep);
  color: var(--on-deep);
}
.page-hero__bg { position: absolute; inset: 0; }
.page-hero__bg img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(.2) contrast(1.03) brightness(.95); }
.page-hero__bg::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10, 22, 40, .45) 0%, rgba(10, 22, 40, .25) 45%, rgba(10, 22, 40, .78) 100%);
}
.page-hero__inner { position: relative; z-index: 1; width: 100%; padding-top: 120px; padding-bottom: 44px; }
.page-hero__title {
  font-weight: 700;
  font-size: clamp(30px, 3.4vw, 48px);
  line-height: 1.06;
  letter-spacing: -.02em;
  /* «конфиденциальности» шире узкого экрана: переносим по слогам (lang="ru"),
     а где браузер не умеет — хотя бы ломаем слово, а не обрезаем */
  hyphens: auto;
  overflow-wrap: break-word;
}
.page-hero__sub { margin-top: 12px; font-size: 15.5px; color: rgba(248, 250, 252, .85); max-width: 52ch; }

@media (max-width: 720px) {
  .page-hero { min-height: 320px; }
  .page-hero__inner { padding-bottom: 32px; }
}

/* ---------- Контент внутренних страниц (перенос с боевой) ---------- */
.services-page {
  display: flex;
  gap: clamp(40px, 5vw, 64px);
  padding: var(--section-pad-tight) 0;
  max-width: var(--container);
  margin: 0 auto;
  padding-inline: var(--container-pad);
  align-items: flex-start;
}

.services-page__sidebar {
  flex-shrink: 0;
  width: 210px;
  position: sticky;
  top: 100px;
}

.services-page__nav {
  list-style: none;
  margin: 0;
  padding: 4px 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.services-page__nav-item {
  display: block;
}

.services-page__nav-link {
  display: block;
  position: relative;
  overflow: hidden;
  padding: 12px 16px;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.45;
  color: #6b7280;
  text-decoration: none;
  border-radius: var(--radius-sm);
  background: transparent;
  transition: color .15s ease, background .15s ease, box-shadow .15s ease;
}
.services-page__nav-link:hover {
  color: var(--color-primary);
  background: #EBF2FF;
}
.services-page__nav-item.is-active .services-page__nav-link {
  color: var(--color-primary);
  background: #EBF2FF;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}


.services-page__content {
  flex: 1;
  min-width: 0;
}

.services-page__panel {
  display: none;
  opacity: 0;
  transform: translateY(12px);
}
.services-page__panel.is-active {
  display: block;
  animation: panelFadeIn 0.35s ease-out forwards;
}
@keyframes panelFadeIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

.services-page__panel-title {
  margin: 0 0 16px;
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--color-primary);
  line-height: 1.25;
}

.services-page__panel-desc {
  margin: 0 0 24px;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--color-text-secondary);
}

.services-page__panel-image {
  margin: 0 0 28px;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}
.services-page__panel-image img {
  width: 100%;
  height: auto;
  aspect-ratio: 21/9;
  max-height: 400px;
  object-fit: cover;
  display: block;
}

.services-page__subtitle {
  margin: 32px 0 16px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-primary);
  line-height: 1.35;
}
.services-page__subtitle:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}

.services-page__list {
  margin: 0 0 24px;
  padding-left: 0;
  list-style: none;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--color-text-secondary);
}
.services-page__list > li {
  position: relative;
  margin-bottom: 10px;
  padding-left: 20px;
}
.services-page__list > li::before {
  content: '';
  position: absolute;
  left: 2px;
  top: 11px;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--color-text-secondary);
}
.services-page__list > li:last-child {
  margin-bottom: 0;
}

.services-page__list li ul {
  margin-top: 8px;
  margin-bottom: 4px;
  padding-left: 16px;
  list-style: none;
}
.services-page__list li ul li {
  position: relative;
  padding-left: 16px;
  font-size: 0.9375rem;
  color: var(--color-text-secondary);
  margin-bottom: 6px;
}
.services-page__list li ul li::before {
  content: '\2013';
  position: absolute;
  left: -2px;
  top: 0;
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--color-text-secondary);
  opacity: 0.45;
}
.services-page__list li ul li:last-child {
  margin-bottom: 0;
}

.services-page__list li ul li ul li::before {
  content: '';
  top: 9px;
  width: 4px;
  height: 4px;
  border: 1px solid var(--color-text-secondary);
  border-radius: 50%;
  opacity: 0.55;
}

.services-page__list-note {
  display: block;
  margin-top: 2px;
  font-size: 0.9375rem;
  line-height: 1.5;
  opacity: 0.72;
}

.services-page__experience {
  margin: 0 0 16px;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--color-text-secondary);
}
.services-page__experience:last-child {
  margin-bottom: 0;
}

@media (max-width: 900px) {
  .services-page {
    flex-direction: column;
    gap: 24px;
  }
  .services-page__sidebar {
    width: 100%;
    position: static;
  }
  .services-page__nav {
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 4px;
    padding: 4px 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .services-page__nav::-webkit-scrollbar {
    display: none;
  }
  .services-page__nav-item {
    flex-shrink: 0;
  }
  .services-page__nav-link {
    white-space: nowrap;
  }
}

/* ----- Projects page: hero with photo, map, regions table ----- */
.hero--photo .hero__bg {
  background: var(--color-primary);
}
.hero--photo .hero__bg-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.hero--photo .hero__canvas {
  display: none;
}

.projects-map-section {
  padding: 0 0 var(--section-pad);
  /* Шапка зафиксирована: без запаса при автопрокрутке верх карты и карточка
     объекта уезжают под неё, и название объекта не читается */
  scroll-margin-top: 84px;
}

.projects-map-wrap {
  width: 100%;
  height: 500px;
  position: relative;
  background: var(--color-bg-subtle);
  border-radius: 0;
  overflow: hidden;
}
.projects-map-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg-subtle);
  color: var(--color-text-muted);
  font-size: 1rem;
  font-family: var(--font);
}
.projects-map-placeholder.is-hidden {
  display: none;
}

.map-pin {
  width: 15px;
  height: 15px;
  margin: -7.5px 0 0 -7.5px;
  border-radius: 50%;
  background: var(--color-primary);
  border: 2px solid #fff;
  box-shadow: 0 1px 4px rgba(10, 22, 40, 0.35);
  cursor: pointer;
  transition: transform 0.18s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.18s ease;
}
.map-pin.is-hover {
  transform: scale(1.45);
  box-shadow: 0 3px 12px rgba(29, 61, 107, 0.6);
}
/* Выбранная точка — меняет цвет (акцент #36A3F1 из hero-анимации), крупнее, с ореолом */
.map-pin.map-pin--active {
  background: #36A3F1;
  transform: scale(1.5);
  box-shadow: 0 0 0 5px rgba(54, 163, 241, 0.25), 0 3px 12px rgba(29, 61, 107, 0.55);
  z-index: 10;
}
.map-pin {
  animation: map-marker-in 0.34s cubic-bezier(0.22, 1, 0.36, 1) backwards;
}

/* Кластер — круглый бейдж с числом */
.map-cluster {
  width: 40px;
  height: 40px;
  margin: -20px 0 0 -20px;
  border-radius: 50%;
  background: var(--color-primary);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font);
  font-weight: 700;
  font-size: 0.875rem;
  border: 2px solid #fff;
  box-shadow: 0 3px 10px rgba(10, 22, 40, 0.3);
  cursor: pointer;
  transition: transform 0.18s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.18s ease;
}
.map-cluster.is-hover {
  transform: scale(1.14);
  box-shadow: 0 5px 20px rgba(29, 61, 107, 0.55);
}
.map-cluster {
  animation: map-marker-in 0.34s cubic-bezier(0.22, 1, 0.36, 1) backwards;
}

@keyframes map-marker-in {
  from { opacity: 0; transform: scale(0.4); }
  to   { opacity: 1; transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .map-pin,
  .map-cluster {
    animation: none;
  }
}

/* Балун (всплывающая карточка проекта) */
.projects-map-wrap [class*="balloon__layout"] {
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 12px 32px rgba(29, 61, 107, 0.18), 0 2px 8px rgba(0, 0, 0, 0.05);
}
.projects-map-wrap [class*="balloon__content"] {
  margin: 0 !important;
  padding: 0 !important;
  font-family: var(--font);
}
/* Контейнер балуна: убираем дефолтную квадратную inset-рамку */
.projects-map-wrap [class*="balloon_layout_normal"] {
  box-shadow: none !important;
  border-radius: 12px;
}
/* Свой аккуратный крестик вместо дефолтного фон-квадрата */
.projects-map-wrap [class*="balloon__close"] {
  top: 2px !important;
  right: 2px !important;
  opacity: 1 !important;
}
.projects-map-wrap [class*="balloon__close-button"] {
  width: 30px !important;
  height: 30px !important;
  background: none !important;
  position: relative;
  opacity: 0.4;
  transition: opacity 0.15s ease;
}
.projects-map-wrap [class*="balloon__close-button"]:hover {
  opacity: 0.85;
}
.projects-map-wrap [class*="balloon__close-button"]::before,
.projects-map-wrap [class*="balloon__close-button"]::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 12px;
  height: 1.5px;
  border-radius: 1px;
  background: var(--color-text);
}
.projects-map-wrap [class*="balloon__close-button"]::before {
  transform: translate(-50%, -50%) rotate(45deg);
}
.projects-map-wrap [class*="balloon__close-button"]::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}
/* Нативная полоса скрыта полностью — рисуем свою (см. .map-balloon__bar) */
.map-balloon {
  max-width: 300px;
  max-height: 240px;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.map-balloon::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}
.map-balloon__inner {
  padding: 13px 16px;
}
/* Кастомная полоса прокрутки — прижата к правому краю, без стрелок */
.map-balloon__bar {
  position: absolute;
  top: 6px;
  right: 3px;
  bottom: 6px;
  width: 5px;
  z-index: 5;
}
.map-balloon__thumb {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  border-radius: 10px;
  background: var(--color-border);
  cursor: pointer;
  transition: background 0.15s ease;
}
.map-balloon__thumb:hover {
  background: var(--color-text-muted);
}
.map-balloon__title {
  font-weight: 600;
  font-size: 0.9375rem;
  line-height: 1.35;
  color: var(--color-primary);
  padding-right: 18px;
}

/* Предмет договора — подпись к наименованию, поэтому отбит от заголовка
   и прижат к тексту под собой: читаются как одна группа */
.map-balloon__work {
  margin-top: 12px;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--color-accent-on-light);
}

/* Наименование из документации: нужно для сверки, а не для чтения — мельче и тише */
.map-balloon__desc {
  margin-top: 5px;
  font-size: 0.75rem;
  line-height: 1.55;
  color: var(--color-text-secondary);
}

/* Регион — метка, отделена линией от содержимого */
.map-balloon__region {
  margin-top: 11px;
  padding-top: 7px;
  border-top: 1px solid var(--color-border);
  font-size: 0.5625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.projects-table-section {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--container-pad) var(--section-pad);
}

.projects-table-wrap {
  background: var(--color-bg-card);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
  border: 1px solid var(--color-border);
  overflow: hidden;
}

.projects-table-head {
  display: grid;
  grid-template-columns: 1fr minmax(150px, auto);
  gap: 16px 24px;
  padding: 20px 24px 14px;
  border-bottom: 1px solid var(--color-border);
  background: var(--color-primary-alpha-light);
}

.projects-table-th {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--color-primary);
  text-transform: uppercase;
}
.projects-table-th--objects {
  text-align: right;
}

.projects-table-body {
  display: flex;
  flex-direction: column;
}

.projects-table-row {
  display: grid;
  grid-template-columns: 1fr minmax(150px, auto);
  gap: 16px 24px;
  align-items: center;
  padding: 14px 24px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  transition: background var(--transition-fast);
}
.projects-table-row:last-child {
  border-bottom: none;
}
.projects-table-row:hover {
  background: var(--color-bg-subtle);
}
.projects-table-row.is-expanded,
.projects-table-row.is-active {
  background: var(--color-primary-alpha-light);
}

.projects-table-region {
  font-weight: 600;
  font-size: 0.9375rem;
  line-height: 1.4;
  color: var(--color-primary);
}
.projects-table-count {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-text-muted);
  white-space: nowrap;
  transition: color var(--transition-fast);
}
.projects-table-chevron {
  width: 8px;
  height: 8px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg) translateY(-1px);
  transition: transform var(--transition-fast);
  opacity: 0.7;
}
.projects-table-row.is-expanded .projects-table-count {
  color: var(--color-primary);
}
.projects-table-row.is-expanded .projects-table-chevron {
  transform: rotate(-135deg) translateY(-1px);
}

.projects-table-detail {
  grid-column: 1 / -1;
  padding: 0 0 0 0;
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--transition-slow);
}
.projects-table-row.is-expanded .projects-table-detail {
  max-height: 2400px;
}

.projects-table-detail-inner {
  padding: 12px 0 16px 0;
  border-top: 1px solid var(--color-border);
  margin-top: 4px;
}
.projects-table-detail-title {
  margin: 0 0 10px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--color-text-muted);
  text-transform: uppercase;
}
.projects-table-projects-list {
  margin: 0;
  padding-left: 0;
  list-style: none;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--color-text-secondary);
}
.projects-region-project {
  position: relative;
  cursor: pointer;
  padding: 9px 40px 9px 30px;
  border-radius: var(--radius-sm);
  transition: background var(--transition-fast), color var(--transition-fast);
}
/* лидирующая точка-маркер */
.projects-region-project::before {
  content: "";
  position: absolute;
  left: 12px;
  top: 17px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
  opacity: 0.35;
  transition: opacity var(--transition-fast);
}
/* стрелка «показать на карте» — на уровне первой строки, как буллет */
.projects-region-project::after {
  content: "→";
  position: absolute;
  right: 14px;
  top: 9px;
  line-height: 1.5;
  color: var(--color-primary);
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity var(--transition-fast), transform var(--transition-fast);
}
.projects-region-project:hover,
.projects-region-project:focus-visible {
  background: var(--color-primary-alpha-light);
  color: var(--color-primary);
}
.projects-region-project:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
}
.projects-region-project:hover::before,
.projects-region-project:focus-visible::before {
  opacity: 1;
}
.projects-region-project:hover::after,
.projects-region-project:focus-visible::after {
  opacity: 1;
  transform: translateX(0);
}
.projects-table-projects-list li {
  margin-bottom: 4px;
}
.projects-table-projects-list li:last-child {
  margin-bottom: 0;
}

@media (max-width: 560px) {
  .projects-map-wrap {
    height: 480px;
  }
  /* Колонка «объектов» по контенту — региону остаётся вся ширина, без переносов */
  .projects-table-head,
  .projects-table-row {
    grid-template-columns: 1fr auto;
    padding: 14px 16px;
    gap: 4px 10px;
  }
  .projects-table-region {
    font-size: 0.875rem;
  }
  .projects-table-count {
    font-size: 0.8125rem;
    gap: 8px;
  }
  .projects-region-project {
    padding: 10px 14px 10px 28px;
  }
  .projects-region-project::before {
    left: 10px;
    top: 18px;
  }
  .projects-region-project::after {
    top: 10px;
  }
  /* В режиме панели контент течёт целиком — прокручивается сама панель, без вложенного скролла */
  .map-balloon {
    max-height: none;
    max-width: none;
  }
}
/* Тач и узкий экран: у пунктов списка нет ховера — делаем их явно кликабельными */
@media (hover: none), (max-width: 560px) {
  .projects-region-project {
    color: var(--color-primary);
  }
  .projects-region-project::after {
    display: none;
  }
}

/* ----- Contacts page: address block, map, office ----- */
/* Единый средний отступ между блоками: clamp(40px, 5vw, 56px) */
.contacts-page {
  padding: clamp(40px, 5vw, 56px) 0;
  background: var(--color-bg-card);
}

.contacts-page__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding-inline: var(--container-pad);
}

.contacts-page__heading {
  margin: 0 0 32px;
  font-size: clamp(1.25rem, 2.5vw, 1.5rem);
  font-weight: 700;
  color: var(--color-primary);
  text-align: left;
}

.contacts-info {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}

@media (min-width: 768px) {
  /* Группы раскрываются в общий грид: пункты слева и справа делят строки,
     иначе подписи левой колонки сдвигают правую по вертикали */
  .contacts-info {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: repeat(3, auto);
    grid-auto-flow: column;
    gap: 18px 56px;
    align-items: center;
  }
  .contacts-info > .contacts-info__group { display: contents; }
}

.contacts-info__group {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.contacts-info__divider {
  border: none;
  border-top: 1px solid var(--color-border);
  margin: 8px 0;
}

@media (min-width: 768px) {
  .contacts-info__divider {
    display: none;
  }
}

.contacts-info__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 2px;
}

/* Общий стиль для элементов списка контактов (contacts-info + contacts-office) */
.contacts-info__item,
.contacts-office__item {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 0.9375rem;
  line-height: 1.5;
  text-decoration: none;
  transition: color var(--transition-fast);
}
.contacts-info__item { color: var(--color-text); }
.contacts-office__item { color: var(--color-text-secondary); }

a.contacts-info__item:hover,
a.contacts-office__item:hover {
  color: var(--color-accent-on-light);
}


/* Общий стиль иконки-бокса (contacts-info + contacts-office) */
.contacts-info__icon,
.contacts-office__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  min-width: 48px;
  border-radius: var(--radius-sm);
  background: #EBF2FF;
  color: var(--color-primary);
}

.contacts-info__icon svg,
.contacts-office__icon svg {
  width: 22px;
  height: 22px;
}

.contacts-info__text,
.contacts-office__text {
  flex: 1;
  min-width: 0;
}

.contacts-map-section {
  padding: 0;
  background: var(--color-bg-card);
}

.contacts-map-wrap {
  width: 100%;
  height: 500px;
  position: relative;
  background: var(--color-bg-card);
  overflow: hidden;
}

.contacts-map-wrap.contacts-map-wrap--loaded {
  filter: grayscale(0.25) saturate(0.9);
}

.contacts-map-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg-card);
  color: var(--color-text-muted);
  font-size: 1rem;
  font-family: var(--font);
}

.contacts-map-placeholder.is-hidden {
  display: none;
}

#contacts-ymap {
  width: 100%;
  height: 100%;
  display: block;
}

.contacts-office {
  padding: clamp(32px, 4vw, 48px) 0 clamp(40px, 5vw, 56px);
  background: #f5f7fa;
}

.contacts-office__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding-inline: var(--container-pad);
}

.contacts-office__heading {
  margin: 0 0 20px;
  font-size: clamp(1.15rem, 2vw, 1.35rem);
  font-weight: 700;
  color: var(--color-primary);
}

.contacts-office__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}
@media (min-width: 768px) {
  .contacts-office__grid {
    grid-template-columns: 1fr 1fr;
    gap: 20px;
  }
}

.contacts-office__card {
  background: #fff;
  border: 1px solid rgba(0,0,0,.06);
  border-radius: 12px;
  padding: 16px 24px 22px;
}

.contacts-office__card-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 24px;
}

.contacts-office__list {
  display: flex;
  flex-direction: column;
  gap: 16px;
  max-width: 100%;
}

@media (max-width: 560px) {
  .contacts-map-wrap {
    height: 360px;
  }
}



/* ---------- Полировка перенесённых блоков под характер v5 ---------- */

/* Заголовки контента — тёмные, как на главной; фирменный синий остаётся акцентам */
.services-page__panel-title,
.contacts-page__heading,
.contacts-office__heading {
  color: var(--ink);
  letter-spacing: -.015em;
  font-size: clamp(24px, 2.4vw, 32px);
  font-weight: 700;
}
.services-page__subtitle { color: var(--ink); letter-spacing: -.01em; }
.contacts-office__card-title { color: var(--ink); }

/* Боковое меню услуг — номера и линии, как списки услуг на главной */
.services-page__nav-item { border-bottom: 0; }
.services-page__nav-link {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 13px 10px;
  border-radius: 8px;
  font-weight: 600;
  font-size: 13.5px;
  color: var(--ink-soft);
  transition: color .3s var(--ease), background-color .3s var(--ease), padding-left .3s var(--ease);
}
.services-page__nav-link:hover,
.services-page__nav-item.is-active .services-page__nav-link {
  color: var(--deep);
  background: var(--tint);
  padding-left: 14px;
  box-shadow: none;
}

/* Маркеры списков — точки: акцентная у верхнего уровня, мельче и светлее у вложенных */
.services-page__list > li::before {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  top: .55em;
  background: var(--accent);
}
.services-page__list li ul li::before {
  content: '';
  position: absolute;
  left: 0;
  top: .6em;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  font-size: 0;
  background: var(--accent-light);
  opacity: 1;
}

/* Иконки контактов — тонкие, без плашек-подложек */
.contacts-info__icon,
.contacts-office__icon {
  width: 28px;
  height: 28px;
  min-width: 28px;
  background: none;
  border-radius: 0;
  color: var(--accent);
}
.contacts-info__text,
.contacts-office__text { color: var(--ink-soft); }
.contacts-info__label { color: var(--ink-mute); }
a.contacts-info__item:hover .contacts-info__text,
a.contacts-office__item:hover .contacts-office__text { color: var(--deep); }

/* Сайдбар услуг: шире, чтобы названия не ломались в три строки (только десктоп —
   ниже 900px он растягивается на всю ширину под чипсы) */
@media (min-width: 901px) {
  /* top ровно под сжатую шапку: 100px из переноса висели пустым зазором */
  .services-page__sidebar { width: 280px; top: 68px; }
}
.services-page__nav { gap: 4px; padding: 0; }
.services-page__nav-link { line-height: 1.35; }

/* Планшет: табы ровной сеткой 2xN — без скрытой прокрутки и пустых хвостов */
@media (max-width: 900px) {
  .services-page__nav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    /* Все ячейки одной высоты: двухстрочный ярлык не выбивается из ряда */
    grid-auto-rows: 1fr;
    gap: 8px;
    overflow-x: visible;
  }
  .services-page__nav-item { display: flex; }
  .services-page__nav-link { width: 100%; align-items: center; }
  .services-page__nav-item { border-bottom: 0; }
  .services-page__nav-link {
    justify-content: center;
    text-align: center;
    white-space: normal;
    line-height: 1.3;
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 10px 12px;
  }
  .services-page__nav-link:hover,
  .services-page__nav-item.is-active .services-page__nav-link {
    background: var(--tint);
    border-color: rgba(69, 104, 168, .35);
    padding-left: 12px;
  }
}

/* Узкие экраны: одна колонка — каждый таб в одну строку */
@media (max-width: 560px) {
  .services-page__nav { grid-template-columns: 1fr; }
}

/* Карта проектов: ч/б подложка тайлов, метки и полигоны остаются фирменными */
.projects-map-wrap [class*="ground-pane"] { filter: grayscale(1); }

/* Промо-кнопки Яндекса на карте проектов («Как добраться», «Доехать на такси»,
   «Создать свою карту», «Открыть в Яндекс Картах») — скрыты.
   Обязательные копирайт и лого Яндекса живут в соседнем узле и остаются */
.projects-map-wrap [class*="map-copyrights-promo"] { display: none; }

/* Таблица регионов ближе к карте: штатный отступ 64-120px великоват */
.projects-map-section { padding-bottom: clamp(28px, 3vw, 44px); }

/* Карта контактов: та же обвязка балуна, что на проектах, и без промо-кнопок */
.contacts-map-wrap [class*="balloon__layout"] {
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 12px 32px rgba(29, 61, 107, 0.18), 0 2px 8px rgba(0, 0, 0, 0.05);
}
.contacts-map-wrap [class*="balloon__content"] {
  margin: 0 !important;
  padding: 0 !important;
  font-family: var(--font);
}
.contacts-map-wrap [class*="balloon_layout_normal"] {
  box-shadow: none !important;
  border-radius: 12px;
}
.contacts-map-wrap [class*="balloon__close"] { top: 2px !important; right: 2px !important; opacity: 1 !important; }
.contacts-map-wrap [class*="balloon__close-button"] {
  width: 30px !important;
  height: 30px !important;
  background: none !important;
  position: relative;
  opacity: 0.4;
  transition: opacity 0.15s ease;
}
.contacts-map-wrap [class*="balloon__close-button"]:hover { opacity: 0.85; }
.contacts-map-wrap [class*="balloon__close-button"]::before,
.contacts-map-wrap [class*="balloon__close-button"]::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 12px;
  height: 1.5px;
  border-radius: 1px;
  background: var(--ink);
}
.contacts-map-wrap [class*="balloon__close-button"]::before { transform: translate(-50%, -50%) rotate(45deg); }
.contacts-map-wrap [class*="balloon__close-button"]::after { transform: translate(-50%, -50%) rotate(-45deg); }
.contacts-map-wrap [class*="map-copyrights-promo"] { display: none; }

/* ---------- Cookie-уведомление ---------- */
/* display:flex ниже перебивает браузерное [hidden]{display:none} — гасим явно */
.cookie-note[hidden] { display: none; }
.cookie-note {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 60;
  max-width: 384px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 16px 40px -12px rgba(29, 61, 107, .28), 0 2px 8px rgba(0, 0, 0, .04);
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 14px;
}
.cookie-note__text { font-size: 13px; line-height: 1.55; color: var(--ink-soft); }
.cookie-note__text a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
}
.cookie-note__actions { display: flex; gap: 10px; }
.cookie-note__ok,
.cookie-note__no {
  flex: 1 1 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 11px 18px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: var(--deep);
  color: #fff;
  font: 500 13px/1.2 var(--font);
  cursor: pointer;
  transition: background-color .3s var(--ease), border-color .3s var(--ease);
}
.cookie-note__ok:hover { background: var(--deep-soft); }
.cookie-note__no {
  background: transparent;
  border-color: var(--line);
  color: var(--ink-soft);
}
.cookie-note__no:hover { background: var(--paper); border-color: var(--ink-mute, var(--line)); }
@media (max-width: 560px) {
  .cookie-note { left: 12px; right: 12px; bottom: 12px; max-width: none; }
}

/* Заглушка карты (нет согласия на cookie / карта не загрузилась) */
.map-fallback {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  max-width: 440px;
  padding: 24px;
  text-align: center;
}
.map-fallback__icon { color: var(--color-accent); }
.map-fallback__title {
  margin: 0;
  color: var(--color-primary);
  font-size: 1.125rem;
  font-weight: 600;
}
.map-fallback__text {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 0.9375rem;
  line-height: 1.5;
}
.map-fallback__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  padding: 10px 20px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-primary);
  font-size: 0.9375rem;
  font-weight: 500;
  text-decoration: none;
  transition: border-color 0.2s ease, background-color 0.2s ease;
}
.map-fallback__link:hover { border-color: var(--color-accent); }

/* ---------- Кастомный курсор (перенос с боевой) ---------- */
html.custom-cursor-enabled,
html.custom-cursor-enabled * { cursor: none; }

.custom-cursor {
  display: none;
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 9999;
}
html.custom-cursor-enabled .custom-cursor { display: block; }

@media (pointer: coarse), (max-width: 1024px) {
  .custom-cursor { display: none !important; }
  html.custom-cursor-enabled,
  html.custom-cursor-enabled * { cursor: auto; }
  html.custom-cursor-enabled a,
  html.custom-cursor-enabled button,
  html.custom-cursor-enabled .btn { cursor: pointer; }
}

.custom-cursor__inner,
.custom-cursor__outer {
  position: fixed;
  top: 0;
  left: 0;
  border-radius: 50%;
  pointer-events: none;
  transform: translate3d(var(--cursor-x, 0), var(--cursor-y, 0), 0) translate(-50%, -50%);
}
.custom-cursor__inner {
  width: 8px;
  height: 8px;
  background: rgba(69, 104, 168, 1);
  box-shadow: 0 0 0 1px rgba(69, 104, 168, .3);
  transition: transform .06s ease, background-color .25s var(--ease), box-shadow .25s var(--ease);
}
.custom-cursor__outer {
  width: 32px;
  height: 32px;
  background: rgba(69, 104, 168, .35);
  transition: transform .15s ease-out, background-color .25s var(--ease);
}

/* Над тёмными блоками фирменный синий тонет — курсор светлеет */
.custom-cursor--on-dark .custom-cursor__inner {
  background: #F8FAFC;
  box-shadow: 0 0 0 1px rgba(248, 250, 252, .3);
}
.custom-cursor--on-dark .custom-cursor__outer { background: rgba(248, 250, 252, .32); }
.custom-cursor--active .custom-cursor__inner { transform: translate3d(var(--cursor-x, 0), var(--cursor-y, 0), 0) translate(-50%, -50%) scale(.75); }
.custom-cursor--active .custom-cursor__outer { transform: translate3d(var(--cursor-x, 0), var(--cursor-y, 0), 0) translate(-50%, -50%) scale(1.8); }

.custom-cursor--hidden .custom-cursor__inner,
.custom-cursor--hidden .custom-cursor__outer { opacity: 0; transition: opacity .07s ease-out, transform .07s ease-out; }

/* ---------- Политика конфиденциальности ---------- */
.privacy-content {
  width: var(--shell);
  max-width: 100%;
  margin: 0 auto;
  padding: clamp(56px, 7vw, 96px) var(--pad) clamp(64px, 8vw, 110px);
}
.privacy-content h2 {
  font-size: clamp(19px, 2vw, 22px);
  font-weight: 600;
  line-height: 1.35;
  color: var(--deep);
  margin: 40px 0 14px;
}
.privacy-content h2:first-child { margin-top: 0; }
.privacy-content p {
  max-width: 76ch;
  font-size: 15px;
  line-height: 1.75;
  color: var(--ink-soft);
  margin: 0 0 14px;
}
.privacy-content p:last-child { margin-bottom: 0; }
.privacy-content a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.privacy-content a:hover { color: var(--deep); }
.privacy-revision {
  margin-top: 36px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
  color: var(--ink-mute);
  font-size: 13.5px;
}

/* ═══════════════ 404 ═══════════════ */
.notfound {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  min-height: 100svh;
  padding: 96px 0 40px;
  background: var(--deep);
  color: var(--on-deep);
  text-align: center;
}
.notfound__inner { display: grid; justify-items: center; }
.notfound__code {
  font-size: clamp(76px, 11vw, 160px);
  font-weight: 700;
  line-height: .8;
  letter-spacing: -.045em;
  color: var(--accent-light);
  opacity: .38;
}
.notfound__title {
  margin-top: 24px;
  font-size: clamp(25px, 2.8vw, 37px);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -.02em;
}
.notfound__text { margin-top: 9px; font-size: 15.5px; color: rgba(248, 250, 252, .85); max-width: 46ch; }
.notfound__btn { margin-top: 32px; }

@media (max-width: 720px) {
  .notfound { padding: 84px 0 40px; }
  .notfound__title { margin-top: 18px; }
  .notfound__btn { margin-top: 26px; }
}
