/* Micro-motion for touch and desktop; never hide content while scrolling. */
@keyframes aviv-arrive{
 from{opacity:.68;transform:translate3d(0,23px,0)}
 to{opacity:1;transform:translate3d(0,0,0)}
}
@keyframes aviv-breathe{
 0%,100%{transform:translate3d(0,0,0) scale(1)}
 50%{transform:translate3d(0,-2px,0) scale(1.009)}
}
@keyframes aviv-tiny-progress{
 0%,100%{transform:scaleX(.25);opacity:.35}
 50%{transform:scaleX(1);opacity:.95}
}
.entered-view.project-card .project-frame img,
.entered-view.front-art .front-art-photo img,
.about-skill-grid article.entered-view,
.about-story-section h2.entered-view,
.entered-view.atlas-head,
.worldmap-preview h2.entered-view,
.breather p.entered-view{
 animation:aviv-arrive .85s cubic-bezier(.2,.8,.2,1) both;
}
@media(max-width:850px){
 .artwork-stage:not(.lens-on) > img:not(.is-transitioning){
  animation:aviv-breathe 10s ease-in-out infinite;
 }
 .hero-stage-number:after{
  content:"";display:block;width:24px;height:2px;margin:4px 0 0;background:#b96756;
  transform-origin:left center;
  animation:aviv-tiny-progress 6s ease-in-out infinite;
 }
 .mobile-map-shortcuts button:active{transform:scale(.97);background:#e3eee4}
}
@media(prefers-reduced-motion:reduce){
 .artwork-stage>img,.hero-stage-number:after,.entered-view *,.entered-view{
  animation:none!important;transition-duration:0ms!important
 }
}

/* Phone-visible but restrained kinetic details. */
@keyframes aviv-living-line{
 0%,100%{background-position:0% 50%;opacity:.6}
 50%{background-position:100% 50%;opacity:1}
}
@media(max-width:850px){
 .hero-exhibit:after{
  content:"";display:block;position:relative;width:100%;height:3px;
  background:linear-gradient(100deg,#c6dfca,#f0b4a6,#bed5e4,#c6dfca);
  background-size:260% 100%;pointer-events:none;opacity:.7;
  animation:aviv-living-line 6s ease-in-out infinite
 }
 .hero-stage-number:after{
  width:45px;height:3px;animation:aviv-tiny-progress 4.4s ease-in-out infinite
 }
}
@media(prefers-reduced-motion:reduce){
 .artwork-stage>img,.hero-exhibit:after,.hero-stage-number:after{
  animation:none!important;transform:none!important
 }
}

/* Reliable mobile animation that never depends on hover or gallery transitions. */
@keyframes aviv-visible-mobile-presence{
 0%,100%{transform:translate3d(0,0,0)}
 50%{transform:translate3d(0,-5px,0)}
}
@media(max-width:850px) and (prefers-reduced-motion:no-preference){
 .hero-exhibit{animation:aviv-visible-mobile-presence 6.8s ease-in-out infinite}
}
@media(prefers-reduced-motion:reduce){
 .hero-exhibit{animation:none!important;transform:none!important}
}


/* iOS Safari fast/slow scroll: remove infinite transforms of full sections,
   shadow/background repaint loops, and delayed scroll-reveal fade-in.
   Keep deliberately controlled carousel/Earth and tiny transform-only progress. */
@media(max-width:850px){
 .hero-exhibit{animation:none!important;transform:none!important}
 .hero-exhibit::after{animation:none!important;background-position:50% 50%;opacity:.45}
 .artwork-stage:not(.lens-on)>img:not(.is-transitioning){animation:none!important}
 .hero-exhibit .artwork-stage>img#hero-image{animation:none!important}
 .entered-view.project-card .project-frame img,
 .entered-view.front-art .front-art-photo img,
 .about-skill-grid article.entered-view,
 .about-story-section h2.entered-view,
 .entered-view.atlas-head,
 .worldmap-preview h2.entered-view,
 .breather p.entered-view{animation:none!important;opacity:1}
}
