/*! kd-carousel 1.0.0 | (c) Kodika, https://kodika.ai | Kodika | /kit/kd-carousel@1.0.0/LICENSE */
/* Kodika: лента (data-kd-carousel) и «до/после» (data-kd-compare), версия 1.0.0.
   Устройство ленты держим через !important: модель часто вешает на тот же
   элемент свой класс с display:grid, и без этого лента молча стала бы сеткой.
   Вид (фон, радиусы, тени, отступы внутри слайдов) остаётся за моделью.
   Наши кнопки защищены селекторами с :not(#kd) — это вес id, его не
   перебьют типичные button{…} и button:hover{…} страницы. */

/* ---- Дорожка: работает и без JS ---- */
[data-kd-carousel]{
  --kd-pv:var(--kd-pv-p,1.15);
  display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;
  column-gap:var(--kd-gap,16px)!important;
  overflow-x:auto!important;overflow-y:hidden;
  scroll-snap-type:x mandatory!important;
  overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;
  position:relative;min-width:0;max-width:100%;
  /* Иначе лента в колонке grid 1fr 1fr раздувает страницу (замер: 390 → 1216 px). */
  contain:inline-size;
}
[data-kd-carousel][hidden]{display:none!important}
:where([data-kd-carousel]){list-style:none;margin-inline:0;padding-inline:var(--kd-inset,0);scroll-padding-inline:var(--kd-inset,0)}
[data-kd-carousel]>*{
  flex:0 0 var(--kd-w,calc((100% - var(--kd-gap,16px)*(var(--kd-pv) - 1))/var(--kd-pv)))!important;
  scroll-snap-align:start;min-width:0;max-width:none;box-sizing:border-box;
  /* Боковые поля слайда (у blockquote и figure по умолчанию 40 px) сдвигают
     точку снапа и ломают расчёт ширины: промежуток задаёт только --kd-gap. */
  margin-inline:0!important;
}
[data-kd-carousel="cards"]{--kd-pv-p:1.15;--kd-pv-t:2;--kd-pv-d:3}
[data-kd-carousel="gallery"]{--kd-pv-p:1;--kd-pv-t:1;--kd-pv-d:1}
[data-kd-carousel="testimonials"]{--kd-pv-p:1.1;--kd-pv-t:1.5;--kd-pv-d:2}
[data-kd-carousel="logos"]{--kd-pv-p:2.5;--kd-pv-t:4;--kd-pv-d:6;--kd-gap:24px;align-items:center}
[data-kd-carousel][data-kd-per-view="1"]{--kd-pv-d:1}
[data-kd-carousel][data-kd-per-view="2"]{--kd-pv-d:2}
[data-kd-carousel][data-kd-per-view="3"]{--kd-pv-d:3}
[data-kd-carousel][data-kd-per-view="4"]{--kd-pv-d:4}
[data-kd-carousel][data-kd-per-view="5"]{--kd-pv-d:5}
[data-kd-carousel][data-kd-per-view="6"]{--kd-pv-d:6}
@media (min-width:600px){[data-kd-carousel]{--kd-pv:min(var(--kd-pv-t,2),var(--kd-pv-d,3))}}
@media (min-width:900px){[data-kd-carousel]{--kd-pv:var(--kd-pv-d,3)}}
/* Листается только на телефоне: с 720 px — обычная сетка. */
@media (min-width:720px){
  [data-kd-carousel][data-kd-phone-only]{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--kd-gap,16px)!important;overflow:visible!important;contain:none}
  [data-kd-carousel][data-kd-phone-only]>*{flex:none!important}
}
:where([data-kd-carousel="gallery"]>*) img,:where([data-kd-carousel="gallery"]>img){display:block;width:100%;height:100%;object-fit:cover}
:where([data-kd-carousel="logos"]) img{display:block;max-width:100%;max-height:56px;margin:auto;object-fit:contain}
[data-kd-carousel]:focus-visible{outline:2px solid var(--kd-car-accent,currentColor);outline-offset:4px}
/* Место под навигацию заранее: после запуска скрипта ничего не прыгает (44 + 12 px). */
@media (scripting:enabled){[data-kd-carousel]:not([data-kd-ready]){margin-bottom:56px}}

/* ---- Обёртка и навигация: только после запуска скрипта ---- */
kd-car:not(#kd){display:block;position:relative;min-width:0;max-width:100%}
.kd-on>[data-kd-carousel]{scrollbar-width:none}
.kd-on>[data-kd-carousel]::-webkit-scrollbar{display:none}
.kd-on>[data-kd-carousel]>*{scroll-snap-align:none}
.kd-on>[data-kd-carousel]>[data-kd-snap]{scroll-snap-align:start}
/* Упор ширины (см. ensureStrut в скрипте): невидим, нулевой высоты. */
kd-car-strut:not(#kd){display:block;height:0;overflow:hidden;visibility:hidden;font:10px/0 monospace;pointer-events:none;user-select:none;margin:0;padding:0;border:0}

kd-car-nav:not(#kd){display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0 0;padding:0;min-height:44px;background:none;border:0;position:static;font-size:14px;line-height:1.2}
.kd-fits>kd-car-nav:not(#kd){display:none}
kd-car-nav:not(#kd) .kd-car-arrows{display:flex;gap:8px;margin:0 0 0 auto;padding:0;flex:none}
kd-car-nav:not(#kd) .kd-car-dots{display:flex;flex-wrap:wrap;align-items:center;gap:0;margin:0;padding:0;min-width:0;flex:0 1 auto}

kd-car-nav:not(#kd) button{
  all:unset;box-sizing:border-box;display:inline-grid;place-items:center;flex:none;
  margin:0;padding:0;border:0;background:none;color:inherit;font:inherit;
  cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;
  transform:none;box-shadow:none;text-shadow:none;opacity:1;filter:none;
}
kd-car-nav:not(#kd) svg{display:block;width:20px;height:20px;max-width:none;fill:none;stroke:currentColor;pointer-events:none}
kd-car-nav:not(#kd) svg *{fill:none;stroke:currentColor}

kd-car-nav:not(#kd) .kd-car-btn{width:44px;height:44px;border-radius:999px;border:1px solid rgba(127,127,127,.4);background:transparent}
kd-car-nav:not(#kd) .kd-car-btn:hover{border-color:var(--kd-car-accent,currentColor)}
kd-car-nav:not(#kd) .kd-car-btn[aria-disabled="true"]{opacity:.35;cursor:default;border-color:rgba(127,127,127,.4)}
kd-car-nav:not(#kd) button:focus-visible{outline:2px solid var(--kd-car-accent,currentColor);outline-offset:2px}

/* Точка — кнопка 24×24 (WCAG 2.5.8), видимая часть 8 px, активная — пилюля. */
kd-car-nav:not(#kd) .kd-car-dot{position:relative;width:24px;height:24px}
kd-car-nav:not(#kd) .kd-car-dot::before{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:99px;background:currentColor;opacity:.3;transition:width .2s,margin .2s,opacity .2s}
kd-car-nav:not(#kd) .kd-car-dot[aria-current]::before{width:20px;margin-left:-10px;opacity:1;background:var(--kd-car-accent,currentColor)}

/* Миниатюры вместо точек (gallery + data-kd-thumbs). */
kd-car-nav:not(#kd) .kd-car-thumb{width:56px;height:40px;border-radius:6px;overflow:hidden;opacity:.55}
kd-car-nav:not(#kd) .kd-car-thumb::before{display:none}
kd-car-nav:not(#kd) .kd-car-thumb img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;margin:0;border:0;border-radius:0}
kd-car-nav:not(#kd) .kd-car-thumb[aria-current]{opacity:1;box-shadow:0 0 0 2px var(--kd-car-accent,currentColor)}
[data-kd-thumbs]+kd-car-nav:not(#kd) .kd-car-dots{flex-wrap:nowrap;gap:8px;overflow-x:auto;scrollbar-width:none;padding:3px}
[data-kd-thumbs]+kd-car-nav:not(#kd) .kd-car-dots::-webkit-scrollbar{display:none}

/* Счётчик «3 / 14» вместо точек, когда страниц больше 10. */
kd-car-nav:not(#kd) .kd-car-count{display:none;opacity:.75;font-variant-numeric:tabular-nums;white-space:nowrap}
.kd-many>kd-car-nav:not(#kd) .kd-car-count{display:inline}
kd-car[data-kd-kind="logos"]>kd-car-nav:not(#kd) .kd-car-count{display:none}
kd-car-nav:not(#kd) .kd-car-status{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* Раздел закреплён kd-motion (компьютер): листает он, наши кнопки и снап не мешают. */
html.kd-pin-on [data-kd-pin] kd-car-nav:not(#kd){display:none}
html.kd-pin-on [data-kd-pin] [data-kd-carousel]{scroll-snap-type:none!important}
html.kd-pin-on [data-kd-pin] [data-kd-carousel]:not([data-kd-ready]),
html.kd-pin-on [data-kd-pin] [data-kd-carousel][data-kd-ready="pin"]{margin-bottom:0}

/* ---- До/после ---- */
/* Без JS — две картинки рядом. */
[data-kd-compare]{display:grid;grid-template-columns:1fr 1fr;gap:8px}
[data-kd-compare]>img{display:block;width:100%;height:auto}
[data-kd-compare][data-kd-ready=""]{display:block!important;position:relative;overflow:hidden;--kd-x:calc(22px + (100% - 44px)*var(--kd-p,.5))}
[data-kd-compare][data-kd-ready=""]>img:nth-of-type(1){position:relative;margin:0}
[data-kd-compare][data-kd-ready=""]>img:nth-of-type(2){position:absolute;inset:0;width:100%;height:100%;margin:0;object-fit:cover;clip-path:inset(0 0 0 var(--kd-x))}
[data-kd-compare]>.kd-cmp-line:not(#kd){position:absolute;top:0;bottom:0;left:var(--kd-x);width:2px;margin:0 0 0 -1px;padding:0;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.25);pointer-events:none;z-index:1}
[data-kd-compare]>.kd-cmp-line:not(#kd)::after{content:"";position:absolute;top:50%;left:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:99px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.3)}
[data-kd-compare]>.kd-cmp-range:not(#kd){
  position:absolute;inset:0;z-index:2;display:block;width:100%;height:100%;min-height:0;max-width:none;
  margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;
  opacity:0;cursor:ew-resize;-webkit-appearance:none;appearance:none;touch-action:pan-y;transform:none;
}
[data-kd-compare]>.kd-cmp-range:not(#kd)::-webkit-slider-runnable-track{height:100%;background:none;border:0}
[data-kd-compare]>.kd-cmp-range:not(#kd)::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:44px;height:100vh;border:0;background:none}
[data-kd-compare]>.kd-cmp-range:not(#kd)::-moz-range-thumb{width:44px;height:100vh;border:0;background:none}
[data-kd-compare][data-kd-ready=""]:focus-within{outline:2px solid var(--kd-car-accent,#88b60e);outline-offset:3px}
[data-kd-compare]>.kd-cmp-tag:not(#kd){position:absolute;top:12px;z-index:1;margin:0;padding:4px 10px;border-radius:99px;background:rgba(0,0,0,.6);color:#fff;font-size:13px;line-height:1.3;pointer-events:none}
[data-kd-compare]>.kd-cmp-0:not(#kd){left:12px}
[data-kd-compare]>.kd-cmp-1:not(#kd){right:12px}

@media (prefers-reduced-motion:reduce){kd-car-nav:not(#kd) .kd-car-dot::before{transition:none}}
@media print{kd-car-nav:not(#kd){display:none}}
