/* ==========================================================================
   Life HQ — Custom cursor + trail
   Desktop only (real mouse, motion allowed). Text inputs keep the real
   I-beam cursor — this only replaces the pointer everywhere else.
   ========================================================================== */

@media (hover: hover) and (pointer: fine) {
  body.has-custom-cursor,
  body.has-custom-cursor * {
    cursor: none;
  }
  body.has-custom-cursor input,
  body.has-custom-cursor textarea,
  body.has-custom-cursor select,
  body.has-custom-cursor [contenteditable] {
    cursor: auto;
  }
}

.cursor-fx {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
}

.cursor-dot {
  position: fixed;
  top: 0;
  left: 0;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--periwinkle-500);
  box-shadow: 0 0 0 4px var(--periwinkle-100);
  opacity: 0;
  transform: translate(-50%, -50%);
  transition: width 180ms var(--ease-out), height 180ms var(--ease-out), background 180ms var(--ease-out),
    box-shadow 180ms var(--ease-out), opacity 150ms var(--ease-out);
}
.cursor-dot.is-interactive {
  width: 30px;
  height: 30px;
  background: var(--yellow-400);
  box-shadow: 0 0 0 5px var(--yellow-100);
}
.cursor-dot.is-hidden {
  opacity: 0 !important;
}

.cursor-trail-dot {
  position: fixed;
  top: 0;
  left: 0;
  border-radius: 50%;
  transform: translate(-50%, -50%);
}
