/* ── Custom cursor ── */
/* Hidden off-screen until initCursor() confirms a fine pointer + motion-ok
   environment and the first mousemove fires (avoids a flash at 0,0). */

.has-custom-cursor,
.has-custom-cursor a,
.has-custom-cursor button,
.has-custom-cursor .btn-c,
.has-custom-cursor .poster {
  cursor: none;
}

.custom-cursor {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  pointer-events: none;
  z-index: 9999;
  transform: translate3d(-100px, -100px, 0);
  will-change: transform;
}

.custom-cursor-dot {
  position: absolute;
  top: 0;
  left: 0;
  width: 8px;
  height: 8px;
  margin: -4px 0 0 -4px;
  border-radius: 50%;
  background: var(--white);
  mix-blend-mode: difference;
}

.custom-cursor-indicator {
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin: -22px 0 0 -22px;
  border-radius: 50%;
  font-size: 13px;
  font-weight: 700;
  color: var(--black);
  background: var(--yellow);
  opacity: 0;
  transform: scale(0.4);
}

@media (prefers-reduced-motion: no-preference) {
  .custom-cursor-dot {
    transition: width 0.2s var(--ease-spring), height 0.2s var(--ease-spring),
      margin 0.2s var(--ease-spring), opacity 0.2s var(--ease-out);
  }
  .custom-cursor-indicator {
    transition: transform 0.25s var(--ease-spring), opacity 0.18s var(--ease-out);
  }
}

.custom-cursor--hover .custom-cursor-dot {
  opacity: 0;
}
.custom-cursor--hover .custom-cursor-indicator {
  opacity: 1;
  transform: scale(1);
}
