/* invest.lucent-legal.com — надстройка над шаблоном Voltara.
 *
 * Шаблон не трогаем: voltara.css остаётся как есть, здесь только то, чего в нём
 * нет — видео вместо картинки в герое, кнопки мессенджеров, пометки незаполненных
 * цифр и поведение ревилов без JS.
 */

:root {
  /* Кривые из стандарта: сильный ease-out на входе, ease на цвет */
  --ease-out: cubic-bezier(.23, 1, .32, 1);
}

/* ── Ревилы без JS ───────────────────────────────────────────────────────────
   В шаблоне .reveal начинается с opacity:0 и ждёт класс от скрипта. Если скрипт
   не выполнился, страница остаётся пустой — для лендинга из рекламы это потеря
   всего трафика. Поэтому прячем только когда JS точно есть: класс js ставит
   инлайн-скрипт в <head>, до первой отрисовки. */
.reveal { opacity: 1; transform: none; }
html.js .reveal:not(.visible) { opacity: 0; transform: translateY(32px); }

@media (prefers-reduced-motion: reduce) {
  html.js .reveal:not(.visible) { opacity: 1; transform: none; }
  .reveal { transition: none; }
}

/* ── Видео в герое ───────────────────────────────────────────────────────────
   Главный элемент страницы: человек должен увидеть Исаака, а не прочитать о нём. */
.video-slot { position: relative; overflow: hidden; }
.video-slot video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  background: #080b0f;
}

.video-cover {
  position: absolute; inset: 0;
  z-index: 3;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 18px;
  border: 0; padding: 0;
  background: linear-gradient(180deg, rgba(8, 11, 15, .12) 0%, rgba(8, 11, 15, .52) 100%);
  color: #fff;
  font: inherit;
  cursor: pointer;
  transition: opacity 200ms var(--ease-out);
}
.video-cover[hidden] { display: none; }

.video-cover__play {
  width: 84px; height: 84px;
  display: grid; place-items: center;
  border: 1px solid rgba(255, 255, 255, .55);
  border-radius: 50%;
  font-size: 22px;
  padding-left: 5px; /* оптическая компенсация треугольника */
  backdrop-filter: blur(3px);
  background: rgba(255, 255, 255, .08);
  transition: transform 200ms var(--ease-out), background-color 200ms ease;
}
.video-cover__label {
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
}

@media (hover: hover) and (pointer: fine) {
  .video-cover:hover .video-cover__play { background: rgba(255, 255, 255, .18); }
}
.video-cover:active .video-cover__play { transform: scale(.97); }
.video-cover:focus-visible { outline: 2px solid #fff; outline-offset: -6px; }

/* Пока файла нет — обложка не притворяется рабочей кнопкой */
.video-slot[data-empty] .video-cover { cursor: default; }
.video-slot[data-empty] .video-cover__play { opacity: .45; }

/* ── Кнопки мессенджеров ────────────────────────────────────────────────────
   Две равновесные: человек пишет туда, где ему привычно, а не куда мы решили. */
.cta-row {
  display: flex; flex-wrap: wrap;
  gap: 14px;
  justify-content: center;
  margin: 34px 0 26px;
}
.cta {
  display: inline-flex; align-items: center; gap: 10px;
  min-height: 56px;
  padding: 0 28px;
  border-radius: 3px;
  font-size: 14px; font-weight: 500;
  letter-spacing: .01em;
  text-decoration: none;
  transition: transform 160ms var(--ease-out), background-color 200ms ease, color 200ms ease;
}
.cta--tg { background: var(--deep, #173bff); color: #fff; }
.cta--wa { background: transparent; color: var(--ink, #111315); border: 1px solid #aeb3b7; }

@media (hover: hover) and (pointer: fine) {
  .cta--tg:hover { background: var(--blue, #246bfd); }
  .cta--wa:hover { background: var(--ink, #111315); color: #fff; border-color: var(--ink, #111315); }
}
.cta:active { transform: scale(.97); }
.cta:focus-visible { outline: 2px solid var(--deep, #173bff); outline-offset: 3px; }

.manifesto-lede {
  max-width: 52ch;
  margin: 22px auto 0;
  font-size: clamp(15px, 1.3vw, 18px);
  line-height: 1.6;
  color: var(--muted, #777d82);
}

.disclaimer {
  max-width: 62ch;
  margin: 0 auto;
  font-size: 11px;
  line-height: 1.6;
  color: var(--muted, #777d82);
}

/* ── Незаполненные цифры ────────────────────────────────────────────────────
   Видно и мне, и Вове, что здесь ждёт настоящее число, а не «так задумано». */
.tbd {
  color: var(--muted, #777d82);
  border-bottom: 1px dashed currentColor;
  font-variant-numeric: tabular-nums;
}

/* Русский текст в шаблоне под латиницу: убираем разрядку там,
   где она рвёт кириллицу на буквы */
.eyebrow, .section-index, .footer-label { letter-spacing: .12em; }
h1, h2 { letter-spacing: -.02em; }

/* ── Правки под кириллицу и длину слова ─────────────────────────────────────
   Шаблон рассчитан на «VOLTARA»: 7 узких латинских букв. «COMFORT» шире на 9%
   и обрезался краем экрана. Уменьшаем кегль, а не слово. */
.hero-word { font-size: clamp(170px, 22.2vw, 380px); }
.footer-word { font-size: clamp(166px, 21.5vw, 370px); }  /* у подвала свои поля .wrap */
@media (max-width: 760px) {
  .hero-word, .footer-word { font-size: calc(22vw - 8px); }
}

/* Русский лид длиннее английского и наезжал на видео: визуал в шаблоне
   подтянут вверх отрицательным margin. Отодвигаем текст, слои сохраняем. */
.hero-copy { padding-bottom: clamp(34px, 4.2vw, 68px); }

/* ── Зоны нажатия ───────────────────────────────────────────────────────────
   В шаблоне ссылки шапки и подвала высотой 10–23px: на десктопе мышью попасть
   легко, пальцем — нет. Растим саму зону, не кегль: текст остаётся прежним. */
.site-header nav a,
.header-cta,
.footer-nav a,
.footer-contact a,
.footer-meta a,
.footer-nav a span,
.text-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.site-header nav a { padding-inline: 6px; }
.brand { display: inline-flex; align-items: center; min-height: 44px; }

/* В шаблоне перенос в заголовке манифеста скрыт на всех ширинах: у английского
   текста вокруг <br> стояли пробелы, поэтому строки склеивались корректно.
   В нашей вёрстке пробела нет, и получалось «лендинге.Они». Возвращаем перенос. */
.manifesto h2 br { display: revert; }

/* ── Кегль под кириллицу ─────────────────────────────────────────────────────
   Шаблон набран под короткие латинские капсы: «SYSTEMS» на 9px читается,
   «ЮРИДИЧЕСКАЯ ОБВЯЗКА» на тех же 9px — нет. Кириллица шире, слов в подписи
   больше, и разрядка добивает остаток. Поднимаем по ступеням, иерархию
   сохраняем: микроподписи < вторичный текст < тело карточек. */

/* микроподписи и номера секций */
.section-index span,
.card-content > span,
.footer-label,
.footer-meta p,
.footer-meta a,
.footer-nav a span,
.metric-head span,
.metric-foot span,
.system-ui span,
.system-ui small { font-size: 11px; }

/* вторичный текст: надзаголовки, подписи метрик, ссылки-стрелки */
.eyebrow,
.media-pill span:not(.media-pill__number),
.float-card__content p,
.text-link,
.site-header nav a,
.header-cta,
.footer-nav a,
.footer-contact p,
.cap-heading p,
.video-cover__label { font-size: 13px; }

/* тело карточек — то, ради чего человек и остановился */
.card-content p { font-size: 15px; line-height: 1.55; }

/* мелкое юридическое примечание остаётся мелким, но читаемым */
.disclaimer { font-size: 12px; }

@media (max-width: 760px) {
  .card-content p { font-size: 15px; }
  .eyebrow, .media-pill span:not(.media-pill__number) { font-size: 13px; }
}

/* Постер — Исаак в кресле, кадр 2.33:1. На десктопе слот шире по пропорции,
   на мобильном — наоборот вытянут, и без смещения голова уходит за верхний
   край. Держим фокус на лице. */
.video-slot video { object-position: 50% 34%; }

/* На узком экране шаблон ставит метрики в две колонки, и «$2 млн» — главная
   цифра предложения — уезжает за край. Ставим в колонку: страница длиннее,
   но обе цифры человек видит. */
@media (max-width: 760px) {
  /* На узкой ширине шаблон превращает ленту метрик в горизонтальный скроллер
     без единого намёка, что справа что-то есть, — «$2 млн» просто не видно.
     Ставим в колонку: страница длиннее, обе цифры на месте. */
  .media-strip { display: flex; flex-direction: column; overflow-x: visible; height: auto; }
  .media-strip > * { width: 100%; }

}

/* Подпись на бирюзовой плашке досталась от шаблона белой: контраст 1,7 при
   норме 4,5 — на голубом её попросту не видно. Ставим тот же тёмный, что у цифры. */
.media-pill.accent span:not(.media-pill__number) { color: var(--ink, #111315); }

/* ── Лента метрик ────────────────────────────────────────────────────────────
   В шаблоне это три «таблетки» высотой 300px с картинками внутри и подписью,
   прибитой absolute к нижнему левому углу. Без картинок форма превращается в
   пустые овалы, а у круглой бирюзовой подпись вылезала за край окружности.
   Переставляем на обычные карточки: подпись в потоке, высота вдвое меньше. */
.media-strip { height: auto; grid-template-columns: repeat(3, 1fr); }
.media-pill {
  border-radius: 10px;
  min-height: 164px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 10px;
  padding: 28px clamp(20px, 2vw, 32px);
}
.media-pill:after { display: none; }              /* градиент был нужен под фото */
.media-pill.accent { justify-content: center; align-items: flex-start; gap: 10px; }
.media-pill > span:last-child {
  position: static;
  bottom: auto; left: auto;
  font-size: 12px;
  line-height: 1.35;
  color: var(--muted, #777d82);
}
.media-pill--dark > span:last-child { color: rgba(255, 255, 255, .74); }
.media-pill.accent > span:last-child { color: var(--ink, #111315); }
.media-pill__number { font-size: clamp(34px, 3.6vw, 56px); }

/* ── Рынок ───────────────────────────────────────────────────────────────────
   Единственные цифры на странице, которые можно проверить не поверив нам. */
.market-head { max-width: 780px; }
.market-head p { margin-top: 18px; font-size: clamp(15px, 1.3vw, 18px); line-height: 1.6; color: var(--muted, #777d82); }
.stat-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-top: clamp(32px, 4vw, 56px);
}
.stat {
  border: 1px solid #d3d8db;
  border-radius: 10px;
  padding: clamp(22px, 2.4vw, 34px);
}
.stat b {
  display: block;
  font-size: clamp(32px, 3.4vw, 52px);
  font-weight: 300;
  letter-spacing: -.05em;
  line-height: 1;
}
.stat span { display: block; margin-top: 14px; font-size: 13px; line-height: 1.5; color: var(--muted, #777d82); }
.source { margin-top: 22px; font-size: 12px; color: var(--muted, #777d82); }
.source a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }

/* ── Кто ведёт ───────────────────────────────────────────────────────────── */
.person-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(28px, 4vw, 64px); align-items: center; }
.person-photo { border-radius: 10px; overflow: hidden; }
.person-photo img { display: block; width: 100%; height: auto; }
.person-copy h2 { font-size: clamp(28px, 3.4vw, 48px); }
.person-role { margin-top: 10px; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted, #777d82); }
.person-copy p:not(.person-role) { margin-top: 20px; font-size: clamp(15px, 1.3vw, 17px); line-height: 1.6; }
.person-facts { margin-top: 26px; padding: 0; list-style: none; display: grid; gap: 12px; }
.person-facts li { position: relative; padding-left: 22px; font-size: 14px; line-height: 1.5; color: var(--muted, #777d82); }
.person-facts li:before { content: ""; position: absolute; left: 0; top: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--cyan, #00d9ff); }

/* ── Вопросы и риски ─────────────────────────────────────────────────────── */
.faq-section { background: var(--night, #080b0f); color: #fff; }
.faq-section h2 { font-size: clamp(30px, 4vw, 60px); margin-top: 18px; }
.faq { margin-top: clamp(32px, 4vw, 56px); border-top: 1px solid rgba(255, 255, 255, .12); }
.faq details { border-bottom: 1px solid rgba(255, 255, 255, .12); }
.faq summary {
  list-style: none;
  cursor: pointer;
  padding: 22px 44px 22px 0;
  position: relative;
  font-size: clamp(16px, 1.5vw, 19px);
  line-height: 1.4;
}
.faq summary::-webkit-details-marker { display: none; }
/* Плюс превращается в минус поворотом одной палочки — без второй иконки */
.faq summary:after,
.faq summary:before {
  content: "";
  position: absolute;
  right: 6px; top: 50%;
  width: 14px; height: 1px;
  background: rgba(255, 255, 255, .6);
  transition: transform 200ms var(--ease-out);
}
.faq summary:before { transform: rotate(90deg); }
.faq details[open] summary:before { transform: rotate(0deg); }
.faq details p { margin: 0 0 24px; max-width: 68ch; font-size: 15px; line-height: 1.65; color: rgba(255, 255, 255, .68); }
@media (hover: hover) and (pointer: fine) {
  .faq summary:hover { color: var(--cyan, #00d9ff); }
}
.faq summary:focus-visible { outline: 2px solid var(--cyan, #00d9ff); outline-offset: 4px; }

.risks { margin-top: clamp(40px, 5vw, 72px); border: 1px solid rgba(255, 255, 255, .14); border-radius: 10px; padding: clamp(24px, 3vw, 42px); }
.risks h3 { font-size: clamp(18px, 1.8vw, 24px); }
.risks > p { margin-top: 12px; font-size: 15px; line-height: 1.6; color: rgba(255, 255, 255, .68); }
.risks ul { margin: 22px 0 0; padding: 0; list-style: none; display: grid; gap: 16px; }
.risks li { font-size: 14px; line-height: 1.6; color: rgba(255, 255, 255, .68); padding-left: 20px; position: relative; }
.risks li:before { content: ""; position: absolute; left: 0; top: 9px; width: 8px; height: 1px; background: rgba(255, 255, 255, .45); }
.risks li b { color: #fff; font-weight: 500; }

@media (max-width: 860px) {
  .stat-row { grid-template-columns: 1fr; }
  .person-grid { grid-template-columns: 1fr; }
  .person-photo { max-width: 420px; }
}


/* ── Экосистема в подвале ────────────────────────────────────────────────── */
.ecosystem { margin: 26px 0 0; padding: 0; list-style: none; display: grid; gap: 14px; }
.ecosystem li { display: flex; flex-direction: column; gap: 3px; }
.ecosystem a, .ecosystem b { font-size: 14px; font-weight: 500; color: var(--ink, #111315); text-decoration: none; }
.ecosystem span { font-size: 12px; color: var(--muted, #777d82); }
@media (hover: hover) and (pointer: fine) {
  .ecosystem a:hover { color: var(--deep, #173bff); }
}

/* ── Мобильные правки ────────────────────────────────────────────────────────
   Блок держим последним в файле: правила выше объявлены с той же
   специфичностью, и при равной специфичности выигрывает тот, что ниже. */
@media (max-width: 760px) {
  /* Шаблон раздаёт плашкам flex-basis под горизонтальную карусель. В колонке
     basis становится высотой — отсюда пустые простыни на 320px. */
  /* шаблон жёстко задаёт .media-pill{height:230px} — под фото, которых тут нет */
  .media-pill { flex: 0 0 auto; height: auto; min-height: 0; padding: 24px 22px; }
  .media-pill__number { font-size: 40px; }
  .faq summary { padding-right: 36px; font-size: 16px; }
  .risks { padding: 22px 20px; }
  .stat { padding: 22px 20px; }
}


/* Видео не должно подъезжать под текст ни на одной ширине. В шаблоне визуал
   подтянут вверх отрицательным margin, и на узких экранах лид ложился на кадр.
   Отрицательное смещение убираем совсем: слоёв меньше, зато текст читается. */
.hero-visual { margin-top: clamp(24px, 3vw, 48px); }

/* ── Воздух ──────────────────────────────────────────────────────────────────
   Шаблон дышит по-выставочному: 173px сверху и снизу у каждой секции плюс
   144px от номера раздела до заголовка. На стыке двух секций получалось 345px
   пустоты — на лендинге из рекламы это выброшенный экран. Режем примерно
   на 40%, ритм сохраняем. */
.section { padding-block: clamp(56px, 7vw, 108px); }
.intro-grid { margin-block: clamp(40px, 4.6vw, 72px); }
.cap-heading { margin-block: clamp(28px, 3vw, 48px); }

/* Первый экран: 100px сверху над надзаголовком и 119px до видео — при том, что
   строка экосистемы уже заняла верх. Поджимаем, кадр поднимается выше сгиба. */
.hero-copy { padding-top: clamp(32px, 4vw, 62px); padding-bottom: clamp(26px, 2.6vw, 40px); }

/* Подпись под логотипом: одно слово о том, что это часть группы. */
.brand-block { display: flex; flex-direction: column; gap: 2px; }
.brand-eco {
  font-size: 10px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted, #777d82);
}

/* Заголовок в левой колонке шаблон прижимает к низу — при короткой английской
   врезке это смотрелось как приём. Наш текст справа длиннее, и над заголовком
   повисало 286px пустоты. Выравниваем колонки по верху. */
.intro-grid { align-items: start; }

/* ── Средние ширины ──────────────────────────────────────────────────────────
   Шаблон держит две колонки в блоке «Проект» вплоть до 800px, а разбег колонок
   1.7fr / 1fr с зазором в 12vw. На 900px правая колонка сжимается до 267px,
   текст вытягивается на 484px, заголовок занимает 111 — и под ним висит 373px
   пустоты. Ставим одну колонку раньше и режем зазор. */
.intro-grid { gap: clamp(32px, 6vw, 110px); }

@media (max-width: 1200px) {
  .intro-grid { grid-template-columns: 1fr; gap: clamp(22px, 3vw, 38px); }
  .intro-copy { max-width: 64ch; }
}

/* Герой держал min-height:900px и на средних ширинах оставлял хвост под кадром */
.hero { min-height: 0; }
