/* ── Vortex dark (hero, CTA) ── */
.vx { color:#fff }
.vx .v-outer circle  { fill:none; stroke:currentColor; stroke-width:.9 }
.vx .vo1 { stroke-opacity:.20; stroke-dasharray:245 57 }
.vx .vo2 { stroke-opacity:.15; stroke-dasharray:207 52; stroke-dashoffset:30 }
.vx .vo3 { stroke-opacity:.11; stroke-dasharray:173 43; stroke-dashoffset:-20 }
.vx .v-middle circle { fill:none; stroke:currentColor; stroke-width:.8 }
.vx .vm1 { stroke-opacity:.22; stroke-dasharray:138 34 }
.vx .vm2 { stroke-opacity:.17; stroke-dasharray:103 25 }
.vx .v-lines line { stroke:currentColor; stroke-opacity:.11; stroke-width:.6; fill:none }
.vx .v-ticks line { stroke:currentColor; fill:none }
.vx .tick-major { stroke-opacity:.28; stroke-width:.9 }
.vx .tick-minor { stroke-opacity:.16; stroke-width:.5 }
.vx .v-spiral { stroke:currentColor; stroke-opacity:.38; stroke-width:1; fill:none; stroke-linecap:round }
.vx .v-dots circle { fill:currentColor; stroke:none }
.vx .vdot { fill-opacity:.55 }
.vx .v-center circle { fill:currentColor; fill-opacity:.6 }
.vx .v-center line { stroke:currentColor; stroke-opacity:.26; stroke-width:.6; fill:none }

/* ── Vortex light variant ── */
.vx-light { color:var(--ink) }
.vx-light .v-outer circle { stroke-opacity:.09 }
.vx-light .vo1 { stroke-opacity:.08 }
.vx-light .vo2 { stroke-opacity:.06 }
.vx-light .vo3 { stroke-opacity:.05 }
.vx-light .v-middle circle { stroke-opacity:.10 }
.vx-light .vm1 { stroke-opacity:.10 }
.vx-light .vm2 { stroke-opacity:.07 }
.vx-light .v-lines line { stroke-opacity:.05 }
.vx-light .v-ticks .tick-major { stroke-opacity:.12 }
.vx-light .v-ticks .tick-minor { stroke-opacity:.07 }
.vx-light .v-spiral { stroke-opacity:.16 }
.vx-light .vdot { fill-opacity:.28 }
.vx-light .v-center circle { fill-opacity:.28 }

/* ── Vortex animations ── */
.v-outer { transform-origin:250px 250px; animation:vCW 120s linear infinite }
.v-middle { transform-origin:250px 250px; animation:vCCW 90s linear infinite }
.vdot { animation:vPulse 6s ease-in-out infinite }
@keyframes vCW  { to { transform:rotate(360deg) } }
@keyframes vCCW { to { transform:rotate(-360deg) } }
@keyframes vPulse {
  0%,100% { fill-opacity:.28 }
  50%      { fill-opacity:.82 }
}
