/* Krishva Growth v2.4 — visual effects (cursor, tilt glare, kinetic, icons, hero dashboard, logo slider, transitions).
   Every effect is switchable in Admin → Add-ons studio → Visual effects (<html data-fx>), and all motion stops for prefers-reduced-motion / Save-Data. */

/* ---------- 2. cursor (fine pointer + hover + >1024px only; the system cursor stays visible) ---------- */
.fx-cur,.fx-cur-dot{position:fixed;left:0;top:0;z-index:2147483000;pointer-events:none;opacity:0;transition:opacity .25s;will-change:transform}
html.fx-cursor-on .fx-cur,html.fx-cursor-on .fx-cur-dot{opacity:1}
html.fx-cursor-on .fx-cur.is-off,html.fx-cursor-on .fx-cur-dot.is-off{opacity:0}
.fx-cur{width:0;height:0}
.fx-cur i{position:absolute;left:-18px;top:-18px;width:36px;height:36px;border-radius:50%;background:conic-gradient(from 210deg,#4a4cff,#7b00ff,#ff00c8,#4a4cff);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 1.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 1.5px));transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.fx-cur.is-hover i{transform:scale(1.85)}
.fx-cur.has-label i{transform:scale(2.3);-webkit-mask:none;mask:none;opacity:.92}
.fx-cur b{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font:700 .6rem/1 Inter,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#fff;white-space:nowrap;opacity:0;transition:opacity .2s}
.fx-cur.has-label b{opacity:1}
.fx-cur-dot{width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:linear-gradient(135deg,#7b00ff,#ff00c8);box-shadow:0 0 10px rgba(255,0,200,.55)}

/* ---------- 3. tilt glare ---------- */
.fx-glare{position:absolute;inset:0;z-index:3;border-radius:inherit;pointer-events:none;background:radial-gradient(420px circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.16),transparent 50%);opacity:0;transition:opacity .35s}
.is-tilting>.fx-glare{opacity:1}
html[data-theme=light] .fx-glare{background:radial-gradient(420px circle at var(--gx,50%) var(--gy,0%),rgba(123,0,255,.10),transparent 50%)}

/* ---------- 4. kinetic headings: off = split structure kept, no motion ---------- */
html.fx-nokin [data-split] .split-word{transform:none!important;opacity:1!important}

/* ---------- 5. animated line icons ---------- */
.kgi{display:block;overflow:visible}
.kgi *{transform-box:fill-box;transform-origin:center}
html.fx-icons-on .kgi *{stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1.1s cubic-bezier(.65,0,.35,1)}
html.fx-icons-on .kgi:not(.in) *{stroke-dashoffset:1}
html.fx-icons-on .kgi.in .a-pulse{animation:kgiPulse 2.4s ease-in-out 1.2s infinite}
html.fx-icons-on .kgi.in .a-spin{animation:kgiSpin 9s linear 1.2s infinite}
html.fx-icons-on .kgi.in .a-bob{animation:kgiBob 2.6s ease-in-out 1.2s infinite}
html.fx-icons-on .kgi.in .a-wave{animation:kgiWave 1.8s ease-in-out 1.2s infinite}
html.fx-icons-on .kgi.in .a-orbit{animation:kgiOrbit 4s ease-in-out 1.2s infinite}
html.fx-icons-on :is(a,article,div):hover>.ico .kgi .a-nudge,html.fx-icons-on .svc-card:hover .kgi .a-nudge{transform:translateX(1.5px);transition:transform .35s,stroke-dashoffset 1.1s}
html.fx-icons-on .svc-card:hover .kgi .a-draw{animation:kgiDraw 1s cubic-bezier(.65,0,.35,1)}
.svc-card .ico .kgi{width:28px;height:28px}
@keyframes kgiPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.7}}
@keyframes kgiSpin{to{transform:rotate(360deg)}}
@keyframes kgiBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.6px)}}
@keyframes kgiWave{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes kgiOrbit{0%,100%{transform:translate(0,0)}50%{transform:translate(1px,1px) scale(.9)}}
@keyframes kgiDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}

/* ---------- 6. hero growth dashboard (illustration) ---------- */
.kg-dash{--dw:clamp(330px,27vw,440px);position:relative;z-index:2;width:100%;max-width:var(--dw);margin:34px 0 0;padding:16px;border-radius:22px;border:1px solid rgba(255,255,255,.12);background:linear-gradient(160deg,rgba(18,14,52,.78),rgba(8,10,32,.72));box-shadow:0 30px 70px -30px rgba(123,0,255,.55),inset 0 1px 0 rgba(255,255,255,.06);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#fff;font-family:Inter,system-ui,sans-serif;display:grid;gap:12px}
html[data-theme=light] .kg-dash{background:linear-gradient(160deg,rgba(255,255,255,.92),rgba(246,242,255,.86));border-color:rgba(123,0,255,.16);color:#0b0a1f;box-shadow:0 30px 70px -34px rgba(123,0,255,.35)}
.kg-dash-top{display:flex;align-items:center;gap:10px;font-size:.78rem;min-width:0}
.kg-dash-top b{font:600 .8rem/1.2 Unbounded,Inter,sans-serif;letter-spacing:.01em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kg-dash-top em{font-style:normal;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;padding:4px 8px;border-radius:999px;border:1px solid currentColor;opacity:.7;white-space:nowrap}
.kg-dash-dots{display:flex;gap:5px}.kg-dash-dots i{width:8px;height:8px;border-radius:50%;background:#ff00c8}.kg-dash-dots i:nth-child(2){background:#7b00ff}.kg-dash-dots i:nth-child(3){background:#4a4cff}
.kg-dash-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.kg-kpi{padding:10px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);display:grid;gap:6px;min-width:0}
html[data-theme=light] .kg-kpi{background:rgba(123,0,255,.04);border-color:rgba(123,0,255,.1)}
.kg-kpi-l{font-size:.72rem;font-weight:600;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kg-up{font-style:normal;font-size:.6rem;color:#2ee59d;display:inline-block}
.kg-kpi svg{width:100%;height:26px;display:block;overflow:visible}
.kg-spark{fill:none;stroke:#ff00c8;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0;vector-effect:non-scaling-stroke}
.kg-kpi:nth-child(2) .kg-spark{stroke:#7b00ff}.kg-kpi:nth-child(3) .kg-spark{stroke:#4a4cff}
html[data-theme=dark] .kg-kpi:nth-child(2) .kg-spark{stroke:#a35bff}html[data-theme=dark] .kg-kpi:nth-child(3) .kg-spark{stroke:#7d80ff}
.kg-meter{height:4px;border-radius:9px;background:rgba(127,127,160,.22);overflow:hidden}
.kg-meter b{display:block;height:100%;width:100%;border-radius:inherit;background:linear-gradient(90deg,#4a4cff,#7b00ff,#ff00c8);transform-origin:left;transform:scaleX(var(--f,.7))}
.kg-dash-chart,.kg-dash-bars{position:relative;border-radius:14px;padding:10px 10px 8px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07)}
html[data-theme=light] .kg-dash-chart,html[data-theme=light] .kg-dash-bars{background:rgba(123,0,255,.035);border-color:rgba(123,0,255,.09)}
.kg-dash-lbl{display:block;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;opacity:.6;margin-bottom:6px}
.kg-dash-chart svg{display:block;width:100%;height:96px;overflow:visible}
.kg-grid path{stroke:rgba(127,127,170,.22);stroke-width:1;stroke-dasharray:3 5;vector-effect:non-scaling-stroke}
.kg-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0;vector-effect:non-scaling-stroke}
.kg-dot path{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}
.kg-bars{display:flex;align-items:flex-end;gap:7px;height:46px}
.kg-bars i{flex:1;height:100%;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,#ff00c8,#7b00ff 60%,#4a4cff);transform-origin:bottom;transform:scaleY(var(--v,.6));opacity:.9}
/* motion (only when html.fx-anim: JS present, motion allowed) */
html.fx-anim .kg-dash .kg-line{animation:kgLine 8s cubic-bezier(.65,0,.35,1) infinite}
html.fx-anim .kg-dash .kg-area{animation:kgArea 8s ease infinite}
html.fx-anim .kg-dash .kg-dot{animation:kgDot 8s ease infinite}
html.fx-anim .kg-dash .kg-spark{animation:kgLine 8s cubic-bezier(.65,0,.35,1) calc(var(--i,0)*.2s + .3s) infinite}
.kg-kpi{--i:0}
html.fx-anim .kg-dash .kg-meter b{animation:kgMeter 4.5s ease-in-out calc(var(--i)*.35s) infinite alternate}
html.fx-anim .kg-dash .kg-bars i{animation:kgBar 3.4s ease-in-out calc(var(--i)*.18s) infinite alternate}
html.fx-anim .kg-dash .kg-up{animation:kgiBob 2.4s ease-in-out infinite}
html.fx-anim .kg-dash.paused *{animation-play-state:paused!important}
@keyframes kgLine{0%{stroke-dashoffset:1}35%,88%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes kgArea{0%,20%{opacity:0}45%,88%{opacity:1}100%{opacity:0}}
@keyframes kgDot{0%,32%{opacity:0}40%{opacity:.6}46%,88%{opacity:1}100%{opacity:0}}
@keyframes kgMeter{from{transform:scaleX(calc(var(--f,.7)*.55))}to{transform:scaleX(var(--f,.7))}}
@keyframes kgBar{from{transform:scaleY(calc(var(--v,.6)*.55))}to{transform:scaleY(var(--v,.6))}}
/* placement: beside the headline on desktop, below the stats on tablet/phone */
@media (min-width:1200px){
  .hero-inner{position:relative}
  .hero-inner>.kg-dash{position:absolute;right:var(--pad,32px);top:var(--kg-dash-top,0);margin:0;width:var(--dw)}
  .hero-inner>.kg-dash .kg-dash-chart svg{height:clamp(56px,5.2vw,96px)}
  .hero-inner>.kg-dash .kg-bars{height:clamp(28px,2.6vw,46px)}
}
@media (max-width:1199px){.hero-inner>.kg-dash{margin-left:auto;margin-right:auto;max-width:520px}}
@media (max-width:420px){.kg-dash{padding:12px;gap:10px;border-radius:18px}.kg-kpi{padding:8px}.kg-dash-chart svg{height:80px}}

/* ---------- 7. client logo slider ---------- */
.logo-wall .logo-head{text-align:center;margin:0 auto 18px;max-width:900px}
.logo-wall .logo-head h2{margin:.3em 0 0;text-wrap:balance}
.logo-wall:focus-within .logo-run{animation-play-state:paused}
.logo-item img{transition:filter .35s,opacity .35s,transform .35s}
.logo-item:hover img,.logo-item:focus-within img{filter:none;opacity:1;transform:scale(1.04)}
.logo-wall.is-static .logo-track{-webkit-mask-image:none;mask-image:none}
.logo-wall.is-static .logo-run{animation:none;width:auto;flex-wrap:wrap;justify-content:center;padding:10px var(--pad,20px)}
.logo-wall.is-static .logo-item[aria-hidden=true]{display:none}
@media (prefers-reduced-motion:reduce){
  .logo-wall .logo-track{-webkit-mask-image:none;mask-image:none}
  .logo-wall .logo-run{animation:none!important;width:auto;flex-wrap:wrap;justify-content:center;padding:10px var(--pad,20px)}
  .logo-wall .logo-item[aria-hidden=true]{display:none}
}

/* ---------- 8. page transitions (fallback fade for browsers without cross-document view transitions) ---------- */
::view-transition-old(root),::view-transition-new(root){animation-duration:.32s;animation-timing-function:cubic-bezier(.4,0,.2,1)}
html.fx-leave body{opacity:0;transition:opacity .22s ease}

/* ---------- reduced motion / Save-Data: everything static and visible ---------- */
@media (prefers-reduced-motion:reduce){
  .fx-cur,.fx-cur-dot,.fx-glare{display:none!important}
  .kg-dash *,.kgi *{animation:none!important;transition:none!important}
  html.fx-icons-on .kgi:not(.in) *{stroke-dashoffset:0}
  ::view-transition-old(root),::view-transition-new(root){animation:none}
}
html.fx-lite .kg-dash *,html.fx-lite .kgi *{animation:none!important}
html.fx-lite.fx-icons-on .kgi:not(.in) *{stroke-dashoffset:0}
@media print{.fx-cur,.fx-cur-dot,.kg-dash{display:none!important}}
.logo-wall:not(.is-static) .logo-run{gap:0}.logo-wall:not(.is-static) .logo-item{padding:0 clamp(15px,2.5vw,35px)}
@media (prefers-reduced-motion:reduce){.logo-wall .logo-run{gap:clamp(30px,5vw,70px)!important}.logo-wall .logo-item{padding:0!important}}
html.fx-anim .hero .kg-dash{animation:kgDashIn 1.1s cubic-bezier(.2,.8,.2,1) .7s both}
@keyframes kgDashIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){html.fx-anim .hero .kg-dash{animation:none}}

/* ---- v2.4 hero background video (integrator) ---- */
.hero-video{position:absolute;inset:0;z-index:-1;overflow:hidden;opacity:var(--hv-op,.6);pointer-events:none}
.hero-video video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hero-video::before{content:"";position:absolute;inset:0;z-index:1;background:#03030a;opacity:calc((var(--hv-ov,.55) - .55) * 1.6)}
.hero-video::after{z-index:1;opacity:calc(var(--hv-ov,.55) / .55)}
html[data-theme=light] .hero-video::before{background:#fff}
.hero-video::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,3,10,.55) 0%,rgba(3,3,10,.2) 55%,rgba(3,3,10,0) 100%),linear-gradient(0deg,var(--bg) 0%,transparent 30%)}
html[data-theme=light] .hero-video{opacity:calc(var(--hv-op,.6) * .45)}
html[data-theme=light] .hero-video.is-default{opacity:calc(var(--hv-op,.6) * .8)}
html[data-theme=light] .hero-video.is-default video{filter:invert(1) hue-rotate(180deg) saturate(1.3)}
html[data-theme=light] .hero-video::after{background:linear-gradient(90deg,rgba(255,255,255,.78) 0%,rgba(255,255,255,.35) 60%,rgba(255,255,255,.1) 100%),linear-gradient(0deg,var(--bg) 0%,transparent 35%)}
@media (max-width:860px){.hero-video::after{background:linear-gradient(180deg,rgba(3,3,10,.35) 0%,rgba(3,3,10,.6) 50%,var(--bg) 96%)}html[data-theme=light] .hero-video::after{background:linear-gradient(180deg,rgba(255,255,255,.4) 0%,rgba(255,255,255,.7) 50%,var(--bg) 96%)}}
