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

.custom-cursor-dot {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #93b4e9;
  transform: translate(-50%, -50%) scale(.32);
  transform-origin: center;
  will-change: transform;
  transition: transform .46s cubic-bezier(.9, 0, .1, 1), opacity .3s cubic-bezier(.9, 0, .1, 1);
  animation: cursor-sunset-colors 8s ease-in-out infinite;
}

@keyframes cursor-sunset-colors {
  0%, 100% { background-color: #93b4e9; }
  16% { background-color: #a0b9e1; }
  32% { background-color: #c3c3cd; }
  48% { background-color: #e9c2a1; }
  64% { background-color: #f9b375; }
  80% { background-color: #ff9d5c; }
  92% { background-color: #fe8b54; }
}

.custom-cursor.is-interactive .custom-cursor-dot { opacity: .5; transform: translate(-50%, -50%) scale(.825); }
.custom-cursor.is-project .custom-cursor-dot { transform: translate(-50%, -50%) scale(1.5); }
.custom-cursor.is-pressed .custom-cursor-dot { transform: translate(-50%, -50%) scale(.25); transition-duration: 90ms; }
.custom-cursor.is-interactive.is-pressed .custom-cursor-dot { transform: translate(-50%, -50%) scale(.68); }
.custom-cursor.is-project.is-pressed .custom-cursor-dot { transform: translate(-50%, -50%) scale(1.23); }
.custom-cursor-label {
  position: absolute;
  top: 50%;
  left: 50%;
  color: #30302E;
  font-size: 11px;
  line-height: 1;
  opacity: 0;
  transform: translate(-50%, -50%);
  transition: opacity .28s cubic-bezier(.9, 0, .1, 1);
}
.custom-cursor.is-project .custom-cursor-label { opacity: 1; }

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  html.custom-cursor-enabled,
  html.custom-cursor-enabled * { cursor: none !important; }
  .custom-cursor { display: block; }
}

@media (prefers-reduced-motion: reduce) {
  .custom-cursor-dot { transition-duration: .01ms !important; transition-delay: 0s !important; }
}
