/* tuenweb_forms v4 · Componentes de formularios por pasos y configuradores: pasos, barra de
   progreso, tarjetas, contador, interruptor, resumen y diseño configurador.
   Se carga solo en páginas con un formulario v4. Se adapta a cada web redefiniendo las
   variables --tw-f-* (en :root o en el selector del formulario), p. ej. en la CSS de la web:
     .contact-form{ --tw-f-accent:#e30613; --tw-f-radius:6px; }
   Sin JS todos los pasos se ven seguidos (el formulario sigue funcionando). */
[data-tw-layout]{
  --tw-f-accent:#14639e;
  --tw-f-accent-soft:rgba(20,99,158,.10);
  --tw-f-text:inherit;
  --tw-f-muted:rgba(0,0,0,.6);
  --tw-f-border:#cfd6dd;
  --tw-f-bg:#fff;
  --tw-f-bg-soft:#f4f6f8;
  --tw-f-radius:10px;
  --tw-f-gap:12px;
}
[data-tw-layout] [hidden]{ display:none !important; }

/* Pasos */
.tw-step{ display:grid; gap:16px; min-width:0; }
.tw-steps-on .tw-step:not(.is-current){ display:none; }
.tw-steps-on .tw-step.is-current{ animation:tw-step-in .25s ease; }
@keyframes tw-step-in{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
.tw-step__title{ margin:0; font-size:1.25em; line-height:1.25; }
.tw-step__desc{ margin:-8px 0 0; color:var(--tw-f-muted); }
.tw-step__nav{ display:flex; gap:var(--tw-f-gap); justify-content:space-between; align-items:center; flex-wrap:wrap; margin-top:4px; }
.tw-step__nav > *{ flex:1 1 0; width:auto; min-width:0; margin:0; }
.tw-form__prev{ background:transparent !important; color:var(--tw-f-accent) !important; box-shadow:inset 0 0 0 1px currentColor !important; }

/* Barra de progreso (solo con JS) */
.tw-progress{ display:none; height:6px; border-radius:99px; background:var(--tw-f-bg-soft); overflow:hidden; }
.tw-steps-on .tw-progress{ display:block; }
.tw-progress__bar{ display:block; width:0; height:100%; border-radius:inherit; background:var(--tw-f-accent); transition:width .3s ease; }

/* Tarjetas de opción */
.tw-cards{ display:grid; gap:var(--tw-f-gap); grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); }
.tw-cards--2{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
.tw-cards--3{ grid-template-columns:repeat(3, minmax(0, 1fr)); }
.tw-cards--4{ grid-template-columns:repeat(4, minmax(0, 1fr)); }
.tw-card{ position:relative; display:block; cursor:pointer; margin:0; font-weight:400; }
/* Casillas ocultas (tarjetas e interruptor): fuera de la vista y sin que el CSS de la web (p. ej.
   ".form .field input { width:100% }") pueda agrandarlas y crear scroll horizontal. */
.tw-card__input, .tw-toggle__input{ position:absolute !important; left:0 !important; top:0 !important; width:1px !important; height:1px !important; min-width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; opacity:0; overflow:hidden; clip:rect(0 0 0 0); pointer-events:none; }
.tw-card__box{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; height:100%; box-sizing:border-box;
  padding:16px 24px; border:2px solid var(--tw-f-border); border-radius:var(--tw-f-radius); background:var(--tw-f-bg); color:var(--tw-f-text);
  text-align:center; transition:border-color .15s, background-color .15s, box-shadow .15s, transform .15s; }
.tw-card:hover .tw-card__box{ border-color:var(--tw-f-accent); transform:translateY(-1px); }
.tw-card__input:focus-visible + .tw-card__box{ box-shadow:0 0 0 3px var(--tw-f-accent-soft); border-color:var(--tw-f-accent); }
.tw-card__input:checked + .tw-card__box{ border-color:var(--tw-f-accent); background:var(--tw-f-accent-soft); box-shadow:inset 0 0 0 1px var(--tw-f-accent); }
.tw-card__input:checked + .tw-card__box::after{ content:"✓"; position:absolute; top:8px; right:10px; width:20px; height:20px; border-radius:50%;
  background:var(--tw-f-accent); color:#fff; font-size:12px; line-height:20px; text-align:center; }
.tw-card__input:disabled + .tw-card__box{ opacity:.5; cursor:not-allowed; }
.tw-card__img{ max-width:72px; max-height:56px; object-fit:contain; }
.tw-card__title{ font-weight:700; line-height:1.25; }
.tw-card__sub{ font-size:.85em; color:var(--tw-f-muted); line-height:1.35; }
.is-invalid .tw-card__box{ border-color:#b3261e; }

/* Contador − + */
.tw-counter{ display:inline-flex; align-items:stretch; border:1px solid var(--tw-f-border); border-radius:var(--tw-f-radius); overflow:hidden; background:var(--tw-f-bg); width:max-content; }
.tw-counter__btn{ width:44px; border:0; background:var(--tw-f-bg-soft); color:var(--tw-f-accent); font:inherit; font-size:1.3em; font-weight:700; cursor:pointer; padding:0; }
.tw-counter__btn:hover{ background:var(--tw-f-accent-soft); }
.tw-counter__btn:disabled{ opacity:.4; cursor:not-allowed; }
.tw-counter .tw-counter__input{ width:56px; min-width:0; height:auto; margin:0; border:0 !important; border-radius:0 !important; box-shadow:none !important; background:transparent !important; text-align:center; font:inherit; font-weight:700; color:inherit; background:transparent; padding:10px 0; -moz-appearance:textfield; appearance:textfield; }
.tw-counter__input::-webkit-outer-spin-button, .tw-counter__input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.tw-counter .tw-counter__input:focus{ outline:none; background:var(--tw-f-accent-soft); }

/* Interruptor sí/no (.tw-toggle: .tw-switch es del aviso de cookies) */
.tw-toggle{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:14px; cursor:pointer; margin:0; }
.tw-toggle__label{ font-weight:600; }
/* (.tw-toggle__input: ver "Casillas ocultas" arriba) */
.tw-toggle__track{ position:relative; flex:none; width:46px; height:26px; border-radius:99px; background:var(--tw-f-border); transition:background-color .2s; }
.tw-toggle__track::after{ content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:transform .2s; }
.tw-toggle__input:checked + .tw-toggle__track{ background:var(--tw-f-accent); }
.tw-toggle__input:checked + .tw-toggle__track::after{ transform:translateX(20px); }
.tw-toggle__input:focus-visible + .tw-toggle__track{ box-shadow:0 0 0 3px var(--tw-f-accent-soft); }
.is-invalid .tw-toggle__track{ box-shadow:0 0 0 2px #b3261e; }

/* Texto libre */
.tw-html > :first-child{ margin-top:0; }
.tw-html > :last-child{ margin-bottom:0; }

/* Resumen de lo elegido */
.tw-summary{ padding:16px 18px; border-radius:var(--tw-f-radius); background:var(--tw-f-bg-soft); }
.tw-summary__title{ margin:0 0 10px; font-weight:700; }
.tw-summary__list{ display:grid; gap:2px; margin:0; font-size:.92em; }
.tw-summary__list dt{ color:var(--tw-f-muted); font-size:.9em; }
.tw-summary__list dt:not(:first-child){ margin-top:8px; }
.tw-summary__list dd{ margin:0; font-weight:600; overflow-wrap:anywhere; }
.tw-summary__list:empty{ display:none; }
.tw-summary__empty{ margin:0; color:var(--tw-f-muted); font-size:.92em; }

/* Configurador: opciones a la izquierda, resumen y datos de contacto a la derecha (fijo) */
.tw-config{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(280px, 360px); gap:28px; align-items:start; }
.tw-config__main{ display:grid; gap:28px; min-width:0; }
.tw-config__main > .tw-step + .tw-step{ padding-top:24px; border-top:1px solid var(--tw-f-border); }
.tw-config__aside{ position:sticky; top:var(--tw-f-sticky-top, 90px); display:grid; gap:16px; padding:20px; border:1px solid var(--tw-f-border); border-radius:var(--tw-f-radius); background:var(--tw-f-bg); }
@media (max-width:860px){
  .tw-config{ grid-template-columns:1fr; }
  .tw-config__aside{ position:static; }
}
@media (max-width:560px){
  .tw-cards--3, .tw-cards--4{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .tw-step__nav{ flex-direction:column-reverse; align-items:stretch; }
  .tw-step__nav > *{ flex:none; width:100%; }
}
@media (prefers-reduced-motion:reduce){
  .tw-steps-on .tw-step.is-current{ animation:none; }
  .tw-progress__bar, .tw-card__box, .tw-toggle__track, .tw-toggle__track::after{ transition:none; }
}

/* v4.1 · Enlace de cada tarjeta (p. ej. "Ver condiciones"; se abre en una ventana) */
.tw-card__more{ position:relative; z-index:1; margin-top:4px; font-size:.8em; font-weight:600; color:var(--tw-f-accent); text-decoration:underline; text-underline-offset:2px; }
.tw-card__more:hover{ text-decoration-thickness:2px; }

/* 4.1 · Diseño progresivo: una columna; cada bloque aparece debajo cuando se cumple su condición */
[data-tw-layout="progressive"] .tw-step + .tw-step{ margin-top:8px; padding-top:22px; border-top:1px solid var(--tw-f-border); }
[data-tw-layout="progressive"] .tw-step[data-tw-pending]{ display:none !important; }
[data-tw-layout="progressive"] .tw-step:not([hidden]){ animation:tw-step-in .3s ease; }
@media (prefers-reduced-motion:reduce){ [data-tw-layout="progressive"] .tw-step:not([hidden]){ animation:none; } }
