/* Motion layer for inner pages; only active when html.motion is set (JS on, no reduced motion) */
.motion .rise{opacity:0; transform:translateY(18px); animation:zj-rise .9s cubic-bezier(.2,.7,.2,1) forwards; animation-delay:var(--d,0ms)}
@keyframes zj-rise{to{opacity:1; transform:none}}
.motion .page-main .page-title::after,
.motion .portfolio-meta h1::after{transform:scaleX(0); transform-origin:center; animation:zj-draw 1s .45s cubic-bezier(.2,.7,.2,1) forwards}
.motion .portfolio-meta h1::after{transform-origin:left}
@keyframes zj-draw{to{transform:scaleX(1)}}

.motion .rv{opacity:0; transform:translateY(28px); transition:opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); transition-delay:var(--d,0ms)}
.motion .rv.in{opacity:1; transform:none}
.motion .art-card,.motion .video-tile,.motion .press-row,.motion .event-row{animation:none}

/* Hover life */
.art-card .thumb img{transition:transform 1.1s cubic-bezier(.2,.7,.2,1), filter .6s ease}
.art-card:hover .thumb img{transform:translateY(-6px) scale(1.04); filter:drop-shadow(0 18px 28px rgba(0,0,0,.45))}
.art-card .cap a{background:linear-gradient(currentColor,currentColor) 50% 100%/0 1px no-repeat; transition:background-size .45s ease, color .3s}
.art-card:hover .cap a{background-size:100% 1px; color:var(--gold)}
.room::after{content:""; position:absolute; inset:10px; z-index:3; border:1px solid rgba(201,161,91,.0); transition:border-color .5s ease, inset .5s ease; pointer-events:none}
.room:hover::after{inset:16px; border-color:rgba(201,161,91,.65)}
.room .room-meta h2{transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.room:hover .room-meta h2{transform:translateY(-4px)}
.collection-card .thumb img{transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.collection-card:hover .thumb img{transform:scale(1.05)}
.video-tile .play svg{transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.video-tile:hover .play svg{transform:scale(1.18)}
.btn-view,.btn-ghost,.btn-send{position:relative; overflow:hidden}
.btn-view::after,.btn-send::after{content:""; position:absolute; top:0; bottom:0; left:-60%; width:40%; background:linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent); transform:skewX(-20deg); transition:left .7s ease; pointer-events:none}
.btn-view:hover::after,.btn-send:hover::after{left:120%}
.footer-col a,.article-body p a,.contact-list a,.cta-more a{transition:color .3s}
.footer-col a{background:linear-gradient(var(--gold),var(--gold)) 0 100%/0 1px no-repeat; transition:background-size .4s ease, color .3s}
.footer-col a:hover{background-size:100% 1px}
.spec > div{transition:background-color .3s}
.spec > div:hover{background:rgba(201,161,91,.05)}
.art-frame img{transition:transform .5s cubic-bezier(.2,.7,.2,1); will-change:transform}

/* Reading progress on press articles */
.read-progress{position:fixed; top:0; left:0; right:0; height:2px; z-index:6000; background:var(--gold); transform:scaleX(0); transform-origin:left; pointer-events:none}

@media (prefers-reduced-motion: reduce){
  .art-card:hover .thumb img,.collection-card:hover .thumb img,.room:hover .room-meta h2{transform:none}
  .btn-view::after,.btn-send::after{display:none}
}
