/* 运动节奏：主动作、跟随动作、环境动作三层独立运行。 */
:root{--enter:cubic-bezier(.16,1,.3,1);--move:cubic-bezier(.65,0,.35,1);--pop:cubic-bezier(.34,1.18,.64,1)}
.motion-on .hero-copy{animation:none}.motion-on .hero-copy>*{opacity:0;transform:translateY(22px);transition:opacity .76s var(--enter),transform .76s var(--enter)}.motion-on.is-ready .hero-copy>*{opacity:1;transform:none}.motion-on.is-ready .hero-copy>p{transition-delay:.05s}.motion-on.is-ready .hero-copy h1{transition-delay:.14s}.motion-on.is-ready .hero-copy .hero-scroll{transition-delay:.29s}.motion-on .hero-meta,.motion-on .hero-foot{opacity:0;animation:none;transition:opacity .7s var(--enter),transform .7s var(--enter);transform:translateY(10px)}.motion-on.is-ready .hero-meta,.motion-on.is-ready .hero-foot{opacity:1;transform:none;transition-delay:.38s}.motion-on .hero-art{animation:none;opacity:0;transform:translateY(-50%) scale(.9);transition:opacity 1s var(--enter),transform 1s var(--enter)}.motion-on.is-ready .hero-art{opacity:1;transform:translateY(-50%) scale(1);transition-delay:.1s}
.motion-on .art-grid{animation:slow-orbit 28s linear infinite}.motion-on .art-grid:after{animation:slow-orbit-reverse 17s linear infinite}.motion-on .art-planet{animation:planet-float 8s var(--move) infinite alternate}.motion-on .disc-a{animation:disc-drift-a 11s var(--move) infinite alternate}.motion-on .disc-b{animation:disc-drift-b 9s var(--move) infinite alternate}@keyframes slow-orbit{to{transform:rotate(335deg)}}@keyframes slow-orbit-reverse{to{transform:rotate(-360deg)}}@keyframes planet-float{from{translate:0 0}to{translate:0 -9px}}@keyframes disc-drift-a{from{translate:0 0;scale:1}to{translate:-9px 8px;scale:1.08}}@keyframes disc-drift-b{from{translate:0 0;scale:1}to{translate:8px -7px;scale:.94}}
.motion-item{opacity:0;transform:translateY(28px) scale(.985);transition:opacity .7s var(--enter),transform .7s var(--enter);transition-delay:var(--motion-delay,0ms)}.motion-item.motion-show{opacity:1;transform:none}.motion-item.field{transition-property:opacity,transform,box-shadow}.motion-item.work{transition-property:opacity,transform,box-shadow}.motion-item.tool{transition-property:opacity,transform,box-shadow}.motion-title{opacity:0;transform:translateY(20px);transition:opacity .72s var(--enter),transform .72s var(--enter)}.motion-title.motion-show{opacity:1;transform:none}.motion-title.motion-show span,.motion-title.motion-show em{animation:soft-emphasis .8s var(--pop) both;animation-delay:.16s}@keyframes soft-emphasis{0%{opacity:.3;filter:blur(6px)}100%{opacity:1;filter:blur(0)}}
.hero-scroll:active{transform:scale(.94);transition-duration:.12s}.hero-scroll i{transition:transform .38s var(--pop)!important}.hero-scroll:hover i{transform:translateY(4px) scale(1.08)}.filters button{transition:color .28s var(--move),border-color .28s var(--move),transform .28s var(--pop)}.filters button:active{transform:scale(.94)}.main-nav .nav-contact{transition:transform .38s var(--pop),background .35s var(--move)!important}.main-nav .nav-contact:hover{transform:translateY(-2px);background:#101117;color:#fff;opacity:1!important}.video-dialog[open]{animation:dialog-in .42s var(--enter) both}@keyframes dialog-in{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.motion-on .hero-copy>*,.motion-on .hero-meta,.motion-on .hero-foot,.motion-on .hero-art,.motion-item,.motion-title{opacity:1!important;transform:none!important;transition:none!important}.motion-on .art-grid,.motion-on .art-grid:after,.motion-on .art-planet,.motion-on .disc-a,.motion-on .disc-b{animation:none!important}}
