:root {
  --pv-pointer-red: var(--red, #f44336);
  --pv-pointer-red-bright: #ff6258;
}

html.pv-pointer-fx-active,
html.pv-pointer-fx-active body,
html.pv-pointer-fx-active a,
html.pv-pointer-fx-active button,
html.pv-pointer-fx-active summary,
html.pv-pointer-fx-active [role="button"] {
  cursor: none !important;
}

html.pv-pointer-fx-active input,
html.pv-pointer-fx-active textarea,
html.pv-pointer-fx-active [contenteditable="true"] {
  cursor: text !important;
}

html.pv-pointer-fx-active select,
html.pv-pointer-fx-active label,
html.pv-pointer-fx-active [disabled] {
  cursor: default !important;
}

html.pv-pointer-fx-active .contact,
html.pv-pointer-fx-active .site-footer {
  cursor: default !important;
}

html.pv-pointer-fx-active .contact a,
html.pv-pointer-fx-active .contact button,
html.pv-pointer-fx-active .site-footer a,
html.pv-pointer-fx-active .site-footer button {
  cursor: pointer !important;
}

.pv-pointer-cursor,
.pv-pointer-trail,
.pv-pointer-pulse,
.pv-pointer-line {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 2147483638;
  pointer-events: none;
  opacity: 0;
  will-change: transform, opacity;
}

.pv-pointer-cursor {
  width: 0;
  height: 0;
  transition: opacity .15s ease;
}

.pv-pointer-cursor.is-visible {
  opacity: 1;
}

.pv-pointer-cursor.is-suppressed {
  opacity: 0;
}

.pv-pointer-cursor__core,
.pv-pointer-cursor__ring {
  position: absolute;
  top: 0;
  left: 0;
  border-radius: 50%;
  transform: translate(-50%, -50%);
}

.pv-pointer-cursor__core {
  width: 10px;
  height: 10px;
  border: 2px solid rgba(255, 255, 255, .94);
  background: var(--pv-pointer-red);
  box-shadow:
    0 0 0 4px rgba(244, 67, 54, .2),
    0 0 20px rgba(244, 67, 54, .88);
  transition:
    width .15s ease,
    height .15s ease,
    background .15s ease,
    box-shadow .15s ease;
}

.pv-pointer-cursor__ring {
  width: 30px;
  height: 30px;
  border: 1px solid rgba(255, 98, 88, .96);
  background: rgba(244, 67, 54, .035);
  box-shadow:
    0 0 22px rgba(244, 67, 54, .48),
    inset 0 0 12px rgba(244, 67, 54, .12);
  transition:
    width .17s ease,
    height .17s ease,
    border-color .17s ease,
    background .17s ease;
}

.pv-pointer-cursor.is-over-action .pv-pointer-cursor__ring {
  width: 44px;
  height: 44px;
  border-color: rgba(255, 255, 255, .88);
  background: rgba(244, 67, 54, .11);
}

.pv-pointer-cursor.is-clicking .pv-pointer-cursor__core {
  width: 16px;
  height: 16px;
  background: #fff;
  box-shadow:
    0 0 0 8px rgba(244, 67, 54, .4),
    0 0 34px rgba(244, 67, 54, 1);
}

.pv-pointer-cursor.is-clicking .pv-pointer-cursor__ring {
  width: 24px;
  height: 24px;
  border-width: 2px;
}

.pv-pointer-trail {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--pv-pointer-red);
  box-shadow: 0 0 16px rgba(244, 67, 54, .92);
}

.pv-pointer-trail:nth-of-type(even) {
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 0 13px rgba(255, 255, 255, .62);
}

.pv-pointer-pulse {
  z-index: 2147483637;
  width: 26px;
  height: 26px;
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow:
    0 0 0 5px rgba(244, 67, 54, .3),
    0 0 30px rgba(244, 67, 54, .95);
  transform: translate3d(-50%, -50%, 0) scale(.35);
}

.pv-pointer-pulse.is-active {
  animation: pv-pointer-pulse .52s cubic-bezier(.16, .8, .2, 1);
}

.pv-pointer-line {
  --pv-pointer-line-background: linear-gradient(
    90deg,
    transparent,
    var(--pv-pointer-red) 15%,
    #fff 52%,
    var(--pv-pointer-red) 85%,
    transparent
  );
  --pv-pointer-line-glow: 0 0 15px rgba(244, 67, 54, .9);
  z-index: 2147483636;
  height: 2px;
  border-radius: 999px;
  background: var(--pv-pointer-line-background);
  box-shadow: var(--pv-pointer-line-glow);
  transform: scaleX(0);
  transform-origin: left center;
  transition:
    transform .5s cubic-bezier(.16, .84, .2, 1) .06s,
    opacity .15s ease;
}

.pv-pointer-line.is-visible,
.pv-pointer-line.is-locked {
  opacity: 1;
  transform: scaleX(1);
}

@keyframes pv-social-click-line {
  0% {
    opacity: 0;
    transform: scaleX(0);
  }
  24%,
  72% {
    opacity: 1;
    transform: scaleX(1);
  }
  100% {
    opacity: 0;
    transform: scaleX(.78);
  }
}

.pv-pointer-target {
  position: relative;
  transition:
    translate .24s cubic-bezier(.2, .78, .2, 1),
    scale .24s cubic-bezier(.2, .78, .2, 1),
    filter .24s ease,
    box-shadow .24s ease,
    text-shadow .24s ease;
}

.pv-pointer-target.is-pv-pointer-hover,
.pv-pointer-target:focus-visible {
  z-index: 20;
  translate: 0 -3px;
  scale: 1.018;
  filter: brightness(1.16);
  text-shadow: 0 0 18px rgba(244, 67, 54, .38);
}

.pv-pointer-target.is-pv-pointer-clicked {
  animation: pv-pointer-target-click .5s cubic-bezier(.18, .82, .2, 1);
}

@keyframes pv-pointer-target-click {
  0% {
    translate: 0 -3px;
    scale: 1.018;
    filter: brightness(1.16);
  }
  32% {
    translate: 0 2px;
    scale: .97;
    filter: brightness(.86);
  }
  68% {
    translate: 0 -6px;
    scale: 1.035;
    filter: brightness(1.24);
  }
  100% {
    translate: 0 -3px;
    scale: 1.018;
    filter: brightness(1.16);
  }
}

@keyframes pv-pointer-pulse {
  0% {
    opacity: 1;
    transform: translate3d(-50%, -50%, 0) scale(.35);
  }
  55% {
    opacity: .95;
    box-shadow:
      0 0 0 11px rgba(244, 67, 54, .25),
      0 0 40px rgba(244, 67, 54, 1);
  }
  100% {
    opacity: 0;
    transform: translate3d(-50%, -50%, 0) scale(2.9);
  }
}

@media (hover: none), (pointer: coarse) {
  .pv-pointer-cursor,
  .pv-pointer-trail,
  .pv-pointer-pulse,
  .pv-pointer-line {
    display: none !important;
  }

  .pv-pointer-target:active {
    translate: 0 -2px;
    scale: 1.01;
    filter: brightness(1.1);
  }

  .hero-concept-v1 .hero-links .social-link::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -5px;
    height: 2px;
    border-radius: 999px;
    background: var(--social-click-line, linear-gradient(90deg,transparent,#f44336,transparent));
    box-shadow: var(--social-click-glow, 0 0 15px rgba(244,67,54,.9));
    opacity: 0;
    transform: scaleX(0);
    transform-origin: left center;
    pointer-events: none;
  }

  .hero-concept-v1 .hero-links .social-link.is-pv-pointer-clicked::before {
    animation: pv-social-click-line .76s cubic-bezier(.16,.84,.2,1) both;
  }
}

@media (prefers-reduced-motion: reduce) {
  .pv-pointer-cursor,
  .pv-pointer-trail,
  .pv-pointer-pulse,
  .pv-pointer-line {
    display: none !important;
  }

  .pv-pointer-target {
    animation: none !important;
    transition: none !important;
    translate: none !important;
    scale: none !important;
  }
}
