/* ============================================================
   motion.css · 前台动效层（v1）
   设计参考：motion-lab 式微交互语言 —— 弹簧缓动 / 卡片浮起 /
   内嵌舞台渐变 / 极光光斑 / 跑马灯 / 文字揭示
   原则：
   1) 纯增强：不加载本文件时站点完全正常；JS 未执行时内容全部可见
   2) 只动 transform / opacity / filter，不触发布局回流
   3) 深浅色、减弱动效、移动端三套适配
   ============================================================ */

:root{
  --mv-ease:cubic-bezier(.16,1,.3,1);          /* 出场：快起缓停 */
  --mv-spring:cubic-bezier(.34,1.32,.44,1);    /* 悬停：轻微回弹 */
  --mv-dur:.42s;
}

/* ---------- 1. 首屏 ---------- */
.hero.mv-hero{
  position:relative;overflow:hidden;text-align:left;
  padding:70px 0 62px;
  background:linear-gradient(180deg,var(--bg-soft) 0%,var(--bg) 78%);
  isolation:isolate;
}
.mv-hero .wrap{position:relative;z-index:2}
.mv-hero-in{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:48px;align-items:center}
.mv-hero-copy{min-width:0}

/* 背景：光斑 + 细网格 + 颗粒 */
.mv-hero-bg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.mv-orb{position:absolute;display:block;border-radius:50%;background:var(--primary);filter:blur(72px);opacity:.13}
.mv-orb.o1{width:460px;height:460px;top:-160px;right:2%;animation:mv-drift-a 22s ease-in-out infinite}
.mv-orb.o2{width:340px;height:340px;top:120px;right:26%;opacity:.09;animation:mv-drift-b 27s ease-in-out infinite}
.mv-orb.o3{width:280px;height:280px;bottom:-120px;left:-80px;opacity:.07;animation:mv-drift-a 31s ease-in-out infinite reverse}
.mv-grid{position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(to right,var(--line) 1px,transparent 1px),linear-gradient(to bottom,var(--line) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(ellipse 78% 62% at 50% 32%,#000 30%,transparent 78%);
  -webkit-mask-image:radial-gradient(ellipse 78% 62% at 50% 32%,#000 30%,transparent 78%)}
.mv-grain{position:absolute;inset:0;opacity:.035;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E")}

/* 眉标 */
.mv-eyebrow{display:inline-flex;align-items:center;gap:9px;margin:0 0 20px;padding:7px 14px 7px 12px;
  border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--bg) 72%,transparent);
  font-size:12.5px;letter-spacing:.06em;color:var(--ink-2);backdrop-filter:blur(8px)}
@supports not (background:color-mix(in srgb,#000 50%,transparent)){
  .mv-eyebrow{background:var(--bg)}
}
.mv-eyebrow i{width:6px;height:6px;border-radius:50%;background:var(--primary);flex:none;
  box-shadow:0 0 0 0 var(--primary);animation:mv-pulse 2.6s ease-out infinite}

/* 标题：逐字揭示 */
.mv-h1{margin:0 0 18px;line-height:1.18;letter-spacing:-.02em;
  font-size:clamp(26px,3.4vw,40px);font-weight:800;max-width:17em;
  text-wrap:balance;overflow-wrap:anywhere}
.mv-h1 .mv-ch{display:inline-block;will-change:transform,opacity}
.mv-ready .mv-h1 .mv-ch{opacity:0;transform:translateY(26px) rotateX(-46deg);transform-origin:50% 100%;
  animation:mv-ch-in .74s var(--mv-ease) forwards;animation-delay:calc(var(--i,0) * 24ms + 90ms)}
.mv-h1 .mv-ch.sp{width:.34em}
.mv-hero .lead{max-width:none;margin:0 0 28px;font-size:clamp(15px,1.5vw,17.5px);color:var(--ink-2)}
.mv-hero .cta{display:flex;gap:12px;justify-content:flex-start;flex-wrap:wrap}

/* CTA 按钮：光泽扫过 */
.mv-hero .btn{position:relative;overflow:hidden;height:48px;padding:0 26px;font-size:15.5px;
  transition:transform .3s var(--mv-spring),box-shadow .3s,border-color .3s,color .3s}
.mv-hero .btn::after{content:"";position:absolute;top:-40%;left:-80%;width:42%;height:180%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);
  transform:rotate(16deg);transition:left .72s var(--mv-ease);pointer-events:none}
.mv-hero .btn:hover::after{left:132%}
.mv-hero .btn.primary{box-shadow:0 8px 22px -8px var(--primary)}
.mv-hero .btn.primary:hover{box-shadow:0 14px 30px -10px var(--primary)}

/* 首屏数据条（玻璃卡） */
.mv-chips{display:flex;flex-wrap:wrap;gap:10px;margin:30px 0 0;padding:0;list-style:none}
.mv-chips li{display:flex;align-items:center;gap:8px;padding:8px 13px;border:1px solid var(--line);
  border-radius:10px;background:color-mix(in srgb,var(--bg) 66%,transparent);backdrop-filter:blur(8px);
  font-size:12.5px;color:var(--ink-2);line-height:1.4}
@supports not (background:color-mix(in srgb,#000 50%,transparent)){.mv-chips li{background:var(--bg)}}
.mv-chips b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}

/* 右侧浮动舞台 */
.mv-hero-art{position:relative;height:388px;perspective:900px}
.mv-hero-art .mv-fc{position:absolute;z-index:4;border:1px solid var(--line);border-radius:16px;
  background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);
  box-shadow:0 18px 40px -18px rgba(16,24,40,.28);padding:16px 18px;min-width:132px;
  will-change:transform}
@supports not (background:color-mix(in srgb,#000 50%,transparent)){.mv-hero-art .mv-fc{background:var(--bg)}}
.mv-hero-art .mv-fc span{display:block;font-size:12px;color:var(--ink-3);letter-spacing:.04em}
.mv-hero-art .mv-fc b{display:block;font-size:26px;line-height:1.25;font-weight:800;color:var(--primary);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.mv-hero-art .f1{top:18px;left:6%;animation:mv-float 7.5s ease-in-out infinite}
.mv-hero-art .f2{top:120px;right:0;animation:mv-float 9s ease-in-out infinite .6s}
.mv-hero-art .f3{bottom:26px;left:2%;animation:mv-float 8.2s ease-in-out infinite 1.2s}
.mv-hero-art .mv-ring{position:absolute;left:50%;top:50%;width:306px;height:306px;margin:-153px 0 0 -153px;
  border-radius:50%;border:1px solid color-mix(in srgb,var(--primary) 22%,var(--line));opacity:.9}
.mv-hero-art .mv-ring.r2{width:214px;height:214px;margin:-107px 0 0 -107px;border-style:dashed;opacity:.7;
  animation:mv-spin 48s linear infinite}
.mv-hero-art .mv-glow{position:absolute;left:50%;top:50%;width:300px;height:300px;margin:-150px 0 0 -150px;
  border-radius:50%;background:radial-gradient(circle,var(--primary),transparent 66%);opacity:.17;filter:blur(14px)}
@supports not (border-color:color-mix(in srgb,#000 50%,#fff)){.mv-hero-art .mv-ring{border-color:var(--line)}}

/* 展台：完整品牌标志打头，其余帧轮播产品中心主图（纯图，不带任何文字/角标）
   直径与背景那圈 mv-ring（306px）完全对齐：产品图铺满整圆，标志居中留白 */
.mv-stage{position:absolute;left:50%;top:50%;width:306px;height:306px;margin:-153px 0 0 -153px;z-index:2;
  border-radius:50%;border:1px solid color-mix(in srgb,var(--primary) 16%,var(--line));
  background:radial-gradient(circle at 50% 34%,color-mix(in srgb,var(--bg) 80%,transparent),color-mix(in srgb,var(--bg-soft) 58%,transparent));
  box-shadow:0 26px 62px -32px rgba(16,24,40,.4),inset 0 1px 0 rgba(255,255,255,.6);
  backdrop-filter:blur(12px);overflow:visible}
@supports not (background:color-mix(in srgb,#000 50%,transparent)){.mv-stage{background:var(--bg)}}
.mv-stage-vp{position:absolute;inset:-1px}   /* 抵掉 stage 的 1px 描边，产品图正好铺满 306px 整圆 */
.mv-slide{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;padding:0;margin:0;border:0;background:none;font:inherit;color:inherit;text-align:center;
  opacity:0;transform:scale(.94);pointer-events:none;
  transition:opacity .52s var(--mv-ease),transform .52s var(--mv-ease)}
.mv-slide.is-on{opacity:1;transform:none;pointer-events:auto}
.mv-media{position:relative;width:178px;height:178px;flex:none;border-radius:50%;overflow:hidden;
  display:grid;place-items:center;border:1px solid var(--line);
  background:color-mix(in srgb,var(--bg-soft) 74%,transparent);
  transition:transform .42s var(--mv-spring),box-shadow .42s}
.mv-media img{width:100%;height:100%;object-fit:cover;display:block}
/* 产品主图：铺满整圆（与背景那圈 306px 同尺寸），无边框无内衬 */
.mv-slide.is-pic .mv-media{width:100%;height:100%;border:0;border-radius:50%;
  background:none;box-shadow:none}
.mv-slide.is-pic.is-on .mv-media{box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 14%,var(--line)),0 26px 58px -30px rgba(16,24,40,.46)}
.mv-slide.is-pic .mv-media img{object-fit:cover}
/* 品牌标志：与产品图同一套几何——图框就是那圈 306px 圆（R48c）
   标志本身是 1024×1024 透明 PNG，内容最远点只到半径 0.92（不顶角），
   因此按整圆 contain 铺满也不会被圆边切到，视觉直径与背景圆完全一致 */
.mv-slide.is-logo{padding:0}
.mv-slide.is-logo .mv-media{width:100%;height:100%;border:0;border-radius:50%;background:none}
.mv-slide.is-logo .mv-media img{width:100%;height:100%;object-fit:contain;padding:0;
  filter:drop-shadow(0 16px 30px rgba(16,24,40,.18))}
.mv-wordmark{font-size:20px;font-weight:800;letter-spacing:.02em;color:var(--ink);padding:0 10px;line-height:1.3}
.mv-slide.is-on .mv-media{box-shadow:0 18px 34px -22px rgba(16,24,40,.42)}
.mv-dots{position:absolute;left:50%;bottom:-28px;transform:translateX(-50%);display:flex;gap:6px;z-index:3}
.mv-dot{width:6px;height:6px;padding:0;border:0;border-radius:999px;background:color-mix(in srgb,var(--ink-3) 42%,var(--line));cursor:pointer;
  transition:width .35s var(--mv-spring),background .3s}
.mv-dot.is-on{width:16px;background:var(--primary)}
.mv-dot:hover{background:color-mix(in srgb,var(--primary) 55%,var(--line))}
.mv-dot:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.mv-slide,.mv-media,.mv-dot{transition:none}}

/* 滚动提示 */
.mv-scroll{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:3;
  width:24px;height:38px;border:1.5px solid var(--line);border-radius:14px;display:flex;justify-content:center;
  opacity:.7;transition:opacity .3s,border-color .3s}
.mv-scroll:hover{opacity:1;border-color:var(--primary)}
.mv-scroll i{width:3px;height:8px;border-radius:2px;background:var(--primary);margin-top:7px;
  animation:mv-scroll-dot 1.9s var(--mv-ease) infinite}

/* ---------- 2. 跑马灯 ---------- */
.mv-marquee{position:relative;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  background:var(--bg-soft);padding:13px 0;
  mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.mv-mq-track{display:flex;width:max-content;animation:mv-mq 34s linear infinite}
.mv-marquee:hover .mv-mq-track{animation-play-state:paused}
.mv-mq-group{display:flex;align-items:center;gap:34px;padding-right:34px}
.mv-mq-group span{display:inline-flex;align-items:center;gap:34px;font-size:13px;letter-spacing:.04em;
  color:var(--ink-3);white-space:nowrap}
.mv-mq-group span::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--primary);
  opacity:.5;flex:none}
.mv-mq-group b{color:var(--ink-2);font-weight:600}

/* ---------- 3. 滚动揭示 ---------- */
.mv-ready [data-mv-rv]{opacity:0;transform:translateY(20px);
  transition:opacity .68s var(--mv-ease),transform .68s var(--mv-ease);
  transition-delay:var(--mvd,0ms)}
.mv-ready [data-mv-rv].is-in{opacity:1;transform:none}
.mv-ready h2[data-mv-rv]{transform:translateY(14px)}
@media (prefers-reduced-motion:reduce){
  .mv-ready [data-mv-rv]{opacity:1;transform:none;transition:none}
}

/* 二级标题：入场时左侧强调线由短到满 */
.mv-ready h2[data-mv-rv]{position:relative;padding-left:15px}
.mv-ready h2[data-mv-rv]::before{content:"";position:absolute;left:0;top:.16em;bottom:.16em;width:3px;
  border-radius:2px;background:linear-gradient(180deg,var(--primary),color-mix(in srgb,var(--primary) 35%,transparent));
  transform:scaleY(.28);transform-origin:top center;transition:transform .62s var(--mv-ease);transition-delay:calc(var(--mvd,0ms) + 120ms)}
.mv-ready h2[data-mv-rv].is-in::before{transform:scaleY(1)}
@supports not (background:linear-gradient(180deg,var(--primary),transparent)){.mv-ready h2[data-mv-rv]::before{background:var(--primary)}}
@media (prefers-reduced-motion:reduce){
  .mv-ready h2[data-mv-rv]::before{transform:scaleY(1);transition:none}
}

/* ---------- 4. 卡片物理 ---------- */
.mv-ready .card{position:relative;isolation:isolate;
  transition:transform .46s var(--mv-spring),box-shadow .46s var(--mv-ease),border-color .35s}
/* 鼠标跟随的柔光（浅色为主，深色略提） */
.mv-ready .card::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:0;
  background:radial-gradient(260px circle at var(--mx,50%) var(--my,0%),var(--primary),transparent 62%);
  opacity:0;transition:opacity .4s var(--mv-ease)}
.mv-ready .card:hover::before{opacity:.09}
.mv-ready .card>*{position:relative;z-index:1}
.mv-ready .card:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--primary) 34%,var(--line));
  box-shadow:0 10px 18px -12px rgba(16,24,40,.14),0 26px 48px -22px rgba(16,24,40,.24)}
@supports not (border-color:color-mix(in srgb,#000 50%,#fff)){.mv-ready .card:hover{border-color:var(--primary)}}

/* 产品卡：图片推近 + 扫光 + 徽标回弹 */
.mv-ready .card.product .thumb img{transition:transform .75s var(--mv-ease),filter .5s}
.mv-ready .card.product:hover .thumb img{transform:scale(1.06)}
.mv-ready .card.product .thumb::after{content:"";position:absolute;top:-45%;left:-75%;width:42%;height:190%;z-index:2;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);
  transform:rotate(15deg);transition:left .8s var(--mv-ease);pointer-events:none}
.mv-ready .card.product:hover .thumb::after{left:135%}
.mv-ready .card.product .badge{transition:transform .4s var(--mv-spring)}
.mv-ready .card.product:hover .badge{transform:translateY(-2px) scale(1.04)}
.mv-ready .card.product .rfq-add{transition:transform .35s var(--mv-spring),opacity .3s}
.mv-ready .card.product:hover .rfq-add{transform:scale(1.1) rotate(90deg)}
.mv-ready .card.product h3{transition:color .3s}
.mv-ready .card.product:hover h3{color:var(--primary)}

/* 分类卡：底色渐变铺开 */
.mv-ready .card.cat{position:relative;overflow:hidden}
.mv-ready .card.cat::after{content:"";position:absolute;inset:0;z-index:0;opacity:0;
  background:linear-gradient(120deg,var(--primary),transparent 70%);transition:opacity .4s var(--mv-ease);pointer-events:none}
.mv-ready .card.cat:hover::after{opacity:.07}
.mv-ready .card.cat:hover h3{color:var(--primary)}

/* 数据卡：顶部强调线生长 */
.mv-ready .card.stat{overflow:hidden}
.mv-ready .card.stat::after{content:"";position:absolute;left:0;top:0;height:2px;width:0;z-index:1;
  background:linear-gradient(90deg,var(--primary),transparent);transition:width .55s var(--mv-ease)}
.mv-ready .card.stat:hover::after{width:100%}
.mv-ready .card.stat .v{transition:transform .4s var(--mv-spring)}
.mv-ready .card.stat:hover .v{transform:scale(1.045)}
.mv-ready .card.stat .v{font-variant-numeric:tabular-nums}

/* ---------- 5. 头部 / 进度条 ---------- */
.mv-ready .site-hd{transition:box-shadow .35s,background .35s}
.mv-ready .site-hd .wrap{transition:height .32s var(--mv-ease)}
.mv-hd-scrolled .site-hd{box-shadow:0 1px 0 var(--line),0 10px 26px -18px rgba(16,24,40,.35)}
/* 收缩只对 PC 生效：手机头部是「品牌行 + 导航行」两行，被强行压成 56px 后
   导航会溢出到白色底之外，滚动时压在正文/购买区上面（第33轮实测 320/390 均复现） */
@media (min-width:901px){.mv-hd-scrolled .site-hd .wrap{height:56px}}
.mv-hd-scrolled .brand{letter-spacing:-.03em}
.mv-prog{position:fixed;left:0;top:0;height:2px;width:0;z-index:120;pointer-events:none;
  background:linear-gradient(90deg,var(--primary),color-mix(in srgb,var(--primary) 40%,#ffd479));
  transition:opacity .4s;opacity:0}
.mv-prog.on{opacity:1}
@supports not (background:linear-gradient(90deg,var(--primary),#ffd479)){.mv-prog{background:var(--primary)}}

/* ---------- 6. 通用细节 ---------- */
.mv-ready .btn{transition:transform .28s var(--mv-spring),box-shadow .28s,border-color .25s,color .25s,background .25s}
.mv-ready .faq-list details[open]>div{animation:mv-faq .34s var(--mv-ease) both}
.mv-ready .faq-list details summary{transition:color .25s}
.mv-ready .faq-list details:hover summary{color:var(--primary)}
.mv-ready .nav a{position:relative}
.mv-ready .nav a::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:var(--primary);
  transition:width .3s var(--mv-ease)}
.mv-ready .nav a:hover::after{width:100%}
.mv-ready .nav a.on::after{width:100%}
/* 图片淡入，避免懒加载突兀 */
.mv-ready img.mv-fade{opacity:0;transition:opacity .6s var(--mv-ease)}
.mv-ready img.mv-fade.is-in{opacity:1}

/* ---------- 7. 深色主题 ---------- */
html[data-theme="dark"] .hero.mv-hero{background:linear-gradient(180deg,#0d1017 0%,var(--bg) 76%)}
html[data-theme="dark"] .mv-orb{opacity:.22;filter:blur(84px)}
html[data-theme="dark"] .mv-orb.o2{opacity:.16}
html[data-theme="dark"] .mv-grain{opacity:.05;mix-blend-mode:screen}
html[data-theme="dark"] .mv-grid{opacity:.28}
html[data-theme="dark"] .mv-hero-art .mv-fc{background:rgba(24,29,39,.86);box-shadow:0 20px 44px -20px rgba(0,0,0,.7)}
html[data-theme="dark"] .mv-stage{background:radial-gradient(circle at 50% 34%,rgba(24,29,39,.92),rgba(17,21,28,.84));
  box-shadow:0 26px 62px -32px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,255,255,.05)}
html[data-theme="dark"] .mv-media{background:rgba(24,29,39,.72)}
html[data-theme="dark"] .mv-dot:not(.is-on){background:rgba(255,255,255,.28)}
html[data-theme="dark"] .mv-slide.is-logo .mv-media{background:radial-gradient(circle at 50% 38%,#fff,#eef3f1 72%)}   /* 深色下标志是深墨稿，整圆垫浅底保住可读性 */
html[data-theme="dark"] .mv-plat{background:rgba(24,29,39,.72)}
html[data-theme="dark"] .mv-chips li{background:rgba(24,29,39,.7)}
html[data-theme="dark"] .mv-eyebrow{background:rgba(24,29,39,.72)}
html[data-theme="dark"] .mv-ready .card:hover{box-shadow:0 12px 24px -14px rgba(0,0,0,.6),0 30px 54px -26px rgba(0,0,0,.75)}
html[data-theme="dark"] .mv-marquee{background:#12161e}

/* ---------- 8. 响应式 ---------- */
@media (max-width:980px){
  .mv-hero-in{grid-template-columns:1fr;gap:0}
  /* 展台不再整块隐藏：手机端退化为居中圆形展台（隐藏光晕/圆环/浮动卡，只留标志与 3D 轮播） */
  .mv-hero-art{height:auto;max-width:320px;margin:30px auto 0;padding-bottom:30px;perspective:none}
  .mv-hero-art .mv-glow,.mv-hero-art .mv-ring,.mv-hero-art .mv-fc{display:none}
  .mv-stage{position:relative;left:auto;top:auto;margin:0 auto;width:254px;height:254px}
  .mv-slide{padding:0;gap:8px}
  .mv-media{width:150px;height:150px}
  .mv-slide.is-logo{padding:0}
  .mv-slide.is-logo .mv-media{width:100%;height:100%}
  .mv-dots{bottom:-24px}
  .hero.mv-hero{padding:60px 0 56px;text-align:center}
  .mv-hero .cta,.mv-chips{justify-content:center}
  .mv-eyebrow{margin-inline:auto}
  .mv-scroll{display:none}
}
@media (max-width:560px){
  .hero.mv-hero{padding:44px 0 40px}
  .mv-h1{font-size:clamp(23px,6.2vw,27px);line-height:1.26}
  .mv-chips{gap:8px;margin-top:22px}
  .mv-chips li{font-size:12px;padding:7px 10px}
  .mv-mq-group{gap:22px;padding-right:22px}
  .mv-mq-group span{gap:22px;font-size:12px}
}
/* 触屏无 hover：去掉跟随光与浮起，改按压反馈 */
@media (hover:none){
  .mv-ready .card::before{display:none}
  .mv-ready .card:hover{transform:none;box-shadow:var(--shadow)}
  .mv-ready .card:active{transform:scale(.988)}
  .mv-marquee:hover .mv-mq-track{animation-play-state:running}
}

/* ---------- 9. 减弱动效（系统设置）---------- */
@media (prefers-reduced-motion:reduce){
  .mv-orb,.mv-hero-art .mv-fc,.mv-hero-art .mv-ring.r2,.mv-mq-track,
  .mv-scroll i,.mv-eyebrow i{animation:none!important}
  .mv-ready .mv-h1 .mv-ch{opacity:1;transform:none;animation:none!important}
  .mv-ready .card:hover{transform:none}
  .mv-ready .card.product:hover .thumb img{transform:none}
  .mv-ready .card.product .thumb::after{display:none}
  .mv-prog{display:none}
}

/* ---------- 10. 关键帧 ---------- */
@keyframes mv-ch-in{
  from{opacity:0;transform:translateY(26px) rotateX(-46deg)}
  to{opacity:1;transform:none}
}
@keyframes mv-drift-a{
  0%,100%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(-46px,34px,0) scale(1.09)}
}
@keyframes mv-drift-b{
  0%,100%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(34px,-28px,0) scale(1.06)}
}
@keyframes mv-float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-12px)}
}
@keyframes mv-spin{to{transform:rotate(360deg)}}
@keyframes mv-pulse{
  0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--primary) 55%,transparent)}
  70%{box-shadow:0 0 0 7px transparent}
  100%{box-shadow:0 0 0 0 transparent}
}
@keyframes mv-scroll-dot{
  0%{transform:translateY(0);opacity:0}
  35%{opacity:1}
  100%{transform:translateY(12px);opacity:0}
}
@keyframes mv-mq{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(-50%,0,0)}
}
@keyframes mv-faq{
  from{opacity:0;transform:translateY(-6px)}
  to{opacity:1;transform:none}
}
