/* Native SVG cursors stay precise, without a second cursor or motion lag. */
@media (hover: hover) and (pointer: fine) {
  body {
    cursor:
      url('../assets/cursors/cursor-dracula.svg?v=compact5') 4 2,
      auto;
  }
  /* Only actual text under the pointer, not the full block or its padding. */
  .cursor-over-text {
    cursor: text;
  }
  a,
  button,
  summary,
  select,
  label[for],
  [role='button'],
  .orbital-art .orbit-core {
    cursor:
      url('../assets/cursors/cursor-dracula-link.svg?v=compact5') 8 3,
      pointer;
  }
  :is(a, button, summary, select, label[for], [role='button']) :where(*) {
    cursor: inherit;
  }
  input,
  textarea,
  [contenteditable='true'] {
    cursor: text;
    caret-color: var(--pink);
  }
  button:disabled,
  [aria-disabled='true'] {
    cursor: not-allowed;
  }
}
/* The constellation must not intercept selection in the hero copy. */
.hero-copy {
  pointer-events: auto;
}
.hero-visual .orbit-label,
.hero-visual .visual-footer,
.orbital-art .coordinate,
.atom-hint {
  pointer-events: auto;
}
.cursor-loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  pointer-events: none;
  z-index: 100;
  opacity: 0;
  transition: opacity 0.12s;
}
.cursor-loader.is-visible {
  opacity: 1;
}
.cursor-loader::after {
  content: '';
  position: absolute;
  left: 12px;
  top: 9px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: conic-gradient(
    from 0deg,
    transparent 0deg 65deg,
    #bd93f9 125deg,
    #ff79c6 225deg,
    #8be9fd 300deg,
    transparent 360deg
  );
  mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
  animation: cursor-loading-spin 0.95s linear infinite;
}
@keyframes cursor-loading-spin {
  to {
    transform: rotate(360deg);
  }
}
@media (hover: none), (pointer: coarse) {
  .cursor-loader {
    display: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .cursor-loader::after {
    animation: none;
  }
}
