{"id":197536,"date":"2026-09-01T13:07:53","date_gmt":"2026-09-01T16:07:53","guid":{"rendered":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/?page_id=197536"},"modified":"2026-10-26T11:13:08","modified_gmt":"2026-10-26T14:13:08","slug":"trabaja-con-nosotros","status":"publish","type":"page","link":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/trabaja-con-nosotros\/","title":{"rendered":"Trabaj\u00e1 con nosotros"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"197536\" class=\"elementor elementor-197536\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3366ab0 institucion e-flex e-con-boxed e-con e-parent\" data-id=\"3366ab0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d092a7a elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"d092a7a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">\u00bfQuer\u00e9s trabajar con nosotros?<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb4677f elementor-widget elementor-widget-text-editor\" data-id=\"cb4677f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>En el IDECBA realizamos censos, encuestas y proyectos, para la producci\u00f3n de estad\u00edsticas oficiales sobre la realidad econ\u00f3mica, social y demogr\u00e1fica de la Ciudad, contribuyendo a la toma de decisiones y al dise\u00f1o de pol\u00edticas p\u00fablicas. Si est\u00e1s interesado\/a en sumarte al equipo, pod\u00e9s postularte, completando el siguiente formulario.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4a2b639 elementor-widget elementor-widget-html\" data-id=\"4a2b639\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.rrhh-formulario {\n  --rrhh-azul: #03508c;\n  --rrhh-azul-oscuro: #033963;\n  --rrhh-celeste: #189cd9;\n  --rrhh-fondo-alterno: #f0f3f5;\n  --rrhh-texto: #121212;\n  --rrhh-borde: #ccc;\n  --rrhh-error: #c0392b;\n  --rrhh-radio: 10px;\n  --rrhh-gris-claro: #999;\n\n  width: 100%;\n  padding: 24px;\n  font-family: \"Roboto\", Arial, sans-serif !important;\n  color: var(--rrhh-texto);\n  box-sizing: border-box;\n}\n.rrhh-formulario * { box-sizing: border-box; }\n\n.rrhh-formulario,\n.rrhh-formulario * {\n  font-style: normal !important;\n  font-weight: 400 !important;\n}\n\n[hidden] { display: none !important; }\n\n.rrhh-barra-pasos {\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 32px;\n  position: relative;\n}\n.rrhh-barra-pasos::before {\n  content: \"\";\n  position: absolute;\n  top: 14px;\n  left: 5%;\n  right: 5%;\n  height: 2px;\n  background: var(--rrhh-fondo-alterno);\n  z-index: 0;\n}\n.rrhh-paso-punto {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  flex: 1;\n  text-align: center;\n}\n.rrhh-paso-punto span {\n  width: 28px;\n  height: 28px;\n  border-radius: 50%;\n  background: #d5dbe0;\n  color: #fff;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 13px;\n  font-weight: 500 !important;\n  margin-bottom: 6px;\n  transition: background .2s;\n}\n.rrhh-paso-punto small {\n  font-size: 11px;\n  color: #777;\n}\n.rrhh-paso-punto.activo span,\n.rrhh-paso-punto.completado span {\n  background: var(--rrhh-azul);\n}\n.rrhh-paso-punto.activo small { color: var(--rrhh-azul); font-weight: 700 !important; }\n\n.rrhh-paso { display: none; }\n.rrhh-paso.activo { display: block; animation: rrhh-aparecer .2s ease; }\n@keyframes rrhh-aparecer { from { opacity: 0; } to { opacity: 1; } }\n\n.rrhh-paso h2 {\n  font-family: \"Archivo\", \"Roboto\", Arial, sans-serif !important;\n  font-size: 24px;\n  font-weight: 700 !important;\n  margin-bottom: 20px;\n  color: var(--rrhh-azul);\n}\n\n.rrhh-fila {\n  display: flex;\n  gap: 16px;\n  flex-wrap: wrap;\n}\n.rrhh-fila .rrhh-campo { flex: 1 1 240px; }\n\n.rrhh-campo {\n  margin-bottom: 18px;\n  display: flex;\n  flex-direction: column;\n}\n.rrhh-campo label {\n  font-size: 14px;\n  font-weight: 700 !important;\n  margin-bottom: 6px;\n}\n.rrhh-campo input,\n.rrhh-campo select,\n.rrhh-campo textarea {\n  padding: 10px 12px;\n  border: 1px solid var(--rrhh-borde);\n  border-radius: 8px;\n  font-size: 14px;\n  font-weight: 400 !important;\n  font-family: inherit !important;\n  color: var(--rrhh-texto);\n  width: 100%;\n}\n\n.rrhh-campo input[type=\"checkbox\"],\n.rrhh-campo input[type=\"radio\"] {\n  width: auto;\n  padding: 0;\n}\n.rrhh-campo input:focus,\n.rrhh-campo select:focus,\n.rrhh-campo textarea:focus {\n  outline: none;\n  border-color: var(--rrhh-azul);\n}\n\n.rrhh-campo input::placeholder,\n.rrhh-campo textarea::placeholder {\n  color: var(--rrhh-gris-claro);\n  font-weight: 400;\n}\n\n.rrhh-campo select:has(option:checked[value=\"\"]) {\n  color: var(--rrhh-gris-claro);\n}\n\n.rrhh-error {\n  display: none;\n  color: var(--rrhh-error);\n  font-size: 12px;\n  margin-top: 4px;\n}\n.rrhh-campo.invalido input,\n.rrhh-campo.invalido select,\n.rrhh-campo.invalido textarea {\n  border-color: var(--rrhh-error);\n  background: #fdf1f0;\n}\n.rrhh-campo.invalido .rrhh-error { display: block; }\n\n.rrhh-ayuda {\n  color: #555;\n  font-size: 12px;\n  font-weight: 400;\n  margin-top: 4px;\n  display: block;\n}\n\n.rrhh-bloque-repetible {\n  border: 2px solid var(--rrhh-azul);\n  border-radius: var(--rrhh-radio);\n  padding: 2em;\n  margin-bottom: 16px;\n  position: relative;\n  background: none;\n}\n.rrhh-quitar-bloque {\n  position: absolute;\n  top: 8px;\n  right: 8px;\n  background: none;\n  border: none;\n  font-size: 20px;\n  line-height: 1;\n  color: var(--rrhh-azul);\n  cursor: pointer;\n}\n.rrhh-quitar-bloque:hover { color: var(--rrhh-azul-oscuro); }\n\n.rrhh-boton-agregar {\n  display: block;\n  margin-left: auto;\n}\n\n.rrhh-grupo-radio {\n  display: flex;\n  gap: 20px;\n  font-size: 14px;\n  margin-top: 4px;\n}\n.rrhh-grupo-radio label {\n  display: flex;\n  align-items: center;\n  gap: 6px;\n  font-weight: 400 !important;\n}\n\n.rrhh-grupo-checkbox {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  font-size: 14px;\n  margin-top: 4px;\n}\n.rrhh-ayuda + .rrhh-grupo-checkbox { margin-top: 14px; }\n.rrhh-grupo-checkbox label {\n  display: flex;\n  align-items: center;\n  gap: 6px;\n  font-weight: 400 !important;\n  white-space: nowrap;\n}\n\n.rrhh-boton-primario,\n.rrhh-boton-secundario {\n  padding: 12px 24px;\n  border-radius: var(--rrhh-radio);\n  font-family: \"Archivo\", \"Roboto\", Arial, sans-serif !important;\n  font-size: 15px;\n  font-weight: 500 !important;\n  cursor: pointer;\n  border: none;\n  transition: background-color .15s;\n}\n.rrhh-boton-primario {\n  background: var(--rrhh-azul);\n  color: #fff;\n}\n.rrhh-boton-primario:hover { background: var(--rrhh-azul-oscuro); }\n.rrhh-boton-primario:disabled { background: #9db8d8; cursor: not-allowed; }\n\n.rrhh-boton-secundario {\n  background: #fff;\n  color: var(--rrhh-azul);\n  border: 1px solid var(--rrhh-azul);\n}\n.rrhh-boton-secundario:hover { background: var(--rrhh-fondo-alterno); }\n.rrhh-boton-secundario:disabled {\n  color: #aaa; border-color: #ccc; cursor: not-allowed; background: #fff;\n}\n\n.rrhh-navegacion {\n  display: flex;\n  justify-content: space-between;\n  margin-top: 28px;\n  border-top: 1px solid #eee;\n  padding-top: 20px;\n}\n\n.rrhh-casilla {\n  display: flex;\n  align-items: flex-start;\n  gap: 8px;\n  font-size: 14px;\n  margin: 16px 0;\n}\n.rrhh-casilla input { margin-top: 3px; }\n\n.rrhh-resumen {\n  background: var(--rrhh-fondo-alterno);\n  border-radius: var(--rrhh-radio);\n  padding: 16px;\n  font-size: 14px;\n  margin-bottom: 16px;\n}\n.rrhh-resumen h4 {\n  font-family: \"Archivo\", \"Roboto\", Arial, sans-serif !important;\n  font-weight: 700 !important;\n  margin: 12px 0 4px;\n  color: var(--rrhh-azul);\n  font-size: 14px;\n}\n.rrhh-resumen p { margin: 2px 0; }\n\n.rrhh-mensaje-envio {\n  font-size: 14px;\n  margin-top: 12px;\n  font-weight: 700 !important;\n}\n.rrhh-mensaje-envio.exito { color: #1e7e34; }\n.rrhh-mensaje-envio.error { color: var(--rrhh-error); }\n.rrhh-mensaje-envio.cargando { color: #555; }\n\n@media (max-width: 600px) {\n  .rrhh-paso-punto small { display: none; }\n  .rrhh-navegacion { flex-direction: column; gap: 10px; }\n  .rrhh-navegacion button { width: 100%; }\n}\n\n.rrhh-nota-obligatorio {\n  margin: 16px 0 0;\n  font-size: 0.85rem;\n  color: var(--rrhh-gris-claro);\n}\n.rrhh-nota-obligatorio span { color: var(--rrhh-error); font-weight: 700; }\n\n.rrhh-check-sin-experiencia {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 14px;\n  font-weight: 400 !important;\n  cursor: pointer;\n}\n\n.rrhh-grupo-checkbox label:has(input:disabled) { opacity: 0.5; }\n<\/style>\n\n<script src=\"https:\/\/www.google.com\/recaptcha\/api.js?render=6Ld_kcMrAAAAAMH9OP1661xs-D0eZwSLMU6wGKLR\"><\/script>\n\n<div class=\"rrhh-formulario\">\n  <form id=\"formularioRrhh\" novalidate>\n\n    <div class=\"rrhh-barra-pasos\">\n      <div class=\"rrhh-paso-punto activo\" data-paso=\"1\"><span>1<\/span><small>Datos generales<\/small><\/div>\n      <div class=\"rrhh-paso-punto\" data-paso=\"2\"><span>2<\/span><small>Formaci\u00f3n<\/small><\/div>\n      <div class=\"rrhh-paso-punto\" data-paso=\"3\"><span>3<\/span><small>Idiomas<\/small><\/div>\n      <div class=\"rrhh-paso-punto\" data-paso=\"4\"><span>4<\/span><small>Experiencia<\/small><\/div>\n      <div class=\"rrhh-paso-punto\" data-paso=\"5\"><span>5<\/span><small>Encuestas y censos<\/small><\/div>\n      <div class=\"rrhh-paso-punto\" data-paso=\"6\"><span>6<\/span><small>Disponibilidad<\/small><\/div>\n      <div class=\"rrhh-paso-punto\" data-paso=\"7\"><span>7<\/span><small>CV<\/small><\/div>\n      <div class=\"rrhh-paso-punto\" data-paso=\"8\"><span>8<\/span><small>Revisi\u00f3n<\/small><\/div>\n    <\/div>\n\n    <section class=\"rrhh-paso activo\" data-paso=\"1\">\n      <h2>Datos generales<\/h2>\n\n      <div class=\"rrhh-fila\">\n        <div class=\"rrhh-campo\">\n          <label for=\"apellido\">Apellido *<\/label>\n          <input type=\"text\" id=\"apellido\" name=\"apellido\" required>\n          <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\">\n          <label for=\"nombre\">Nombre *<\/label>\n          <input type=\"text\" id=\"nombre\" name=\"nombre\" required>\n          <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"rrhh-fila\">\n        <div class=\"rrhh-campo\">\n          <label for=\"fechaNacimiento\">Fecha de nacimiento *<\/label>\n          <input type=\"date\" id=\"fechaNacimiento\" name=\"fechaNacimiento\" required>\n          <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\">\n          <label for=\"dni\">DNI *<\/label>\n          <input type=\"text\" id=\"dni\" name=\"dni\" placeholder=\"DNI sin puntos\" inputmode=\"numeric\" pattern=\"[0-9]{7,8}\" minlength=\"7\" maxlength=\"8\" required>\n          <span class=\"rrhh-error\">El DNI debe tener entre 7 y 8 n\u00fameros.<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"rrhh-fila\">\n        <div class=\"rrhh-campo\">\n          <label for=\"cuil\">CUIL\/CUIT *<\/label>\n          <input type=\"text\" id=\"cuil\" name=\"cuil\" placeholder=\"CUIL\/CUIT (sin guiones)\" inputmode=\"numeric\" pattern=\"[0-9]{10,11}\" minlength=\"10\" maxlength=\"11\" required>\n          <span class=\"rrhh-error\">El CUIL\/CUIT debe tener entre 10 y 11 n\u00fameros.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\">\n          <label>Monotributo *<\/label>\n          <div class=\"rrhh-grupo-radio\">\n            <label><input type=\"radio\" name=\"monotributo\" value=\"Si\" required> S\u00ed<\/label>\n            <label><input type=\"radio\" name=\"monotributo\" value=\"No\" required> No<\/label>\n          <\/div>\n          <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"rrhh-fila\">\n        <div class=\"rrhh-campo\">\n          <label for=\"email\">Correo electr\u00f3nico *<\/label>\n          <input type=\"email\" id=\"email\" name=\"email\" required>\n          <span class=\"rrhh-error\">Ingres\u00e1 un email v\u00e1lido.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\">\n          <label for=\"telefono\">Tel\u00e9fono<\/label>\n          <input type=\"tel\" id=\"telefono\" name=\"telefono\">\n        <\/div>\n      <\/div>\n\n      <div class=\"rrhh-fila\">\n        <div class=\"rrhh-campo\">\n          <label for=\"celular\">Celular *<\/label>\n          <input type=\"tel\" id=\"celular\" name=\"celular\" required>\n          <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\">\n          <label for=\"linkedin\">URL LinkedIn<\/label>\n          <input type=\"url\" id=\"linkedin\" name=\"linkedin\" placeholder=\"https:\/\/www.linkedin.com\/in\/tu-nombre\">\n        <\/div>\n      <\/div>\n\n      <div class=\"rrhh-fila\">\n        <div class=\"rrhh-campo\">\n          <label for=\"provincia\">Provincia *<\/label>\n          <select id=\"provincia\" name=\"provincia\" required>\n            <option value=\"\">- Seleccionar -<\/option>\n            <option value=\"CABA\">Ciudad Aut\u00f3noma de Buenos Aires<\/option>\n            <option value=\"BA\">Buenos Aires<\/option>\n            <option value=\"OTRA\">Otra provincia<\/option>\n          <\/select>\n          <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\" id=\"contenedorComuna\">\n          <label for=\"comuna\">Comuna *<\/label>\n          <select id=\"comuna\" name=\"comuna\" required>\n            <option value=\"\">- Seleccionar -<\/option>\n          <\/select>\n          <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\" id=\"contenedorProvinciaOtra\" hidden>\n          <label for=\"provinciaOtra\">\u00bfCu\u00e1l? *<\/label>\n          <input type=\"text\" id=\"provinciaOtra\" name=\"provinciaOtra\" placeholder=\"Indic\u00e1 la provincia\">\n          <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n        <\/div>\n        <div class=\"rrhh-campo\" id=\"contenedorPartido\" hidden>\n          <label for=\"partido\">Partido *<\/label>\n          <input type=\"text\" id=\"partido\" name=\"partido\">\n          <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"rrhh-campo\" id=\"contenedorBarrio\">\n        <label for=\"barrio\">Barrio *<\/label>\n        <select id=\"barrio\" name=\"barrio\" required>\n          <option value=\"\">- Seleccionar -<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n\n      <div class=\"rrhh-campo\">\n        <label for=\"direccion\">Direcci\u00f3n *<\/label>\n        <input type=\"text\" id=\"direccion\" name=\"direccion\" placeholder=\"Calle, altura, piso\/depto\" required>\n        <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n      <\/div>\n    <\/section>\n\n    <section class=\"rrhh-paso\" data-paso=\"2\">\n      <h2>Formaci\u00f3n acad\u00e9mica<\/h2>\n      <div id=\"contenedorFormacion\"><\/div>\n      <button type=\"button\" id=\"agregarFormacion\" class=\"rrhh-boton-secundario rrhh-boton-agregar\">Agregar otra formaci\u00f3n<\/button>\n    <\/section>\n\n    <section class=\"rrhh-paso\" data-paso=\"3\">\n      <h2>Idiomas<\/h2>\n      <div id=\"contenedorIdiomas\"><\/div>\n      <button type=\"button\" id=\"agregarIdioma\" class=\"rrhh-boton-secundario rrhh-boton-agregar\">Agregar otro idioma<\/button>\n    <\/section>\n\n    <section class=\"rrhh-paso\" data-paso=\"4\">\n      <h2>Experiencia laboral<\/h2>\n\n      <div class=\"rrhh-campo\">\n        <label class=\"rrhh-check-sin-experiencia\"><input type=\"checkbox\" id=\"sinExperienciaLaboral\" name=\"sinExperienciaLaboral\" value=\"Si\"> No tengo experiencia laboral<\/label>\n      <\/div>\n\n      <div id=\"detalleExperienciaLaboral\">\n        <div id=\"contenedorExperiencia\"><\/div>\n        <button type=\"button\" id=\"agregarExperiencia\" class=\"rrhh-boton-secundario rrhh-boton-agregar\">Agregar otra experiencia<\/button>\n      <\/div>\n    <\/section>\n\n    <section class=\"rrhh-paso\" data-paso=\"5\">\n      <h2>Experiencia en encuestas y censos<\/h2>\n\n      <div class=\"rrhh-campo\">\n        <label>\u00bfPosee experiencia en encuestas y censos? *<\/label>\n        <div class=\"rrhh-grupo-radio\">\n          <label><input type=\"radio\" name=\"poseeExperienciaEncuestas\" value=\"Si\" required> S\u00ed<\/label>\n          <label><input type=\"radio\" name=\"poseeExperienciaEncuestas\" value=\"No\" required> No<\/label>\n        <\/div>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n\n      <div id=\"detalleExperienciaEncuestas\" hidden>\n        <div id=\"contenedorRelevamientos\"><\/div>\n        <button type=\"button\" id=\"agregarRelevamiento\" class=\"rrhh-boton-secundario rrhh-boton-agregar\">Agregar otro tipo de relevamiento<\/button>\n      <\/div>\n\n      <div class=\"rrhh-campo\">\n        <label>\u00bfTrabaj\u00f3 en el IDECBA? *<\/label>\n        <div class=\"rrhh-grupo-radio\">\n          <label><input type=\"radio\" name=\"trabajoEnIdecba\" value=\"Si\" required> S\u00ed<\/label>\n          <label><input type=\"radio\" name=\"trabajoEnIdecba\" value=\"No\" required> No<\/label>\n        <\/div>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n\n      <div class=\"rrhh-campo\" id=\"campoPostulacionInteres\">\n        <label>Postulaci\u00f3n de inter\u00e9s *<\/label>\n        <small class=\"rrhh-ayuda\">Pod\u00e9s elegir hasta tres opciones.<\/small>\n        <div class=\"rrhh-grupo-checkbox\">\n          <label><input type=\"checkbox\" name=\"postulacionInteres\" value=\"Encuestador\"> Encuestador<\/label>\n          <label><input type=\"checkbox\" name=\"postulacionInteres\" value=\"Supervisor\"> Supervisor<\/label>\n          <label><input type=\"checkbox\" name=\"postulacionInteres\" value=\"Recuperador\"> Recuperador<\/label>\n          <label><input type=\"checkbox\" name=\"postulacionInteres\" value=\"Coordinaci\u00f3n\"> Coordinaci\u00f3n<\/label>\n          <label><input type=\"checkbox\" name=\"postulacionInteres\" value=\"Otro\"> Otro<\/label>\n        <\/div>\n        <span class=\"rrhh-error\">Eleg\u00ed al menos una opci\u00f3n (hasta tres).<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\" id=\"contenedorPostulacionInteresOtro\" hidden>\n        <label for=\"postulacionInteresOtro\">\u00bfCu\u00e1l es el puesto de inter\u00e9s?<\/label>\n        <input type=\"text\" id=\"postulacionInteresOtro\" name=\"postulacionInteresOtro\">\n        <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n      <\/div>\n    <\/section>\n\n    <section class=\"rrhh-paso\" data-paso=\"6\">\n      <h2>Disponibilidad horaria<\/h2>\n      <div class=\"rrhh-campo\">\n        <label>Seleccion\u00e1 todas las opciones que correspondan<\/label>\n        <small class=\"rrhh-ayuda\">Pod\u00e9s seleccionar m\u00e1s de una opci\u00f3n.<\/small>\n        <div class=\"rrhh-grupo-checkbox\">\n          <label><input type=\"checkbox\" name=\"disponibilidad\" value=\"Lunes a viernes\"> Lunes a viernes<\/label>\n          <label><input type=\"checkbox\" name=\"disponibilidad\" value=\"Fin de semana\"> Fin de semana<\/label>\n          <label><input type=\"checkbox\" name=\"disponibilidad\" value=\"Feriados\"> Feriados<\/label>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"rrhh-paso\" data-paso=\"7\">\n      <h2>Adjuntar CV<\/h2>\n      <div class=\"rrhh-campo\">\n        <label for=\"archivoCv\">Archivo (PDF, m\u00e1x. 5MB) *<\/label>\n        <input type=\"file\" id=\"archivoCv\" name=\"archivoCv\" accept=\"application\/pdf\" required>\n        <span class=\"rrhh-error\" id=\"errorCv\">Adjunt\u00e1 tu CV en formato PDF (m\u00e1x. 5MB).<\/span>\n        <small class=\"rrhh-ayuda\" id=\"nombreArchivoCv\"><\/small>\n      <\/div>\n    <\/section>\n\n    <section class=\"rrhh-paso\" data-paso=\"8\">\n      <h2>Revisi\u00f3n y env\u00edo<\/h2>\n      <div id=\"resumen\" class=\"rrhh-resumen\"><\/div>\n\n      <label class=\"rrhh-casilla\">\n        <input type=\"checkbox\" id=\"aceptaDatos\" name=\"aceptaDatos\" required>\n        Acepto que mis datos y CV sean utilizados para el proceso de selecci\u00f3n. *\n      <\/label>\n\n      <div id=\"campoOculto\" style=\"position:absolute;left:-9999px;\">\n        <input type=\"text\" name=\"sitioWeb\" tabindex=\"-1\" autocomplete=\"off\">\n      <\/div>\n\n      <div id=\"mensajeEnvio\" class=\"rrhh-mensaje-envio\"><\/div>\n    <\/section>\n\n    <div class=\"rrhh-navegacion\">\n      <button type=\"button\" id=\"btnAnterior\" class=\"rrhh-boton-secundario\" disabled>Anterior<\/button>\n      <button type=\"button\" id=\"btnSiguiente\" class=\"rrhh-boton-primario\">Siguiente<\/button>\n      <button type=\"submit\" id=\"btnEnviar\" class=\"rrhh-boton-primario\" hidden>Enviar postulaci\u00f3n<\/button>\n    <\/div>\n\n    <p class=\"rrhh-nota-obligatorio\"><span>*<\/span> Campo obligatorio<\/p>\n\n  <\/form>\n<\/div>\n\n<template id=\"plantillaFormacion\">\n  <div class=\"rrhh-bloque-repetible\">\n    <button type=\"button\" class=\"rrhh-quitar-bloque\" title=\"Quitar\">\u00d7<\/button>\n    <div class=\"rrhh-fila\">\n      <div class=\"rrhh-campo\">\n        <label>Nivel *<\/label>\n        <select data-campo=\"nivel\" required>\n          <option value=\"\">- Seleccionar -<\/option>\n          <option>Secundario<\/option>\n          <option>Terciario<\/option>\n          <option>Universitario<\/option>\n          <option>Posgrado<\/option>\n          <option>Maestr\u00eda<\/option>\n          <option>Doctorado<\/option>\n          <option>Otro<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\">\n        <label>Estado *<\/label>\n        <select data-campo=\"estado\" required>\n          <option value=\"\">- Seleccionar -<\/option>\n          <option>Completo<\/option>\n          <option>Incompleto<\/option>\n          <option>En curso<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"rrhh-fila\">\n      <div class=\"rrhh-campo\" data-contenedor-carrera>\n        <label>Carrera *<\/label>\n        <input type=\"text\" data-campo=\"carrera\" required>\n        <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\">\n        <label>Instituci\u00f3n *<\/label>\n        <input type=\"text\" data-campo=\"institucion\" placeholder=\"Universidad de Buenos Aires\" required>\n        <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/template>\n\n<template id=\"plantillaRelevamiento\">\n  <div class=\"rrhh-bloque-repetible\">\n    <button type=\"button\" class=\"rrhh-quitar-bloque\" title=\"Quitar\">\u00d7<\/button>\n    <div class=\"rrhh-fila\">\n      <div class=\"rrhh-campo\">\n        <label>Tipo de relevamiento *<\/label>\n        <select data-campo=\"tipoRelevamiento\" required>\n          <option value=\"\">- Seleccionar -<\/option>\n          <option>Encuestas de hogares<\/option>\n          <option>Encuestas de opini\u00f3n<\/option>\n          <option>Encuestas de satisfacci\u00f3n<\/option>\n          <option>Estudios de mercado<\/option>\n          <option>Relevamientos de precios<\/option>\n          <option>Relevamientos a comercios<\/option>\n          <option>Relevamientos a empresas<\/option>\n          <option>Censos<\/option>\n          <option>Relevamientos territoriales \/ en v\u00eda p\u00fablica<\/option>\n          <option>Otros<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\">\n        <label>Puesto desempe\u00f1ado *<\/label>\n        <select data-campo=\"puestoDesempenado\" required>\n          <option value=\"\">- Seleccionar -<\/option>\n          <option>Encuestador<\/option>\n          <option>Supervisor<\/option>\n          <option>Recuperador<\/option>\n          <option>Coordinaci\u00f3n<\/option>\n          <option>Otro<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"rrhh-campo\" data-otro-puesto hidden>\n      <label>\u00bfCu\u00e1l?<\/label>\n      <input type=\"text\" data-campo=\"puestoDesempenadoOtro\">\n    <\/div>\n  <\/div>\n<\/template>\n\n<template id=\"plantillaIdioma\">\n  <div class=\"rrhh-bloque-repetible\">\n    <button type=\"button\" class=\"rrhh-quitar-bloque\" title=\"Quitar\">\u00d7<\/button>\n    <div class=\"rrhh-fila\">\n      <div class=\"rrhh-campo\">\n        <label>Idioma<\/label>\n        <select data-campo=\"idioma\">\n          <option value=\"\">- Seleccionar -<\/option>\n          <option>Ingl\u00e9s<\/option>\n          <option>Portugu\u00e9s<\/option>\n          <option>Guaran\u00ed<\/option>\n          <option>Franc\u00e9s<\/option>\n          <option>Alem\u00e1n<\/option>\n          <option>Italiano<\/option>\n          <option>Chino<\/option>\n          <option>Otro<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\" data-otro-idioma hidden>\n        <label>\u00bfCu\u00e1l?<\/label>\n        <input type=\"text\" data-campo=\"idiomaOtro\" placeholder=\"Indic\u00e1 el idioma\">\n      <\/div>\n    <\/div>\n    <div class=\"rrhh-fila\" data-niveles-idioma hidden>\n      <div class=\"rrhh-campo\">\n        <label>Nivel conversacional *<\/label>\n        <select data-campo=\"nivelConversacional\" required>\n          <option value=\"\">- Seleccionar -<\/option>\n          <option>B\u00e1sico<\/option>\n          <option>Intermedio<\/option>\n          <option>Avanzado<\/option>\n          <option>Nativo<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\">\n        <label>Nivel escrito *<\/label>\n        <select data-campo=\"nivelEscrito\" required>\n          <option value=\"\">- Seleccionar -<\/option>\n          <option>B\u00e1sico<\/option>\n          <option>Intermedio<\/option>\n          <option>Avanzado<\/option>\n          <option>Nativo<\/option>\n        <\/select>\n        <span class=\"rrhh-error\">Seleccion\u00e1 una opci\u00f3n.<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/template>\n\n<template id=\"plantillaExperiencia\">\n  <div class=\"rrhh-bloque-repetible\">\n    <button type=\"button\" class=\"rrhh-quitar-bloque\" title=\"Quitar\">\u00d7<\/button>\n    <div class=\"rrhh-fila\">\n      <div class=\"rrhh-campo\">\n        <label>Empresa \/ Instituci\u00f3n *<\/label>\n        <input type=\"text\" data-campo=\"empresa\" required>\n        <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\">\n        <label>Puesto *<\/label>\n        <input type=\"text\" data-campo=\"puesto\" required>\n        <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"rrhh-fila\">\n      <div class=\"rrhh-campo\">\n        <label>Desde *<\/label>\n        <input type=\"month\" data-campo=\"desde\" required>\n        <span class=\"rrhh-error\">Este campo es obligatorio.<\/span>\n      <\/div>\n      <div class=\"rrhh-campo\">\n        <label>Hasta (vac\u00edo si es actual)<\/label>\n        <input type=\"month\" data-campo=\"hasta\">\n      <\/div>\n    <\/div>\n    <div class=\"rrhh-campo\">\n      <label>Principales tareas<\/label>\n      <textarea data-campo=\"tareas\" rows=\"3\"><\/textarea>\n    <\/div>\n  <\/div>\n<\/template>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const URL_WEBHOOK = \"https:\/\/EJEMPLO-REEMPLAZAR.estadisticaciudad.gob.ar\/webhook-cv\";\n  const URL_PLANILLA = \"https:\/\/script.google.com\/macros\/s\/AKfycbxjGz2bmy_HZxXr_mbZ3DAtJtP9pdsPZ-QFIXj4-3TsYT4XWZ1Tqg5fcnmIK2M80apm\/exec\";\n  const TOKEN_PLANILLA = \"idecba-rrhh-LyqWVT4UQk_Zk5uYL0Ygow24mUio7tBt\";\n  const RECAPTCHA_SITE_KEY = \"6Ld_kcMrAAAAAMH9OP1661xs-D0eZwSLMU6wGKLR\";\n  const MB_MAXIMO_ARCHIVO = 5;\n\n  const ENVIAR_A_WEBHOOK = false;\n  const ENVIAR_A_PLANILLA = true;\n\n  const VALIDAR_CAMPOS_OBLIGATORIOS = true;\n\n  function medir(evento, datos) {\n    try {\n      window.dataLayer = window.dataLayer || [];\n      window.dataLayer.push(Object.assign({ event: evento }, datos || {}));\n    } catch (e) {\n\n    }\n  }\n  const pasosMedidos = new Set();\n  let inicioMedido = false;\n\n  const COMUNAS_BARRIOS = {\n    \"Comuna 1\": [\"Constituci\u00f3n\", \"Montserrat\", \"Puerto Madero\", \"Retiro\", \"San Nicol\u00e1s\", \"San Telmo\"],\n    \"Comuna 2\": [\"Recoleta\"],\n    \"Comuna 3\": [\"Balvanera\", \"San Crist\u00f3bal\"],\n    \"Comuna 4\": [\"Barracas\", \"La Boca\", \"Nueva Pompeya\", \"Parque Patricios\"],\n    \"Comuna 5\": [\"Almagro\", \"Boedo\"],\n    \"Comuna 6\": [\"Caballito\"],\n    \"Comuna 7\": [\"Flores\", \"Parque Chacabuco\"],\n    \"Comuna 8\": [\"Villa Soldati\", \"Villa Riachuelo\", \"Villa Lugano\"],\n    \"Comuna 9\": [\"Liniers\", \"Mataderos\", \"Parque Avellaneda\"],\n    \"Comuna 10\": [\"Floresta\", \"Monte Castro\", \"V\u00e9lez Sarsfield\", \"Versalles\", \"Villa Luro\", \"Villa Real\"],\n    \"Comuna 11\": [\"Villa Devoto\", \"Villa del Parque\", \"Villa General Mitre\", \"Villa Santa Rita\"],\n    \"Comuna 12\": [\"Coghlan\", \"Saavedra\", \"Villa Urquiza\", \"Villa Pueyrred\u00f3n\"],\n    \"Comuna 13\": [\"Belgrano\", \"Colegiales\", \"N\u00fa\u00f1ez\"],\n    \"Comuna 14\": [\"Palermo\"],\n    \"Comuna 15\": [\"Agronom\u00eda\", \"Chacarita\", \"La Paternal\", \"Villa Ort\u00fazar\", \"Parque Chas\"]\n  };\n\n  let pasoActual = 1;\n  const TOTAL_PASOS = 8;\n\n  const formulario = document.getElementById(\"formularioRrhh\");\n  const pasos = Array.from(document.querySelectorAll(\".rrhh-paso\"));\n  const puntosPasos = Array.from(document.querySelectorAll(\".rrhh-paso-punto\"));\n  const btnAnterior = document.getElementById(\"btnAnterior\");\n  const btnSiguiente = document.getElementById(\"btnSiguiente\");\n  const btnEnviar = document.getElementById(\"btnEnviar\");\n\n  if (!VALIDAR_CAMPOS_OBLIGATORIOS) {\n    formulario.querySelectorAll(\"[required]\").forEach((el) => el.removeAttribute(\"required\"));\n  }\n\n  const selectProvincia = document.getElementById(\"provincia\");\n  const selectComuna = document.getElementById(\"comuna\");\n  const contenedorComuna = document.getElementById(\"contenedorComuna\");\n  const contenedorPartido = document.getElementById(\"contenedorPartido\");\n  const inputPartido = document.getElementById(\"partido\");\n  const contenedorBarrio = document.getElementById(\"contenedorBarrio\");\n  const selectBarrio = document.getElementById(\"barrio\");\n\n  Object.keys(COMUNAS_BARRIOS).forEach((comuna) => {\n    const opcion = document.createElement(\"option\");\n    opcion.value = comuna;\n    opcion.textContent = comuna;\n    selectComuna.appendChild(opcion);\n  });\n\n  const contenedorProvinciaOtra = document.getElementById(\"contenedorProvinciaOtra\");\n  const inputProvinciaOtra = document.getElementById(\"provinciaOtra\");\n\n  selectProvincia.addEventListener(\"change\", () => {\n    const esCABA = selectProvincia.value === \"CABA\";\n    const esBuenosAires = selectProvincia.value === \"BA\";\n    const esOtra = selectProvincia.value === \"OTRA\";\n    contenedorComuna.hidden = !esCABA;\n    contenedorBarrio.hidden = !esCABA;\n    contenedorPartido.hidden = !esBuenosAires;\n    contenedorProvinciaOtra.hidden = !esOtra;\n\n    if (VALIDAR_CAMPOS_OBLIGATORIOS) {\n      selectComuna.required = esCABA;\n      selectBarrio.required = esCABA;\n      inputPartido.required = esBuenosAires;\n      inputProvinciaOtra.required = esOtra;\n    }\n\n    if (!esCABA) {\n      selectComuna.value = \"\";\n      selectBarrio.innerHTML = '<option value=\"\">- Seleccionar -<\/option>';\n    }\n    if (!esBuenosAires) inputPartido.value = \"\";\n    if (!esOtra) inputProvinciaOtra.value = \"\";\n  });\n\n  selectComuna.addEventListener(\"change\", () => {\n    const barrios = COMUNAS_BARRIOS[selectComuna.value] || [];\n    selectBarrio.innerHTML = '<option value=\"\">- Seleccionar -<\/option>';\n    barrios.forEach((b) => {\n      const opcion = document.createElement(\"option\");\n      opcion.value = b;\n      opcion.textContent = b;\n      selectBarrio.appendChild(opcion);\n    });\n  });\n\n  contenedorComuna.hidden = true;\n  contenedorBarrio.hidden = true;\n  contenedorPartido.hidden = true;\n  contenedorProvinciaOtra.hidden = true;\n\n  [\"dni\", \"cuil\"].forEach((id) => {\n    document.getElementById(id).addEventListener(\"input\", (e) => {\n      e.target.value = e.target.value.replace(\/\\D\/g, \"\");\n    });\n  });\n\n  function mostrarPaso(n) {\n    pasos.forEach((s) => s.classList.toggle(\"activo\", Number(s.dataset.paso) === n));\n    puntosPasos.forEach((d) => {\n      const dPaso = Number(d.dataset.paso);\n      d.classList.toggle(\"activo\", dPaso === n);\n      d.classList.toggle(\"completado\", dPaso < n);\n    });\n    btnAnterior.disabled = n === 1;\n    btnSiguiente.hidden = n === TOTAL_PASOS;\n    btnEnviar.hidden = n !== TOTAL_PASOS;\n    if (n === TOTAL_PASOS) mostrarResumen();\n    pasoActual = n;\n    if (n > 1 && !pasosMedidos.has(n)) {\n      pasosMedidos.add(n);\n      medir(\"rrhh_form_paso\", { rrhh_paso: n });\n    }\n  }\n\n  btnSiguiente.addEventListener(\"click\", () => {\n    if (!validarPaso(pasoActual)) return;\n    if (pasoActual < TOTAL_PASOS) mostrarPaso(pasoActual + 1);\n  });\n\n  btnAnterior.addEventListener(\"click\", () => {\n    if (pasoActual > 1) mostrarPaso(pasoActual - 1);\n  });\n\n  function validarPaso(n) {\n    if (!VALIDAR_CAMPOS_OBLIGATORIOS) return true;\n\n    const pasoEl = pasos.find((s) => Number(s.dataset.paso) === n);\n    let valido = true;\n\n    pasoEl.querySelectorAll(\"input[required], select[required], textarea[required]\").forEach((el) => {\n      if (el.closest(\"[hidden]\")) return;\n      const campo = el.closest(\".rrhh-campo\") || el.closest(\".rrhh-bloque-repetible\");\n      let ok;\n      if (el.type === \"checkbox\") ok = el.checked;\n      else if (el.type === \"radio\") ok = !!pasoEl.querySelector(`input[name=\"${el.name}\"]:checked`);\n      else ok = el.value.trim() !== \"\" && el.checkValidity();\n\n      if (!ok) {\n        valido = false;\n        if (campo) campo.classList.add(\"invalido\");\n      } else if (campo) {\n        campo.classList.remove(\"invalido\");\n      }\n    });\n\n    if (n === 5) {\n      const campoInteres = document.getElementById(\"campoPostulacionInteres\");\n      const cantidad = casillasPostulacionInteres.filter((c) => c.checked).length;\n      const interesOk = cantidad >= 1 && cantidad <= MAX_POSTULACIONES_INTERES;\n      campoInteres.classList.toggle(\"invalido\", !interesOk);\n      if (!interesOk) valido = false;\n    }\n\n    if (n === 7) {\n      const inputCv = document.getElementById(\"archivoCv\");\n      const campoCv = inputCv.closest(\".rrhh-campo\");\n      const archivo = inputCv.files[0];\n      let cvOk = true;\n\n      if (!archivo) cvOk = false;\n      else if (archivo.type !== \"application\/pdf\") cvOk = false;\n      else if (archivo.size > MB_MAXIMO_ARCHIVO * 1024 * 1024) cvOk = false;\n\n      campoCv.classList.toggle(\"invalido\", !cvOk);\n      if (!cvOk) valido = false;\n    }\n\n    return valido;\n  }\n\n  formulario.addEventListener(\"input\", (e) => {\n    const campo = e.target.closest(\".rrhh-campo\") || e.target.closest(\".rrhh-bloque-repetible\");\n    if (campo && campo.classList.contains(\"invalido\")) {\n      const el = e.target;\n      const ok = el.type === \"checkbox\" ? el.checked : el.value.trim() !== \"\" && el.checkValidity();\n      if (ok) campo.classList.remove(\"invalido\");\n    }\n  });\n\n  const detalleExperienciaEncuestas = document.getElementById(\"detalleExperienciaEncuestas\");\n  formulario.querySelectorAll('input[name=\"poseeExperienciaEncuestas\"]').forEach((radio) => {\n    radio.addEventListener(\"change\", () => {\n      detalleExperienciaEncuestas.hidden = radio.value !== \"Si\" || !radio.checked;\n    });\n  });\n\n  const MAX_POSTULACIONES_INTERES = 3;\n  const casillasPostulacionInteres = Array.from(formulario.querySelectorAll('input[name=\"postulacionInteres\"]'));\n  const contenedorPostulacionInteresOtro = document.getElementById(\"contenedorPostulacionInteresOtro\");\n  const inputPostulacionInteresOtro = document.getElementById(\"postulacionInteresOtro\");\n  casillasPostulacionInteres.forEach((casilla) => {\n    casilla.addEventListener(\"change\", () => {\n      const marcadas = casillasPostulacionInteres.filter((c) => c.checked);\n\n      casillasPostulacionInteres.forEach((c) => {\n        c.disabled = !c.checked && marcadas.length >= MAX_POSTULACIONES_INTERES;\n      });\n      const hayOtro = marcadas.some((c) => c.value === \"Otro\");\n      contenedorPostulacionInteresOtro.hidden = !hayOtro;\n      if (VALIDAR_CAMPOS_OBLIGATORIOS) inputPostulacionInteresOtro.required = hayOtro;\n      if (!hayOtro) inputPostulacionInteresOtro.value = \"\";\n      if (marcadas.length) document.getElementById(\"campoPostulacionInteres\").classList.remove(\"invalido\");\n    });\n  });\n\n  formulario.addEventListener(\"reset\", () => {\n    setTimeout(() => {\n      casillasPostulacionInteres.forEach((c) => (c.disabled = false));\n      contenedorPostulacionInteresOtro.hidden = true;\n      const sinExperiencia = document.getElementById(\"sinExperienciaLaboral\");\n      document.getElementById(\"detalleExperienciaLaboral\").hidden = sinExperiencia.checked;\n    }, 0);\n  });\n\n  function leerPostulacionesInteres() {\n    return casillasPostulacionInteres\n      .filter((c) => c.checked)\n      .map((c) => (c.value === \"Otro\" && inputPostulacionInteresOtro.value.trim() !== \"\" ? inputPostulacionInteresOtro.value.trim() : c.value));\n  }\n\n  function crearRepetidor(idContenedor, idPlantilla, idBotonAgregar, opciones) {\n    const contenedor = document.getElementById(idContenedor);\n    const plantilla = document.getElementById(idPlantilla);\n    let cantidad = 0;\n\n    function agregarBloque() {\n      const clon = plantilla.content.cloneNode(true);\n      const bloque = clon.querySelector(\".rrhh-bloque-repetible\");\n      bloque.dataset.indice = cantidad++;\n      bloque.querySelector(\".rrhh-quitar-bloque\").addEventListener(\"click\", () => {\n\n        if (contenedor.querySelectorAll(\".rrhh-bloque-repetible\").length > 1) bloque.remove();\n      });\n      if (opciones && opciones.alCrear) opciones.alCrear(bloque);\n      contenedor.appendChild(bloque);\n    }\n\n    document.getElementById(idBotonAgregar).addEventListener(\"click\", agregarBloque);\n    agregarBloque();\n\n    return {\n      leer() {\n        return Array.from(contenedor.querySelectorAll(\".rrhh-bloque-repetible\")).map((bloque) => {\n          const datos = {};\n          bloque.querySelectorAll(\"[data-campo]\").forEach((el) => {\n            datos[el.dataset.campo] = el.value.trim();\n          });\n          return datos;\n        });\n      }\n    };\n  }\n\n  const repetidorFormacion = crearRepetidor(\"contenedorFormacion\", \"plantillaFormacion\", \"agregarFormacion\", {\n    alCrear(bloque) {\n      const selectNivel = bloque.querySelector('[data-campo=\"nivel\"]');\n      const contenedorCarrera = bloque.querySelector(\"[data-contenedor-carrera]\");\n      const inputCarrera = bloque.querySelector('[data-campo=\"carrera\"]');\n      selectNivel.addEventListener(\"change\", () => {\n        const esSecundario = selectNivel.value === \"Secundario\";\n        contenedorCarrera.hidden = esSecundario;\n        if (esSecundario) inputCarrera.value = \"\";\n      });\n    }\n  });\n\n  const repetidorIdiomas = crearRepetidor(\"contenedorIdiomas\", \"plantillaIdioma\", \"agregarIdioma\", {\n    alCrear(bloque) {\n      const selectIdioma = bloque.querySelector('[data-campo=\"idioma\"]');\n      const contenedorOtro = bloque.querySelector(\"[data-otro-idioma]\");\n      const filaNiveles = bloque.querySelector(\"[data-niveles-idioma]\");\n      selectIdioma.addEventListener(\"change\", () => {\n        contenedorOtro.hidden = selectIdioma.value !== \"Otro\";\n        filaNiveles.hidden = selectIdioma.value === \"\";\n        if (selectIdioma.value === \"\") {\n          filaNiveles.querySelectorAll(\"select\").forEach((s) => (s.value = \"\"));\n        }\n      });\n    }\n  });\n\n  const repetidorRelevamientos = crearRepetidor(\"contenedorRelevamientos\", \"plantillaRelevamiento\", \"agregarRelevamiento\", {\n    alCrear(bloque) {\n      const selectPuesto = bloque.querySelector('[data-campo=\"puestoDesempenado\"]');\n      const contenedorOtro = bloque.querySelector(\"[data-otro-puesto]\");\n      selectPuesto.addEventListener(\"change\", () => {\n        contenedorOtro.hidden = selectPuesto.value !== \"Otro\";\n      });\n    }\n  });\n\n  const repetidorExperiencia = crearRepetidor(\"contenedorExperiencia\", \"plantillaExperiencia\", \"agregarExperiencia\");\n\n  const checkSinExperiencia = document.getElementById(\"sinExperienciaLaboral\");\n  const detalleExperienciaLaboral = document.getElementById(\"detalleExperienciaLaboral\");\n  checkSinExperiencia.addEventListener(\"change\", () => {\n    detalleExperienciaLaboral.hidden = checkSinExperiencia.checked;\n  });\n\n  function esc(texto) {\n    return String(texto === undefined || texto === null ? \"\" : texto)\n      .replace(\/&\/g, \"&amp;\")\n      .replace(\/<\/g, \"&lt;\")\n      .replace(\/>\/g, \"&gt;\")\n      .replace(\/\"\/g, \"&quot;\");\n  }\n\n  function fechaLegible(iso) {\n    const partes = \/^(\\d{4})-(\\d{2})-(\\d{2})$\/.exec(iso || \"\");\n    return partes ? `${partes[3]}\/${partes[2]}\/${partes[1]}` : iso;\n  }\n\n  function mostrarResumen() {\n    const resumen = document.getElementById(\"resumen\");\n    const inputCv = document.getElementById(\"archivoCv\");\n    const nombreCv = inputCv.files[0] ? inputCv.files[0].name : \"(sin adjuntar)\";\n    const poseeExperienciaEncuestas = formulario.querySelector('input[name=\"poseeExperienciaEncuestas\"]:checked');\n    const trabajoEnIdecba = formulario.querySelector('input[name=\"trabajoEnIdecba\"]:checked');\n    const disponibilidad = leerDisponibilidad();\n\n    let html = `\n      <h4>Datos generales<\/h4>\n      <p>${esc(obtenerValor(\"apellido\"))}, ${esc(obtenerValor(\"nombre\"))} \u2014 Fecha de nacimiento: ${esc(fechaLegible(obtenerValor(\"fechaNacimiento\")))}<\/p>\n      <p>DNI ${esc(obtenerValor(\"dni\"))} \u2014 CUIL\/CUIT ${esc(obtenerValor(\"cuil\"))}<\/p>\n      <p>${esc(obtenerValor(\"email\"))} \u2014 Tel: ${esc(obtenerValor(\"telefono\"))} \u2014 Cel: ${esc(obtenerValor(\"celular\"))} ${obtenerValor(\"linkedin\") ? \"\u2014 \" + esc(obtenerValor(\"linkedin\")) : \"\"}<\/p>\n      <p>${esc(armarUbicacionResumen())} \u2014 ${esc(obtenerValor(\"direccion\"))}<\/p>\n      <p>Monotributo: ${esc(obtenerValorRadio(\"monotributo\"))}<\/p>\n      <h4>Formaci\u00f3n acad\u00e9mica<\/h4>\n    `;\n    repetidorFormacion.leer().forEach((f, i) => {\n      const titulo = f.carrera ? `${f.carrera} (${f.nivel}, ${f.estado})` : `${f.nivel} (${f.estado})`;\n      html += `<p>${i + 1}. ${esc(titulo)} \u2014 ${esc(f.institucion)}<\/p>`;\n    });\n\n    html += `<h4>Idiomas<\/h4>`;\n    const idiomasCargados = leerIdiomas();\n    if (!idiomasCargados.length) html += `<p>(no indic\u00f3)<\/p>`;\n    idiomasCargados.forEach((idi, i) => {\n      html += `<p>${i + 1}. ${esc(idi.idioma)} \u2014 oral: ${esc(idi.nivelConversacional)}, escrito: ${esc(idi.nivelEscrito)}<\/p>`;\n    });\n\n    html += `<h4>Experiencia laboral<\/h4>`;\n    if (checkSinExperiencia.checked) html += `<p>Sin experiencia laboral<\/p>`;\n    else repetidorExperiencia.leer().forEach((ex, i) => {\n      html += `<p>${i + 1}. ${esc(ex.puesto)} en ${esc(ex.empresa)} (${esc(ex.desde)} - ${esc(ex.hasta || \"actual\")})`;\n      if (ex.tareas) html += `<br>Tareas: ${esc(ex.tareas)}`;\n      html += `<\/p>`;\n    });\n\n    html += `<h4>Experiencia en encuestas y censos<\/h4>`;\n    html += `<p>\u00bfPosee experiencia?: ${poseeExperienciaEncuestas ? esc(poseeExperienciaEncuestas.value) : \"\"}<\/p>`;\n    if (poseeExperienciaEncuestas && poseeExperienciaEncuestas.value === \"Si\") {\n      leerRelevamientos().forEach((rel, i) => {\n        html += `<p>${i + 1}. ${esc(rel.tipoRelevamiento)} \u2014 ${esc(rel.puestoDesempenado)}<\/p>`;\n      });\n    }\n    html += `<p>\u00bfTrabaj\u00f3 en el IDECBA?: ${trabajoEnIdecba ? esc(trabajoEnIdecba.value) : \"\"}<\/p>`;\n    html += `<p>Postulaci\u00f3n de inter\u00e9s: ${esc(leerPostulacionesInteres().join(\", \"))}<\/p>`;\n\n    html += `<h4>Disponibilidad horaria<\/h4><p>${disponibilidad.length ? esc(disponibilidad.join(\", \")) : \"(no indic\u00f3)\"}<\/p>`;\n\n    html += `<h4>CV<\/h4><p>${esc(nombreCv)}<\/p>`;\n\n    resumen.innerHTML = html;\n  }\n\n  function leerMarcados(nombre) {\n    return Array.from(formulario.querySelectorAll(`input[name=\"${nombre}\"]:checked`)).map((c) => c.value);\n  }\n\n  function leerDisponibilidad() {\n    return leerMarcados(\"disponibilidad\");\n  }\n\n  function leerRelevamientos() {\n    return repetidorRelevamientos.leer()\n      .map((rel) => ({\n        tipoRelevamiento: rel.tipoRelevamiento,\n        puestoDesempenado: rel.puestoDesempenado === \"Otro\" ? rel.puestoDesempenadoOtro : rel.puestoDesempenado\n      }))\n      .filter((rel) => rel.tipoRelevamiento !== \"\" || rel.puestoDesempenado !== \"\");\n  }\n\n  function leerIdiomas() {\n    return repetidorIdiomas.leer()\n      .map((idi) => ({\n        idioma: idi.idioma === \"Otro\" ? idi.idiomaOtro : idi.idioma,\n        nivelConversacional: idi.nivelConversacional,\n        nivelEscrito: idi.nivelEscrito\n      }))\n      .filter((idi) => idi.idioma !== \"\");\n  }\n\n  function obtenerProvincia() {\n    const valor = obtenerValor(\"provincia\");\n    if (valor === \"CABA\") return \"Ciudad Aut\u00f3noma de Buenos Aires\";\n    if (valor === \"BA\") return \"Buenos Aires\";\n    if (valor === \"OTRA\") return obtenerValor(\"provinciaOtra\");\n    return \"\";\n  }\n\n  function armarUbicacionResumen() {\n    const valor = obtenerValor(\"provincia\");\n    if (valor === \"CABA\") return `${obtenerProvincia()} \u2014 ${obtenerValor(\"comuna\")} \u2014 ${obtenerValor(\"barrio\")}`;\n    if (valor === \"BA\") return `${obtenerProvincia()} \u2014 Partido: ${obtenerValor(\"partido\")}`;\n    return obtenerProvincia();\n  }\n\n  function obtenerValorRadio(nombre) {\n    const marcado = formulario.querySelector(`input[name=\"${nombre}\"]:checked`);\n    return marcado ? marcado.value : \"\";\n  }\n\n  function obtenerValor(id) {\n    const el = document.getElementById(id);\n    return el ? el.value : \"\";\n  }\n\n  function archivoABase64(archivo) {\n    return new Promise((resolve, reject) => {\n      const lector = new FileReader();\n      lector.onload = () => resolve(lector.result.split(\",\")[1]);\n      lector.onerror = reject;\n      lector.readAsDataURL(archivo);\n    });\n  }\n\n  function obtenerTokenRecaptcha() {\n    return new Promise((resolve, reject) => {\n      if (typeof grecaptcha === \"undefined\") {\n\n        resolve(\"\");\n        return;\n      }\n      grecaptcha.ready(() => {\n        grecaptcha.execute(RECAPTCHA_SITE_KEY, { action: \"postulacion_rrhh\" })\n          .then(resolve)\n          .catch(() => resolve(\"\"));\n      });\n    });\n  }\n\n  let idEnvio = null;\n  function generarIdEnvio() {\n    if (window.crypto && crypto.randomUUID) return crypto.randomUUID();\n    return Date.now().toString(36) + \"-\" + Math.random().toString(36).slice(2, 10);\n  }\n\n  function errorDeEnvio(codigo, detalle) {\n    const error = new Error(`${codigo}: ${detalle && detalle.message ? detalle.message : detalle || \"\"}`);\n    error.codigo = codigo;\n    error.detalle = String((detalle && detalle.message) || detalle || \"\");\n    return error;\n  }\n\n  async function enviarAPlanillaUnaVez(paquete) {\n    let respuesta;\n    try {\n      respuesta = await fetch(URL_PLANILLA, {\n        method: \"POST\",\n\n        headers: { \"Content-Type\": \"text\/plain;charset=utf-8\" },\n        body: JSON.stringify(paquete)\n      });\n    } catch (err) {\n      throw errorDeEnvio(\"RED\", err);\n    }\n\n    let resultado;\n    try {\n      resultado = await respuesta.json();\n    } catch (err) {\n      throw errorDeEnvio(\"RESPUESTA\", err);\n    }\n    if (resultado.ok !== true) throw errorDeEnvio(\"SERVIDOR\", resultado.error);\n    return true;\n  }\n\n  async function enviarAPlanilla(paquete) {\n    try {\n      return await enviarAPlanillaUnaVez(paquete);\n    } catch (err) {\n      if (err.codigo === \"SERVIDOR\") throw err;\n      console.warn(\"No se pudo leer la respuesta de la planilla, se reintenta una vez\", err);\n      await new Promise((r) => setTimeout(r, 3000));\n      const recaptchaToken = await obtenerTokenRecaptcha();\n      return await enviarAPlanillaUnaVez({ ...paquete, recaptchaToken });\n    }\n  }\n\n  formulario.addEventListener(\"submit\", async (e) => {\n    e.preventDefault();\n\n    if (!validarPaso(7) || !validarPaso(8)) {\n      mostrarPaso(!validarPaso(7) ? 7 : 8);\n      return;\n    }\n\n    const trampaBots = formulario.querySelector('input[name=\"sitioWeb\"]').value;\n    if (trampaBots) return;\n\n    const mensajeEnvio = document.getElementById(\"mensajeEnvio\");\n    btnEnviar.disabled = true;\n    mensajeEnvio.textContent = \"Enviando postulaci\u00f3n\u2026\";\n    mensajeEnvio.className = \"rrhh-mensaje-envio cargando\";\n\n    try {\n      const archivoCv = document.getElementById(\"archivoCv\").files[0];\n      const cvEnBase64 = archivoCv ? await archivoABase64(archivoCv) : \"\";\n      const poseeExperienciaEncuestas = obtenerValorRadio(\"poseeExperienciaEncuestas\");\n      const recaptchaToken = await obtenerTokenRecaptcha();\n      if (!idEnvio) idEnvio = generarIdEnvio();\n\n      const datos = {\n        idEnvio,\n        recaptchaToken,\n        datosGenerales: {\n          apellido: obtenerValor(\"apellido\"),\n          nombre: obtenerValor(\"nombre\"),\n          fechaNacimiento: obtenerValor(\"fechaNacimiento\"),\n          dni: obtenerValor(\"dni\"),\n          cuil: obtenerValor(\"cuil\"),\n          monotributo: obtenerValorRadio(\"monotributo\"),\n          email: obtenerValor(\"email\"),\n          telefono: obtenerValor(\"telefono\"),\n          celular: obtenerValor(\"celular\"),\n          linkedin: obtenerValor(\"linkedin\"),\n          provincia: obtenerProvincia(),\n          comuna: obtenerValor(\"provincia\") === \"CABA\" ? obtenerValor(\"comuna\") : \"\",\n          barrio: obtenerValor(\"provincia\") === \"CABA\" ? obtenerValor(\"barrio\") : \"\",\n          partido: obtenerValor(\"provincia\") === \"BA\" ? obtenerValor(\"partido\") : \"\",\n          direccion: obtenerValor(\"direccion\")\n        },\n        formacionAcademica: repetidorFormacion.leer(),\n        idiomas: leerIdiomas(),\n        sinExperienciaLaboral: checkSinExperiencia.checked,\n        experienciaLaboral: checkSinExperiencia.checked ? [] : repetidorExperiencia.leer(),\n        experienciaEncuestasCensos: {\n          poseeExperiencia: poseeExperienciaEncuestas,\n          relevamientos: poseeExperienciaEncuestas === \"Si\" ? leerRelevamientos() : [],\n          trabajoEnIdecba: obtenerValorRadio(\"trabajoEnIdecba\"),\n          postulacionInteres: leerPostulacionesInteres()\n        },\n        disponibilidadHoraria: leerDisponibilidad(),\n        cv: archivoCv ? {\n          nombreArchivo: archivoCv.name,\n          tipo: archivoCv.type,\n          base64: cvEnBase64\n        } : null\n      };\n\n      const datosPlanilla = { ...datos, token: TOKEN_PLANILLA };\n\n      console.log(\"Datos de la postulaci\u00f3n:\", {\n        ...datos,\n        cv: datos.cv ? { ...datos.cv, base64: `(${datos.cv.base64.length} caracteres)` } : null\n      });\n\n      const destinos = [];\n\n      if (ENVIAR_A_WEBHOOK) {\n        destinos.push({\n          nombre: \"webhook de Gustavo\",\n          critico: true,\n          envio: fetch(URL_WEBHOOK, {\n            method: \"POST\",\n            headers: { \"Content-Type\": \"application\/json\" },\n            body: JSON.stringify(datos)\n          }).then((respuesta) => respuesta.ok)\n        });\n      }\n\n      if (ENVIAR_A_PLANILLA) {\n        destinos.push({\n          nombre: \"planilla\",\n\n          critico: !ENVIAR_A_WEBHOOK,\n          envio: enviarAPlanilla(datosPlanilla)\n        });\n      }\n\n      if (!destinos.length) {\n        await new Promise((r) => setTimeout(r, 800));\n        mensajeEnvio.textContent = \"[MODO PRUEBA] Datos armados correctamente. Revis\u00e1 la consola (F12).\";\n        mensajeEnvio.className = \"rrhh-mensaje-envio exito\";\n      } else {\n        const resultados = await Promise.allSettled(destinos.map((d) => d.envio));\n        let falloAlgoCritico = false;\n        let falloDelEnvio = null;\n\n        resultados.forEach((resultado, i) => {\n          const destino = destinos[i];\n          if (resultado.status === \"fulfilled\" && resultado.value === true) return;\n          console.warn(`Fall\u00f3 el env\u00edo a: ${destino.nombre}`, resultado);\n          if (destino.critico) {\n            falloAlgoCritico = true;\n            falloDelEnvio = resultado.reason || null;\n          }\n        });\n\n        if (falloAlgoCritico) throw falloDelEnvio || new Error(\"No se pudo enviar la postulaci\u00f3n\");\n\n        mensajeEnvio.textContent = \"\u00a1Postulaci\u00f3n enviada con \u00e9xito!\";\n        mensajeEnvio.className = \"rrhh-mensaje-envio exito\";\n        medir(\"rrhh_form_envio_ok\");\n        idEnvio = null;\n        formulario.reset();\n      }\n    } catch (err) {\n      console.error(err);\n      const codigo = err && err.codigo;\n      medir(\"rrhh_form_envio_error\", { rrhh_codigo_error: codigo || \"OTRO\" });\n      if (codigo === \"RED\" || codigo === \"RESPUESTA\") {\n        mensajeEnvio.textContent = `No pudimos confirmar que tu postulaci\u00f3n se envi\u00f3 (c\u00f3digo ${codigo}). Es posible que s\u00ed haya llegado. Pod\u00e9s volver a enviarla: no se duplicar\u00e1.`;\n      } else if (codigo === \"SERVIDOR\" && \/recaptcha\/i.test(err.detalle)) {\n        mensajeEnvio.textContent = \"No pudimos verificar que sos una persona. Recarg\u00e1 la p\u00e1gina e intent\u00e1 de nuevo.\";\n      } else {\n        mensajeEnvio.textContent = `Ocurri\u00f3 un error al enviar${codigo ? \" (c\u00f3digo \" + codigo + \")\" : \"\"}. Intent\u00e1 nuevamente.`;\n      }\n      mensajeEnvio.className = \"rrhh-mensaje-envio error\";\n      btnEnviar.disabled = false;\n    }\n  });\n\n  [\"input\", \"change\"].forEach((tipo) => {\n    formulario.addEventListener(tipo, () => {\n      if (inicioMedido) return;\n      inicioMedido = true;\n      medir(\"rrhh_form_inicio\");\n    });\n  });\n\n  mostrarPaso(1);\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u00bfQuer\u00e9s trabajar con nosotros? En el IDECBA realizamos censos, encuestas y proyectos, para la producci\u00f3n de estad\u00edsticas oficiales sobre la realidad econ\u00f3mica, social y&#46;&#46;&#46;<\/p>\n","protected":false},"author":40,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"class_list":["post-197536","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/pages\/197536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/comments?post=197536"}],"version-history":[{"count":56,"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/pages\/197536\/revisions"}],"predecessor-version":[{"id":199066,"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/pages\/197536\/revisions\/199066"}],"wp:attachment":[{"href":"https:\/\/www.estadisticaciudad.gob.ar\/eyc\/wp-json\/wp\/v2\/media?parent=197536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}