/* /assets/css/machines/automotive/turbo-surge-condition-what-is-compressor-surge-and-how-it-happens-condition-demo.css - 本页专属样式（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.is-active .body{fill:#9dc3f5;stroke:#1d4ed8;stroke-width:2.2}
.part.is-active .body2{fill:#c4daf8;stroke:#3b82f6;stroke-width:1.4}
.part.is-active .body3{fill:#1d4ed8}
.part.is-active{filter:drop-shadow(0 0 12px rgba(29,78,216,.5))}

/* 主题蓝体系（页面作用域，非重定义共享规则） */
body[data-topic="turbo-surge"] .part .body{stroke:#2563eb;stroke-width:1.6}
body[data-topic="turbo-surge"] .part .body2{stroke:#60a5fa}
body[data-topic="turbo-surge"] .tag-sm{fill:#5b6472}

/* 各部件区分色（均在中灰蓝值域内） */
body[data-topic="turbo-surge"] .part[data-id="part-engine"]:not(.is-active) .body{fill:#c2d1e4}
body[data-topic="turbo-surge"] .part[data-id="part-engine"]:not(.is-active) .body2{fill:#dde7f4}
body[data-topic="turbo-surge"] .part[data-id="part-engine"]:not(.is-active) .body3{fill:#aab9cd}
body[data-topic="turbo-surge"] .part[data-id="part-intake-pipe"]:not(.is-active) .body2{fill:#dde7f4}
body[data-topic="turbo-surge"] .part[data-id="part-intake-pipe"]:not(.is-active) .body3{fill:#b6c4d7}
body[data-topic="turbo-surge"] .part[data-id="part-compressor-wheel"]:not(.is-active) .body{fill:#c2d1e4}
body[data-topic="turbo-surge"] .part[data-id="part-compressor-wheel"]:not(.is-active) .body2{fill:#dde7f4}
body[data-topic="turbo-surge"] .part[data-id="part-compressor-wheel"]:not(.is-active) .body3{fill:#aab9cd}
body[data-topic="turbo-surge"] .part[data-id="part-turbine-wheel"]:not(.is-active) .body{fill:#c6d3e5}
body[data-topic="turbo-surge"] .part[data-id="part-turbine-wheel"]:not(.is-active) .body2{fill:#dfe9f4}
body[data-topic="turbo-surge"] .part[data-id="part-turbine-wheel"]:not(.is-active) .body3{fill:#b3c2d6}
body[data-topic="turbo-surge"] .part[data-id="part-shaft"]:not(.is-active) .body2{fill:#dde7f4}
body[data-topic="turbo-surge"] .part[data-id="part-shaft"]:not(.is-active) .body3{fill:#b0bfd3}
body[data-topic="turbo-surge"] .part[data-id="part-throttle"]:not(.is-active) .body{fill:#ccd8e8}
body[data-topic="turbo-surge"] .part[data-id="part-throttle"]:not(.is-active) .body3{fill:#aab9cd}
body[data-topic="turbo-surge"] .part[data-id="part-turbine-inlet"]:not(.is-active) .body2{fill:#d8e2f1}
body[data-topic="turbo-surge"] .part[data-id="part-boost-gauge"]:not(.is-active) .body{fill:#c2d1e4}
body[data-topic="turbo-surge"] .part[data-id="part-boost-gauge"]:not(.is-active) .body2{fill:#dde7f4}
body[data-topic="turbo-surge"] .part[data-id="part-shell-housing"]:not(.is-active) .body{fill:#dfe6ef;stroke:#9aa6b8}

/* 管路 / 叶片 / 表盘：本页专属绘制类 */
.ts-pipe{fill:none;stroke:#c9d6e7;stroke-width:40;stroke-linecap:round;stroke-linejoin:round}
.ts-pipe-in{fill:none;stroke:#dde7f4;stroke-width:22;stroke-linecap:round;stroke-linejoin:round}
.ts-blade{stroke:#7f93ab;stroke-width:6;stroke-linecap:round}
.ts-tick{stroke:#5b6472;stroke-width:2;stroke-linecap:round}
.ts-plate{stroke:#7f93ab;stroke-width:9;stroke-linecap:round}
body[data-topic="turbo-surge"] .part.is-active .ts-plate{stroke:#1d4ed8}
body[data-topic="turbo-surge"] .part.is-active .ts-blade{stroke:#1d4ed8}
body[data-topic="turbo-surge"] .part.is-active .ts-pipe{stroke:#9dc3f5}
body[data-topic="turbo-surge"] .part.is-active .ts-pipe-in{stroke:#c4daf8}

/* 流体 / 能量路径：冷端蓝、热端橙 */
.ts-flow-cold{fill:none;stroke:#2563eb;stroke-width:6;stroke-linecap:round}
.ts-flow-hot{fill:none;stroke:#ea580c;stroke-width:6;stroke-linecap:round}
.ts-flow-surge{fill:none;stroke:#dc2626;stroke-width:6;stroke-linecap:round}

/* ============ 动画（ts- 前缀唯一命名） ============ */
/* 流动虚线描边（正/热气流） */
.ts-flow{stroke-dasharray:10 12;animation:ts-dash .8s linear infinite;animation-play-state:paused}
.is-running .ts-flow{animation-play-state:running}
@keyframes ts-dash{to{stroke-dashoffset:-22}}

/* 压气机叶轮顺时针自转 / 涡轮叶轮逆时针自转 */
.ts-cold-spin{transform-box:view-box;transform-origin:330px 500px;animation:ts-cw 3s linear infinite;animation-play-state:paused}
.is-running .ts-cold-spin{animation-play-state:running}
@keyframes ts-cw{to{transform:rotate(360deg)}}
.ts-hot-spin{transform-box:view-box;transform-origin:870px 500px;animation:ts-ccw 3s linear infinite;animation-play-state:paused}
.is-running .ts-hot-spin{animation-play-state:running}
@keyframes ts-ccw{to{transform:rotate(-360deg)}}

/* 正常增压态：压气机→节气门→发动机的正向气流（喘振时熄灭） */
.ts-boost-fwd{animation:ts-bfwd 8s ease-in-out infinite;animation-play-state:paused}
.is-running .ts-boost-fwd{animation-play-state:running}
@keyframes ts-bfwd{0%,42%{opacity:1}52%,100%{opacity:0}}

/* 喘振态：压气机出口回流倒灌（脉动闪烁） */
.ts-surge{animation:ts-surgeop 8s ease-in-out infinite;animation-play-state:paused}
.is-running .ts-surge{animation-play-state:running}
@keyframes ts-surgeop{
  0%,42%{opacity:0}
  48%{opacity:1}56%{opacity:.35}62%{opacity:1}
  70%{opacity:.4}78%{opacity:1}86%{opacity:.4}94%{opacity:1}100%{opacity:.9}
}

/* 节气门：正常全开(旋转90°与气流平行) → 喘振骤关(竖直封堵) */
.ts-throttle{transform-box:view-box;transform-origin:470px 300px;animation:ts-thr 8s ease-in-out infinite;animation-play-state:paused}
.is-running .ts-throttle{animation-play-state:running}
@keyframes ts-thr{0%,40%{transform:rotate(90deg)}52%,88%{transform:rotate(0deg)}100%{transform:rotate(90deg)}}

/* 增压表指针：正常轻微摆动 → 喘振剧烈抖动 */
.ts-needle{transform-box:view-box;transform-origin:1060px 140px;animation:ts-needle 8s linear infinite;animation-play-state:paused}
.is-running .ts-needle{animation-play-state:running}
@keyframes ts-needle{
  0%{transform:rotate(-38deg)}15%{transform:rotate(-43deg)}22%{transform:rotate(-34deg)}
  30%{transform:rotate(-41deg)}40%{transform:rotate(-38deg)}48%{transform:rotate(-38deg)}
  52%{transform:rotate(-75deg)}55%{transform:rotate(-6deg)}58%{transform:rotate(-72deg)}
  61%{transform:rotate(-8deg)}64%{transform:rotate(-68deg)}67%{transform:rotate(-12deg)}
  70%{transform:rotate(-60deg)}74%{transform:rotate(-20deg)}78%{transform:rotate(-55deg)}
  82%{transform:rotate(-25deg)}88%{transform:rotate(-45deg)}94%{transform:rotate(-38deg)}
  100%{transform:rotate(-38deg)}
}

/* 喘振压力波（放炮脉冲环） */
.ts-bang{transform-box:fill-box;transform-origin:center;animation:ts-bang 8s ease-out infinite;animation-play-state:paused}
.is-running .ts-bang{animation-play-state:running}
@keyframes ts-bang{
  0%,44%{opacity:0;transform:scale(.85)}
  50%{opacity:.9;transform:scale(1)}
  60%{opacity:0;transform:scale(1.28)}
  100%{opacity:0;transform:scale(1.28)}
}

/* 状态说明文字：正常 ⇄ 喘振 */
.ts-state-normal{animation:ts-bfwd 8s ease-in-out infinite;animation-play-state:paused}
.is-running .ts-state-normal{animation-play-state:running}
.ts-state-surge{animation:ts-surgeop 8s ease-in-out infinite;animation-play-state:paused}
.is-running .ts-state-surge{animation-play-state:running}
