/* Custom pointer — a solid black arrow that tracks the mouse with no trailing
   element, and a burst of rays stamped at each click point. */

.nano-cursor {
  /* The arrow tip sits at 4.04/24 of the icon box, so this ratio is what
     shifts the artwork until the tip lands exactly on the pointer. */
  --arrow-size: 27px;
  --tip-offset: calc(var(--arrow-size) * 0.168);

  position: fixed;
  left: 0;
  top: 0;
  z-index: 300;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.18s ease;
  will-change: transform;
}
.nano-cursor.is-active {
  opacity: 1;
}

.nano-cursor svg {
  display: block;
  width: var(--arrow-size);
  height: var(--arrow-size);
  overflow: visible;
  /* Scaling happens around the tip, so the point never drifts off the target. */
  transform-origin: var(--tip-offset) var(--tip-offset);
  transform: translate(calc(var(--tip-offset) * -1), calc(var(--tip-offset) * -1));
  transition: scale 0.16s cubic-bezier(0.16, 1, 0.3, 1);
}

/* The white stroke is painted underneath the black fill, leaving a thin halo
   that keeps the arrow readable over the dark and blue sections of the site. */
.nano-cursor path {
  fill: #151515;
  stroke: #fff;
  stroke-width: 2.4;
  stroke-linejoin: round;
  paint-order: stroke fill;
}

/* Slight growth over links and buttons, and a press-in on mouse down. */
.nano-cursor.is-hover svg {
  scale: 1.22;
}
.nano-cursor.is-down svg {
  scale: 0.86;
}

/* Over editable text the native I-beam is more useful than an arrow. */
.nano-cursor.is-text {
  opacity: 0;
}

/* Rays that fan out from the pointer on click, then fade. */
.nano-click-burst {
  position: fixed;
  z-index: 299;
  width: 54px;
  height: 54px;
  pointer-events: none;
  translate: -50% -50%;
  filter: drop-shadow(0 0 1.5px rgba(255, 255, 255, 0.9));
  animation: nanoBurst 0.45s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.nano-click-burst svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.nano-click-burst line {
  stroke: #151515;
  stroke-width: 2.6;
  stroke-linecap: round;
}

@keyframes nanoBurst {
  from {
    transform: scale(0.45);
    opacity: 1;
  }
  to {
    transform: scale(1.15);
    opacity: 0;
  }
}

/* Hide the system cursor only while the custom one is running. Form fields keep
   their native cursors so text selection and typing stay predictable. */
html.has-nano-cursor,
html.has-nano-cursor * {
  cursor: none !important;
}
html.has-nano-cursor input,
html.has-nano-cursor textarea,
html.has-nano-cursor select,
html.has-nano-cursor [contenteditable='true'],
html.has-nano-cursor [contenteditable='true'] * {
  cursor: auto !important;
}

@media (prefers-reduced-motion: reduce) {
  .nano-cursor svg {
    transition: none;
  }
  .nano-click-burst {
    display: none;
  }
}
