/* GP IIb/IIIa: play-once binding, continuously replaying PCI, and static accessible endpoints. */
.gpi-svg text{font:24px Arial,Helvetica,sans-serif;fill:#172f38;stroke:none}
.gpi-svg .gpi-bold{font-weight:700;font-size:25px}.gpi-svg .gpi-small{font-size:20px}.gpi-svg .gpi-copy{font-size:23px}.gpi-svg .gpi-kicker{font-size:19px;font-weight:700;letter-spacing:.8px}.gpi-svg .gpi-legend{font-size:18px}
.gpi-svg .gpi-purple{fill:#7443a1}.gpi-svg .gpi-red{fill:#ac343d}.gpi-svg .gpi-teal{fill:#087f78}.gpi-svg .gpi-gold{fill:#95620c}.gpi-svg .gpi-blue{fill:#2e5faa}
.gpi-summary{font-size:30px;line-height:1.3}.gpi-summary ul{gap:18px}
.gpi-platelet{fill:#e2d5ef;stroke:#7c55ad;stroke-width:1.1}.gpi-drug{fill:#205fba;stroke:#fff;stroke-width:1.5}
.gpi-svg .gpi-drug-label{font:bold 15px Arial,Helvetica,sans-serif;fill:#fff;stroke:none}.gpi-svg .gpi-drug-caption{fill:#205fba}
.gpi-receptor{stroke:#087f78;stroke-width:11;fill:none;stroke-linecap:round}.gpi-fibrinogen{stroke:#c88619;stroke-width:8;fill:none}.gpi-ligand{fill:#e3b15d;stroke:#a66e13;stroke-width:2}
.gpi-leader{stroke:#647985;stroke-width:1.7;fill:none}.gpi-signal{stroke:#9c86b7;stroke-width:3;fill:none;marker-end:url(#gpi-arrow)}.gpi-inhibition-leader{stroke:#205fba;stroke-width:2;fill:none}
.gpi-vessel-wall{fill:#d9ebe7;stroke:#79aca1;stroke-width:2}.gpi-lumen{fill:#f5fafb}.gpi-micro-wall{fill:none;stroke:#87b7ac;stroke-width:31;stroke-linejoin:round}.gpi-micro-lumen{fill:none;stroke:#f5fafb;stroke-width:23}
.gpi-plaque{fill:#e2c49e;stroke:#b38b61;stroke-width:2}.gpi-guidewire{stroke:#748a98;stroke-width:2;fill:none}.gpi-catheter{stroke:#496f9e;stroke-width:6;fill:none}.gpi-balloon{fill:#c9ddef;fill-opacity:.62;stroke:#4c80ad;stroke-width:2}.gpi-stent{fill:none;stroke:#496f9e;stroke-width:2}
.gpi-bridges{stroke:#c88619;stroke-width:3;fill:none}.gpi-fibrin-residue{stroke:#956920;stroke-width:2.5;fill:none}.gpi-debris{fill:#b78647;stroke:#916229;stroke-width:1.5}
.gpi-myocardium{fill:#edf6f2;stroke:#a8c7bb;stroke-width:1.6}.gpi-muscle-fiber{fill:none;stroke:#bcd7cd;stroke-width:2}.gpi-tissue-vessel{fill:none;stroke:#67a997;stroke-width:7}.gpi-injury{fill:#d46c70;fill-opacity:.8;stroke:#b6454e;stroke-width:1.2}.gpi-caption{fill:#f3f6f8;stroke:#cbd7dd;stroke-width:1}
.gpi-flow{fill:none;stroke:#228e89;stroke-width:4;stroke-dasharray:9 18;marker-end:url(#gpi-arrow);animation:gpi-flow 5s linear 1 both}
.gpi-binding-ligand{transform:translateY(0);animation:gpi-bind-ligand 3s ease-out 1 both}
.gpi-unbound-ligand{transform:translateY(-120px);animation:gpi-reject-ligand 4s ease-in-out 1 both}
.gpi-bind-left{transform:translate(0,0);animation:gpi-block-left 2s ease-out 1 both}.gpi-bind-right{transform:translate(0,0);animation:gpi-block-right 2s ease-out 1 both}
.gpi-separate{transform:translate(var(--sx),var(--sy))}.gpi-bridge-loss{opacity:0}
@keyframes gpi-flow{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
@keyframes gpi-bind-ligand{0%{transform:translateY(-55px);opacity:.2}100%{transform:translateY(0);opacity:1}}
@keyframes gpi-reject-ligand{0%{transform:translateY(-55px)}40%{transform:translateY(-12px)}100%{transform:translateY(-120px)}}
@keyframes gpi-block-left{from{transform:translate(110px,68px);opacity:0}to{transform:translate(0,0);opacity:1}}
@keyframes gpi-block-right{from{transform:translate(-110px,68px);opacity:0}to{transform:translate(0,0);opacity:1}}
/* All PCI components share one clock, so Pause/Replay apply to the entire causal sequence. */
.gpi-loop-scene{opacity:1;animation:gpi-loop-reset var(--gpi-cycle) linear infinite both}
.gpi-pci-loop .gpi-flow{animation:gpi-loop-flow var(--gpi-cycle) linear infinite both}
.gpi-loop-catheter{transform:translateX(0);animation:gpi-loop-catheter var(--gpi-cycle) linear infinite both}
.gpi-loop-balloon{transform:scaleY(.18);animation:gpi-loop-balloon var(--gpi-cycle) linear infinite both}
.gpi-loop-stent{transform-origin:475px 176px;transform:scaleY(1);opacity:1;animation:gpi-loop-stent var(--gpi-cycle) linear infinite both}
.gpi-loop-plaque{opacity:0;animation:gpi-loop-plaque var(--gpi-cycle) linear infinite both}
.gpi-loop-wall-platelet{transform:translateY(0) scale(.74);animation:gpi-loop-wall-platelet var(--gpi-cycle) linear infinite both}
.gpi-loop-wall-fibrin{transform-origin:445px 242px;transform:scaleY(.25);animation:gpi-loop-wall-fibrin var(--gpi-cycle) linear infinite both}
.gpi-loop-embolus{transform:translate(var(--ex),var(--ey));opacity:1;animation:gpi-loop-embolus var(--gpi-cycle) linear infinite both}
.gpi-loop-debris{transform:translate(0,0);opacity:1;animation:gpi-loop-debris var(--gpi-cycle) linear infinite both}
.gpi-loop-embolus .gpi-separate{opacity:1;animation:gpi-loop-disperse var(--gpi-cycle) linear infinite both}
.gpi-loop-embolus .gpi-bridge-loss{animation:gpi-loop-unlink var(--gpi-cycle) linear infinite both}
.gpi-loop-flow-initial{opacity:0;animation:gpi-loop-flow-initial var(--gpi-cycle) linear infinite both}
.gpi-loop-flow-final{opacity:1;animation:gpi-loop-flow-final var(--gpi-cycle) linear infinite both}
.gpi-loop-injury{opacity:1;animation:gpi-loop-injury var(--gpi-cycle) linear infinite both}
.gpi-loop-outcome{opacity:1;animation:gpi-loop-outcome var(--gpi-cycle) linear infinite both}
.gpi-loop-caption,.gpi-loop-restart{opacity:0}
.gpi-loop-caption-0{animation:gpi-loop-caption-0 var(--gpi-cycle) linear infinite both}
.gpi-loop-caption-1{animation:gpi-loop-caption-1 var(--gpi-cycle) linear infinite both}
.gpi-loop-caption-2{animation:gpi-loop-caption-2 var(--gpi-cycle) linear infinite both}
.gpi-loop-caption-3{opacity:1;animation:gpi-loop-caption-3 var(--gpi-cycle) linear infinite both}
.gpi-loop-restart{animation:gpi-loop-restart var(--gpi-cycle) linear infinite both}
@keyframes gpi-loop-reset{0%,90%,100%{opacity:1}94%,98%{opacity:0}}
@keyframes gpi-loop-flow{from{stroke-dashoffset:486}to{stroke-dashoffset:0}}
@keyframes gpi-loop-catheter{0%,96%,100%{transform:translateX(-390px)}18%,94%{transform:translateX(0)}}
@keyframes gpi-loop-balloon{0%,18%,46%,100%{transform:scaleY(.18)}32%,39%{transform:scaleY(1)}}
@keyframes gpi-loop-stent{0%,18%,96%,100%{transform:scaleY(.18);opacity:0}22%{transform:scaleY(.18);opacity:1}32%,94%{transform:scaleY(1);opacity:1}}
@keyframes gpi-loop-plaque{0%,18%,96%,100%{opacity:1}34%,94%{opacity:0}}
@keyframes gpi-loop-wall-platelet{0%,18%,96%,100%{transform:translateY(var(--rise)) scale(1)}34%,94%{transform:translateY(0) scale(.74)}}
@keyframes gpi-loop-wall-fibrin{0%,18%,96%,100%{transform:scaleY(1)}34%,94%{transform:scaleY(.25)}}
@keyframes gpi-loop-embolus{0%,29%,96%,100%{transform:translate(0,0);opacity:0}32%{transform:translate(0,0);opacity:1}60%,94%{transform:translate(var(--ex),var(--ey));opacity:1}}
@keyframes gpi-loop-debris{0%,31%,96%,100%{transform:translate(-520px,-24px);opacity:0}34%{transform:translate(-520px,-24px);opacity:1}61%,94%{transform:translate(0,0);opacity:1}}
@keyframes gpi-loop-disperse{0%,48%,96%,100%{transform:translate(0,0);opacity:1}66%{transform:translate(var(--sx),var(--sy));opacity:1}78%{transform:translate(calc(var(--sx) + 120px),var(--sy));opacity:1}84%,94%{transform:translate(calc(var(--sx) + 170px),var(--sy));opacity:0}}
@keyframes gpi-loop-unlink{0%,46%,96%,100%{opacity:1}60%,94%{opacity:0}}
@keyframes gpi-loop-flow-initial{0%,54%,96%,100%{opacity:1}62%,94%{opacity:0}}
@keyframes gpi-loop-flow-final{0%,54%,96%,100%{opacity:0}62%,94%{opacity:1}}
@keyframes gpi-loop-injury{0%,63%,96%,100%{opacity:0}76%,94%{opacity:1}}
@keyframes gpi-loop-outcome{0%,65%,94%,100%{opacity:0}72%,90%{opacity:1}}
@keyframes gpi-loop-caption-0{0%,18%,100%{opacity:1}20%,98%{opacity:0}}
@keyframes gpi-loop-caption-1{0%,20%,41%,100%{opacity:0}22%,39%{opacity:1}}
@keyframes gpi-loop-caption-2{0%,41%,65%,100%{opacity:0}43%,63%{opacity:1}}
@keyframes gpi-loop-caption-3{0%,65%,92%,100%{opacity:0}67%,90%{opacity:1}}
@keyframes gpi-loop-restart{0%,90%,100%{opacity:0}92%,98%{opacity:1}}
body.static-stage .gpi-svg *{animation:none!important}
@media(prefers-reduced-motion:reduce){.gpi-svg *{animation:none!important}}
/* Nine sections retain readable type; the redundant location label yields space. */
@media(min-width:601px){.sections{gap:17px}#sectionLocation{display:none}}
@media(max-width:600px){.gpi-summary{font-size:20px;line-height:1.4}.gpi-summary ul{gap:14px}}
