.fade-slide {
  animation: fadeSlide .5s ease;
}
@keyframes fadeSlide {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

.badge-pop {
  animation: pop .5s ease;
}
@keyframes pop {
  from { opacity: 0; transform: scale(.85); }
  to   { opacity: 1; transform: scale(1); }
}

.bg-photo {
  background-size: cover;
  background-position: center;
  transition: background-image .4s ease;
}

/* Sector card hover */
.sector-hover {
  transition: transform .5s cubic-bezier(.22,1,.36,1),
              box-shadow .5s cubic-bezier(.22,1,.36,1);
}
.sector-hover .bg-photo {
  transition: transform .9s cubic-bezier(.22,1,.36,1),
              filter .5s ease;
}
.sector-hover .sector-badge {
  transition: transform .5s cubic-bezier(.22,1,.36,1),
              background .35s ease,
              color .35s ease,
              box-shadow .35s ease;
}
.sector-hover .sector-badge i,
.sector-hover .sector-badge svg {
  transition: color .35s ease, stroke .35s ease;
}
.sector-hover .sector-caption {
  transition: transform .5s cubic-bezier(.22,1,.36,1);
}
.sector-hover:hover {
  transform: translateY(-6px);
  box-shadow: 0 30px 60px rgba(15,30,53,.28);
}
.sector-hover:hover .bg-photo {
  transform: scale(1.08);
  filter: saturate(1.1);
}
.sector-hover:hover .sector-badge {
  transform: rotate(-8deg) scale(1.12);
  background: #2638D9;
  box-shadow: 0 12px 28px rgba(38,56,217,.5);
}
.sector-hover:hover .sector-badge i,
.sector-hover:hover .sector-badge svg {
  color: #fff !important;
  stroke: #fff !important;
}
.sector-hover:hover .sector-caption {
  transform: translateX(4px);
}

/* Sector scroll reveal */
.sector-anim {
  opacity: 0;
  transition: opacity .9s cubic-bezier(.22,1,.36,1), transform .9s cubic-bezier(.22,1,.36,1);
  will-change: opacity, transform;
}
.sector-anim-left  { transform: translateX(-40px); }
.sector-anim-right { transform: translateX(40px); }
@media (max-width: 1023px) {
  .sector-anim-left, .sector-anim-right { transform: translateY(28px); }
}
.sector-anim.is-visible {
  opacity: 1;
  transform: translate(0, 0);
}

/* Generic reveal (for CTA banner) */
.reveal {
  transition: opacity .8s cubic-bezier(.22,1,.36,1), transform .8s cubic-bezier(.22,1,.36,1);
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1 !important;
  transform: translate(0, 0) !important;
}

/* CTA background pulse */
@keyframes ctaPulse {
  0%,100% { opacity: .55; transform: scale(1); }
  50%     { opacity: .85; transform: scale(1.08); }
}
.cta-pulse { animation: ctaPulse 7s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
  .sector-hover, .sector-hover *,
  .sector-anim, .reveal, .cta-pulse {
    transition: none !important;
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
