/* Shared, restrained motion. All durations respect the user's motion preference. */
:root{--ease-out:cubic-bezier(.2,.75,.25,1);--ease-standard:cubic-bezier(.2,0,.2,1)}
.btn,button{transition:background .16s var(--ease-standard),border-color .16s var(--ease-standard),box-shadow .16s var(--ease-standard),transform .16s var(--ease-out)}
.btn:hover,button:not(:disabled):hover{transform:translateY(-1px)}
.btn:active,button:not(:disabled):active{transform:translateY(0);box-shadow:none}
input,select,textarea{transition:border-color .18s var(--ease-standard),box-shadow .18s var(--ease-standard)}
input:focus,select:focus,textarea:focus{border-color:#a4a5af;box-shadow:0 0 0 3px #21232b06;outline:none}
.service-card{transition:transform .22s var(--ease-out),border-color .22s var(--ease-standard),box-shadow .22s var(--ease-standard)}
.service-card:hover{transform:translateY(-3px);border-color:#cccdd5;box-shadow:0 8px 25px #1a1b2a07}
.service-card-footer>a>.icon,.hero-note>.icon{transition:transform .18s var(--ease-out)}
.service-card-footer>a:hover>.icon,.hero-note:hover>.icon{transform:translateX(3px)}
.sidebar nav a,.doc-nav a,.quicklinks>a{transition:background .16s var(--ease-standard),color .16s var(--ease-standard),border-color .16s var(--ease-standard)}
tbody tr{transition:background .15s var(--ease-standard)}
.hero-copy{animation:soft-entry .55s var(--ease-out) both}
.hero-code{animation:soft-entry .6s .08s var(--ease-out) both}
.catalog-section{animation:soft-entry .55s .13s var(--ease-out) both}
.auth-wrap{animation:soft-entry .4s var(--ease-out) both}
.auth-story-copy{animation:soft-entry .55s .05s var(--ease-out) both}
.page-enter{animation:page-entry .24s var(--ease-out) both}
dialog[open]{animation:dialog-entry .2s var(--ease-out) both}
dialog[open]::backdrop{animation:backdrop-entry .18s var(--ease-out) both}
#toast:not([hidden]){animation:toast-entry .2s var(--ease-out) both}
.chart rect{transform-box:fill-box;transform-origin:center bottom;animation:chart-entry .55s var(--ease-out) both}
.chart g:nth-of-type(2) rect{animation-delay:25ms}.chart g:nth-of-type(3) rect{animation-delay:50ms}.chart g:nth-of-type(4) rect{animation-delay:75ms}.chart g:nth-of-type(5) rect{animation-delay:100ms}.chart g:nth-of-type(6) rect{animation-delay:125ms}.chart g:nth-of-type(7) rect{animation-delay:150ms}
button.is-working{position:relative;pointer-events:none}
button.is-working:after{content:'';height:11px;width:11px;flex:none;border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:working-spin .65s linear infinite}
@keyframes soft-entry{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes page-entry{from{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@keyframes dialog-entry{from{opacity:0;transform:translateY(7px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes backdrop-entry{from{opacity:0}to{opacity:1}}
@keyframes toast-entry{from{opacity:0;translate:0 -5px}to{opacity:1;translate:0 0}}
@keyframes chart-entry{from{transform:scaleY(.1);opacity:.3}to{transform:scaleY(1);opacity:1}}
@keyframes working-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.btn:hover,button:not(:disabled):hover,.service-card:hover{transform:none}button.is-working:after{border-right-color:currentColor;opacity:.5}}
