{"id":7,"date":"2025-07-28T19:47:56","date_gmt":"2025-07-28T17:47:56","guid":{"rendered":"https:\/\/vesta.works\/?page_id=7"},"modified":"2026-02-05T11:31:04","modified_gmt":"2026-02-05T10:31:04","slug":"inicio","status":"publish","type":"page","link":"https:\/\/vesta.works\/es\/","title":{"rendered":"Inicio"},"content":{"rendered":"<h1><span style=\"color: #004d80;\">Cada registro de limpieza en papel desperdicia<\/span><br \/>\n<span style=\"color: #00a2ff;\"><br \/>45 segundos de <br \/>trabajo real.<\/span><br \/>\n<\/h1>\n<div><span style=\"color: #004d80;\">Apuntarlo a mano.<br \/>\nRecoger las hojas en papel.<br \/>\nVolver a pasar todo a Excel.<br \/>\n<span style=\"font-weight: 700\">Nada de esto es trabajo real.<\/span><\/span>\n<\/div>\n<div>\n<section class=\"vesta-compare\" aria-label=\"Comparativa papel frente a VESTA\" id=\"vestaCompare\">\n<div class=\"vesta-compare__grid\">\n    <!-- IZQUIERDA: PAPER --><\/p>\n<div class=\"vesta-compare__side vesta-compare__side--paper\">\n<div class=\"vesta-compare__content\">\n<p class=\"vesta-compare__kicker\">PAPEL<\/p>\n<div class=\"vesta-compare__metric\">\n          <span class=\"vesta-compare__value js-count\" data-target=\"45\">0<\/span><br \/>\n          <span class=\"vesta-compare__unit\">segundos<\/span>\n        <\/div>\n<p class=\"vesta-compare__caption\">por registro de limpieza<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- DERECHA: VESTA --><\/p>\n<div class=\"vesta-compare__side vesta-compare__side--vesta\">\n<div class=\"vesta-compare__content\">\n<p class=\"vesta-compare__kicker\">VESTA<span class=\"vesta-compare__tm\">\u2122<\/span><\/p>\n<div class=\"vesta-compare__metric\">\n          <span class=\"vesta-compare__value js-count\" data-target=\"5\">0<\/span><br \/>\n          <span class=\"vesta-compare__unit\">segundos<\/span>\n        <\/div>\n<p class=\"vesta-compare__caption\">por registro de limpieza<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- IMAGEN CENTRAL --><\/p>\n<div class=\"vesta-compare__center\" aria-hidden=\"true\">\n      <img\n        src=\"\/wp-content\/uploads\/2026\/01\/papelapp2.png\"\n        alt=\"\"\n        class=\"vesta-compare__center-img\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      \/>\n    <\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n(function(){\n  const section = document.getElementById('vestaCompare');\n  if(!section) return;<\/p>\n<p>  const counters = Array.from(section.querySelectorAll('.js-count'));\n  if(!counters.length) return;<\/p>\n<p>  let played = false;<\/p>\n<p>  function animateCount(el, target, duration){\n    const start = performance.now();\n    const from = 0;<\/p>\n<p>    function tick(now){\n      const t = Math.min(1, (now - start) \/ duration);\n      \/\/ easeOutCubic\n      const eased = 1 - Math.pow(1 - t, 3);\n      const value = Math.round(from + (target - from) * eased);\n      el.textContent = value.toString();<\/p>\n<p>      if(t < 1) requestAnimationFrame(tick);\n      else el.textContent = target.toString();\n    }\n    requestAnimationFrame(tick);\n  }\n\n  \/\/ Duraciones \u201ccomparativas\u201d (ajusta si quieres)\n  function getDuration(target){\n    if(target >= 40) return 5000; \/\/ PAPEL 45 -> m\u00e1s lento\n    if(target <= 10) return 2000; \/\/ VESTA 5 -> m\u00e1s r\u00e1pido\n    return 2000;\n  }<\/p>\n<p>  \/\/ (Opcional) un pel\u00edn de delay al de PAPEL para enfatizar diferencia\n  function getDelay(target){\n    if(target >= 40) return 150; \/\/ PAPEL arranca un instante despu\u00e9s\n    return 0;\n  }<\/p>\n<p>  const io = new IntersectionObserver((entries) => {\n    entries.forEach(entry => {\n      if(entry.isIntersecting && !played){\n        played = true;<\/p>\n<p>        counters.forEach((el) => {\n          const target = parseInt(el.getAttribute('data-target'), 10) || 0;\n          const duration = getDuration(target);\n          const delay = getDelay(target);<\/p>\n<p>          setTimeout(() => animateCount(el, target, duration), delay);\n        });<\/p>\n<p>        io.disconnect();\n      }\n    });\n  }, { threshold: 0.35 });<\/p>\n<p>  io.observe(section);\n})();\n<\/script><\/p>\n<\/div>\n<div>\n<section class=\"vesta-simulator vesta-simulator--calc\" id=\"simulador\">\n<h2 class=\"vesta-sim-title\">Ahora apl\u00edcalo a tu operativa diaria.<\/h2>\n<div class=\"vesta-calc\">\n<div class=\"vesta-calc__panel\">\n<div class=\"vesta-calc__fields\" role=\"group\" aria-label=\"Entradas de la calculadora\">\n        <!-- Empleados --><\/p>\n<div class=\"vesta-calc__field\">\n          <label class=\"vesta-calc__label\" for=\"vestaEmployees\">N\u00famero de empleados<\/label><br \/>\n          <input\n            id=\"vestaEmployees\"\n            class=\"vesta-calc__input\"\n            type=\"number\"\n            inputmode=\"numeric\"\n            min=\"1\"\n            max=\"10000\"\n            step=\"1\"\n            value=\"5\"\n          \/>\n        <\/div>\n<p>        <!-- Registros diarios por empleado --><\/p>\n<div class=\"vesta-calc__field\">\n          <label class=\"vesta-calc__label\" for=\"vestaRecords\">Registros diarios por empleado<\/label><br \/>\n          <input\n            id=\"vestaRecords\"\n            class=\"vesta-calc__input\"\n            type=\"number\"\n            inputmode=\"numeric\"\n            min=\"1\"\n            max=\"10000\"\n            step=\"1\"\n            value=\"25\"\n          \/>\n        <\/div>\n<p>        <!-- Coste por hora --><\/p>\n<div class=\"vesta-calc__field\">\n          <label class=\"vesta-calc__label\" for=\"vestaHourlyCost\">Coste por hora del empleado (\u20ac)<\/label><br \/>\n          <input\n            id=\"vestaHourlyCost\"\n            class=\"vesta-calc__input\"\n            type=\"number\"\n            inputmode=\"decimal\"\n            min=\"0\"\n            max=\"100000\"\n            step=\"0.5\"\n            value=\"18\"\n          \/>\n        <\/div>\n<\/p><\/div>\n<p>      <!--<button class=\"vesta-calc__btn\" type=\"button\" id=\"vestaCalcBtn\">\n        Calcula tu p\u00e9rdida anual\n      <\/button>-->\n    <\/div>\n<p class=\"vesta-calc__note\">\n    Cambia los n\u00fameros de arriba seg\u00fan tu actividad. Las horas y el ahorro se actualizan al instante.\n  <\/p>\n<div class=\"vesta-calc__results\" aria-live=\"polite\">\n<p class=\"vesta-calc__line\">\n        Est\u00e1s perdiendo <span id=\"vestaHours\" class=\"vesta-calc__highlight\">226 horas<\/span> cada a\u00f1o con registros de limpieza en papel.\n      <\/p>\n<p class=\"vesta-calc__line\">\n        Es decir, <span id=\"vestaCost\" class=\"vesta-calc__highlight\">4.062 \u20ac<\/span> desperdiciados cada a\u00f1o en papeleo.\n      <\/p>\n<p class=\"vesta-calc__note\" id=\"vestaNote\">\n        *Basado en 5 empleados completando 25 registros al d\u00eda, con un coste por hora de 18,00 \u20ac por empleado, durante 260 d\u00edas laborables al a\u00f1o.\n      <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n  (function () {\n    const WORK_DAYS = 260;<\/p>\n<p>    \/\/ Mantengo 40 para no cambiar los n\u00fameros del ejemplo actual.\n    const SECONDS_LOST_PER_RECORD = 40;<\/p>\n<p>    const elEmployees = document.getElementById(\"vestaEmployees\");\n    const elRecords = document.getElementById(\"vestaRecords\");\n    const elHourly = document.getElementById(\"vestaHourlyCost\");<\/p>\n<p>    const elHours = document.getElementById(\"vestaHours\");\n    const elCost = document.getElementById(\"vestaCost\");\n    const elNote = document.getElementById(\"vestaNote\");<\/p>\n<p>    \/\/ \u2705 Formato espa\u00f1ol garantizado (miles con punto \/ decimales con coma)\n    const fmtInt = (n) =>\n      new Intl.NumberFormat(\"es-ES\", {\n        useGrouping: true,\n        maximumFractionDigits: 0\n      }).format(Number(n));<\/p>\n<p>    const fmt2 = (n) =>\n      new Intl.NumberFormat(\"es-ES\", {\n        useGrouping: true,\n        minimumFractionDigits: 2,\n        maximumFractionDigits: 2\n      }).format(Number(n));<\/p>\n<p>    \/\/ \u2705 \u20ac a la derecha + miles con punto garantizado\n    const fmtMoney = (n) => `${fmtInt(n)} \u20ac`;<\/p>\n<p>    function readNumber(input) {\n      \/\/ Permite que el usuario escriba coma o punto\n      const val = parseFloat(String(input.value).replace(\",\", \".\"));\n      return Number.isFinite(val) ? val : 0;\n    }<\/p>\n<p>    function calculate() {\n      const employees = Math.max(0, Math.floor(readNumber(elEmployees)));\n      const records = Math.max(0, Math.floor(readNumber(elRecords)));\n      const hourly = Math.max(0, readNumber(elHourly));<\/p>\n<p>      const totalRecords = employees * records * WORK_DAYS;\n      const totalSeconds = totalRecords * SECONDS_LOST_PER_RECORD;\n      const hours = totalSeconds \/ 3600;<\/p>\n<p>      const roundedHours = Math.round(hours);\n      const wasted = Math.floor(hours * hourly); \/\/ mantengo tu l\u00f3gica original<\/p>\n<p>      elHours.textContent = `${fmtInt(roundedHours)} horas`;\n      elCost.textContent = fmtMoney(wasted);<\/p>\n<p>      elNote.textContent =\n        `*Basado en ${fmtInt(employees)} empleados completando ${fmtInt(records)} registros al d\u00eda, ` +\n        `con un coste por hora de ${fmt2(hourly)} \u20ac por empleado, durante ${WORK_DAYS} d\u00edas laborables al a\u00f1o.`;\n    }<\/p>\n<p>    [\"input\", \"change\"].forEach((evt) => {\n      elEmployees.addEventListener(evt, calculate);\n      elRecords.addEventListener(evt, calculate);\n      elHourly.addEventListener(evt, calculate);\n    });<\/p>\n<p>    \/\/ C\u00e1lculo inicial\n    calculate();\n  })();\n<\/script><\/p>\n<\/div>\n<h2><span style=\"color: #ffffff;\">VESTA elimina esto<br \/>\nsin cambiar la forma<br \/> en la que trabajas.<\/span><br \/>\n<\/h2>\n<h3><span style=\"color: #004d80;\">Sencillo para tu equipo.<\/span><br \/>\n<\/h3>\n<div><span style=\"color: #004d80;\">Sin formularios. Sin seguimiento. Nada que hacer despu\u00e9s.<\/span>\n<\/div>\n<div>\n<section class=\"vesta-steps-phones\">\n<div class=\"vesta-steps-phones__wrap\">\n<div class=\"vesta-step-phone\">\n<h3 class=\"vesta-step-phone__title\">Nueva limpieza<\/h3>\n<p>      <img\n        class=\"vesta-step-phone__img\"\n        src=\"\/wp-content\/uploads\/2026\/01\/movil1-es.png\"\n        alt=\"VESTA \u2013 Empieza a limpiar\"\n        loading=\"eager\"\n        decoding=\"sync\"\n      \/>\n    <\/div>\n<div class=\"vesta-step-phone\">\n<h3 class=\"vesta-step-phone__title\">Escanea<\/h3>\n<p>      <img\n        class=\"vesta-step-phone__img\"\n        src=\"\/wp-content\/uploads\/2026\/01\/scan-es.png\"\n        alt=\"VESTA \u2013 Escanea QR\"\n        loading=\"eager\"\n        decoding=\"sync\"\n      \/><\/p>\n<p class=\"vesta-step-phone__subtitle\">\n        *\u00bfNo hay QR? No pasa nada.<br \/>\n        Empieza a limpiar manualmente\n      <\/p>\n<\/p><\/div>\n<div class=\"vesta-step-phone\">\n<h3 class=\"vesta-step-phone__title\">Listo<\/h3>\n<p>      <img\n        class=\"vesta-step-phone__img\"\n        src=\"\/wp-content\/uploads\/2026\/01\/movil3-es.png\"\n        alt=\"VESTA \u2013 Listo\"\n        loading=\"eager\"\n        decoding=\"sync\"\n      \/>\n    <\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n(function(){\n  const items = Array.from(document.querySelectorAll('.vesta-step-phone'));\n  if(!items.length) return;<\/p>\n<p>  \/\/ Quer\u00e9is que aparezcan de arriba a abajo (derecha -> centro -> izquierda)\n  const orderMap = { 0: 2, 1: 1, 2: 0 };\n  const STAGGER = 160;<\/p>\n<p>  const io = new IntersectionObserver((entries) => {\n    entries.forEach((entry) => {\n      if(!entry.isIntersecting) return;<\/p>\n<p>      const el = entry.target;\n      const domIdx = items.indexOf(el);\n      const delayIdx = orderMap[domIdx] ?? domIdx;<\/p>\n<p>      setTimeout(() => el.classList.add('is-visible'), delayIdx * STAGGER);\n      io.unobserve(el);\n    });\n  }, {\n    threshold: 0.22,\n    rootMargin: \"0px 0px -8% 0px\"\n  });<\/p>\n<p>  items.forEach(el => io.observe(el));\n})();\n<\/script><\/p>\n<\/div>\n<h3><span style=\"color: #004d80;\">Claro para ti.<\/span><br \/>\n<\/h3>\n<div><span style=\"color: #004d80;\">Cuando alguien te pide un registro, no tienes que buscarlo.<br \/>Ya lo tienes.<\/span>\n<\/div>\n<div>\n<div class=\"vesta-logs-hero\" id=\"vestaLogsHero\">\n<div class=\"vesta-logs-hero__computer\" id=\"logsComputer\">\n    <img\n      class=\"vesta-logs-hero__img\"\n      id=\"logsImg\"\n      src=\"\/wp-content\/uploads\/2026\/01\/dashboard-es.png\"\n      alt=\"VESTA \u2013 Cleaning logs dashboard\"\n      loading=\"lazy\"\n      decoding=\"async\"\n    \/>\n  <\/div>\n<p>  <!-- Cards flotantes --><\/p>\n<div class=\"vesta-float-tags\" id=\"floatTags\" aria-hidden=\"true\">\n<div class=\"vesta-float-tag\" data-target=\"cell-1\">01 &#8211; 23 &#8211; 2026 1:27 PM<\/div>\n<div class=\"vesta-float-tag\" data-target=\"cell-2\">BlueCrest Senior Living<\/div>\n<div class=\"vesta-float-tag\" data-target=\"cell-3\">Office Floor 3 \u2013 Restroom<\/div>\n<div class=\"vesta-float-tag\" data-target=\"cell-4\">Jose Garcia<\/div>\n<\/p><\/div>\n<p>  <!-- Targets (fila dentro de la tabla) --><\/p>\n<div class=\"vesta-row-targets\" id=\"rowTargets\" aria-hidden=\"true\">\n    <span class=\"vesta-row-target\" id=\"cell-1\"><\/span><br \/>\n    <span class=\"vesta-row-target\" id=\"cell-2\"><\/span><br \/>\n    <span class=\"vesta-row-target\" id=\"cell-3\"><\/span><br \/>\n    <span class=\"vesta-row-target\" id=\"cell-4\"><\/span>\n  <\/div>\n<\/div>\n<p><script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const hero = document.getElementById(\"vestaLogsHero\");\n  const img = document.getElementById(\"logsImg\");\n  const tags = Array.from(document.querySelectorAll(\"#floatTags .vesta-float-tag\"));\n  const targetsWrap = document.getElementById(\"rowTargets\");<\/p>\n<p>  if (!hero || !img || !tags.length || !targetsWrap) return;<\/p>\n<p>  let deltas = null;\n  let raf = null;<\/p>\n<p>  const clamp = (n, a, b) => Math.max(a, Math.min(b, n));<\/p>\n<p>  function getHeroRelativeRect(el) {\n    const r = el.getBoundingClientRect();\n    const h = hero.getBoundingClientRect();\n    return { left: r.left - h.left, top: r.top - h.top };\n  }<\/p>\n<p>  function computeDeltas() {\n    \/\/ Importante: reset para medir desde posici\u00f3n original\n    tags.forEach(t => (t.style.transform = \"translate3d(0,0,0)\"));<\/p>\n<p>    \/\/ Forzamos reflow estable\n    hero.offsetHeight;<\/p>\n<p>    deltas = tags.map(tag => {\n      const targetId = tag.getAttribute(\"data-target\");\n      const target = document.getElementById(targetId);\n      if (!target) return { dx: 0, dy: 0 };<\/p>\n<p>      const tagPos = getHeroRelativeRect(tag);\n      const targetPos = getHeroRelativeRect(target);<\/p>\n<p>      return {\n        dx: targetPos.left - tagPos.left,\n        dy: targetPos.top - tagPos.top\n      };\n    });\n  }<\/p>\n<p>  \/\/ Progreso de animaci\u00f3n basado en scroll dentro del viewport\n  function getProgress() {\n    const r = hero.getBoundingClientRect();\n    const vh = window.innerHeight || document.documentElement.clientHeight;<\/p>\n<p>    \/\/ 0 cuando el hero est\u00e1 \u201cm\u00e1s abajo\u201d (a\u00fan no entr\u00f3)\n    \/\/ 1 cuando ya est\u00e1 bien dentro (aprox. centrado)\nconst start = vh * 0.55;\nconst end   = vh * 0.15;<\/p>\n<p>    const t = (start - r.top) \/ (start - end);\n    return clamp(t, 0, 1);\n  }<\/p>\n<p>  function render() {\n    if (!deltas) return;<\/p>\n<p>    const p = getProgress();<\/p>\n<p>    tags.forEach((tag, i) => {\n      const d = deltas[i] || { dx: 0, dy: 0 };\n      tag.style.transform = `translate3d(${d.dx * p}px, ${d.dy * p}px, 0)`;\n      tag.style.opacity = \"1\";\n    });<\/p>\n<p>    raf = null;\n  }<\/p>\n<p>  function requestRender() {\n    if (raf) return;\n    raf = requestAnimationFrame(render);\n  }<\/p>\n<p>  function init() {\n    computeDeltas();\n    requestRender();\n  }<\/p>\n<p>  \/\/ Recalcular cuando la imagen termine de cargar (clave)\n  if (img.complete) init();\n  else img.addEventListener(\"load\", init);<\/p>\n<p>  window.addEventListener(\"scroll\", requestRender, { passive: true });\n  window.addEventListener(\"resize\", () => {\n    deltas = null;\n    init();\n  });\n});\n<\/script><\/p>\n<\/div>\n<h2><span style=\"color: #004d80;\">Menos fricci\u00f3n.<\/span> <br \/>\n<span style=\"color: #004d80;\">M\u00e1s trabajo hecho.<\/span><br \/>\n<\/h2>\n<div>\n<div class=\"vesta-cta\">\n  <a class=\"vesta-cta__btn\" href=\"https:\/\/dashboard.vesta.works\/signup\/9ffd8021-e0b8-11f0-96ca-0050569ddf4e\/es\">Pru\u00e9balo gratis con tu equipo<\/a><\/p>\n<p class=\"vesta-cta__note\"><span class=\"vesta-cta__asterisk\">*<\/span> No se requiere tarjeta de cr\u00e9dito<\/p>\n<\/div>\n<\/div>\n<div>\n<p>    <!-- ========================= --><br \/>\n<!-- VESTA \u2013 Foto + m\u00e9tricas   --><br \/>\n<!-- ========================= --><\/p>\n<section class=\"vesta-metrics-photo\" id=\"vestaMetricsPhoto\" aria-label=\"M\u00e9tricas VESTA\">\n<div class=\"vesta-metrics-photo__media\">\n    <img\n      src=\"\/wp-content\/uploads\/2026\/01\/limpiadora.jpg\"\n      alt=\"Operaria registrando limpiezas con VESTA\"\n      class=\"vesta-metrics-photo__img\"\n      loading=\"lazy\"\n      decoding=\"async\"\n    \/><\/p>\n<p>    <!-- Overlay inferior con 2 m\u00e9tricas --><\/p>\n<div class=\"vesta-metrics-photo__overlay\">\n<div class=\"vesta-metric\">\n<div class=\"vesta-metric__value\">\n          <span class=\"vesta-metric__num js-metric-count\" data-target=\"25\">0<\/span>\n        <\/div>\n<div class=\"vesta-metric__label\">\n          Registros de limpieza<br \/>registrados\n        <\/div>\n<\/p><\/div>\n<div class=\"vesta-metric\">\n<div class=\"vesta-metric__value\">\n          <span class=\"vesta-metric__num js-metric-count\" data-target=\"90\" data-suffix=\"%\">0<\/span><span class=\"vesta-metric__suffix\">%<\/span>\n        <\/div>\n<div class=\"vesta-metric__label\">\n          Menos tiempo<br \/>operativo\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n(function(){\n  const section = document.getElementById('vestaMetricsPhoto');\n  if(!section) return;<\/p>\n<p>  const nums = Array.from(section.querySelectorAll('.js-metric-count'));\n  if(!nums.length) return;<\/p>\n<p>  let played = false;<\/p>\n<p>  function animateCount(el, target, duration){\n    const start = performance.now();\n    const from = 0;<\/p>\n<p>    function tick(now){\n      const t = Math.min(1, (now - start) \/ duration);\n      const eased = 1 - Math.pow(1 - t, 3); \/\/ easeOutCubic\n      const value = Math.round(from + (target - from) * eased);<\/p>\n<p>      el.textContent = value.toString();<\/p>\n<p>      if(t < 1) requestAnimationFrame(tick);\n      else el.textContent = target.toString();\n    }\n    requestAnimationFrame(tick);\n  }\n\n  const DURATION = 1600; \/\/ ambos a la vez, misma duraci\u00f3n\n\n  const io = new IntersectionObserver((entries)=>{\n    entries.forEach(entry=>{\n      if(entry.isIntersecting && !played){\n        played = true;\n        nums.forEach(el=>{\n          const target = parseInt(el.getAttribute('data-target'), 10) || 0;\n          animateCount(el, target, DURATION);\n        });\n        io.disconnect();\n      }\n    });\n  }, { threshold: 0.35 });<\/p>\n<p>  io.observe(section);\n})();\n<\/script><\/p>\n<\/div>\n<h2><span style=\"color: #004d80;\">Mira lo f\u00e1cil que es empezar con VESTA<\/span><br \/>\n<\/h2>\n<div><span style=\"color: #004d80;\">Crea una ubicaci\u00f3n, unos cuantos espacios, a\u00f1ade usuarios\u2026 y empieza. La mayor\u00eda de los equipos est\u00e1n listos en minutos.<\/span>\n<\/div>\n<div>\n<p>    <!-- V\u00cdDEO (VESTA tutorial) --><\/p>\n<section class=\"vesta-video\">\n<div class=\"vesta-video__frame\">\n    <video \nclass=\"vesta-video__player\"\n      controls\n      playsinline\n      preload=\"metadata\"\n      poster=\"\/wp-content\/uploads\/2026\/01\/poster-en.jpg\"\n    ><source src=\"\/wp-content\/uploads\/2026\/01\/4_VESTA-TUTORIAL_ESP.mp4\" type=\"video\/mp4\" \/>Tu navegador no soporta la reproducci\u00f3n de v\u00eddeo.<\/video>\n  <\/div>\n<\/section>\n<\/div>\n<div>\n<div class=\"vesta-cta\">\n  <a class=\"vesta-cta__btn\" href=\"https:\/\/dashboard.vesta.works\/signup\/9ffd8021-e0b8-11f0-96ca-0050569ddf4e\/es\">Pru\u00e9balo gratis con tu equipo<\/a><\/p>\n<p class=\"vesta-cta__note\"><span class=\"vesta-cta__asterisk\">*<\/span> No se requiere tarjeta de cr\u00e9dito<\/p>\n<\/div>\n<\/div>\n<h3><span style=\"color: #004d80;\">Preguntas frecuentes<\/span><br \/>\n<\/h3>\n<ul>\n<li>\n<h3>\u00bfQu\u00e9 es VESTA?<\/h3>\n<div>VESTA es un sistema digital sencillo para registrar tareas de limpieza.<br \/>\nEn lugar de hojas en papel, tu equipo registra las limpiezas en segundos desde su m\u00f3vil.\n<\/div>\n<\/li>\n<li>\n<h3>\u00bfCu\u00e1nto se tarda en configurarlo?<\/h3>\n<div>Se configura en minutos.<br \/>\nCrea una ubicaci\u00f3n, a\u00f1ade algunos espacios y usuarios, y empieza a registrar de inmediato.\n<\/div>\n<\/li>\n<li>\n<h3>\u00bfMi equipo de limpieza necesita formaci\u00f3n?<\/h3>\n<div>No.<br \/>\nEscanean un QR o seleccionan el espacio en la aplicaci\u00f3n.<br \/>\nEso es todo.<\/p>\n<\/div>\n<\/li>\n<li>\n<h3>\u00bfQu\u00e9 ahorro realmente?<\/h3>\n<div>Tiempo y dinero.<br \/>\nMenos trabajo administrativo, cero papel y visibilidad total de qu\u00e9 se ha limpiado, cu\u00e1ndo y qui\u00e9n lo ha limpiado.<\/p>\n<\/div>\n<\/li>\n<\/ul>\n<h3><span style=\"color: #004d80;\">Cont\u00e1ctanos<\/span><\/h3>\n<div>\n\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f278-o1\" lang=\"es-ES\" dir=\"ltr\" data-wpcf7-id=\"278\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/es\/wp-json\/wp\/v2\/pages\/7#wpcf7-f278-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Formulario de contacto\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"278\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"es_ES\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f278-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"lang\" value=\"es\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<div class=\"vesta-cf7-grid\">\n\t<div class=\"vesta-cf7-row vesta-cf7-row--2\">\n\t\t<p><label> Nombre *<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"name\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span><br \/>\n<\/label>\n\t\t<\/p>\n\t\t<p><label> Email *<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" autocomplete=\"email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span><br \/>\n<\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"vesta-cf7-row vesta-cf7-row--2\">\n\t\t<p><label> Tel\u00e9fono m\u00f3vil *<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-phone\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"tel\" name=\"your-phone\" \/><\/span><br \/>\n<\/label>\n\t\t<\/p>\n\t\t<p><label> Empresa *<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"your-company\" \/><\/span><br \/>\n<\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"vesta-cf7-row vesta-cf7-row--1\">\n\t\t<p><label> Mensaje<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" name=\"your-message\"><\/textarea><\/span><br \/>\n<\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"vesta-cf7-row vesta-cf7-row--1 vesta-cf7-acceptance\">\n\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"acepto\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"acepto\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">Acepto los <a href=\"https:\/\/vesta.works\/es\/terms-and-conditions-of-use\/\" class=\"vesta-cf7-link\" target=\"_blank\">t\u00e9rminos y condiciones de uso<\/a>.<\/span><\/label><\/span><\/span><\/span>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"vesta-cf7-row vesta-cf7-row--1 vesta-cf7-actions\">\n\t\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Enviar\" \/>\n\t\t<\/p>\n\t<\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n<p><!--more--><br \/>\n<!-- {\"type\":\"layout\",\"children\":[{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"image_position\":\"center-center\",\"padding\":\"large\",\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #004d80;\\\">Cada registro de limpieza en papel desperdicia<\\\/span>\\n<span style=\\\"color: #00a2ff;\\\"><br \/>45 segundos de <br \/>trabajo real.<\\\/span>\\n\",\"text_align\":\"center\",\"title_element\":\"h1\",\"title_style\":\"heading-large\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"<span style=\\\"color: #004d80;\\\">Apuntarlo a mano.<br \/>\\nRecoger las hojas en papel.<br \/>\\nVolver a pasar todo a Excel.<br \/>\\n<span style=\\\"font-weight: 700\\\">Nada de esto es trabajo real.<\\\/span><\\\/span>\\n\",\"margin\":\"large\",\"text_align\":\"center\",\"text_style\":\"large\"}}]}],\"props\":{\"margin\":\"remove-vertical\",\"width\":\"large\"}}],\"name\":\"HERO ES\"},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"padding\":\"none\",\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"\n\n<section class=\\\"vesta-compare\\\" aria-label=\\\"Comparativa papel frente a VESTA\\\" id=\\\"vestaCompare\\\">\\n  \n\n<div class=\\\"vesta-compare__grid\\\">\\n    <!-- IZQUIERDA: PAPER -->\\n    <\/p>\n<div class=\\\"vesta-compare__side vesta-compare__side--paper\\\">\\n      <\/p>\n<div class=\\\"vesta-compare__content\\\">\\n        <\/p>\n<p class=\\\"vesta-compare__kicker\\\">PAPEL<\\\/p>\\n\\n        <\/p>\n<div class=\\\"vesta-compare__metric\\\">\\n          <span class=\\\"vesta-compare__value js-count\\\" data-target=\\\"45\\\">0<\\\/span>\\n          <span class=\\\"vesta-compare__unit\\\">segundos<\\\/span>\\n        <\\\/div>\\n\\n        <\/p>\n<p class=\\\"vesta-compare__caption\\\">por registro de limpieza<\\\/p>\\n      <\\\/div>\\n    <\\\/div>\\n\\n    <!-- DERECHA: VESTA -->\\n    <\/p>\n<div class=\\\"vesta-compare__side vesta-compare__side--vesta\\\">\\n      <\/p>\n<div class=\\\"vesta-compare__content\\\">\\n        <\/p>\n<p class=\\\"vesta-compare__kicker\\\">VESTA<span class=\\\"vesta-compare__tm\\\">\\u2122<\\\/span><\\\/p>\\n\\n        <\/p>\n<div class=\\\"vesta-compare__metric\\\">\\n          <span class=\\\"vesta-compare__value js-count\\\" data-target=\\\"5\\\">0<\\\/span>\\n          <span class=\\\"vesta-compare__unit\\\">segundos<\\\/span>\\n        <\\\/div>\\n\\n        <\/p>\n<p class=\\\"vesta-compare__caption\\\">por registro de limpieza<\\\/p>\\n      <\\\/div>\\n    <\\\/div>\\n\\n    <!-- IMAGEN CENTRAL -->\\n    <\/p>\n<div class=\\\"vesta-compare__center\\\" aria-hidden=\\\"true\\\">\\n      <img\\n        src=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/papelapp2.png\\\"\\n        alt=\\\"\\\"\\n        class=\\\"vesta-compare__center-img\\\"\\n        loading=\\\"lazy\\\"\\n        decoding=\\\"async\\\"\\n      \\\/>\\n    <\\\/div>\\n  <\\\/div>\\n<\\\/section>\\n\\n<script>\\n(function(){\\n  const section = document.getElementById('vestaCompare');\\n  if(!section) return;\\n\\n  const counters = Array.from(section.querySelectorAll('.js-count'));\\n  if(!counters.length) return;\\n\\n  let played = false;\\n\\n  function animateCount(el, target, duration){\\n    const start = performance.now();\\n    const from = 0;\\n\\n    function tick(now){\\n      const t = Math.min(1, (now - start) \\\/ duration);\\n      \\\/\\\/ easeOutCubic\\n      const eased = 1 - Math.pow(1 - t, 3);\\n      const value = Math.round(from + (target - from) * eased);\\n      el.textContent = value.toString();\\n\\n      if(t < 1) requestAnimationFrame(tick);\\n      else el.textContent = target.toString();\\n    }\\n    requestAnimationFrame(tick);\\n  }\\n\\n  \\\/\\\/ Duraciones \\u201ccomparativas\\u201d (ajusta si quieres)\\n  function getDuration(target){\\n    if(target >= 40) return 5000; \\\/\\\/ PAPEL 45 -> m\\u00e1s lento\\n    if(target <= 10) return 2000; \\\/\\\/ VESTA 5 -> m\\u00e1s r\\u00e1pido\\n    return 2000;\\n  }\\n\\n  \\\/\\\/ (Opcional) un pel\\u00edn de delay al de PAPEL para enfatizar diferencia\\n  function getDelay(target){\\n    if(target >= 40) return 150; \\\/\\\/ PAPEL arranca un instante despu\\u00e9s\\n    return 0;\\n  }\\n\\n  const io = new IntersectionObserver((entries) => {\\n    entries.forEach(entry => {\\n      if(entry.isIntersecting && !played){\\n        played = true;\\n\\n        counters.forEach((el) => {\\n          const target = parseInt(el.getAttribute('data-target'), 10) || 0;\\n          const duration = getDuration(target);\\n          const delay = getDelay(target);\\n\\n          setTimeout(() => animateCount(el, target, duration), delay);\\n        });\\n\\n        io.disconnect();\\n      }\\n    });\\n  }, { threshold: 0.35 });\\n\\n  io.observe(section);\\n})();\\n<\\\/script>\\n\",\"css\":\"\\\/* =============== *\\\/\\n\\\/* PAPER vs VESTA  *\\\/\\n\\\/* =============== *\\\/\\n.vesta-compare{\\n  width: 100%;\\n  overflow: hidden;\\n}\\n\\n\\\/* Desktop \\\/ tablet: 2 columnas *\\\/\\n.vesta-compare__grid{\\n  position: relative;\\n  display: grid;\\n  grid-template-columns: 1fr 1fr;\\n  width: 100%;\\n  min-height: clamp(260px, 42vw, 600px);\\n  overflow: visible;\\n}\\n\\n\\\/* Lados *\\\/\\n.vesta-compare__side{\\n  width: 100%;\\n  min-width: 0;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 0;\\n  text-align: center;\\n\\n  position: relative;\\n  z-index: 2;\\n}\\n\\n\\\/* Fondos *\\\/\\n.vesta-compare__side--paper{ background: #d9d9d9; }\\n.vesta-compare__side--vesta{ background: linear-gradient(135deg, #168BF3, #012240); }\\n\\n\\\/* Contenido *\\\/\\n.vesta-compare__content{\\n  max-width: 520px;\\n  padding: clamp(18px, 3vw, 44px);\\n}\\n\\n.vesta-compare__kicker{\\n  margin: 0 0 clamp(18px, 3vw, 34px);\\n  font-weight: 600;\\n  text-transform: uppercase;\\n  font-size: clamp(18px, 2.6vw, 44px);\\n  line-height: 1;\\n}\\n\\n.vesta-compare__side--paper .vesta-compare__kicker{ color: #ffffff; opacity: 0.95; }\\n.vesta-compare__side--vesta .vesta-compare__kicker{ color: #ffffff; }\\n\\n.vesta-compare__tm{\\n  font-size: 0.45em;\\n  vertical-align: super;\\n  margin-left: 2px;\\n  opacity: 0.9;\\n}\\n\\n.vesta-compare__metric{\\n  display: inline-flex;\\n  flex-direction: column;\\n  align-items: center;\\n  gap: clamp(6px, 1.2vw, 10px);\\n}\\n\\n.vesta-compare__value{\\n  font-weight: 600;\\n  font-size: clamp(76px, 12vw, 160px);\\n  line-height: 0.95;\\n  letter-spacing: -0.02em;\\n}\\n\\n.vesta-compare__unit{\\n  font-weight: 500;\\n  font-size: clamp(18px, 2.8vw, 44px);\\n  line-height: 1.05;\\n}\\n\\n.vesta-compare__caption{\\n  margin: clamp(10px, 2vw, 18px) 0 0;\\n  font-weight: 400;\\n  font-size: clamp(14px, 2vw, 22px);\\n  opacity: 0.95;\\n}\\n\\n\\\/* Colores texto por lado *\\\/\\n.vesta-compare__side--paper .vesta-compare__value,\\n.vesta-compare__side--paper .vesta-compare__unit,\\n.vesta-compare__side--paper .vesta-compare__caption{\\n  color: #ffffff;\\n}\\n\\n.vesta-compare__side--vesta .vesta-compare__value,\\n.vesta-compare__side--vesta .vesta-compare__unit,\\n.vesta-compare__side--vesta .vesta-compare__caption{\\n  color: #ffffff;\\n}\\n\\n\\\/* Imagen central (desktop): superpuesta *\\\/\\n.vesta-compare__center{\\n  position: absolute;\\n  left: 49.9%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  width: min(320px, 48vw);\\n  pointer-events: none;\\n  z-index: 10;\\n}\\n\\n.vesta-compare__center-img{\\n  width: 100%;\\n  height: auto;\\n  display: block;\\n}\\n\\n\\\/* ===================== *\\\/\\n\\\/* M\\u00d3VIL: 1 columna       *\\\/\\n\\\/* PAPER arriba, IMG medio, VESTA abajo *\\\/\\n\\\/* ===================== *\\\/\\n\\n@media (max-width: 900px){\\n  .vesta-compare__grid{\\n    grid-template-columns: 1fr !important;\\n    grid-template-rows: auto auto; \\\/* paper y vesta (la imagen flota) *\\\/\\n    min-height: unset;\\n    position: relative;\\n  }\\n\\n  \\\/* Orden en columna *\\\/\\n  .vesta-compare__side--paper{ grid-column: 1; grid-row: 1; }\\n  .vesta-compare__side--vesta{ grid-column: 1; grid-row: 2; }\\n\\n  \\\/* Reservamos espacio para que la imagen flote entre ambos *\\\/\\n  .vesta-compare__side--paper .vesta-compare__content{\\n    padding: 50px 16px 200px; \\\/* deja hueco abajo para la imagen *\\\/\\n  }\\n\\n  .vesta-compare__side--vesta .vesta-compare__content{\\n    padding: 200px 16px 50px; \\\/* deja hueco arriba para la imagen *\\\/\\n  }\\n\\n  \\\/* Tipos un poco m\\u00e1s peque\\u00f1os *\\\/\\n  .vesta-compare__kicker{\\n    font-size: 20px;\\n    margin-bottom: 14px;\\n  }\\n\\n  .vesta-compare__value{\\n    font-size: 64px;\\n  }\\n\\n  .vesta-compare__unit{\\n    font-size: 18px;\\n  }\\n\\n  .vesta-compare__caption{\\n    font-size: 14px;\\n    margin-top: 10px;\\n  }\\n\\n  \\\/* IMAGEN: vuelve a flotar y atraviesa ambos fondos *\\\/\\n  .vesta-compare__center{\\n    position: absolute;\\n    left: 50%;\\n    top: 50%;                    \\\/* justo entre los dos bloques *\\\/\\n    transform: translate(-50%, -50%);\\n  width: min(260px, 78vw); \\\/* m\\u00e1s peque\\u00f1a en m\\u00f3vil *\\\/\\n    margin: 0;\\n    z-index: 10;\\n    pointer-events: none;\\n  }\\n\\n  .vesta-compare__center-img{\\n    width: 100%;\\n    height: auto;\\n    display: block;\\n    background: transparent !important; \\\/* por si alg\\u00fan estilo global mete fondo *\\\/\\n  }\\n}\\n\\n\\n\"}}]}]}],\"name\":\"COMPARATIVA\"},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"image_position\":\"center-center\",\"overlap\":false,\"padding\":\"large\",\"padding_remove_top\":false,\"preserve_color\":false,\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"<\/p>\n<section class=\\\"vesta-simulator vesta-simulator--calc\\\" id=\\\"simulador\\\">\\n  <\/p>\n<h2 class=\\\"vesta-sim-title\\\">Ahora apl\\u00edcalo a tu operativa diaria.<\\\/h2>\\n  <\/p>\n<div class=\\\"vesta-calc\\\">\\n    <\/p>\n<div class=\\\"vesta-calc__panel\\\">\\n      <\/p>\n<div class=\\\"vesta-calc__fields\\\" role=\\\"group\\\" aria-label=\\\"Entradas de la calculadora\\\">\\n        <!-- Empleados -->\\n        <\/p>\n<div class=\\\"vesta-calc__field\\\">\\n          <label class=\\\"vesta-calc__label\\\" for=\\\"vestaEmployees\\\">N\\u00famero de empleados<\\\/label>\\n          <input\\n            id=\\\"vestaEmployees\\\"\\n            class=\\\"vesta-calc__input\\\"\\n            type=\\\"number\\\"\\n            inputmode=\\\"numeric\\\"\\n            min=\\\"1\\\"\\n            max=\\\"10000\\\"\\n            step=\\\"1\\\"\\n            value=\\\"5\\\"\\n          \\\/>\\n        <\\\/div>\\n\\n        <!-- Registros diarios por empleado -->\\n        <\/p>\n<div class=\\\"vesta-calc__field\\\">\\n          <label class=\\\"vesta-calc__label\\\" for=\\\"vestaRecords\\\">Registros diarios por empleado<\\\/label>\\n          <input\\n            id=\\\"vestaRecords\\\"\\n            class=\\\"vesta-calc__input\\\"\\n            type=\\\"number\\\"\\n            inputmode=\\\"numeric\\\"\\n            min=\\\"1\\\"\\n            max=\\\"10000\\\"\\n            step=\\\"1\\\"\\n            value=\\\"25\\\"\\n          \\\/>\\n        <\\\/div>\\n\\n        <!-- Coste por hora -->\\n        <\/p>\n<div class=\\\"vesta-calc__field\\\">\\n          <label class=\\\"vesta-calc__label\\\" for=\\\"vestaHourlyCost\\\">Coste por hora del empleado (\\u20ac)<\\\/label>\\n          <input\\n            id=\\\"vestaHourlyCost\\\"\\n            class=\\\"vesta-calc__input\\\"\\n            type=\\\"number\\\"\\n            inputmode=\\\"decimal\\\"\\n            min=\\\"0\\\"\\n            max=\\\"100000\\\"\\n            step=\\\"0.5\\\"\\n            value=\\\"18\\\"\\n          \\\/>\\n        <\\\/div>\\n      <\\\/div>\\n\\n      <!--<button class=\\\"vesta-calc__btn\\\" type=\\\"button\\\" id=\\\"vestaCalcBtn\\\">\\n        Calcula tu p\\u00e9rdida anual\\n      <\\\/button>-->\\n    <\\\/div>\\n  <\/p>\n<p class=\\\"vesta-calc__note\\\">\\n    Cambia los n\\u00fameros de arriba seg\\u00fan tu actividad. Las horas y el ahorro se actualizan al instante.\\n  <\\\/p>\\n    <\/p>\n<div class=\\\"vesta-calc__results\\\" aria-live=\\\"polite\\\">\\n      <\/p>\n<p class=\\\"vesta-calc__line\\\">\\n        Est\\u00e1s perdiendo <span id=\\\"vestaHours\\\" class=\\\"vesta-calc__highlight\\\">226 horas<\\\/span> cada a\\u00f1o con registros de limpieza en papel.\\n      <\\\/p>\\n      <\/p>\n<p class=\\\"vesta-calc__line\\\">\\n        Es decir, <span id=\\\"vestaCost\\\" class=\\\"vesta-calc__highlight\\\">4.062 \\u20ac<\\\/span> desperdiciados cada a\\u00f1o en papeleo.\\n      <\\\/p>\\n\\n      <\/p>\n<p class=\\\"vesta-calc__note\\\" id=\\\"vestaNote\\\">\\n        *Basado en 5 empleados completando 25 registros al d\\u00eda, con un coste por hora de 18,00 \\u20ac por empleado, durante 260 d\\u00edas laborables al a\\u00f1o.\\n      <\\\/p>\\n    <\\\/div>\\n  <\\\/div>\\n<\\\/section>\\n\\n<script>\\n  (function () {\\n    const WORK_DAYS = 260;\\n\\n    \\\/\\\/ Mantengo 40 para no cambiar los n\\u00fameros del ejemplo actual.\\n    const SECONDS_LOST_PER_RECORD = 40;\\n\\n    const elEmployees = document.getElementById(\\\"vestaEmployees\\\");\\n    const elRecords = document.getElementById(\\\"vestaRecords\\\");\\n    const elHourly = document.getElementById(\\\"vestaHourlyCost\\\");\\n\\n    const elHours = document.getElementById(\\\"vestaHours\\\");\\n    const elCost = document.getElementById(\\\"vestaCost\\\");\\n    const elNote = document.getElementById(\\\"vestaNote\\\");\\n\\n    \\\/\\\/ \\u2705 Formato espa\\u00f1ol garantizado (miles con punto \\\/ decimales con coma)\\n    const fmtInt = (n) =>\\n      new Intl.NumberFormat(\\\"es-ES\\\", {\\n        useGrouping: true,\\n        maximumFractionDigits: 0\\n      }).format(Number(n));\\n\\n    const fmt2 = (n) =>\\n      new Intl.NumberFormat(\\\"es-ES\\\", {\\n        useGrouping: true,\\n        minimumFractionDigits: 2,\\n        maximumFractionDigits: 2\\n      }).format(Number(n));\\n\\n    \\\/\\\/ \\u2705 \\u20ac a la derecha + miles con punto garantizado\\n    const fmtMoney = (n) => `${fmtInt(n)} \\u20ac`;\\n\\n    function readNumber(input) {\\n      \\\/\\\/ Permite que el usuario escriba coma o punto\\n      const val = parseFloat(String(input.value).replace(\\\",\\\", \\\".\\\"));\\n      return Number.isFinite(val) ? val : 0;\\n    }\\n\\n    function calculate() {\\n      const employees = Math.max(0, Math.floor(readNumber(elEmployees)));\\n      const records = Math.max(0, Math.floor(readNumber(elRecords)));\\n      const hourly = Math.max(0, readNumber(elHourly));\\n\\n      const totalRecords = employees * records * WORK_DAYS;\\n      const totalSeconds = totalRecords * SECONDS_LOST_PER_RECORD;\\n      const hours = totalSeconds \\\/ 3600;\\n\\n      const roundedHours = Math.round(hours);\\n      const wasted = Math.floor(hours * hourly); \\\/\\\/ mantengo tu l\\u00f3gica original\\n\\n      elHours.textContent = `${fmtInt(roundedHours)} horas`;\\n      elCost.textContent = fmtMoney(wasted);\\n\\n      elNote.textContent =\\n        `*Basado en ${fmtInt(employees)} empleados completando ${fmtInt(records)} registros al d\\u00eda, ` +\\n        `con un coste por hora de ${fmt2(hourly)} \\u20ac por empleado, durante ${WORK_DAYS} d\\u00edas laborables al a\\u00f1o.`;\\n    }\\n\\n    [\\\"input\\\", \\\"change\\\"].forEach((evt) => {\\n      elEmployees.addEventListener(evt, calculate);\\n      elRecords.addEventListener(evt, calculate);\\n      elHourly.addEventListener(evt, calculate);\\n    });\\n\\n    \\\/\\\/ C\\u00e1lculo inicial\\n    calculate();\\n  })();\\n<\\\/script>\\n\",\"css\":\"\\\/* ===================== *\\\/\\n\\\/* VESTA Simulator Calc  *\\\/\\n\\\/* ===================== *\\\/\\n.vesta-simulator--calc {\\n  text-align: center;\\n}\\n\\n.vesta-sim-title {\\n  font-size: 46px;\\n  font-weight: 700;\\n  line-height: 1.1;\\n  color: #004d80;\\n  margin: 0 0 28px;\\n}\\n\\n.vesta-calc {\\n  margin: 0 auto;\\n  max-width: 1200px;\\n}\\n\\n.vesta-calc__panel {\\n  padding: 40px;\\n  background: #ffffff;\\n}\\n\\n.vesta-calc__fields {\\n  display: grid;\\n  grid-template-columns: repeat(3, minmax(180px, 1fr));\\n  gap: 24px;\\n  align-items: end;\\n  justify-items: center;\\n}\\n\\n.vesta-calc__field {\\n  width: 100%;\\n}\\n\\n.vesta-calc__label {\\n  display: block;\\n  font-size: 18px;\\n  font-weight: 500;\\n  color: #004d80;\\n  margin: 0 0 12px;\\n}\\n\\n.vesta-calc__input {\\n  width: -webkit-fill-available;\\n  height: 50px;\\n  border-radius: 14px;\\n  border: 0;\\n  outline: none;\\n  text-align: center;\\n  font-size: 20px;\\n  font-weight: 700;\\n  color: #ffffff;\\n  background: linear-gradient(180deg, #0b4c86, #05325b);\\n}\\n\\n\\\/* Quitar spinners (Chrome\\\/Edge\\\/Safari) *\\\/\\n.vesta-calc__input::-webkit-outer-spin-button,\\n.vesta-calc__input::-webkit-inner-spin-button {\\n  -webkit-appearance: none;\\n  margin: 0;\\n}\\n\\\/* Quitar spinners (Firefox) *\\\/\\n.vesta-calc__input[type=\\\"number\\\"] {\\n  -moz-appearance: textfield;\\n}\\n\\n.vesta-calc__btn {\\n  margin: 60px auto 0;\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 54px;\\n  padding: 0 34px;\\n  border-radius: 14px;\\n  border: 0;\\n  cursor: pointer;\\n  background: #00a2ff;\\n  color: #ffffff;\\n  font-size: 20px;\\n  font-weight: 700;\\n  transition: transform 0.12s ease, opacity 0.12s ease;\\n}\\n\\n.vesta-calc__btn:active {\\n  transform: translateY(1px);\\n}\\n\\n.vesta-calc__results {\\n  margin-top: 46px;\\n  color: #004d80;\\n}\\n\\n.vesta-calc__line {\\n  font-size: 34px;\\n  font-weight: 700;\\n  line-height: 1.25;\\n  margin: 0 0 14px;\\n}\\n\\n.vesta-calc__highlight {\\n  color: #00a2ff;\\n  font-weight: 700;\\n}\\n\\n.vesta-calc__note {\\n  margin-top: 18px;\\n  font-size: 16px;\\n  color: #004d80;\\n  opacity: 0.85;\\n}\\n\\n\\\/* Responsive *\\\/\\n@media (max-width: 900px) {\\n  .vesta-sim-title {\\n    font-size: 36px;\\n  }\\n    \\n    .vesta-calc__panel {\\n  padding: 0px;\\n}\\n\\n  .vesta-calc__fields {\\n    grid-template-columns: 1fr;\\n    gap: 16px;\\n  }\\n\\n  .vesta-calc__btn {\\n    width: 100%;\\n  }\\n\\n  .vesta-calc__line {\\n    font-size: 28px;\\n  }\\n}\\n\"}}]}],\"props\":{\"margin\":\"remove-vertical\",\"width\":\"large\"}}],\"name\":\"CALCULADORA\"},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"css\":\".el-section {\\n    background: linear-gradient(135deg, #168BF3, #012240)\\n}\",\"image_position\":\"center-center\",\"padding\":\"large\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #ffffff;\\\">VESTA elimina esto<br \/>\\nsin cambiar la forma<br \/> en la que trabajas.<\\\/span>\\n\",\"text_align\":\"center\",\"title_element\":\"h2\",\"title_style\":\"heading-large\"}}]}]}]},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"css\":\".el-section {\\n\\tbackground: linear-gradient(to bottom, #aad8eb 0%, #ffffff 100%);\\n}\",\"image_position\":\"center-center\",\"padding\":\"large\",\"padding_remove_bottom\":true,\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #004d80;\\\">Sencillo para tu equipo.<\\\/span>\\n\",\"text_align\":\"center\",\"title_element\":\"h3\",\"title_style\":\"heading-medium\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"<span style=\\\"color: #004d80;\\\">Sin formularios. Sin seguimiento. Nada que hacer despu\\u00e9s.<\\\/span>\\n\",\"margin\":\"small\",\"text_align\":\"center\",\"text_style\":\"large\"}},{\"type\":\"html\",\"props\":{\"content\":\"<\/p>\n<section class=\\\"vesta-steps-phones\\\">\\n  <\/p>\n<div class=\\\"vesta-steps-phones__wrap\\\">\\n\\n    <\/p>\n<div class=\\\"vesta-step-phone\\\">\\n      <\/p>\n<h3 class=\\\"vesta-step-phone__title\\\">Nueva limpieza<\\\/h3>\\n      <img\\n        class=\\\"vesta-step-phone__img\\\"\\n        src=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/movil1-es.png\\\"\\n        alt=\\\"VESTA \\u2013 Empieza a limpiar\\\"\\n        loading=\\\"eager\\\"\\n        decoding=\\\"sync\\\"\\n      \\\/>\\n    <\\\/div>\\n\\n    <\/p>\n<div class=\\\"vesta-step-phone\\\">\\n      <\/p>\n<h3 class=\\\"vesta-step-phone__title\\\">Escanea<\\\/h3>\\n      <img\\n        class=\\\"vesta-step-phone__img\\\"\\n        src=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/scan-es.png\\\"\\n        alt=\\\"VESTA \\u2013 Escanea QR\\\"\\n        loading=\\\"eager\\\"\\n        decoding=\\\"sync\\\"\\n      \\\/>\\n      <\/p>\n<p class=\\\"vesta-step-phone__subtitle\\\">\\n        *\\u00bfNo hay QR? No pasa nada.<br \/>\\n        Empieza a limpiar manualmente\\n      <\\\/p>\\n    <\\\/div>\\n\\n    <\/p>\n<div class=\\\"vesta-step-phone\\\">\\n      <\/p>\n<h3 class=\\\"vesta-step-phone__title\\\">Listo<\\\/h3>\\n      <img\\n        class=\\\"vesta-step-phone__img\\\"\\n        src=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/movil3-es.png\\\"\\n        alt=\\\"VESTA \\u2013 Listo\\\"\\n        loading=\\\"eager\\\"\\n        decoding=\\\"sync\\\"\\n      \\\/>\\n    <\\\/div>\\n\\n  <\\\/div>\\n<\\\/section>\\n\\n<script>\\n(function(){\\n  const items = Array.from(document.querySelectorAll('.vesta-step-phone'));\\n  if(!items.length) return;\\n\\n  \\\/\\\/ Quer\\u00e9is que aparezcan de arriba a abajo (derecha -> centro -> izquierda)\\n  const orderMap = { 0: 2, 1: 1, 2: 0 };\\n  const STAGGER = 160;\\n\\n  const io = new IntersectionObserver((entries) => {\\n    entries.forEach((entry) => {\\n      if(!entry.isIntersecting) return;\\n\\n      const el = entry.target;\\n      const domIdx = items.indexOf(el);\\n      const delayIdx = orderMap[domIdx] ?? domIdx;\\n\\n      setTimeout(() => el.classList.add('is-visible'), delayIdx * STAGGER);\\n      io.unobserve(el);\\n    });\\n  }, {\\n    threshold: 0.22,\\n    rootMargin: \\\"0px 0px -8% 0px\\\"\\n  });\\n\\n  items.forEach(el => io.observe(el));\\n})();\\n<\\\/script>\\n\",\"css\":\"\\n\\\/* ========================== *\\\/\\n\\\/* VESTA \\u2013 3 phones + titles  *\\\/\\n\\\/* ========================== *\\\/\\n.vesta-steps-phones{\\n  width: 100%;\\n  padding: 150px 0;\\n}\\n\\n.vesta-steps-phones__wrap{\\n  \\\/*width: min(1200px, 92vw);*\\\/\\n  margin: 0 auto;\\n  display: grid;\\n  grid-template-columns: repeat(3, 1fr);\\n  gap: clamp(18px, 3vw, 44px);\\n  align-items: start;\\n}\\n\\n\\\/* Card *\\\/\\n.vesta-step-phone{\\n  \\\/* variable para conservar vuestro desfase *\\\/\\n  --shiftY: 0px;\\n\\n  text-align: center;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  gap: clamp(10px, 2vw, 10px);\\n\\n  \\\/* animaci\\u00f3n de entrada *\\\/\\n  opacity: 0;\\n  transform: translateY(var(--shiftY)) translateY(28px);\\n  transition:\\n    transform 900ms cubic-bezier(.2,.9,.2,1),\\n    opacity 700ms ease;\\n  will-change: transform, opacity;\\n}\\n\\n\\\/* cuando entra en viewport *\\\/\\n.vesta-step-phone.is-visible{\\n  opacity: 1;\\n  transform: translateY(var(--shiftY)) translateY(0px);\\n}\\n\\n.vesta-step-phone__title{\\n  margin: 0;\\n  font-size: clamp(26px, 3.2vw, 36px);\\n  font-weight: 700;\\n  color: #004d80;\\n  line-height: 1.05;\\n}\\n\\n.vesta-step-phone__subtitle{\\n  margin: 0;\\n  font-size: clamp(16px, 3.2vw, 16px);\\n  font-weight: 700;\\n  color: #004d80;\\n  line-height: 1.05;\\n}\\n\\n\\\/* Imagen *\\\/\\n.vesta-step-phone__img{\\n  width: auto;\\n  height: auto;\\n  display: block;\\n\\n  \\\/* hover zoom *\\\/\\n  transform: translateZ(0) scale(1);\\n  transition: transform 280ms ease, filter 280ms ease;\\n  will-change: transform;\\n}\\n\\n\\\/* Zoom solo al pasar el rat\\u00f3n por la imagen *\\\/\\n.vesta-step-phone__img:hover{\\n  transform: translateZ(0) scale(1.04);\\n  filter: drop-shadow(0 18px 28px rgba(1, 34, 64, 0.22));\\n}\\n\\n\\\/* Desfase vertical como en la captura (izq m\\u00e1s abajo, dcha m\\u00e1s arriba) *\\\/\\n.vesta-steps-phones__wrap .vesta-step-phone:nth-child(1){ --shiftY: 70px; }\\n.vesta-steps-phones__wrap .vesta-step-phone:nth-child(2){ --shiftY: 0px; }\\n.vesta-steps-phones__wrap .vesta-step-phone:nth-child(3){ --shiftY: -70px; }\\n\\n\\\/* Responsive *\\\/\\n@media (max-width: 900px){\\n  .vesta-steps-phones{\\n    width: 100%;\\n    padding: 0px 0;\\n  }\\n\\n  .vesta-steps-phones__wrap{\\n    grid-template-columns: 1fr;\\n    gap: 120px;\\n  }\\n\\n  \\\/* en m\\u00f3vil quitamos desfase *\\\/\\n  .vesta-steps-phones__wrap .vesta-step-phone{ --shiftY: 0px; }\\n\\n  .vesta-step-phone__img{\\n    width: min(340px, 92vw);\\n  }\\n}\\n\\n\\\/* Accesibilidad: respeta \\u201creduced motion\\u201d *\\\/\\n@media (prefers-reduced-motion: reduce){\\n  .vesta-step-phone,\\n  .vesta-step-phone__img{\\n    transition: none !important;\\n  }\\n  .vesta-step-phone{\\n    opacity: 1 !important;\\n    transform: translateY(var(--shiftY)) !important;\\n  }\\n}\\n\\n\"}}]}]}]},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"css\":\".el-section {\\n\\tbackground: linear-gradient(to bottom, #ffffff 0%, #aad8eb 100%);\\n}\",\"image_position\":\"center-center\",\"padding\":\"large\",\"padding_remove_bottom\":true,\"padding_remove_top\":false,\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #004d80;\\\">Claro para ti.<\\\/span>\\n\",\"text_align\":\"center\",\"title_element\":\"h3\",\"title_style\":\"heading-medium\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"<span style=\\\"color: #004d80;\\\">Cuando alguien te pide un registro, no tienes que buscarlo.<br \/>Ya lo tienes.<\\\/span>\\n\",\"margin\":\"small\",\"text_align\":\"center\",\"text_style\":\"large\"}},{\"type\":\"html\",\"props\":{\"content\":\"<\/p>\n<div class=\\\"vesta-logs-hero\\\" id=\\\"vestaLogsHero\\\">\\n  <\/p>\n<div class=\\\"vesta-logs-hero__computer\\\" id=\\\"logsComputer\\\">\\n    <img\\n      class=\\\"vesta-logs-hero__img\\\"\\n      id=\\\"logsImg\\\"\\n      src=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/dashboard-es.png\\\"\\n      alt=\\\"VESTA \\u2013 Cleaning logs dashboard\\\"\\n      loading=\\\"lazy\\\"\\n      decoding=\\\"async\\\"\\n    \\\/>\\n  <\\\/div>\\n\\n  <!-- Cards flotantes -->\\n  <\/p>\n<div class=\\\"vesta-float-tags\\\" id=\\\"floatTags\\\" aria-hidden=\\\"true\\\">\\n    <\/p>\n<div class=\\\"vesta-float-tag\\\" data-target=\\\"cell-1\\\">01 - 23 - 2026 1:27 PM<\\\/div>\\n    <\/p>\n<div class=\\\"vesta-float-tag\\\" data-target=\\\"cell-2\\\">BlueCrest Senior Living<\\\/div>\\n    <\/p>\n<div class=\\\"vesta-float-tag\\\" data-target=\\\"cell-3\\\">Office Floor 3 \\u2013 Restroom<\\\/div>\\n    <\/p>\n<div class=\\\"vesta-float-tag\\\" data-target=\\\"cell-4\\\">Jose Garcia<\\\/div>\\n  <\\\/div>\\n\\n  <!-- Targets (fila dentro de la tabla) -->\\n  <\/p>\n<div class=\\\"vesta-row-targets\\\" id=\\\"rowTargets\\\" aria-hidden=\\\"true\\\">\\n    <span class=\\\"vesta-row-target\\\" id=\\\"cell-1\\\"><\\\/span>\\n    <span class=\\\"vesta-row-target\\\" id=\\\"cell-2\\\"><\\\/span>\\n    <span class=\\\"vesta-row-target\\\" id=\\\"cell-3\\\"><\\\/span>\\n    <span class=\\\"vesta-row-target\\\" id=\\\"cell-4\\\"><\\\/span>\\n  <\\\/div>\\n<\\\/div>\\n\\n<script>\\ndocument.addEventListener(\\\"DOMContentLoaded\\\", () => {\\n  const hero = document.getElementById(\\\"vestaLogsHero\\\");\\n  const img = document.getElementById(\\\"logsImg\\\");\\n  const tags = Array.from(document.querySelectorAll(\\\"#floatTags .vesta-float-tag\\\"));\\n  const targetsWrap = document.getElementById(\\\"rowTargets\\\");\\n\\n  if (!hero || !img || !tags.length || !targetsWrap) return;\\n\\n  let deltas = null;\\n  let raf = null;\\n\\n  const clamp = (n, a, b) => Math.max(a, Math.min(b, n));\\n\\n  function getHeroRelativeRect(el) {\\n    const r = el.getBoundingClientRect();\\n    const h = hero.getBoundingClientRect();\\n    return { left: r.left - h.left, top: r.top - h.top };\\n  }\\n\\n  function computeDeltas() {\\n    \\\/\\\/ Importante: reset para medir desde posici\\u00f3n original\\n    tags.forEach(t => (t.style.transform = \\\"translate3d(0,0,0)\\\"));\\n\\n    \\\/\\\/ Forzamos reflow estable\\n    hero.offsetHeight;\\n\\n    deltas = tags.map(tag => {\\n      const targetId = tag.getAttribute(\\\"data-target\\\");\\n      const target = document.getElementById(targetId);\\n      if (!target) return { dx: 0, dy: 0 };\\n\\n      const tagPos = getHeroRelativeRect(tag);\\n      const targetPos = getHeroRelativeRect(target);\\n\\n      return {\\n        dx: targetPos.left - tagPos.left,\\n        dy: targetPos.top - tagPos.top\\n      };\\n    });\\n  }\\n\\n  \\\/\\\/ Progreso de animaci\\u00f3n basado en scroll dentro del viewport\\n  function getProgress() {\\n    const r = hero.getBoundingClientRect();\\n    const vh = window.innerHeight || document.documentElement.clientHeight;\\n\\n    \\\/\\\/ 0 cuando el hero est\\u00e1 \\u201cm\\u00e1s abajo\\u201d (a\\u00fan no entr\\u00f3)\\n    \\\/\\\/ 1 cuando ya est\\u00e1 bien dentro (aprox. centrado)\\nconst start = vh * 0.55;\\nconst end   = vh * 0.15;\\n\\n\\n    const t = (start - r.top) \\\/ (start - end);\\n    return clamp(t, 0, 1);\\n  }\\n\\n  function render() {\\n    if (!deltas) return;\\n\\n    const p = getProgress();\\n\\n    tags.forEach((tag, i) => {\\n      const d = deltas[i] || { dx: 0, dy: 0 };\\n      tag.style.transform = `translate3d(${d.dx * p}px, ${d.dy * p}px, 0)`;\\n      tag.style.opacity = \\\"1\\\";\\n    });\\n\\n    raf = null;\\n  }\\n\\n  function requestRender() {\\n    if (raf) return;\\n    raf = requestAnimationFrame(render);\\n  }\\n\\n  function init() {\\n    computeDeltas();\\n    requestRender();\\n  }\\n\\n  \\\/\\\/ Recalcular cuando la imagen termine de cargar (clave)\\n  if (img.complete) init();\\n  else img.addEventListener(\\\"load\\\", init);\\n\\n  window.addEventListener(\\\"scroll\\\", requestRender, { passive: true });\\n  window.addEventListener(\\\"resize\\\", () => {\\n    deltas = null;\\n    init();\\n  });\\n});\\n<\\\/script>\\n\",\"css\":\".vesta-logs-hero{\\n  position: relative;\\n  max-width: 1200px;\\n  margin: 0 auto;\\n  padding-top: 30px;\\n}\\n\\n.vesta-logs-hero__computer{\\n  position: relative;\\n  width: 100%;\\n}\\n\\n.vesta-logs-hero__img{\\n  width: 100%;\\n  height: auto;\\n  display: block;\\n  user-select: none;\\n  -webkit-user-drag: none;\\n}\\n\\n\\\/* Cards flotantes *\\\/\\n.vesta-float-tags{\\n  position: absolute;\\n  inset: 0;\\n  pointer-events: none;\\n  z-index: 5;\\n  top:-100px;\\n}\\n\\n.vesta-float-tag{\\n  position: absolute;\\n  padding: 8px 16px;\\n  border-radius: 12px;\\n  background: rgba(255,255,255,1);\\n  color: #004d80;\\n  font-weight: 700;\\n  font-size: 13px;\\n  transition: transform 650ms cubic-bezier(.2,.9,.2,1);\\n  will-change: transform;\\n  white-space: nowrap;\\n  transform: translate3d(0,0,0);\\n}\\n\\n\\\/* Posici\\u00f3n inicial alrededor (igual idea que la captura) *\\\/\\n.vesta-float-tag:nth-child(1){ top: 18px; left: 10px; }\\n.vesta-float-tag:nth-child(2){ top: 18px; right: 10px; }\\n.vesta-float-tag:nth-child(3){ top: 92px; left: 60px; }\\n.vesta-float-tag:nth-child(4){ top: 92px; right: 90px; }\\n\\n\\\/* Targets (fila dentro de la tabla) *\\\/\\n.vesta-row-targets{\\n  position: absolute;\\n  pointer-events: none;\\n  z-index: 2;\\n\\n  \\\/* Ajusta SOLO esto para clavar la fila sobre la tabla *\\\/\\n  top: 82%;\\n  left: 15%;\\n  width: 72%;\\n  height: 10%;\\n\\n  display: grid;\\n  grid-template-columns: 1fr 1.6fr 1fr 1fr;\\n  align-items: center;\\n  gap: 14px;\\n}\\n\\n.vesta-row-target{\\n  display: block;\\n  height: 1px;\\n}\\n\\n\\\/* Responsive *\\\/\\n@media (max-width: 900px){\\n  .vesta-float-tag{\\n    font-size: 12px;\\n    padding: 10px 14px;\\n    display: none;\\n  }\\n}\\n\"}}]}]}]},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"image_position\":\"center-center\",\"padding\":\"large\",\"padding_remove_top\":false,\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"vertical_align\":\"middle\",\"width_medium\":\"1-2\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #004d80;\\\">Menos fricci\\u00f3n.<\\\/span> <br \/>\\n<span style=\\\"color: #004d80;\\\">M\\u00e1s trabajo hecho.<\\\/span>\\n\",\"text_align\":\"center\",\"title_element\":\"h2\",\"title_font_family\":\"primary\",\"title_style\":\"heading-large\"}},{\"type\":\"html\",\"props\":{\"content\":\"<\/p>\n<div class=\\\"vesta-cta\\\">\\n  <a class=\\\"vesta-cta__btn\\\" href=\\\"https:\\\/\\\/dashboard.vesta.works\\\/signup\\\/9ffd8021-e0b8-11f0-96ca-0050569ddf4e\\\/es\\\">Pru\\u00e9balo gratis con tu equipo<\\\/a>\\n  <\/p>\n<p class=\\\"vesta-cta__note\\\"><span class=\\\"vesta-cta__asterisk\\\">*<\\\/span> No se requiere tarjeta de cr\\u00e9dito<\\\/p>\\n<\\\/div>\\n\",\"css\":\".vesta-cta{\\n  width: 100%;\\n  text-align: center;\\n  margin: 100px auto 0;\\n}\\n\\n.vesta-cta__btn{\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 18px 42px;\\n  border-radius: 16px;\\n\\n  border: 3px solid #00a2ff;\\n  background: #00a2ff;\\n  color: #ffffff;\\n\\n  font-weight: 700;\\n  font-size: 22px;\\n  line-height: 1;\\n  text-decoration: none;\\n\\n  \\\/* \\u2705 transici\\u00f3n suave para TODO lo que cambia *\\\/\\n  transition:\\n    transform 300ms cubic-bezier(.2,.9,.2,1),\\n    background-color 300ms ease,\\n    color 300ms ease,\\n    border-color 300ms ease,\\n    box-shadow 300ms ease;\\n  will-change: transform;\\n}\\n\\n.vesta-cta__btn:hover{\\n  background: #004d80;\\n  border-color: #004d80;\\n  color: #ffffff;\\n  transform: translateY(-5px);\\n}\\n\\n.vesta-cta__btn:active{\\n  transform: translateY(1px);\\n  box-shadow: 0 8px 18px rgba(0, 162, 255, 0.18);\\n}\\n\\n.vesta-cta__note{\\n  margin: 14px 0 0;\\n  font-size: 20px;\\n  font-weight: 700;\\n  color: #004d80;\\n}\\n\\n.vesta-cta__asterisk{\\n  font-weight: 700;\\n  margin-right: 6px;\\n}\\n\"}}]},{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"vertical_align\":\"middle\",\"width_medium\":\"1-2\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"<!-- ========================= -->\\n<!-- VESTA \\u2013 Foto + m\\u00e9tricas   -->\\n<!-- ========================= -->\\n<\/p>\n<section class=\\\"vesta-metrics-photo\\\" id=\\\"vestaMetricsPhoto\\\" aria-label=\\\"M\\u00e9tricas VESTA\\\">\\n  <\/p>\n<div class=\\\"vesta-metrics-photo__media\\\">\\n    <img\\n      src=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/limpiadora.jpg\\\"\\n      alt=\\\"Operaria registrando limpiezas con VESTA\\\"\\n      class=\\\"vesta-metrics-photo__img\\\"\\n      loading=\\\"lazy\\\"\\n      decoding=\\\"async\\\"\\n    \\\/>\\n\\n    <!-- Overlay inferior con 2 m\\u00e9tricas -->\\n    <\/p>\n<div class=\\\"vesta-metrics-photo__overlay\\\">\\n      <\/p>\n<div class=\\\"vesta-metric\\\">\\n        <\/p>\n<div class=\\\"vesta-metric__value\\\">\\n          <span class=\\\"vesta-metric__num js-metric-count\\\" data-target=\\\"25\\\">0<\\\/span>\\n        <\\\/div>\\n        <\/p>\n<div class=\\\"vesta-metric__label\\\">\\n          Registros de limpieza<br \/>registrados\\n        <\\\/div>\\n      <\\\/div>\\n\\n      <\/p>\n<div class=\\\"vesta-metric\\\">\\n        <\/p>\n<div class=\\\"vesta-metric__value\\\">\\n          <span class=\\\"vesta-metric__num js-metric-count\\\" data-target=\\\"90\\\" data-suffix=\\\"%\\\">0<\\\/span><span class=\\\"vesta-metric__suffix\\\">%<\\\/span>\\n        <\\\/div>\\n        <\/p>\n<div class=\\\"vesta-metric__label\\\">\\n          Menos tiempo<br \/>operativo\\n        <\\\/div>\\n      <\\\/div>\\n    <\\\/div>\\n  <\\\/div>\\n<\\\/section>\\n\\n<script>\\n(function(){\\n  const section = document.getElementById('vestaMetricsPhoto');\\n  if(!section) return;\\n\\n  const nums = Array.from(section.querySelectorAll('.js-metric-count'));\\n  if(!nums.length) return;\\n\\n  let played = false;\\n\\n  function animateCount(el, target, duration){\\n    const start = performance.now();\\n    const from = 0;\\n\\n    function tick(now){\\n      const t = Math.min(1, (now - start) \\\/ duration);\\n      const eased = 1 - Math.pow(1 - t, 3); \\\/\\\/ easeOutCubic\\n      const value = Math.round(from + (target - from) * eased);\\n\\n      el.textContent = value.toString();\\n\\n      if(t < 1) requestAnimationFrame(tick);\\n      else el.textContent = target.toString();\\n    }\\n    requestAnimationFrame(tick);\\n  }\\n\\n  const DURATION = 1600; \\\/\\\/ ambos a la vez, misma duraci\\u00f3n\\n\\n  const io = new IntersectionObserver((entries)=>{\\n    entries.forEach(entry=>{\\n      if(entry.isIntersecting && !played){\\n        played = true;\\n        nums.forEach(el=>{\\n          const target = parseInt(el.getAttribute('data-target'), 10) || 0;\\n          animateCount(el, target, DURATION);\\n        });\\n        io.disconnect();\\n      }\\n    });\\n  }, { threshold: 0.35 });\\n\\n  io.observe(section);\\n})();\\n<\\\/script>\\n\",\"css\":\"\\\/* =============================== *\\\/\\n\\\/* VESTA \\u2013 Imagen + m\\u00e9tricas       *\\\/\\n\\\/* =============================== *\\\/\\n.vesta-metrics-photo{\\n  width: 100%;\\n  padding: clamp(40px, 6vw, 90px) 0;\\n}\\n\\n.vesta-metrics-photo__media{\\n  margin: 0 auto;\\n  position: relative;\\n  border-radius: 30px;\\n  overflow: hidden;\\n}\\n\\n.vesta-metrics-photo__img{\\n  width: 100%;\\n  height: auto;\\n  display: block;\\n}\\n\\n\\\/* Overlay inferior *\\\/\\n.vesta-metrics-photo__overlay{\\nposition: absolute;\\n    left: 0;\\n    right: 0;\\n    bottom: 0;\\n    padding: clamp(18px, 3vw, 28px);\\n    display: flex;\\n    justify-content: space-evenly;\\n    gap: clamp(16px, 3vw, 34px);\\n    align-items: end;\\n    background: linear-gradient(to top, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0));\\n}\\n\\n.vesta-metric{\\n  display: flex;\\n  flex-direction: column;\\n  gap: 10px;\\n  align-items: center;\\n}\\n\\n.vesta-metric__value{\\n  line-height: 1;\\n}\\n\\n.vesta-metric__num,\\n.vesta-metric__suffix{\\n  font-size: clamp(56px, 7vw, 92px);\\n  font-weight: 600;\\n  color: #ffffff;\\n}\\n\\n.vesta-metric__suffix{\\n  margin-left: 2px;\\n}\\n\\n.vesta-metric__label{\\nfont-size: clamp(16px, 2.2vw, 30px);\\n    font-weight: 600;\\n    color: rgba(255, 255, 255, 0.95);\\n    text-align: center;\\n    line-height: 40px;\\n}\\n\\n\\\/* Responsive *\\\/\\n@media (max-width: 640px){\\n  .vesta-metrics-photo__overlay{\\n    grid-template-columns: 1fr 1fr; \\\/* se mantiene como la captura *\\\/\\n    padding: 16px;\\n  }\\n\\n  .vesta-metric__label{\\n    font-size: 16px;\\n  }\\n\\n  .vesta-metric__num,\\n  .vesta-metric__suffix{\\n    font-size: 54px;\\n  }\\n}\\n\"}}]}],\"props\":{\"layout\":\"1-2,1-2\"}}]},{\"type\":\"section\",\"props\":{\"css\":\".el-section{\\n   background:#f5f5f7;    \\n}\",\"image_position\":\"center-center\",\"padding\":\"large\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #004d80;\\\">Mira lo f\\u00e1cil que es empezar con VESTA<\\\/span>\\n\",\"text_align\":\"center\",\"title_element\":\"h2\",\"title_style\":\"heading-medium\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"<span style=\\\"color: #004d80;\\\">Crea una ubicaci\\u00f3n, unos cuantos espacios, a\\u00f1ade usuarios\\u2026 y empieza. La mayor\\u00eda de los equipos est\\u00e1n listos en minutos.<\\\/span>\\n\",\"margin\":\"small\",\"text_align\":\"center\",\"text_style\":\"large\"}},{\"type\":\"html\",\"props\":{\"content\":\"<!-- V\\u00cdDEO (VESTA tutorial) -->\\n<\/p>\n<section class=\\\"vesta-video\\\">\\n  <\/p>\n<div class=\\\"vesta-video__frame\\\">\\n    <video\\n      class=\\\"vesta-video__player\\\"\\n      controls\\n      playsinline\\n      preload=\\\"metadata\\\"\\n      poster=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/poster-en.jpg\\\"\\n    >\\n<source src=\\\"\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/4_VESTA-TUTORIAL_ESP.mp4\\\" type=\\\"video\\\/mp4\\\" \\\/>\\n      Tu navegador no soporta la reproducci\\u00f3n de v\\u00eddeo.\\n    <\\\/video>\\n  <\\\/div>\\n<\\\/section>\\n\",\"css\":\"\\\/* ===================== *\\\/\\n\\\/* VESTA \\u2013 Video moderno *\\\/\\n\\\/* ===================== *\\\/\\n.vesta-video{\\n  width: 100%;\\n  margin-top:100px;\\n}\\n\\n\\\/* CAMBIO: antes 1100px -> ahora m\\u00e1s contenido *\\\/\\n.vesta-video__frame{\\n  max-width: 920px;\\n  margin: 0 auto;\\n  position: relative;\\n\\n  aspect-ratio: 16 \\\/ 9;\\n  border-radius: clamp(16px, 2.2vw, 28px);\\n  overflow: hidden;\\n}\\n\\n.vesta-video__player{\\n  width: 100%;\\n  height: 100%;\\n  display: block;\\n  object-fit: cover;\\n}\\n\\n\\\/* En m\\u00f3vil lo mantenemos amplio para que se aproveche el ancho *\\\/\\n@media (max-width: 900px){\\n    \\n  .vesta-video{\\n  margin-top:60px;\\n}\\n\\n  .vesta-video__frame{\\n    max-width: 560px;\\n    border-radius: 18px;\\n  }\\n}\\n\"}},{\"type\":\"html\",\"props\":{\"content\":\"<\/p>\n<div class=\\\"vesta-cta\\\">\\n  <a class=\\\"vesta-cta__btn\\\" href=\\\"https:\\\/\\\/dashboard.vesta.works\\\/signup\\\/9ffd8021-e0b8-11f0-96ca-0050569ddf4e\\\/es\\\">Pru\\u00e9balo gratis con tu equipo<\\\/a>\\n  <\/p>\n<p class=\\\"vesta-cta__note\\\"><span class=\\\"vesta-cta__asterisk\\\">*<\\\/span> No se requiere tarjeta de cr\\u00e9dito<\\\/p>\\n<\\\/div>\\n\",\"css\":\".vesta-cta{\\n  width: 100%;\\n  text-align: center;\\n  margin: 100px auto 0;\\n}\\n\\n.vesta-cta__btn{\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 18px 42px;\\n  border-radius: 16px;\\n\\n  border: 3px solid #00a2ff;\\n  background: #00a2ff;\\n  color: #ffffff;\\n\\n  font-weight: 700;\\n  font-size: 22px;\\n  line-height: 1;\\n  text-decoration: none;\\n\\n  \\\/* \\u2705 transici\\u00f3n suave para TODO lo que cambia *\\\/\\n  transition:\\n    transform 300ms cubic-bezier(.2,.9,.2,1),\\n    background-color 300ms ease,\\n    color 300ms ease,\\n    border-color 300ms ease,\\n    box-shadow 300ms ease;\\n  will-change: transform;\\n}\\n\\n.vesta-cta__btn:hover{\\n  background: #004d80;\\n  border-color: #004d80;\\n  color: #ffffff;\\n  transform: translateY(-5px);\\n}\\n\\n.vesta-cta__btn:active{\\n  transform: translateY(1px);\\n  box-shadow: 0 8px 18px rgba(0, 162, 255, 0.18);\\n}\\n\\n.vesta-cta__note{\\n  margin: 14px 0 0;\\n  font-size: 20px;\\n  font-weight: 700;\\n  color: #004d80;\\n}\\n\\n.vesta-cta__asterisk{\\n  font-weight: 700;\\n  margin-right: 6px;\\n}\\n\"}}]}]}]},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"padding\":\"large\",\"padding_remove_bottom\":false,\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #004d80;\\\">Preguntas frecuentes<\\\/span>\\n\",\"text_align\":\"center\",\"title_element\":\"h3\",\"title_style\":\"heading-small\"}},{\"type\":\"accordion\",\"props\":{\"block_align\":\"center\",\"collapsible\":true,\"content_column_breakpoint\":\"m\",\"content_style\":\"lead\",\"image_align\":\"top\",\"image_grid_breakpoint\":\"m\",\"image_grid_width\":\"1-2\",\"image_svg_color\":\"emphasis\",\"link_style\":\"default\",\"link_text\":\"Read more\",\"margin\":\"xlarge\",\"margin_remove_bottom\":false,\"maxwidth\":\"2xlarge\",\"show_image\":true,\"show_link\":true},\"children\":[{\"type\":\"accordion_item\",\"props\":{\"content\":\"VESTA es un sistema digital sencillo para registrar tareas de limpieza.<br \/>\\nEn lugar de hojas en papel, tu equipo registra las limpiezas en segundos desde su m\\u00f3vil.\\n\",\"title\":\"\\u00bfQu\\u00e9 es VESTA?\"}},{\"type\":\"accordion_item\",\"props\":{\"content\":\"Se configura en minutos.<br \/>\\nCrea una ubicaci\\u00f3n, a\\u00f1ade algunos espacios y usuarios, y empieza a registrar de inmediato.\\n\",\"title\":\"\\u00bfCu\\u00e1nto se tarda en configurarlo?\"}},{\"type\":\"accordion_item\",\"props\":{\"content\":\"No.<br \/>\\nEscanean un QR o seleccionan el espacio en la aplicaci\\u00f3n.\\nEso es todo.\\n\\n\\n\",\"title\":\"\\u00bfMi equipo de limpieza necesita formaci\\u00f3n?\"}},{\"type\":\"accordion_item\",\"props\":{\"content\":\"Tiempo y dinero.<br \/>\\nMenos trabajo administrativo, cero papel y visibilidad total de qu\\u00e9 se ha limpiado, cu\\u00e1ndo y qui\\u00e9n lo ha limpiado.\\n\\n\",\"title\":\"\\u00bfQu\\u00e9 ahorro realmente?\"}}]}]}]}]},{\"type\":\"section\",\"props\":{\"id\":\"contact\",\"image_position\":\"center-center\",\"padding\":\"large\",\"padding_remove_bottom\":false,\"padding_remove_top\":false,\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span style=\\\"color: #004d80;\\\">Cont\\u00e1ctanos<\\\/span>\",\"text_align\":\"center\",\"title_element\":\"h3\",\"title_style\":\"heading-small\"}},{\"type\":\"html\",\"props\":{\"content\":\"<p class=\"wpcf7-contact-form-not-found\"><strong>Error:<\/strong> Formulario de contacto no encontrado.<\/p>\"}}]}]}]}],\"version\":\"4.5.24\"} --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cada registro de limpieza en papel desperdicia 45 segundos de trabajo real. Apuntarlo a mano. Recoger las hojas en papel. Volver a pasar todo a Excel. Nada de esto es trabajo real. PAPEL 0 segundos por registro de limpieza VESTA\u2122 0 segundos por registro de limpieza Ahora apl\u00edcalo a tu operativa diaria. N\u00famero de empleados [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry","pmpro-has-access"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Inicio<\/title>\n<meta name=\"description\" content=\"Every paper cleaning log wastes 45 seconds of real work. Writing it down. Collecting paper sheets. Typing everything again into Excel. None of this is\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vesta.works\/es\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:locale:alternate\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inicio\" \/>\n<meta property=\"og:description\" content=\"Every paper cleaning log wastes 45 seconds of real work. Writing it down. Collecting paper sheets. Typing everything again into Excel. None of this is\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vesta.works\/es\/\" \/>\n<meta property=\"og:site_name\" content=\"VESTA\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-05T10:31:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vesta.works\/wp-content\/uploads\/2025\/07\/logo2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2458\" \/>\n\t<meta property=\"og:image:height\" content=\"560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"27 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vesta.works\/es\/\",\"url\":\"https:\/\/vesta.works\/es\/\",\"name\":\"Inicio\",\"isPartOf\":{\"@id\":\"https:\/\/vesta.works\/#website\"},\"datePublished\":\"2025-07-28T17:47:56+00:00\",\"dateModified\":\"2026-02-05T10:31:04+00:00\",\"description\":\"Every paper cleaning log wastes 45 seconds of real work. Writing it down. Collecting paper sheets. Typing everything again into Excel. None of this is\",\"breadcrumb\":{\"@id\":\"https:\/\/vesta.works\/es\/#breadcrumb\"},\"inLanguage\":\"es-ES\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vesta.works\/es\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vesta.works\/es\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vesta.works\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inicio\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vesta.works\/#website\",\"url\":\"https:\/\/vesta.works\/\",\"name\":\"VESTA\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/vesta.works\/#organization\"},\"alternateName\":\"VESTA Works\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vesta.works\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es-ES\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vesta.works\/#organization\",\"name\":\"VESTA\",\"alternateName\":\"VESTA Works\",\"url\":\"https:\/\/vesta.works\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-ES\",\"@id\":\"https:\/\/vesta.works\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vesta.works\/wp-content\/uploads\/2025\/07\/logo2.png\",\"contentUrl\":\"https:\/\/vesta.works\/wp-content\/uploads\/2025\/07\/logo2.png\",\"width\":2458,\"height\":560,\"caption\":\"VESTA\"},\"image\":{\"@id\":\"https:\/\/vesta.works\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Inicio","description":"Every paper cleaning log wastes 45 seconds of real work. Writing it down. Collecting paper sheets. Typing everything again into Excel. None of this is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vesta.works\/es\/","og_locale":"es_ES","og_type":"article","og_title":"[:en]Inicio[:] | VESTA","og_description":"Every paper cleaning log wastes 45 seconds of real work. Writing it down. Collecting paper sheets. Typing everything again into Excel. None of this is","og_url":"https:\/\/vesta.works\/es\/","og_site_name":"VESTA","article_modified_time":"2026-02-05T10:31:04+00:00","og_image":[{"width":2458,"height":560,"url":"https:\/\/vesta.works\/wp-content\/uploads\/2025\/07\/logo2.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"27 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vesta.works\/es\/","url":"https:\/\/vesta.works\/es\/","name":"Inicio","isPartOf":{"@id":"https:\/\/vesta.works\/#website"},"datePublished":"2025-07-28T17:47:56+00:00","dateModified":"2026-02-05T10:31:04+00:00","description":"Every paper cleaning log wastes 45 seconds of real work. Writing it down. Collecting paper sheets. Typing everything again into Excel. None of this is","breadcrumb":{"@id":"https:\/\/vesta.works\/es\/#breadcrumb"},"inLanguage":"es-ES","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vesta.works\/es\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vesta.works\/es\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vesta.works\/es\/"},{"@type":"ListItem","position":2,"name":"Inicio"}]},{"@type":"WebSite","@id":"https:\/\/vesta.works\/#website","url":"https:\/\/vesta.works\/","name":"VESTA","description":"","publisher":{"@id":"https:\/\/vesta.works\/#organization"},"alternateName":"VESTA Works","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vesta.works\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-ES"},{"@type":"Organization","@id":"https:\/\/vesta.works\/#organization","name":"VESTA","alternateName":"VESTA Works","url":"https:\/\/vesta.works\/","logo":{"@type":"ImageObject","inLanguage":"es-ES","@id":"https:\/\/vesta.works\/#\/schema\/logo\/image\/","url":"https:\/\/vesta.works\/wp-content\/uploads\/2025\/07\/logo2.png","contentUrl":"https:\/\/vesta.works\/wp-content\/uploads\/2025\/07\/logo2.png","width":2458,"height":560,"caption":"VESTA"},"image":{"@id":"https:\/\/vesta.works\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":854,"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":2849,"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/pages\/7\/revisions\/2849"}],"wp:attachment":[{"href":"https:\/\/vesta.works\/es\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}