/* ─── Scroll Reveal ─── */
.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity var(--duration-slow) var(--ease),
    transform var(--duration-slow) var(--ease);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger delays for child items */
.reveal[data-i="1"] { transition-delay: 80ms; }
.reveal[data-i="2"] { transition-delay: 160ms; }
.reveal[data-i="3"] { transition-delay: 240ms; }
.reveal[data-i="4"] { transition-delay: 320ms; }
.reveal[data-i="5"] { transition-delay: 400ms; }
.reveal[data-i="6"] { transition-delay: 480ms; }

/* ─── View Transition (theme toggle) ─── */
::view-transition-old(root),
::view-transition-new(root) {
  animation: none;
  mix-blend-mode: normal;
}

::view-transition-new(root) {
  z-index: 1;
}

::view-transition-old(root) {
  z-index: 0;
}

/* ─── Link Underline Slide ─── */
.link-slide {
  position: relative;
  display: inline-block;
}

.link-slide::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -1px;
  width: 0;
  height: 1px;
  background: var(--accent);
  transition: width 280ms var(--ease);
}

.link-slide:hover::after {
  width: 100%;
}

/* ─── Hero photo sheen (once per session, see photo-fx.js) ─── */
.photo-fx {
  position: relative;
  display: inline-flex;
  border-radius: 50%;
  flex-shrink: 0;
}

.photo-fx-sheen {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  overflow: hidden;
  pointer-events: none;
}

.photo-fx-sheen::before {
  content: '';
  position: absolute;
  inset: -20%;
  background: linear-gradient(115deg, transparent 42%, rgba(255, 255, 255, 0.2) 50%, transparent 58%);
  transform: translateX(-80%);
  animation: photo-sheen 1.2s cubic-bezier(0.4, 0, 0.2, 1) 0.3s 1 forwards;
}

@keyframes photo-sheen {
  to { transform: translateX(80%); }
}

/* Functional one-shot accent: keep visible under reduced-motion
   (same pattern as pulse-dot override in components.css) */
@media (prefers-reduced-motion: reduce) {
  .photo-fx-sheen::before {
    animation-duration: 1.2s !important;
  }
}
