/* Движение на лендингах (.pt-bmk-landing / .pelltech-bmk-catalog): появление блоков при прокрутке,
   счётчики в показателях, линия этапов, раскрытие FAQ, прогресс в плавающей навигации.
   Классы pt-reveal/is-in ставит pelltech-landing-motion.js только элементам НИЖЕ первого экрана —
   без JS и при prefers-reduced-motion всё видно сразу; анимируются только opacity/transform (CLS = 0). */

.pt-reveal{opacity:0;transform:translateY(22px);will-change:opacity,transform}
.pt-reveal.is-in{opacity:1;transform:none;transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--pt-i,0) * 70ms);will-change:auto}
.pt-reveal--left{transform:translateX(-26px)}
.pt-reveal--right{transform:translateX(26px)}
.pt-reveal--scale{transform:scale(.96) translateY(10px)}

/* Этапы: точка «включается», номер окрашивается по очереди */
.bl-process li.pt-reveal::before{transform:scale(0);transition:transform .5s cubic-bezier(.2,.8,.2,1.5) calc(var(--pt-i,0) * 120ms + 250ms)}
.bl-process li.pt-reveal.is-in::before{transform:scale(1)}
.bl-process li.pt-reveal>span{color:#d7d9dc;transition:color .6s ease calc(var(--pt-i,0) * 120ms + 350ms)}
.bl-process li.pt-reveal.is-in>span{color:#c41e2e}

/* Нумерация в списке состава (01, 02…) появляется с задержкой после строки */
.bl-spec-list>div.pt-reveal::before{opacity:0;transform:translateX(-6px);transition:opacity .4s ease,transform .4s ease;transition-delay:calc(var(--pt-i,0) * 70ms + 250ms)}
.bl-spec-list>div.pt-reveal.is-in::before{opacity:1;transform:none}

/* Таблица моделей: строки приходят волной */
.bl-table tbody tr.pt-reveal{transform:translateY(10px)}
.bl-table tbody tr.pt-reveal.is-in{transition-duration:.45s,.5s}

/* Картинка первого экрана — медленный «наезд» (transform, LCP не задерживает) */
.bl-hero-image img{animation:pt-hero-zoom 7s cubic-bezier(.2,.6,.2,1) both}
@keyframes pt-hero-zoom{from{transform:scale(1.06)}to{transform:scale(1)}}

/* Показатели героя: цифры считаются от нуля (data-pt-count ставит JS, размеры на время счёта фиксирует он же) */

/* FAQ: плюс поворачивается в крестик, ответ выезжает (высоту анимирует JS) */
.bl-faq summary::after,.ps-faq summary::after{transition:transform .35s cubic-bezier(.2,.7,.2,1),color .2s}
.bl-faq details[open]>summary::after,.ps-faq details[open]>summary::after{content:'+';transform:rotate(45deg)}
.bl-faq details>summary:hover,.ps-faq details>summary:hover{color:#a81726}

/* Плавающая навигация по разделам: линия прогресса чтения лендинга */
.bl-page-nav{position:sticky}
.bl-page-nav::after{content:'';position:absolute;left:14px;right:14px;bottom:-1px;height:2px;border-radius:2px;background:#c41e2e;transform:scaleX(var(--pt-progress,0));transform-origin:left;opacity:0;transition:opacity .3s}
.bl-page-nav.is-floating::after{opacity:1}

/* Карточки и кнопки: лёгкий отклик на наведение (только устройства с курсором) */
@media(hover:hover){
  .pt-bmk-landing .bl-card,.pt-bmk-landing .bl-cat-card,.pt-bmk-landing .bl-range-brief,.pt-bmk-landing .bl-doc{transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s,border-color .2s}
  .pt-bmk-landing .bl-card:hover,.pt-bmk-landing .bl-cat-card:hover,.pt-bmk-landing .bl-doc:hover{transform:translateY(-3px);box-shadow:0 14px 30px #24262912}
  .pt-bmk-landing .bl-section--dark .bl-card:hover{box-shadow:0 14px 30px #00000055}
  .pt-bmk-button{transition:background .2s,color .2s,border-color .2s,transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s}
  .pt-bmk-button:hover{transform:translateY(-1px);box-shadow:0 8px 20px #c41e2e33}
  .pt-bmk-button--light:hover{box-shadow:0 8px 20px #24262914}
  .pt-bmk-button>span,.bl-hero-actions>a>span{display:inline-block;transition:transform .25s cubic-bezier(.2,.7,.2,1)}
  .pt-bmk-button:hover>span,.bl-hero-actions>a:hover>span{transform:translate(2px,-2px)}
  .pt-bmk-ranges a{transition:transform .25s cubic-bezier(.2,.7,.2,1),background .2s,color .2s,border-color .2s,box-shadow .25s}
  .pt-bmk-ranges a:hover{transform:translateY(-2px);box-shadow:0 8px 18px #24262914}
  .bl-table tbody tr{transition:background .2s}
  .bl-table tbody tr:hover th a{color:#c41e2e}
}

/* Тёмная полоса: тёплое свечение в углу, медленно «дышит» */
.pt-bmk-landing .bl-section--dark{background-image:radial-gradient(720px 360px at 85% 0%,#c41e2e24,transparent 70%);background-repeat:no-repeat;background-size:200% 100%;background-position:100% 0;animation:pt-dark-glow 16s ease-in-out infinite alternate}
@keyframes pt-dark-glow{from{background-position:100% 0}to{background-position:0 0}}

/* Калькулятор: результат вспыхивает при пересчёте */
.bl-calc-result output.is-pulse,.pt-calc-result .is-pulse{animation:pt-pulse .45s cubic-bezier(.2,.7,.2,1)}
@keyframes pt-pulse{0%{transform:scale(1)}35%{transform:scale(1.045);color:#c41e2e}100%{transform:scale(1)}}
.bl-calc-result output{display:block;transform-origin:left center}

@media(prefers-reduced-motion:reduce){
  .pt-reveal{opacity:1;transform:none;transition:none}
  .bl-hero-image img{animation:none}
  .pt-bmk-landing .bl-section--dark{animation:none}
  .bl-process li.pt-reveal::before{transform:none;transition:none}
  .bl-process li.pt-reveal>span{color:#b7bbc0;transition:none}
  .bl-faq summary::after,.ps-faq summary::after{transition:none}
}
@media print{.pt-reveal{opacity:1;transform:none}}
