/* Stagger Text Animations */
.stagger-text {
  overflow: hidden;
  display: inline-block;
  line-height: 1.2;
}

.stagger-text > span {
  display: inline-block;
}

.stagger-text > span > span {
  display: inline-block;
  transform: translateY(100%);
  opacity: 0;
  transition: transform var(--transition-slow), opacity var(--transition-slow);
}

.stagger-text.in-view > span > span {
  transform: translateY(0);
  opacity: 1;
}

/* Clip-Path Reveals */
.reveal-image-container {
  overflow: hidden;
  position: relative;
}

.reveal-image {
  clip-path: polygon(0 0, 0 0, 0 100%, 0% 100%);
  transition: clip-path 1.2s cubic-bezier(0.77, 0, 0.175, 1);
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.1);
  transition: clip-path 1.2s cubic-bezier(0.77, 0, 0.175, 1), transform 1.5s cubic-bezier(0.25, 1, 0.5, 1);
}

.reveal-image.in-view {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transform: scale(1);
}

/* Fade Up */
.fade-up {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.8s cubic-bezier(0.25, 1, 0.5, 1), transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
}

.fade-up.in-view {
  opacity: 1;
  transform: translateY(0);
}

/* Page Transition Overlay */
.page-transition-overlay.animating-out {
  transform: translateY(0);
  transition: transform 0.6s cubic-bezier(0.77, 0, 0.175, 1);
}

.page-transition-overlay.animating-in {
  transform: translateY(-100%);
  transition: transform 0.6s cubic-bezier(0.77, 0, 0.175, 1);
}

/* SVG Path Animation */
.svg-draw path {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  transition: stroke-dashoffset 2s ease-in-out;
}

.svg-draw.in-view path {
  stroke-dashoffset: 0;
}

/* Card Hover 3D / Lift */
.hover-card {
  transition: transform var(--transition-fast), box-shadow var(--transition-fast);
  will-change: transform;
}

.hover-card:hover {
  transform: translateY(-10px);
  box-shadow: 0 20px 40px rgba(0,0,0,0.4);
}
