/* The provided cursor art is scaled to a pointer-friendly size and follows fine pointers only. */
@media (hover: hover) and (pointer: fine) and (min-width: 761px) {
  body.ff-custom-cursor-ready,
  body.ff-custom-cursor-ready *:not(input):not(textarea):not(select):not([contenteditable="true"]) {
    cursor: none !important;
  }

  body.ff-custom-cursor-ready input:not([type="button"]):not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
  body.ff-custom-cursor-ready textarea,
  body.ff-custom-cursor-ready select,
  body.ff-custom-cursor-ready [contenteditable="true"] {
    cursor: text !important;
  }

  .ff-custom-cursor {
    position: fixed;
    z-index: 20000;
    top: 0;
    left: 0;
    width: 56px;
    height: 56px;
    object-fit: contain;
    opacity: 0;
    pointer-events: none;
    user-select: none;
    transition: opacity .12s ease, scale .12s ease;
    will-change: transform;
  }

  .ff-custom-cursor.is-visible { opacity: 1; }
  .ff-custom-cursor.is-hidden { opacity: 0; }
  .ff-custom-cursor.is-pressed { scale: .94; }

  .ff-cursor-piece {
    position: fixed;
    z-index: 20001;
    width: 56px;
    height: 56px;
    object-fit: contain;
    pointer-events: none;
    user-select: none;
    will-change: transform, opacity;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ff-custom-cursor { transition: none !important; }
}
