/* motion-batch1 样张：把通用过渡统一到 motion-tokens.css。
   只覆盖时长 / 曲线 / 位移，不改颜色、尺寸、布局；静止状态与原页一致。
   选择器统一以 html[data-jm-motion] 开头（运行时写入），保证比原样式和稍后注入的 assist.css 优先。
   不覆盖：07 工作台窗口与应用中心浮层（preserve-original），05 应用中心卡片 / 快看（已批准）。 */

/* ───────── 面板与弹窗（surfaces） ───────── */
/* 问小锦的小菜单、选区气泡（小浮层）：进 150ms 出 120ms，位移 4px */
html[data-jm-motion] .xa-menu, html[data-jm-motion] .xa-bubble { transition: opacity var(--jm-motion-pop-out) var(--jm-ease-exit-fade), transform var(--jm-motion-pop-out) var(--jm-ease-exit); }
html[data-jm-motion] .xa-menu.on, html[data-jm-motion] .xa-bubble.on { transition-duration: var(--jm-motion-pop-in); transition-timing-function: var(--jm-ease-enter); }
/* 轻提示：同小浮层 */
html[data-jm-motion] .xa-toast { transform: translateY(calc(-1 * var(--jm-motion-shift-pop))); transition: opacity var(--jm-motion-pop-out) var(--jm-ease-exit-fade), transform var(--jm-motion-pop-out) var(--jm-ease-exit); }
html[data-jm-motion] .xa-toast.on { transform: none; transition-duration: var(--jm-motion-pop-in); transition-timing-function: var(--jm-ease-enter); }
html[data-jm-motion] .toast { transform: translateY(calc(-1 * var(--jm-motion-shift-pop))); transition: opacity var(--jm-motion-pop-out) var(--jm-ease-exit-fade), transform var(--jm-motion-pop-out) var(--jm-ease-exit); }
html[data-jm-motion] .toast.show { transform: none; transition-duration: var(--jm-motion-pop-in); transition-timing-function: var(--jm-ease-enter); }
/* 确认 / 合并对话框：进 300ms 位移 12px，出 200ms 位移 8px */
html[data-jm-motion] .xa-scrim { transition: opacity var(--jm-motion-exit) var(--jm-ease-exit-fade); }
html[data-jm-motion] .xa-scrim.on { transition-duration: var(--jm-motion-enter); transition-timing-function: var(--jm-ease-enter); }
html[data-jm-motion] .xa-scrim .xa-dlg { transform: translateY(var(--jm-motion-shift-in)); transition: transform var(--jm-motion-enter) var(--jm-ease-enter); }
html[data-jm-motion] .xa-scrim.on .xa-dlg { transform: none; }
html[data-jm-motion] .xa-scrim.xa-out .xa-dlg { transform: translateY(var(--jm-motion-shift-out)); transition: transform var(--jm-motion-exit) var(--jm-ease-exit); }
/* 12 小锦对话：窄屏左右抽屉。进 300ms 长位移曲线，出 200ms 出场曲线 */
@media (max-width: 1180px) {
  html[data-jm-motion] .aside { transition: transform var(--jm-motion-exit) var(--jm-ease-exit), visibility 0s linear var(--jm-motion-exit); }
  html[data-jm-motion] body.r12-a .aside { transition: transform var(--jm-motion-enter) var(--jm-ease-long), visibility 0s; }
}
@media (max-width: 800px) {
  html[data-jm-motion] .side { transition: transform var(--jm-motion-exit) var(--jm-ease-exit), visibility 0s linear var(--jm-motion-exit); }
  html[data-jm-motion] body.r12-s .side { transition: transform var(--jm-motion-enter) var(--jm-ease-long), visibility 0s; }
}
html[data-jm-motion] .r12-scrim { transition: opacity var(--jm-motion-exit) var(--jm-ease-exit-fade); }
html[data-jm-motion] body.r12-a .r12-scrim, html[data-jm-motion] body.r12-s .r12-scrim { transition-duration: var(--jm-motion-enter); transition-timing-function: var(--jm-ease-enter); }
/* 07 工作台“并排 / 固定”小菜单：由 JMMotion.enter/leave 驱动（原来是 display 瞬切） */

/* ───────── 问小锦面板（assist） ───────── */
/* 迷你面板：进 300ms 位移 12px，出 200ms 位移 8px（位移量由 --xa-k 换算：原 8px × 1.5 / × 1） */
html[data-jm-motion] .xa-pop { transform: translate(calc(var(--xa-dx, 0px) * var(--xa-k, 1)), calc(var(--xa-dy, 8px) * var(--xa-k, 1))); transition: opacity var(--jm-motion-exit) var(--jm-ease-exit-fade), transform var(--jm-motion-exit) var(--jm-ease-exit); }
html[data-jm-motion] .xa-pop.on { transform: none; transition-duration: var(--jm-motion-enter); transition-timing-function: var(--jm-ease-enter); }
/* 窄屏底部抽屉：整个面板高度滑入（长位移曲线），不再半透明叠加 */
html[data-jm-motion] .xa-pop.sheet { opacity: 1; transform: translateY(100%); }
html[data-jm-motion] .xa-pop.sheet.on { transform: none; }
html[data-jm-motion] .xa-pop.sheet.on { transition-timing-function: var(--jm-ease-long); }
html[data-jm-motion] .xa-shscrim { transition: opacity var(--jm-motion-exit) var(--jm-ease-exit-fade); }
html[data-jm-motion] .xa-shscrim.on { transition-duration: var(--jm-motion-enter); transition-timing-function: var(--jm-ease-enter); }
/* 07 手机“问小锦”底部抽屉 */
html[data-jm-motion] .msheet .scr { transition: opacity var(--jm-motion-exit) var(--jm-ease-exit-fade); }
html[data-jm-motion] .msheet .pane { transition: transform var(--jm-motion-exit) var(--jm-ease-exit); }
html[data-jm-motion] .msheet.on .scr { transition-duration: var(--jm-motion-enter); transition-timing-function: var(--jm-ease-enter); }
html[data-jm-motion] .msheet.on .pane { transition-duration: var(--jm-motion-enter); transition-timing-function: var(--jm-ease-long); }
/* 12 唤起小锦：由 JMMotion.enter/leave 驱动，去掉原来只有进场的 rise 关键帧 */
html[data-jm-motion] .cmdk .cp { animation: none; }

/* ───────── 页签（workspace）：下划线滑动 180ms，正文从 .35 淡入 150ms ───────── */
html[data-jm-motion] .jm-tabs { position: relative; }
html[data-jm-motion] .jm-tabs > .on::after { visibility: hidden; }
html[data-jm-motion] .jm-tab-ind { position: absolute; left: 0; top: 0; height: 2px; background: var(--jm-brand); transform-origin: 0 0; pointer-events: none; }

/* ───────── 分组关闭（“减少”或自定义关掉的分组） ───────── */
/* 面板与弹窗、问小锦：只保留 120ms 线性淡入淡出，不位移（系统“减少动态效果”时也一样，覆盖原页的 transition:none） */
html[data-jm-motion-off~="surfaces"] :is(.xa-menu, .xa-bubble, .xa-toast, .toast, .xa-scrim, .r12-scrim) { transform: none !important; transition: opacity var(--jm-motion-fade) linear !important; }
html[data-jm-motion-off~="surfaces"] .xa-scrim .xa-dlg { transform: none !important; transition: none !important; }
@media (max-width: 1180px) {
  html[data-jm-motion-off~="surfaces"] .aside { transform: none !important; opacity: 0; transition: opacity var(--jm-motion-fade) linear, visibility 0s linear var(--jm-motion-fade) !important; }
  html[data-jm-motion-off~="surfaces"] body.r12-a .aside { opacity: 1; transition: opacity var(--jm-motion-fade) linear, visibility 0s !important; }
}
@media (max-width: 800px) {
  html[data-jm-motion-off~="surfaces"] .side { transform: none !important; opacity: 0; transition: opacity var(--jm-motion-fade) linear, visibility 0s linear var(--jm-motion-fade) !important; }
  html[data-jm-motion-off~="surfaces"] body.r12-s .side { opacity: 1; transition: opacity var(--jm-motion-fade) linear, visibility 0s !important; }
}
html[data-jm-motion-off~="assist"] .xa-pop { transform: none !important; transition: opacity var(--jm-motion-fade) linear !important; }
html[data-jm-motion-off~="assist"] .xa-pop.sheet:not(.on) { opacity: 0; }
html[data-jm-motion-off~="assist"] .xa-shscrim, html[data-jm-motion-off~="assist"] .msheet .scr { transition: opacity var(--jm-motion-fade) linear !important; }
html[data-jm-motion-off~="assist"] .msheet .pane { transform: none !important; opacity: 0; transition: opacity var(--jm-motion-fade) linear !important; }
html[data-jm-motion-off~="assist"] .msheet.on .pane { opacity: 1; }
html[data-jm-motion-off~="assist"] :is(.xa-m, .xa-thinking) { animation: none !important; }
/* 切页与工作台切换：瞬切（07 由 body.noanim 处理；05 应用中心与原页“减少动态效果”规则相同） */
html[data-jm-motion-off~="workspace"] :is(.ac, .lift, .detail, #gridv, .fadein, .fade) { transition: none !important; animation: none !important; }
/* 加载动画：静止 */
html[data-jm-motion-off~="loading"] :is(.skel, .spin, .xa-dots i, .dots i, .caret, .wave i) { animation: none !important; }
/* 主题切换：瞬切 */
html[data-jm-motion-off~="theme"].jm-theming, html[data-jm-motion-off~="theme"].jm-theming * { transition: none !important; }
