/* /assets/css/systems/business-ops/how-internal-information-reporting-chain-works-inside-an-organization-explained.css — 本页专属样式（en/zh 共用） */
/* ============ 企业内部信息报送链 · Internal information reporting chain ============
   抽象系统流程图：方框 + 箭头，无外壳。共享类（.part/.tag/.tag-sm/.is-running/
   @keyframes）已在 base 定义；零件区分色与动画用 body[data-topic="internal-reporting"]
   作用域限定，避免与其它页互扰。 */

/* 零件本体 / 高亮（base 未含，本页补全） */
.part .body{fill:var(--metal);stroke:#2563eb;stroke-width:1.6}
.part .body2{fill:var(--metal-2);stroke:#60a5fa;stroke-width:1.2}
.part .body3{fill:#aab9cd;stroke:none}
.part .accent{fill:none;stroke:#6b7b8c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.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 .accent{stroke:#1d4ed8}
.part.is-active{filter:drop-shadow(0 0 12px rgba(29,78,216,.5))}

/* 小字对比度修正（页面作用域） */
body[data-topic="internal-reporting"] .tag-sm{fill:#5b6472;font-size:11px}

/* 各部件区分色（作用域限定 · 均在中灰蓝值域内，禁近白） */
body[data-topic="internal-reporting"] .part[data-id="part-executive"]:not(.is-active) .body{fill:#bccbe0}
body[data-topic="internal-reporting"] .part[data-id="part-middlemgmt"]:not(.is-active) .body{fill:#c2d1e4}
body[data-topic="internal-reporting"] .part[data-id="part-department"]:not(.is-active) .body{fill:#c6d3e5}
body[data-topic="internal-reporting"] .part[data-id="part-frontline"]:not(.is-active) .body{fill:#bfcee2}

/* 报告流（向上·虚线蓝）/ 决策流（向下·虚线橙） */
.ir-flow-up{fill:none;stroke:#2563eb;stroke-width:3;stroke-linecap:round;stroke-dasharray:11 9;animation:ir-up 1.5s linear infinite;animation-play-state:paused}
.ir-flow-down{fill:none;stroke:#ea580c;stroke-width:3;stroke-linecap:round;stroke-dasharray:11 9;animation:ir-dn 1.5s linear infinite;animation-play-state:paused}
.is-running .ir-flow-up,.is-running .ir-flow-down{animation-play-state:running}
@keyframes ir-up{to{stroke-dashoffset:-40}}
@keyframes ir-dn{to{stroke-dashoffset:-40}}

.ir-dot-up{fill:#2563eb;animation:ir-dotup 3s linear infinite;animation-play-state:paused}
.ir-dot-dn{fill:#ea580c;animation:ir-dotdn 3s linear infinite;animation-play-state:paused}
.is-running .ir-dot-up,.is-running .ir-dot-dn{animation-play-state:running}
@keyframes ir-dotup{0%{transform:translateY(0);opacity:0}10%{opacity:1}90%{opacity:1}100%{transform:translateY(-520px);opacity:0}}
@keyframes ir-dotdn{0%{transform:translateY(0);opacity:0}10%{opacity:1}90%{opacity:1}100%{transform:translateY(520px);opacity:0}}

@media (prefers-reduced-motion:reduce){
  .is-running .ir-flow-up,.is-running .ir-flow-down,.is-running .ir-dot-up,.is-running .ir-dot-dn{animation:none}
  .ir-flow-up,.ir-flow-down{stroke-dashoffset:0}
}