@media (hover: hover) and (pointer: fine) {
  body.pd-cursor-enabled,
  body.pd-cursor-enabled * {
    cursor: none;
  }

  .pd-cursor-dot,
  .pd-cursor-ring {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 9999;
    pointer-events: none;
    opacity: 0;
    will-change: transform, opacity;
    transition:
      opacity 0.22s ease,
      background-color 0.28s ease,
      border-color 0.28s ease,
      box-shadow 0.28s ease;
  }

  .pd-cursor-dot {
    width: 8px;
    height: 8px;
    border-radius: 999px;
    background: var(--pd-cursor-dot, var(--saffron, #e8a84e));
    box-shadow: 0 0 16px rgba(var(--pd-cursor-glow-rgb, 232, 168, 78), 0.46);
  }

  .pd-cursor-ring {
    width: 34px;
    height: 34px;
    border: 1px solid rgba(var(--pd-cursor-ring-rgb, 201, 148, 74), 0.46);
    border-radius: 999px;
    box-shadow:
      0 0 22px rgba(var(--pd-cursor-glow-rgb, 201, 148, 74), 0.14),
      inset 0 0 12px rgba(245, 230, 200, 0.045);
  }

  body.pd-cursor-visible .pd-cursor-dot,
  body.pd-cursor-visible .pd-cursor-ring {
    opacity: 1;
  }

  body.pd-cursor-visible .pd-cursor-ring {
    opacity: 0.48;
    animation: pd-cursor-heartbeat 4.8s ease-in-out infinite;
  }

  body.pd-cursor-hover .pd-cursor-ring {
    border-color: rgba(var(--pd-cursor-hover-rgb, 232, 168, 78), 0.82);
    box-shadow:
      0 0 30px rgba(var(--pd-cursor-hover-rgb, 232, 168, 78), 0.22),
      inset 0 0 18px rgba(245, 230, 200, 0.08);
  }

  body.pd-cursor-mrdanga .pd-cursor-ring::after,
  body.pd-cursor-kartal .pd-cursor-ring::before,
  body.pd-cursor-parikrama .pd-cursor-ring::before {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    pointer-events: none;
  }

  body.pd-cursor-mrdanga.pd-cursor-ripple .pd-cursor-ring::after {
    border: 1px solid rgba(var(--pd-cursor-hover-rgb, 232, 168, 78), 0.38);
    animation: pd-cursor-ripple 0.72s ease-out;
  }

  body.pd-cursor-kartal .pd-cursor-ring::before {
    border: 1px solid transparent;
    background:
      linear-gradient(90deg, rgba(245, 230, 200, 0.04), rgba(var(--pd-cursor-hover-rgb, 232, 168, 78), 0.28), rgba(245, 230, 200, 0.04))
      border-box;
    -webkit-mask:
      linear-gradient(#000 0 0) padding-box,
      linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0.54;
    animation: pd-cursor-shimmer 1.35s ease-in-out infinite;
  }

  body.pd-cursor-parikrama .pd-cursor-ring::before {
    inset: -4px;
    border-top: 1px solid rgba(var(--pd-cursor-hover-rgb, 232, 168, 78), 0.34);
    border-right: 1px solid transparent;
    border-bottom: 1px solid rgba(var(--pd-cursor-ring-rgb, 201, 148, 74), 0.12);
    border-left: 1px solid transparent;
    animation: pd-cursor-rotate 5.6s linear infinite;
  }

  @keyframes pd-cursor-heartbeat {
    0%,
    68%,
    100% {
      box-shadow:
        0 0 22px rgba(var(--pd-cursor-glow-rgb, 201, 148, 74), 0.14),
        inset 0 0 12px rgba(245, 230, 200, 0.045);
    }
    73% {
      box-shadow:
        0 0 30px rgba(var(--pd-cursor-glow-rgb, 201, 148, 74), 0.2),
        inset 0 0 14px rgba(245, 230, 200, 0.065);
    }
    78% {
      box-shadow:
        0 0 24px rgba(var(--pd-cursor-glow-rgb, 201, 148, 74), 0.16),
        inset 0 0 12px rgba(245, 230, 200, 0.05);
    }
  }

  @keyframes pd-cursor-ripple {
    from {
      opacity: 0.55;
      transform: scale(1);
    }
    to {
      opacity: 0;
      transform: scale(2.15);
    }
  }

  @keyframes pd-cursor-shimmer {
    0%,
    100% {
      opacity: 0.28;
      transform: scale(0.96);
    }
    50% {
      opacity: 0.66;
      transform: scale(1.06);
    }
  }

  @keyframes pd-cursor-rotate {
    to {
      transform: rotate(360deg);
    }
  }
}

@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  body,
  body * {
    cursor: auto;
  }

  .pd-cursor-dot,
  .pd-cursor-ring {
    display: none;
  }
}
