/* ===== Animations ===== */

/* Typewriter effect */
.typewriter {
  overflow: hidden;
  border-right: 3px solid;
  white-space: nowrap;
  animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite;
  width: 0;
  animation-fill-mode: forwards;
}

@keyframes typing {
  from { width: 0 }
  to { width: 100% }
}

@keyframes blink-caret {
  from, to { border-color: transparent }
  50% { border-color: currentColor }
}

/* Fade in up */
.animate-on-scroll {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}

.animate-on-scroll.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Slide in from left */
.slide-in-left {
  opacity: 0;
  transform: translateX(-60px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.slide-in-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* Slide in from right */
.slide-in-right {
  opacity: 0;
  transform: translateX(60px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.slide-in-right.visible {
  opacity: 1;
  transform: translateX(0);
}

/* Scale up */
.scale-up {
  opacity: 0;
  transform: scale(0.8);
  transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

.scale-up.visible {
  opacity: 1;
  transform: scale(1);
}

/* Pop in for tags/badges */
.pop-in {
  opacity: 0;
  transform: scale(0.5);
  transition: opacity 0.4s ease-out, transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.pop-in.visible {
  opacity: 1;
  transform: scale(1);
}

/* Stagger delay classes */
.delay-100 { transition-delay: 0.1s; }
.delay-200 { transition-delay: 0.2s; }
.delay-300 { transition-delay: 0.3s; }
.delay-400 { transition-delay: 0.4s; }
.delay-500 { transition-delay: 0.5s; }
.delay-600 { transition-delay: 0.6s; }
.delay-700 { transition-delay: 0.7s; }

/* Hero fade in */
.hero-fade {
  opacity: 0;
  animation: fadeIn 1s ease-out forwards;
}

.hero-fade.delay-photo {
  animation-delay: 0.3s;
}

.hero-fade.delay-text {
  animation-delay: 0.6s;
}

.hero-fade.delay-tagline {
  animation-delay: 1s;
}

@keyframes fadeIn {
  to { opacity: 1; }
}

/* Timeline line */
.timeline-line {
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 2px;
  transform: translateX(-50%);
}

@media (max-width: 767px) {
  .timeline-line {
    left: 1rem;
  }
}

/* Card hover lift */
.card-hover {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.card-hover:hover {
  transform: translateY(-6px);
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15);
}

/* Smooth scroll */
html {
  scroll-behavior: smooth;
}

/* Dark mode transition */
* {
  transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
