/* A single quiet tempo; preserve the layout and complete project imagery. */
.reading-progress { width:100%; transform:scaleX(0); transform-origin:left; will-change:transform; }
.flower-art img { will-change:transform; }
.opening-composition[data-assembling] > .opening-panel { will-change:transform,opacity; }

.work-reveal-ready,
.discipline-panel.work-reveal-ready {
  transition-duration: .85s, 1s, .65s;
}
.work-reveal-ready:not(.in-view) { transform:translate3d(0,24px,0); }
.work-reveal-ready h2,
.work-reveal-ready .discipline-image {
  transition-duration: 1s, .85s;
  transition-delay:calc(var(--work-reveal-delay,0ms) + 60ms);
}
.work-reveal-ready:not(.in-view) .discipline-image { transform:translate3d(0,8px,0); }
/* Route cards already provide the entrance; don't animate the same artwork twice. */
#project-view .project-hero-image { animation:none; }
/* Keep dialog scrolling inexpensive, especially on phones. */
dialog::backdrop,#resume-viewer::backdrop { backdrop-filter:none; }
@media (pointer:coarse) {
  .flower-art img { will-change:auto; }
  .flower-panel:hover .flower-art img { scale:1.035; }
  .work-reveal-ready,.discipline-panel.work-reveal-ready { transition-duration:.65s,.8s,.65s; }
}
@media (prefers-reduced-motion:reduce) {
  .flower-art img { will-change:auto; transform:none!important; }
  .work-reveal-ready,.work-reveal-ready:not(.in-view),
  .work-reveal-ready h2,.work-reveal-ready .discipline-image {
    opacity:1; transform:none; transition:none!important;
  }
}
