/* Víctor SEO WEB Widgets · timeline.css · generado por fuente/elementor/css_build.py a partir de fuente/assets. No editar a mano. */
.vsw .timeline{position:relative; display:flex; flex-direction:column; gap:16px; max-width:820px; --tl-progress:0;}
.vsw .timeline::before, .vsw .timeline::after{content:""; position:absolute; left:17px; top:38px; bottom:38px; width:2px; border-radius:2px;}
.vsw .timeline::before{background:var(--vsw-border);}
.vsw .timeline::after{background:linear-gradient(to bottom, var(--vsw-accent), var(--vsw-accent-2)); transform-origin:top; transform:scaleY(var(--tl-progress)); box-shadow:0 0 12px color-mix(in srgb, var(--vsw-accent) 60%, transparent);}
.vsw .tl-item{position:relative; display:grid; grid-template-columns:36px 1fr; gap:18px; align-items:start;}
.vsw .tl-dot{width:36px; height:36px; border-radius:50%; background:var(--vsw-bg); border:1px solid var(--vsw-border); display:flex; align-items:center; justify-content:center; position:relative; z-index:1; margin-top:20px; transition:border-color .4s ease, background .4s ease, transform .3s ease, box-shadow .4s ease;}
.vsw .tl-dot::after{content:""; width:10px; height:10px; border-radius:50%; background:color-mix(in srgb, var(--vsw-ink) 25%, transparent); transition:background .4s ease, transform .4s ease;}
.vsw .tl-dot::before{content:""; position:absolute; inset:-1px; border-radius:50%; border:2px solid var(--vsw-accent); opacity:0;}
.vsw .tl-card{background:var(--vsw-card); border:1px solid var(--vsw-border); border-radius:18px; padding:22px 24px; transition:border-color .3s ease, background .3s ease, transform .3s ease;}
.vsw .tl-card h3{font-weight:700; font-size:20px; line-height:1.3; color:var(--vsw-ink); margin-bottom:6px;}
.vsw .tl-card h3 .t-year{color:var(--vsw-accent);}
.vsw .tl-card p{font-size:15px; line-height:1.65; color:var(--vsw-ink-soft);}
.vsw .tl-item.is-on .tl-dot{border-color:color-mix(in srgb, var(--vsw-accent) 60%, transparent); box-shadow:0 0 0 5px color-mix(in srgb, var(--vsw-accent) 12%, transparent);}
.vsw .tl-item.is-on .tl-dot::after{background:var(--vsw-accent); transform:scale(1.15);}
.vsw .tl-item.is-on .tl-dot::before{animation:vsw-tlPing .9s ease-out 1;}
@keyframes vsw-tlPing{0%{opacity:.9; transform:scale(1);} 100%{opacity:0; transform:scale(1.9);}}
.vsw .tl-item:hover .tl-dot{transform:scale(1.12); border-color:var(--vsw-accent); box-shadow:0 0 0 7px color-mix(in srgb, var(--vsw-accent) 18%, transparent);}
.vsw .tl-item:hover .tl-dot::after{background:var(--vsw-accent);}
.vsw .tl-item:hover .tl-card{border-color:var(--vsw-accent-line); background:var(--vsw-card-hover); transform:translateX(4px);}
.vsw .tl-item--now .tl-card{background:var(--vsw-panel); border-color:var(--vsw-accent-line);}
.vsw .tl-item--now .tl-dot{background:var(--vsw-accent); border-color:var(--vsw-accent);}
.vsw .tl-item--now .tl-dot::after{background:#fff;}
.vsw .tl-item--now .tl-dot::before{animation:vsw-tlPulse 2.2s ease-out infinite;}
@keyframes vsw-tlPulse{0%{opacity:.8; transform:scale(1);} 80%,100%{opacity:0; transform:scale(1.9);}}
@media (prefers-reduced-motion: reduce){
  .vsw .timeline::after{transform:scaleY(1);}
}
.vsw .sec .wrap > :is(.answer-box, .cmp-wrap, .card-grid, .info-grid, .client-grid, .logo-wall, .value-quote, .value-grid, .check-list, .text-block, .split, .price-cards, .price-grid, .result-grid, .link-grid, .step-list, .method-grid, .facts, .table-wrap, .callout, .case-grid, .case-proof, .t-grid, .stats-grid, .timeline, .method-note) + :is(.answer-box, .cmp-wrap, .card-grid, .info-grid, .client-grid, .logo-wall, .value-quote, .value-grid, .check-list, .text-block, .split, .price-cards, .price-grid, .result-grid, .link-grid, .step-list, .method-grid, .facts, .table-wrap, .callout, .case-grid, .t-grid, .timeline){margin-top:40px;}
