/* ═══════════════════════════════════════════════════════════════════
   ITI Ke Gyani — PAGE INTERACTIVE PACK CSS (2026-08-01)
   Universal animation + polish for public content pages.
   Pairs with /assets/js/page-interactive.js which toggles .is-in.
   ═══════════════════════════════════════════════════════════════════ */

/* ── Scroll-reveal states ──────────────────────────────────────────── */
[data-reveal],
.fade-up,
.fade-in,
.slide-in,
.reveal-on-scroll {
  opacity: 0;
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
.fade-up            { transform: translateY(32px); }
.fade-in            { transform: none; }
.slide-in           { transform: translateX(-40px); }
[data-reveal="right"] { transform: translateX(40px); }
[data-reveal="zoom"]  { transform: scale(0.94); }

.fade-up.is-in,
.fade-in.is-in,
.slide-in.is-in,
.reveal-on-scroll.is-in,
[data-reveal].is-in {
  opacity: 1;
  transform: none;
}

/* Staggered children — add [data-reveal-stagger] on the parent */
[data-reveal-stagger] > * {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
[data-reveal-stagger].is-in > *          { opacity: 1; transform: none; }
[data-reveal-stagger].is-in > *:nth-child(1) { transition-delay: 0.02s; }
[data-reveal-stagger].is-in > *:nth-child(2) { transition-delay: 0.08s; }
[data-reveal-stagger].is-in > *:nth-child(3) { transition-delay: 0.14s; }
[data-reveal-stagger].is-in > *:nth-child(4) { transition-delay: 0.20s; }
[data-reveal-stagger].is-in > *:nth-child(5) { transition-delay: 0.26s; }
[data-reveal-stagger].is-in > *:nth-child(6) { transition-delay: 0.32s; }
[data-reveal-stagger].is-in > *:nth-child(7) { transition-delay: 0.38s; }
[data-reveal-stagger].is-in > *:nth-child(8) { transition-delay: 0.44s; }

/* ── Count-up numbers — subtle pulse when reaching target ──────────── */
[data-count], [data-countup] {
  display: inline-block;
  font-variant-numeric: tabular-nums;
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
[data-count].is-in, [data-countup].is-in {
  transform: scale(1);
  animation: countup-pop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes countup-pop {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}

/* ── Filter chips — active pill state ──────────────────────────────── */
[data-filter-group] [data-filter] {
  transition: all 0.25s cubic-bezier(0.22, 1, 0.36, 1);
  cursor: pointer;
}
[data-filter-group] [data-filter].is-active {
  background: linear-gradient(135deg, var(--saffron, #FF6B00), #FF8F3F) !important;
  color: #fff !important;
  border-color: var(--saffron, #FF6B00) !important;
  box-shadow: 0 8px 20px rgba(255, 107, 0, 0.35);
  transform: translateY(-1px);
}
[data-filter-group] [data-filter]:hover:not(.is-active) {
  transform: translateY(-1px);
  border-color: var(--saffron, #FF6B00) !important;
  color: var(--saffron, #FF6B00) !important;
}

/* ── Sticky bar shadow when scrolled past ──────────────────────────── */
.sticky-bar, [data-sticky] {
  position: sticky;
  top: 0;
  z-index: 20;
  background: var(--bg, #fff);
  transition: box-shadow 0.3s ease, backdrop-filter 0.3s ease;
}
.sticky-bar.is-stuck, [data-sticky].is-stuck {
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  backdrop-filter: saturate(1.4) blur(8px);
  -webkit-backdrop-filter: saturate(1.4) blur(8px);
}

/* ── Card hover — universal lift + saffron glow on interactive cards ── */
.state-card, .portal-card, .job-card, .nsti-card, .center-card,
.mela-card, .info-card, .app-card, .intern-card, .overseas-card,
.tips-card, .faq-item, .cat-card, .campus-card {
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              border-color 0.25s ease;
  will-change: transform;
}
.state-card:hover, .portal-card:hover, .job-card:hover, .nsti-card:hover,
.center-card:hover, .mela-card:hover, .info-card:hover, .app-card:hover,
.intern-card:hover, .overseas-card:hover, .tips-card:hover, .cat-card:hover,
.campus-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 22px 45px rgba(0, 0, 0, 0.12), 0 8px 16px rgba(255, 107, 0, 0.10);
}

/* ── Icon pulse on card hover (children with .card-icon / .jc-logo / .portal-logo) ── */
.state-card:hover .state-flag,
.portal-card:hover .portal-logo,
.portal-card:hover .portal-logo-fallback,
.job-card:hover .jc-logo,
.info-card:hover .info-icon,
.app-card:hover .ac-icon,
.tips-card:hover .tc-icon {
  transform: scale(1.12) rotate(-6deg);
  transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ── Gradient border sheen on important cards (opt-in via .card-gradient-border) ── */
.card-gradient-border {
  position: relative;
  isolation: isolate;
}
.card-gradient-border::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: linear-gradient(135deg, var(--saffron, #FF6B00), #FFB067, var(--navy, #0F2040));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
  z-index: -1;
}
.card-gradient-border:hover::before { opacity: 1; }

/* ── Shimmer on badges / NEW pills ─────────────────────────────────── */
.badge-new, .pill-new, .is-new {
  position: relative;
  overflow: hidden;
}
.badge-new::after, .pill-new::after, .is-new::after {
  content: "";
  position: absolute;
  top: 0; left: -100%;
  width: 50%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.5), transparent);
  animation: badge-shimmer 2.4s cubic-bezier(0.22, 1, 0.36, 1) infinite;
}
@keyframes badge-shimmer {
  0%   { left: -100%; }
  60%  { left: 150%; }
  100% { left: 150%; }
}

/* ── Sticky filter chip-row — used by pages that add .chip-bar-sticky ── */
.chip-bar-sticky {
  position: sticky;
  top: 62px;
  z-index: 15;
  background: rgba(255,255,255,0.92);
  backdrop-filter: saturate(1.4) blur(10px);
  -webkit-backdrop-filter: saturate(1.4) blur(10px);
  padding: 12px 0;
  margin: 0 -12px 20px;
  border-bottom: 1px solid var(--border, #E7EBF2);
}

/* ── Mobile refinements ────────────────────────────────────────────── */
@media (max-width: 768px) {
  /* Tighter hero */
  .hero, .page-hero, [class^="hero"] {
    padding-top: 2.5rem !important;
    padding-bottom: 1rem !important;
  }
  /* Stat grids reflow */
  .stat-grid, .stat-strip-row {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 0.75rem !important;
  }
  .stat-val, .ss-val, .stat-strip-num {
    font-size: 1.4rem !important;
  }
  /* Cards padding */
  .state-card, .portal-card, .job-card, .info-card,
  .app-card, .intern-card, .overseas-card, .tips-card {
    border-radius: 14px !important;
  }
  /* Chips scroll horizontally instead of wrapping onto 3 rows */
  [data-filter-group],
  .state-filter-row,
  .hero-cats,
  .pj-filter {
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
    padding-bottom: 8px;
    margin: 0 -16px 16px;
    padding-left: 16px;
    padding-right: 16px;
    scrollbar-width: none;
  }
  [data-filter-group]::-webkit-scrollbar,
  .state-filter-row::-webkit-scrollbar,
  .hero-cats::-webkit-scrollbar,
  .pj-filter::-webkit-scrollbar { display: none; }
  [data-filter-group] > *,
  .state-filter-row > *,
  .hero-cats > *,
  .pj-filter > * {
    flex: 0 0 auto !important;
    scroll-snap-align: start;
  }
  /* Thumb-friendly buttons */
  .btn, .hero-btns .btn, .hero-actions .btn {
    min-height: 44px;
    padding: 12px 18px !important;
  }
}

/* ── Reduced-motion — kill all motion ──────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  [data-reveal], .fade-up, .fade-in, .slide-in, .reveal-on-scroll,
  [data-reveal-stagger] > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  [data-count], [data-countup] { animation: none !important; }
  .badge-new::after, .pill-new::after, .is-new::after { animation: none !important; }
}

/* ── Print mode — hide interactive-only elements ───────────────────── */
@media print {
  .chip-bar-sticky, .sticky-bar, [data-sticky] { position: static !important; box-shadow: none !important; }
  [data-reveal], .fade-up, .fade-in, .slide-in { opacity: 1 !important; transform: none !important; }
}
