

/* ---------- Magnetic / lift on hover ---------- */
.magnet {
  transition: transform .35s var(--ease-out), box-shadow .35s var(--ease-out);
  will-change: transform;
}
.magnet:hover {
  transform: translateY(-4px) scale(1.005);
  box-shadow: 0 18px 50px -18px rgba(11,120,179,.45);
}

/* ---------- Shine sweep on hover (for cards) ---------- */
.shine {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.shine::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.12) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform .9s var(--ease-out);
  pointer-events: none;
  z-index: 2;
}
.shine:hover::after { transform: translateX(120%); }

/* ---------- Gradient text shift ---------- */
@keyframes grad-shift {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
.grad-text {
  background: linear-gradient(120deg, var(--c-bright) 0%, #0A5C8B 35%, var(--c-deep) 70%, var(--c-bright) 100%);
  background-size: 300% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: grad-shift 8s var(--ease-in-out) infinite;
}

/* ---------- Floating chips (gentle bob) ---------- */
@keyframes float-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}
.float { animation: float-bob 4s var(--ease-in-out) infinite; }
.float-2 { animation: float-bob 5.2s var(--ease-in-out) infinite .4s; }
.float-3 { animation: float-bob 6s var(--ease-in-out) infinite .9s; }

/* ---------- Pulse halo (for accent badges) ---------- */
@keyframes halo-pulse {
  0%   { box-shadow: 0 0 0 0   rgba(11,120,179,.55); }
  70%  { box-shadow: 0 0 0 14px rgba(11,120,179,0); }
  100% { box-shadow: 0 0 0 0   rgba(11,120,179,0); }
}
.halo { animation: halo-pulse 2.4s var(--ease-out) infinite; }

/* ---------- Underline grow on links ---------- */
.uline {
  position: relative;
  display: inline-block;
}
.uline::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -3px;
  height: 2px;
  background: linear-gradient(90deg, var(--c-bright), #0A5C8B);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .35s var(--ease-out);
}
.uline:hover::after { transform: scaleX(1); }

/* ---------- Section transition lines ---------- */
.divider-line {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--c-line-strong), transparent);
}

/* ---------- Stagger reveal (each child fades in) ---------- */
.stagger > * {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}
.stagger.is-in > * { opacity: 1; transform: none; }
.stagger.is-in > *:nth-child(1) { transition-delay: .04s; }
.stagger.is-in > *:nth-child(2) { transition-delay: .12s; }
.stagger.is-in > *:nth-child(3) { transition-delay: .2s; }
.stagger.is-in > *:nth-child(4) { transition-delay: .28s; }
.stagger.is-in > *:nth-child(5) { transition-delay: .36s; }
.stagger.is-in > *:nth-child(6) { transition-delay: .44s; }
.stagger.is-in > *:nth-child(7) { transition-delay: .52s; }
.stagger.is-in > *:nth-child(8) { transition-delay: .6s; }
.stagger.is-in > *:nth-child(9) { transition-delay: .68s; }
.stagger.is-in > *:nth-child(10){ transition-delay: .76s; }
.stagger.is-in > *:hover { transition-delay: 0s !important; }

/* ---------- Spotlight follow (pointer-tracked) ---------- */
.spotlight {
  position: relative;
  overflow: hidden;
}
.spotlight::before {
  content: '';
  position: absolute;
  top: var(--sy, 50%); left: var(--sx, 50%);
  width: 320px; height: 320px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(11,120,179,.11), transparent 60%);
  opacity: 0;
  transition: opacity .35s var(--ease-out);
  pointer-events: none;
  z-index: 0;
}
.spotlight:hover::before { opacity: 1; }
.spotlight > * { position: relative; z-index: 1; }

/* ---------- Marquee on hover pause (already in partners but reusable) ---------- */
@keyframes marquee {
  to { transform: translateX(-50%); }
}

/* ---------- Page entrance ---------- */
.page-enter {
  opacity: 0;
  transform: translateY(8px);
  animation: page-fade .8s var(--ease-out) forwards;
}
@keyframes page-fade {
  to { opacity: 1; transform: none; }
}

/* ---------- Number count with subtle glow ---------- */
.stat-num [data-count] {
  background: linear-gradient(135deg, #fff 0%, var(--c-bright) 80%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
