/* Phase 3 motion layer. Layout and content remain owned by visual.css and app.js. */
:root {
  --motion-fast: 0.2s;
  --motion-normal: 0.45s;
  --motion-slow: 0.8s;
  --motion-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --motion-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
}

html.gsap-motion .nameplate,
html.gsap-motion .hero-note {
  animation: none !important;
}

html.gsap-motion .exhibit-image,
html.gsap-motion .directory-preview-image,
html.gsap-motion .visual-image,
html.gsap-motion .project-hero-media {
  will-change: auto;
}

.exhibit.is-motion-active .exhibit-meta,
.exhibit:focus-within .exhibit-meta {
  color: var(--yellow, #eaff00);
}

.exhibit.is-motion-active .exhibit-open,
.exhibit:focus-within .exhibit-open {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  html.gsap-motion *,
  html.gsap-motion *::before,
  html.gsap-motion *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.001ms !important;
  }
}

/* Phase 4: 开场门板 + 悬停颜色提示。只增加动效，不改变任何内容与尺寸。 */
.intro-curtain {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  place-items: center;
  background: var(--ink);
  animation: intro-guard 0.3s 3.2s forwards; /* JS 失效时的兜底，避免遮罩挡住页面 */
}

@keyframes intro-guard {
  to {
    visibility: hidden;
    opacity: 0;
  }
}

.intro-tooth {
  position: absolute;
  background: #1b1e21;
  box-shadow: inset 0 0 0 1px #262a2e;
  will-change: transform;
}

.intro-core {
  position: relative;
  display: grid;
  justify-items: center;
  gap: 16px;
  text-align: center;
  color: var(--paper);
}

.intro-mark {
  font-size: clamp(26px, 3.2vw, 42px);
  font-weight: 600;
  letter-spacing: -0.06em;
  line-height: 1;
}

.intro-line {
  display: block;
  width: clamp(120px, 16vw, 220px);
  height: 1px;
  background: #ffffff2e;
  overflow: hidden;
}

.intro-line i {
  display: block;
  height: 100%;
  background: var(--yellow);
  transform-origin: 0 50%;
}

.intro-label {
  font: 11px var(--mono);
  letter-spacing: 0.075em;
  color: #ffffffa8;
}

/* 悬停颜色提示：只用颜色与内阴影，不产生任何尺寸变化。 */
.exhibit:hover .exhibit-meta,
.exhibit:focus-within .exhibit-meta {
  color: var(--yellow, #f1f35b);
}

.directory-row:hover {
  color: var(--paper);
}

.chapter-option:hover {
  box-shadow: inset 3px 0 0 var(--yellow, #f1f35b);
}

.proof-item:hover {
  box-shadow: inset 0 -3px 0 var(--yellow, #f1f35b);
}

.next-project:hover .eyebrow {
  color: var(--yellow, #f1f35b);
}
