/* ============================================================
   ELHASSANE STUDIO - Transitions & entrance animations
   ============================================================ */

/* View change animation (re-triggered by app.js on every loadView) */
.view-enter {
  animation: viewEnter 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes viewEnter {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.995);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* Landing hero entrance (staggered) */
.landing-hero > * {
  animation: rise 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.landing-hero > *:nth-child(1) { animation-delay: 0.05s; }
.landing-hero > *:nth-child(2) { animation-delay: 0.15s; }
.landing-hero > *:nth-child(3) { animation-delay: 0.25s; }
.landing-hero > *:nth-child(4) { animation-delay: 0.35s; }
.landing-hero > *:nth-child(5) { animation-delay: 0.45s; }

.landing-card {
  animation: cardIn 0.7s 0.25s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.landing-features .landing-feature {
  animation: rise 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.landing-features .landing-feature:nth-child(2) { animation-delay: 0.1s; }
.landing-features .landing-feature:nth-child(3) { animation-delay: 0.2s; }
.landing-features .landing-feature:nth-child(4) { animation-delay: 0.3s; }

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

@keyframes cardIn {
  from {
    opacity: 0;
    transform: translateY(22px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* Smooth sidebar link activation */
.sidebar-link {
  transition: all 0.2s ease;
}