/* ===========================
   PAGES
   =========================== */


.page { display: none; animation: pageFade .45s ease forwards; }
.page.active { display: block; }
@keyframes pageFade { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} }

/* ---- Scroll Reveal Animations ---- */
.reveal { opacity: 0; transform: translateY(30px); transition: opacity .7s ease, transform .7s cubic-bezier(.25,.46,.45,.94); }
.reveal.visible { opacity: 1; transform: translateY(0); }

.reveal-left { opacity: 0; transform: translateX(-40px); transition: opacity .7s ease, transform .7s cubic-bezier(.25,.46,.45,.94); }
.reveal-left.visible { opacity: 1; transform: translateX(0); }

.reveal-right { opacity: 0; transform: translateX(40px); transition: opacity .7s ease, transform .7s cubic-bezier(.25,.46,.45,.94); }
.reveal-right.visible { opacity: 1; transform: translateX(0); }

.reveal-scale { opacity: 0; transform: scale(.92); transition: opacity .6s ease, transform .6s cubic-bezier(.25,.46,.45,.94); }
.reveal-scale.visible { opacity: 1; transform: scale(1); }

/* Stagger delays — add data-delay="0.15s" to element for custom delay */
.stagger-1 { transition-delay: 0s; }
.stagger-2 { transition-delay: .15s; }
.stagger-3 { transition-delay: .3s; }
.stagger-4 { transition-delay: .45s; }
.stagger-5 { transition-delay: .6s; }
.stagger-6 { transition-delay: .75s; }

/* ===========================
   NEWS STRIP (Compact on institute pages)
   =========================== */
.news-strip { background: rgba(var(--red-rgb),.03); padding: 1.25rem 0; border-bottom: 1px solid rgba(var(--red-rgb),.08); }
[data-theme="dark"] .news-strip { background: rgba(255,255,255,.02); border-bottom: 1px solid rgba(var(--red-rgb),.06); }
.ns-header { display:flex; flex-direction:column; align-items:center; gap:.35rem; margin-bottom:1rem; text-align:center; }
.ns-header h2 { font-size:1.05rem; font-weight:800; margin:0; }
.ns-header .ns-tag { font-size:.65rem; font-weight:700; background:var(--red); color:#fff; padding:.2rem .55rem; border-radius:var(--radius-sm); letter-spacing:.3px; }
.news-strip { position: relative; }
.news-strip .container { overflow: hidden; }
.news-strip-grid { display: flex; gap: 1rem; width: max-content; will-change: transform; direction: ltr; }
.news-strip-grid.is-animated { animation: newsScroll 40s linear infinite; }
.news-strip:hover .news-strip-grid.is-animated { animation-play-state: paused; }
/*@keyframes newsScroll { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }*/
.nscard {
  display: flex; flex-direction: column; background: var(--bg-light-card);
  border-radius: var(--radius); overflow: hidden;
  border: 1px solid var(--border); transition: var(--transition);
  min-width: 280px; max-width: 280px; cursor: pointer;
}
[data-theme="dark"] .nscard { background: var(--bg-card); border-color: rgba(var(--red-rgb),.1); }
.nscard:hover { border-color: var(--nc,var(--red)); transform: translateY(-3px); box-shadow: var(--shadow-hover); }
.nscard-img { height: 180px; overflow: hidden; }
.nscard-img img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.nscard:hover .nscard-img img { transform: scale(1.04); }
.nscard-body { padding: .75rem .85rem .85rem; }
.nscard-meta { font-size: .72rem; color: var(--text-tertiary); line-height: 1.3; margin-bottom: .25rem; }
.nscard-body h4 { font-size: .85rem; font-weight: 700; line-height: 1.45; margin:0; color:var(--text-primary); }

/* ===========================
   SECTION DIVIDERS — Creative
   =========================== */
.section-divider { position:relative; }
.section-divider::before { content:''; position:absolute; top:-2px; left:0; right:0; height:6px; background:linear-gradient(90deg,transparent 0%,var(--red) 20%,var(--red) 80%,transparent 100%); opacity:.35; border-radius:3px; }
.section-alt .section-divider::before { background:linear-gradient(90deg,transparent 0%,rgba(var(--red-rgb),.5) 30%,rgba(var(--red-rgb),.5) 70%,transparent 100%); opacity:.2; }

.section-wave { position:relative; }
.section-wave::after { content:''; position:absolute; bottom:-2px; left:0; right:0; height:20px; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 20'%3E%3Cpath d='M0,10 Q150,0 300,10 T600,10 T900,10 T1200,10 L1200,20 L0,20 Z' fill='rgba(var(--red-rgb),.06)'/%3E%3C/svg%3E") repeat-x; background-size:600px 20px; pointer-events:none; }

/* ===========================
   BUTTONS
   =========================== */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .8rem 2rem; border-radius: 2rem;
  font-family: var(--font); font-size: .9rem; font-weight: 700;
  cursor: pointer; border: 1.5px solid transparent; transition: all .3s cubic-bezier(.4,0,.2,1);
  letter-spacing: .3px;
}
.btn-primary { background: var(--red-gradient); color: var(--white); box-shadow: 0 4px 20px rgba(var(--red-rgb),.3); }
.btn-primary:hover { background: var(--red-dark); transform: translateY(-2px); box-shadow: 0 8px 30px rgba(var(--red-rgb),.4); }
.btn-ghost { background: transparent; border-color: rgba(255,255,255,.25); color: var(--white); }
.btn-ghost:hover { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.5); backdrop-filter: blur(4px); }
.btn-white { background: var(--white); color: var(--red); }
.btn-white:hover { background: var(--gray-light); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,.15); }
.btn-outline-white { background: transparent; border-color: rgba(255,255,255,.4); color: var(--white); }
.btn-outline-white:hover { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.7); }
.w-full { width: 100%; }
.btn-card {
  margin-top: 1.25rem; background: none; border: none;
  color: var(--red); font-family: var(--font); font-weight: 800;
  font-size: 1.1rem; cursor: pointer; transition: var(--transition); padding: 0;
  display: block; text-align: center; text-decoration: underline; text-underline-offset: 4px;
  white-space: nowrap;
}
.btn-card:hover { letter-spacing: .5px; }

/* ===========================
   SECTION HEADER
   =========================== */
.section-header { text-align: center; margin-bottom: 3.5rem; }
.section-tag {
  display: inline-block; background: rgba(var(--red-rgb),.08);
  color: var(--red); border: 1px solid rgba(var(--red-rgb),.2);
  padding: .3rem 1rem; border-radius: 2rem; font-size: .8rem;
  font-weight: 700; margin-bottom: 1rem; position:relative; overflow:hidden;
}
.section-tag::before { content:''; position:absolute; top:0; left:-100%; width:100%; height:100%; background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent); animation:tagShine 3s ease-in-out infinite; pointer-events:none; }
@keyframes tagShine { 0%{left:-100%} 50%{left:100%} 100%{left:100%} }
.section-header h2 { font-size: clamp(1.7rem,3vw,2.6rem); font-weight: 900; margin-bottom: .75rem; position:relative; display:inline-block; }
.section-header h2::after { content:''; display:block; width:60px; height:3px; background:linear-gradient(90deg,transparent,var(--red),transparent); margin:.5rem auto 0; border-radius:2px; }
.section-header.visible h2::after { animation:headerLine .8s cubic-bezier(.15,.85,.3,1.1) forwards; }
@keyframes headerLine { 0%{width:0;opacity:0} 100%{width:60px;opacity:1} }
.section-header p { color: var(--gray); }
.highlight { color: var(--red); }

