/* ============================================================
   陈兰彬文化教育基地 · 动效系统 v2.0
   原则：克制、微妙、有节奏。所有动效尊重 reduced-motion。
   ============================================================ */

/* 滚动淡入：默认上移 28px，可叠加延迟 */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s cubic-bezier(0.22, 1, 0.36, 1),
              transform .8s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}

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

/* 分段延迟：营造叙事节奏 */
.reveal.d1 { transition-delay: .1s; }
.reveal.d2 { transition-delay: .2s; }
.reveal.d3 { transition-delay: .3s; }
.reveal.d4 { transition-delay: .4s; }
.reveal.d5 { transition-delay: .5s; }

/* 从左侧滑入（图片/卡片） */
.reveal-left {
  opacity: 0;
  transform: translateX(-32px);
  transition: opacity .8s cubic-bezier(0.22, 1, 0.36, 1),
              transform .8s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* 从右侧滑入 */
.reveal-right {
  opacity: 0;
  transform: translateX(32px);
  transition: opacity .8s cubic-bezier(0.22, 1, 0.36, 1),
              transform .8s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal-right.visible {
  opacity: 1;
  transform: translateX(0);
}

/* 图片微缩放（入场后恢复） */
.img-frame img {
  transition: transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

/* 图片 hover 微放大（画框内） */
.img-frame:hover img {
  transform: scale(1.015);
}

/* 阅读进度条 */
.scroll-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 100vw;
  background: linear-gradient(90deg, var(--cinnabar), var(--gold));
  z-index: 200;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .1s linear;
  pointer-events: none;
}

/* 灯箱 */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  background: rgba(10, 12, 14, 0.94);
  display: none;
  align-items: center;
  justify-content: center;
  padding: var(--space-4);
  cursor: zoom-out;
}

.lightbox.open { display: flex; animation: lbFade .3s ease; }

.lightbox img {
  max-width: 92vw;
  max-height: 86vh;
  object-fit: contain;
  border-radius: var(--radius);
  box-shadow: 0 20px 80px rgba(0,0,0,0.6);
}

.lightbox .lb-cap {
  position: absolute;
  bottom: var(--space-4);
  left: 50%;
  transform: translateX(-50%);
  color: rgba(247,242,231,0.8);
  font-size: 13px;
  font-family: var(--font-sans);
  letter-spacing: 1px;
  text-align: center;
  max-width: 80%;
}

.lightbox .lb-close {
  position: absolute;
  top: var(--space-3);
  right: var(--space-4);
  color: var(--paper);
  font-size: 32px;
  cursor: pointer;
  background: none;
  border: none;
  line-height: 1;
  opacity: .8;
  transition: opacity .2s;
}

.lightbox .lb-close:hover { opacity: 1; }

@keyframes lbFade {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-left, .reveal-right {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .reveal.d1, .reveal.d2, .reveal.d3, .reveal.d4, .reveal.d5 { transition-delay: 0s; }
  .hero-cover img.hero-bg { animation: none; transform: none; }
  html { scroll-behavior: auto; }
}
