/* fx layer: motion, 3D, cursor, form */
.js h1[data-split],.js h2[data-split]{visibility:hidden}
.nofx h1[data-split],.nofx h2[data-split]{visibility:visible}
.sw{display:inline-block;overflow:hidden;vertical-align:bottom;padding:.1em .06em .16em;margin:-.1em -.06em -.16em}
.si{display:inline-block;will-change:transform}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* three.js glass orb sits behind the glass dashboard, so the glass really blurs it */
#orb{position:absolute;left:50%;top:50%;width:min(900px,150%);height:560px;transform:translate(-50%,-50%);pointer-events:none;opacity:0;transition:opacity 1.4s}
#orb.on{opacity:1}

/* services: horizontal scroll rail (pinned by GSAP on desktop, native snap scroll on touch) */
.hs{overflow:hidden}
.hs-track{display:flex;gap:18px;padding:6px 24px 36px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.hs-track::-webkit-scrollbar{display:none}
.hs-track .card{flex:none;width:min(380px,82vw);min-height:300px;scroll-snap-align:start}
.hs-on .hs-track{overflow:visible;scroll-snap-type:none;width:max-content;padding-left:max(24px,calc((100vw - 1160px)/2 + 24px));padding-right:80px}
.hs-on .hs-track .card{width:400px;min-height:330px}

/* 3D tilt cards: GSAP drives the transform */
[data-tilt]{transform-style:preserve-3d;transition:box-shadow .3s!important}
.js .rv[data-tilt]{transition:opacity .9s cubic-bezier(.2,.8,.2,1),filter .9s!important}
.fx-on .btn{transition:box-shadow .25s}

/* cursor follower disabled per user request */
.cur{display:none!important;pointer-events:none;opacity:0}
.prog{position:fixed;left:0;right:0;top:0;height:3px;z-index:40;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,#3700c0 0%,#8302ce 52%,#dd08dc 100%)}

/* lead form */
.lead{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:720px;margin:34px auto 0;text-align:left}
.lead .full{grid-column:1/-1}
.f{display:grid;gap:6px;font-size:13px;font-weight:600;color:var(--mute)}
.f input,.f select,.f textarea{font:inherit;font-weight:500;font-size:16px;color:var(--ink);padding:15px 18px;border-radius:18px;border:1px solid #fff;background:rgba(255,255,255,.75);
  box-shadow:inset 0 1px 0 #fff,0 8px 22px -14px rgba(70,50,160,.35);transition:box-shadow .25s,border-color .25s;width:100%}
.f textarea{resize:vertical;min-height:96px}
.f input:focus,.f select:focus,.f textarea:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px rgba(90,31,214,.16)}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.lead .row{justify-content:flex-start}
.lead-msg{margin:0;min-height:1.4em;font-weight:600;font-size:15px}
.lead-msg.ok{color:#128a5a}.lead-msg.err{color:#c2185b}
@media (max-width:640px){.lead{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.cur,.prog{display:none}}
