/* ============================================
   Scroll Reveal — Slide Up Animation
   Usage: add data-reveal to any element.
   Variants: data-reveal="left" | "right" | "scale"
   Siblings in the same parent stagger 90ms apart.
   Requires reveal.js (below) — no dependencies.
   ============================================ */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .75s cubic-bezier(.22,1,.36,1),
              transform .75s cubic-bezier(.22,1,.36,1);
}
[data-reveal="left"]  { transform: translateX(-28px); }
[data-reveal="right"] { transform: translateX(28px); }
[data-reveal="scale"] { transform: scale(.93); }
[data-reveal].revealed { opacity: 1; transform: none; }

/* ============================================
   Card Hover — Slide Up (translateY lift)
   Used on: .faculty-card, .student-card
   ============================================ */
.card-hover-lift {
  transition: border-color .3s, transform .4s cubic-bezier(.22,1,.36,1);
}
.card-hover-lift:hover {
  transform: translateY(-4px);
}

/* ============================================
   Card Hover — Bottom Border Sweep
   Used on: .partner-card, .role-card, .toc-link
   A gold bar slides in from left on hover.
   ============================================ */
.card-border-sweep {
  position: relative;
  overflow: hidden;
  transition: border-color .3s;
}
.card-border-sweep::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: #FFC904;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .4s cubic-bezier(.22,1,.36,1);
}
.card-border-sweep:hover::after {
  transform: scaleX(1);
}

@media (min-width: 992px) {
  .card-fix {
    margin-left: -15px;
  }
}
