/**
 * Widget Proceso / Pasos — VIP Travel
 *
 * Fila de pasos: círculo con icono de marca, unidos por una línea horizontal,
 * con título y descripción debajo. En móvil se apila en vertical y la línea
 * pasa a ser un conector vertical entre los círculos.
 *
 * Variables ajustables (las setea el widget desde Elementor):
 *   --vt-proc-count  → nº de pasos (para calcular dónde terminan las líneas)
 *   --vt-proc-size   → diámetro del círculo
 *   --vt-proc-icon   → tamaño del icono
 *   --vt-proc-gap    → separación entre pasos
 */

.vt-process {
  --vt-proc-count: 4;
  --vt-proc-size: 96px;
  --vt-proc-icon: 34px;
  --vt-proc-gap: 24px;
  --vt-proc-ring: var(--vt-accent, #5694a9);
  --vt-proc-icon-color: var(--vt-accent, #5694a9);
  --vt-proc-circle-bg: #fff;

  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--vt-proc-gap);
}

/* Línea conectora horizontal, centrada en los círculos y por detrás de ellos.
   Empieza y termina en el centro de los círculos extremos (de ahí el cálculo
   con --vt-proc-count), con un pequeño saliente. Los círculos, opacos, la tapan
   entre paso y paso creando el efecto segmentado. */
.vt-process__line {
  position: absolute;
  top: calc(var(--vt-proc-size) / 2);
  left: calc((50% / var(--vt-proc-count)) - 14px);
  right: calc((50% / var(--vt-proc-count)) - 14px);
  height: 3px;
  transform: translateY(-50%);
  background: linear-gradient(90deg, var(--vt-accent, #5694a9), var(--vt-accent-dark, #427a8d));
  border-radius: 3px;
  z-index: 0;
}

.vt-process__step {
  position: relative;
  z-index: 1;
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.vt-process__body {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.vt-process__circle {
  width: var(--vt-proc-size);
  height: var(--vt-proc-size);
  border-radius: 50%;
  background: var(--vt-proc-circle-bg);
  border: 3px solid var(--vt-proc-ring);
  display: grid;
  place-items: center;
  box-shadow: 0 6px 18px rgba(26, 26, 26, .08);
}

.vt-process__icon {
  display: inline-flex;
  color: var(--vt-proc-icon-color);
  line-height: 1;
}

.vt-process__icon svg {
  width: var(--vt-proc-icon);
  height: var(--vt-proc-icon);
  fill: currentColor;
}

/* Icono de fuente (Font Awesome) por si eligen uno propio. */
.vt-process__icon i {
  font-size: var(--vt-proc-icon);
}

.vt-process__title {
  margin: 20px 0 8px;
  font-family: var(--vt-font-heading, sans-serif);
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--vt-black, #1a1a1a);
  line-height: 1.2;
}

.vt-process__desc {
  margin: 0;
  max-width: 240px;
  color: var(--vt-muted, #808080);
  font-size: 1rem;
  line-height: 1.6;
}

/* =============================================================================
 * RESPONSIVE — línea de tiempo vertical: círculo a la izquierda, texto a la
 * derecha. Así el conector corre por la columna de círculos y NO cruza el texto.
 * ============================================================================= */
@media (max-width: 767px) {
  .vt-process {
    flex-direction: column;
    gap: calc(var(--vt-proc-gap) + 8px);
  }

  /* La línea horizontal es sólo para escritorio. */
  .vt-process__line {
    display: none;
  }

  .vt-process__step {
    flex: none;
    width: 100%;
    flex-direction: row;
    align-items: flex-start;
    text-align: left;
    gap: 20px;
  }

  /* El círculo mantiene su tamaño y no se deforma. */
  .vt-process__circle {
    flex: none;
  }

  .vt-process__body {
    align-items: flex-start;
    padding-top: 6px;
  }

  .vt-process__title {
    margin-top: 0;
  }

  .vt-process__desc {
    max-width: none;
  }

  /* Conector vertical alineado al CENTRO del círculo (izquierda), del borde
     inferior de un círculo al siguiente. Anclado con top/bottom → no depende
     del alto del texto. */
  .vt-process__step:not(:last-child)::after {
    content: "";
    position: absolute;
    left: calc(var(--vt-proc-size) / 2);
    top: var(--vt-proc-size);
    bottom: calc(-1 * (var(--vt-proc-gap) + 8px));
    width: 3px;
    transform: translateX(-50%);
    background: var(--vt-accent, #5694a9);
    border-radius: 3px;
    z-index: 0;
  }
}
