/* /assets/css/machines/fluid-pump-valve/how-a-check-valve-non-return-valve-works-cutaway.css — 本页专属样式（en/zh 共用） */

/* ============ 零件本体/区分色（part bodies & per-part distinct fills） ============ */
.part .body{fill:var(--metal);stroke:#8ea0b5;stroke-width:1.6}
.part .body2{fill:var(--metal-2);stroke:#a9b7c9;stroke-width:1.2}
.part .body3{fill:#c6d0dd;stroke:none}
.part .accent{fill:none;stroke:#6b7b8c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.part.is-active .body{fill:#cfe3fb;stroke:var(--accent)}
.part.is-active .body2{fill:#e3eefc;stroke:#60a5fa}
.part.is-active .body3{fill:var(--accent)}
.part.is-active .accent{stroke:var(--accent-2)}
.part.is-active{filter:drop-shadow(0 0 10px rgba(37,99,235,.35))}

/* ============ 管道流动（flow） ============ */
.pipe-flow{fill:none;stroke:var(--accent);stroke-width:6;stroke-linecap:round;stroke-dasharray:10 16;opacity:0;transition:opacity .4s}
.is-running .pipe-flow{opacity:.95;animation:flow 1.15s linear infinite}
@keyframes flow{to{stroke-dashoffset:-26}}

/* ============ 弹簧（spring） ============ */
.spring{fill:none;stroke:#94a3b8;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.part.is-active .spring{stroke:var(--accent-2)}

/* ============ 阀芯与弹簧运动（motion） ============ */
.ball{transform-box:view-box;animation:cv-ball 3s ease-in-out infinite;animation-play-state:paused}
.spring-coil{transform-box:view-box;transform-origin:764px 345px;animation:cv-spring 3s ease-in-out infinite;animation-play-state:paused}
.is-running .ball,.is-running .spring-coil{animation-play-state:running}
@keyframes cv-ball{0%,30%{transform:translateX(0)} 45%,65%{transform:translateX(26px)} 80%,100%{transform:translateX(0)}}
@keyframes cv-spring{0%,30%{transform:scaleX(1)} 45%,65%{transform:scaleX(.78)} 80%,100%{transform:scaleX(1)}}

/* ============ 各部件区分色 ============ */
body[data-topic="check-valve"] .part[data-id="part-inlet"]:not(.is-active) .body{fill:#bcd9f2}
body[data-topic="check-valve"] .part[data-id="part-inlet"]:not(.is-active) .body2{fill:#d6e9fb}
body[data-topic="check-valve"] .part[data-id="part-outlet"]:not(.is-active) .body{fill:#bfe0f5}
body[data-topic="check-valve"] .part[data-id="part-outlet"]:not(.is-active) .body2{fill:#e0f1fc}
body[data-topic="check-valve"] .part[data-id="part-seat"]:not(.is-active) .body2{fill:#aab9cd}
body[data-topic="check-valve"] .part[data-id="part-disc"]:not(.is-active) .body3{fill:#d3b184}
body[data-topic="check-valve"] .part[data-id="part-guide"]:not(.is-active) .body2{fill:#c6cfda}

@media (prefers-reduced-motion:reduce){
  .ball,.spring-coil{animation:none !important}
  .ball{transform:translateX(26px)}
  .spring-coil{transform:scaleX(.78)}
}