/* Главная v4 — страница /v4/, рабочая версия.
   Заведена 02.09.2026 копией утверждённой клиентом v2; та остаётся эталоном.
   Фирменный оранжевый #E95C0C взят с логотипа БЦ «Кусково».
   Всё под префиксом tsv4-; страница дополнительно помечена классом
   tsv4-page на <body>, через него перекрашиваем шапку и фон темы. */

.tsv4{
  --ink:#1b1b1d;
  --ink-2:#5c5c63;
  --ink-3:#8e8e96;
  --bg:#f7f6f4;
  --card:#ffffff;
  --line:rgba(27,27,29,.10);
  --line-2:rgba(27,27,29,.18);
  --accent:#e95c0c;
  --dark:#1b1b1d;
  --r-lg:28px;
  --r-md:18px;

  /* ── Вертикальный ритм ────────────────────────────────
     Все вертикальные отступы страницы берутся отсюда, чтобы секции стояли
     через один и тот же шаг, а их шапки были набраны по одной схеме
     «надрубрика → заголовок → лид → содержимое». На узких экранах шаг
     переопределяется в медиазапросах — одной строкой на всю страницу,
     а не по отступу в каждой секции. */
  --sp-sec:96px;    /* между секциями */
  --sp-head:36px;   /* шапка секции → её содержимое */
  --sp-lbl:14px;    /* надрубрика → заголовок */
  --sp-txt:16px;    /* заголовок → абзац */
  --sp-cta:28px;    /* последний абзац → кнопка */
  --sp-tight:10px;  /* плотная пара строк: заголовок карточки и её текст */

  background:var(--bg);
  color:var(--ink);
  font-family:'Open Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:16px;
  line-height:1.6;
  overflow-x:hidden;
}
.tsv4 *,.tsv4 *::before,.tsv4 *::after{box-sizing:border-box}
/* Тема Archi красит сами теги section и article в тёмный (#18191b) — на светлой
   странице это перебивало наш фон. Сбрасываем, свой фон задаём точечно. */
.tsv4 section,.tsv4 article,.tsv4 aside,.tsv4 figure{background:transparent}
.tsv4 figure{margin:0}
/* Цвет задаём явно: тема красит заголовки и ссылки в белый, а на светлой странице
   они пропадают. Базовый тёмный — на теги, а исключения (белый текст на фото и в
   тёмной секции) — селектором из двух классов, он весит больше «класс + тег». */
.tsv4 h1,.tsv4 h2,.tsv4 h3{
  margin:0;letter-spacing:-.02em;color:var(--ink);
  /* тема переводит заголовки в верхний регистр и добавляет разрядку —
     в референсе обычный регистр, возвращаем его */
  text-transform:none;font-family:inherit;
}
.tsv4 .tsv4-hero__title,
.tsv4 .tsv4-dark__title,
.tsv4 .tsv4-dark__label,
.tsv4 .tsv4-dark__lead{color:#fff}
.tsv4 .tsv4-dark__label{color:rgba(255,255,255,.55)}
.tsv4 .tsv4-dark__lead{color:rgba(255,255,255,.72)}
/* ВАЖНО. Сбросы выше («класс + тег», вес 0-1-1) весят больше одиночного класса,
   поэтому обычное `.tsv4-sec__title{margin-bottom:30px}` молча не применяется —
   так на странице обнулились разом 15 отступов, и заголовки слиплись
   с содержимым. Любой вертикальный отступ у <p>, <h1>–<h3> и <figure>
   писать двумя классами: `.tsv4 .tsv4-sec__title{…}`. Все они собраны
   в блоке «Отступы в шапках секций» ниже. */
.tsv4 p{margin:0}
.tsv4 a{color:inherit;text-decoration:none}
/* Кнопки-ссылки: тема перекрашивает <a>, поэтому цвет каждой закрепляем явно. */
.tsv4 a.tsv4-btn--accent{color:#fff}
.tsv4 a.tsv4-btn--light,.tsv4 a.tsv4-btn--outline{color:var(--ink)}
.tsv4 a.tsv4-btn--accent:hover{color:#fff}
.tsv4 ul{margin:0;padding:0;list-style:none}

/* Общий контейнер: та же ширина, что у сетки сайта.
   Баннер и тёмная секция сюда НЕ входят — они во всю ширину окна. */
.tsv4-intro,
.tsv4-facts,.tsv4-adv{
  max-width:1170px;margin-left:auto;margin-right:auto;
  padding-left:15px;padding-right:15px;
}

/* ── Ритм секций ─────────────────────────────────────
   Все вертикальные отступы между секциями живут здесь и только здесь —
   в самих секциях их нет. Каждая отбивается ТОЛЬКО сверху: тогда между
   любыми двумя соседями ровно один шаг --sp-sec, и его не приходится
   складывать из нижнего отступа одной секции и верхнего другой. Раньше
   складывался, и шаг по странице гулял: 89 → 72 → 112 → 82 → 82 → 82 → 56.

   Три исключения:
   • баннер — у него свой зазор 5px со всех сторон;
   • тёмная секция — она во всю ширину окна, отступ ей нужен внешний;
   • последняя секция с картой — сверху у карты ещё ~120px растворения,
     поэтому перед ней шаг взят вполовину, иначе разрыв читается провалом. */
.tsv4-intro,
.tsv4 .tsg4,
.tsv4-facts,
.tsv4-adv{padding-top:var(--sp-sec)}

.tsv4-intro,
.tsv4 .tsg4,
.tsv4-facts{padding-bottom:0}

.tsv4-dark{margin:var(--sp-sec) 0 0}
/* Половинный шаг перед картой достался «Преимуществам»: они стали последней
   секцией страницы после того, как 02.09.2026 убрали «Индивидуальный проект». */
.tsv4-adv{padding-bottom:calc(var(--sp-sec) / 2)}

/* ── Отступы в шапках секций и текстовых блоках ──────
   Двумя классами — иначе их съедают общие сбросы (см. примечание выше).
   Схема одна на всю страницу: надрубрика → --sp-lbl → заголовок →
   --sp-head до содержимого либо --sp-txt до абзаца → --sp-cta до кнопки. */
.tsv4 .tsv4-hero__welcome,
.tsv4 .tsv4-sec__label,
.tsv4 .tsv4-dark__label{margin-bottom:var(--sp-lbl)}

.tsv4 .tsv4-sec__title{margin-bottom:var(--sp-head)}

/* Факт под описанием преимущества. Двумя классами обязательно: одиночный
   селектор съедает общий сброс .tsv4 p{margin:0} выше. */
.tsv4 .tsv4-advc__f{margin-bottom:var(--sp-tight)}
.tsv4 .tsv4-advc__t{margin-bottom:var(--sp-tight)}

.tsv4 .tsv4-dark__title{margin-bottom:var(--sp-txt)}

.tsv4 .tsv4-dark__lead{margin-bottom:var(--sp-cta)}


/* Фотогалерея — общий модуль со светлой главной, и отступы в её шапке
   обнулены тем же способом (.tsg4 p{margin:0}). Правим только для v4:
   прежние версии заморожены как эталоны, их разметку не трогаем. */
.tsv4 .tsg4-label{margin-bottom:var(--sp-lbl)}
.tsv4 .tsg4-lead{margin-top:var(--sp-txt)}
.tsv4 .tsg4-head{margin-bottom:var(--sp-head)}

/* ── Кнопки ──────────────────────────────────────────── */
.tsv4-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:14px 26px;border-radius:999px;border:1px solid transparent;
  font-size:14px;font-weight:600;letter-spacing:.2px;cursor:pointer;
  transition:background .2s,color .2s,border-color .2s,transform .2s;
  font-family:inherit;
}
.tsv4-btn--light{background:#fff;color:var(--ink)}
.tsv4-btn--light:hover{background:#f0efec;transform:translateY(-1px)}
.tsv4-btn--accent{background:var(--accent);color:#fff}
.tsv4-btn--accent:hover{background:#d24f06;color:#fff;transform:translateY(-1px)}
.tsv4-btn--outline{background:transparent;color:var(--ink);border-color:var(--line-2)}
.tsv4-btn--outline:hover{border-color:var(--ink);background:rgba(27,27,29,.04)}

/* ── Первый экран ────────────────────────────────────── */
/* Во всю ширину окна, с зазором 5px со всех сторон.
   Шапка лежит поверх баннера (см. блок body.tsv4-page ниже). */
.tsv4-hero{
  max-width:none;margin:0;
  padding:5px;
  width:100%;
}
/* Высота — во весь экран, но не выше 860px на длинных мониторах.
   Именно min-height, без max-height: на баннере лежит текст с развилкой,
   и на узких экранах он должен раздвигать блок, а не уезжать под обрез. */
.tsv4-hero__media{
  position:relative;
  min-height:min(calc(100vh - 10px), 860px);
  border-radius:var(--r-lg);
  overflow:hidden;
  background:#d8d5d0 center/cover no-repeat;
  display:flex;align-items:flex-end;
}
/* Затемнение верхней части, чтобы белая шапка читалась на любом фото.
   Верх — 80% плотности, к низу сходит на нет. */
.tsv4-hero__media::before{
  content:"";
  position:absolute;left:0;right:0;top:0;height:340px;
  background:linear-gradient(to bottom,
    rgba(14,13,12,.80) 0%,
    rgba(14,13,12,.55) 38%,
    rgba(14,13,12,.22) 70%,
    rgba(14,13,12,0) 100%);
  z-index:1;pointer-events:none;
}
/* Нижняя половина кадра гасится сильнее, чем раньше: на ней теперь лежит
   весь текст баннера, а под ним — то подсвеченная витрина, то фасад.
   Середина остаётся почти прозрачной, чтобы фото не превратилось в заливку. */
.tsv4-hero__shade{
  position:absolute;inset:0;
  background:linear-gradient(to bottom,
    rgba(20,18,16,.42) 0%,
    rgba(20,18,16,.10) 30%,
    rgba(20,18,16,.40) 52%,
    rgba(20,18,16,.70) 74%,
    rgba(20,18,16,.88) 100%);
}
/* Контент прижат к нижнему краю кадра (выравнивание — на .tsv4-hero__media).
   Снизу отступ вдвое меньше верхнего: баннер — прежде всего фотография,
   и текст должен читаться подписью к ней, а не отдельным экраном. */
.tsv4-hero__inner{
  position:relative;z-index:2;width:100%;
  max-width:1170px;margin:0 auto;
  padding:48px 15px 26px;
}
/* Подпись, лид и справка лежат прямо на фото, и под ними то тёмный асфальт,
   то подсвеченная витрина. Затемнения хватает не везде, поэтому у мелкого
   текста ещё и мягкая тень — она незаметна на тёмном и спасает на светлом. */
/* Жёлтый — тот же #ffcd3c, что у иконок в шапке. */
.tsv4-hero__welcome{
  color:#ffcd3c !important;
  font-size:12px;font-weight:400;
  letter-spacing:.2em;text-transform:uppercase;
  text-shadow:0 1px 10px rgba(12,11,10,.85);
}
/* Заголовок идёт одной строкой в верхнем регистре, поэтому кегль привязан
   к ширине окна. Замер в браузере: строка занимает ровно 12.66em на любом
   кегле, а места есть 100vw минус зазор баннера, боковые отступы и полосу
   прокрутки — её `vw` считает, а контейнеру она не достаётся, из-за чего
   запас на 768px проваливался до 1%. Отсюда вычитаемое в calc().
   Капитель шире строчных на 9%, поэтому потолок 86px, а не прежние 94px.
   Формулы дают ровный запас ~4%: перенос запрещён, и если шрифт не догрузится
   и подменится системным, строка не должна вылезти за скругление.

   Селектор с двух классов, а не с одного: у темы Archi заголовки ловятся
   правилом `.tsv4 h1` (тот же вес), и оно перебивало и разрядку, и регистр.

   Выравнивание по левому краю задано явно: тема центрирует h1, из-за чего
   строка стояла по середине блока и не попадала под подзаголовок.
   Отрицательный margin-left поверх этого — оптическая поправка: у «Б» слева
   свой боковой пробел в 0.07em, и без сдвига ink-край буквы уходил правее
   подзаголовка и лида. Поправка в em, поэтому держится на любом кегле. */
.tsv4 .tsv4-hero__title{
  font-size:clamp(20px,calc(7.6vw - 4.2px),86px);
  line-height:1.02;font-weight:800;letter-spacing:-.02em;
  text-transform:uppercase;text-align:left;
  color:#fff;margin:0 0 var(--sp-txt) -.07em;
  white-space:nowrap;
  text-shadow:0 2px 24px rgba(12,11,10,.5);
}
.tsv4-hero__row{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:32px;align-items:end;
}
/* Строка под заголовком: не спорит с ним по весу и не тянется во всю
   ширину баннера — длинная строка на фото читается тяжело. */
.tsv4-hero__lead{
  color:rgba(255,255,255,.92);
  font-size:clamp(15px,1.32vw,19px);line-height:1.5;font-weight:300;
  max-width:720px;
  text-shadow:0 1px 14px rgba(12,11,10,.6);
}
.tsv4-hero__note{color:rgba(255,255,255,.85);font-size:14px;line-height:1.6;max-width:460px;justify-self:end;
  text-shadow:0 1px 12px rgba(12,11,10,.55)}

/* Кнопка под заголовком и ссылка на ролик рядом с ней. */
.tsv4-hero__cta{
  display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;
  margin-top:var(--sp-cta);
}
/* Ссылка на ролик (правка 10.09.2026). Не кнопка: рядом с оранжевой заливкой
   вторая кнопка спорила бы за внимание, а заявка тут главная. Цвет задан
   явно — общий сброс `.tsv4 a{color:inherit}` притащил бы сюда тёмный цвет
   страницы; селектор из двух классов, чтобы весить больше сброса.
   Подчёркивание висит на <span>, а не на всей ссылке: иначе линия тянулась бы
   и под значок. Тень та же, что у мелкого текста баннера, — под ним то тёмный
   асфальт, то подсвеченная витрина. */
.tsv4 .tsv4-hero__video{
  display:inline-flex;align-items:center;gap:11px;
  color:#fff;font-size:14px;font-weight:600;line-height:1.3;
  text-shadow:0 1px 10px rgba(12,11,10,.85);
}
.tsv4 .tsv4-hero__video span{
  border-bottom:1px solid rgba(255,255,255,.45);padding-bottom:2px;
  transition:border-color .2s;
}
.tsv4 .tsv4-hero__video:hover span{border-color:#fff}
/* Значок обведён вектором со значка боевого сайта. Своя белая подложка
   со скруглением у него внутри пути, поэтому ни фона, ни радиуса тут не надо;
   мягкая тень отделяет его от фотографии. flex:none — чтобы не сжимался,
   когда подпись переносится на узком экране. */
.tsv4-hero__rt{
  display:block;width:24px;height:24px;flex:none;
  filter:drop-shadow(0 1px 6px rgba(12,11,10,.5));
}

/* На баннере с 30.08.2026 приветствие, заголовок, строка про помещения
   и кнопка — стили выше. Телефон и развилку по разделам заказчик убрал:
   баннер должен оставаться фотографией. Стили .tsv4-hero__row / __note
   и формы подбора (убрана 28.08.2026) лежат ниже на случай возврата. */
/* Форма подбора — белая пилюля, наезжает на фото */
.tsv4-finder{
  position:relative;z-index:3;
  margin:-38px auto 0;max-width:900px;width:calc(100% - 30px);
  background:#fff;border-radius:999px;
  box-shadow:0 24px 60px -28px rgba(20,18,16,.45);
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;
  align-items:center;gap:0;padding:10px 10px 10px 6px;
}
.tsv4-finder__field{
  display:flex;flex-direction:column;gap:2px;
  padding:6px 20px;border-right:1px solid var(--line);min-width:0;
}
.tsv4-finder__field span{font-size:11px;color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase}
.tsv4-finder__field select{
  border:none;background:transparent;font-family:inherit;
  font-size:14px;font-weight:600;color:var(--ink);
  padding:0;outline:none;cursor:pointer;width:100%;
}
.tsv4-finder__submit{
  background:var(--dark);color:#fff;border:none;cursor:pointer;
  border-radius:999px;padding:15px 30px;
  font-family:inherit;font-size:14px;font-weight:600;
  transition:background .2s,transform .2s;
}
.tsv4-finder__submit:hover{background:var(--accent);transform:translateY(-1px)}

/* ── Вводный блок ────────────────────────────────────── */
.tsv4-intro{
  /* Левая колонка ровно под подпись-рубрику: 260px оставляли слишком много
     пустоты, а текст с ними упирался в правый край. */
  display:grid;grid-template-columns:minmax(0,170px) minmax(0,1fr);
  gap:40px;
}
.tsv4-intro__label{font-size:13px;color:var(--ink-3);line-height:1.5}
/* Правая колонка: абзацы и схема под ними. Расстояния держит gap — свои
   margin у абзацев всё равно перебил бы общий сброс `.tsv4 p{margin:0}`,
   он весит больше одного класса. */
.tsv4-intro__body{display:flex;flex-direction:column;gap:20px}
/* Оформление то же, что было изначально: сплошной абзац, важные параметры
   оранжевым. Ширину не придерживаем — по правке пользователя текст идёт
   во всю правую колонку (на широком экране это ~80 знаков в строке). */
.tsv4-intro__text{
  color:var(--ink);font-size:clamp(17px,1.8vw,22px);line-height:1.5;
  font-weight:400;
}
.tsv4-intro__text strong{font-weight:700;color:var(--accent)}

/* Карточки направлений (Офисы / Склады / Торговые / Производство) убраны
   по правке от 29.08.2026 — вместе с кнопкой «Смотреть все помещения».
   После вводного блока сразу идёт фотогалерея, за ней цифры.

   Свои отступы галереи (padding:8px 0 76px) на этой странице не в счёт —
   их перебивает блок «Ритм секций» выше, там `.tsv4 .tsg4` стоит в общем
   списке и получает тот же шаг, что и остальные секции. */

/* ── Цифры ───────────────────────────────────────────── */
/* Плитки: цифра и подпись сверху, изометрическая картинка внизу — она
   выходит за внутренние поля и упирается в края карточки, поэтому у карточки
   overflow:hidden, а скругление обрезает картинку по углам.
   Карточка того же покроя, что и в «Преимуществах»: белая, тонкая рамка,
   на наведении приподнимается. */
.tsv4-facts{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;
}
.tsv4-fact{
  position:relative;overflow:hidden;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:28px 26px 0;
  display:flex;flex-direction:column;
  transition:border-color .2s,transform .2s,box-shadow .2s;
}
.tsv4-fact:hover{
  border-color:var(--line-2);transform:translateY(-2px);
  box-shadow:0 20px 44px -30px rgba(20,18,16,.5);
}
.tsv4-fact__v{font-size:clamp(30px,3.4vw,46px);font-weight:700;line-height:1;letter-spacing:-.03em;color:var(--ink)}
.tsv4-fact__v sup{font-size:.36em;color:var(--accent);margin-left:5px;font-weight:600;vertical-align:super}
.tsv4-fact__l{font-size:13px;color:var(--ink-2);margin-top:var(--sp-tight);max-width:230px}
/* Отрицательные поля ровно по внутренним отступам плюс рамка: картинка
   встаёт вплотную к краю, как в референсе. margin-top:auto прижимает её
   к низу, если подписи в плитках разной длины. */
/* Картинка вписана в холст 640x440 ещё при подготовке файла: объект сведён
   по центру и опущен так, чтобы низ уходил за край карточки. Поэтому здесь
   ей нужно только растянуться по ширине — ни object-fit, ни фиксированной
   высоты, и все четыре плитки выходят одной высоты. */
.tsv4-fact__art{margin:22px -27px -1px}
.tsv4-fact__art img{display:block;width:100%;height:auto}

/* ── Тёмная секция ───────────────────────────────────── */
/* Во всю ширину окна с зазором 5px — как баннер и подвал. Внутренние отступы
   считаются так, чтобы содержимое всё равно вставало по сетке сайта:
   `50% - 570px` — это расстояние от края окна до сетки (1140/2), а max()
   не даёт отступу схлопнуться на узких экранах. */
/* margin-top секции задан в блоке «Ритм секций» выше — здесь только ширина. */
.tsv4-dark{max-width:none;width:100%;padding:0 5px}
.tsv4-dark__grid{
  position:relative;isolation:isolate;
  background:var(--dark);border-radius:var(--r-lg);
  display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);
  gap:36px;padding:56px max(52px,calc(50% - 570px));align-items:center;
}
.tsv4-dark__text{position:relative;z-index:2}
.tsv4-dark__label{font-size:12px;color:rgba(255,255,255,.55);letter-spacing:.08em;text-transform:uppercase}
.tsv4-dark__title{color:#fff;font-size:clamp(27px,3.1vw,42px);line-height:1.12;font-weight:700}
.tsv4-dark__lead{color:rgba(255,255,255,.72);font-size:15px;line-height:1.6;max-width:390px}

/* Полный 3D-разрез выступает над карточкой, не меняя её высоту 512px.
   У исходника прозрачные поля: рамка повторяет габариты видимого объекта
   (175,445)-(1889,1620) на холсте 2048px. Сам файл не обрезан.
   Иллюстрация декоративная: без ссылок, hover-эффекта и обработчиков. */
.tsv4-dark__media{position:relative;min-width:0;min-height:400px;pointer-events:none;user-select:none}
.tsv4-office{
  position:absolute;left:var(--of-x,0px);top:var(--of-y,-104px);
  width:min(var(--of-max,780px),calc(100% + max(52px,calc(50vw - 570px)) - 24px - var(--of-x,0px)));
  aspect-ratio:var(--of-ar,1714 / 1175);
  filter:drop-shadow(0 24px 22px rgba(0,0,0,.16));
}
.tsv4-office__image{
  position:absolute;display:block;
  width:var(--of-iw,119.48658%);max-width:none;height:auto;
  left:var(--of-il,-10.21004%);top:var(--of-it,-37.87234%);
}

/* Тестовые подачи 25.09.2026, выводятся только на /v4/ (см. home-v4.php).
   Рамка считается так же, как у основной: габариты видимого объекта на
   холсте 2048px → aspect-ratio и сдвиг/масштаб картинки внутри рамки.
   --of-max и --of-x подобраны так, чтобы сам план остался того же размера
   и на том же месте, что в основном блоке, а росла только платформа;
   --of-y держит центр картинки там же, где у основной. */
/* wide: платформа шире со всех сторон, объект (75,375)-(1982,1668) */
.tsv4-dark--wide{
  --of-ar:1907 / 1293;--of-iw:107.39381%;--of-il:-3.93288%;--of-it:-29.00232%;
  --of-max:830px;--of-x:-40px;--of-y:-118px;
}
/* deep: перспектива, дальний угол опущен вглубь, объект (181,865)-(1876,1741).
   Объект вдвое площе основного, поэтому рамка шире влево и выступ над
   карточкой меньше — иначе снизу остаётся пустая полоса. */
.tsv4-dark--deep{
  --of-ar:1695 / 876;--of-iw:120.82596%;--of-il:-10.67847%;--of-it:-98.74429%;
  --of-max:880px;--of-x:-80px;--of-y:-80px;
}
/* low и lower — низкая камера, холст 2752×1536. Объекты плоские (2,9:1 и
   2,7:1), поэтому рамка заходит влево сильнее, а по высоте картинка стоит
   по центру карточки: выступ над ней здесь не нужен — модель «лежит на столе».
   low: объект (192,365)-(2557,1174); lower: (199,363)-(2556,1248). */
.tsv4-dark--low{
  --of-ar:2365 / 809;--of-iw:116.36364%;--of-il:-8.11839%;--of-it:-45.11743%;
  --of-max:900px;--of-x:-120px;--of-y:50px;
}
.tsv4-dark--lower{
  --of-ar:2357 / 885;--of-iw:116.75859%;--of-il:-8.44294%;--of-it:-41.01695%;
  --of-max:900px;--of-x:-120px;--of-y:36px;
}
/* sym (12.10.2026): ортографический вид по диагонали плана, кадр зеркален,
   холст 2752×1536, объект (213,215)-(2538,1364) — 2:1, выше, чем low.
   Рамка по центру правой колонки и по высоте карточки, без выступа. */
.tsv4-dark--sym{
  --of-ar:2325 / 1149;--of-iw:118.36559%;--of-il:-9.16129%;--of-it:-18.71192%;
  --of-max:820px;--of-x:-95px;--of-y:-4px;
}
/* Подпись теста — над карточкой, по сетке сайта, как у отступов сетки выше. */
.tsv4 .tsv4-dark__note{
  margin:0 0 14px;padding:0 max(52px,calc(50% - 570px));
  font-size:13px;line-height:1.4;color:var(--ink-3);
}

/* Блоки «Что есть на территории» и «Условия аренды» убраны 29.08.2026.
   На их место перенесены три блока с боевой главной. */

/* ── Общая шапка новых секций ────────────────────────── */
/* Отступы под ними — в блоке «Отступы в шапках секций» выше. */
.tsv4-sec__label{font-size:13px;color:var(--ink-3);line-height:1.5}
.tsv4-sec__title{font-size:clamp(23px,2.6vw,34px);line-height:1.15;font-weight:700}

/* ── Наши преимущества ───────────────────────────────── */
/* Плитки с иллюстрациями — правка 07.09.2026: заказчик попросил привести
   блок к виду цифр под баннером. Поэтому карточка здесь ровно та же, что
   у .tsv4-fact: белая, тонкая рамка, приподнимается на наведении,
   а картинка уходит за нижнюю кромку.

   Отличие одно: текста тут заметно больше, поэтому иллюстрация прижата
   к низу через margin-top:auto — при разной длине описаний карточки
   в ряду всё равно заканчиваются картинкой на одной линии. */
.tsv4-adv__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.tsv4-advc{
  position:relative;overflow:hidden;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:28px 26px 0;
  display:flex;flex-direction:column;
  transition:border-color .2s,transform .2s,box-shadow .2s;
}
.tsv4-advc:hover{
  border-color:var(--line-2);transform:translateY(-2px);
  box-shadow:0 20px 44px -30px rgba(20,18,16,.5);
}
/* Факт стоит НАД заголовком и набран мелко: в плитках цифр эту роль играет
   само число, здесь — короткая строка вроде «1 000 машино-мест». */
.tsv4-advc__f{font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}
.tsv4-advc__t{font-size:19px;font-weight:700;line-height:1.25;letter-spacing:-.01em}
.tsv4-advc__d{font-size:14px;line-height:1.6;color:var(--ink-2)}
/* тема перекрашивает ссылки в белый — цвет закрепляем двумя классами */
.tsv4 .tsv4-advc__d a{color:var(--accent);border-bottom:1px solid rgba(233,92,12,.35)}
.tsv4 .tsv4-advc__d a:hover{color:var(--accent);border-bottom-color:var(--accent)}
/* Поля ровно по внутренним отступам плюс рамка — как у плиток цифр. */
.tsv4-advc__art{margin:22px -27px -1px;margin-top:auto;padding-top:22px}
.tsv4-advc__art img{display:block;width:100%;height:auto}

/* Заявка внизу страницы — отдельный блок blocks/contact-v4/ ([ts_contact_v4]),
   свои стили он приносит сам. */

/* ── Светлая шапка только на этой странице ───────────── */
body.tsv4-page{background:#f7f6f4}
/* Шапка лежит поверх баннера: вынимаем из потока, фон делаем
   полупрозрачным белым с размытием — тёмный текст остаётся читаемым. */
/* Шапка полностью прозрачная: ни фона, ни размытия, ни границ —
   и сама полоса с телефонами, и строка с меню лежат прямо на фото. */
body.tsv4-page .site-header{
  position:absolute;top:0;left:0;right:0;z-index:50;
  padding-top:18px;
  background:none !important;
  -webkit-backdrop-filter:none;backdrop-filter:none;
  border:none !important;box-shadow:none !important;
}
body.tsv4-page .site-header .info,
body.tsv4-page .site-header .container,
body.tsv4-page .site-header .row,
body.tsv4-page .site-header .col-md-12,
body.tsv4-page .site-header .col-md-8,
body.tsv4-page .site-header .col-md-4{
  background:none !important;border:none !important;box-shadow:none !important;
}
/* Шапка лежит на затемнённом фото — весь текст белый. */
body.tsv4-page .site-header .info .col-md-8 > span,
body.tsv4-page .site-header .info .col-md-8 > span a{color:#fff}
body.tsv4-page .site-header .info .col-md-8 > span a:hover{color:#e95c0c}
/* Без кружков: иконка «max» в них не помещалась, да и минимализму мешают.
   Telegram и WhatsApp нарисованы шрифтовыми иконками <i>, а «max» — это <svg>
   с широким viewBox (0 0 192 42). Поэтому размер задаём обоим типам отдельно,
   иначе они не встают на одну линию. */
body.tsv4-page .site-header .info .col-md-8 .social-list li a{
  background:none !important;border:none !important;
  width:auto !important;height:auto !important;
  padding:0;border-radius:0;
  display:inline-flex;align-items:center;line-height:1;
}
body.tsv4-page .site-header .info .col-md-8 .social-list{gap:16px;align-items:center}
body.tsv4-page .site-header .info .col-md-8 .social-list li{display:flex;align-items:center}
body.tsv4-page .site-header .info .col-md-8 .social-list li i{
  font-size:19px;line-height:1;display:flex;align-items:center;height:19px;
}
/* Высоту svg берём меньше, чем у шрифтовых иконок: внутри <i> глиф занимает
   примерно 0.85 строки, а графика «max» — весь свой холст (bbox 42 из 42).
   При равной CSS-высоте «max» выглядел крупнее соседей. */
body.tsv4-page .site-header .info .col-md-8 .social-list li svg{
  height:16px !important;width:auto !important;display:block;
  /* -2px: шрифтовые иконки центрируются по метрике строки, svg — по своей коробке,
     из-за чего «max» сидел на 2px ниже соседей. */
  position:relative;top:-2px;
}
body.tsv4-page .site-header .info .col-md-8 .social-list li a{align-items:center}
/* Единственное исключение из оранжевой палитры: иконки мессенджеров
   оставлены янтарными — на затемнённом фото они так заметнее. */
body.tsv4-page .site-header .info .col-md-8 .social-list li svg,
body.tsv4-page .site-header .info .col-md-8 .social-list li i{color:#fab207 !important;fill:currentColor}
body.tsv4-page .site-header .info .col-md-8 .social-list li a:hover{background:none !important;transform:translateY(-2px)}
body.tsv4-page .site-header .info .col-md-8 .social-list li a:hover svg,
body.tsv4-page .site-header .info .col-md-8 .social-list li a:hover i{color:#ffcd3c !important}
/* Верхние кнопки — совсем без заливок, одни обводки: шапка лежит на фото,
   и заливки спорили бы с ним. Правка пользователя 02.09.2026, формулировка
   его же: «убери у двух верхних кнопок бэкграунды и сделай их прозрачными,
   оставь только обводки».

   Заливка не появляется и на наведении — иначе «только обводки» перестаёт
   быть правдой при первом же движении мыши. Отклик даётся обводкой: она
   становится плотной, и кнопка чуть поднимается. */
body.tsv4-page .site-header .info .col-md-4 .social-list a{
  color:#fff;background:transparent !important;
  border-color:rgba(255,255,255,.55);
  box-shadow:none;
  transition:border-color .2s,color .2s,transform .2s;
}
/* Точка-маркер перед «Службой поддержки» читалась как буллет списка — убираем. */
body.tsv4-page .site-header .info .col-md-4 .social-list li:first-child a::before{content:none}
body.tsv4-page .site-header .info .col-md-4 .social-list a:hover{
  border-color:#fff;color:#fff;transform:translateY(-1px);
}
/* «Личный кабинет» отличается от соседа только цветом обводки — фирменным. */
body.tsv4-page .site-header .info .col-md-4 .social-list > a:last-child{
  color:#fff;border-color:#e95c0c;
}
body.tsv4-page .site-header .info .col-md-4 .social-list > a:last-child:hover{
  border-color:#ff7d33;color:#fff;
}
body.tsv4-page .site-header #mainmenu > li > a{
  color:#fff;
  font-size:14px;
  text-transform:none;   /* как введено в админке: «О комплексе», «Аренда» */
  letter-spacing:.2px;
}
body.tsv4-page .site-header #mainmenu > li.nav-cta > a{font-size:14px;text-transform:none}
body.tsv4-page .site-header #mainmenu > li > a:hover{background:rgba(255,255,255,.14);color:#fff}
body.tsv4-page .site-header #mainmenu > li.active > a,
body.tsv4-page .site-header #mainmenu > li.current-menu-item > a{color:#e95c0c}
body.tsv4-page .site-header #mainmenu > li.nav-cta > a{
  background:#e95c0c;color:#fff;box-shadow:0 8px 24px -8px rgba(233,92,12,.55);
}
body.tsv4-page .site-header #mainmenu > li.nav-cta > a:hover{background:#d24f06;color:#fff}
/* Логотип остаётся в исходном светлом виде — инверсия больше не нужна */
body.tsv4-page .site-header #logo img{filter:none}

/* ── Логотип в векторе (02.09.2026) ───────────────────
   Заказчик прислал исходники .ai, из них собраны SVG — см. blocks/logo/.
   Растровый логотип 204x64 на плотных экранах заметно мылил.

   Подменяем через content:url(), а не правкой настроек темы: логотип
   в шапке и виджет в подвале общие для всего сайта, а трогать можно
   только v4 — v2 и v3 заморожены. Путь относительный, он считается
   от этого css-файла.

   В PNG знак занимал 157x37 из 204x64 — остальное поля экспорта.
   В SVG полей нет, поэтому высоту задаём явно: 37px, как и было
   у видимой части, иначе логотип подрос бы почти вдвое. */
body.tsv4-page .site-header #logo img.logo-static,
body.tsv4-page .site-header #logo img.logo-scroll{
  content:url('../logo/kuskovo-logo-full-white.svg');
  width:157px;height:37px;max-width:none;max-height:none;
}
/* Подвал тёмный — там тоже белая версия. Селектор по имени файла:
   в виджете кроме логотипа лежат и другие картинки. */
/* Размеры проставлены числом, а не auto: у картинки в виджете свои
   атрибуты width/height, и при content:url() ширина из них не пересчитывалась.
   157x37 — ровно то, как выглядел знак внутри прежнего PNG 204x64. */
body.tsv4-page footer .textwidget img[src*="Montazhnaya-oblast"]{
  content:url('../logo/kuskovo-logo-full-white.svg');
  width:157px;height:37px;
}

/* ── Адаптив ─────────────────────────────────────────── */
@media (max-width:1100px){
  /* Шаг ритма переопределяется один раз — все секции съезжаются разом. */
  .tsv4{--sp-sec:72px;--sp-head:32px}
  .tsv4-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tsv4-dark__grid{grid-template-columns:1fr;padding:38px;gap:28px}
  .tsv4-dark__media{min-height:0;width:min(100%,620px);aspect-ratio:var(--of-ar,1714 / 1175);margin:0 auto -70px}
  .tsv4-office{position:relative;left:auto;top:auto;width:100%}
  /* Под картинкой, свисающей из предыдущей карточки на 70px, нужен запас. */
  .tsv4-dark--wide,.tsv4-dark--deep,.tsv4-dark--low,.tsv4-dark--lower,.tsv4-dark--sym{margin-top:calc(var(--sp-sec) + 40px)}
  .tsv4 .tsv4-dark__note{padding:0 38px}
  .tsv4-adv{padding-top:calc(var(--sp-sec) + 32px)}
  .tsv4-adv__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* Колонки схлопнулись в одну: надрубрика встала над текстом, и зазор
     между ними — уже не колоночный, а тот же, что под любой надрубрикой. */
  .tsv4-intro{grid-template-columns:1fr;gap:var(--sp-lbl)}
}
@media (max-width:760px){
  .tsv4{--sp-sec:56px;--sp-head:28px;--sp-cta:24px}
  /* зазор те же 5px, что и на десктопе */
  .tsv4-hero{padding:5px}
  .tsv4-hero__media{min-height:calc(100vh - 10px);border-radius:var(--r-md)}
  .tsv4-hero__inner{padding:24px 20px 20px}
  .tsv4-hero__row{grid-template-columns:1fr;gap:14px}
  .tsv4-hero__note{justify-self:start}
  .tsv4-hero__lead{font-size:15px;max-width:none}
  .tsv4-hero__note{font-size:13px;line-height:1.5}
  /* Боковые поля ужаты с 24 до 20px: заголовок идёт одной строкой,
     и на 320px каждый пиксель ширины на счету.
     Селектор из двух классов обязателен — базовое правило выше такое же,
     а медиазапрос специфичность не повышает, и clamp(28px…) перебивал vw. */
  .tsv4 .tsv4-hero__title{font-size:calc(7.5vw - 4.2px)}
  .tsv4-finder{
    grid-template-columns:1fr;border-radius:var(--r-md);
    margin-top:-20px;padding:8px;gap:2px;
  }
  .tsv4-finder__field{border-right:none;border-bottom:1px solid var(--line);padding:10px 14px}
  .tsv4-finder__submit{width:100%;padding:14px}
  .tsv4-facts{grid-template-columns:1fr}
  .tsv4-dark__grid{padding:26px;border-radius:var(--r-md)}
  .tsv4 .tsv4-dark__note{padding:0 26px}
  .tsv4-dark__media{margin-bottom:-56px}
  .tsv4-adv__grid{grid-template-columns:1fr}
}
/* На телефонах 100vh — это высота экрана БЕЗ учёта адресной строки: пока она
   видна, низ баннера уходит под обрез, и текст с кнопкой оказываются за краем.
   svh считает по видимой части, поэтому первый экран помещается сразу.
   Отдельным @supports: значение новое, старым браузерам достаётся vh. */
@supports (height:100svh){
  @media (max-width:760px){
    .tsv4-hero__media{min-height:calc(100svh - 10px)}
  }
}

/* ── Подвал ──────────────────────────────────────────── */
/* Тот же приём, что и у баннера: во всю ширину окна, зазор 5px по краям,
   скруглённые углы (28px — то же значение, что --r-lg у .tsv4; переменные
   объявлены внутри .tsv4, а подвал лежит снаружи).

   Сверху подвал наезжает на последнюю секцию: у карты низ как раз
   растворяется, поэтому стыка не видно — тёмная карточка просто выходит
   из карты. На узких экранах наезда нет: там под картой стоит форма,
   и подвал накрыл бы контакты. */
body.tsv4-page footer{
  position:relative;z-index:1;
  margin:0 5px 5px;
  border-radius:28px;
  overflow:hidden;
}
@media (min-width:1024px){
  body.tsv4-page footer{margin-top:-64px}
}
