/* This layer is opt-in only after successful JS setup. Settled elements shed
   transforms/filters so hover motion and text rendering return to normal. */
.assembly-particles{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:20}
@media(prefers-reduced-motion:no-preference){
 html.assembly-ready .assembly-target:not(.assembly-in){opacity:0;filter:blur(9px);transform:translateY(32px) scale(.99)}
 html.assembly-ready .assembly-target.assembly-in:not(.assembly-settled){animation:pixel-assembly 800ms cubic-bezier(.18,.8,.2,1) both}
}
@keyframes pixel-assembly{from{opacity:0;filter:blur(9px);transform:translateY(32px) scale(.99)}60%{opacity:.88;filter:blur(1px);transform:translateY(3px) scale(.998)}to{opacity:1;filter:none;transform:none}}
@media(max-width:560px){html.assembly-ready .assembly-target.assembly-in:not(.assembly-settled){animation-duration:600ms}html.assembly-ready .assembly-target:not(.assembly-in){filter:none;transform:translateY(12px)}@keyframes pixel-assembly{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}}
@media(prefers-reduced-motion:reduce){.assembly-particles{display:none}}
@media(forced-colors:active){.assembly-particles{display:none}}
