/* Motion recovered from d32f784; current artwork and geometry retained.
   Endpoint layers share the exact SVG inset and normalized coordinate space. */
.connection-endpoints{position:absolute;inset:12px;z-index:6;pointer-events:none}
.parallel-connected>.connection-endpoints{inset:10px}
.mobile-connected>.connection-endpoints{inset:8px}
.connection-point{position:absolute;width:11px;height:11px;border:1px solid #f7f3ec;border-radius:50%;background:#17283b;transform:translate(-50%,-50%);box-shadow:0 0 0 1px rgb(198 103 54 / 55%)}
.connection-point::after{content:"";position:absolute;width:3px;height:3px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;background:#c66736}
.parallel-endpoints .connection-point{width:8px;height:8px;border-width:.75px;box-shadow:none;background:color-mix(in oklab,#17283b 42%,transparent);border-color:color-mix(in oklab,#fcfbf8 72%,#c66736)}
/* Complete composition is the default, including when JS/observers are unavailable. */
.hero-connected-panel,.parallel-cell,.mobile-cell,.parallel-core,.mobile-core{animation:none!important}
.motion-running.motion-hero{perspective:1400px}
.motion-running.motion-hero :is(.hero-connected-panel,.mobile-cell){animation:recovered-arrive var(--arr-dur) cubic-bezier(.16,.84,.24,1) var(--arr-delay) backwards!important}
.motion-hero :is(.hero-connected-panel,.mobile-cell):nth-child(1){--arr-delay:0s;--arr-dur:1.35s;--ax:-14px;--ay:22px;--az:-150px}
.motion-hero :is(.hero-connected-panel,.mobile-cell):nth-child(2){--arr-delay:.22s;--arr-dur:1.15s;--ax:10px;--ay:-18px;--az:-60px}
.motion-hero :is(.hero-connected-panel,.mobile-cell):nth-child(3){--arr-delay:.44s;--arr-dur:1.45s;--ax:-8px;--ay:26px;--az:-210px}
.motion-hero :is(.hero-connected-panel,.mobile-cell):nth-child(4){--arr-delay:.62s;--arr-dur:1.2s;--ax:16px;--ay:14px;--az:-95px}
@keyframes recovered-arrive{0%{opacity:0;transform:translate3d(var(--ax),var(--ay),var(--az))}38%{opacity:1}100%{opacity:1;transform:none}}
.motion-running.motion-hero path{stroke-dasharray:1;animation:recovered-draw .9s cubic-bezier(.4,0,.25,1) var(--cord-delay) both}
.motion-running.motion-hero .connection-point{animation:recovered-point .45s ease var(--point-delay) both}
.motion-running.motion-parallel :is(.parallel-cell,.mobile-cell){animation:recovered-emerge .7s cubic-bezier(.22,.7,.18,1) var(--plate-delay) both!important}
.motion-parallel :is(.parallel-cell,.mobile-cell):nth-child(1){--plate-delay:.08s}.motion-parallel :is(.parallel-cell,.mobile-cell):nth-child(2){--plate-delay:.22s}.motion-parallel :is(.parallel-cell,.mobile-cell):nth-child(3){--plate-delay:.36s}.motion-parallel :is(.parallel-cell,.mobile-cell):nth-child(4){--plate-delay:.5s}
.motion-parallel path{stroke-width:1.6;opacity:.72}
.motion-running.motion-parallel path{stroke-dasharray:1;animation:coordinated-connection 1.4s cubic-bezier(.25,.1,.25,1) var(--coordination-delay,.7s) both}
.motion-running.motion-parallel :is(.parallel-core,.mobile-core){animation:none!important;opacity:1}
@keyframes coordinated-connection{from{stroke-dashoffset:1;opacity:0}20%{opacity:.4}to{stroke-dashoffset:0;opacity:.72}}
@keyframes recovered-emerge{from{opacity:.35;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes recovered-node{from{opacity:.35}to{opacity:1}}
@keyframes recovered-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes recovered-point{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.motion-running *{animation:none!important;opacity:1!important;stroke-dashoffset:0!important}}
