/* ============================================================
   IZBA · анимации кнопок сайта (izbalux.com)
   Префикс .izb-. Работает поверх текущей разметки главной:
   инлайн-стили кнопок сохраняются, там, где их нужно перебить
   на hover/active, стоит !important (инлайн сильнее каскада).
   :hover везде завёрнут в @media (hover:hover) — на тач-экранах
   эффекты наведения не «залипают». Класс .is-hover дублирует
   :hover и нужен для скриншотов/демо, в продакшене не мешает.
   ============================================================ */

:root{
  --izb-ink:rgb(28,28,31);
  --izb-g1:rgb(253,203,77);
  --izb-g2:rgb(253,190,31);
  --izb-gold:linear-gradient(135deg,rgb(253,203,77),rgb(253,190,31));
  --izb-cream:rgb(255,250,236);
  --izb-line:rgb(224,224,224);
  --izb-swift:cubic-bezier(.6,0,.2,1);
  --izb-spring:cubic-bezier(.3,1.5,.5,1);
}

/* ============================================================
   1. «Найти» — Звезда на шпиле
   Обёртка .izb-find получает классы фаз от JS (см. izba-buttons.js):
   is-idle · is-down · is-jelly · is-squash · is-up · is-busy · is-flip
   lit-1 · lit-2 · lit-3 · is-flare · is-land · is-soft · is-done · is-reset
   ============================================================ */
.izb-find{position:relative;flex:1 1 160px;display:flex}
.izb-find__btn{position:relative;z-index:1;flex:1;min-height:52px;transform-origin:50% 100%;transition:transform .11s ease}
.izb-find__bloom{position:absolute;inset:-8px;opacity:.7;transition:opacity .3s ease;pointer-events:none}
.izb-find__bloom::before{content:"";position:absolute;inset:0;border-radius:20px;background:radial-gradient(closest-side,rgba(253,190,31,.6),rgba(253,190,31,0));filter:blur(6px);animation:izbBloom 3.2s ease-in-out infinite}
.izb-find:not(.is-idle) .izb-find__bloom{opacity:1}
@media (hover:hover){
  .izb-find.is-idle:is(:hover,.is-hover) .izb-find__bloom{opacity:1}
  .izb-find.is-idle:is(:hover,.is-hover) .izb-find__btn{transform:translateY(-1px)}
  .izb-find.is-idle:is(:hover,.is-hover) .izb-find__mag{transform:rotate(-14deg) scale(1.06)}
}
.izb-find.is-idle.is-down .izb-find__btn{transform:scale(1.04,.9)}
.izb-find.is-jelly .izb-find__btn{animation:izbJelly .68s ease-in-out both}
.izb-find.is-soft .izb-find__btn{animation:izbJellySoft .52s ease-out both}

.izb-find__row{display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;transition:opacity .2s ease}
.izb-find__row--busy,.izb-find__row--done{position:absolute;inset:0;opacity:0}
.izb-find__row--busy{transition-duration:.22s}
.izb-find__row--done{transition-duration:.24s}
.izb-find:is(.is-busy,.is-done) .izb-find__row--idle{opacity:0}
.izb-find.is-busy .izb-find__row--busy,.izb-find.is-done .izb-find__row--done{opacity:1}
.izb-find__row--busy i{font-style:normal;animation:izbDot 1.2s ease-in-out infinite}
.izb-find__row--busy i:nth-of-type(2){animation-delay:.2s}
.izb-find__row--busy i:nth-of-type(3){animation-delay:.4s}

.izb-find__ico{position:relative;width:18px;height:18px;flex-shrink:0}
.izb-find__ico svg{position:absolute;inset:0}
.izb-find__mag{transition:opacity .2s ease,transform .32s cubic-bezier(.3,1.4,.5,1)}
.izb-find__istar{opacity:0;transform:translateY(0) rotate(-144deg) scale(.3);transition:opacity .2s ease,transform .42s cubic-bezier(.3,1.4,.5,1)}
.izb-find:is(.is-squash,.is-busy,.is-done) .izb-find__mag{opacity:0;transform:rotate(90deg) scale(.3)}
.izb-find.is-squash .izb-find__istar{opacity:1;transform:translateY(0) rotate(0) scale(1)}
.izb-find.is-busy .izb-find__istar{opacity:0;transform:translateY(-16px) rotate(72deg) scale(.5)}

/* корона над кнопкой: ярусы → фонарь → шпиль → звезда в венке */
.izb-find__crown{position:absolute;left:0;right:0;bottom:100%;height:120px;overflow:hidden;pointer-events:none}
.izb-find__rays{position:absolute;left:50%;bottom:26px;width:80px;height:80px;margin-left:-40px;opacity:0;transition:opacity .4s ease,transform .4s ease}
.izb-find__rays g{transform-origin:35px 35px;animation:izbSpin 9s linear infinite}
.izb-find.is-up .izb-find__rays{opacity:1}
.izb-find.is-flare .izb-find__rays{transform:scale(1.2)}

/* задержки по умолчанию = порядок опускания (звезда первой), в .is-up — порядок подъёма */
.izb-find__tier{position:absolute;background:var(--izb-gold);transition:transform .38s cubic-bezier(.3,1.3,.5,1)}
.izb-find__tier--1{left:27%;width:46%;bottom:0;height:13px;border-radius:6px 6px 0 0;transform:translateY(14px);transition-delay:.3s}
.izb-find__tier--2{left:38%;width:24%;bottom:13px;height:11px;border-radius:5px 5px 0 0;transform:translateY(25px);transition-delay:.22s}
.izb-find__tier--3{left:50%;width:16px;margin-left:-8px;bottom:24px;height:9px;border-radius:4px 4px 0 0;transform:translateY(34px);transition-delay:.15s}
.izb-find__spire{position:absolute;left:50%;width:5px;margin-left:-2.5px;bottom:33px;height:20px;background:linear-gradient(0deg,rgb(253,190,31),rgb(255,222,130));clip-path:polygon(50% 0,100% 100%,0 100%);transform-origin:50% 100%;transform:scaleY(0);transition:transform .26s ease-out .08s}
.izb-find__star{position:absolute;left:50%;bottom:48px;width:30px;height:30px;margin-left:-15px;perspective:120px;filter:drop-shadow(0 0 7px rgba(253,190,31,.9));opacity:0;transform:translateY(56px) scale(.3);transition:transform .56s var(--izb-spring) 0s,opacity .2s ease 0s}
.izb-find.is-up .izb-find__tier{transform:translateY(0)}
.izb-find.is-up .izb-find__tier--1{transition-delay:0s}
.izb-find.is-up .izb-find__tier--2{transition-delay:.08s}
.izb-find.is-up .izb-find__tier--3{transition-delay:.15s}
.izb-find.is-up .izb-find__spire{transform:scaleY(1);transition-delay:.22s}
.izb-find.is-up .izb-find__star{opacity:1;transform:translateY(0) scale(1);transition-delay:.29s,.29s}
.izb-find__star-flip,.izb-find__star-flare{display:block;width:30px;height:30px}
.izb-find.is-flip .izb-find__star-flip{animation:izbFlip .76s cubic-bezier(.3,.7,.3,1) both}
.izb-find.is-land .izb-find__star-flip{animation:izbFlip .56s ease-in reverse both}
.izb-find.is-flare .izb-find__star-flare{animation:izbFlare .62s ease-out both}

/* окна ярусов: тёмная полоса + светлая, которая включается этажами */
.izb-find__win{position:absolute;left:8px;right:8px;top:4px;height:4px;background:repeating-linear-gradient(90deg,rgba(28,28,31,.3) 0 2px,transparent 2px 6px)}
.izb-find__win--lit{background:repeating-linear-gradient(90deg,rgb(255,247,222) 0 2px,transparent 2px 6px);filter:drop-shadow(0 0 2px rgba(255,236,170,.9));opacity:0;transition:opacity .26s ease}
.izb-find__tier--2 .izb-find__win{left:5px;right:5px;top:3px}
.izb-find__tier--3 .izb-find__win{left:4px;right:4px;top:3px;height:3px;background:repeating-linear-gradient(90deg,rgb(255,247,222) 0 2px,transparent 2px 4px);filter:none}
.izb-find.lit-1 .izb-find__tier--1 .izb-find__win--lit,
.izb-find.lit-2 .izb-find__tier--2 .izb-find__win--lit,
.izb-find.lit-3 .izb-find__tier--3 .izb-find__win--lit{opacity:1}

/* искры: направление задаётся --dx/--dy на каждой */
.izb-find__spark{position:absolute;left:50%;bottom:64px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:rgb(255,224,130);opacity:0}
.izb-find__spark--s{width:3px;height:3px;margin-left:-1.5px}
.izb-find.is-flare .izb-find__spark{animation:izbSpark .7s cubic-bezier(.2,.7,.3,1) both}

/* ============================================================
   2. Вкладки героя — перетекающая плашка
   ============================================================ */
.izb-tabs{position:relative}
.izb-tabs__pill{position:absolute;left:4px;top:4px;right:auto;bottom:auto;border-radius:8px;background:#fff;box-shadow:0 6px 16px -8px rgba(0,0,0,.45);opacity:0;pointer-events:none;
  transition:left .44s var(--izb-swift) var(--izb-dl,0s),right .44s var(--izb-swift) var(--izb-dr,0s),top .3s ease,bottom .3s ease,opacity .2s ease}
.izb-tabs.is-ready .izb-tabs__pill{opacity:1}
.izb-tabs.is-instant .izb-tabs__pill{transition:none}
.izb-tabs .hero-tab{position:relative;z-index:1;display:inline-grid;background:transparent!important;color:#fff!important;font-weight:500!important;transition:color .22s ease,background-color .15s ease!important}
.izb-tabs .hero-tab.is-active{color:var(--izb-ink)!important;font-weight:600!important}
/* невидимая жирная копия подписи держит ширину: вкладка не «прыгает» при смене веса */
.izb-tabs .hero-tab::after{content:attr(data-label);font-weight:600;height:0;visibility:hidden;overflow:hidden}
@media (hover:hover){.izb-tabs .hero-tab:not(.is-active):is(:hover,.is-hover){background:rgba(255,255,255,.14)!important}}

/* ============================================================
   3. Карточка: «В избранное», стрелки галереи, «Забронировать»
   ============================================================ */
.fav-btn{transition:transform .16s ease}
@media (hover:hover){.fav-btn:is(:hover,.is-hover){transform:scale(1.08)}}
.fav-btn:active{transform:scale(.9)}
.izb-fav__ico{position:relative;width:18px;height:18px;display:block}
.izb-fav__ico svg{position:absolute;left:0;bottom:0;width:18px;height:18px;overflow:visible}
.izb-fav__fill{position:absolute;left:0;right:0;bottom:0;height:0;overflow:hidden;transition:height .3s ease}
.fav-btn.is-fav .izb-fav__fill{height:18px}
.fav-btn.is-fav .izb-fav__ico{animation:izbHeart .56s ease-out both}
.izb-fav__ring{position:absolute;inset:0;border-radius:50%;border:2px solid var(--izb-g2);opacity:0;pointer-events:none}
.fav-btn.is-fav .izb-fav__ring{animation:izbRing .56s ease-out both}
.izb-fav__spark{position:absolute;left:50%;top:50%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:var(--izb-g2);opacity:0;pointer-events:none}
.fav-btn.is-fav .izb-fav__spark{animation:izbSpark .62s cubic-bezier(.2,.7,.3,1) both}
.fav-btn.is-static,.fav-btn.is-static *{animation:none!important}

.apt-nav{transition:transform .16s ease,box-shadow .16s ease,opacity .15s ease}
@media (hover:hover){.apt-nav:is(:hover,.is-hover){transform:translateY(-50%) scale(1.08)!important;box-shadow:0 6px 16px rgba(0,0,0,.28)!important}}
.apt-nav:active{transform:translateY(-50%) scale(.9)!important}
.izb-nav__ico{position:relative;width:14px;height:14px;display:flex}
.izb-nav__ico svg{position:absolute;inset:0}
.izb-nav__ghost{opacity:0}
.apt-next.is-nudge .izb-nav__main{animation:izbNudgeR .38s ease-out both}
.apt-next.is-nudge .izb-nav__ghost{animation:izbGhostR .42s ease-out both}
.apt-prev.is-nudge .izb-nav__main{animation:izbNudgeL .38s ease-out both}
.apt-prev.is-nudge .izb-nav__ghost{animation:izbGhostL .42s ease-out both}

.izb-book{position:relative;overflow:hidden;display:flex!important;align-items:center;justify-content:center;transition:border-color .2s ease,background-color .2s ease}
.izb-book__fill{position:absolute;inset:0;background:var(--izb-gold);transform:scaleX(0);transform-origin:left center;transition:transform .34s var(--izb-swift)}
.izb-book.is-out .izb-book__fill{transform-origin:right center}
.izb-book__in{position:relative;display:flex;align-items:center}
.izb-book__key{display:flex;width:0;opacity:0;transition:width .24s cubic-bezier(.3,1.3,.5,1),opacity .2s ease}
.izb-book__key svg{flex-shrink:0;transform-origin:4px 6px;transform:rotate(-35deg) rotateX(0deg);transition:transform .2s ease}
@media (hover:hover){
  .izb-book:is(:hover,.is-hover){border-color:var(--izb-g2)!important;background-color:var(--izb-cream)!important}
  .izb-book:is(:hover,.is-hover) .izb-book__key{width:26px;opacity:1}
  .izb-book:is(:hover,.is-hover) .izb-book__key svg{transform:rotate(0deg) rotateX(0deg)}
}
.izb-book:is(.is-turn,.is-fill){border-color:var(--izb-g2)!important;background-color:#fff!important}
.izb-book:is(.is-turn,.is-fill) .izb-book__key{width:26px;opacity:1}
.izb-book:is(.is-turn,.is-fill) .izb-book__key svg{transform:rotate(0deg) rotateX(80deg)}
.izb-book.is-fill .izb-book__fill{transform:scaleX(1)}

/* ============================================================
   4. «Показать все варианты» и «Все акции»
   ============================================================ */
.izb-more{position:relative;overflow:hidden;transition:border-color .2s ease}
.izb-more__fill{position:absolute;left:0;top:0;bottom:0;width:0;background:linear-gradient(90deg,rgba(253,203,77,.35),rgba(253,190,31,.6));opacity:0;transition:width .09s linear,opacity .3s ease}
.izb-more:is(.is-loading,.is-done) .izb-more__fill{opacity:1}
.izb-more__stack{position:relative;display:grid;justify-items:center}
.izb-more__row{grid-area:1/1;display:flex;align-items:center;gap:8px;transition:opacity .2s ease,transform .2s ease}
.izb-more__row--idle{gap:0}
.izb-more__row--busy{font-variant-numeric:tabular-nums;opacity:0;transform:translateY(12px)}
.izb-more__row--done{opacity:0;transform:translateY(12px)}
.izb-more__ico{display:inline-block;width:22px;height:19px;vertical-align:-4px;background:url(/local/templates/izba/css/izba-loader.svg) center/contain no-repeat}
.izb-more:is(.is-loading,.is-done) .izb-more__row--idle{opacity:0;transform:translateY(-12px)}
.izb-more.is-loading .izb-more__row--busy{opacity:1;transform:translateY(0)}
.izb-more.is-done .izb-more__row--busy{opacity:0;transform:translateY(-12px)}
.izb-more.is-done .izb-more__row--done{opacity:1;transform:translateY(0)}
.izb-more__arrow{display:flex;justify-content:flex-end;width:0;overflow:hidden;transition:width .22s cubic-bezier(.3,1.3,.5,1)}
.izb-more__arrow svg{flex-shrink:0}
.izb-more:is(.is-loading,.is-done){border-color:var(--izb-ink)!important}
@media (hover:hover){
  .izb-more:is(:hover,.is-hover){border-color:var(--izb-ink)!important}
  .izb-more:not(.is-loading):not(.is-done):is(:hover,.is-hover) .izb-more__arrow{width:24px}
  .izb-more:is(:hover,.is-hover) .izb-more__arrow svg{animation:izbBob .9s ease-in-out infinite}
}

.izb-promo{display:flex!important;align-items:center;justify-content:center;transition:border-color .2s ease,transform .12s ease}
.izb-promo__in{display:flex;align-items:center}
.izb-promo__tag{display:flex;justify-content:flex-end;width:0;overflow:hidden;transition:width .24s cubic-bezier(.3,1.3,.5,1)}
.izb-promo__tag svg{flex-shrink:0;transform-origin:11.3px 4.7px}
@media (hover:hover){
  .izb-promo:is(:hover,.is-hover){border-color:var(--izb-g2)!important}
  .izb-promo:is(:hover,.is-hover) .izb-promo__tag{width:26px}
  .izb-promo:is(:hover,.is-hover) .izb-promo__tag svg{animation:izbSwing .9s ease-out both}
}
.izb-promo:active{transform:scale(.98)}

/* ============================================================
   5. «Подобрать апартаменты» — латунный блик
   ============================================================ */
.izb-cta{position:relative;overflow:hidden;display:inline-flex!important;align-items:center;transition:transform .16s cubic-bezier(.3,1.6,.5,1),box-shadow .2s ease}
.izb-cta__shine{position:absolute;top:-20%;bottom:-20%;left:0;width:40%;background:linear-gradient(100deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.7) 50%,rgba(255,255,255,0) 100%);transform:translateX(-160%) skewX(-20deg);pointer-events:none}
.izb-cta__label{position:relative}
.izb-cta__arrow{position:relative;display:flex;justify-content:flex-end;width:0;overflow:hidden;transition:width .24s cubic-bezier(.3,1.3,.5,1)}
.izb-cta__arrow svg{flex-shrink:0}
@media (hover:hover){
  .izb-cta:is(:hover,.is-hover){transform:translateY(-2px);box-shadow:0 14px 26px -12px rgba(170,115,0,.75)}
  .izb-cta:is(:hover,.is-hover) .izb-cta__shine{animation:izbShine .9s ease-in-out both}
  .izb-cta:is(:hover,.is-hover) .izb-cta__arrow{width:26px}
}
.izb-cta:active{transform:translateY(1px) scale(.98);box-shadow:0 2px 6px -3px rgba(150,100,0,.5)}

/* ============================================================
   6. Шапка: меню, язык, круглые иконки, телефон, соцсети
   ============================================================ */
.izb-burger{position:relative}
.izb-burger>span{transition:width .28s cubic-bezier(.3,1.4,.5,1),transform .3s cubic-bezier(.3,1.2,.5,1),opacity .16s ease,background-color .2s ease}
.izb-burger>span:nth-of-type(2){transition-delay:.04s,0s,0s,0s}
.izb-burger__spire{position:absolute;left:50%;top:6px;width:2px;height:6px;margin-left:-1px;border-radius:1px;background:var(--izb-g1);transform-origin:50% 100%;transform:scaleY(0);transition:transform .22s ease .12s}
@media (hover:hover){
  .izb-burger:not(.is-open):is(:hover,.is-hover)>span{background:var(--izb-g1)!important}
  .izb-burger:not(.is-open):is(:hover,.is-hover)>span:nth-of-type(1){width:8px!important}
  .izb-burger:not(.is-open):is(:hover,.is-hover)>span:nth-of-type(2){width:14px!important}
  .izb-burger:not(.is-open):is(:hover,.is-hover) .izb-burger__spire{transform:scaleY(1)}
}
.izb-burger.is-open>span:nth-of-type(1){transform:translateY(7px) rotate(45deg)}
.izb-burger.is-open>span:nth-of-type(2){opacity:0}
.izb-burger.is-open>span:nth-of-type(3){transform:translateY(-7px) rotate(-45deg)}

.izb-lang{transition:background-color .2s ease}
.izb-lang>span:first-child{transform-origin:0 50%}
@media (hover:hover){
  .izb-lang:is(:hover,.is-hover){background:rgba(255,255,255,.18)!important}
  .izb-lang:is(:hover,.is-hover)>span:first-child{animation:izbWave .9s ease-in-out both}
}

.izb-ico{transition:background-color .2s ease,box-shadow .2s ease,transform .12s ease}
.izb-ico svg{transition:stroke .2s ease,transform .32s cubic-bezier(.3,1.5,.5,1)}
.izb-gift__lid{transform-box:view-box;transform-origin:2.5px 11px;transition:transform .34s cubic-bezier(.3,1.6,.5,1)}
.izb-gift__spark{transform-box:fill-box;transform-origin:center;opacity:0;transform:translateY(3px) scale(.2);transition:opacity .2s ease .12s,transform .36s cubic-bezier(.3,1.6,.5,1) .12s}
@media (hover:hover){
  .izb-ico:is(:hover,.is-hover){background:rgba(253,190,31,.16)!important;box-shadow:inset 0 0 0 1.5px rgba(253,203,77,.9)}
  .izb-ico:is(:hover,.is-hover) svg{stroke:var(--izb-g1)}
  .izb-ico--search:is(:hover,.is-hover) svg{transform:rotate(-14deg) scale(1.1)}
  .izb-ico--gift:is(:hover,.is-hover) .izb-gift__lid{transform:translate(-.5px,-3px) rotate(-14deg)}
  .izb-ico--gift:is(:hover,.is-hover) .izb-gift__spark{opacity:1;transform:translateY(0) scale(1)}
  .izb-ico--prof:is(:hover,.is-hover) .izb-prof__head{animation:izbNod .7s ease-in-out both}
}
.izb-ico:active{transform:scale(.92)}

.izb-phone__num{position:relative;transition:color .2s ease}
.izb-phone__num::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1.5px;background:var(--izb-g1);transform:scaleX(0);transform-origin:0 50%;transition:transform .32s var(--izb-swift)}
.izb-phone__sub{position:relative}
.izb-phone__sub::after{content:"";position:absolute;right:-11px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:rgb(52,199,89);opacity:0;transition:opacity .2s ease}
@media (hover:hover){
  .izb-phone:is(:hover,.is-hover) .izb-phone__num{color:var(--izb-g1)!important}
  .izb-phone:is(:hover,.is-hover) .izb-phone__num::after{transform:scaleX(1)}
  .izb-phone:is(:hover,.is-hover) .izb-phone__sub::after{opacity:1;animation:izbPulse 1.6s ease-in-out infinite}
}

.izb-social{transition:transform .22s cubic-bezier(.3,1.5,.5,1),box-shadow .2s ease,background-color .2s ease}
@media (hover:hover){.izb-social:is(:hover,.is-hover){transform:translateY(-3px);box-shadow:inset 0 0 0 1.5px var(--izb-g1);background:rgba(253,190,31,.16)!important}}

/* ============================================================
   7. Кнопка чата .izx-btn (базовые размеры задаёт сам виджет)
   ============================================================ */
.izx-btn{transition:transform .22s cubic-bezier(.3,1.5,.5,1),box-shadow .22s ease}
.izb-chat__b1,.izb-chat__b2,.izb-chat__x{transform-box:view-box;transition:transform .32s cubic-bezier(.3,1.5,.5,1),opacity .2s ease}
.izb-chat__b1{transform-origin:24px 22px}
.izb-chat__b2{transform-origin:40px 42px}
.izb-chat__hop{animation:izbHop 5s ease-in-out infinite}
.izb-chat__x{transform-origin:32px 32px;opacity:0;transform:rotate(-90deg) scale(.4)}
.izb-chat__ring{position:absolute;inset:0;border-radius:50%;border:2px solid rgb(160,60,240);opacity:0;pointer-events:none}
@media (hover:hover){
  .izx-btn:not(.is-open):is(:hover,.is-hover){transform:translateY(-2px);box-shadow:0 18px 36px -12px rgba(90,70,220,.5)}
  .izx-btn:not(.is-open):is(:hover,.is-hover) .izb-chat__b1{transform:translate(-2px,-2px) rotate(-6deg)}
  .izx-btn:not(.is-open):is(:hover,.is-hover) .izb-chat__b2{transform:translate(2px,2px) rotate(6deg)}
}
.izx-btn.is-open .izb-chat__b1{opacity:0;transform:translate(-6px,-6px) rotate(-30deg) scale(.2)}
.izx-btn.is-open .izb-chat__b2{opacity:0;transform:translate(6px,6px) rotate(30deg) scale(.2)}
.izx-btn.is-open .izb-chat__x{opacity:1;transform:rotate(0deg) scale(1)}
.izx-btn.is-pulse .izb-chat__ring{animation:izbRing2 .6s ease-out both}

/* ============================================================
   8. «Связаться со специалистом» — звонок и чернильная заливка
   ============================================================ */
.izb-call{position:relative;overflow:hidden;transition:color .2s ease}
.izb-call__ripple{position:absolute;left:var(--x,50%);top:var(--y,50%);width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--izb-ink);transform:scale(0);opacity:0;pointer-events:none;transition:transform .52s cubic-bezier(.2,.7,.3,1),opacity .32s ease}
.izb-call.is-ripple{color:#fff!important}
.izb-call.is-ripple .izb-call__ripple{transform:scale(64);opacity:1}
.izb-call.is-fade .izb-call__ripple{transform:scale(64);opacity:0}
.izb-call__ico{position:relative;display:flex;width:17px;height:17px;flex-shrink:0}
.izb-call__ico>svg:first-child{transform-origin:50% 60%}
.izb-call__waves{position:absolute;left:17px;top:0;transform-origin:0 50%;opacity:0}
.izb-call__label{position:relative;display:grid;overflow:hidden}
.izb-call__label>span{grid-area:1/1;white-space:nowrap;transition:opacity .22s ease,transform .26s cubic-bezier(.3,1,.4,1)}
.izb-call__label>span:last-child{text-align:center;font-variant-numeric:tabular-nums;opacity:0;transform:translateY(110%)}
@media (hover:hover){
  .izb-call:is(:hover,.is-hover) .izb-call__ico>svg:first-child{animation:izbRingPhone .8s ease-in-out both}
  .izb-call:is(:hover,.is-hover) .izb-call__waves{animation:izbWaves 1.1s ease-out infinite}
  .izb-call:is(:hover,.is-hover) .izb-call__label>span:first-child{opacity:0;transform:translateY(-110%)}
  .izb-call:is(:hover,.is-hover) .izb-call__label>span:last-child{opacity:1;transform:translateY(0)}
}

/* ============================================================
   9. Рейтинги (Яндекс, Авито, Циан)
   ============================================================ */
.izb-rate{transition:transform .22s cubic-bezier(.3,1.4,.5,1),box-shadow .22s ease}
.izb-rate__stars{position:relative;overflow:hidden}
.izb-rate__shine{position:absolute;top:-4px;bottom:-4px;left:0;width:40%;background:linear-gradient(100deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.85) 50%,rgba(255,255,255,0) 100%);transform:translateX(-160%) skewX(-20deg);pointer-events:none}
@media (hover:hover){
  .izb-rate:is(:hover,.is-hover){transform:translateY(-3px);box-shadow:0 14px 30px -16px rgba(28,28,31,.35)!important}
  .izb-rate:is(:hover,.is-hover) .izb-rate__stars svg{animation:izbStarPop .52s ease-out both}
  .izb-rate:is(:hover,.is-hover) .izb-rate__stars svg:nth-of-type(2){animation-delay:.07s}
  .izb-rate:is(:hover,.is-hover) .izb-rate__stars svg:nth-of-type(3){animation-delay:.14s}
  .izb-rate:is(:hover,.is-hover) .izb-rate__stars svg:nth-of-type(4){animation-delay:.21s}
  .izb-rate:is(:hover,.is-hover) .izb-rate__stars svg:nth-of-type(5){animation-delay:.28s}
  .izb-rate:is(:hover,.is-hover) .izb-rate__shine{animation:izbShine 1s ease-in-out .25s both}
  .izb-rate:is(:hover,.is-hover) .izb-rate__badge svg{animation:izbSpin .8s ease-in-out both}
}

/* ============================================================
   Ключевые кадры
   ============================================================ */
@keyframes izbJelly{0%{transform:scale(1.04,.9)}30%{transform:scale(.95,1.1)}55%{transform:scale(1.03,.97)}78%{transform:scale(.99,1.01)}100%{transform:scale(1,1)}}
@keyframes izbJellySoft{0%{transform:scale(1,1)}25%{transform:scale(1.05,.9)}55%{transform:scale(.98,1.04)}100%{transform:scale(1,1)}}
@keyframes izbBloom{0%,100%{opacity:.35;transform:scale(.97)}50%{opacity:.85;transform:scale(1.03)}}
@keyframes izbSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes izbFlip{from{transform:rotateY(0deg)}to{transform:rotateY(360deg)}}
@keyframes izbFlare{0%{transform:scale(1)}35%{transform:scale(1.32)}100%{transform:scale(1)}}
@keyframes izbSpark{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
@keyframes izbDot{0%,80%,100%{opacity:.2}40%{opacity:1}}
@keyframes izbHeart{0%{transform:scale(1)}22%{transform:scale(.7)}58%{transform:scale(1.24)}100%{transform:scale(1)}}
@keyframes izbRing{0%{transform:scale(.5);opacity:.9}100%{transform:scale(1.7);opacity:0}}
@keyframes izbRing2{0%{transform:scale(.8);opacity:.8}100%{transform:scale(1.6);opacity:0}}
@keyframes izbNudgeR{0%{transform:translateX(0)}35%{transform:translateX(4px)}100%{transform:translateX(0)}}
@keyframes izbNudgeL{0%{transform:translateX(0)}35%{transform:translateX(-4px)}100%{transform:translateX(0)}}
@keyframes izbGhostR{0%{opacity:.55;transform:translateX(0)}100%{opacity:0;transform:translateX(9px)}}
@keyframes izbGhostL{0%{opacity:.55;transform:translateX(0)}100%{opacity:0;transform:translateX(-9px)}}
@keyframes izbBob{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}
@keyframes izbSwing{0%{transform:rotate(-40deg)}35%{transform:rotate(16deg)}60%{transform:rotate(-8deg)}80%{transform:rotate(4deg)}100%{transform:rotate(0deg)}}
@keyframes izbShine{0%{transform:translateX(-160%) skewX(-20deg)}100%{transform:translateX(360%) skewX(-20deg)}}
@keyframes izbRingPhone{0%{transform:rotate(0)}15%{transform:rotate(-14deg)}30%{transform:rotate(12deg)}45%{transform:rotate(-10deg)}60%{transform:rotate(7deg)}75%{transform:rotate(-3deg)}100%{transform:rotate(0)}}
@keyframes izbWaves{0%{opacity:0;transform:scale(.6)}40%{opacity:1}100%{opacity:0;transform:scale(1.25)}}
@keyframes izbWave{0%{transform:skewY(0) scaleX(1)}25%{transform:skewY(-8deg) scaleX(.92)}50%{transform:skewY(6deg) scaleX(.96)}75%{transform:skewY(-3deg) scaleX(.99)}100%{transform:skewY(0) scaleX(1)}}
@keyframes izbNod{0%,100%{transform:translateY(0)}30%{transform:translateY(-2px)}60%{transform:translateY(.5px)}}
@keyframes izbStarPop{0%{transform:scale(1)}35%{transform:scale(.5)}70%{transform:scale(1.2)}100%{transform:scale(1)}}
@keyframes izbHop{0%,84%,100%{transform:translateY(0)}88%{transform:translateY(-5px)}92%{transform:translateY(0)}96%{transform:translateY(-2px)}}
@keyframes izbPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.7);opacity:.35}}

/* ============================================================
   Уважение к настройке «Уменьшить движение»
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  [class*="izb-"],[class*="izb-"]::before,[class*="izb-"]::after,[class*="izb-"] *,
  .fav-btn *,.apt-nav *,.izx-btn,.izx-btn *{animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:1ms!important;transition-delay:0s!important}
}
