@keyframes orb-pulse {
  0%, 100% { box-shadow: 0 0 0 0 var(--orb-color, rgba(232,148,58,0.4)); transform: scale(1); }
  50% { box-shadow: 0 0 30px 8px var(--orb-color, rgba(232,148,58,0.1)); transform: scale(1.03); }
}

@keyframes cal-pulse {
  0%, 100% { transform: scale(1); opacity: 0.5; }
  50% { transform: scale(1.15); opacity: 1; }
}

@keyframes bounce-y {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(6px); }
}

@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@keyframes fade-up {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes ink-drop {
  from { opacity: 0; filter: blur(20px); transform: translateY(40px); }
  to { opacity: 1; filter: blur(0); transform: translateY(0); }
}

@keyframes branch-draw {
  from { stroke-dashoffset: 1000; }
  to { stroke-dashoffset: 0; }
}

@keyframes loader-expand {
  from { width: 1px; height: 1px; opacity: 1; }
  to { width: 200vmax; height: 200vmax; opacity: 0.85; }
}

@keyframes star-twinkle {
  0%, 100% { opacity: var(--star-opacity, 0.7); }
  50% { opacity: calc(var(--star-opacity, 0.7) * 0.2); }
}

.reveal-up {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.8s var(--ease-out-expo), transform 0.8s var(--ease-out-expo);
}

.reveal-up.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.reveal-left {
  opacity: 0;
  transform: translateX(-60px);
  transition: opacity 0.9s var(--ease-out-expo), transform 0.9s var(--ease-out-expo);
}

.reveal-left.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.reveal-right {
  opacity: 0;
  transform: translateX(60px);
  transition: opacity 0.9s var(--ease-out-expo), transform 0.9s var(--ease-out-expo);
}

.reveal-right.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.reveal-scale {
  opacity: 0;
  transform: scale(0.94);
  transition: opacity 0.8s var(--ease-out-expo), transform 0.8s var(--ease-out-expo);
}

.reveal-scale.is-visible {
  opacity: 1;
  transform: scale(1);
}

[data-delay="1"] { transition-delay: 0.1s; }
[data-delay="2"] { transition-delay: 0.2s; }
[data-delay="3"] { transition-delay: 0.3s; }
[data-delay="4"] { transition-delay: 0.4s; }
[data-delay="5"] { transition-delay: 0.5s; }
[data-delay="6"] { transition-delay: 0.6s; }

.parallax-slow { will-change: transform; }
.parallax-medium { will-change: transform; }

.branch-svg path,
.branch-svg line {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  transition: stroke-dashoffset 1.8s var(--ease-out-expo);
}

.branch-svg.animate path,
.branch-svg.animate line {
  stroke-dashoffset: 0;
}

.word-reveal {
  display: inline-block;
  overflow: hidden;
}

.word-reveal .inner {
  display: inline-block;
  transform: translateY(105%);
  transition: transform 0.7s var(--ease-out-expo);
}

.word-reveal.is-visible .inner {
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .reveal-up,
  .reveal-left,
  .reveal-right,
  .reveal-scale {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
