/* Motion is limited to user interaction; live quotes/rows never animate on refresh. */
button,.terminal-actions a,.mobile-nav a,summary{transition:background-color 150ms ease,border-color 150ms ease,color 150ms ease,box-shadow 150ms ease,filter 130ms ease,transform 130ms ease}
input,select,textarea{transition:border-color 150ms ease,box-shadow 150ms ease,background-color 150ms ease}
button:focus-visible,.terminal-actions a:focus-visible,.mobile-nav a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--ac);outline-offset:3px}
@media(hover:hover) and (pointer:fine){
 button:enabled:not([aria-disabled="true"]):hover,.terminal-actions a:not([aria-disabled="true"]):hover{transform:none;filter:brightness(1.06)}
 .mobile-nav a:hover,summary:hover{color:var(--ac)}
}
button:enabled:not([aria-disabled="true"]):active,.terminal-actions a:not([aria-disabled="true"]):active,.mobile-nav a:active{transform:none;filter:brightness(.96)}
button:disabled,button[aria-disabled="true"],a[aria-disabled="true"]{transform:none!important;filter:none!important;transition:none;cursor:not-allowed}
@media(hover:none){button:hover,.terminal-actions a:hover,.mobile-nav a:hover{transform:none;filter:none}}
.scan-view-tabs button[aria-pressed="true"],.workbench-tabs button[aria-selected="true"]{box-shadow:inset 0 -2px 0 var(--ac)}
.wb-compact-details summary::before{transition:transform 160ms ease}
dialog[open]{animation:cm-dialog-enter 180ms cubic-bezier(.2,.7,.2,1)}
dialog[open]::backdrop{animation:cm-backdrop-enter 160ms ease}
@keyframes cm-dialog-enter{from{opacity:0;transform:none}to{opacity:1;transform:none}}
@keyframes cm-backdrop-enter{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 button:hover,button:active,.terminal-actions a:hover,.terminal-actions a:active,.mobile-nav a:active{transform:none!important;filter:none!important}
}
/* Visible feedback is interaction-only: no motion on quote updates. */
button:enabled:not([aria-disabled="true"]):active{transform:none}
.cm-click-wave{position:fixed;pointer-events:none;z-index:2147483646;border:3px solid var(--ac,#6557e8);background:color-mix(in srgb,var(--ac,#6557e8) 14%,transparent);border-radius:50%;width:44px;height:44px;margin:-22px 0 0 -22px}
dialog[open]{animation-duration:320ms}
.cm-route-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:8px;align-items:center;margin:16px 0;padding:12px;border:1px solid var(--bd);border-radius:12px;background:var(--in)}
.cm-route-flow>div{min-width:0;overflow-wrap:anywhere}.cm-route-flow span,.cm-route-flow small{display:block;color:var(--mu);font-size:13px}.cm-route-flow b{display:block;margin:6px 0}.cm-route-flow>i{font-style:normal;color:var(--ac);font-size:24px}.cm-motion-preview{padding:20px;border:1px solid var(--bd);border-radius:12px;background:var(--in);margin-top:12px}
html[data-cm-motion="off"] *,html[data-cm-motion="off"] *::before,html[data-cm-motion="off"] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html[data-cm-motion="off"] button:hover,html[data-cm-motion="off"] button:active{transform:none!important;filter:none!important}
@media(max-width:500px){.cm-route-flow{grid-template-columns:1fr}.cm-route-flow>i{transform:rotate(90deg);justify-self:center}}
@media(prefers-reduced-motion:reduce){.cm-click-wave{display:none}button:enabled:not([aria-disabled="true"]):active{transform:none!important}}
/* Effects change color, never position or layout. */
.cm-demo-price{display:grid;gap:10px;padding:20px;background:var(--in);border:1px solid var(--bd);border-radius:12px;margin:16px 0}.cm-demo-price span{font-size:14px;color:var(--mu)}.cm-demo-price b{font-size:32px;font-variant-numeric:tabular-nums;display:block;padding:8px;border-radius:6px}
.cm-effects-close{float:right;min-width:44px;min-height:44px;font-size:24px}
.cm-update-notice{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:1000;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);width:600px;padding:12px;background:var(--bg2);color:var(--tx);border:2px solid var(--ac);border-radius:12px;box-sizing:border-box;box-shadow:0 8px 32px #0003;font-size:14px}.cm-update-notice button{flex:none}
@media(max-width:600px){.cm-update-notice{display:grid}.cm-update-notice button{width:100%}}
@media(hover:hover){button:enabled:hover{box-shadow:0 0 0 2px color-mix(in srgb,var(--ac) 50%,transparent)}}
