/* =============================================
   ANIMATIONS & RESPONSIVE
   ============================================= */

/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s var(--ease-out-expo), transform 0.7s var(--ease-out-expo);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Hero entrance */
.hero-text > * {
  opacity: 0;
  transform: translateY(18px);
  animation: fadeUp 0.8s var(--ease-out-expo) forwards;
}
.hero-text > *:nth-child(1) { animation-delay: 0.05s; }
.hero-text > *:nth-child(2) { animation-delay: 0.12s; }
.hero-text > *:nth-child(3) { animation-delay: 0.25s; }

.hero-right {
  opacity: 0;
  animation: fadeUp 1s var(--ease-out-expo) 0.3s forwards;
}

.news-strip {
  opacity: 0;
  animation: fadeUp 0.8s var(--ease-out-expo) 0.55s forwards;
}

@keyframes fadeUp {
  to { opacity: 1; transform: translateY(0); }
}

/* ---- Responsive ---- */

@media (max-width: 768px) {
  .nav { padding: 0.7rem 1.25rem; }
  .nav-links { gap: 1rem; }
  .container { padding: 0 1.25rem; }
  section { padding: 3.5rem 0; }

  .hero { min-height: auto; padding-top: 5rem; padding-bottom: 2rem; }
  .hero-main { grid-template-columns: 1fr; gap: 1.5rem; }

  /* Reorder: name first, then avatar, then bio */
  .hero-text { display: contents; }
  .hero-name { order: 1; }
  .hero-right { order: 2; }
  .hero-bio  { order: 3; }

  /* Bigger name & pronouns on mobile */
  .hero-name { font-size: clamp(1.7rem, 5vw, 2rem); margin-bottom: 0; }
  .hero-pronouns { font-size: 0.42em; }

  .blob-wrap { width: 180px; height: 180px; }
  .blob-shape { width: 160px; height: 160px; }
  .blob-dots { display: none; }
  .news-strip { margin-top: 2rem; }

  .pub-item { grid-template-columns: 1fr; }
  .pub-image { height: auto !important; min-height: auto; aspect-ratio: 4 / 3; }
  .pub-image img { transform: none !important; object-position: center !important; }
  .pub-cr { flex-direction: column; gap: 0.2rem; }
  .pub-header-row { flex-direction: column; gap: 0.75rem; }
}

@media (max-width: 480px) {
  .nav-links { gap: 0.6rem; }
}