/* ==========================================================================
   Блоки после первого экрана. Язык тот же, что у hero:
   почти чёрный #0a0a0a, единственный акцент #d0a161, Inter для крупных
   заголовков с плотным трекингом, Inter Tight для текста, рукописная
   строка как редкий акцент, тонкие линии rgba(255,255,255,.18),
   надзаголовки капсом с разрядкой и золотой чертой.

   Единица — rem: 1rem = 10px на кадре 1800, дальше масштабируется от ширины
   окна без потолка — сайт тянется под любой монитор. Высота окна ограничивает
   масштаб только на совсем вытянутых экранах (шире 2.25:1), иначе браузерные
   панели съедали бы размер на обычных мониторах.
   Колонка — 1200 (левый край 300, как логотип hero и блоки из Figma).
   Узкие ПК (901–1260): чистые 100vw/180 дают 1rem ≈ 5–7 px — мелкий текст упирается в пиксельные
   минимумы и вылезает из рамок. Там 1rem не меньше 7 px, но колонка 120rem всегда с полями ≥ 48 px.
   ========================================================================== */
html{font-size:max(5px,min(calc(100vw / 180),calc(100vh / 80)),min(7px,calc((100vw - 96px) / 120)))}

:root{
  --bg:#0a0a0a; --bg2:#101010; --acc:#d0a161; --acc-d:#5a4020;
  --t1:#fff; --t2:rgba(255,255,255,.58); --t3:rgba(255,255,255,.34);
  --line:rgba(255,255,255,.14);
  --ease:cubic-bezier(.7,0,.2,1); --out:cubic-bezier(.2,.8,.2,1);
  --txt:max(14px,1.6rem);
}

.blocks{position:relative;z-index:2;background:var(--bg)}
.wrap{width:min(120rem,calc(100% - 32px));margin:0 auto}
.sec{position:relative;padding:18rem 0 0;overflow-x:clip}

/* ── общие элементы ── */
.h2{margin:0;font:400 7.6rem/.92 "Inter",sans-serif;letter-spacing:-.06em;color:var(--t1)}
.h2-s{font-size:5.6rem;line-height:.96}
.h2 em{font-style:normal}

/* заголовки проявляются по словам из размытия по мере прокрутки, как текст «О проекте»:
   у каждого слова свой --t 0→1 (blocks.js) */
[data-split] .w{display:inline-block;filter:blur(calc((1 - var(--t,0)) * 10px));opacity:calc(.12 + var(--t,0) * .88)}

[data-reveal]{opacity:0;transform:translateY(3rem);
  transition:opacity 1s ease var(--d,0s),transform 1.2s var(--out) var(--d,0s)}
[data-reveal].is-in{opacity:1;transform:none}

.in-lead{margin:0;font-size:var(--txt);line-height:1.5;color:var(--t2);max-width:44rem}

/* ── кнопка-пилюля: как «Стать экспертом» в шапке hero ── */
.pill{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:1.4rem;
  height:max(46px,5.6rem);padding:0 max(22px,3rem);border-radius:40px;background:#fff;color:#0a0a0a;
  font:400 max(14px,1.5rem)/1.35 "Inter Tight",sans-serif;white-space:nowrap;border:0;cursor:pointer;
  overflow:hidden;isolation:isolate;
  transition:color .5s var(--ease),translate .6s var(--out),scale .3s ease}
.pill::before{content:"";position:absolute;left:var(--x,50%);top:var(--y,50%);z-index:-1;
  width:600px;height:600px;margin:-300px 0 0 -300px;border-radius:50%;background:var(--acc);
  scale:0;transition:scale .65s var(--ease)}
.pill:hover,.pill:focus-visible{color:#fff}
.pill:hover::before,.pill:focus-visible::before{scale:1}
.pill:active{scale:.97}
.pill-sm{height:max(36px,4rem);padding:0 max(18px,2rem);font-size:max(13px,1.4rem)}
.pill-lg{height:max(54px,6.8rem);padding:0 max(28px,4rem)}
/* стрелка: уезжает вправо, новая приходит слева */
.pill-ar{position:relative;width:1.6rem;height:1.6rem;min-width:14px;min-height:14px;overflow:hidden;flex:none}
.pill-ar svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.5;
  transition:transform .55s var(--ease) .05s}
.pill-ar svg+svg{transform:translateX(-110%)}
.pill:hover .pill-ar svg{transform:translateX(110%)}
.pill:hover .pill-ar svg+svg{transform:none}
.pill:focus-visible{outline:1px solid rgba(255,255,255,.5);outline-offset:4px}

/* ═════════ липкая шапка ═════════ */
.bar{position:fixed;left:0;right:0;top:0;z-index:40;
  background:rgba(10,10,10,.62);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);
  border-bottom:1px solid rgba(255,255,255,.07);
  transform:translateY(-102%);transition:transform .7s var(--ease)}
.bar.is-on{transform:none}
.bar-in{display:flex;align-items:center;justify-content:space-between;height:max(52px,6.4rem)}
.bar-brand{display:flex;align-items:center;gap:max(10px,1.2rem)}
.bar-brand img{width:max(24px,2.8rem);height:auto}
.bar-brand span{font:600 max(16px,1.8rem)/1 "Inter Tight",sans-serif;letter-spacing:.11em;color:var(--acc)}
.bar-nav,.ft-nav{display:flex;gap:max(28px,5rem);font-size:max(13px,1.4rem);line-height:1.35}
.bar-nav a,.ft-nav a{opacity:.6;transition:opacity .45s ease}
.bar-nav:has(a:hover) a:not(:hover){opacity:.3}
.bar-nav a:hover,.ft-nav a:hover{opacity:1}
.bar-act,.ft-act{display:flex;align-items:center;gap:max(16px,2rem)}

/* соцсети: залитый круг 18 % белого (макет 37:436), акцент растекается из центра — как у кнопок */
.soc{display:flex;gap:max(6px,.6rem)}
.soc-a{--s:max(36px,4rem);position:relative;display:grid;place-items:center;width:var(--s);height:var(--s);
  border-radius:50%;background:rgba(255,255,255,.18);color:#fff;overflow:hidden;isolation:isolate;
  transition:scale .3s ease}
.soc-a::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:50%;background:var(--acc);
  scale:0;transition:scale .5s cubic-bezier(.7,0,.2,1)}
.soc-a svg{width:44%;height:44%;fill:currentColor;transition:transform .5s cubic-bezier(.7,0,.2,1)}
.soc-a:hover::before,.soc-a:focus-visible::before{scale:1}
.soc-a:hover svg,.soc-a:focus-visible svg{transform:scale(1.08)}
.soc-a:active{scale:.94}
.soc-a:focus-visible{outline:1px solid rgba(255,255,255,.5);outline-offset:4px}

/* ═════════ 2. Чего у нас нет ═════════ */
/* Узлы 17:285–17:342, координаты от верха блока (y 2204 в кадре), колонка 1200 (как «О проекте»).
   Строка — 127 px с линией сверху: номер и пункт на +26, «Вместо этого» на +33, описание на +61 */
.strike{padding:13.8rem 0 21.2rem;overflow:hidden;isolation:isolate}
.st-frame{position:relative;width:min(120rem,calc(100% - 32px));margin:0 auto}
.st-h{margin:1.4rem 0 0;font:500 4.5rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.09rem;color:#fff}
.st-list{list-style:none;margin:6rem 0 0;padding:0}
.st-row{display:grid;grid-template-columns:3.8rem 58.3rem 1fr;align-items:start;
  min-height:12.7rem;padding-top:2.6rem;border-top:1px solid rgba(255,255,255,.23)}
.st-n{font:600 max(11px,1.3rem)/1.35 "Inter Tight",sans-serif;color:rgba(255,255,255,.24)}
.st-no{justify-self:start;max-width:37.1rem;margin:0;font:500 3.3rem/1.06 "Inter Tight",sans-serif;
  letter-spacing:-.066rem;color:rgba(255,255,255,calc(1 - var(--p,0) * .75))}
/* зачёркивание — линия 2 px акцентом на 60 % строки; длина = прогресс прокрутки строки --p (blocks.js),
   тянется слева направо по каждой строке пункта; пункт уходит в тень вместе с ней */
.st-no span{background:linear-gradient(var(--acc),var(--acc)) 0 60%/calc(var(--p,0) * 100%) max(2px,.2rem) no-repeat;
  -webkit-box-decoration-break:clone;box-decoration-break:clone}
/* «Вместо этого» и описание выпадают по словам сверху вниз из-под маски, когда строка зачёркнута
   на треть (класс .is-yes ставит blocks.js) */
.st-yes{max-width:45.7rem;margin:0;padding-top:.7rem;font:400 max(13px,1.5rem)/1.35 "Inter Tight",sans-serif;
  color:rgba(255,255,255,.87)}
.st-yes .w{display:inline-block;overflow:hidden;vertical-align:top;padding-top:.12em;margin-top:-.12em}
.st-yes .w>span{display:inline-block;transform:translateY(-110%);
  transition:transform .9s var(--out) calc(var(--i) * 22ms)}
.st-row.is-yes .st-yes .w>span{transform:none}
.st-yes small{display:block;margin-bottom:1.2rem;font:600 max(10px,1.2rem)/1.35 "Inter Tight",sans-serif;
  text-transform:uppercase;color:var(--acc)}

/* свет снизу — векторы 7–9 макета (#dd7a33, #b04a00, белый; размытие слоя 598), заранее отрисованы
   в img/st-glow-*.webp: холст x −700…2500, y −300…1450 px макета от верха блока. Привязан к низу
   блока, чтобы на телефоне, где блок выше, свет оставался у нижнего края; --drop опускает свет
   ниже макетной точки, чтобы он захватывал в основном последний пункт.
   Переливаются как пятна первого экрана: каждая полоса ходит по кругу, покачивается и «дышит»,
   периоды взаимно простые — картина не повторяется. Анимируется только transform
   --drop опускает свет ниже, чем в координатах макета: с учётом движения он иначе поднимался
   на полэкрана, а в макете захватывает в основном последний пункт */
.st-glow{position:absolute;left:50%;bottom:var(--drop);--drop:-22rem;z-index:-1;width:180rem;height:117rem;margin-left:-90rem;
  pointer-events:none;--slow:1}
.st-b{position:absolute;left:-70rem;top:-30rem;width:320rem;height:175rem;will-change:transform;
  animation:st-orbit calc(var(--t) * var(--slow)) linear var(--dl) infinite var(--dir,normal)}
.st-b img{display:block;width:100%;height:100%;transform-origin:var(--o);will-change:transform;
  animation:st-sway calc(var(--sw) * var(--slow)) ease-in-out var(--dl) infinite alternate,
            st-breathe calc(var(--br) * var(--slow)) ease-in-out var(--dl) infinite alternate}
/* --o — центр полосы на холсте, вокруг него качание и «дыхание» */
.st-b7{--r:9rem;--t:23s;--sw:13s;--br:9s;--dl:-5s;--o:54.9% 69%}
.st-b8{--r:12rem;--t:31s;--dir:reverse;--sw:17s;--br:14s;--dl:-11s;--o:55.9% 75.1%}
.st-b9{--r:8rem;--t:19s;--sw:11s;--br:12s;--dl:-3s;--o:58.2% 82.1%}
@keyframes st-orbit{
  from{transform:rotate(0deg) translateX(var(--r)) rotate(0deg)}
  to  {transform:rotate(360deg) translateX(var(--r)) rotate(-360deg)}
}
@keyframes st-sway{from{rotate:-4deg}to{rotate:4deg}}
@keyframes st-breathe{from{scale:.92}to{scale:1.08}}
/* блок за экраном — не крутим (класс ставит blocks.js) */
.strike:not(.is-live) .st-b,.strike:not(.is-live) .st-b img{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.st-glow{--slow:2}}

/* ═════════ 2б. Фото интенсивов ═════════ */
/* Сетка из макета: 1800×866 (ячейки 583/582×280, шаг 13, углы 16). Сцена прилипает к окну на всю
   высоту секции; blocks.js на каждом кадре задаёт саму ширину сетки --W (от «центральное фото во всю
   ширину» до финальной), сдвиг --y и затемнение --dim. Именно ширину, а не transform: scale — при
   масштабировании браузер растягивает однажды отрисованный слой и фото рассыпается на пиксели,
   а так каждый кадр берёт снимок из исходника в нужном размере */
.life{position:relative;height:350vh;background:var(--bg)}
.lf-stage{position:sticky;top:0;height:100vh;overflow:hidden}
.lf-grid{position:absolute;left:50%;top:50%;width:var(--W,100vw);aspect-ratio:1800/866;
  translate:-50% calc(-50% + var(--y,0px))}
.lf-c{position:absolute;height:32.3326%;margin:0;overflow:hidden;border-radius:var(--rad,16px);background:#161616}
.lf-c img{display:block;width:100%;height:100%;object-fit:cover}
.lf-dim{position:absolute;inset:0;background:var(--bg);opacity:var(--dim,0);pointer-events:none}

/* ═════════ 3. Как проходит интенсив — стопка плашек ═════════ */
/* Кадр «6» макета 1800 шириной: заголовок по центру, плашки 1200×473 (углы 13, фото 621×467 с отступом 3
   и углами 11). Фоны плашек и свечение над заголовком — готовые PNG из Figma (там маски и backdrop-blur).
   Плашки липнут к центру окна и по очереди наезжают друг на друга; blocks.js пишет каждой --t 0→1 —
   насколько её уже накрыла следующая (первые 35 % пути — ноль, дальше плавно); блюр растёт как t², то есть позже всего: уменьшается от верхнего края, размывается и уходит в тень */
.hw{position:relative;padding-top:18rem;background:var(--bg);overflow-x:clip} /* clip, не hidden: плашкам нужна липкость */
.hw-glow{position:absolute;left:calc(50% - 58.2rem);top:-57rem;width:148.2rem;height:127.5rem;pointer-events:none;max-width:none;
  clip-path:inset(57rem 0 0)} /* выше секции не рисуем: у PNG тёмная подложка, она ложилась тенью на фото предыдущего блока */
.hw-head{position:relative;height:19.5rem;text-align:center}
.hw-ey{margin:0;padding-left:.49em;font:700 1.1rem/1.35 Manrope,sans-serif;letter-spacing:.49em;text-transform:uppercase;color:var(--acc)}
.hw-h{position:absolute;left:0;right:0;top:2.1rem;margin:0;font:500 4.5rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.09rem;color:#fff;white-space:nowrap}
.hw-lead{position:absolute;left:50%;top:8.9rem;width:45.7rem;margin:0 0 0 -22.85rem;font-size:1.5rem;line-height:1.35;color:rgba(255,255,255,.55)}

.hw-stack{position:relative;width:120rem;margin:0 auto}
.hw-card{--t:0;position:sticky;top:calc(50vh - 23.65rem);height:47.3rem;border-radius:1.3rem;overflow:hidden;background:var(--bg);
  transform:scale(calc(1 - var(--t) * .08));transform-origin:50% 0;filter:blur(calc(var(--t) * var(--t) * 10px));will-change:transform}
.hw-card+.hw-card{margin-top:max(3rem,calc(50vh - 17rem)); /* пока текущая не прилипла, следующая целиком за нижним краем окна (с запасом 6.6rem на её тень вверх) и выплывает из-под него только потом */
  box-shadow:0 -1.7rem 4.54rem rgba(0,0,0,.49)} /* Drop shadow Figma: 0 −17, blur 22.7 (в CSS ×2), #000 49 % — наезжающая плашка отбрасывает тень вверх */
.hw-card::after{content:"";position:absolute;inset:0;background:var(--bg);opacity:calc(var(--t) * .75);pointer-events:none}
.hw-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hw-ph{position:absolute;left:57.6rem;top:.3rem;width:62.1rem;height:46.7rem;border-radius:1.1rem;object-fit:cover}
.hw-num{position:absolute;left:3.9rem;top:6.8rem;font:700 1.1rem/1.35 Manrope,sans-serif;letter-spacing:.066rem;color:var(--acc)}
.hw-card h3{position:absolute;left:3.9rem;top:12.7rem;margin:0;font:500 3.3rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.066rem;color:#fff;white-space:nowrap}
.hw-card p{position:absolute;left:3.9rem;top:19.6rem;margin:0;font-size:1.5rem;line-height:1.35;color:rgba(255,255,255,.55)}
.hw-mark{position:absolute;left:3.9rem;top:43.6rem;display:flex;align-items:flex-end;gap:1rem;opacity:.38;
  font:700 .9rem/1.35 Manrope,sans-serif;letter-spacing:.49em;text-transform:uppercase;color:#fff;white-space:nowrap}
.hw-mark svg{width:1.2rem;height:1.3rem;flex:none}
.hw-tail{height:15vh}

/* ═════════ 4. Интенсивы ═════════ */
/* Кадр «6» макета (узлы 42:569–42:702), колонка 1200 от x 300. Отсчёт — от надзаголовка (y 260):
   заголовок +29, подзаголовок +142, линия списка +226; строки 140 (название в две строки) и 105
   (в одну). Колонки строки от края колонки: номер 0, название 47, даты 448, эксперты 763, цена
   кончается на 1147, кнопка 1165×35. В раскрытом пункте: фото 400×243 от края колонки вровень
   подписи «О чём» (под датой) и «Для кого» (под экспертами) на 12 ниже верха фото, текст на 26 ниже подписи, «Записаться» 1200×46 на 32 ниже фото.
   Свечение — экспорт слоя Dusk_1 2 (размытие и затемняющий градиент запечены): картинка начинается
   на y 476 слоя, верх секции — на y 458 слоя */
.intens{isolation:isolate}
.in-glow{position:absolute;left:50%;top:1.8rem;z-index:-1;width:180rem;height:138.4rem;margin-left:-90rem;max-width:none;pointer-events:none}
.in-frame{position:relative;width:min(120rem,calc(100% - 32px));margin:0 auto}
.in-ey{display:flex;align-items:center;gap:.8rem;height:1.7rem;margin:0;
  font:700 max(9px,1.1rem)/1.35 Manrope,sans-serif;letter-spacing:.49em;text-transform:uppercase;color:var(--acc);white-space:nowrap}
.in-ey i{width:1.7rem;height:1px;background:var(--acc);flex:none}
.in-h{margin:1.2rem 0 0;font:500 4.5rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.09rem;color:#fff}
.in-h>span:not(.w){color:rgba(255,255,255,.43)}
/* слова, на которые data-split режет заголовок, — тоже span: цвет берут от родителя */
.in-h .w,.in-h .w>span{color:inherit}
.in-sub{margin:1.8rem 0 0;font-size:max(13px,1.5rem);line-height:1.35;color:rgba(255,255,255,.55)}

.in-list{margin-top:4.3rem;border-top:1px solid rgba(255,255,255,.23)}
.in-row{border-bottom:1px solid rgba(255,255,255,.23)}
.in-head{all:unset;box-sizing:border-box;width:100%;min-height:10.5rem;cursor:pointer;display:grid;
  grid-template-columns:4.7rem 40.1rem 31.5rem 1fr auto 3.5rem;align-items:center;transition:padding .9s var(--ease)}
.in-head:focus-visible{outline:1px solid rgba(255,255,255,.5);outline-offset:-1px}
.in-n{font:500 2.5rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.05rem;color:rgba(255,255,255,.25);transition:color .45s}
.in-t{font:500 2.9rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.058rem;color:#fff;white-space:nowrap;
  transition:color .45s,transform .7s var(--out)}
.in-d{font:500 max(13px,1.8rem)/1.35 "Inter Tight",sans-serif;color:#fff;white-space:nowrap;translate:0 .4rem}
.in-d small{display:block;margin-top:.1rem;font-size:max(12px,1.6rem);color:rgba(255,255,255,.4)}
.in-e{font:500 max(13px,1.8rem)/1.35 "Inter Tight",sans-serif;color:rgba(255,255,255,.52);white-space:nowrap}
.in-p{margin-right:1.8rem;font:500 max(14px,2.2rem)/1.35 "Inter Tight",sans-serif;color:#fff;white-space:nowrap;text-align:right}
.in-x{position:relative;box-sizing:border-box;width:3.5rem;height:3.5rem;min-width:30px;min-height:30px;
  border:1px solid rgba(255,255,255,.2);border-radius:50%;transition:background-color .45s,border-color .45s}
.in-x::before,.in-x::after{content:"";position:absolute;left:50%;top:50%;width:1.1rem;min-width:10px;height:max(1px,.14rem);
  background:#fff;translate:-50% -50%;transition:background-color .45s}
.in-x::after{rotate:90deg;transition:rotate .6s var(--ease),background-color .45s}
/* название в две строки: строка 140, сверху 30, снизу 48 (в раскрытом — 35, фото сразу под строкой);
   номер по верху названия, остальное на 4 ниже его центра */
.in-row:has(.in-t br) .in-head{padding:3rem 0 4.8rem}
.in-row.is-open:has(.in-t br) .in-head{padding-bottom:3.5rem}
.in-row:has(.in-t br) .in-n{align-self:start;margin-top:.1rem}
.in-row:has(.in-t br) :is(.in-e,.in-p,.in-x){translate:0 .4rem}

.in-row.is-open .in-n{font-weight:600;color:var(--acc)}
.in-row.is-open .in-t{color:var(--acc)}
.in-row.is-open .in-x::after{rotate:0deg}
.in-row:not(.is-open) .in-head:hover .in-t{transform:translateX(1rem)}
.in-row:not(.is-open) .in-head:hover .in-n{color:var(--acc)}
.in-head:hover .in-x{background:var(--acc);border-color:var(--acc)}
.in-head:hover .in-x::before,.in-head:hover .in-x::after{background:#0a0a0a}

/* раскрытие: высота через 0fr → 1fr; отступы только у детей — у обёртки с overflow они бы торчали */
.in-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .9s var(--ease)}
.in-row.is-open .in-body{grid-template-rows:1fr}
.in-body-in{min-height:0;overflow:hidden;display:grid;grid-template-columns:4.7rem 40.1rem 31.5rem 1fr;
  grid-template-rows:auto auto;align-items:start}

/* кадр с интенсива 400×243, углы 8. Открывается шторкой сверху вниз вместе с пунктом,
   фото слегка «приезжает» из крупного плана и дальше стоит неподвижно */
.in-ph{grid-column:1/3;grid-row:1;position:relative;width:40rem;aspect-ratio:400/243;margin:0;
  overflow:hidden;border-radius:.8rem;
  clip-path:inset(0 0 100% 0 round .8rem);transition:clip-path .6s var(--ease)}
.in-ph img{display:block;width:100%;height:100%;object-fit:cover;scale:1.16;transition:scale 1.6s var(--out)}
.in-row.is-open .in-ph{clip-path:inset(0 0 0 0 round .8rem);transition:clip-path 1.1s var(--ease) .12s}
.in-row.is-open .in-ph img{scale:1;transition-delay:.12s}

.in-col{grid-row:1;margin-top:1.2rem;opacity:0;transform:translateY(1.6rem);transition:opacity .3s ease,transform .6s var(--out)}
.in-c1{grid-column:3;padding-right:2rem}
.in-c2{grid-column:4}
.in-row.is-open .in-col{opacity:1;transform:none;transition:opacity .7s ease .3s,transform 1s var(--out) .3s}
.in-row.is-open .in-c2{transition-delay:.38s}
.in-col small{display:block;margin-bottom:1rem;font:700 max(10px,1.2rem)/1.35 "Inter Tight",sans-serif;
  letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.32)}
.in-col ul{list-style:none;margin:0;padding:0}
.in-col li{position:relative;padding-left:1.25em;font-size:max(13px,1.5rem);line-height:1.71;color:#fff}
.in-col li::before{content:"—";position:absolute;left:0;color:var(--acc)}
.in-col p{max-width:32.3rem;margin:.5rem 0 0;font-size:max(13px,1.5rem);line-height:1.35;color:rgba(255,255,255,.62)}

/* «Записаться» — золотая полоса во всю колонку, 46 высотой; заливка белым из точки входа */
.pill.in-cta{grid-column:1/-1;grid-row:2;height:max(40px,4.6rem);margin:3.2rem 0 3.3rem;padding:0;border-radius:3rem;
  background:var(--acc);color:#0a0a0a;font-size:max(14px,1.5rem);opacity:0;
  transition:opacity .3s ease,color .5s var(--ease),translate .6s var(--out),scale .3s ease}
.pill.in-cta::before{width:300rem;height:300rem;margin:-150rem 0 0 -150rem;background:#fff}
.pill.in-cta:hover,.pill.in-cta:focus-visible{color:#0a0a0a}
.in-row.is-open .in-cta{opacity:1;transition:opacity .7s ease .5s,color .5s var(--ease),translate .6s var(--out),scale .3s ease}

/* ═════════ 5. Эксперты (кадр «6» макета, узлы 49:56–49:246) ═════════
   Шапка как у интенсивов: надзаголовок, заголовок +29, подзаголовок +142, карточки на 40 ниже него.
   Карточки 530, между ними 10; наведённая 697, соседняя 493 (flex-grow 697/493), без наведения — поровну.
   Фото: ширина и сдвиг от левого верхнего угла карточки в каждом состоянии — из макета,
   «поровну» — середина между ними. Мордвов обрезан по высоте с y 819 из 4096 (сдвиг учтён). */
.experts{padding-top:15.3rem}
.ex-h{margin:1.2rem 0 0;max-width:57.4rem;font:500 4.5rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.09rem;color:#fff}
.ex-sub{margin:1.8rem 0 0;max-width:40rem;font-size:max(13px,1.5rem);line-height:1.35;color:rgba(255,255,255,.55)}
.ex-grid{display:flex;gap:1rem;height:53rem;margin-top:4rem}
/* скругление не обрезкой: скруглённый клип режет каждый слой отдельно, и на полупрозрачном пикселе края фото
   просвечивает сквозь затемнение светлой каймой. Клип прямоугольный (Blink ставит его по целым пикселям),
   углы — тёмные заплатки поверх всех слоёв (в ::before) */
.ex{--ex-t:.85s;--ex-e:cubic-bezier(.45,.05,.15,1);--ex-r:1rem;position:relative;flex:1 1 0;min-width:0;overflow:hidden;
  background:#0a0a0a;outline:0;transition:flex-grow var(--ex-t) var(--ex-e)}
.ex--mordvov{order:-1}
.ex:hover,.ex:focus-within{flex-grow:1.4138}
.ex-ph{position:absolute;left:0;top:0;max-width:none;height:auto;transform-origin:0 0;
  transition:transform var(--ex-t) var(--ex-e)}
.ex--mordvov .ex-ph{width:83.6rem;transform:translate(-10.35rem,-3.675rem) scale(.95634)}
.ex-grid:has(.ex:hover,.ex:focus-within) .ex--mordvov:not(:hover,:focus-within) .ex-ph{transform:translate(-16.7rem,-4.03rem)}
.ex-grid .ex--mordvov:is(:hover,:focus-within) .ex-ph{transform:translate(-4rem,-3.32rem) scale(.91268)}
.ex--koltsov .ex-ph{width:82.1rem;transform:translate(-9.95rem,-.15rem) scale(1.00122)}
.ex-grid:has(.ex:hover,.ex:focus-within) .ex--koltsov:not(:hover,:focus-within) .ex-ph{transform:translate(-14.4rem,-.3rem)}
.ex-grid .ex--koltsov:is(:hover,:focus-within) .ex-ph{transform:translate(-5.5rem,0) scale(1.00244)}
.ex--x .ex-ph{width:100%;height:100%;object-fit:cover}
/* углы + золотая полоса 3 px сверху раскрытой (последний слой фона, растёт по ширине) */
.ex::before{--c:transparent calc(var(--ex-r) - .6px),#0a0a0a calc(var(--ex-r) + .4px);--q:var(--ex-r) var(--ex-r);
  content:"";position:absolute;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(circle at 100% 100%,var(--c)) 0 0,radial-gradient(circle at 0 100%,var(--c)) 100% 0,
    radial-gradient(circle at 100% 0,var(--c)) 0 100%,radial-gradient(circle at 0 0,var(--c)) 100% 100%,
    linear-gradient(var(--acc),var(--acc)) 0 0;
  background-repeat:no-repeat;background-size:var(--q),var(--q),var(--q),var(--q),0 .3rem;
  transition:background-size var(--ex-t) var(--ex-e)}
.ex:hover::before,.ex:focus-within::before{background-size:var(--q),var(--q),var(--q),var(--q),100% .3rem}
/* затемнение: узкая — 211 снизу; раскрытая — 294 снизу и под фактами блюр 185 */
/* затемняющие слои выпущены за края на 2px (их обрезает скругление): иначе при дробной ширине карточки крайний
   пиксель накрыт ими лишь частично, а фото под ними — целиком, и по краю светится полоса */
.ex::after{content:"";position:absolute;left:-2px;right:-2px;bottom:-2px;z-index:1;height:calc(21.1rem + 2px);
  background:linear-gradient(180deg,rgba(10,10,10,0) .25%,rgba(10,10,10,.78) 56.9%,#0a0a0a 111.78%);
  transition:height var(--ex-t) var(--ex-e)}
.ex:hover::after,.ex:focus-within::after{height:calc(29.3rem + 2px)}
/* блюр под фактами (узел 49:203). Background blur Figma 19.85 по эталону = CSS blur 10px.
   Живой блюр не берём (backdrop-filter и filter:blur в части браузеров дают светлые кромки по краям слоя):
   фото размыто заранее (ex-*-blur.webp, та же кадровка — те же правила .ex-ph). Верх растушёван без масок:
   шесть слоёв с шагом .8rem от 3rem над линией фактов, прозрачность 1/6, 1/5 … 1 — вместе дают ровный подъём */
.ex-bz{position:absolute;left:-2px;right:-2px;bottom:-2px;top:var(--t);z-index:1;overflow:hidden;opacity:0;pointer-events:none;
  transition:opacity var(--ex-t) ease}
.ex-bz-in{position:absolute;left:2px;top:calc(-1 * var(--t));width:calc(100% - 4px);height:53rem}
.ex-bz::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,0) .25%,rgba(10,10,10,.086) 56.9%,rgba(10,10,10,.11) 111.78%)}
.ex:hover .ex-bz,.ex:focus-within .ex-bz{opacity:var(--a)}
.ex-tx{position:absolute;left:3.4rem;right:3.4rem;bottom:3.3rem;z-index:2}
.ex-role{margin:0 0 .9rem;font:700 max(9px,1rem)/1.35 Manrope,sans-serif;letter-spacing:.21rem;text-transform:uppercase;color:var(--acc);white-space:nowrap}
.ex h3{margin:0;font:500 3.5rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.07rem;color:#fff;white-space:nowrap}
/* раскрытие фактов — ровно на их высоту (0fr → 1fr), без запаса max-height, чтобы движение не обрывалось */
.ex-fw{display:grid;grid-template-rows:0fr;margin-top:1.5rem;transition:grid-template-rows var(--ex-t) var(--ex-e),margin-top var(--ex-t) var(--ex-e)}
.ex:hover .ex-fw,.ex:focus-within .ex-fw{grid-template-rows:1fr;margin-top:3rem}
.ex-facts{list-style:none;width:62.9rem;min-height:0;margin:0;padding:0;overflow:hidden}
.ex-facts li{display:grid;grid-template-columns:13.2rem 1fr;align-items:center;box-sizing:border-box;min-height:5rem;padding:.8rem 0;
  border-top:1px solid rgba(255,255,255,.17);font-size:max(13px,1.5rem);line-height:1.35;color:rgba(255,255,255,.79);
  opacity:0;transform:translateY(1.2rem);transition:opacity .45s ease,transform .7s var(--out)}
.ex-facts li:last-child{min-height:5.1rem;border-bottom:1px solid rgba(255,255,255,.17)}
.ex:is(:hover,:focus-within) .ex-facts li{opacity:1;transform:none}
.ex:is(:hover,:focus-within) .ex-facts li:nth-child(1){transition-delay:.15s}
.ex:is(:hover,:focus-within) .ex-facts li:nth-child(2){transition-delay:.23s}
.ex:is(:hover,:focus-within) .ex-facts li:nth-child(3){transition-delay:.31s}
.ex-facts b{font-weight:400}

/* ═════════ 6. География: со всей России — в Петербург ═════════
   Кадр «6» макета (узлы 54:250–54:577), колонка 1200 от x 300. Отсчёт — от надзаголовка (y 1059):
   заголовок +29, подводка +89, карта +133 — фрейм 1013×476 на 69 левее колонки, края срезаны.
   Цифры справа: линии 313 от x 887 колонки, первая на 62 ниже верха карты, шаг 150; число 67 на 10 ниже
   линии, приписка на 17 ниже линии и 7 правее числа, подпись на 5 ниже числа и 5 правее.
   Карта — контуры макета (admin/geo.js, FIG); дуги рисуются по прокрутке (blocks.js, stroke-dashoffset),
   по дугам изредка пробегает свечение — отрезок той же ширины, что и линия (blocks.js).
   Свечение — слой Dusk_1 4 поверх карты (screen), тексты над ним. Из экспорта слоя (он уже сведён с фоном кадра)
   вычтен фон: L = 1 − (1 − E) / (1 − #0a0a0a), так что screen над фоном даёт экспорт, а над картой — как в макете.
   Картинка от верха секции (y 906) до y 1862, поэтому у секции свой фон и низ до неё, а у бегущей строки отступ 8 */
.geo{isolation:isolate;background:var(--bg);padding:15.3rem 0 18.15rem}
.geo+.mq{padding-top:.8rem}
.geo-glow{position:absolute;left:50%;top:0;z-index:1;width:180rem;height:95.6rem;margin-left:-90rem;max-width:none;pointer-events:none;mix-blend-mode:screen}
.geo .in-ey,.geo-h,.geo-lead,.geo-figs{position:relative;z-index:2}
.geo-h{max-width:61.4rem}
.geo-mute{color:rgba(255,255,255,.43)}
.geo-lead{max-width:55.5rem;margin-top:1.23rem;color:rgba(255,255,255,.51)}
.geo-stage{position:relative;height:48.85rem;margin-top:.35rem}
.geo-map{position:absolute;left:-6.9rem;top:0;z-index:0;width:101.3rem;height:47.6rem;overflow:hidden}
.geo-svg{display:block;width:100%;height:100%}
.geo-land path{fill-rule:evenodd}
.geo-land .t0{fill:#37250f}
.geo-land .t1{fill:#1f180d}
.geo-land .t2{fill:#d0a161}
/* наведение: субъект чуть светлеет — без обводок и смены цвета */
.geo-land path{transition:filter .6s ease}
.geo-land path.is-hot{filter:brightness(1.35);transition-duration:.3s}
.geo-arc{fill:none;stroke-width:1;opacity:.31;transition:opacity .5s ease}
.geo-arc.is-hot{opacity:.95}
.geo-pulses path{fill:none;stroke-width:1;stroke-linecap:butt}
.geo-dot{fill:#fbf4e3;stroke:transparent;stroke-width:9;opacity:0;transform-box:fill-box;transform-origin:center;scale:0;transition:opacity .5s ease,scale .6s var(--out)}
.geo-dot.is-lit{opacity:1;scale:1}
.geo-dot.is-lit.is-hot{scale:1.5}
.geo-hubdot{fill:#fbf4e3}
/* подпись Петербурга — текст макета (x 69, y 82 и 97 во фрейме карты) */
.geo-hub{position:absolute;left:6.9rem;top:8.2rem;margin:0;pointer-events:none;font:500 1.8rem/1.35 "Inter Tight",sans-serif;color:#fff;white-space:nowrap}
.geo-hub small{display:block;margin-bottom:-.12rem;font:500 1.2rem/1.35 "Inter Tight",sans-serif;color:var(--acc)}
/* подпись региона при наведении: над точкой, у краёв карты прижимается внутрь (--ax) */
.geo-pin{position:absolute;left:0;top:0;margin:0;padding:.7rem 1.2rem;border:1px solid rgba(208,161,97,.28);border-radius:10rem;
  background:rgba(10,10,10,.8);font:500 1.3rem/1 "Inter Tight",sans-serif;color:#fff;white-space:nowrap;pointer-events:none;
  transform:translate(var(--ax,-50%),calc(-100% - 1.1rem));opacity:0;translate:0 .4rem;transition:opacity .3s ease,translate .5s var(--out)}
.geo-pin.is-on{opacity:1;translate:0 0}
.geo-figs{position:absolute;left:88.7rem;top:6.2rem;width:31.3rem}
.geo-f{min-height:15rem;border-top:1px solid var(--line)}
.geo-f b{display:flex;align-items:flex-start;gap:.7rem;margin-top:1rem;font:400 6.7rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.134rem;white-space:nowrap;overflow:hidden}
.geo-f sup{margin-top:.7rem;font:600 1.3rem/1.35 "Inter Tight",sans-serif;letter-spacing:0;text-transform:uppercase;color:var(--acc)}
.geo-f p{max-width:28.6rem;margin:.5rem 0 0 .5rem;font-size:max(12px,1.5rem);line-height:1.35;color:rgba(255,255,255,.44)}

/* ═════════ бегущая строка ═════════ */
.mq{position:relative;z-index:2;background:var(--bg);padding:18rem 0 0;overflow:hidden}
/* Кадр «6» макета (узел 54:578): линии на всю ширину на y 1870 и 1998, текст 41 Inter Tight Regular на 38 ниже
   верхней линии, каждая вторая фраза серая 27 %; точки 7, золото, на 66.5 от текста с обеих сторон и на 4 ниже его середины */
.mq-row{display:flex;white-space:nowrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:3.8rem 0 4.55rem}
.mq-in{display:flex;align-items:center;flex:none;will-change:transform}
.mq-in span{font:400 4.1rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.082rem;color:#fff}
.mq-in span:nth-of-type(even){color:rgba(255,255,255,.27)}
.mq-in i{width:.7rem;height:.7rem;margin:0 6.65rem;translate:0 .38rem;border-radius:50%;background:var(--acc);flex:none}

/* ═════════ 7. Отзывы ═════════ */
.reviews{padding:15.3rem 0 6rem}
.rv-top{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:7.2rem}
.rv-ctl{display:flex;align-items:center;gap:.7rem;translate:0 4rem}
.rv-cnt{margin:0 1.6rem 0 0;font-size:max(13px,1.5rem);color:var(--t3)}
.rv-cnt b{font-weight:400;color:#fff}
.rv-arr{width:max(40px,5rem);height:max(40px,5rem);border-radius:50%;border:1px solid rgba(255,255,255,.3);background:none;color:#fff;cursor:pointer;
  position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:border-color .4s}
.rv-arr::before{content:"";position:absolute;inset:-1px;border-radius:50%;background:var(--acc);scale:0;transition:scale .45s var(--out)}
.rv-arr:hover::before{scale:1}
.rv-arr svg{position:relative;width:24%;height:24%;fill:none;stroke:currentColor;stroke-width:2}
.rv-arr:hover{border-color:var(--acc)}
.rv-strip{overflow-x:auto;overflow-y:hidden;touch-action:pan-x pan-y;scrollbar-width:none;cursor:grab;outline:0}
.rv-strip::-webkit-scrollbar{display:none}
.rv-strip.is-drag{cursor:grabbing}
.rv-strip.is-drag .rv{pointer-events:none}
.rv-track{display:flex;gap:2rem;padding:0 max(16px,calc((100vw - 120rem) / 2));width:max-content}
.rv{position:relative;flex:none;width:29.8rem;height:53rem;padding:0;border:0;border-radius:.4rem;overflow:hidden;background:#161616;cursor:pointer;color:#fff;
  opacity:0;transform:translateY(6rem);transition:opacity .9s ease var(--d,0s),transform 1.2s var(--out) var(--d,0s)}
.reviews.is-in .rv{opacity:1;transform:none}
.rv img{width:100%;height:100%;object-fit:cover;filter:saturate(.5) brightness(.62) contrast(1.05);transition:scale 1.2s var(--out),filter .8s ease}
.rv:hover img{scale:1.06;filter:saturate(1) brightness(.95)}
.rv video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;scale:1.06;filter:brightness(.95);opacity:0;transition:opacity .45s ease;pointer-events:none}
.rv.is-prev video{opacity:1}
.rv::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,0) 42%,rgba(10,10,10,.55) 62%,rgba(10,10,10,.92))}
.rv-play{position:absolute;left:50%;top:50%;z-index:1;width:7.6rem;height:7.6rem;margin:-3.8rem 0 0 -3.8rem;border-radius:50%;
  background:rgba(255,255,255,.14);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  display:flex;align-items:center;justify-content:center;transition:background-color .45s,scale .6s var(--out)}
.rv-play svg{width:1.6rem;height:1.8rem;margin-left:.4rem;fill:#fff}
.rv:hover .rv-play{background:var(--acc);scale:1.12}
.rv-tx{position:absolute;left:2.4rem;right:2.4rem;bottom:2.8rem;z-index:1;display:flex;flex-direction:column;align-items:flex-start;text-align:left}
.rv-q{font-size:max(15px,2.1rem);line-height:1.3;letter-spacing:-.01em;color:#fff;text-wrap:balance}
.kv-modal{position:fixed;inset:0;z-index:100;background:rgba(5,5,5,.94);display:none;align-items:center;justify-content:center}
.kv-modal.is-open{display:flex}
.kv-box{width:min(92vw,calc(86vh * 9 / 16 * 1.9));aspect-ratio:16/9;max-height:86vh}
.kv-box iframe,.kv-box video{width:100%;height:100%;border:0;border-radius:.4rem;background:#000}
.kv-box.is-v{width:auto;height:86vh;max-width:92vw;aspect-ratio:9/16}
.kv-close{position:absolute}

/* ═════════ 8. Заявка ═════════ */
/* кадр Figma «6» (56:4): блок 704 от линии до подвала; свечение снизу — рендер слоёв 56:103/104/107 без текста */
.apply{position:relative;margin-top:20.3rem;padding:11.1rem 0 14.7rem;overflow:hidden;border-top:1px solid var(--line);
  background:var(--bg) url(img/apply-bg.webp) 50% 100%/100% auto no-repeat}
.ap{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 57.3rem;gap:4rem;align-items:stretch}
.ap-l{display:flex;flex-direction:column;align-items:flex-start;padding-bottom:3.15rem}
.ap-note{margin:2rem 0 0;max-width:32.7rem;font-size:max(13px,1.5rem);line-height:1.35;color:rgba(255,255,255,.51)}
.ap-note a{color:var(--acc);text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px;transition:color .3s}
.ap-note a:hover{color:#fff}
.ap-soc{margin-top:auto;padding-top:4rem}
.ap-soc p{margin:0 0 1.95rem;font-size:max(13px,1.5rem);line-height:1.35;color:rgba(255,255,255,.58)}
/* квадраты 60, шаг 67.7, иконки ×0.815 от прежних (кадр «88», 27:845–852) */
.ap-soc div{display:flex;gap:.77rem}
.ap-soc a{display:grid;place-items:center;width:6rem;height:6rem;border-radius:.66rem;background:rgba(255,255,255,.17);color:#fff;
  transition:background-color .4s var(--out)}
.ap-soc a:hover,.ap-soc a:focus-visible{background:var(--acc)}
.ap-soc svg{fill:currentColor}
.ap-soc svg[width="22"]{width:1.8rem;height:1.47rem}
.ap-soc svg[width="21"]{width:1.7rem;height:1.7rem}
.ap-soc svg[width="27"]{width:2.2rem;height:2.2rem}
.ap-soc svg[width="23"]{width:1.9rem;height:1.9rem}

.ap-form{position:relative;display:flex;flex-direction:column;padding-top:.8rem}
.ap-pick{border:0;margin:0 0 1.1rem;padding:0;display:grid;grid-template-columns:repeat(2,minmax(23.1rem,max-content));gap:.8rem}
.ap-pick legend{margin:0 0 1.3rem;padding:0;font:700 max(10px,1.2rem)/1.35 "Inter Tight",sans-serif;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.32)}
.ap-pick label{display:block;cursor:pointer}
.ap-pick input{position:absolute;opacity:0;pointer-events:none}
.ap-pick span{display:flex;align-items:center;justify-content:center;min-height:5.4rem;padding:.6rem 1rem;white-space:nowrap;border:1px solid rgba(255,255,255,.19);border-radius:7.5rem;
  font-size:max(12px,1.5rem);line-height:1.35;text-align:center;color:rgba(255,255,255,.82);transition:background-color .4s,border-color .4s,color .4s}
.ap-pick label:hover span{border-color:rgba(255,255,255,.45)}
.ap-pick input:checked+span{background:var(--acc);border-color:var(--acc);color:#fff}
.ap-pick input:focus-visible+span{outline:1px solid rgba(255,255,255,.5);outline-offset:3px}
/* поле — строка на линии: текст 20 px, 39 px над ним, 12 px под ним */
.ap-f{position:relative;display:flex;align-items:center;padding:3.9rem 0 1.2rem;border-bottom:1px solid rgba(255,255,255,.21)}
.ap-f input,.ap-f textarea{flex:1;min-width:0;height:2.7rem;padding:0;background:none;border:0;color:#fff;
  font:400 max(15px,2rem)/1.35 "Inter Tight",sans-serif;outline:0;border-radius:0}
.ap-f input::placeholder,.ap-f textarea::placeholder{color:rgba(255,255,255,.31);opacity:1}
/* подпись поля стоит вместо плейсхолдера и исчезает, как только начали печатать */
.ap-f>span:last-child{position:absolute;left:0;top:3.9rem;font-size:max(15px,2rem);line-height:1.35;color:rgba(255,255,255,.31);pointer-events:none;transition:opacity .25s}
.ap-f input:not(:placeholder-shown)+span,.ap-f textarea:not(:placeholder-shown)+span{opacity:0}
.ap-f>span.ap-sr{position:absolute;top:0;left:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.ap-cc{display:flex;align-items:center;flex:none;margin-right:.55rem;font-size:max(15px,2rem);line-height:1.35;color:#fff}
.ap-cc svg{width:1.8rem;height:1.3rem;margin-right:.8rem}
.ap-cc i{width:0;height:0;margin-right:.5rem;border-left:.35rem solid transparent;border-right:.35rem solid transparent;border-top:.375rem solid #fff}
/* линия под полем заливается акцентом при фокусе */
.ap-f::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--acc);transform:scaleX(0);transform-origin:0 50%;transition:transform .7s var(--ease)}
.ap-f:focus-within::after{transform:none}
.ap-f.is-bad::after{transform:none;background:#ff8a5c}
/* поля, которые клиент добавляет в админке: комментарий, выбор варианта, галочка */
.ap-f textarea{height:auto;min-height:8.1rem;resize:vertical}
.ap-opt,.ap-chk{margin:3.9rem 0 0}
.ap-chk{display:flex}
.ap-pick.is-bad legend,.ap-chk.is-bad span{color:#ff8a5c}
.ap-chk.is-bad span{border-color:#ff8a5c}
.ap-send{margin-top:3.5rem}
.ap-btn{display:flex;align-items:center;justify-content:center;width:100%;height:5.7rem;border:0;border-radius:5.7rem;background:var(--acc);color:#fff;cursor:pointer;
  font:400 max(15px,2rem)/1.35 "Inter Tight",sans-serif;transition:background-color .4s var(--out)}
.ap-btn:hover,.ap-btn:focus-visible{background:#dcb27a}
.ap-send p{margin:1.3rem 0 0 1rem;text-wrap:balance;font-size:max(10px,1.3rem);line-height:1.35;color:rgba(255,255,255,.38)}
.ap-send a{color:inherit;text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px;transition:color .3s}
.ap-send a:hover{color:#fff}
/* галочка согласия на обработку персональных данных (152-ФЗ): обязательная, по умолчанию не отмечена */
.ap-agree{position:relative;display:flex;align-items:flex-start;gap:1rem;margin:0 0 2rem;cursor:pointer;font-size:max(11px,1.4rem);line-height:1.4;color:rgba(255,255,255,.62)}
.ap-agree input{position:absolute;left:0;top:0;width:1.8rem;height:1.8rem;opacity:0;margin:0}
.ap-agree i{position:relative;flex:none;width:max(14px,1.8rem);height:max(14px,1.8rem);margin-top:.05em;border:1px solid rgba(255,255,255,.34);border-radius:.4rem;transition:border-color .3s,background-color .3s}
.ap-agree i::after{content:"";position:absolute;left:32%;top:14%;width:30%;height:52%;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) scale(0);transition:transform .2s}
.ap-agree:hover i{border-color:rgba(255,255,255,.6)}
.ap-agree input:checked+i{background:var(--acc);border-color:var(--acc)}
.ap-agree input:checked+i::after{transform:rotate(45deg) scale(1)}
.ap-agree input:focus-visible+i{outline:1px solid rgba(255,255,255,.5);outline-offset:3px}
.ap-agree a{color:inherit;text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px;transition:color .3s}
.ap-agree a:hover{color:#fff}
.ap-agree.is-bad{color:#ff8a5c}
.ap-agree.is-bad i{border-color:#ff8a5c}
.ap-ok{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:2rem;
  opacity:0;visibility:hidden;transition:opacity .8s ease,visibility 0s .8s}
.ap-ok b{font:500 4.5rem/1.06 "Inter Tight",sans-serif;letter-spacing:-.09rem}
.ap-ok p{margin:0;font-size:max(13px,1.5rem);line-height:1.35;color:rgba(255,255,255,.58)}
.ap-form>*{transition:opacity .5s ease}
.ap-form.is-sent>:not(.ap-ok){opacity:0;visibility:hidden}
.ap-form.is-sent .ap-ok{opacity:1;visibility:visible;transition:opacity .8s ease .3s}
/* ловушка для ботов: люди поле не видят, спам-скрипты заполняют */
.ap-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
/* пока заявка уходит — кнопка приглушена; не ушла — под кнопкой строка с почтой */
.ap-form.is-busy .ap-btn{opacity:.5;pointer-events:none}
.ap-err{display:none;margin:2rem 0 0;font-size:max(12px,1.3rem);line-height:1.5;color:#ff8a5c}
.ap-err a{color:#fff;border-bottom:1px solid var(--acc)}
.ap-form.is-err .ap-err{display:block}

/* ═════════ окошко «MAX по номеру» (blocks.js) ═════════ */
.mx-pop{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(5,5,5,.8);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility 0s .35s}
.mx-pop.is-open{opacity:1;visibility:visible;transition:opacity .35s ease}
.mx-box{position:relative;width:min(100%,max(300px,44rem));padding:max(28px,4rem) max(22px,3.6rem) max(24px,3.6rem);border:1px solid rgba(255,255,255,.12);border-radius:max(14px,1.6rem);
  background:#141312;text-align:center;transform:translateY(12px);transition:transform .45s var(--out)}
.mx-pop.is-open .mx-box{transform:none}
.mx-x{position:absolute;top:max(8px,1rem);right:max(10px,1.2rem);width:max(34px,3.6rem);height:max(34px,3.6rem);border:0;background:none;color:rgba(255,255,255,.5);font-size:max(26px,2.8rem);line-height:1;cursor:pointer;transition:color .3s}
.mx-x:hover{color:#fff}
.mx-t{margin:0;font:500 max(22px,2.9rem)/1.1 "Inter Tight",sans-serif;letter-spacing:-.02em;color:#fff}
.mx-s{margin:max(10px,1.2rem) 0 0;font-size:max(14px,1.5rem);line-height:1.35;color:rgba(255,255,255,.55)}
.mx-num{display:inline-block;margin-top:max(14px,1.8rem);font:600 max(24px,2.7rem)/1.19 Manrope,sans-serif;letter-spacing:-.02em;color:var(--acc);white-space:nowrap}
.mx-act{display:flex;flex-wrap:wrap;gap:max(8px,1rem);margin-top:max(22px,2.8rem)}
.mx-act>*{flex:1 1 14rem;display:flex;align-items:center;justify-content:center;min-height:max(46px,5.4rem);padding:0 max(14px,1.8rem);border-radius:6rem;
  font:400 max(15px,1.6rem)/1.2 "Inter Tight",sans-serif;cursor:pointer;transition:background-color .4s var(--out),border-color .4s,color .4s}
.mx-copy{border:0;background:var(--acc);color:#fff}
.mx-copy:hover,.mx-copy:focus-visible{background:#dcb27a}
.mx-open{border:1px solid rgba(255,255,255,.25);color:#fff}
.mx-open:hover,.mx-open:focus-visible{border-color:var(--acc);color:var(--acc)}

/* ═════════ подвал ═════════ */
/* кадр Figma «88» (37:2), подвал 10803–11553 (750): фон со свечением и «кмк» (soft light) — рендер слоёв 37:397/409/410 без текста */
.foot{position:relative;z-index:2;background:#0b0b0a;overflow:hidden}
@media (min-width:901px){
  .foot{padding:7.3rem 0 4.2rem;background:#0b0b0a url(img/ft-bg.webp?v=83df9334) 50% 0/max(100%,180rem) auto no-repeat}
  .ft-m{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-areas:"logo logo logo" "slogan slogan slogan" "tel sc mail" "legal legal legal";
    align-items:start;width:min(120rem,calc(100% - 32px));margin:0 auto}
  .ft-m-logo{grid-area:logo;justify-self:center;width:7.3rem;height:7.3rem}
  .ft-m-slogan{grid-area:slogan;justify-self:center;max-width:84.8rem;margin:2.6rem 0 0;text-align:center;
    font:400 4.6rem/1.08 "Inter Tight",sans-serif;letter-spacing:-.04em;color:var(--acc)}
  .ft-m-c{margin-top:7.3rem}
  .ft-m-tel{grid-area:tel;justify-self:start}
  .ft-m-sc{grid-area:sc}
  .ft-m-mail{grid-area:mail;justify-self:end}
  .ft-m-c small{display:block;font:400 1.4rem/1.3 Manrope,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:rgba(255,255,255,.43)}
  .ft-m-c>a{display:inline-block;margin-top:1.3rem;font:600 2.7rem/1.19 Manrope,sans-serif;letter-spacing:-.02em;color:#fff;transition:color .4s var(--out)}
  .ft-m-tel>a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
  .ft-m-c>a:hover{color:var(--acc)}
  .ft-m-soc{display:flex;gap:.7rem;margin-top:1.3rem}
  .ft-m-soc a{display:grid;place-items:center;width:5.8rem;height:5.8rem;border-radius:50%;background:rgba(255,255,255,.18);color:#fff;transition:background-color .4s var(--out)}
  .ft-m-soc a:hover,.ft-m-soc a:focus-visible{background:var(--acc)}
  .ft-m-soc svg{fill:currentColor}
  .ft-m-soc svg[viewBox^="3.6"]{width:2.2rem;height:2.2rem}
  .ft-m-soc svg[viewBox^="4 "]{width:1.9rem;height:1.9rem}
  .ft-m-soc svg[width="22"]{width:1.9rem;height:1.55rem}
  /* линия во всю ширину окна на 11432 (195 под кругами соцсетей), под ней реквизиты слева и документы справа */
  .ft-m-legal{grid-area:legal;position:relative;display:grid;grid-template-columns:1fr auto;margin-top:19.5rem;padding-top:1.8rem;
    font:500 1.5rem/1.35 Manrope,sans-serif;color:rgba(255,255,255,.45)}
  .ft-m-legal::before{content:"";position:absolute;top:0;left:50%;width:100vw;transform:translateX(-50%);border-top:1px solid rgba(255,255,255,.18)}
  .ft-m-legal p{grid-column:1;margin:0}
  .ft-m-docs{grid-column:2!important;grid-row:1/span 9;line-height:2rem}
  .ft-m-docs a{display:inline-block;margin-bottom:1rem;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em;transition:color .3s}
  .ft-m-docs a:hover{color:#fff}
}

/* ═════════ меньше движения ═════════ */
@media (prefers-reduced-motion:reduce){
  .st-yes .w>span,[data-reveal],.rv{transform:none!important;opacity:1!important;transition:none!important}
  [data-split] .w{filter:none!important;opacity:1!important}
}

/* меню-бургер есть только на телефоне */
.burger,.mnav{display:none}

/* элементы только для телефона (mobile.css) */
.m-only{display:none}
.reel-m{display:none}
.ap-cc{position:relative}
.ap-cc b{font-weight:400}
.ap-ccsel{position:absolute;inset:-.6rem -.4rem;width:auto;opacity:0;cursor:pointer;font-size:16px;-webkit-appearance:none;appearance:none}

/* плашка про cookies: одна строка внизу слева, после «Хорошо» больше не показывается (blocks.js) */
.ck{position:fixed;left:2.4rem;bottom:2.4rem;z-index:60;display:flex;align-items:center;gap:2rem;max-width:min(62rem,calc(100vw - 32px));padding:1.4rem 1.4rem 1.4rem 2.2rem;background:rgba(16,16,16,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);border-radius:1.6rem;box-shadow:0 1rem 4rem rgba(0,0,0,.45);opacity:0;transform:translateY(1.2rem);transition:opacity .5s var(--out),transform .5s var(--out)}
.ck[hidden]{display:none}
.ck.is-on{opacity:1;transform:none}
.ck p{margin:0;font-size:max(12px,1.35rem);line-height:1.45;color:rgba(255,255,255,.66)}
.ck a{color:inherit;text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px;transition:color .3s}
.ck a:hover{color:#fff}
.ck-ok{flex:none;height:max(36px,4.2rem);padding:0 2.4rem;border:0;border-radius:5rem;background:var(--acc);color:#fff;cursor:pointer;font:400 max(13px,1.5rem)/1 "Inter Tight",sans-serif;transition:background-color .3s}
.ck-ok:hover,.ck-ok:focus-visible{background:#dcb27a}
