[data-reveal] {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
  transition-delay: var(--reveal-delay, 0s);
  will-change: opacity, transform;
}

[data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

[data-reveal="left"] {
  transform: translateX(-38px);
}
[data-reveal="right"] {
  transform: translateX(38px);
}
[data-reveal="scale"] {
  transform: scale(0.94);
}
[data-reveal="up-lg"] {
  transform: translateY(56px);
}

[data-reveal="left"].is-visible,
[data-reveal="right"].is-visible,
[data-reveal="scale"].is-visible,
[data-reveal="up-lg"].is-visible {
  transform: none;
}

.hero [data-reveal] {
  animation: heroIn 1s var(--ease) forwards;
  opacity: 0;
}

.hero__title {
  animation-delay: 0.16s;
}
.hero__lead {
  animation-delay: 0.72s;
}
.hero__actions {
  animation-delay: 0.86s;
}
.hero__note {
  animation-delay: 1s;
}

@keyframes btnPulse {
  0% {
    opacity: 0.85;
    transform: scale(1);
  }
  70% {
    opacity: 0;
    transform: scale(1.1);
  }
  100% {
    opacity: 0;
    transform: scale(1.1);
  }
}

@keyframes heroZoom {
  from {
    transform: scale(1.07);
  }
  to {
    transform: scale(1);
  }
}

@keyframes heroIn {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero__rule {
  transform-origin: left;
  animation: ruleIn 0.9s var(--ease) 0.9s both;
}

@keyframes ruleIn {
  from {
    transform: scaleX(0);
  }
  to {
    transform: scaleX(1);
  }
}

.word-reveal {
  display: inline-block;
  overflow: hidden;
  vertical-align: top;
  padding: 0.14em 0.04em 0.2em;
  margin: -0.14em 0.02em -0.2em;
}

.word-reveal > span {
  display: inline-block;
  transform: translateY(110%);
  animation: wordUp 0.8s var(--ease) forwards;
}

.word-reveal:nth-child(1) > span {
  animation-delay: 0.26s;
}
.word-reveal:nth-child(2) > span {
  animation-delay: 0.32s;
}
.word-reveal:nth-child(3) > span {
  animation-delay: 0.38s;
}
.word-reveal:nth-child(4) > span {
  animation-delay: 0.44s;
}
.word-reveal:nth-child(5) > span {
  animation-delay: 0.5s;
}
.word-reveal:nth-child(6) > span {
  animation-delay: 0.56s;
}
.word-reveal:nth-child(7) > span {
  animation-delay: 0.62s;
}
.word-reveal:nth-child(8) > span {
  animation-delay: 0.68s;
}
.word-reveal:nth-child(9) > span {
  animation-delay: 0.74s;
}
.word-reveal:nth-child(10) > span {
  animation-delay: 0.8s;
}

@keyframes wordUp {
  from {
    transform: translateY(110%);
  }
  to {
    transform: translateY(0);
  }
}

@keyframes floatSlow {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(16px);
  }
}

@keyframes auroraDrift {
  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }
  33% {
    transform: translate3d(4%, -5%, 0) scale(1.08);
  }
  66% {
    transform: translate3d(-4%, 4%, 0) scale(0.96);
  }
}

@keyframes pulseDot {
  0%,
  100% {
    box-shadow: 0 0 0 4px rgba(47, 191, 113, 0.18);
  }
  50% {
    box-shadow: 0 0 0 8px rgba(47, 191, 113, 0.04);
  }
}

@keyframes pulse {
  0% {
    transform: scale(1);
    opacity: 0.5;
  }
  70% {
    transform: scale(1.7);
    opacity: 0;
  }
  100% {
    transform: scale(1.7);
    opacity: 0;
  }
}

@keyframes scrollDot {
  0% {
    opacity: 0;
    transform: translate(-50%, 0);
  }
  40% {
    opacity: 1;
  }
  80% {
    opacity: 0;
    transform: translate(-50%, 12px);
  }
  100% {
    opacity: 0;
  }
}

.btn--solid {
  position: relative;
  overflow: hidden;
}

.btn--solid::after {
  content: "";
  position: absolute;
  top: 0;
  left: -120%;
  width: 60%;
  height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.26), transparent);
  transform: skewX(-18deg);
  transition: left 0.7s var(--ease);
  pointer-events: none;
}

.btn--solid:hover::after {
  left: 130%;
}

.carousel__slide:hover {
  transform: translateY(-4px);
  box-shadow: 0 30px 60px -34px rgba(10, 37, 64, 0.7);
}

.creds__item {
  transition: color var(--t-med);
}

.creds__item:hover {
  color: var(--blue);
}

.social-float__btn {
  animation: floatIn 0.5s var(--ease) both;
}
.social-float__btn--instagram {
  animation-delay: 0.9s;
}
.social-float__btn--whats {
  animation-delay: 1s;
}

@keyframes floatIn {
  from {
    opacity: 0;
    transform: translateY(16px) scale(0.85);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (min-width: 900px) {
  .nav__link {
    position: relative;
  }
  .nav__link::after {
    content: "";
    position: absolute;
    left: 0.9rem;
    right: 0.9rem;
    bottom: 2px;
    height: 1px;
    background: var(--gold);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--t-fast);
  }
  .nav__link:hover::after,
  .nav__link.is-active::after {
    transform: scaleX(1);
  }
}

@media (max-width: 899px) {
  [data-reveal="left"],
  [data-reveal="right"] {
    transform: translateY(24px);
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }

  [data-reveal],
  .hero [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }

  .word-reveal > span,
  .hero__rule {
    transform: none !important;
    animation: none !important;
  }

  .social-float__btn {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }

  .hero__bg img,
  .btn__pulse {
    animation: none !important;
  }

  .glass-sheen::before {
    display: none;
  }
}