/* 精修动作编排：先显现、再连接、最后形成表达；暂停同时冻结SVG时间。 */
.mg-stage{touch-action:pan-y;outline:none}.mg-stage:focus-visible{box-shadow:inset 0 0 0 2px #c1a1ef;border-radius:22px}
.mg-frame .fine-thread{stroke-dasharray:1;stroke-dashoffset:1;animation:connection-reveal 2.4s cubic-bezier(.3,0,.3,1) both;animation-delay:.4s;opacity:.65;stroke-width:1.6}
.fine-card{animation:story-card-arrive 1.1s cubic-bezier(.16,.8,.3,1) both;animation-delay:var(--enter-delay,.12s)}
.detail-strokes{animation:paper-write 2.2s ease both;animation-delay:calc(var(--enter-delay,.12s) + .8s)}
.fine-agreement{animation:paper-write 1.2s ease both;animation-delay:1.7s;filter:drop-shadow(0 0 4px #a1c6b94a)}
.motion-consensus{transform-box:fill-box;transform-origin:center;animation:consensus-ring 4.5s ease-in-out infinite;animation-delay:1.8s}
.motion-scan{animation:focus-scan 7.2s ease-in-out infinite;transform-box:view-box}
.motion-speaking{animation:speaking-beat 2s ease-in-out infinite;animation-delay:var(--beat-delay,0s)}
.fine-draw{animation:map-grow 3.2s cubic-bezier(.25,0,.3,1) both;animation-delay:.3s}
.fine-float{animation-duration:8s}.fine-lens{animation-duration:9s}
.mg-card[data-mg-step="0"] .mg-frame:not([data-frame="0"]) *,.mg-card[data-mg-step="1"] .mg-frame:not([data-frame="1"]) *,.mg-card[data-mg-step="2"] .mg-frame:not([data-frame="2"]) *{animation:none!important}
.mg-card[data-mg-running="false"] .fine-card{opacity:1!important;transform:none!important}.mg-card[data-mg-running="false"] .fine-thread,.mg-card[data-mg-running="false"] .fine-draw,.mg-card[data-mg-running="false"] .fine-agreement,.mg-card[data-mg-running="false"] .detail-strokes{stroke-dashoffset:0!important;opacity:1!important}
.mg-card[data-mg-step="0"] .mg-copy{animation:caption-in-0 .55s ease both}.mg-card[data-mg-step="1"] .mg-copy{animation:caption-in-1 .55s ease both}.mg-card[data-mg-step="2"] .mg-copy{animation:caption-in-2 .55s ease both}
@keyframes connection-reveal{from{stroke-dashoffset:1;opacity:.15}to{stroke-dashoffset:0;opacity:.65}}
@keyframes story-card-arrive{from{opacity:0;transform:translateY(20px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes paper-write{from{stroke-dashoffset:80;opacity:.1}to{stroke-dashoffset:0;opacity:1}}
@keyframes consensus-ring{0%,100%{opacity:0;transform:scale(.8)}45%{opacity:.32;transform:scale(1.12)}}
@keyframes focus-scan{0%,10%{opacity:0;transform:translateX(-90px)}25%{opacity:.14}65%{opacity:.14;transform:translateX(80px)}75%,100%{opacity:0;transform:translateX(100px)}}
@keyframes speaking-beat{0%,70%,100%{opacity:.35}35%{opacity:1}}
@keyframes map-grow{from{stroke-dashoffset:600;opacity:.2}to{stroke-dashoffset:0;opacity:1}}
@keyframes caption-in-0{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes caption-in-1{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes caption-in-2{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.mg-card *{animation:none!important;transition:none!important}.fine-card{opacity:1;transform:none}.fine-thread,.fine-draw,.fine-agreement,.detail-strokes{stroke-dashoffset:0!important;opacity:1!important}.motion-scan,.motion-consensus,.motion-trace{display:none}}
