/* /assets/css/systems/org-institutions/how-a-multi-layer-administrative-information-delivery-model-works-explained.css — 本页专属样式（en/zh 共用） */
/* ============ 多层行政信息传递模型 · Multi-layer administrative information delivery (systems) ============
   抽象系统流程图：方框 + 箭头，无外壳。共享类（.part/.body/.body2/.body3/.accent/
   .tag/.tag-sm/.is-running/@keyframes）已在 base 定义；零件区分色与动画用
   body[data-topic="admin-info-delivery"] 作用域限定，避免与其它页互扰。
   红线：仅作抽象模型，不涉及任何现实国家 / 组织 / 政体的评判。 */

/* 主题蓝体系：零件描边 / 小字对比度修正（页面作用域） */
body[data-topic="admin-info-delivery"] .part .body{stroke:#2563eb;stroke-width:1.6}
body[data-topic="admin-info-delivery"] .part .body2{stroke:#60a5fa;stroke-width:1.2}
body[data-topic="admin-info-delivery"] .tag-sm{fill:#5b6472;font-size:11px}

/* 各部件区分色（作用域限定 · per-part distinct fills，均在中灰蓝值域内，禁近白） */
body[data-topic="admin-info-delivery"] .ml-p-source .body{fill:#c2d1e4}
body[data-topic="admin-info-delivery"] .ml-p-source .body2{fill:#dde7f4}
body[data-topic="admin-info-delivery"] .ml-p-encode .body{fill:#bccbe0}
body[data-topic="admin-info-delivery"] .ml-p-encode .body2{fill:#d8e4f3}
body[data-topic="admin-info-delivery"] .ml-p-relay .body{fill:#c6d3e5}
body[data-topic="admin-info-delivery"] .ml-p-relay .body2{fill:#e0eaf5}
body[data-topic="admin-info-delivery"] .ml-p-delivery .body{fill:#bfcee2}
body[data-topic="admin-info-delivery"] .ml-p-delivery .body2{fill:#dae6f4}
body[data-topic="admin-info-delivery"] .ml-p-recipient .body{fill:#c4d1e3}
body[data-topic="admin-info-delivery"] .ml-p-recipient .body2{fill:#dce7f3}

/* 高亮态（页面引擎 is-active 时） */
.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))}

/* 交付流（向下·实蓝）/ 回执流（向上·虚线橙） */
.ml-flow-down{fill:none;stroke:#2563eb;stroke-width:3;stroke-linecap:round;stroke-dasharray:12 10;animation:ml-dn 1.4s linear infinite;animation-play-state:paused}
.ml-flow-up{fill:none;stroke:#ea580c;stroke-width:3;stroke-linecap:round;stroke-dasharray:12 10;animation:ml-up 1.6s linear infinite;animation-play-state:paused}
.is-running .ml-flow-down,.is-running .ml-flow-up{animation-play-state:running}
@keyframes ml-dn{to{stroke-dashoffset:-44}}
@keyframes ml-up{to{stroke-dashoffset:-44}}

/* 沿管道移动的“信息包” */
.ml-packet-dn{fill:#2563eb;animation:ml-pkdn 3.2s linear infinite;animation-play-state:paused}
.ml-packet-up{fill:#ea580c;animation:ml-pkup 3.2s linear infinite;animation-play-state:paused}
.is-running .ml-packet-dn,.is-running .ml-packet-up{animation-play-state:running}
@keyframes ml-pkdn{0%{transform:translateY(0);opacity:0}8%{opacity:1}92%{opacity:1}100%{transform:translateY(510px);opacity:0}}
@keyframes ml-pkup{0%{transform:translateY(0);opacity:0}8%{opacity:1}92%{opacity:1}100%{transform:translateY(-510px);opacity:0}}

/* 每层损耗 / 失真的抽象提示 */
.ml-p-distortion{animation:ml-dist 3.2s ease-in-out infinite;animation-play-state:paused}
.is-running .ml-p-distortion{animation-play-state:running}
@keyframes ml-dist{0%,100%{opacity:.45}50%{opacity:1}}

@media (prefers-reduced-motion:reduce){
  .is-running .ml-flow-down,.is-running .ml-flow-up,.is-running .ml-packet-dn,
  .is-running .ml-packet-up,.is-running .ml-p-distortion{animation:none}
}