/* Animated infrastructure diagrams (src/diagrams-infra.mjs). Every class starts with di-. CSP-safe: all motion lives here.
   One 12 s cycle. Windows di-w<s>-<e> / di-x<s>-<e> are counted in eighths of the cycle (1.5 s). di-a<N> = start offset N x 0.5 s.
   The plate is dark navy in both site themes; colours are custom properties so a tone class (di-t-g/b/t/v/r) recolours a group. */
.diagram.di{margin:2rem 0}
.di-svg{--di-ink:#F5EFE1;--di-gold:#B08D57;--di-gold-hi:#D9B97E;--di-navy:#0E1F3A;--c:#F5EFE1;display:block;width:100%;height:auto;border-radius:6px;background:#13294B;box-shadow:0 1px 2px rgba(19,41,75,.08),0 10px 30px rgba(19,41,75,.16)}
.diagram.di figcaption{margin-top:.75rem;font-size:.93rem;line-height:1.5;color:#586174;max-width:52em}
.di-svg text{font-family:"Libre Franklin",system-ui,-apple-system,"Segoe UI",sans-serif}
@media (prefers-color-scheme:dark){.diagram.di figcaption{color:#B6BFCF}}
:root[data-theme="dark"] .diagram.di figcaption{color:#B6BFCF}
:root[data-theme="light"] .diagram.di figcaption{color:#586174}

/* tones */
.di-t-g{--c:#D9B97E}.di-t-b{--c:#7FB0EA}.di-t-t{--c:#4FC3A8}.di-t-v{--c:#B79CF0}.di-t-r{--c:#E0525F}

/* frame + nodes */
.di-frame{fill:none;stroke:var(--di-gold);stroke-opacity:.55;stroke-width:1}
.di-frame-in{fill:none;stroke:var(--di-gold);stroke-opacity:.22;stroke-width:.75}
.di-orn{fill:var(--di-navy);stroke:var(--di-gold);stroke-opacity:.7;stroke-width:1}
.di-box{fill:var(--di-navy);stroke:var(--c);stroke-opacity:.78;stroke-width:1.25}
.di-box-in,.di-ring-in{stroke:var(--di-gold);stroke-opacity:.42;stroke-width:.75}
.di-ring-in{stroke-dasharray:1.5 2.6}
.di-panel{fill:var(--di-navy);fill-opacity:.45;stroke:var(--di-gold);stroke-opacity:.5;stroke-width:1;stroke-dasharray:5 4}
.di-dim{fill:var(--di-navy);fill-opacity:.7}
.di-ghost{fill:none;stroke:var(--di-gold-hi);stroke-opacity:.6;stroke-width:1.25;stroke-dasharray:4 4}
.di-ic{fill:none;stroke:#C9A86F;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.di-ic-c{stroke:var(--c)}
.di-ic-r{stroke:#E0525F}
.di-ic-xw{stroke:#F5EFE1;stroke-width:3.2}
.di-badge{fill:var(--di-navy);stroke:var(--c);stroke-width:1.4}
.di-xdisc{fill:#B22234;stroke:#F5EFE1;stroke-width:1.5}
.di-dot{fill:var(--c)}
.di-chip{fill:var(--di-navy);stroke:var(--c);stroke-opacity:.6;stroke-width:1}
.di-pill{fill:var(--di-navy);stroke:var(--c);stroke-width:1.2}
.di-pill-on{fill:var(--c);fill-opacity:.95}
.di-t-r .di-pill-on{fill:#B22234}

/* type */
.di-t{fill:#F5EFE1;font-size:15px;font-weight:600}
.di-t-sm{font-size:14px;font-weight:700;letter-spacing:.01em}
.di-ts{fill:#CDB487;font-size:14px;font-weight:400}
.di-ta{fill:#E3C68F;font-weight:700}
.di-tc{fill:#C9A86F;font-size:14px;font-weight:600;letter-spacing:.16em}
.di-tp{fill:#F5EFE1;font-size:14px;font-weight:700}
.di-tp-on{fill:#0E1F3A}
.di-t-r .di-tp-on{fill:#F5EFE1}
.di-tk{fill:#F5EFE1;font-size:14px;font-weight:600;letter-spacing:.02em}

/* round-8 additions */
.di-ah{fill:var(--c);fill-opacity:.95}
.di-tbad{fill:#F08A93;font-weight:700}

/* links */
.di-link{fill:none;stroke:var(--c);stroke-opacity:.55;stroke-width:1.5;stroke-linejoin:round}
.di-l-dash{stroke-dasharray:5 4;stroke-opacity:.8}
.di-l-dim{stroke-opacity:.22;stroke-dasharray:3 5}
.di-l-key{stroke-opacity:1;stroke-width:2.5}
.di-l-row{stroke-opacity:.4;stroke-width:3}
.di-l-100{stroke-opacity:.8;stroke-width:3.5}
.di-l-25{stroke:#F5EFE1;stroke-opacity:.6;stroke-width:2.2}
.di-l-10{stroke:#F5EFE1;stroke-opacity:.5;stroke-width:1.2}

/* packets: zero-length round dashes on pathLength=100 paths */
.di-pk{fill:none;stroke-linecap:round;stroke-dasharray:0 200;stroke-dashoffset:0;opacity:0}
.di-pk-h{stroke:var(--c);stroke-opacity:.4;stroke-width:12}
.di-pk-c{stroke:#F5EFE1;stroke-width:5.5}
.di-t-r .di-pk-h{stroke:#F5EFE1;stroke-opacity:.85;stroke-width:9.5}
.di-t-r .di-pk-c{stroke:#B22234;stroke-width:6.5}

/* static (reduced-motion) states; animations override them */
.di-w{opacity:0}.di-x{opacity:1}.di-sv{opacity:1}
.di-ring{opacity:0;fill:none;stroke:var(--c);stroke-width:2.5;transform-box:fill-box;transform-origin:center}
.di-drop{opacity:0;fill:#B22234;stroke:#F5EFE1;stroke-width:1}

/* motion */
@keyframes di-flow{0%{stroke-dashoffset:0;opacity:0}6%{opacity:1}94%{opacity:1}100%{stroke-dashoffset:-100;opacity:0}}
@keyframes di-hop{0%{stroke-dashoffset:0;opacity:0}.8%{opacity:1}8.33%{stroke-dashoffset:-100;opacity:1}9.5%,100%{stroke-dashoffset:-100;opacity:0}}
@keyframes di-hop2{0%{stroke-dashoffset:0;opacity:0}.8%{opacity:1}16.67%{stroke-dashoffset:-100;opacity:1}17.5%,100%{stroke-dashoffset:-100;opacity:0}}
@keyframes di-ring{0%{transform:scale(.7);opacity:0}1%{opacity:.95}11%,100%{transform:scale(1.65);opacity:0}}
@keyframes di-drop{0%{transform:translate(0,0);opacity:0}8%{opacity:1}100%{transform:translate(-6px,34px);opacity:0}}
@keyframes di-vm{0%,12.5%{transform:translateX(0);opacity:1}37.5%,86%{transform:translateX(500px);opacity:1}90%{transform:translateX(500px);opacity:0}91%{transform:translateX(0);opacity:0}95%,100%{transform:translateX(0);opacity:1}}
.di-flow{animation:di-flow 4s linear infinite both}
.di-d2{animation-duration:2s}.di-d3{animation-duration:3s}.di-d5{animation-duration:5s}.di-d6{animation-duration:6s}
.di-hop{animation:di-hop 12s cubic-bezier(.45,.05,.55,.95) infinite both}
.di-hop2{animation:di-hop2 12s cubic-bezier(.3,0,.7,1) infinite both}
.di-ring{animation:di-ring 12s ease-out infinite both}
.di-drop{animation:di-drop 3s ease-in infinite both}
.di-vm{animation:di-vm 12s ease-in-out infinite both}
@keyframes di-w0-1{0%,11%{opacity:1}12.5%,100%{opacity:0}}@keyframes di-x0-1{0%,11%{opacity:0}12.5%,100%{opacity:1}}
@keyframes di-w0-2{0%,23.5%{opacity:1}25%,100%{opacity:0}}@keyframes di-x0-2{0%,23.5%{opacity:0}25%,100%{opacity:1}}
@keyframes di-w0-3{0%,36%{opacity:1}37.5%,100%{opacity:0}}@keyframes di-x0-3{0%,36%{opacity:0}37.5%,100%{opacity:1}}
@keyframes di-w0-4{0%,48.5%{opacity:1}50%,100%{opacity:0}}@keyframes di-x0-4{0%,48.5%{opacity:0}50%,100%{opacity:1}}
@keyframes di-w0-5{0%,61%{opacity:1}62.5%,100%{opacity:0}}@keyframes di-x0-5{0%,61%{opacity:0}62.5%,100%{opacity:1}}
@keyframes di-w0-6{0%,73.5%{opacity:1}75%,100%{opacity:0}}@keyframes di-x0-6{0%,73.5%{opacity:0}75%,100%{opacity:1}}
@keyframes di-w0-7{0%,86%{opacity:1}87.5%,100%{opacity:0}}@keyframes di-x0-7{0%,86%{opacity:0}87.5%,100%{opacity:1}}
@keyframes di-w0-8{0%,100%{opacity:1}}@keyframes di-x0-8{0%,100%{opacity:0}}
@keyframes di-w1-2{0%,11%{opacity:0}12.5%,23.5%{opacity:1}25%,100%{opacity:0}}@keyframes di-x1-2{0%,11%{opacity:1}12.5%,23.5%{opacity:0}25%,100%{opacity:1}}
@keyframes di-w1-3{0%,11%{opacity:0}12.5%,36%{opacity:1}37.5%,100%{opacity:0}}@keyframes di-x1-3{0%,11%{opacity:1}12.5%,36%{opacity:0}37.5%,100%{opacity:1}}
@keyframes di-w1-4{0%,11%{opacity:0}12.5%,48.5%{opacity:1}50%,100%{opacity:0}}@keyframes di-x1-4{0%,11%{opacity:1}12.5%,48.5%{opacity:0}50%,100%{opacity:1}}
@keyframes di-w1-5{0%,11%{opacity:0}12.5%,61%{opacity:1}62.5%,100%{opacity:0}}@keyframes di-x1-5{0%,11%{opacity:1}12.5%,61%{opacity:0}62.5%,100%{opacity:1}}
@keyframes di-w1-6{0%,11%{opacity:0}12.5%,73.5%{opacity:1}75%,100%{opacity:0}}@keyframes di-x1-6{0%,11%{opacity:1}12.5%,73.5%{opacity:0}75%,100%{opacity:1}}
@keyframes di-w1-7{0%,11%{opacity:0}12.5%,86%{opacity:1}87.5%,100%{opacity:0}}@keyframes di-x1-7{0%,11%{opacity:1}12.5%,86%{opacity:0}87.5%,100%{opacity:1}}
@keyframes di-w1-8{0%,11%{opacity:0}12.5%,100%{opacity:1}}@keyframes di-x1-8{0%,11%{opacity:1}12.5%,100%{opacity:0}}
@keyframes di-w2-3{0%,23.5%{opacity:0}25%,36%{opacity:1}37.5%,100%{opacity:0}}@keyframes di-x2-3{0%,23.5%{opacity:1}25%,36%{opacity:0}37.5%,100%{opacity:1}}
@keyframes di-w2-4{0%,23.5%{opacity:0}25%,48.5%{opacity:1}50%,100%{opacity:0}}@keyframes di-x2-4{0%,23.5%{opacity:1}25%,48.5%{opacity:0}50%,100%{opacity:1}}
@keyframes di-w2-5{0%,23.5%{opacity:0}25%,61%{opacity:1}62.5%,100%{opacity:0}}@keyframes di-x2-5{0%,23.5%{opacity:1}25%,61%{opacity:0}62.5%,100%{opacity:1}}
@keyframes di-w2-6{0%,23.5%{opacity:0}25%,73.5%{opacity:1}75%,100%{opacity:0}}@keyframes di-x2-6{0%,23.5%{opacity:1}25%,73.5%{opacity:0}75%,100%{opacity:1}}
@keyframes di-w2-7{0%,23.5%{opacity:0}25%,86%{opacity:1}87.5%,100%{opacity:0}}@keyframes di-x2-7{0%,23.5%{opacity:1}25%,86%{opacity:0}87.5%,100%{opacity:1}}
@keyframes di-w2-8{0%,23.5%{opacity:0}25%,100%{opacity:1}}@keyframes di-x2-8{0%,23.5%{opacity:1}25%,100%{opacity:0}}
@keyframes di-w3-4{0%,36%{opacity:0}37.5%,48.5%{opacity:1}50%,100%{opacity:0}}@keyframes di-x3-4{0%,36%{opacity:1}37.5%,48.5%{opacity:0}50%,100%{opacity:1}}
@keyframes di-w3-5{0%,36%{opacity:0}37.5%,61%{opacity:1}62.5%,100%{opacity:0}}@keyframes di-x3-5{0%,36%{opacity:1}37.5%,61%{opacity:0}62.5%,100%{opacity:1}}
@keyframes di-w3-6{0%,36%{opacity:0}37.5%,73.5%{opacity:1}75%,100%{opacity:0}}@keyframes di-x3-6{0%,36%{opacity:1}37.5%,73.5%{opacity:0}75%,100%{opacity:1}}
@keyframes di-w3-7{0%,36%{opacity:0}37.5%,86%{opacity:1}87.5%,100%{opacity:0}}@keyframes di-x3-7{0%,36%{opacity:1}37.5%,86%{opacity:0}87.5%,100%{opacity:1}}
@keyframes di-w3-8{0%,36%{opacity:0}37.5%,100%{opacity:1}}@keyframes di-x3-8{0%,36%{opacity:1}37.5%,100%{opacity:0}}
@keyframes di-w4-5{0%,48.5%{opacity:0}50%,61%{opacity:1}62.5%,100%{opacity:0}}@keyframes di-x4-5{0%,48.5%{opacity:1}50%,61%{opacity:0}62.5%,100%{opacity:1}}
@keyframes di-w4-6{0%,48.5%{opacity:0}50%,73.5%{opacity:1}75%,100%{opacity:0}}@keyframes di-x4-6{0%,48.5%{opacity:1}50%,73.5%{opacity:0}75%,100%{opacity:1}}
@keyframes di-w4-7{0%,48.5%{opacity:0}50%,86%{opacity:1}87.5%,100%{opacity:0}}@keyframes di-x4-7{0%,48.5%{opacity:1}50%,86%{opacity:0}87.5%,100%{opacity:1}}
@keyframes di-w4-8{0%,48.5%{opacity:0}50%,100%{opacity:1}}@keyframes di-x4-8{0%,48.5%{opacity:1}50%,100%{opacity:0}}
@keyframes di-w5-6{0%,61%{opacity:0}62.5%,73.5%{opacity:1}75%,100%{opacity:0}}@keyframes di-x5-6{0%,61%{opacity:1}62.5%,73.5%{opacity:0}75%,100%{opacity:1}}
@keyframes di-w5-7{0%,61%{opacity:0}62.5%,86%{opacity:1}87.5%,100%{opacity:0}}@keyframes di-x5-7{0%,61%{opacity:1}62.5%,86%{opacity:0}87.5%,100%{opacity:1}}
@keyframes di-w5-8{0%,61%{opacity:0}62.5%,100%{opacity:1}}@keyframes di-x5-8{0%,61%{opacity:1}62.5%,100%{opacity:0}}
@keyframes di-w6-7{0%,73.5%{opacity:0}75%,86%{opacity:1}87.5%,100%{opacity:0}}@keyframes di-x6-7{0%,73.5%{opacity:1}75%,86%{opacity:0}87.5%,100%{opacity:1}}
@keyframes di-w6-8{0%,73.5%{opacity:0}75%,100%{opacity:1}}@keyframes di-x6-8{0%,73.5%{opacity:1}75%,100%{opacity:0}}
@keyframes di-w7-8{0%,86%{opacity:0}87.5%,100%{opacity:1}}@keyframes di-x7-8{0%,86%{opacity:1}87.5%,100%{opacity:0}}
.di-w0-1{animation:di-w0-1 12s linear infinite both}.di-x0-1{animation:di-x0-1 12s linear infinite both}
.di-w0-2{animation:di-w0-2 12s linear infinite both}.di-x0-2{animation:di-x0-2 12s linear infinite both}
.di-w0-3{animation:di-w0-3 12s linear infinite both}.di-x0-3{animation:di-x0-3 12s linear infinite both}
.di-w0-4{animation:di-w0-4 12s linear infinite both}.di-x0-4{animation:di-x0-4 12s linear infinite both}
.di-w0-5{animation:di-w0-5 12s linear infinite both}.di-x0-5{animation:di-x0-5 12s linear infinite both}
.di-w0-6{animation:di-w0-6 12s linear infinite both}.di-x0-6{animation:di-x0-6 12s linear infinite both}
.di-w0-7{animation:di-w0-7 12s linear infinite both}.di-x0-7{animation:di-x0-7 12s linear infinite both}
.di-w0-8{animation:di-w0-8 12s linear infinite both}.di-x0-8{animation:di-x0-8 12s linear infinite both}
.di-w1-2{animation:di-w1-2 12s linear infinite both}.di-x1-2{animation:di-x1-2 12s linear infinite both}
.di-w1-3{animation:di-w1-3 12s linear infinite both}.di-x1-3{animation:di-x1-3 12s linear infinite both}
.di-w1-4{animation:di-w1-4 12s linear infinite both}.di-x1-4{animation:di-x1-4 12s linear infinite both}
.di-w1-5{animation:di-w1-5 12s linear infinite both}.di-x1-5{animation:di-x1-5 12s linear infinite both}
.di-w1-6{animation:di-w1-6 12s linear infinite both}.di-x1-6{animation:di-x1-6 12s linear infinite both}
.di-w1-7{animation:di-w1-7 12s linear infinite both}.di-x1-7{animation:di-x1-7 12s linear infinite both}
.di-w1-8{animation:di-w1-8 12s linear infinite both}.di-x1-8{animation:di-x1-8 12s linear infinite both}
.di-w2-3{animation:di-w2-3 12s linear infinite both}.di-x2-3{animation:di-x2-3 12s linear infinite both}
.di-w2-4{animation:di-w2-4 12s linear infinite both}.di-x2-4{animation:di-x2-4 12s linear infinite both}
.di-w2-5{animation:di-w2-5 12s linear infinite both}.di-x2-5{animation:di-x2-5 12s linear infinite both}
.di-w2-6{animation:di-w2-6 12s linear infinite both}.di-x2-6{animation:di-x2-6 12s linear infinite both}
.di-w2-7{animation:di-w2-7 12s linear infinite both}.di-x2-7{animation:di-x2-7 12s linear infinite both}
.di-w2-8{animation:di-w2-8 12s linear infinite both}.di-x2-8{animation:di-x2-8 12s linear infinite both}
.di-w3-4{animation:di-w3-4 12s linear infinite both}.di-x3-4{animation:di-x3-4 12s linear infinite both}
.di-w3-5{animation:di-w3-5 12s linear infinite both}.di-x3-5{animation:di-x3-5 12s linear infinite both}
.di-w3-6{animation:di-w3-6 12s linear infinite both}.di-x3-6{animation:di-x3-6 12s linear infinite both}
.di-w3-7{animation:di-w3-7 12s linear infinite both}.di-x3-7{animation:di-x3-7 12s linear infinite both}
.di-w3-8{animation:di-w3-8 12s linear infinite both}.di-x3-8{animation:di-x3-8 12s linear infinite both}
.di-w4-5{animation:di-w4-5 12s linear infinite both}.di-x4-5{animation:di-x4-5 12s linear infinite both}
.di-w4-6{animation:di-w4-6 12s linear infinite both}.di-x4-6{animation:di-x4-6 12s linear infinite both}
.di-w4-7{animation:di-w4-7 12s linear infinite both}.di-x4-7{animation:di-x4-7 12s linear infinite both}
.di-w4-8{animation:di-w4-8 12s linear infinite both}.di-x4-8{animation:di-x4-8 12s linear infinite both}
.di-w5-6{animation:di-w5-6 12s linear infinite both}.di-x5-6{animation:di-x5-6 12s linear infinite both}
.di-w5-7{animation:di-w5-7 12s linear infinite both}.di-x5-7{animation:di-x5-7 12s linear infinite both}
.di-w5-8{animation:di-w5-8 12s linear infinite both}.di-x5-8{animation:di-x5-8 12s linear infinite both}
.di-w6-7{animation:di-w6-7 12s linear infinite both}.di-x6-7{animation:di-x6-7 12s linear infinite both}
.di-w6-8{animation:di-w6-8 12s linear infinite both}.di-x6-8{animation:di-x6-8 12s linear infinite both}
.di-w7-8{animation:di-w7-8 12s linear infinite both}.di-x7-8{animation:di-x7-8 12s linear infinite both}

/* start offsets (must follow the animation rules) */
.di-a0{animation-delay:0s}.di-a1{animation-delay:0.5s}.di-a2{animation-delay:1s}.di-a3{animation-delay:1.5s}.di-a4{animation-delay:2s}.di-a5{animation-delay:2.5s}.di-a6{animation-delay:3s}.di-a7{animation-delay:3.5s}.di-a8{animation-delay:4s}.di-a9{animation-delay:4.5s}.di-a10{animation-delay:5s}.di-a11{animation-delay:5.5s}.di-a12{animation-delay:6s}.di-a13{animation-delay:6.5s}.di-a14{animation-delay:7s}.di-a15{animation-delay:7.5s}.di-a16{animation-delay:8s}.di-a17{animation-delay:8.5s}.di-a18{animation-delay:9s}.di-a19{animation-delay:9.5s}.di-a20{animation-delay:10s}.di-a21{animation-delay:10.5s}.di-a22{animation-delay:11s}.di-a23{animation-delay:11.5s}.di-a24{animation-delay:12s}.di-a25{animation-delay:12.5s}.di-a26{animation-delay:13s}.di-a27{animation-delay:13.5s}

.di-unit{fill:var(--di-navy);stroke:var(--c);stroke-opacity:.75;stroke-width:1}
.di-blank{fill-opacity:1;stroke:var(--di-gold);stroke-opacity:.35}
.di-l-dot{stroke-width:3;stroke-linecap:round;stroke-dasharray:.1 6;stroke-opacity:.8}.di-l-dot2{stroke-dasharray:.1 3.5}
.di-l-fing{stroke-width:5;stroke-dasharray:2 10;stroke-opacity:.7}
.di-rail{fill:none;stroke:var(--di-gold-hi);stroke-opacity:.7;stroke-width:1.5}
.di-rung{fill:none;stroke:var(--di-gold);stroke-opacity:.3;stroke-width:20;stroke-dasharray:2 12}
.di-port{fill:#0A1830;stroke:var(--di-gold);stroke-opacity:.6;stroke-width:1}
.di-mgr{fill:none;stroke:var(--di-gold-hi);stroke-opacity:.7;stroke-width:1.2}
.di-fing{fill:none;stroke:var(--di-gold-hi);stroke-opacity:.55;stroke-width:22;stroke-dasharray:3 15}
.di-cab{stroke-opacity:.95;stroke-width:2.5;stroke-linecap:round}
.di-trunk{stroke-opacity:.95;stroke-width:5}
.di-tag{fill:#F5EFE1}
.di-loop{fill:none;stroke:var(--c);stroke-width:2.5;stroke-opacity:.95}
.di-rk{opacity:1}
@keyframes di-rk1{0%,12.5%{opacity:0;transform:translateX(-46px)}16.5%,94%{opacity:1;transform:translateX(0)}97%,100%{opacity:0;transform:translateX(0)}}.di-rk1{animation:di-rk1 12s ease-out infinite both}
@keyframes di-rk2{0%,25.0%{opacity:0;transform:translateX(-46px)}29.0%,94%{opacity:1;transform:translateX(0)}97%,100%{opacity:0;transform:translateX(0)}}.di-rk2{animation:di-rk2 12s ease-out infinite both}
@keyframes di-rk3{0%,37.5%{opacity:0;transform:translateX(-46px)}41.5%,94%{opacity:1;transform:translateX(0)}97%,100%{opacity:0;transform:translateX(0)}}.di-rk3{animation:di-rk3 12s ease-out infinite both}
@keyframes di-rk4{0%,50.0%{opacity:0;transform:translateX(-46px)}54.0%,94%{opacity:1;transform:translateX(0)}97%,100%{opacity:0;transform:translateX(0)}}.di-rk4{animation:di-rk4 12s ease-out infinite both}
@keyframes di-rk5{0%,62.5%{opacity:0;transform:translateX(-46px)}66.5%,94%{opacity:1;transform:translateX(0)}97%,100%{opacity:0;transform:translateX(0)}}.di-rk5{animation:di-rk5 12s ease-out infinite both}
@keyframes di-rk6{0%,75.0%{opacity:0;transform:translateX(-46px)}79.0%,94%{opacity:1;transform:translateX(0)}97%,100%{opacity:0;transform:translateX(0)}}.di-rk6{animation:di-rk6 12s ease-out infinite both}
@keyframes di-rk7{0%,87.5%{opacity:0;transform:translateX(-46px)}91.5%,94%{opacity:1;transform:translateX(0)}97%,100%{opacity:0;transform:translateX(0)}}.di-rk7{animation:di-rk7 12s ease-out infinite both}
@media (prefers-reduced-motion:reduce){.di-svg *{animation:none!important}}

/* round 9 */
.di-zone{fill:var(--c);fill-opacity:.07;stroke:var(--c);stroke-opacity:.55;stroke-width:1;stroke-dasharray:5 4}
.di-hl{fill:var(--c);fill-opacity:.16;stroke:var(--c);stroke-opacity:.5;stroke-width:1}
