/* assets/css/physics/fluid-dynamics/cavitation-bubble-formation-collapse-physics-condition-demo.css — 本页专属样式（en/zh 共用） */
/* ============ 空化：气泡生成与溃灭 · Cavitation ============
   源图：svgs/done/physics-10-cavitation-bubble-formation-collapse-physics-condition-demo.html。
   本图专属类统一 ca-* 前缀；共享类（.part/.body/.body2/.body3/.accent/.tag/.tag-sm/
   .is-running/@keyframes）沿用。零件区分色与动画用 body[data-topic="cavitation"] 作用域限定。
   本页为失效工况演示（condition-demo）。 */

/* 主题蓝体系：零件描边 / 小字对比度 */
body[data-topic="cavitation"] .part .body{fill:#c2d1e4;stroke:#2563eb;stroke-width:1.6}
body[data-topic="cavitation"] .part .body2{fill:#dde7f4;stroke:#60a5fa;stroke-width:1.2}
body[data-topic="cavitation"] .part .body3{fill:#aab9cd;stroke:none}
body[data-topic="cavitation"] .part .accent{fill:none;stroke:#2563eb;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
body[data-topic="cavitation"] .tag-sm{fill:#5b6472}

/* 高亮态（换色 + 描边加粗 + 发光） */
body[data-topic="cavitation"] .part.is-active .body{fill:#9dc3f5;stroke:#1d4ed8;stroke-width:2.2}
body[data-topic="cavitation"] .part.is-active .body2{fill:#c4daf8;stroke:#3b82f6;stroke-width:1.4}
body[data-topic="cavitation"] .part.is-active .body3{fill:#1d4ed8}
body[data-topic="cavitation"] .part.is-active .accent{stroke:#1d4ed8}
body[data-topic="cavitation"] .part.is-active{filter:drop-shadow(0 0 12px rgba(29,78,216,.5))}

/* ===== 管壁（剖切外轮廓） ===== */
.ca-wall{fill:none;stroke:#8ea0b5;stroke-width:22;stroke-linecap:round;stroke-linejoin:round}
.part.is-active .ca-wall{stroke:#3b82f6}

/* ===== 液体流道（材质专用色） ===== */
.ca-fluid{fill:#9cc7ee;fill-opacity:.42;stroke:none}
.part.is-active .ca-fluid{fill:#60a5fa;fill-opacity:.55}

/* ===== 压力区（高压 / 低压） ===== */
.ca-hp{fill:#2563eb;fill-opacity:.14;stroke:#2563eb;stroke-width:1.4;stroke-dasharray:8 6}
.ca-lp{fill:#38bdf8;fill-opacity:.24;stroke:#0284c7;stroke-width:1.4;stroke-dasharray:8 6}
.part.is-active .ca-hp{fill:#2563eb;fill-opacity:.26}
.part.is-active .ca-lp{fill:#0ea5e9;fill-opacity:.4;stroke:#0369a1}

/* ===== 流向 ===== */
.ca-flow{fill:none;stroke:#1e40af;stroke-width:3;stroke-linecap:round;stroke-dasharray:14 11;
  animation:ca-flow 1.1s linear infinite;animation-play-state:paused}
.is-running .ca-flow{animation-play-state:running}
.part.is-active .ca-flow{stroke:#1d4ed8;stroke-width:3.4}

/* ===== 气泡（生成 / 长大 / 溃灭） ===== */
.ca-bubble{fill:#cfe3fb;stroke:#2563eb;stroke-width:1.6;
  transform-box:fill-box;transform-origin:50% 50%;
  animation:ca-grow 2.4s ease-in-out infinite;animation-play-state:paused}
.is-running .ca-bubble{animation-play-state:running}
.part.is-active .ca-bubble{fill:#9dc3f5;stroke:#1d4ed8}

.ca-burst{fill:#93c5fd;stroke:#1d4ed8;stroke-width:1.6;
  transform-box:fill-box;transform-origin:50% 50%;
  animation:ca-burst 2.4s ease-in-out infinite;animation-play-state:paused}
.is-running .ca-burst{animation-play-state:running}
.part.is-active .ca-burst{fill:#60a5fa}

.ca-wave{fill:none;stroke:#1d4ed8;stroke-width:2.4;stroke-linecap:round;opacity:.9;
  transform-box:fill-box;transform-origin:50% 50%;
  animation:ca-wave 2.4s ease-out infinite;animation-play-state:paused}
.is-running .ca-wave{animation-play-state:running}
.ca-wave.w2{animation-delay:.18s}

/* ===== 剥蚀坑 / 点蚀 ===== */
.ca-pit{fill:#7c3f52;fill-opacity:.55;stroke:#9f1239;stroke-width:1.4}
.part.is-active .ca-pit{fill:#9f1239;fill-opacity:.8}

/* ===== 压力曲线图 ===== */
.ca-axis{stroke:#9aa6b8;stroke-width:1.4}
.ca-vapour{fill:none;stroke:#be123c;stroke-width:1.8;stroke-dasharray:9 7}
.ca-curve{fill:none;stroke:#2563eb;stroke-width:2.8;stroke-linecap:round;
  stroke-dasharray:2000;stroke-dashoffset:2000;
  animation:ca-draw 3s ease-in-out infinite alternate;animation-play-state:paused}
.is-running .ca-curve{animation-play-state:running}
.part.is-active .ca-curve{stroke:#1d4ed8;stroke-width:3.4}
.ca-danger{fill:#be123c;fill-opacity:.12;stroke:none}

/* ===== 引线 ===== */
.ca-lead{fill:none;stroke:#8ea0b5;stroke-width:1.4;stroke-linecap:round}
.part.is-active .ca-lead{stroke:#1d4ed8}

/* ============ 关键帧 ============ */
@keyframes ca-flow{to{stroke-dashoffset:-50}}
@keyframes ca-grow{0%,100%{transform:scale(.6);opacity:.55}45%{transform:scale(1.25);opacity:1}}
@keyframes ca-burst{0%,40%{transform:scale(.2);opacity:0}60%{transform:scale(1.3);opacity:1}100%{transform:scale(.2);opacity:0}}
@keyframes ca-wave{0%{transform:scale(.4);opacity:.9}100%{transform:scale(1.5);opacity:0}}
@keyframes ca-draw{to{stroke-dashoffset:0}}

/* ===== 无障碍：减弱动效 ===== */
@media (prefers-reduced-motion:reduce){
  body[data-topic="cavitation"] .ca-flow,
  body[data-topic="cavitation"] .ca-bubble,
  body[data-topic="cavitation"] .ca-burst,
  body[data-topic="cavitation"] .ca-wave,
  body[data-topic="cavitation"] .ca-curve{animation:none}
  body[data-topic="cavitation"] .ca-curve{stroke-dashoffset:0}
  body[data-topic="cavitation"] .ca-burst{transform:scale(1.2);opacity:1}
}