{"id":5893,"date":"2026-07-20T12:25:23","date_gmt":"2026-07-20T16:25:23","guid":{"rendered":"https:\/\/geolabs.cloud\/?p=5893"},"modified":"2026-07-23T09:02:16","modified_gmt":"2026-07-23T13:02:16","slug":"developer","status":"publish","type":"post","link":"https:\/\/geolabs.cloud\/en\/developer\/","title":{"rendered":"Oportunidades en Geolabs Cloud"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"5893\" class=\"elementor elementor-5893\" data-elementor-post-type=\"post\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-4cddba2 e-con-full e-flex e-con e-parent\" data-id=\"4cddba2\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-86e9550 elementor-widget elementor-widget-html\" data-id=\"86e9550\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  \/* =========================================================\r\n     VACANTE GEOLABS CLOUD \u2014 Desarrollador Fullstack\r\n     Pegar todo este bloque en un widget HTML de Elementor\r\n     ========================================================= *\/\r\n\r\n  .geolabs-job-page,\r\n  .geolabs-job-page * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  \/* El tema\/Elementor a veces mete padding o margin alrededor del widget\r\n     HTML (l\u00ednea fina visible arriba de la foto). Esto lo anula. *\/\r\n  .geolabs-job-page {\r\n    margin: 0;\r\n  }\r\n\r\n  .elementor-widget-container:has(> .geolabs-job-page),\r\n  .elementor-element:has(> .elementor-widget-container > .geolabs-job-page) {\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n  }\r\n\r\n  .geolabs-job-page {\r\n    --geo-accent: #08b7a4;\r\n    --geo-accent-dark: #069d89;\r\n    --geo-accent-light: #55c8bc;\r\n    --geo-background: #080b0d;\r\n    --geo-surface: #101517;\r\n    --geo-surface-light: #151c1f;\r\n    --geo-border: rgba(255, 255, 255, 0.1);\r\n    --geo-text: #f7f8f8;\r\n    --geo-muted: #b8c0c3;\r\n\r\n    width: 100%;\r\n    color: var(--geo-text);\r\n    background:\r\n      radial-gradient(\r\n        circle at 85% 10%,\r\n        rgba(8, 183, 164, 0.13),\r\n        transparent 30%\r\n      ),\r\n      var(--geo-background);\r\n    font-family: \"Poppins\", \"Inter\", Arial, sans-serif;\r\n  }\r\n\r\n  .geolabs-job-container {\r\n    width: min(1320px, calc(100% - 40px));\r\n    margin: 0 auto;\r\n  }\r\n\r\n  \/* =========================\r\n     REVEAL AL HACER SCROLL\r\n     ========================= *\/\r\n\r\n  .geolabs-reveal {\r\n    opacity: 0;\r\n    transform: translateY(22px);\r\n    transition: opacity 0.7s ease, transform 0.7s ease;\r\n  }\r\n\r\n  .geolabs-reveal.is-visible {\r\n    opacity: 1;\r\n    transform: translateY(0);\r\n  }\r\n\r\n  .geolabs-job-grid .geolabs-reveal:nth-child(2),\r\n  .geolabs-job-extra-grid .geolabs-reveal:nth-child(2),\r\n  .geolabs-job-values-grid .geolabs-reveal:nth-child(2) {\r\n    transition-delay: 0.08s;\r\n  }\r\n\r\n  .geolabs-job-grid .geolabs-reveal:nth-child(3),\r\n  .geolabs-job-extra-grid .geolabs-reveal:nth-child(3),\r\n  .geolabs-job-values-grid .geolabs-reveal:nth-child(3) {\r\n    transition-delay: 0.16s;\r\n  }\r\n\r\n  .geolabs-job-grid .geolabs-reveal:nth-child(4),\r\n  .geolabs-job-values-grid .geolabs-reveal:nth-child(4) {\r\n    transition-delay: 0.24s;\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .geolabs-reveal {\r\n      opacity: 1;\r\n      transform: none;\r\n      transition: none;\r\n    }\r\n  }\r\n\r\n  \/* =========================\r\n     HERO VISUAL\r\n     ========================= *\/\r\n\r\n  html {\r\n    scroll-behavior: smooth;\r\n  }\r\n\r\n  .geolabs-opportunity-hero {\r\n    display: flex;\r\n    flex-direction: column;\r\n    width: 100%;\r\n    background: var(--geo-background);\r\n    isolation: isolate;\r\n  }\r\n\r\n  \/* La altura ya NO es fija: el contenedor sigue la proporci\u00f3n real de la\r\n     imagen, as\u00ed que nunca se recorta, sin importar el ancho de pantalla *\/\r\n  .geolabs-opportunity-media {\r\n    position: relative;\r\n    width: 100%;\r\n    overflow: hidden;\r\n    line-height: 0;\r\n    background: #050708;\r\n  }\r\n\r\n  .geolabs-opportunity-media picture {\r\n    display: block;\r\n  }\r\n\r\n  .geolabs-opportunity-image {\r\n    display: block;\r\n    width: 100%;\r\n    height: auto;\r\n  }\r\n\r\n  \/* R\u00f3tulo grande \u2014 oculto por defecto, solo aparece en mobile (ver media query abajo) *\/\r\n  .geolabs-opportunity-legend {\r\n    display: none;\r\n    position: absolute;\r\n    inset: 0;\r\n    z-index: 2;\r\n    flex-direction: column;\r\n    justify-content: flex-end;\r\n    padding: 34px 22px 30px;\r\n    background: linear-gradient(\r\n      180deg,\r\n      rgba(4, 7, 8, 0) 0%,\r\n      rgba(4, 7, 8, 0.32) 38%,\r\n      rgba(4, 7, 8, 0.94) 100%\r\n    );\r\n  }\r\n\r\n  .geolabs-opportunity-legend-title {\r\n    margin: 0 0 16px;\r\n    color: #ffffff;\r\n    font-weight: 800;\r\n    font-size: clamp(28px, 9vw, 44px);\r\n    line-height: 1.08;\r\n    letter-spacing: -0.01em;\r\n    text-transform: uppercase;\r\n    overflow-wrap: break-word;\r\n    word-break: break-word;\r\n  }\r\n\r\n  .geolabs-opportunity-legend-tag {\r\n    display: inline-block;\r\n    width: fit-content;\r\n    margin-bottom: 28px;\r\n    padding: 11px 18px;\r\n    border: 1px solid rgba(255, 255, 255, 0.35);\r\n    border-radius: 999px;\r\n    background: rgba(255, 255, 255, 0.14);\r\n    backdrop-filter: blur(10px);\r\n    -webkit-backdrop-filter: blur(10px);\r\n    color: #ffffff;\r\n    font-size: 12.5px;\r\n    font-weight: 700;\r\n    letter-spacing: 0.05em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .geolabs-opportunity-legend-stats {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, minmax(0, 1fr));\r\n    gap: 10px;\r\n  }\r\n\r\n  .geolabs-opportunity-legend-stat {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    gap: 8px;\r\n    text-align: center;\r\n    color: rgba(255, 255, 255, 0.82);\r\n    font-size: 10.5px;\r\n    font-weight: 600;\r\n    line-height: 1.3;\r\n  }\r\n\r\n  .geolabs-opportunity-legend-stat svg {\r\n    width: 22px;\r\n    height: 22px;\r\n    color: var(--geo-accent-light);\r\n  }\r\n\r\n  \/* Vi\u00f1eteado suave en los bordes + degradado final que se funde con el\r\n     color s\u00f3lido de la franja inferior, para que la transici\u00f3n sea un\r\n     gradiente y no un corte duro *\/\r\n  .geolabs-opportunity-shade {\r\n    position: absolute;\r\n    inset: 0;\r\n    z-index: 1;\r\n    pointer-events: none;\r\n    background:\r\n      linear-gradient(\r\n        180deg,\r\n        rgba(4, 7, 8, 0.16) 0%,\r\n        rgba(4, 7, 8, 0) 20%,\r\n        rgba(4, 7, 8, 0) 82%,\r\n        var(--geo-background) 100%\r\n      ),\r\n      linear-gradient(\r\n        90deg,\r\n        rgba(4, 7, 8, 0.1),\r\n        transparent 22%,\r\n        transparent 78%,\r\n        rgba(4, 7, 8, 0.1)\r\n      );\r\n  }\r\n\r\n  \/* La franja con el texto ahora va DEBAJO de la foto, no encima.\r\n     Sin borde: el degradado de arriba ya hace la transici\u00f3n. *\/\r\n  .geolabs-opportunity-bottom {\r\n    position: relative;\r\n    z-index: 3;\r\n    padding: 30px 0;\r\n    background: var(--geo-background);\r\n  }\r\n\r\n  .geolabs-opportunity-bottom-inner {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    gap: 30px;\r\n  }\r\n\r\n  .geolabs-opportunity-caption {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 15px;\r\n    max-width: 620px;\r\n  }\r\n\r\n  .geolabs-opportunity-caption-dot {\r\n    width: 12px;\r\n    height: 12px;\r\n    flex-shrink: 0;\r\n    border-radius: 50%;\r\n    background: var(--geo-accent);\r\n    box-shadow:\r\n      0 0 0 7px rgba(8, 183, 164, 0.12),\r\n      0 0 26px rgba(8, 183, 164, 0.75);\r\n  }\r\n\r\n  .geolabs-opportunity-small {\r\n    display: block;\r\n    margin-bottom: 5px;\r\n    color: var(--geo-accent-light);\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    letter-spacing: 0.13em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .geolabs-opportunity-caption strong {\r\n    display: block;\r\n    color: #ffffff;\r\n    font-size: clamp(16px, 1.7vw, 21px);\r\n    line-height: 1.4;\r\n    font-weight: 600;\r\n    letter-spacing: -0.015em;\r\n  }\r\n\r\n  .geolabs-opportunity-caption-break {\r\n    display: none;\r\n  }\r\n\r\n  .geolabs-scroll-button {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 13px;\r\n    flex-shrink: 0;\r\n    color: #ffffff !important;\r\n    text-decoration: none !important;\r\n    font-size: 14px;\r\n    font-weight: 650;\r\n    transition:\r\n      color 0.25s ease,\r\n      transform 0.25s ease;\r\n  }\r\n\r\n  .geolabs-scroll-button:hover {\r\n    color: var(--geo-accent-light) !important;\r\n    transform: translateY(2px);\r\n  }\r\n\r\n  .geolabs-scroll-button-icon {\r\n    width: 48px;\r\n    height: 48px;\r\n    display: grid;\r\n    place-items: center;\r\n    border: 1px solid rgba(255, 255, 255, 0.23);\r\n    border-radius: 50%;\r\n    background: rgba(10, 15, 17, 0.68);\r\n    color: var(--geo-accent-light);\r\n    box-shadow:\r\n      inset 0 0 0 1px rgba(8, 183, 164, 0.05),\r\n      0 12px 30px rgba(0, 0, 0, 0.28);\r\n    backdrop-filter: blur(12px);\r\n    -webkit-backdrop-filter: blur(12px);\r\n    animation: geolabs-arrow-float 2.1s ease-in-out infinite;\r\n  }\r\n\r\n  .geolabs-scroll-button-icon svg {\r\n    width: 22px;\r\n    height: 22px;\r\n  }\r\n\r\n  @keyframes geolabs-arrow-float {\r\n    0%,\r\n    100% {\r\n      transform: translateY(-2px);\r\n    }\r\n\r\n    50% {\r\n      transform: translateY(4px);\r\n    }\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .geolabs-opportunity-legend {\r\n      display: flex;\r\n    }\r\n\r\n    .geolabs-opportunity-bottom {\r\n      padding: 22px 0;\r\n    }\r\n\r\n    .geolabs-opportunity-bottom-inner {\r\n      align-items: center;\r\n      gap: 14px;\r\n    }\r\n\r\n    .geolabs-opportunity-caption {\r\n      gap: 12px;\r\n      max-width: calc(100% - 62px);\r\n    }\r\n\r\n    .geolabs-opportunity-caption strong {\r\n      font-size: 15px;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    .geolabs-opportunity-caption-dash {\r\n      display: none;\r\n    }\r\n\r\n    .geolabs-opportunity-caption-break {\r\n      display: block;\r\n    }\r\n\r\n    .geolabs-opportunity-small {\r\n      font-size: 9px;\r\n    }\r\n\r\n    .geolabs-scroll-button-text {\r\n      display: none;\r\n    }\r\n\r\n    .geolabs-scroll-button-icon {\r\n      width: 46px;\r\n      height: 46px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 480px) {\r\n    .geolabs-opportunity-caption-dot {\r\n      width: 9px;\r\n      height: 9px;\r\n    }\r\n\r\n    .geolabs-opportunity-caption strong {\r\n      font-size: 13px;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    html {\r\n      scroll-behavior: auto;\r\n    }\r\n\r\n    .geolabs-scroll-button-icon {\r\n      animation: none;\r\n    }\r\n  }\r\n\r\n  \/* =========================\r\n     PRESENTACI\u00d3N\r\n     ========================= *\/\r\n\r\n  .geolabs-job-main {\r\n    padding: 80px 0 100px;\r\n  }\r\n\r\n  .geolabs-job-layout {\r\n    display: grid;\r\n    grid-template-columns: 1fr;\r\n    align-items: start;\r\n    gap: 70px;\r\n  }\r\n\r\n  .geolabs-job-main-col {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 40px;\r\n    min-width: 0;\r\n  }\r\n\r\n  .geolabs-job-side-col {\r\n    min-width: 0;\r\n  }\r\n\r\n  \/* A partir de ac\u00e1 hay espacio real para una segunda columna: el CTA\r\n     queda siempre visible (sticky) mientras se hace scroll al contenido,\r\n     compensando un header fijo de ~75px, y el bot\u00f3n flotante deja de\r\n     hacer falta en desktop porque el CTA ya est\u00e1 siempre a la vista. *\/\r\n  @media (min-width: 1160px) {\r\n    .geolabs-job-layout {\r\n      grid-template-columns: minmax(0, 1fr) 340px;\r\n      gap: 44px;\r\n    }\r\n\r\n    .geolabs-job-side-col {\r\n      position: sticky;\r\n      top: 95px;\r\n      align-self: start;\r\n    }\r\n\r\n    .geolabs-job-side-col .geolabs-job-cta {\r\n      padding: 40px 28px;\r\n      text-align: left;\r\n    }\r\n\r\n    .geolabs-job-side-col .geolabs-job-cta-content {\r\n      max-width: none;\r\n      margin: 0;\r\n    }\r\n\r\n    .geolabs-job-side-col .geolabs-job-cta-title {\r\n      font-size: 28px;\r\n    }\r\n\r\n    .geolabs-job-side-col .geolabs-job-cta-text {\r\n      max-width: none;\r\n      margin: 14px 0 0;\r\n      font-size: 15px;\r\n    }\r\n\r\n    .geolabs-job-side-col .geolabs-job-cta-actions {\r\n      justify-content: flex-start;\r\n    }\r\n\r\n    .geolabs-job-side-col .geolabs-job-button {\r\n      width: 100%;\r\n      justify-content: center;\r\n    }\r\n\r\n    .geolabs-job-side-col .geolabs-job-email {\r\n      text-align: left;\r\n    }\r\n\r\n    .geolabs-float-cta {\r\n      display: none !important;\r\n    }\r\n  }\r\n\r\n  .geolabs-job-intro-grid {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);\r\n    align-items: start;\r\n    gap: 70px;\r\n  }\r\n\r\n  .geolabs-job-section-label {\r\n    display: block;\r\n    margin-bottom: 15px;\r\n    color: var(--geo-accent);\r\n    font-size: 13px;\r\n    font-weight: 700;\r\n    letter-spacing: 0.12em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .geolabs-job-section-title {\r\n    margin: 0;\r\n    color: #ffffff;\r\n    font-size: clamp(31px, 4vw, 49px);\r\n    line-height: 1.12;\r\n    letter-spacing: -0.035em;\r\n  }\r\n\r\n  .geolabs-job-lead {\r\n    margin: 0;\r\n    color: var(--geo-muted);\r\n    font-size: 17px;\r\n    line-height: 1.75;\r\n  }\r\n\r\n  .geolabs-job-lead strong {\r\n    color: #ffffff;\r\n  }\r\n\r\n  \/* =========================\r\n     CONTENIDO\r\n     ========================= *\/\r\n\r\n  .geolabs-job-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    gap: 24px;\r\n  }\r\n\r\n  .geolabs-job-card {\r\n    position: relative;\r\n    padding: 36px;\r\n    overflow: hidden;\r\n    border: 1px solid var(--geo-border);\r\n    border-radius: 24px;\r\n    background:\r\n      linear-gradient(\r\n        145deg,\r\n        rgba(255, 255, 255, 0.045),\r\n        rgba(255, 255, 255, 0.01)\r\n      ),\r\n      var(--geo-surface);\r\n    transition:\r\n      transform 0.3s ease,\r\n      border-color 0.3s ease,\r\n      background-color 0.3s ease;\r\n  }\r\n\r\n  .geolabs-job-card:hover {\r\n    transform: translateY(-5px);\r\n    border-color: rgba(8, 183, 164, 0.4);\r\n  }\r\n\r\n  .geolabs-job-card::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: -75px;\r\n    right: -75px;\r\n    width: 180px;\r\n    height: 180px;\r\n    border-radius: 50%;\r\n    background: rgba(8, 183, 164, 0.09);\r\n    filter: blur(5px);\r\n    pointer-events: none;\r\n  }\r\n\r\n  \/* Numeral gigante \"fantasma\" detr\u00e1s de cada tarjeta \u2014 sustituye al\r\n     badge chico como elemento decorativo principal *\/\r\n  .geolabs-job-card::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: -18px;\r\n    right: 18px;\r\n    z-index: 0;\r\n    font-size: 118px;\r\n    font-weight: 800;\r\n    line-height: 1;\r\n    letter-spacing: -0.04em;\r\n    color: rgba(255, 255, 255, 0.045);\r\n    pointer-events: none;\r\n    user-select: none;\r\n  }\r\n\r\n  .geolabs-job-grid > .geolabs-job-card:nth-child(1)::before {\r\n    content: \"01\";\r\n  }\r\n\r\n  .geolabs-job-grid > .geolabs-job-card:nth-child(2)::before {\r\n    content: \"02\";\r\n  }\r\n\r\n  .geolabs-job-grid > .geolabs-job-card:nth-child(3)::before {\r\n    content: \"03\";\r\n  }\r\n\r\n  .geolabs-job-grid > .geolabs-job-card:nth-child(4)::before {\r\n    content: \"04\";\r\n  }\r\n\r\n  .geolabs-job-card-wide {\r\n    grid-column: 1 \/ -1;\r\n  }\r\n\r\n  .geolabs-job-card-header {\r\n    position: relative;\r\n    z-index: 1;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 16px;\r\n    margin-bottom: 24px;\r\n  }\r\n\r\n  .geolabs-job-card-number {\r\n    width: 50px;\r\n    height: 50px;\r\n    display: grid;\r\n    place-items: center;\r\n    flex-shrink: 0;\r\n    border-radius: 15px;\r\n    background: linear-gradient(\r\n      145deg,\r\n      rgba(8, 183, 164, 0.3),\r\n      rgba(8, 183, 164, 0.08)\r\n    );\r\n    border: 1px solid rgba(8, 183, 164, 0.4);\r\n    color: #ffffff;\r\n    font-size: 14px;\r\n    font-weight: 800;\r\n    letter-spacing: 0.02em;\r\n    box-shadow:\r\n      0 0 0 4px rgba(8, 183, 164, 0.07),\r\n      0 10px 22px rgba(8, 183, 164, 0.2);\r\n  }\r\n\r\n  .geolabs-job-card-title {\r\n    margin: 0;\r\n    color: #ffffff;\r\n    font-size: 23px;\r\n    line-height: 1.25;\r\n    letter-spacing: -0.02em;\r\n  }\r\n\r\n  .geolabs-job-list {\r\n    position: relative;\r\n    z-index: 1;\r\n    list-style: none;\r\n    margin: 0;\r\n    padding: 0;\r\n    display: grid;\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    gap: 0 32px;\r\n  }\r\n\r\n  .geolabs-job-list li {\r\n    position: relative;\r\n    margin-bottom: 16px;\r\n    padding-left: 30px;\r\n    color: var(--geo-muted);\r\n    font-size: 15.5px;\r\n    line-height: 1.6;\r\n  }\r\n\r\n  .geolabs-job-list li:last-child {\r\n    margin-bottom: 0;\r\n  }\r\n\r\n  .geolabs-job-list li::before {\r\n    content: \"\u2713\";\r\n    position: absolute;\r\n    top: 2px;\r\n    left: 0;\r\n    width: 20px;\r\n    height: 20px;\r\n    display: grid;\r\n    place-items: center;\r\n    border-radius: 50%;\r\n    background: rgba(8, 183, 164, 0.12);\r\n    color: var(--geo-accent);\r\n    font-size: 12px;\r\n    font-weight: 800;\r\n  }\r\n\r\n  .geolabs-job-list strong {\r\n    color: #f4f7f7;\r\n    font-weight: 600;\r\n  }\r\n\r\n  .geolabs-job-values-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, minmax(0, 1fr));\r\n    gap: 15px;\r\n  }\r\n\r\n  .geolabs-job-value {\r\n    position: relative;\r\n    overflow: hidden;\r\n    min-height: 140px;\r\n    padding: 24px 22px 22px;\r\n    border: 1px solid var(--geo-border);\r\n    border-radius: 18px;\r\n    background: rgba(255, 255, 255, 0.025);\r\n    transition:\r\n      transform 0.3s ease,\r\n      border-color 0.3s ease,\r\n      background-color 0.3s ease,\r\n      box-shadow 0.3s ease;\r\n  }\r\n\r\n  .geolabs-job-value::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    right: 0;\r\n    height: 3px;\r\n    background: linear-gradient(90deg, var(--geo-accent), var(--geo-accent-light));\r\n    opacity: 0.5;\r\n    transition: opacity 0.3s ease;\r\n  }\r\n\r\n  .geolabs-job-value::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: -38px;\r\n    right: -38px;\r\n    width: 100px;\r\n    height: 100px;\r\n    border-radius: 50%;\r\n    background: rgba(8, 183, 164, 0.1);\r\n    filter: blur(4px);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .geolabs-job-value:hover {\r\n    transform: translateY(-4px);\r\n    border-color: rgba(8, 183, 164, 0.35);\r\n    background: rgba(8, 183, 164, 0.05);\r\n    box-shadow: 0 16px 32px rgba(0, 0, 0, 0.25);\r\n  }\r\n\r\n  .geolabs-job-value:hover::before {\r\n    opacity: 1;\r\n  }\r\n\r\n  .geolabs-job-value-title {\r\n    position: relative;\r\n    z-index: 1;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 9px;\r\n    margin-bottom: 8px;\r\n    color: #ffffff;\r\n    font-size: 15px;\r\n    font-weight: 700;\r\n  }\r\n\r\n  .geolabs-job-value-title::before {\r\n    content: \"\";\r\n    flex-shrink: 0;\r\n    width: 16px;\r\n    height: 3px;\r\n    border-radius: 2px;\r\n    background: var(--geo-accent);\r\n  }\r\n\r\n  .geolabs-job-value-text {\r\n    position: relative;\r\n    z-index: 1;\r\n    margin: 0;\r\n    color: var(--geo-muted);\r\n    font-size: 13.5px;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  \/* =========================\r\n     CTA FINAL\r\n     ========================= *\/\r\n\r\n  #geolabs-postulacion {\r\n    \/* Ajusta este valor a la altura real del header pegajoso de tu tema\r\n       (o del admin bar de WordPress), si tienes uno. Sin esto, el ancla\r\n       alinea el borde superior justo con el borde superior de la ventana,\r\n       y un header fijo por encima lo tapa. Solo importa en mobile, que es\r\n       donde este ancla todav\u00eda se usa para el scroll. *\/\r\n    scroll-margin-top: 96px;\r\n  }\r\n\r\n  .geolabs-job-cta {\r\n    position: relative;\r\n    overflow: hidden;\r\n    padding: 70px 55px;\r\n    border: 1px solid rgba(8, 183, 164, 0.32);\r\n    border-radius: 30px;\r\n    background:\r\n      radial-gradient(\r\n        circle at 90% 20%,\r\n        rgba(8, 183, 164, 0.32),\r\n        transparent 35%\r\n      ),\r\n      linear-gradient(\r\n        135deg,\r\n        rgba(8, 183, 164, 0.14),\r\n        rgba(255, 255, 255, 0.025)\r\n      ),\r\n      var(--geo-surface);\r\n    text-align: center;\r\n  }\r\n\r\n  .geolabs-job-cta::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 50%;\r\n    bottom: -180px;\r\n    width: 500px;\r\n    height: 250px;\r\n    transform: translateX(-50%);\r\n    border-radius: 50%;\r\n    background: rgba(8, 183, 164, 0.15);\r\n    filter: blur(50px);\r\n  }\r\n\r\n  .geolabs-job-cta-content {\r\n    position: relative;\r\n    z-index: 1;\r\n    max-width: 800px;\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .geolabs-job-cta-title {\r\n    margin: 0;\r\n    color: #ffffff;\r\n    font-size: clamp(32px, 4.5vw, 54px);\r\n    line-height: 1.12;\r\n    letter-spacing: -0.04em;\r\n  }\r\n\r\n  .geolabs-job-cta-text {\r\n    max-width: 690px;\r\n    margin: 22px auto 0;\r\n    color: var(--geo-muted);\r\n    font-size: 17px;\r\n    line-height: 1.7;\r\n  }\r\n\r\n  .geolabs-job-cta-text strong {\r\n    color: #ffffff;\r\n  }\r\n\r\n  .geolabs-job-cta-actions {\r\n    display: flex;\r\n    justify-content: center;\r\n    margin-top: 34px;\r\n  }\r\n\r\n  \/* Bot\u00f3n principal del CTA \u2014 vidrio l\u00edquido, ahora en el verde-azulado de marca *\/\r\n  .geolabs-job-button {\r\n    position: relative;\r\n    overflow: hidden;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 10px;\r\n    padding: 17px 32px;\r\n    border-radius: 999px;\r\n    background: linear-gradient(\r\n      180deg,\r\n      rgba(8, 183, 164, 0.46),\r\n      rgba(8, 183, 164, 0.2)\r\n    );\r\n    border: 1px solid rgba(8, 183, 164, 0.55);\r\n    backdrop-filter: blur(16px) saturate(160%);\r\n    -webkit-backdrop-filter: blur(16px) saturate(160%);\r\n    color: #ffffff !important;\r\n    font-weight: 700;\r\n    font-size: 15px;\r\n    text-decoration: none !important;\r\n    box-shadow:\r\n      inset 0 1px 0 rgba(255, 255, 255, 0.32),\r\n      0 14px 34px rgba(8, 183, 164, 0.35);\r\n    transition:\r\n      transform 0.25s ease,\r\n      background 0.25s ease,\r\n      box-shadow 0.25s ease,\r\n      border-color 0.25s ease;\r\n  }\r\n\r\n  .geolabs-job-button::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background: radial-gradient(\r\n      circle at 28% 18%,\r\n      rgba(255, 255, 255, 0.32),\r\n      transparent 55%\r\n    );\r\n    pointer-events: none;\r\n  }\r\n\r\n  .geolabs-job-button:hover {\r\n    background: linear-gradient(\r\n      180deg,\r\n      rgba(8, 183, 164, 0.6),\r\n      rgba(8, 183, 164, 0.3)\r\n    );\r\n    border-color: rgba(8, 183, 164, 0.8);\r\n    transform: translateY(-3px);\r\n    box-shadow:\r\n      inset 0 1px 0 rgba(255, 255, 255, 0.4),\r\n      0 18px 42px rgba(8, 183, 164, 0.5);\r\n  }\r\n\r\n  .geolabs-job-button-icon {\r\n    position: relative;\r\n    z-index: 1;\r\n    display: inline-flex;\r\n    transition: transform 0.25s ease;\r\n  }\r\n\r\n  .geolabs-job-button span:not(.geolabs-job-button-icon) {\r\n    position: relative;\r\n    z-index: 1;\r\n  }\r\n\r\n  .geolabs-job-button:hover .geolabs-job-button-icon {\r\n    transform: translate(3px, -3px);\r\n  }\r\n\r\n  .geolabs-job-email {\r\n    margin-top: 25px;\r\n    color: #9fa9ac;\r\n    font-size: 13px;\r\n  }\r\n\r\n  .geolabs-job-email a {\r\n    color: var(--geo-accent-light) !important;\r\n    text-decoration: none !important;\r\n    transition: color 0.2s ease;\r\n  }\r\n\r\n  .geolabs-job-email a:hover {\r\n    color: #ffffff !important;\r\n  }\r\n\r\n  \/* =========================\r\n     BOT\u00d3N FLOTANTE\r\n     ========================= *\/\r\n\r\n  .geolabs-float-cta {\r\n    box-sizing: border-box;\r\n    position: fixed;\r\n    right: 22px;\r\n    bottom: 22px;\r\n    z-index: 999999;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 10px;\r\n    padding: 15px 24px;\r\n    border-radius: 999px;\r\n    background: linear-gradient(\r\n      180deg,\r\n      rgba(8, 183, 164, 0.52),\r\n      rgba(8, 183, 164, 0.24)\r\n    );\r\n    border: 1px solid rgba(8, 183, 164, 0.55);\r\n    backdrop-filter: blur(16px) saturate(160%);\r\n    -webkit-backdrop-filter: blur(16px) saturate(160%);\r\n    color: #ffffff !important;\r\n    text-decoration: none !important;\r\n    font-weight: 700;\r\n    font-size: 14px;\r\n    font-family: \"Poppins\", \"Inter\", Arial, sans-serif;\r\n    line-height: 1.2;\r\n    box-shadow:\r\n      inset 0 1px 0 rgba(255, 255, 255, 0.32),\r\n      0 14px 32px rgba(8, 183, 164, 0.35);\r\n    opacity: 1;\r\n    transform: translateY(0);\r\n    transition:\r\n      opacity 0.3s ease,\r\n      transform 0.3s ease,\r\n      background 0.25s ease,\r\n      box-shadow 0.25s ease;\r\n    animation: geolabs-float-pulse 2.8s ease-in-out infinite;\r\n  }\r\n\r\n  .geolabs-float-cta.is-hidden {\r\n    opacity: 0;\r\n    transform: translateY(14px);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .geolabs-float-cta:hover {\r\n    background: linear-gradient(\r\n      180deg,\r\n      rgba(8, 183, 164, 0.65),\r\n      rgba(8, 183, 164, 0.34)\r\n    );\r\n    box-shadow:\r\n      inset 0 1px 0 rgba(255, 255, 255, 0.4),\r\n      0 18px 40px rgba(8, 183, 164, 0.5);\r\n  }\r\n\r\n  .geolabs-float-cta-icon {\r\n    display: inline-flex;\r\n    font-size: 15px;\r\n  }\r\n\r\n  @keyframes geolabs-float-pulse {\r\n    0%,\r\n    100% {\r\n      box-shadow:\r\n        inset 0 1px 0 rgba(255, 255, 255, 0.32),\r\n        0 14px 32px rgba(8, 183, 164, 0.35);\r\n    }\r\n\r\n    50% {\r\n      box-shadow:\r\n        inset 0 1px 0 rgba(255, 255, 255, 0.4),\r\n        0 14px 38px rgba(8, 183, 164, 0.55);\r\n    }\r\n  }\r\n\r\n  @media (max-width: 480px) {\r\n    .geolabs-float-cta {\r\n      right: 16px;\r\n      bottom: 16px;\r\n      padding: 15px;\r\n    }\r\n\r\n    .geolabs-float-cta-text {\r\n      display: none;\r\n    }\r\n  }\r\n\r\n  \/* =========================\r\n     RESPONSIVE\r\n     ========================= *\/\r\n\r\n  @media (max-width: 1024px) {\r\n    .geolabs-job-intro-grid {\r\n      grid-template-columns: 1fr;\r\n      gap: 25px;\r\n    }\r\n\r\n    .geolabs-job-values-grid {\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    }\r\n\r\n    .geolabs-job-extra-grid {\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    }\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .geolabs-job-container {\r\n      width: min(100% - 28px, 1180px);\r\n    }\r\n\r\n    .geolabs-job-main {\r\n      padding: 60px 0 75px;\r\n    }\r\n\r\n    .geolabs-job-layout {\r\n      gap: 50px;\r\n    }\r\n\r\n    .geolabs-job-grid {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .geolabs-job-card-wide {\r\n      grid-column: auto;\r\n    }\r\n\r\n    .geolabs-job-card {\r\n      padding: 28px 23px;\r\n      border-radius: 20px;\r\n    }\r\n\r\n    .geolabs-job-card::before {\r\n      font-size: 72px;\r\n      top: -10px;\r\n      right: 12px;\r\n    }\r\n\r\n    .geolabs-job-card-title {\r\n      font-size: 21px;\r\n    }\r\n\r\n    .geolabs-job-list {\r\n      gap: 0 16px;\r\n    }\r\n\r\n    .geolabs-job-list li {\r\n      padding-left: 26px;\r\n      font-size: 14px;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    .geolabs-job-values-grid {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .geolabs-job-value {\r\n      min-height: auto;\r\n    }\r\n\r\n    .geolabs-job-cta {\r\n      padding: 52px 23px;\r\n      border-radius: 24px;\r\n    }\r\n\r\n    .geolabs-job-cta-text {\r\n      font-size: 15.5px;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .geolabs-job-button,\r\n    .geolabs-job-card,\r\n    .geolabs-job-value,\r\n    .geolabs-job-extra-item,\r\n    .geolabs-float-cta {\r\n      transition: none;\r\n    }\r\n\r\n    .geolabs-float-cta {\r\n      animation: none;\r\n    }\r\n  }\r\n\r\n  \/* =========================\r\n     CONOCIMIENTOS ADICIONALES\r\n     ========================= *\/\r\n\r\n  .geolabs-job-extra-grid {\r\n    position: relative;\r\n    z-index: 1;\r\n    display: grid;\r\n    grid-template-columns: repeat(4, minmax(0, 1fr));\r\n    gap: 16px;\r\n  }\r\n\r\n  .geolabs-job-extra-item {\r\n    position: relative;\r\n    overflow: hidden;\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 14px;\r\n    min-height: 165px;\r\n    padding: 23px;\r\n    border: 1px solid var(--geo-border);\r\n    border-radius: 18px;\r\n    background: rgba(255, 255, 255, 0.025);\r\n    transition:\r\n      transform 0.25s ease,\r\n      border-color 0.25s ease,\r\n      background-color 0.25s ease,\r\n      box-shadow 0.25s ease;\r\n  }\r\n\r\n  .geolabs-job-extra-item::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: -34px;\r\n    right: -34px;\r\n    width: 90px;\r\n    height: 90px;\r\n    border-radius: 50%;\r\n    background: rgba(8, 183, 164, 0.1);\r\n    filter: blur(4px);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .geolabs-job-extra-item:hover {\r\n    transform: translateY(-4px);\r\n    border-color: rgba(8, 183, 164, 0.4);\r\n    background: rgba(8, 183, 164, 0.05);\r\n    box-shadow: 0 16px 32px rgba(0, 0, 0, 0.25);\r\n  }\r\n\r\n  .geolabs-job-extra-icon {\r\n    position: relative;\r\n    z-index: 1;\r\n    width: 44px;\r\n    height: 44px;\r\n    display: grid;\r\n    place-items: center;\r\n    flex-shrink: 0;\r\n    border: 1px solid rgba(8, 183, 164, 0.28);\r\n    border-radius: 13px;\r\n    background: linear-gradient(\r\n      145deg,\r\n      rgba(8, 183, 164, 0.24),\r\n      rgba(8, 183, 164, 0.08)\r\n    );\r\n    color: var(--geo-accent-light);\r\n    font-size: 19px;\r\n    transition: transform 0.3s ease, background 0.3s ease;\r\n  }\r\n\r\n  .geolabs-job-extra-item:hover .geolabs-job-extra-icon {\r\n    transform: scale(1.08) rotate(-4deg);\r\n    background: linear-gradient(\r\n      145deg,\r\n      rgba(8, 183, 164, 0.36),\r\n      rgba(8, 183, 164, 0.12)\r\n    );\r\n  }\r\n\r\n  .geolabs-job-extra-title {\r\n    position: relative;\r\n    z-index: 1;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    margin-bottom: 8px;\r\n    color: #ffffff;\r\n    font-size: 15px;\r\n    line-height: 1.4;\r\n  }\r\n\r\n  .geolabs-job-extra-title::before {\r\n    content: \"\";\r\n    flex-shrink: 0;\r\n    width: 14px;\r\n    height: 2px;\r\n    border-radius: 2px;\r\n    background: var(--geo-accent);\r\n  }\r\n\r\n  .geolabs-job-extra-item p {\r\n    position: relative;\r\n    z-index: 1;\r\n    margin: 0;\r\n    color: var(--geo-muted);\r\n    font-size: 13.5px;\r\n    line-height: 1.6;\r\n  }\r\n\r\n  @media (max-width: 900px) {\r\n    .geolabs-job-extra-grid {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .geolabs-job-extra-item {\r\n      flex-direction: row;\r\n      align-items: flex-start;\r\n      min-height: auto;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<section class=\"geolabs-job-page\">\r\n\r\n  <!-- HERO VISUAL -->\r\n  <section class=\"geolabs-opportunity-hero\" id=\"inicio\">\r\n\r\n    <div class=\"geolabs-opportunity-media\">\r\n      <picture>\r\n        <source\r\n          media=\"(max-width: 767px)\"\r\n          srcset=\"https:\/\/app.geolabs.cloud\/plataforma\/areas\/main\/assets\/img\/mobile-oportunidades.jpg\"\r\n        >\r\n        <img decoding=\"async\"\r\n          class=\"geolabs-opportunity-image\"\r\n          src=\"https:\/\/app.geolabs.cloud\/plataforma\/areas\/main\/assets\/img\/oportunidades.jpg\"\r\n          alt=\"Oportunidades laborales en Geolabs Cloud\"\r\n        >\r\n      <\/picture>\r\n\r\n      <div class=\"geolabs-opportunity-shade\"><\/div>\r\n\r\n      <!-- R\u00f3tulo grande: solo se muestra en mobile, porque la foto vertical\r\n           no trae el texto incrustado como s\u00ed lo trae la horizontal -->\r\n      <div class=\"geolabs-opportunity-legend\">\r\n\r\n        <h1 class=\"geolabs-opportunity-legend-title\">\r\n          Oportunidades<br>de empleo\r\n        <\/h1>\r\n\r\n        <span class=\"geolabs-opportunity-legend-tag\">\r\n          Innova, colabora, impacta\r\n        <\/span>\r\n\r\n        <!-- Opcional \u2014 borra este bloque completo si no lo quieres -->\r\n        <div class=\"geolabs-opportunity-legend-stats\">\r\n\r\n          <div class=\"geolabs-opportunity-legend-stat\">\r\n            <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n              <path d=\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <span>Innovamos<\/span>\r\n          <\/div>\r\n\r\n          <div class=\"geolabs-opportunity-legend-stat\">\r\n            <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n              <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n              <circle cx=\"9\" cy=\"7\" r=\"4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\/>\r\n              <path d=\"M22 21v-2a4 4 0 0 0-3-3.87\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n              <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <span>Colaboramos<\/span>\r\n          <\/div>\r\n\r\n          <div class=\"geolabs-opportunity-legend-stat\">\r\n            <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n              <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\/>\r\n              <line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\" stroke=\"currentColor\" stroke-width=\"1.8\"\/>\r\n              <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <span>Generamos<br>impacto<\/span>\r\n          <\/div>\r\n\r\n          <div class=\"geolabs-opportunity-legend-stat\">\r\n            <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n              <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n              <polyline points=\"17 6 23 6 23 12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <span>Crecemos<\/span>\r\n          <\/div>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"geolabs-opportunity-bottom\">\r\n      <div class=\"geolabs-job-container geolabs-opportunity-bottom-inner\">\r\n\r\n        <div class=\"geolabs-opportunity-caption\">\r\n          <span class=\"geolabs-opportunity-caption-dot\"><\/span>\r\n\r\n          <div>\r\n            <span class=\"geolabs-opportunity-small\">\r\n              Vacante abierta\r\n            <\/span>\r\n\r\n            <strong>\r\n              Desarrollador Fullstack<span class=\"geolabs-opportunity-caption-dash\"> \u2014 <\/span><br class=\"geolabs-opportunity-caption-break\">\u00fanete al equipo de Geolabs Cloud\r\n            <\/strong>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <a\r\n          class=\"geolabs-scroll-button\"\r\n          href=\"#vacante-geolabs\"\r\n          aria-label=\"Ver detalles de la vacante\"\r\n        >\r\n          <span class=\"geolabs-scroll-button-text\">\r\n            Ver vacante\r\n          <\/span>\r\n\r\n          <span class=\"geolabs-scroll-button-icon\">\r\n            <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n              <path\r\n                d=\"M12 4v15M6.5 13.5 12 19l5.5-5.5\"\r\n                fill=\"none\"\r\n                stroke=\"currentColor\"\r\n                stroke-width=\"1.8\"\r\n                stroke-linecap=\"round\"\r\n                stroke-linejoin=\"round\"\r\n              \/>\r\n            <\/svg>\r\n          <\/span>\r\n        <\/a>\r\n\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/section>\r\n\r\n  <!-- PRESENTACI\u00d3N + DETALLES + CTA \u2014 layout de dos columnas en desktop -->\r\n  <section class=\"geolabs-job-main\" id=\"vacante-geolabs\">\r\n    <div class=\"geolabs-job-container geolabs-job-layout\">\r\n\r\n      <div class=\"geolabs-job-main-col\">\r\n\r\n        <div class=\"geolabs-job-intro-grid\">\r\n\r\n          <div class=\"geolabs-reveal\">\r\n            <span class=\"geolabs-job-section-label\">\r\n              Sobre Geolabs Cloud\r\n            <\/span>\r\n\r\n            <h2 class=\"geolabs-job-section-title\">\r\n              Tecnolog\u00eda que convierte datos en decisiones.\r\n            <\/h2>\r\n          <\/div>\r\n\r\n          <p class=\"geolabs-job-lead geolabs-reveal\">\r\n            En <strong>Geolabs Cloud<\/strong> transformamos datos\r\n            geoespaciales en inteligencia operativa para que las empresas\r\n            tomen decisiones m\u00e1s r\u00e1pidas, precisas y rentables.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n        <div class=\"geolabs-job-grid\">\r\n\r\n        <!-- REQUISITOS T\u00c9CNICOS -->\r\n        <article class=\"geolabs-job-card geolabs-job-card-wide geolabs-reveal\">\r\n\r\n          <div class=\"geolabs-job-card-header\">\r\n            <span class=\"geolabs-job-card-number\">01<\/span>\r\n\r\n            <h3 class=\"geolabs-job-card-title\">\r\n              Requisitos t\u00e9cnicos esenciales\r\n            <\/h3>\r\n          <\/div>\r\n\r\n          <ul class=\"geolabs-job-list\">\r\n\r\n            <li>\r\n              <strong>PHP intermedio-avanzado<\/strong>, con experiencia real\r\n              en producci\u00f3n.\r\n            <\/li>\r\n\r\n            <li>\r\n              Construcci\u00f3n de\r\n              <strong>interfaces web interactivas y responsivas<\/strong>.\r\n            <\/li>\r\n\r\n            <li>\r\n              Manejo de <strong>MySQL o PostgreSQL<\/strong>\r\n              (se valora experiencia con PostGIS).\r\n            <\/li>\r\n\r\n            <li>\r\n              Uso de <strong>cURL<\/strong> e integraci\u00f3n con\r\n              <strong>APIs REST<\/strong>.\r\n            <\/li>\r\n\r\n            <li>\r\n              Experiencia en Linux:\r\n              <strong>CLI, cron jobs y depuraci\u00f3n de procesos<\/strong>.\r\n            <\/li>\r\n\r\n            <li>\r\n              Uso habitual de <strong>herramientas y agentes de IA<\/strong>\r\n              en el desarrollo \u2014 hoy es parte indispensable del rol.\r\n            <\/li>\r\n\r\n          <\/ul>\r\n\r\n        <\/article>\r\n\r\n        <!-- D\u00cdA A D\u00cdA -->\r\n        <article class=\"geolabs-job-card geolabs-job-card-wide geolabs-reveal\">\r\n\r\n          <div class=\"geolabs-job-card-header\">\r\n            <span class=\"geolabs-job-card-number\">02<\/span>\r\n\r\n            <h3 class=\"geolabs-job-card-title\">\r\n              \u00bfQu\u00e9 har\u00e1s en el d\u00eda a d\u00eda?\r\n            <\/h3>\r\n          <\/div>\r\n\r\n          <ul class=\"geolabs-job-list\">\r\n\r\n            <li>\r\n              Desarrollar y mantener scripts en <strong>PHP<\/strong> que\r\n              automaticen flujos geoespaciales.\r\n            <\/li>\r\n\r\n            <li>\r\n              Integrar mensajer\u00eda e\r\n              <strong>inteligencia artificial mediante APIs<\/strong>.\r\n            <\/li>\r\n\r\n            <li>\r\n              Trabajar y optimizar consultas en bases de datos grandes\r\n              con <strong>MySQL y PostgreSQL<\/strong>.\r\n            <\/li>\r\n\r\n            <li>\r\n              Construir y mantener\r\n              <strong>interfaces web modernas<\/strong>.\r\n            <\/li>\r\n\r\n            <li>\r\n              Automatizar procesos en Linux, integrando\r\n              <strong>S3 y servidores de mapas<\/strong>.\r\n            <\/li>\r\n\r\n          <\/ul>\r\n\r\n        <\/article>\r\n\r\n        <!-- CONOCIMIENTOS VALORADOS -->\r\n        <article class=\"geolabs-job-card geolabs-job-card-wide geolabs-reveal\">\r\n\r\n          <div class=\"geolabs-job-card-header\">\r\n            <span class=\"geolabs-job-card-number\">03<\/span>\r\n\r\n            <h3 class=\"geolabs-job-card-title\">\r\n              Valoramos mucho si tambi\u00e9n tienes\r\n            <\/h3>\r\n          <\/div>\r\n\r\n          <div class=\"geolabs-job-extra-grid\">\r\n\r\n            <div class=\"geolabs-job-extra-item\">\r\n              <span class=\"geolabs-job-extra-icon\" aria-hidden=\"true\">\r\n                <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                  <circle cx=\"12\" cy=\"12\" r=\"10\"\/>\r\n                  <line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"\/>\r\n                  <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z\"\/>\r\n                <\/svg>\r\n              <\/span>\r\n\r\n              <div>\r\n                <strong class=\"geolabs-job-extra-title\">\r\n                  Tecnolog\u00eda geoespacial\r\n                <\/strong>\r\n\r\n                <p>\r\n                  Experiencia previa en procesamiento fotogram\u00e9trico,\r\n                  SIG o sistemas basados en mapas.\r\n                <\/p>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"geolabs-job-extra-item\">\r\n              <span class=\"geolabs-job-extra-icon\" aria-hidden=\"true\">\r\n                <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                  <rect x=\"3\" y=\"4\" width=\"18\" height=\"7\" rx=\"2\"\/>\r\n                  <rect x=\"3\" y=\"13\" width=\"18\" height=\"7\" rx=\"2\"\/>\r\n                  <line x1=\"7\" y1=\"7.5\" x2=\"7.01\" y2=\"7.5\"\/>\r\n                  <line x1=\"7\" y1=\"16.5\" x2=\"7.01\" y2=\"16.5\"\/>\r\n                <\/svg>\r\n              <\/span>\r\n\r\n              <div>\r\n                <strong class=\"geolabs-job-extra-title\">\r\n                  Automatizaci\u00f3n de infraestructura\r\n                <\/strong>\r\n\r\n                <p>\r\n                  Conocimientos en automatizaci\u00f3n de servidores\r\n                  o administraci\u00f3n de sistemas.\r\n                <\/p>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"geolabs-job-extra-item\">\r\n              <span class=\"geolabs-job-extra-icon\" aria-hidden=\"true\">\r\n                <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                  <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\"\/>\r\n                  <circle cx=\"18\" cy=\"6\" r=\"2.6\"\/>\r\n                  <circle cx=\"6\" cy=\"18\" r=\"2.6\"\/>\r\n                  <path d=\"M18 8.6A8.6 8.6 0 0 1 9.4 17.2\"\/>\r\n                <\/svg>\r\n              <\/span>\r\n\r\n              <div>\r\n                <strong class=\"geolabs-job-extra-title\">\r\n                  Buenas pr\u00e1cticas de c\u00f3digo\r\n                <\/strong>\r\n\r\n                <p>\r\n                  Control de versiones con Git y enfoque en c\u00f3digo\r\n                  limpio, documentado y f\u00e1cil de mantener.\r\n                <\/p>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"geolabs-job-extra-item\">\r\n              <span class=\"geolabs-job-extra-icon\" aria-hidden=\"true\">\r\n                <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                  <circle cx=\"5\" cy=\"12\" r=\"2.6\"\/>\r\n                  <circle cx=\"19\" cy=\"6\" r=\"2.6\"\/>\r\n                  <circle cx=\"19\" cy=\"18\" r=\"2.6\"\/>\r\n                  <path d=\"M7.3 10.8 16.7 7.2M7.3 13.2l9.4 3.6\"\/>\r\n                <\/svg>\r\n              <\/span>\r\n\r\n              <div>\r\n                <strong class=\"geolabs-job-extra-title\">\r\n                  MCP (Model Context Protocol)\r\n                <\/strong>\r\n\r\n                <p>\r\n                  Experiencia conectando modelos de IA con herramientas\r\n                  y fuentes de datos mediante MCP.\r\n                <\/p>\r\n              <\/div>\r\n            <\/div>\r\n\r\n          <\/div>\r\n\r\n        <\/article>\r\n\r\n        <!-- QU\u00c9 OFRECEMOS -->\r\n        <article class=\"geolabs-job-card geolabs-job-card-wide geolabs-reveal\">\r\n\r\n          <div class=\"geolabs-job-card-header\">\r\n            <span class=\"geolabs-job-card-number\">04<\/span>\r\n\r\n            <h3 class=\"geolabs-job-card-title\">\r\n              \u00bfQu\u00e9 ofrecemos?\r\n            <\/h3>\r\n          <\/div>\r\n\r\n          <div class=\"geolabs-job-values-grid\">\r\n\r\n            <div class=\"geolabs-job-value\">\r\n              <span class=\"geolabs-job-value-title\">Impacto real<\/span>\r\n              <p class=\"geolabs-job-value-text\">\r\n                Proyectos reales con impacto en distintas industrias\r\n                de Latinoam\u00e9rica.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"geolabs-job-value\">\r\n              <span class=\"geolabs-job-value-title\">Remuneraci\u00f3n<\/span>\r\n              <p class=\"geolabs-job-value-text\">\r\n                Acorde con tu experiencia, conocimientos y\r\n                responsabilidades.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"geolabs-job-value\">\r\n              <span class=\"geolabs-job-value-title\">Crecimiento profesional<\/span>\r\n              <p class=\"geolabs-job-value-text\">\r\n                Espacio para crecer dentro de una plataforma\r\n                tecnol\u00f3gica en expansi\u00f3n.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"geolabs-job-value\">\r\n              <span class=\"geolabs-job-value-title\">Cultura t\u00e9cnica<\/span>\r\n              <p class=\"geolabs-job-value-text\">\r\n                Un equipo que valora la calidad, la autonom\u00eda\r\n                y la buena comunicaci\u00f3n.\r\n              <\/p>\r\n            <\/div>\r\n\r\n          <\/div>\r\n\r\n        <\/article>\r\n\r\n      <\/div>\r\n\r\n      <\/div>\r\n\r\n      <aside class=\"geolabs-job-side-col\" id=\"geolabs-postulacion\">\r\n        <div class=\"geolabs-job-cta geolabs-reveal\">\r\n          <div class=\"geolabs-job-cta-content\">\r\n\r\n            <span class=\"geolabs-job-section-label\">\r\n              Da el siguiente paso\r\n            <\/span>\r\n\r\n            <h2 class=\"geolabs-job-cta-title\">\r\n              \u00bfListo para unirte al equipo?\r\n            <\/h2>\r\n\r\n            <p class=\"geolabs-job-cta-text\">\r\n              Env\u00edanos tu CV o portafolio y forma parte de\r\n              <strong>Geolabs Cloud<\/strong>.\r\n            <\/p>\r\n\r\n            <div class=\"geolabs-job-cta-actions\">\r\n              <a\r\n                class=\"geolabs-job-button\"\r\n                href=\"mailto:developer@geolabs.cloud?subject=Desarrollador%20Fullstack%20-%20Geolabs%20Cloud&body=Hola%20equipo%20de%20Geolabs%20Cloud%2C%0A%0AMe%20interesa%20postular%20a%20la%20vacante%20de%20Desarrollador%20Fullstack.%0A%0AAdjunto%20mi%20CV%20y%20portafolio.%0A\"\r\n              >\r\n                <span>Postula ahora<\/span>\r\n                <span class=\"geolabs-job-button-icon\" aria-hidden=\"true\">\u2197<\/span>\r\n              <\/a>\r\n            <\/div>\r\n\r\n            <p class=\"geolabs-job-email\">\r\n              Correo de postulaci\u00f3n:\r\n              <a href=\"mailto:developer@geolabs.cloud\">\r\n                developer@geolabs.cloud\r\n              <\/a>\r\n            <\/p>\r\n\r\n          <\/div>\r\n        <\/div>\r\n      <\/aside>\r\n\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- BOT\u00d3N FLOTANTE \u2014 siempre visible, lleva directo al CTA de postulaci\u00f3n -->\r\n  <a\r\n    href=\"#geolabs-postulacion\"\r\n    class=\"geolabs-float-cta\"\r\n    aria-label=\"Ir a la postulaci\u00f3n\"\r\n  >\r\n    <span class=\"geolabs-float-cta-icon\" aria-hidden=\"true\">\r\n      <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n        <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"\/>\r\n        <polygon points=\"22 2 15 22 11 13 2 9 22 2\" fill=\"none\"\/>\r\n      <\/svg>\r\n    <\/span>\r\n    <span class=\"geolabs-float-cta-text\">Postular ahora<\/span>\r\n  <\/a>\r\n\r\n<\/section>\r\n\r\n<script>\r\n  (function () {\r\n    var items = document.querySelectorAll('.geolabs-job-page .geolabs-reveal');\r\n\r\n    if (!items.length) return;\r\n\r\n    if (!('IntersectionObserver' in window)) {\r\n      items.forEach(function (el) { el.classList.add('is-visible'); });\r\n      return;\r\n    }\r\n\r\n    var observer = new IntersectionObserver(function (entries) {\r\n      entries.forEach(function (entry) {\r\n        if (entry.isIntersecting) {\r\n          entry.target.classList.add('is-visible');\r\n          observer.unobserve(entry.target);\r\n        }\r\n      });\r\n    }, { threshold: 0.15, rootMargin: '0px 0px -40px 0px' });\r\n\r\n    items.forEach(function (el) { observer.observe(el); });\r\n  })();\r\n\r\n  \/\/ El bot\u00f3n flotante se reubica como hijo directo de <body> para que\r\n  \/\/ \"position: fixed\" se ancle siempre a la ventana real, sin importar si\r\n  \/\/ alg\u00fan contenedor de Elementor o del tema tiene un transform\/filter que\r\n  \/\/ romper\u00eda eso. Todo el bloque es idempotente a prop\u00f3sito: si este script\r\n  \/\/ llega a ejecutarse m\u00e1s de una vez en la misma p\u00e1gina (por ejemplo, al\r\n  \/\/ previsualizar cambios repetidamente en el editor de Elementor), no crea\r\n  \/\/ botones adicionales \u2014 reutiliza el que ya existe y borra cualquier copia\r\n  \/\/ de m\u00e1s que haya quedado dando vueltas.\r\n  (function () {\r\n    var buttons = document.querySelectorAll('.geolabs-float-cta');\r\n    if (!buttons.length) return;\r\n\r\n    var floatBtn = document.body.querySelector(':scope > .geolabs-float-cta') || buttons[0];\r\n\r\n    buttons.forEach(function (btn) {\r\n      if (btn !== floatBtn) btn.remove();\r\n    });\r\n\r\n    if (floatBtn.parentElement !== document.body) {\r\n      document.body.appendChild(floatBtn);\r\n    }\r\n\r\n    \/\/ Ya inicializado en una ejecuci\u00f3n previa: no dupliques observers.\r\n    if (floatBtn.dataset.geolabsReady) return;\r\n    floatBtn.dataset.geolabsReady = 'true';\r\n\r\n    \/\/ El scroll queda 100% a cargo del enlace nativo (href=\"#geolabs-postulacion\"\r\n    \/\/ + scroll-behavior: smooth ya definido en <html>) \u2014 el mismo mecanismo que\r\n    \/\/ usa \"Ver vacante\" y que ya funciona bien. Nada de JS de por medio aqu\u00ed,\r\n    \/\/ para no mezclar dos animaciones de scroll distintas sobre el mismo click.\r\n\r\n    var heroTarget = document.querySelector('.geolabs-opportunity-bottom');\r\n    var ctaTarget = document.querySelector('.geolabs-job-cta');\r\n    var heroVisible = false;\r\n    var ctaVisible = false;\r\n\r\n    function syncVisibility() {\r\n      floatBtn.classList.toggle('is-hidden', heroVisible || ctaVisible);\r\n    }\r\n\r\n    if ('IntersectionObserver' in window) {\r\n      if (heroTarget) {\r\n        new IntersectionObserver(function (entries) {\r\n          entries.forEach(function (entry) {\r\n            heroVisible = entry.isIntersecting;\r\n            syncVisibility();\r\n          });\r\n        }, { threshold: 0.2 }).observe(heroTarget);\r\n      }\r\n\r\n      if (ctaTarget) {\r\n        new IntersectionObserver(function (entries) {\r\n          entries.forEach(function (entry) {\r\n            ctaVisible = entry.isIntersecting;\r\n            syncVisibility();\r\n          });\r\n        }, { threshold: 0.25 }).observe(ctaTarget);\r\n      }\r\n    }\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\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>Oportunidadesde empleo Innova, colabora, impacta Innovamos Colaboramos Generamosimpacto Crecemos Vacante abierta Desarrollador Fullstack \u2014 \u00fanete al equipo de Geolabs Cloud Ver vacante Sobre Geolabs Cloud Tecnolog\u00eda que convierte datos en decisiones. En Geolabs Cloud transformamos datos geoespaciales en inteligencia operativa para que las empresas tomen decisiones m\u00e1s r\u00e1pidas, precisas y rentables. 01 Requisitos t\u00e9cnicos esenciales [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[157],"tags":[],"class_list":["post-5893","post","type-post","status-publish","format-standard","hentry","category-oportunidades"],"acf":[],"_links":{"self":[{"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/posts\/5893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/comments?post=5893"}],"version-history":[{"count":0,"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/posts\/5893\/revisions"}],"wp:attachment":[{"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/media?parent=5893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/categories?post=5893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geolabs.cloud\/en\/wp-json\/wp\/v2\/tags?post=5893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}