/* Motion pass: Emil Kowalski "7 Practical Animation Tips" + "You Don't Need Animations".
   Loaded last. Hero record (.hero .art) intentionally untouched. */
:root{--t-out:cubic-bezier(.23,1,.32,1);--t-fast:.15s;--t-base:.2s}

/* Mobile menu: frequent action -> short ease-out, no staggered items, no spring */
html body .hdr .nav{transition:opacity .15s var(--t-out),transform .15s var(--t-out),visibility 0s linear .15s!important}
html body .hdr .nav.is-open{transition:opacity .2s var(--t-out),transform .2s var(--t-out),visibility 0s!important}
html body .hdr .nav>*,html body .hdr .nav.is-open>*{opacity:1!important;transform:none!important;animation:none!important;transition:none!important;transition-delay:0s!important}
html body .mb_i i{transition:transform .2s var(--t-out),top .2s var(--t-out)!important}

/* Desktop services dropdown: hovered many times -> fade only, no per-item stagger */
html body .hdr .sv_menu.is-open .sv_h,html body .hdr .sv_menu.is-open li,html body .hdr .sv_menu.is-open .sv_foot{animation:none!important}
html body .hdr:after{transition:opacity .15s var(--t-out)!important}

/* Header blur/background on scroll */
html .hdr.hdr.hdr{transition:background-color .2s var(--t-out),box-shadow .2s var(--t-out)!important}

/* FAQ accordion: under 300ms, ease-out */
.js .faq .faq_a{transition:grid-template-rows .24s var(--t-out)!important}
.js .faq .faq_in{transition:opacity .2s var(--t-out),transform .24s var(--t-out)!important}
.js .faq details.is-closing .faq_in{transition-duration:.15s,.15s!important}
.faq summary:after{transition:transform .2s var(--t-out)!important}
/* Footer accordion chevron + links */
.nf_chev{transition:rotate .2s var(--t-out)!important}
.nf a,.nf_sl{transition-timing-function:var(--t-out)!important;transition-duration:.15s!important}

/* Glossary popover: origin-aware (origin set from the tapped word in gl.js), from scale .96 not 0, 150ms ease-out;
   keyboard-opened or switching between terms = instant */
.gl-pop{transform:scale(.96)!important;transition:opacity .15s var(--t-out),transform .15s var(--t-out)!important}
.gl-pop.is-open{transform:none!important}
.gl-pop.gl-instant{transition:none!important}

/* Buttons: scale .97 on press, works on touch (touchstart listener in nf.js) */
html body :is(a,button).btn.btn.btn.btn:active,html body .menu-btn.menu-btn.menu-btn.menu-btn:active,.btn-ck:active,.btt:active,.gl-pop_a:active{scale:.97;transition-duration:.1s!important}
.btt{transition:opacity .2s var(--t-out),transform .2s var(--t-out),scale .1s var(--t-out)}

/* Hover effects seen many times: shorter */
.rows .row .ico,.idx>a .ico,.rows .row .btn:after,.idx>a .more:after,.presslist li,.presslink,.sp_card,.mpt_c,.mw_cv,.one .cv{transition-duration:.2s!important;transition-timing-function:var(--t-out)!important}
.rows .row h3 a.tlink{transition:background-size .2s var(--t-out)!important}
.wwd_stmt .w,.scrub .w{transition-duration:.2s!important}
body{transition:background-color .3s var(--t-out)}

/* Scroll reveals and per-page intro: removed (decorative, every page view, delays reading) */
main>:first-child .h1,main .hero .h1,main>:first-child .lead,main .hero .lead,main>:first-child .actions,main .hero .actions{animation:none!important}

/* Page cross-fade between pages: keep tiny, ease-out */
html::view-transition-old(*){animation-timing-function:var(--t-out)!important}
html::view-transition-new(*){animation-timing-function:var(--t-out)!important}

/* Cookie banner/dialog: short enter */
.ck{animation-duration:.25s!important}
.ck-dlg[open]{animation-duration:.2s!important}
.ck-sw input:after{transition:transform .15s var(--t-out)!important}

/* Form states */
.inp,.count{transition-duration:.15s!important;transition-timing-function:var(--t-out)!important}
.dz_art{transition:transform .2s var(--t-out),filter .2s var(--t-out)!important}
.dz_file{animation-duration:.2s!important}
.js .pk .pk_step.is-on{animation-duration:.2s!important}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  .gl-pop,.gl-pop.is-open{transform:none!important;transition:opacity .1s linear!important}
  html body .hdr .nav,html body .hdr .nav.is-open{transform:none!important;transition:none!important}
  html body :is(a,button).btn.btn.btn.btn:active,html body .menu-btn.menu-btn.menu-btn.menu-btn:active,.btn-ck:active,.btt:active{scale:none}
  .sp_rec img,.how_art img,.dz_disc,.dz_cv img,.dz_wave i,.ck,.ck-dlg[open]{animation:none!important}
  *,*:before,*:after{transition-duration:0s!important}
}

/* Contact side column: the art card was sticky inside an already-sticky column (top 132 vs 96), so on scroll it slid
   36px down over "Prefer email?". The column alone stays sticky; the card sits in flow with room for its tilt + shadow. */
html body .contact-calm .cc_art{position:static!important;top:auto!important}
html body .cc_side .cc_mail{margin-top:24px!important}
@media (min-width:900px){html body .cc_side .cc_mail{margin-top:48px!important}}

/* Slop-audit fixes (approved) */
/* 1. Catalogue Acquisitions rows: full opacity once revealed; active row marked by a lime rule + purple number */
.inv-js .inv_r.in,.inv-js .inv_r.in.on{opacity:1!important}
.inv_r .xp_k{color:#55546A}
.inv_r:before{transition:background-color .2s var(--t-out),height .2s var(--t-out)}
.inv-js .inv_r.in.on:before{background:#CFF665;height:3px}
.inv-js .inv_r.in.on .xp_k{color:#522678}
@media (prefers-reduced-motion:reduce){.inv_r:before{transition:none}}
/* 2. Publishing closing band: flat brand purple like the other bands */
.band.band--pub{background:#522678!important}
/* 3. Line length */
html body p.howto_intro,html body p.note--legal{max-width:68ch!important}
/* 4. Buttons, menu button, header CTA: no overshoot easing on press (hero .art untouched) */
html body :is(a,button).btn.btn.btn.btn,html body .menu-btn.menu-btn.menu-btn.menu-btn{transition:background-color .15s cubic-bezier(.23,1,.32,1),color .15s cubic-bezier(.23,1,.32,1),border-color .15s cubic-bezier(.23,1,.32,1),box-shadow .15s cubic-bezier(.23,1,.32,1),scale .2s cubic-bezier(.23,1,.32,1)!important}
/* 5. Rights Management step labels: readable when the step is dimmed (.66) */
.rc.is-on .rc_step:not(.is-active) .rc_k{color:#3e1c5b}
/* 6. Cookie banner: shadow only, no extra 1px outline */
html body .ck{box-shadow:var(--glass-hi),0 18px 40px -16px #1b1b1b47!important}
