
/* Quiet motion that follows the reader and respects device preferences. */
@media (prefers-reduced-motion: no-preference){
  .portfolio-cover{animation:cover-appear .65s cubic-bezier(.2,.75,.25,1) both}
  @keyframes cover-appear{from{opacity:.4;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
  .project-card.will-reveal{opacity:0;transform:translateY(18px)}
  .project-card.will-reveal.is-revealed{opacity:1;transform:translateY(0);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.75,.25,1),box-shadow .2s}
  .project-card.will-reveal.is-revealed:hover{transform:translateY(-2px)}
  .project-card[open]>.stands-detail,.project-card[open]>.campaign-layout,.project-card[open]>.branding-content,.project-card[open]>.ai-content,.project-card[open]>.motion-content{animation:detail-enter .28s ease-out both}
  @keyframes detail-enter{from{opacity:.55;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
  .filter-button{transition:background-color .2s,border-color .2s,color .2s,transform .2s}
  .filter-button:not(.is-active):hover{transform:translateY(-2px)}
  .expand-action{transition:background-color .2s,transform .2s}
  .project-card summary:hover .expand-action{transform:translateY(-2px)}
}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.project-card,.filter-button,.expand-action,.portfolio-cover{animation:none!important;transition:none!important}}
