.mood-tape {
  --tape-gap: clamp(22px, 2.4vw, 42px);
}
.tape-content {
  gap: 0;
  animation: tape-flow var(--tape-duration, 36s) linear infinite;
  will-change: transform;
}
.tape-group {
  display: flex;
  align-items: center;
  justify-content: space-around;
  flex: 0 0 auto;
  min-width: 100vw;
  gap: var(--tape-gap);
  padding-inline: calc(var(--tape-gap) / 2);
}
@keyframes tape-flow {
  to { transform: translate3d(-50%, 0, 0); }
}
.hero-sparkle, .about-sparkle {
  transform-origin: center;
  animation: star-glimmer 6.8s ease-in-out infinite;
  animation-delay: -1.3s;
}
.sparkle-two { animation-duration: 8.2s; animation-delay: -4.1s; }
.about-sparkle { animation-duration: 7.5s; animation-delay: -2.8s; }
@keyframes star-glimmer {
  0%, 40%, 100% {
    opacity: .82;
    scale: .97;
    filter: drop-shadow(0 0 0 #f65aa100);
  }
  70% {
    opacity: 1;
    scale: 1.05;
    filter: drop-shadow(0 0 6px #f65aa163);
  }
}
.hero .photo-frame { animation: photo-drift 9s ease-in-out infinite; }
@keyframes photo-drift {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(0, -7px, 0); }
}
.wordmark-star { animation: mark-turn 22s linear infinite; }
@keyframes mark-turn {
  to { transform: rotate(180deg); }
}
.hero-photo, .travel-photo img { transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.portrait-inset { transition: transform .4s ease; }
.social-icon, .arrow-circle, .social-bottom .icon,
.inner-card-top > .icon, .text-link .icon,
.button .icon:last-child, .header-cta > .icon { transition: transform .3s ease; }
.desktop-nav a { position: relative; }
.desktop-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -5px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .25s ease;
}
.desktop-nav a:hover::after, .desktop-nav a:focus-visible::after { transform: scaleX(1); }
@media (hover: hover) and (pointer: fine) {
  .photo-frame:hover .hero-photo, .travel-photo:hover img { transform: scale(1.035); }
  .portrait-inset:hover { transform: rotate(3deg) translateY(-4px); }
  .social-card:hover .social-icon { transform: translateY(-2px) rotate(-4deg); }
  .stream-card:hover .arrow-circle, .social-card:hover .social-bottom .icon,
  .inner-card:hover .inner-card-top > .icon, .text-link:hover .icon,
  .button:hover .icon:last-child, .header-cta:hover > .icon { transform: translate(2px, -2px); }
}

.motion-reveal {
  opacity: 0;
  translate: 0 18px;
  transition-property: opacity, translate, transform, box-shadow, background-color, border-color;
  transition-duration: .65s, .65s, .28s, .28s, .28s, .28s;
  transition-timing-function: cubic-bezier(.2, .7, .2, 1);
  transition-delay: var(--reveal-delay, 0ms), var(--reveal-delay, 0ms), 0s, 0s, 0s, 0s;
}
.motion-reveal.is-visible { opacity: 1; translate: 0 0; }
@media (prefers-reduced-motion: reduce) {
  .hero-sparkle, .about-sparkle { animation: none !important; opacity: 1; scale: 1; filter: none; }
  .tape-content, .hero .photo-frame, .wordmark-star { animation: none !important; }
  .motion-reveal { opacity: 1 !important; translate: 0 0 !important; transition: none !important; }
  .photo-frame:hover .hero-photo, .travel-photo:hover img { transform: none; }
}
