/* ===== cursor reflect layer (desktop, fine pointer only) ===== */
.at-cur-lens,.at-cur-ring,.at-cur-dot,.at-cur-pulse{position:fixed;left:0;top:0;pointer-events:none}
.at-cur-lens,.at-cur-ring,.at-cur-dot{opacity:0;transition:opacity .35s var(--ease,ease)}
html.at-cur-on .at-cur-lens,html.at-cur-on .at-cur-ring,html.at-cur-on .at-cur-dot{opacity:1}

/* soft glow with a dot grid that lights up under the pointer */
.at-cur-lens{z-index:2147482000;width:560px;height:560px;margin:-280px 0 0 -280px;border-radius:50%;will-change:transform;
 background:radial-gradient(circle,oklch(0.649 0.237 34/16%) 0,oklch(0.649 0.237 34/6%) 40%,transparent 68%),radial-gradient(circle,oklch(0.649 0.237 34/38%) 1px,transparent 1.7px);
 background-size:100% 100%,26px 26px;background-repeat:no-repeat,repeat;
 -webkit-mask-image:radial-gradient(circle,#000 0,#000 18%,transparent 66%);mask-image:radial-gradient(circle,#000 0,#000 18%,transparent 66%)}

/* ring follows with a slight lag, dot is exact */
.at-cur-ring{z-index:2147483000;width:40px;height:40px;margin:-20px 0 0 -20px;border:1.5px solid oklch(0.649 0.237 34/90%);border-radius:50%;display:grid;place-items:center;will-change:transform;
 transition:opacity .3s,width .3s cubic-bezier(.16,1,.3,1),height .3s cubic-bezier(.16,1,.3,1),margin .3s cubic-bezier(.16,1,.3,1),background-color .25s,border-color .25s,scale .2s}
.at-cur-ring span{font:700 9.5px/1 var(--sans,system-ui);letter-spacing:.9px;text-transform:uppercase;color:#fff;opacity:0;transition:opacity .2s;white-space:nowrap}
.at-cur-ring.is-link{width:66px;height:66px;margin:-33px 0 0 -33px;background:oklch(0.649 0.237 34/14%)}
.at-cur-ring.is-label{width:86px;height:86px;margin:-43px 0 0 -43px;background:var(--primary,#ff4a1c);border-color:var(--primary,#ff4a1c)}
.at-cur-ring.is-label span{opacity:1}
.at-cur-ring.is-down{scale:.82}
.at-cur-dot{z-index:2147483001;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--primary,#ff4a1c);box-shadow:0 0 0 1.5px oklch(1 0 0/85%);will-change:transform}
html.at-cur-on.is-label-on .at-cur-dot,html.at-cur-on.is-text .at-cur-dot,html.at-cur-on.is-text .at-cur-ring{opacity:0}

/* native cursor hidden only while the custom one is live; text fields keep theirs */
html.at-cur-on,html.at-cur-on *{cursor:none!important}
html.at-cur-on input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),html.at-cur-on textarea,html.at-cur-on [contenteditable]{cursor:text!important}

/* click pulse */
.at-cur-pulse{z-index:2147482500;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:1.5px solid var(--primary,#ff4a1c);animation:atPulse .65s cubic-bezier(.16,1,.3,1) forwards}
@keyframes atPulse{from{transform:translate3d(var(--x),var(--y),0) scale(.4);opacity:.9}to{transform:translate3d(var(--x),var(--y),0) scale(5);opacity:0}}

/* card spotlight that tracks the pointer inside a surface */
.at-spot-fx{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .35s;
 background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%),oklch(0.649 0.237 34/17%),transparent 66%)}
.at-spot:hover>.at-spot-fx{opacity:1}

/* magnetic controls */
.at-mag{translate:var(--tx,0px) var(--ty,0px)}
.at-mag.is-reset{transition:translate .5s cubic-bezier(.16,1,.3,1),background .2s,border-color .2s,color .2s}

/* tilt + parallax containers (opt-in via data attributes) */
[data-tilt]{transform-style:preserve-3d;will-change:transform}
[data-tilt].is-reset{transition:transform .6s cubic-bezier(.16,1,.3,1)}

@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){
 .at-cur-lens,.at-cur-ring,.at-cur-dot,.at-cur-pulse,.at-spot-fx{display:none!important}
 .at-mag{translate:none}
}
