/* ========================================
   INFRIST — Premium Cursor
   ======================================== */

/* Hide native cursor */
html:not(.touch-device) { cursor: none !important; }
html:not(.touch-device) * { cursor: none !important; }

/* Restore on touch */
.touch-device,
.touch-device * { cursor: auto !important; }

/* Reduced motion fallback */
@media (prefers-reduced-motion: reduce) {
    html, html * { cursor: auto !important; }
    .cur-follower,
    .cur-dot-wrap,
    .cur-trail { display: none !important; }
}

/* ---- Follower wrapper (JS moves this) ---- */
.cur-follower {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 99999;
    pointer-events: none;
    will-change: transform;
}

/* ---- Outer ring (CSS handles all visual states) ---- */
.cur-ring {
    width: 38px;
    height: 38px;
    border: 1.5px solid rgba(255, 255, 255, 0.7);
    border-radius: 50%;
    transform: translate(-50%, -50%) scale(1);
    transition:
        transform    0.45s cubic-bezier(0.16, 1, 0.3, 1),
        border-color 0.3s  ease,
        border-width 0.3s  ease,
        border-radius 0.35s cubic-bezier(0.16, 1, 0.3, 1),
        background   0.3s  ease;
    mix-blend-mode: difference;
}

/* Hover: links & buttons — ring expands */
.cur-follower.is-hovering-link .cur-ring {
    transform: translate(-50%, -50%) scale(1.75);
    border-color: rgba(255, 255, 255, 1);
    background: rgba(255, 255, 255, 0.06);
}

/* Hover: cards — ring grows + rounded square */
.cur-follower.is-hovering-card .cur-ring {
    transform: translate(-50%, -50%) scale(1.45);
    border-radius: 14px;
    border-color: rgba(255, 255, 255, 0.55);
}

/* Click — ring squishes */
.cur-follower.is-clicking .cur-ring {
    transform: translate(-50%, -50%) scale(0.8);
    transition: transform 0.1s cubic-bezier(0.34, 1.56, 0.64, 1);
}


/* ---- Trail dots (JS positions each one) ---- */
.cur-trail {
    position: fixed;
    top: 0;
    left: 0;
    border-radius: 50%;
    background: #ffffff;
    pointer-events: none;
    z-index: 99997;
    will-change: transform;
    transform: translate(-50%, -50%);
    mix-blend-mode: difference;
}

/* ---- Magnetic buttons ---- */
[data-magnetic] {
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
