/* /assets/css/machines/aerospace/turbofan-engine-fan-bypass-duct-core-flow-split-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))}

/* ============ 动画：风扇/压气机/涡轮转动感 + 火焰 + 流动 ============ */
.rotor{transform-box:view-box;animation:bladeShift .8s ease-in-out infinite;animation-play-state:paused}
.rotor.fast{animation-duration:.55s}
.is-running .rotor{animation-play-state:running}
@keyframes bladeShift{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

.flame{transform-box:view-box;transform-origin:640px 400px;animation:flamePulse .7s ease-in-out infinite;animation-play-state:paused;opacity:0;transition:opacity .4s}
.is-running .flame{opacity:1;animation-play-state:running}
@keyframes flamePulse{0%,100%{transform:scaleX(.92);opacity:.8}50%{transform:scaleX(1.06);opacity:1}}

.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}
.pipe-flow.cold{stroke:#2563eb}
.pipe-flow.hot{stroke:#ea580c}
.is-running .pipe-flow{opacity:.95;animation:flow 1.05s linear infinite}
.is-running .pipe-flow.hot{animation-duration:.7s}
@keyframes flow{to{stroke-dashoffset:-26}}

/* ============ 涡扇发动机剖面图 · Turbofan engine ============
   源图：svgs/todo/machine-60-turbofan-engine-fan-bypass-duct-core-flow-split-cutaway.html。 */
body[data-topic="turbofan-engine"] .part[data-id="part-fan"]:not(.is-active) .body{fill:#b7c9dd}
body[data-topic="turbofan-engine"] .part[data-id="part-fan"]:not(.is-active) .body2{fill:#d8e3ef}
body[data-topic="turbofan-engine"] .part[data-id="part-bypass-duct"]:not(.is-active) .body{fill:#bcd9f2}
body[data-topic="turbofan-engine"] .part[data-id="part-bypass-duct"]:not(.is-active) .body2{fill:#d6e9fb}
body[data-topic="turbofan-engine"] .part[data-id="part-core-compressor"]:not(.is-active) .body{fill:#c6d0dd}
body[data-topic="turbofan-engine"] .part[data-id="part-core-combustor"]:not(.is-active) .body{fill:#c2b6d9}
body[data-topic="turbofan-engine"] .part[data-id="part-core-combustor"]:not(.is-active) .body2{fill:#ddd4ec}
body[data-topic="turbofan-engine"] .part[data-id="part-core-turbine"]:not(.is-active) .body{fill:#d3c3a0}
body[data-topic="turbofan-engine"] .part[data-id="part-core-turbine"]:not(.is-active) .body2{fill:#e6dbbf}
body[data-topic="turbofan-engine"] .part[data-id="part-core-nozzle"]:not(.is-active) .body{fill:#aab9cd}
body[data-topic="turbofan-engine"] .part[data-id="part-bypass-nozzle"]:not(.is-active) .body{fill:#a9ccec}
body[data-topic="turbofan-engine"] .part[data-id="part-bypass-nozzle"]:not(.is-active) .body2{fill:#cde6f8}

.blade{stroke:#5b6a7d;stroke-width:3;stroke-linecap:round}
.part.is-active .blade{stroke:var(--accent-2)}
.drum{fill:#c6d0dd;stroke:#8ea0b5;stroke-width:1.4}
.part.is-active .drum{fill:#cfe3fb;stroke:var(--accent)}