/* /assets/css/machines/building-equip/how-a-roof-drain-water-trap-works-cutaway.css — 本页专属样式（en/zh 共用） */
/* machines 类目基线 + 本页专属样式（en/zh 共用） */
.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))}
.part .water{fill:#7fb2e8;fill-opacity:.55;stroke:#2563eb;stroke-width:1.2}
.part.is-active .water{fill:#2563eb;fill-opacity:.7}
.duct{fill:none;stroke:#cfd9e6;stroke-width:46;stroke-linecap:round;stroke-linejoin:round}
.part.is-active .duct{stroke:#9dc3f5}
.pipe-flow{fill:none;stroke:var(--accent);stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 16;opacity:0;transition:opacity .4s}
.is-running .pipe-flow{opacity:.95;animation:flow 1.1s linear infinite}
@keyframes flow{to{stroke-dashoffset:-26}}
.rain{stroke:#3b82f6;stroke-width:4;stroke-linecap:round;opacity:.7;animation:fall 1.1s linear infinite}
@keyframes fall{0%{transform:translateY(-10px);opacity:0}30%{opacity:.85}100%{transform:translateY(26px);opacity:0}}
/* 各部件区分色 */
.part[data-id="part-strainer"] .body{fill:#b7c4d4}
.part[data-id="part-drain-body"] .body{fill:#bcd9f2}.part[data-id="part-drain-body"] .body2{fill:#d6e9fb}
.part[data-id="part-leader"]:not(.is-active) .duct{stroke:#bfc9d6}
.part[data-id="part-trap"]:not(.is-active) .duct{stroke:#c8c1e5}
.part[data-id="part-outlet"]:not(.is-active) .duct{stroke:#bfe0f5}
.part[data-id="part-shell-roof"] .body{fill:#cfd9e6}