/* Only transient controls move; tables and account values retain their position. */
:root{--ui-motion-quick:120ms;--ui-motion-dialog:180ms;--ui-motion-ease:cubic-bezier(.2,.75,.25,1)}
.btn{transition:background-color var(--ui-motion-quick) ease,border-color var(--ui-motion-quick) ease,box-shadow var(--ui-motion-quick) ease,color var(--ui-motion-quick) ease,transform 80ms ease}
.btn:not(:disabled):not([aria-disabled=true]):active{transform:translateY(1px)}
.log-condition-popup:not([hidden]){animation:ui-dropdown-in var(--ui-motion-quick) var(--ui-motion-ease)}
.log-condition [data-log-toggle] span{display:inline-block;transition:transform var(--ui-motion-quick) ease}
.log-condition [data-log-toggle][aria-expanded=true] span{transform:rotate(180deg)}
dialog.ui-motion-dialog[open]{animation:ui-dialog-in var(--ui-motion-dialog) var(--ui-motion-ease)}
dialog.ui-motion-dialog[open]::backdrop{animation:ui-backdrop-in var(--ui-motion-dialog) ease}
#toast.visible{animation:ui-toast-in 140ms var(--ui-motion-ease)}
/* Preserve the existing content and exact button dimensions while work is pending. */
.btn[data-action-pending]{position:relative;color:transparent!important;cursor:progress;opacity:1;transition:none}
.btn[data-action-pending]>*{visibility:hidden}
.btn[data-action-pending]::after{content:"";position:absolute;width:16px;height:16px;box-sizing:border-box;left:calc(50% - 8px);top:calc(50% - 8px);border:2px solid var(--line,#d8e1ec);border-top-color:var(--blue,#2563eb);border-radius:50%;animation:ui-pending-spin 700ms linear infinite;pointer-events:none}
.btn.primary[data-action-pending]::after{border-color:#ffffff66;border-top-color:#fff}
@keyframes ui-dropdown-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@keyframes ui-dialog-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes ui-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes ui-toast-in{from{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes ui-pending-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){
 .btn,.log-condition-popup,.log-condition [data-log-toggle] span,dialog.ui-motion-dialog,dialog.ui-motion-dialog::backdrop,#toast.visible{animation:none!important;transition:none!important}
 .btn:not(:disabled):not([aria-disabled=true]):active{transform:none}
 .btn[data-action-pending]::after{animation:none!important;content:"…";border:0;border-radius:0;width:20px;height:20px;left:calc(50% - 10px);top:calc(50% - 10px);line-height:14px;font-size:22px;text-align:center;color:var(--blue,#2563eb)}
 .btn.primary[data-action-pending]::after{color:#fff}
}
