/* ============================================================================
   Site FX — общие микровзаимодействия сайта (2026-07-22)
   Четыре фишки, единые на всех страницах:
     1) появление секций при скролле (fade-up)
     2) магнитные CTA + подъём карточек на hover
     3) живые цифры (count-up) — opt-in через [data-count-up] / .count-up
     4) липкая кнопка CTA внизу на мобиле (клон шапочной .cp-nav-cta)
   Логика — в /assets/site-fx.js. Всё выключается при prefers-reduced-motion.
   Класс fx-* вешает JS, поэтому без JS контент виден и кликается как обычно.
   ============================================================================ */

/* 1. Reveal секций */
.fx-reveal{opacity:0;transform:translateY(20px);transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1)}
.fx-reveal.fx-in{opacity:1;transform:none}

/* 2. Плавный возврат магнитной кнопки + подъём карточек (только там, где есть hover) */
.cp-nav-cta,[data-magnetic]{transition:transform .18s ease,background .12s ease,filter .12s ease}
@media(hover:hover) and (pointer:fine){
  .fx-lift{transition:transform .18s ease,box-shadow .18s ease}
  .fx-lift:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(21,24,28,.08)}
}

/* 4. Липкая кнопка CTA — только мобайл, появляется после того, как шапка ушла */
.fx-sticky-cta{display:none}
@media(max-width:760px){
  .fx-sticky-cta{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;justify-content:center;height:54px;padding:0 20px;background:var(--accent,#C8F03C);color:var(--accent-ink,#15181C);font-weight:700;font-size:17px;line-height:1;border-radius:14px;text-decoration:none;box-shadow:0 8px 24px rgba(21,24,28,.22);transform:translateY(150%);opacity:0;pointer-events:none;transition:transform .32s cubic-bezier(.22,.61,.36,1),opacity .32s ease}
  .fx-sticky-cta.fx-shown{transform:none;opacity:1;pointer-events:auto}
}

@media(prefers-reduced-motion:reduce){
  .fx-reveal{opacity:1!important;transform:none!important;transition:none}
}
