/* assets/css/physics/fluid-dynamics/vortex-formation-in-a-drain-whirlpool-explained.css — 本页专属样式（en/zh 共用） */
/* ============ 排水漩涡中的涡旋 · Drain whirlpool vortex ============
   源图：svgs/done/physics-08-vortex-formation-in-a-drain-whirlpool-explained.html。
   本图专属类统一 vx-* 前缀；共享类（.part/.body/.body2/.body3/.accent/.tag/.tag-sm/
   .is-running/@keyframes）沿用。零件区分色与动画用 body[data-topic="drain-vortex"] 作用域限定。 */

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

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

/* 各部件区分色（均在中灰蓝值域内，禁近白） */
body[data-topic="drain-vortex"] .part[data-id="part-basin"]:not(.is-active) .body{fill:#b9c9de}
body[data-topic="drain-vortex"] .part[data-id="part-drain"]:not(.is-active) .body{fill:#c6d3e5}
body[data-topic="drain-vortex"] .part[data-id="part-water"]:not(.is-active) .body2{fill:#cfe0f5}

/* ===== 水体（液体，材质专用色，不受中灰蓝限制） ===== */
.vx-water{fill:#9cc7ee;fill-opacity:.55;stroke:#2563eb;stroke-width:1.6}
.part.is-active .vx-water{fill:#60a5fa;fill-opacity:.7;stroke:#1d4ed8;stroke-width:2.2}

/* ===== 自由液面（水面线） ===== */
.vx-surface{fill:none;stroke:#1d4ed8;stroke-width:2.8;stroke-linecap:round}

/* ===== 螺旋流线（向内向下收拢） ===== */
.vx-stream{fill:none;stroke:#1e40af;stroke-width:2.6;stroke-linecap:round;
  stroke-dasharray:16 12;animation:vx-flow 1.3s linear infinite;animation-play-state:paused}
.is-running .vx-stream{animation-play-state:running}
.part.is-active .vx-stream{stroke:#1d4ed8;stroke-width:3.2}

/* ===== 空气芯（漏斗中心的空腔） ===== */
.vx-core{fill:#cfe0f5;stroke:#3b82f6;stroke-width:1.6;stroke-dasharray:7 6;
  animation:vx-flow-down 1.6s linear infinite;animation-play-state:paused}
.is-running .vx-core{animation-play-state:running}
.part.is-active .vx-core{fill:#a9cdf2;stroke:#1d4ed8}

/* ===== 旋转（环流）虚线 ===== */
.vx-swirl{fill:none;stroke:#2563eb;stroke-width:2.8;stroke-linecap:round;stroke-dasharray:18 12;opacity:.9;
  animation:vx-flow 1.6s linear infinite;animation-play-state:paused}
.is-running .vx-swirl{animation-play-state:running}
.part.is-active .vx-swirl{stroke:#1d4ed8;stroke-width:3.4}

/* ===== 排出口外流箭头 ===== */
.vx-out{fill:none;stroke:#1d4ed8;stroke-width:3;stroke-linecap:round;stroke-dasharray:12 10;
  animation:vx-flow-down 1s linear infinite;animation-play-state:paused}
.is-running .vx-out{animation-play-state:running}

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

/* ============ 关键帧 ============ */
@keyframes vx-flow{to{stroke-dashoffset:-56}}
@keyframes vx-flow-down{to{stroke-dashoffset:-44}}

/* ===== 无障碍：减弱动效 ===== */
@media (prefers-reduced-motion:reduce){
  body[data-topic="drain-vortex"] .vx-stream,
  body[data-topic="drain-vortex"] .vx-core,
  body[data-topic="drain-vortex"] .vx-swirl,
  body[data-topic="drain-vortex"] .vx-out{animation:none}
}