.elementor-5353 .elementor-element.elementor-element-f03923b > .elementor-widget-container{background-color:#33B9CB;padding:20px 20px 20px 20px;}.elementor-5353 .elementor-element.elementor-element-f03923b{text-align:center;}.elementor-5353 .elementor-element.elementor-element-f03923b .elementor-heading-title{color:#FFFFFF;}.elementor-5353 .elementor-element.elementor-element-93c3f5e > .elementor-widget-container{margin:0px 0px -0px 0px;padding:0px 50px 0px 0px;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-field-group{padding-right:calc( 10px/2 );padding-left:calc( 10px/2 );margin-bottom:10px;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-form-fields-wrapper{margin-left:calc( -10px/2 );margin-right:calc( -10px/2 );margin-bottom:-10px;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-field-group.recaptcha_v3-bottomleft, .elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-field-group.recaptcha_v3-bottomright{margin-bottom:0;}body.rtl .elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-labels-inline .elementor-field-group > label{padding-left:0px;}body:not(.rtl) .elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-labels-inline .elementor-field-group > label{padding-right:0px;}body .elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-labels-above .elementor-field-group > label{padding-bottom:0px;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-field-type-html{padding-bottom:0px;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-field-group:not(.elementor-field-type-upload) .elementor-field:not(.elementor-select-wrapper){background-color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-field-group .elementor-select-wrapper select{background-color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .e-form__buttons__wrapper__button-next{color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-button[type="submit"]{color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-button[type="submit"] svg *{fill:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .e-form__buttons__wrapper__button-previous{color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .e-form__buttons__wrapper__button-next:hover{color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-button[type="submit"]:hover{color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .elementor-button[type="submit"]:hover svg *{fill:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33 .e-form__buttons__wrapper__button-previous:hover{color:#ffffff;}.elementor-5353 .elementor-element.elementor-element-8785f33{--e-form-steps-indicators-spacing:20px;--e-form-steps-indicator-progress-height:20px;--e-form-steps-indicator-progress-border-radius:0px;}/* Start custom CSS for form, class: .elementor-element-8785f33 */<script>
/* ===== RUT: formato y validación en Elementor ===== */
(function () {
  // Selecciona el input por su ID de campo de Elementor: form_fields[rut]
  const rutInput = document.querySelector('input[name="form_fields[rut]"]');
  if (!rutInput) return;

  // Crea/asegura un contenedor de error bajo el campo (mensaje inline)
  const errorEl = document.createElement('small');
  errorEl.style.color = '#d30000';
  errorEl.style.display = 'none';
  errorEl.style.marginTop = '4px';
  errorEl.textContent = 'El RUT no es válido. Revisa el dígito verificador.';
  rutInput.parentElement.appendChild(errorEl);

  // Función: calcula DV (módulo 11)
  function calcDV(numStr) {
    let suma = 0, mult = 2;
    for (let i = numStr.length - 1; i >= 0; i--) {
      suma += parseInt(numStr[i], 10) * mult;
      mult = mult === 7 ? 2 : mult + 1;
    }
    const res = 11 - (suma % 11);
    return res === 11 ? '0' : res === 10 ? 'K' : String(res);
  }

  // Función: valida RUT (solo números + DV)
  function isValidRut(clean) {
    if (!clean || clean.length < 2) return false;
    const cuerpo = clean.slice(0, -1);
    const dv = clean.slice(-1);
    if (!/^\d+$/.test(cuerpo)) return false;
    const dvOk = calcDV(cuerpo);
    return dv === dvOk;
  }

  // Función: formatea con puntos y guion (##.###.###-X)
  function formatRut(clean) {
    if (!clean) return '';
    const cuerpo = clean.slice(0, -1);
    const dv = clean.slice(-1);
    // separadores de miles
    const cuerpoFmt = cuerpo.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
    return `${cuerpoFmt}-${dv}`;
  }

  // Limpia entrada a dígitos + K, pone DV en mayúscula
  function cleanRut(value) {
    return value
      .toUpperCase()
      .replace(/[^0-9K]/g, '')       // deja solo 0-9 o K
      .replace(/^K+/g, '');          // evita que empiece con K
  }

  // Muestra/oculta error y usa validación nativa del navegador
  function setError(show) {
    if (show) {
      errorEl.style.display = 'block';
      rutInput.setCustomValidity('RUT inválido');
    } else {
      errorEl.style.display = 'none';
      rutInput.setCustomValidity('');
    }
  }

  // En vivo: valida y agrega guion cuando hay DV
  rutInput.addEventListener('input', () => {
    const raw = cleanRut(rutInput.value);
    // si hay al menos 2 caracteres, separa DV con guion para feedback inmediato
    if (raw.length >= 2) {
      const cuerpo = raw.slice(0, -1);
      const dv = raw.slice(-1);
      rutInput.value = `${cuerpo}-${dv}`;
      setError(!isValidRut(raw));
    } else {
      rutInput.value = raw;
      setError(false);
    }
  });

  // Al salir del campo: aplica puntos de miles bonitos
  rutInput.addEventListener('blur', () => {
    const raw = cleanRut(rutInput.value);
    if (!raw) { setError(false); return; }
    rutInput.value = formatRut(raw);
    setError(!isValidRut(raw));
    if (!isValidRut(raw)) rutInput.reportValidity();
  });

  // Antes de enviar: bloquea si el RUT es inválido
  const form = rutInput.closest('form');
  if (form) {
    form.addEventListener('submit', (e) => {
      const raw = cleanRut(rutInput.value);
      if (!isValidRut(raw)) {
        e.preventDefault();
        setError(true);
        rutInput.focus();
        rutInput.reportValidity();
      }
    });
  }
})();
</script>/* End custom CSS */