/* ==========================================================================
   Эвакуатор Саратов — эвакуаторсаратов.рф
   Чистая статика. Ни одной внешней зависимости.
   Порядок: шрифты → токены → база → шапка → первый экран → система появления
   → секции → калькулятор → карточки → почему → шаги → зона → FAQ → контакты
   → подвал → липкая панель → доступность движения.
   ========================================================================== */

/* --------------------------------------------------------------- 01 ШРИФТЫ */
/* Локальные подмножества переменных шрифтов. Кириллица и латиница разделены,
   чтобы браузер качал только то, что реально встретилось в тексте. */
@font-face{
  font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;
  src:url(fonts/manrope-cyrillic.woff2) format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;
  src:url(fonts/manrope-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(fonts/inter-cyrillic.woff2) format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(fonts/inter-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* --------------------------------------------------------------- 02 ТОКЕНЫ */
:root{
  /* Палитра: графитовая база + одна латунь. Больше цветов не появится. */
  --ink:#0C0D0F;
  --ink-2:#131417;
  --ink-3:#1A1C20;
  --line:rgba(244,242,237,.12);
  --line-2:rgba(244,242,237,.07);
  --paper:#F4F2ED;
  --muted:rgba(244,242,237,.62);
  --muted-2:rgba(244,242,237,.42);
  --accent:#D3B27A;
  --accent-2:#E7CF9F;
  --accent-dim:rgba(211,178,122,.14);

  --pad:clamp(20px,5vw,64px);
  --maxw:1280px;
  --sec-pad:clamp(64px,11vw,150px);
  --r:14px;
  --r-sm:10px;

  --ease:cubic-bezier(.16,1,.3,1);
  --ease-soft:cubic-bezier(.33,1,.68,1);
  --dock-h:0px;
}

/* ----------------------------------------------------------------- 03 БАЗА */
*,*::before,*::after{box-sizing:border-box}

html{
  -webkit-text-size-adjust:100%;
  /* clip не создаёт скролл-контейнер, поэтому sticky-шапка продолжает работать */
  overflow-x:hidden;
  overflow-x:clip;
  scroll-behavior:smooth;
  scroll-padding-top:80px;
}

body{
  margin:0;
  background:var(--ink);
  color:var(--paper);
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:16px;
  line-height:1.55;
  font-synthesis-weight:none;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
  overflow-x:clip;
  padding-bottom:var(--dock-h);
}

img,svg,video{max-width:100%;display:block}
img{height:auto}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p,figure,figcaption,dl,dd,dt,ul,ol,fieldset,legend{margin:0;padding:0}
ul,ol{list-style:none}
fieldset{border:0;min-width:0}          /* fieldset по умолчанию имеет min-width:min-content */
legend{padding:0;display:block}
button,input,select,textarea{font:inherit;color:inherit}
b,strong{font-weight:600}
::selection{background:var(--accent);color:#14120E}

:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px;border-radius:4px}

.wrap{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--pad);
}

.skip{position:absolute;left:-9999px;top:0}
.skip:focus{
  left:8px;top:8px;z-index:200;
  background:var(--paper);color:var(--ink);
  padding:10px 16px;border-radius:8px;
}

/* ---------------------------------------------------------------- 04 ШАПКА */
.hdr{
  position:sticky;top:0;z-index:60;
  background:rgba(12,13,15,.72);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid transparent;
  transition:border-color .4s var(--ease),background-color .4s var(--ease);
}
.hdr.is-stuck{border-bottom-color:var(--line-2)}

.hdr__in{
  display:flex;
  align-items:center;
  gap:clamp(12px,2vw,28px);
  min-height:64px;
}

.brand{
  display:flex;align-items:center;gap:10px;
  min-width:0;
  font-family:'Manrope',sans-serif;font-weight:800;
  letter-spacing:-.02em;font-size:15px;white-space:nowrap;
}
.brand svg{flex:none}
.brand span{min-width:0;overflow:hidden;text-overflow:ellipsis}

.hdr__nav{display:none;gap:clamp(14px,1.8vw,26px);min-width:0}
.hdr__nav a{
  font-size:14px;color:var(--muted);white-space:nowrap;
  transition:color .3s var(--ease);
}
.hdr__nav a:hover{color:var(--paper)}

.hdr__spacer{flex:1 1 auto;min-width:0}

.hdr__tel{
  font-family:'Manrope',sans-serif;font-weight:700;
  font-size:clamp(14px,2.6vw,17px);
  letter-spacing:-.015em;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  flex:none;
  transition:color .3s var(--ease);
}
.hdr__tel:hover{color:var(--accent)}

/* Ниже 560px в шапке остаётся только знак и телефон — строка не распирает экран */
@media (max-width:559px){ .brand span{display:none} }
@media (min-width:1000px){ .hdr__nav{display:flex} }

/* --------------------------------------------------------- 05 ПЕРВЫЙ ЭКРАН */
.hero{
  position:relative;
  padding-block:clamp(28px,7vw,72px) clamp(48px,9vw,110px);
}
.hero__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(30px,5vw,64px);
  align-items:center;
}
.hero__col{min-width:0}

.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  min-width:0;
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);
  margin-bottom:clamp(16px,3vw,26px);
}
.dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none}

h1{
  font-family:'Manrope',sans-serif;font-weight:800;
  letter-spacing:-.035em;line-height:.98;
  font-size:clamp(30px,8.2vw,74px);
  overflow-wrap:break-word;
}
h1 .accent{color:var(--accent)}

/* Появление заголовка построчно. Каждая строка — своё окно с обрезкой. */
.split .ln{
  display:block;
  overflow:hidden;
  padding-bottom:.09em;
  margin-bottom:-.09em;
}
.split .ln__i{display:block;will-change:transform}

.hero__lead{
  margin-top:clamp(18px,3vw,26px);
  color:var(--muted);
  font-size:clamp(15px,3.4vw,19px);
  line-height:1.62;
  max-width:48ch;
}
.hero__lead b{color:var(--paper);font-weight:600}

.hero__cta{margin-top:clamp(24px,4vw,36px)}

.telbig{
  display:inline-block;
  max-width:100%;
  font-family:'Manrope',sans-serif;font-weight:800;
  letter-spacing:-.04em;
  font-size:clamp(24px,6.8vw,48px);
  line-height:1.05;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
  transition:color .3s var(--ease);
}
.telbig:hover{color:var(--accent)}
.telbig__sub{
  display:block;
  font-family:'Inter',sans-serif;font-weight:400;
  font-size:13px;letter-spacing:.01em;line-height:1.5;
  color:var(--muted-2);
  margin-top:8px;
  white-space:normal;
  max-width:42ch;
}

/* Кнопки. Две равнозначные: одинаковый размер, одинаковый вес в сетке. */
.btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(20px,3.4vw,28px)}
.btn{
  --tx:0px;--ty:0px;
  position:relative;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:56px;padding:0 clamp(18px,3vw,28px);
  border-radius:100px;border:1px solid transparent;
  font-family:'Manrope',sans-serif;font-weight:700;font-size:16px;
  letter-spacing:-.01em;line-height:1.2;
  text-align:center;cursor:pointer;
  flex:1 1 200px;min-width:0;max-width:100%;
  transform:translate3d(var(--tx),var(--ty),0);
  transition:transform .55s var(--ease),background-color .3s var(--ease),
             border-color .3s var(--ease),color .3s var(--ease);
}
.btn svg{flex:none}
.btn--primary{background:var(--accent);color:#14120E}
.btn--primary:hover{background:var(--accent-2)}
.btn--ghost{background:transparent;color:var(--paper);border-color:var(--line)}
.btn--ghost:hover{border-color:rgba(244,242,237,.34);background:rgba(244,242,237,.04)}
.btn.is-magnetic{will-change:transform;transition:transform .12s linear,background-color .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease)}

.badge{
  display:inline-flex;align-items:center;gap:9px;
  min-width:0;
  margin-top:clamp(18px,3vw,24px);
  padding:9px 16px;
  border:1px solid var(--line);border-radius:100px;
  font-size:13px;color:var(--muted);
}
.pulse{
  width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none;
  box-shadow:0 0 0 0 rgba(211,178,122,.55);
  animation:pulse 2.6s var(--ease-soft) infinite;
}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(211,178,122,.5)}
  70%{box-shadow:0 0 0 9px rgba(211,178,122,0)}
  100%{box-shadow:0 0 0 0 rgba(211,178,122,0)}
}

/* Кадр с фото: рамка режет всё, что выходит за края при параллаксе и наклоне.
   Режем через clip-path, а НЕ через overflow:hidden. overflow:hidden делает
   элемент скролл-контейнером, и тогда animation-timeline: view() начинает
   отсчитывать прогресс относительно этой рамки — та никогда не прокручивается,
   и параллакс намертво застывает на середине. clip-path скролл-контейнер
   не создаёт, поэтому шкала считается от окна, как и задумано. */
.hero__media{
  position:relative;
  border-radius:var(--r);
  clip-path:inset(0 round var(--r));
  background:var(--ink-2);
  aspect-ratio:4/3;
  isolation:isolate;
}
/* Внутренний слой больше рамки — параллакс никогда не оголяет края */
.hero__inner{position:absolute;inset:-8%;will-change:transform}
.hero__img{
  width:100%;height:100%;object-fit:cover;
  transform:translate3d(calc(var(--px,0) * 10px),calc(var(--py,0) * 8px),0) scale(1.06);
  will-change:transform;
}
.hero__media::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(12,13,15,.72) 0%,rgba(12,13,15,0) 46%);
}
.hero__cap{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  display:flex;flex-wrap:wrap;gap:10px;
  padding:clamp(14px,2.4vw,22px);
  font-size:13px;letter-spacing:.02em;color:var(--muted);
}

@media (min-width:900px){
  .hero__grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}
  /* Кадр вертикальный, но не выше экрана: иначе на ноутбуке 1440×800
     телефон и кнопки уезжают под сгиб — а до них должно быть ноль прокрутки. */
  .hero__media{aspect-ratio:4/5;max-height:calc(100vh - 200px);max-height:calc(100svh - 200px)}
  .btn{flex:0 1 auto;min-width:210px}
}
/* Невысокие ноутбуки: поджимаем воздух, чтобы первый экран целиком был первым. */
@media (min-width:900px) and (max-height:900px){
  .hero{padding-block:clamp(18px,2.6vw,34px) clamp(32px,5vw,64px)}
  h1{font-size:clamp(30px,4.6vw,56px)}
  .hero__lead{margin-top:18px;font-size:17px}
  .hero__cta{margin-top:24px}
  .hero__media{max-height:calc(100vh - 170px);max-height:calc(100svh - 170px)}
}

/* ------------------------------------------- 06 СИСТЕМА ПОЯВЛЕНИЯ СЕКЦИЙ */
/* Базовое состояние — видно. Прятать начинаем только когда JS подтвердил,
   что сможет показать обратно. Без JS и при prefers-reduced-motion сайт
   просто статичен и полностью читаем. */
.js:not(.rm) .reveal{
  opacity:0;
  transform:translate3d(0,22px,0);
}

/* Ступенчатая задержка внутри секции */
.stagger>*{--i:0}
.stagger>*:nth-child(1){--i:0}
.stagger>*:nth-child(2){--i:1}
.stagger>*:nth-child(3){--i:2}
.stagger>*:nth-child(4){--i:3}
.stagger>*:nth-child(5){--i:4}
.stagger>*:nth-child(6){--i:5}
.stagger>*:nth-child(7){--i:6}
.stagger>*:nth-child(n+8){--i:7}

/* Запасной путь: IntersectionObserver вешает .is-in */
.js:not(.rm):not(.sda) .reveal{
  transition:opacity .75s var(--ease),transform .85s var(--ease);
  transition-delay:calc(var(--i,0) * 70ms);
}
.js:not(.rm):not(.sda) .reveal.is-in{opacity:1;transform:none}

/* Основной путь: нативная прокруточная временная шкала, без JS в кадре */
@supports (animation-timeline:view()){
  .js.sda:not(.rm) .reveal{
    animation:reveal-in linear both;
    animation-timeline:view();
    animation-range:entry calc(2% + var(--i,0) * 5%) entry calc(58% + var(--i,0) * 5%);
  }
}
@keyframes reveal-in{
  from{opacity:0;transform:translate3d(0,22px,0)}
  to{opacity:1;transform:none}
}

/* Параллакс фото: нативный вариант */
@supports (animation-timeline:view()){
  .js.sda:not(.rm) .hero__inner{
    animation:hero-parallax linear both;
    animation-timeline:view();
    animation-range:cover 0% cover 100%;
  }
  .js.sda:not(.rm) .area__media img,
  .js.sda:not(.rm) .why__media img{
    animation:media-parallax linear both;
    animation-timeline:view();
    animation-range:cover 0% cover 100%;
  }
}
@keyframes hero-parallax{
  from{transform:translate3d(0,-3.2%,0) scale(1.07)}
  to{transform:translate3d(0,3.2%,0) scale(1)}
}
@keyframes media-parallax{
  from{transform:translate3d(0,-3%,0) scale(1.08)}
  to{transform:translate3d(0,3%,0) scale(1.01)}
}

/* Запасной путь параллакса: JS пишет --p (0…1), CSS считает трансформ */
.js:not(.sda):not(.rm) .hero__inner{
  transform:translate3d(0,calc((var(--p,.5) - .5) * 6.4%),0) scale(calc(1.07 - var(--p,.5) * .07));
}

/* Заголовок первого экрана: появление строк.
   Телефона и кнопок это не касается — они на месте с первого кадра. */
.js:not(.rm) .split .ln__i{
  transform:translate3d(0,105%,0);
  animation:line-up .85s var(--ease) forwards;
}
.js:not(.rm) .split .ln:nth-child(1) .ln__i{animation-delay:.04s}
.js:not(.rm) .split .ln:nth-child(2) .ln__i{animation-delay:.11s}
.js:not(.rm) .split .ln:nth-child(3) .ln__i{animation-delay:.18s}
.js:not(.rm) .split .ln:nth-child(4) .ln__i{animation-delay:.25s}
@keyframes line-up{to{transform:translate3d(0,0,0)}}

/* --------------------------------------------------------------- 07 СЕКЦИИ */
.sec{padding-block:var(--sec-pad);position:relative}
.sec+.sec{border-top:1px solid var(--line-2)}

.sec__head{max-width:60ch;margin-bottom:clamp(36px,6vw,72px);min-width:0}
.sec__num{
  font-family:'Manrope',sans-serif;font-weight:700;
  font-size:12px;letter-spacing:.18em;
  color:var(--accent);
  margin-bottom:clamp(14px,2.4vw,20px);
  font-variant-numeric:tabular-nums;
}
.sec__title{
  font-family:'Manrope',sans-serif;font-weight:800;
  letter-spacing:-.032em;line-height:1.02;
  font-size:clamp(28px,6.4vw,58px);
  overflow-wrap:break-word;
}
.sec__lead{
  margin-top:clamp(14px,2.4vw,22px);
  color:var(--muted);
  font-size:clamp(15px,2.6vw,18px);
  line-height:1.62;
  max-width:52ch;
}

/* ---------------------------------------------------------- 08 КАЛЬКУЛЯТОР */
.calc{
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(20px,3vw,32px);
  align-items:start;
}
.calc__form{
  min-width:0;
  display:grid;
  gap:clamp(24px,3.4vw,34px);
  padding:clamp(20px,3.4vw,34px);
  border:1px solid var(--line-2);
  border-radius:var(--r);
  background:var(--ink-2);
}

.fld{min-width:0}
.fld__lbl{
  display:block;
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted-2);
  margin-bottom:14px;
}
.fld__hint{margin-top:12px;font-size:13px;line-height:1.5;color:var(--muted-2);max-width:46ch}

.chips{display:flex;flex-wrap:wrap;gap:9px;min-width:0}
/* position:relative обязателен: иначе скрытый radio уезжает к ближайшему
   позиционированному предку и клавиатурный фокус прокручивает страницу не туда */
.chip{position:relative;min-width:0;max-width:100%}
.chip input{
  position:absolute;top:50%;left:50%;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
}
.chip span{
  display:block;
  padding:11px 17px;
  border:1px solid var(--line);border-radius:100px;
  font-size:14px;line-height:1.3;color:var(--muted);
  cursor:pointer;
  overflow-wrap:break-word;
  transition:border-color .3s var(--ease),color .3s var(--ease),
             background-color .3s var(--ease),transform .4s var(--ease);
}
.chip span:hover{color:var(--paper);border-color:rgba(244,242,237,.3)}
.chip input:checked+span{
  background:var(--accent);border-color:var(--accent);color:#14120E;font-weight:600;
}
.chip input:focus-visible+span{outline:2px solid var(--accent-2);outline-offset:3px}

.fld--dist{overflow:hidden}
.fld--dist:not([hidden]){animation:field-in .5s var(--ease) both}
@keyframes field-in{
  from{opacity:0;transform:translate3d(0,-10px,0)}
  to{opacity:1;transform:none}
}
.inp{
  width:100%;min-width:0;max-width:280px;
  height:56px;padding:0 18px;
  background:var(--ink-3);
  border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:'Manrope',sans-serif;font-weight:700;font-size:18px;
  font-variant-numeric:tabular-nums;
  transition:border-color .3s var(--ease);
  appearance:textfield;
  -moz-appearance:textfield;
}
.inp::-webkit-outer-spin-button,.inp::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.inp:focus{border-color:var(--accent);outline:none}

.calc__out{
  display:block;min-width:0;
  padding:clamp(22px,3.6vw,38px);
  border:1px solid var(--accent-dim);
  border-radius:var(--r);
  background:
    radial-gradient(120% 100% at 100% 0%,rgba(211,178,122,.10) 0%,rgba(211,178,122,0) 58%),
    var(--ink-2);
}
.calc__label{
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted-2);
}
.calc__price{
  display:flex;align-items:baseline;flex-wrap:wrap;gap:.16em;
  min-width:0;
  margin-top:14px;
  font-family:'Manrope',sans-serif;font-weight:800;
  letter-spacing:-.045em;line-height:1;
  font-size:clamp(38px,9vw,74px);
  font-variant-numeric:tabular-nums;
  overflow-wrap:break-word;
}
.calc__from{font-size:.34em;font-weight:700;letter-spacing:-.01em;color:var(--muted-2);align-self:center}
.calc__num{color:var(--paper);min-width:0}
.calc__cur{font-size:.5em;color:var(--accent)}
.calc__price.is-call{font-size:clamp(26px,5.6vw,44px)}
.calc__price.is-call .calc__num{color:var(--accent)}

.calc__note{
  margin-top:18px;
  font-size:14px;line-height:1.6;color:var(--muted);
  max-width:44ch;
}
.btns--calc{margin-top:clamp(20px,3vw,26px)}
/* min-width сбрасываем: в узкой колонке результата две кнопки должны стоять
   в ряд, а не переноситься из-за десктопного min-width:210px */
.btns--calc .btn{flex:1 1 140px;min-width:0;min-height:52px;font-size:15px}

.prices{
  display:grid;
  grid-template-columns:1fr;
  gap:1px;
  margin-top:clamp(20px,3vw,32px);
  background:var(--line-2);
  border:1px solid var(--line-2);
  border-radius:var(--r);
  overflow:hidden;
}
.prices li{
  min-width:0;
  padding:clamp(20px,3vw,30px);
  background:var(--ink);
  display:flex;flex-direction:column;gap:8px;
}
.prices b{
  font-family:'Manrope',sans-serif;font-weight:800;
  font-size:clamp(22px,4.4vw,30px);letter-spacing:-.03em;
  color:var(--accent);
  font-variant-numeric:tabular-nums;
}
.prices span{font-size:14px;color:var(--muted)}

@media (min-width:760px){
  .prices{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (min-width:1000px){
  .calc{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
  .calc__out{position:sticky;top:88px}
}

/* ------------------------------------------------------ 09 КАРТОЧКИ УСЛУГ */
.cards{
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(16px,2.4vw,24px);
}
.card{
  min-width:0;
  display:flex;flex-direction:column;
  border:1px solid var(--line-2);
  border-radius:var(--r);
  overflow:hidden;
  background:var(--ink-2);
  transition:border-color .5s var(--ease),background-color .5s var(--ease);
}
.card:hover{border-color:var(--line);background:var(--ink-3)}
.card__media{aspect-ratio:16/10;overflow:hidden;background:var(--ink-3)}
.card__media img{
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.001);
  transition:transform 1.1s var(--ease);
}
.card:hover .card__media img{transform:scale(1.05)}
.card__body{padding:clamp(20px,3vw,30px);min-width:0;display:flex;flex-direction:column;gap:12px;flex:1 1 auto}
.card__title{
  font-family:'Manrope',sans-serif;font-weight:800;
  font-size:clamp(19px,3.2vw,24px);letter-spacing:-.025em;line-height:1.15;
}
.card__text{color:var(--muted);font-size:15px;line-height:1.62;min-width:0}
.card__meta{
  margin-top:auto;padding-top:8px;
  font-size:13px;letter-spacing:.02em;color:var(--accent);
}
@media (min-width:760px){ .cards{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (min-width:1080px){ .cards{grid-template-columns:repeat(3,minmax(0,1fr))} }

/* -------------------------------------------------------- 10 «ПОЧЕМУ МЫ» */
.why{display:grid;grid-template-columns:1fr;gap:clamp(28px,4.6vw,56px);align-items:start}
.why__media{
  min-width:0;
  border-radius:var(--r);
  clip-path:inset(0 round var(--r));   /* см. комментарий у .hero__media */
  background:var(--ink-2);
  position:relative;
}
.why__media img{width:100%;aspect-ratio:16/10;object-fit:cover;will-change:transform}
.why__media figcaption{
  padding:16px clamp(16px,2.4vw,22px);
  font-size:13.5px;color:var(--muted);
  border-top:1px solid var(--line-2);
}
/* Волосяные линии — бордерами на самих пунктах, а не фоном контейнера сквозь
   gap:1px. Пункты появляются по одному через opacity, и просвечивающий фон
   контейнера выглядел бы как светлая полоса на месте ещё не показанного пункта. */
.why__list{display:grid;min-width:0}
.why__list li{min-width:0;padding:clamp(20px,3vw,28px) 0;border-top:1px solid var(--line-2)}
.why__list li:last-child{border-bottom:1px solid var(--line-2)}
.why__list h3{
  font-family:'Manrope',sans-serif;font-weight:800;
  font-size:clamp(17px,2.8vw,21px);letter-spacing:-.022em;
  margin-bottom:9px;
}
.why__list p{color:var(--muted);font-size:15px;line-height:1.62;max-width:56ch}
@media (min-width:1000px){
  .why{grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr)}
  .why__media{position:sticky;top:96px}
}

/* -------------------------------------------------------------- 11 ШАГИ */
.steps{display:grid;grid-template-columns:1fr;
  border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden}
.step{min-width:0;background:var(--ink);padding:clamp(24px,3.6vw,38px);
  display:flex;flex-direction:column;gap:10px;
  border-top:1px solid var(--line-2)}   /* см. комментарий у .why__list */
.step:first-child{border-top:0}
.step__n{
  font-family:'Manrope',sans-serif;font-weight:800;
  font-size:clamp(30px,5.4vw,46px);letter-spacing:-.04em;line-height:1;
  color:rgba(244,242,237,.10);
  margin-bottom:6px;
}
.step__t{font-family:'Manrope',sans-serif;font-weight:800;font-size:clamp(18px,3vw,22px);letter-spacing:-.022em}
.step__d{color:var(--muted);font-size:14.5px;line-height:1.62;min-width:0}
@media (min-width:700px){
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .step:nth-child(-n+2){border-top:0}
  .step:nth-child(2n){border-left:1px solid var(--line-2)}
}
@media (min-width:1080px){
  .steps{grid-template-columns:repeat(4,minmax(0,1fr))}
  .step{border-top:0}
  .step:not(:first-child){border-left:1px solid var(--line-2)}
}

/* -------------------------------------------------------- 12 ЗОНА РАБОТЫ */
.area{display:grid;grid-template-columns:1fr;gap:clamp(28px,4.6vw,56px);align-items:start}
.area__list{display:grid;gap:clamp(22px,3vw,30px);min-width:0}
.area__list li{min-width:0;padding-left:20px;border-left:1px solid var(--line)}
.area__list h3{
  font-family:'Manrope',sans-serif;font-weight:800;
  font-size:clamp(17px,2.8vw,21px);letter-spacing:-.022em;margin-bottom:8px;
}
.area__list p{color:var(--muted);font-size:15px;line-height:1.62;max-width:52ch}
.area__media{min-width:0;border-radius:var(--r);clip-path:inset(0 round var(--r));background:var(--ink-2)}
.area__media img{width:100%;aspect-ratio:16/9;object-fit:cover;will-change:transform}
@media (min-width:1000px){
  .area{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
  .area__media{position:sticky;top:96px}
}

/* --------------------------------------------------------------- 13 FAQ */
.faq{display:grid}
.faq__i{min-width:0;background:var(--ink);border-top:1px solid var(--line-2)}
.faq__i:last-child{border-bottom:1px solid var(--line-2)}
.faq__i summary{
  display:flex;align-items:flex-start;gap:16px;
  min-width:0;
  padding:clamp(20px,3vw,26px) 0;
  cursor:pointer;
  list-style:none;
  font-family:'Manrope',sans-serif;font-weight:700;
  font-size:clamp(16px,2.8vw,20px);letter-spacing:-.02em;line-height:1.3;
  transition:color .3s var(--ease);
}
.faq__i summary::-webkit-details-marker{display:none}
.faq__i summary span{min-width:0;flex:1 1 auto;overflow-wrap:break-word}
.faq__i summary::after{
  content:"";flex:none;
  width:13px;height:13px;margin-top:.35em;
  border-right:1.6px solid var(--accent);border-bottom:1.6px solid var(--accent);
  transform:rotate(45deg);
  transition:transform .45s var(--ease);
}
.faq__i[open] summary::after{transform:rotate(-135deg)}
.faq__i summary:hover{color:var(--accent)}
.faq__i p{
  padding-bottom:clamp(20px,3vw,28px);
  padding-right:29px;
  color:var(--muted);font-size:15px;line-height:1.65;max-width:74ch;min-width:0;
}

/* ---------------------------------------------------------- 14 КОНТАКТЫ */
.sec--contacts{padding-bottom:clamp(56px,9vw,120px)}
.cta{min-width:0;max-width:80ch}
.cta__title{
  font-family:'Manrope',sans-serif;font-weight:800;
  letter-spacing:-.04em;line-height:.99;
  font-size:clamp(32px,8vw,72px);
  margin-top:clamp(12px,2vw,18px);
  overflow-wrap:break-word;
}
.cta__lead{
  margin-top:clamp(14px,2.4vw,22px);
  color:var(--muted);font-size:clamp(15px,2.6vw,18px);line-height:1.62;max-width:46ch;
}
.telbig--cta{margin-top:clamp(26px,4vw,40px)}
.btns--cta{max-width:560px}

/* Разделители здесь именно бордерами, а не фоном сквозь gap:
   на две колонки колонка-разрыв широкая, и фоновая полоса превратилась бы
   в серую вертикальную плашку посреди блока. */
.facts{
  display:grid;grid-template-columns:1fr;
  margin-top:clamp(34px,5vw,56px);
}
.facts>div{
  min-width:0;
  padding:clamp(18px,2.6vw,24px) 0;
  border-top:1px solid var(--line-2);
}
.facts>div:last-child{border-bottom:1px solid var(--line-2)}
.facts dt{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);margin-bottom:8px}
.facts dd{font-size:15.5px;line-height:1.55;color:var(--paper);min-width:0;overflow-wrap:break-word}
.facts dd a{border-bottom:1px solid var(--accent-dim);transition:border-color .3s var(--ease)}
.facts dd a:hover{border-bottom-color:var(--accent)}
@media (min-width:760px){
  .facts{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(24px,4vw,60px)}
  .facts>div:nth-last-child(-n+2){border-bottom:1px solid var(--line-2)}
}

/* ------------------------------------------------------------- 15 ПОДВАЛ */
.ftr{border-top:1px solid var(--line-2);padding-block:clamp(34px,5vw,54px)}
.ftr__in{display:grid;gap:14px;min-width:0}
.ftr__brand{font-family:'Manrope',sans-serif;font-weight:800;letter-spacing:-.02em;font-size:15px}
.ftr__meta{color:var(--muted-2);font-size:13.5px;line-height:1.6;max-width:66ch;min-width:0}
.ftr__links{display:flex;flex-wrap:wrap;gap:18px;min-width:0;font-size:14px;color:var(--muted)}
.ftr__links a{transition:color .3s var(--ease)}
.ftr__links a:hover{color:var(--accent)}

/* ------------------------------------------------- 16 ЛИПКАЯ ПАНЕЛЬ (моб.) */
.dock{display:none}
@media (max-width:899px){
  :root{--dock-h:calc(74px + env(safe-area-inset-bottom,0px))}
  .dock{
    position:fixed;left:0;right:0;bottom:0;z-index:80;
    display:flex;gap:9px;
    padding:10px clamp(12px,4vw,20px) calc(10px + env(safe-area-inset-bottom,0px));
    background:rgba(12,13,15,.86);
    backdrop-filter:blur(16px) saturate(150%);
    -webkit-backdrop-filter:blur(16px) saturate(150%);
    border-top:1px solid var(--line-2);
  }
  .dock__btn{
    flex:1 1 0;min-width:0;
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    min-height:54px;padding:0 12px;
    border-radius:100px;
    font-family:'Manrope',sans-serif;font-weight:700;font-size:15px;letter-spacing:-.01em;
    white-space:nowrap;
  }
  .dock__btn--call{background:var(--accent);color:#14120E}
  .dock__btn--tg{background:rgba(244,242,237,.06);color:var(--paper);border:1px solid var(--line)}
}

/* --------------------------------------------- 17 ДОСТУПНОСТЬ / МОБИЛЬНЫЕ */
/* Узкие экраны: воздух режем, чтобы номер телефона был виден без прокрутки.
   Идёт после блока первого экрана — иначе clamp-отступы перекрыли бы эти. */
@media (max-width:400px){
  .hero{padding-block:18px 40px}
  .eyebrow{margin-bottom:14px;font-size:11px;letter-spacing:.1em}
  .hero__lead{margin-top:14px;font-size:15px;line-height:1.55}
  .hero__cta{margin-top:20px}
  .telbig__sub{margin-top:6px;font-size:12.5px}
  .badge{margin-top:16px}
}

/* Касание — значит, никакого hover и никакой реакции на курсор. */
@media (hover:none),(pointer:coarse){
  .hero__img{transform:scale(1.06)}
  .card:hover .card__media img{transform:scale(1.001)}
}
/* На узких экранах движение легче: меньше ход, меньше работы композитору */
@media (max-width:700px){
  @keyframes hero-parallax{
    from{transform:translate3d(0,-2%,0) scale(1.05)}
    to{transform:translate3d(0,2%,0) scale(1)}
  }
  @keyframes media-parallax{
    from{transform:translate3d(0,-1.6%,0) scale(1.05)}
    to{transform:translate3d(0,1.6%,0) scale(1.01)}
  }
  @keyframes reveal-in{
    from{opacity:0;transform:translate3d(0,14px,0)}
    to{opacity:1;transform:none}
  }
  .js:not(.rm):not(.sda) .reveal{transform:translate3d(0,14px,0);transition-duration:.55s,.6s}
  .js:not(.rm):not(.sda) .reveal.is-in{transform:none}
  .why__media img,.area__media img,.hero__inner{will-change:auto}
}

/* Полное выключение движения. Сайт остаётся рабочим на 100%. */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    animation-timeline:auto !important;
    scroll-behavior:auto !important;
  }
  .reveal,.js .reveal{opacity:1 !important;transform:none !important}
  .split .ln__i,.js .split .ln__i{transform:none !important}
  .hero__inner{transform:none !important}
  .hero__img{transform:scale(1.02) !important}
  .why__media img,.area__media img{transform:none !important}
  .btn{--tx:0px;--ty:0px}
}

@media print{
  .dock,.hdr,.hero__media{display:none}
  body{background:#fff;color:#000}
}
