.cursor-follow,
.cursor-point {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  color: #285f78;
  opacity: 0;
  transition: opacity 180ms ease;
}

.cursor-follow {
  z-index: 90;
  width: 34px;
  height: 34px;
  margin: -17px 0 0 -17px;
  will-change: transform;
}

.cursor-follow::before {
  position: absolute;
  inset: 0;
  border: 1px solid currentColor;
  border-radius: 50%;
  background: rgba(40, 95, 120, 0.045);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.18);
  content: "";
  transition:
    transform 240ms cubic-bezier(0.2, 0.8, 0.2, 1),
    border-radius 240ms ease,
    background 240ms ease;
}

.cursor-point {
  z-index: 91;
  width: 6px;
  height: 6px;
  margin: -3px 0 0 -3px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.35);
}

.cursor-follow.is-visible,
.cursor-point.is-visible {
  opacity: 1;
}

.cursor-follow.is-on-dark,
.cursor-point.is-on-dark {
  color: #a9dce3;
}

.cursor-follow.is-interactive::before {
  transform: scale(1.45);
  border-radius: 32%;
  background: rgba(40, 95, 120, 0.12);
}

.cursor-follow.is-on-dark.is-interactive::before {
  background: rgba(169, 220, 227, 0.13);
}

.cursor-follow.is-pressed::before {
  transform: scale(0.82);
}

.cursor-follow.is-text,
.cursor-point.is-text {
  opacity: 0;
}

@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  .cursor-follow,
  .cursor-point {
    display: none;
  }
}
