/* Тонериум — визуальные эффекты. Контент виден без JS: скрытие только при html.fx */
:root{--ease:cubic-bezier(.22,.8,.26,1)}

/* Появление блоков при прокрутке */
html.fx .fx-rv{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease) var(--d,0s),transform .7s var(--ease) var(--d,0s)}
html.fx .fx-rv.in{opacity:1;transform:none}

/* Шапка: тень при прокрутке */
.hdr{transition:box-shadow .3s,background-color .3s}
.hdr.sc{box-shadow:0 10px 30px -22px rgba(19,34,72,.55)}

/* CMYK-полоса: «пробег» при загрузке и живой блик */
.cmyk{position:relative;overflow:hidden}
html.fx .cmyk i{transform:scaleX(0);transform-origin:left;animation:cmyk-in .9s var(--ease) forwards}
html.fx .cmyk i:nth-child(2){animation-delay:.08s}html.fx .cmyk i:nth-child(3){animation-delay:.16s}html.fx .cmyk i:nth-child(4){animation-delay:.24s}
.cmyk::after{content:"";position:absolute;inset:0;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);transform:translateX(-120%);animation:cmyk-sh 6s 1.2s ease-in-out infinite}
@keyframes cmyk-in{to{transform:scaleX(1)}}
@keyframes cmyk-sh{0%{transform:translateX(-120%)}35%,100%{transform:translateX(420%)}}

/* Кнопки */
.btn{position:relative;overflow:hidden;isolation:isolate;transition:transform .22s var(--ease),box-shadow .22s var(--ease),background-color .2s,color .2s,border-color .2s}

.btn-a::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;z-index:-1;background:linear-gradient(100deg,transparent,rgba(255,255,255,.38),transparent);transform:skewX(-20deg);transition:left .6s var(--ease)}
.btn svg{transition:transform .25s var(--ease)}
.lnk svg{transition:transform .25s var(--ease)}
.btn .rip{position:absolute;border-radius:50%;pointer-events:none;background:currentColor;opacity:.25;transform:scale(0);animation:rip .6s ease-out forwards;z-index:-1}
@keyframes rip{to{transform:scale(1);opacity:0}}
/* Главная CTA мягко «дышит» */
.hero .btn-a{animation:breath 3.6s 2s ease-in-out infinite}
@keyframes breath{0%,100%{box-shadow:0 0 0 0 rgba(201,18,106,0)}50%{box-shadow:0 0 0 8px rgba(201,18,106,.12)}}

/* Карточки */
.card,.art-c,.rev,.svc>*{transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .2s}
.card img,.art-c .ph img{transition:transform .6s var(--ease)}

/* Hero */
html.fx .hero h1{animation:rise .9s var(--ease) both}
html.fx .hero .kicker{animation:rise .7s var(--ease) both}
html.fx .hero .lead{animation:rise .9s .12s var(--ease) both}
html.fx .hero .ctas,html.fx .hero .hero-dl{animation:rise .9s .22s var(--ease) both}
html.fx .hero .facts{animation:rise .9s .32s var(--ease) both}
html.fx .hero .crop{animation:fadein 1.1s .15s var(--ease) both}
.hero h1 em{position:relative;display:inline-block}
.hero h1 em::after{content:"";position:absolute;left:2%;right:2%;bottom:.04em;height:.09em;border-radius:3px;background:linear-gradient(90deg,var(--c),var(--m),var(--y));transform:scaleX(0);transform-origin:left;animation:line 1s .9s var(--ease) forwards}
html:not(.fx) .hero h1 em::after{transform:scaleX(1)}
.hero .crop{overflow:hidden}
.hero .crop img{animation:kb 18s ease-in-out infinite alternate}
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes fadein{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
@keyframes line{to{transform:scaleX(1)}}
@keyframes kb{from{transform:scale(1)}to{transform:scale(1.06) translate(-1%,-1%)}}

/* Онлайн-консультант: пульс */
.chat-fab{position:relative}
.chat-fab::before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 0 rgba(201,18,106,.5);animation:pulse 2.8s 3s infinite;pointer-events:none}
.chat.on .chat-fab::before{animation:none}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(201,18,106,.45)}70%{box-shadow:0 0 0 16px rgba(201,18,106,0)}100%{box-shadow:0 0 0 0 rgba(201,18,106,0)}}

/* Цена при смене комплектации */
.bump{animation:bump .45s var(--ease)}
@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.07);color:var(--m)}100%{transform:scale(1)}}
#pr-v{display:inline-block}

/* Ссылки навигации: подчёркивание */
.nav a{position:relative}
.nav a::after{content:"";position:absolute;left:10px;right:10px;bottom:4px;height:2px;background:var(--m);transform:scaleX(0);transition:transform .3s var(--ease);transform-origin:left}

/* Эффекты наведения — только для мыши (на сенсорных экранах сдвиг под пальцем мешает тапу) */
@media (hover:hover) and (pointer:fine){
.btn:hover{transform:translateY(-2px)}
.btn-a:hover{box-shadow:0 12px 24px -12px rgba(201,18,106,.7)}
.btn-o:hover{box-shadow:0 10px 22px -14px rgba(19,34,72,.6)}
.btn-a:hover::after{left:125%}
.btn:hover svg,.lnk:hover svg{transform:translateX(4px)}
.hero .btn-a:hover{animation:none}
.card:hover,.art-c:hover{transform:translateY(-5px);box-shadow:0 22px 40px -26px rgba(19,34,72,.55)}
.card:hover img,.art-c:hover .ph img{transform:scale(1.045)}
.svc>a:hover,.svc>div:hover{transform:translateY(-4px)}
.chat-fab{transition:transform .2s var(--ease)}.chat-fab:hover{transform:translateY(-2px) scale(1.03)}
.nav a:hover::after{transform:scaleX(1)}
.btn:active{transform:translateY(0) scale(.97);transition-duration:.08s}
}
/* Сенсорные экраны: лёгкий отклик без сдвига */
@media (hover:none),(pointer:coarse){.btn:active{opacity:.85}.hero .btn-a{animation:none}.btn-o:hover{background:transparent;color:var(--ink)}.btn-o:active{background:var(--ink);color:#fff}}

/* Уважение к настройке «уменьшить движение» */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html.fx .fx-rv{opacity:1;transform:none}
  html.fx .cmyk i{transform:none}
  .hero h1 em::after{transform:scaleX(1)}
}
