button{transition:transform 120ms ease,box-shadow 120ms ease}
@media(hover:hover){button:not(:disabled):hover{transform:translateY(-1px)}}
button:not(:disabled):active{transform:scale(.97)}
.motion-row{animation:row-enter 300ms ease both;animation-delay:var(--row-delay,0ms)}
@keyframes row-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.motion-copy{animation:copy-enter 1400ms ease both!important}
@keyframes copy-enter{0%{transform:translateY(-18px);background:#ffe79a;opacity:0}20%{transform:none;opacity:1;background:#ffe79a}100%{background:transparent}}
.modal{animation:veil 200ms ease both}.modal>.card{animation:dialog-enter 200ms ease both}
@keyframes veil{from{background-color:transparent}}
@keyframes dialog-enter{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
.select-menu,[role=menu]{transform-origin:top right;animation:dialog-enter 140ms ease both}
.drawer{animation:drawer-enter 260ms ease both}.drawer-backdrop{animation:veil 260ms ease both}
@keyframes drawer-enter{from{transform:translateX(100%)}to{transform:none}}
.x-confirm{border:1px solid #cbd8e8;border-radius:12px;padding:24px;max-width:440px;color:#253c58;animation:dialog-enter 200ms ease both}
.x-confirm::backdrop{background:#15263b80;animation:veil 200ms ease both}
.x-toast{position:fixed;bottom:24px;left:50%;translate:-50% 0;z-index:100000;background:#253c58;color:white;padding:14px 18px;border-radius:9px;box-shadow:0 4px 20px #0003;display:flex;gap:14px;align-items:center;animation:row-enter 250ms ease both}
.x-toast.exit{animation:toast-exit 250ms ease both}@keyframes toast-exit{to{opacity:0;transform:translateY(12px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}button:hover,button:active{transform:none!important}}
@media print{*,*::before,*::after{animation:none!important;transition:none!important}.x-toast,.x-confirm{display:none!important}}

/* Native table rows must not be transformed during refresh. */
tr.motion-row{animation:none!important;transform:none!important}
