/* 2.8.4 动效：克制、可打断；减少动态效果时关闭 */
:root{interpolate-size:allow-keywords}
/* 进度条连接线：已走过的段用品牌蓝填充 */
body .steps>span{height:2px!important;border-radius:2px;background:linear-gradient(#2f62d6,#2f62d6) no-repeat 0 0/0% 100%,#dfe5ee!important}
body .steps .step.passed+span{background-size:100% 100%,auto!important}
body .steps .step i{transition:background-color .25s,color .25s}
/* 按钮按下的回弹反馈 */
body button:not(:disabled):active,body .btn:active{transform:scale(.97)!important;transition:transform .08s!important}
body button,body .btn{transition:background-color .15s,border-color .15s,color .15s,transform .15s cubic-bezier(.2,.75,.25,1)!important}
/* 卡片与行的悬停过渡 */
body table tbody tr td{transition:background-color .15s}
body .sidebar nav button,body .sidebar .nav-group>summary{transition:background-color .15s,color .15s!important}
/* 侧栏分组折叠：高度平滑过渡（浏览器支持时） */
body .grouped-nav details.nav-group::details-content{transition:height .22s cubic-bezier(.2,.75,.25,1),content-visibility .22s allow-discrete;height:0;overflow:hidden}
body .grouped-nav details.nav-group[open]::details-content{height:auto}
body .nav-chevron{transition:transform .2s cubic-bezier(.2,.75,.25,1)!important}
body details[open]>summary .nav-chevron{transform:rotate(90deg)}
/* 页面里的折叠块 */
body #content details::details-content{transition:height .2s cubic-bezier(.2,.75,.25,1),content-visibility .2s allow-discrete;height:0;overflow:hidden}
body #content details[open]::details-content{height:auto}
/* 加载中的骨架闪烁替代空白 */
body.tx-page-pending #content{transition:opacity .15s;opacity:.72}
@media (prefers-reduced-motion:reduce){
  body *,body *::before,body *::after{transition:none!important;animation:none!important}
  body .grouped-nav details.nav-group::details-content,body #content details::details-content{transition:none!important}
}
/* 2.8.8：入场动画只保留 ui-motion.js 一套，去掉旧版页面局部淡入 */
body #content .catalog-panel,body #content .sale-workspace,body #content>.page-heading{animation:none!important}
