/* SVG motion scenes: links draw, nodes settle, then signals and labels arrive. */
.motion-stage { --motion-ease: cubic-bezier(.16,1,.3,1); width: 100%; max-width: 830px; margin: 10px auto 0; }
.motion-svg { display: block; width: 100%; height: auto; overflow: visible; fill: none; stroke: none; font-family: inherit; }
.motion-svg.mg-mobile { display: none; }
.motion-svg text { fill: var(--ink); stroke: none; letter-spacing: -.015em; }
.motion-svg .mg-label, .motion-svg .mg-node-label { font-size: 14px; font-weight: 600; }
.motion-svg .mg-sub-label { font-size: 11px; fill: var(--copy); }
.motion-svg .mg-node-label, .motion-svg .mg-sub-label, .motion-svg .mg-axis-label { paint-order: stroke fill; stroke: #10263f; stroke-width: 4px; stroke-linejoin: round; }
.mg-grid { stroke: #65c0c433; stroke-width: 1px; fill: none; }
.mg-link, .mg-trend { fill: none; stroke: #73c6ca; stroke-width: 2px; stroke-dasharray: 1; stroke-dashoffset: 0; }
.mg-link { opacity: .65; }
.mg-trend { stroke-width: 3px; }
.mg-node-disc { fill: #19394f; stroke: #65c0c4; stroke-width: 1.3px; }
.mg-node-icon { stroke: #b3e4e4; stroke-width: 1.4px; fill: none; }
.mg-core-disc { fill: #1b424f; stroke: #73c6ca; stroke-width: 1.5px; }
.mg-core-pulse, .mg-pulse { fill: none; stroke: #65c0c4; stroke-width: 1px; opacity: .3; }
.mg-radar-area { fill: #65c0c430; stroke: #73c6ca; stroke-width: 2px; stroke-dasharray: 1; stroke-dashoffset: 0; }
.motion-svg .mg-axis-label { font-size: 13px; fill: var(--copy); font-weight: 500; }
.mg-score-disc { fill: #10263f; stroke: #65c0c44d; stroke-width: 1px; }
.motion-svg .mg-score { fill: #a2dfdf; font-size: 30px; font-weight: 600; }
.motion-svg .mg-score-label { font-size: 10px; fill: var(--copy); }
.motion-svg .mg-chart-heading { font-size: 16px; font-weight: 600; }
.motion-svg .mg-bar-label { font-size: 14px; fill: var(--copy); }
.motion-svg .mg-bar-value { font-size: 14px; fill: #a2dfdf; font-weight: 600; }
.mg-bar-track { fill: #29475c; }
.mg-bar { fill: #65c0c4; transform-origin: 0 50%; }
.mg-chart-dot { fill: #c0e9e9; stroke: #2d8c91; stroke-width: 2px; }
.motion-svg .mg-flow-label { font-size: 14px; fill: var(--copy); font-weight: 500; }
.motion-caption { display: flex; align-items: center; justify-content: space-between; gap: 16px; color: var(--copy); font-size: 11px; line-height: 1.5; margin-top: 9px; padding-inline: 10px; }
.motion-disclosure { flex-shrink: 0; color: #9fb4c8; font-size: 9px; letter-spacing: .06em; text-transform: uppercase; }
.mg-node, .mg-reveal, .mg-pulse, .mg-core-pulse { transform-box: fill-box; transform-origin: center; }
.hero-slide.is-active .mg-reveal { animation: mg-reveal 900ms calc(120ms + var(--step,0) * 140ms) var(--motion-ease) both; }
.hero-slide.is-active .mg-node { animation: mg-node-in 950ms calc(180ms + var(--step,0) * 160ms) var(--motion-ease) both; }
.hero-slide.is-active .mg-link { animation: mg-draw 1250ms calc(120ms + var(--step,0) * 120ms) var(--motion-ease) both; }
.hero-slide.is-active .mg-radar-area { animation: mg-draw 1450ms 280ms var(--motion-ease) both, mg-fill 1200ms 400ms var(--motion-ease) both; }
.hero-slide.is-active .mg-bar { animation: mg-bar-in 1350ms calc(650ms + var(--step,0) * 180ms) var(--motion-ease) both; }
.hero-slide.is-active .mg-trend { animation: mg-draw 1800ms 220ms var(--motion-ease) both; }
.hero-slide.is-active .mg-trend-area { animation: mg-fill 1500ms 500ms var(--motion-ease) both; }
.hero-slide.is-active .mg-pulse { animation: mg-pulse 3400ms calc(1500ms + var(--step,0) * 200ms) ease-out infinite; }
.hero-slide.is-active .mg-core-pulse { animation: mg-core-pulse 4200ms 1400ms ease-in-out infinite; }
@keyframes mg-reveal { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: none; } }
@keyframes mg-node-in { from { opacity: 0; transform: translateY(6px) scale(.82); } to { opacity: 1; transform: none; } }
@keyframes mg-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
@keyframes mg-fill { from { fill-opacity: 0; } to { fill-opacity: 1; } }
@keyframes mg-bar-in { from { transform: scaleX(0); opacity: .3; } to { transform: scaleX(1); opacity: 1; } }
@keyframes mg-pulse { 0% { transform: scale(.9); opacity: 0; } 18% { opacity: .38; } 70%,100% { transform: scale(1.4); opacity: 0; } }
@keyframes mg-core-pulse { 0%,100% { transform: scale(1); opacity: .2; } 50% { transform: scale(1.08); opacity: .45; } }
.s-hero-orbit .slider-controls { margin-top: 28px; }
@media (max-width: 900px) {
  .motion-stage { max-width: 740px; }
  .s-hero-orbit .slider-controls { margin-top: 24px; }
}
@media (max-width: 600px) {
  .motion-stage { max-width: 390px; margin-top: 3px; }
  .motion-svg.mg-desktop { display: none; }
  .motion-svg.mg-mobile { display: block; }
  .motion-svg .mg-node-label { font-size: 13px; }
  .motion-svg .mg-sub-label { font-size: 10px; }
  .motion-svg .mg-axis-label { font-size: 11px; }
  .motion-svg .mg-score { font-size: 25px; }
  .motion-svg .mg-score-label { font-size: 8px; }
  .motion-svg .mg-chart-heading { font-size: 12px; }
  .motion-svg .mg-bar-label, .motion-svg .mg-bar-value { font-size: 11px; }
  .motion-svg .mg-flow-label { font-size: 11px; }
  .motion-caption { padding: 0; gap: 9px; font-size: 9px; }
  .motion-caption > span:first-child { max-width: 210px; }
  .motion-disclosure { font-size: 7px; }
  .s-hero-orbit .slider-controls { margin-top: 21px; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-slide.is-active .mg-reveal, .hero-slide.is-active .mg-node,
  .hero-slide.is-active .mg-link, .hero-slide.is-active .mg-radar-area,
  .hero-slide.is-active .mg-bar, .hero-slide.is-active .mg-trend,
  .hero-slide.is-active .mg-trend-area, .hero-slide.is-active .mg-pulse,
  .hero-slide.is-active .mg-core-pulse { animation: none; transform: none; stroke-dashoffset: 0; fill-opacity: 1; }
  .mg-pulse { opacity: .16; }
}
