{"id":37512,"date":"2026-01-28T09:41:21","date_gmt":"2026-01-28T09:41:21","guid":{"rendered":"https:\/\/www.almiclub.es\/?page_id=37512"},"modified":"2026-03-16T14:53:11","modified_gmt":"2026-03-16T14:53:11","slug":"retirada-de-lotes-almiron","status":"publish","type":"page","link":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/","title":{"rendered":"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull is-light\"><img decoding=\"async\" class=\"wp-block-cover__image-background wp-image-37514 size-large\" alt=\"\" src=\"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Plantilla-905x1280.png\" data-object-fit=\"cover\"\/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim\" style=\"background-color:#d6e4f4\"><\/span><div class=\"wp-block-cover__inner-container is-layout-constrained wp-block-cover-is-layout-constrained\">\n<section class=\"duo-block\" aria-label=\"Aviso importante\">\n  <style>\n    .duo-block {\n      --brand: #001489;\n      --ink: #001489;\n      --muted: #5f6b7a;\n      --surface: #f6f8ff;\n      --pill-bg: #e8eeff;\n      --radius: 16px;\n\n      max-width: 1100px;\n      margin: 40px auto;\n      padding: 0 16px 5px;\n      font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif;\n      color: var(--ink);\n    }\n\n    .duo-grid {\n      display: grid;\n      grid-template-columns: 1.05fr 1fr;\n      gap: 28px;\n      align-items: stretch;\n    }\n\n    .card {\n      background: #fff;\n      border: 1px solid #e7ebf3;\n      border-radius: var(--radius);\n      box-shadow: 0 6px 18px rgba(0, 20, 137, 0.08);\n      overflow: hidden;\n    }\n\n    .figure-wrap {\n      position: relative;\n      display: grid;\n      grid-template-rows: 1fr auto;\n      min-height: 360px;\n      background: var(--surface);\n      text-align: center;\n    }\n\n    .top-pill {\n      position: absolute;\n      top: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      background: #001489;\n      color: #ffffff;\n      font-weight: 900;\n      font-size: 1.1rem;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n      padding: 10px 24px;\n      border-radius: 999px;\n      box-shadow: 0 6px 16px rgba(0,20,137,0.25);\n      z-index: 20;\n      white-space: nowrap;\n      text-align: center;\n    }\n\n    .figure-wrap img {\n      width: 100%;\n      height: 100%;\n      object-fit: contain;\n      background: linear-gradient(180deg, #ffffff 0%, #f6f8ff 100%);\n      display: block;\n    }\n\n    figcaption {\n      padding: 12px 16px 16px;\n      font-size: 0.9rem;\n      color: var(--ink);\n      border-top: 1px dashed #e1e6f0;\n      background: #fff;\n    }\n    figcaption strong { color: var(--brand); }\n\n    .content {\n      padding: 24px 24px 28px;\n      display: grid;\n      gap: 14px;\n    }\n\n    .eyebrow {\n      display: inline-block;\n      padding: 6px 14px;\n      background: var(--pill-bg);\n      color: var(--brand);\n      font-weight: 800;\n      font-size: 1rem;\n      border-radius: 999px;\n      letter-spacing: 0.06em;\n      text-transform: uppercase;\n    }\n\n    .lead {\n      font-size: 1rem;\n      line-height: 1.6;\n      margin: 0;\n    }\n\n    \/* \u2b50 Espacio peque\u00f1o visible entre frases *\/\n    .spacer {\n      display: block;\n      margin-top: 6px; \/* peque\u00f1o espacio *\/\n    }\n\n    .callout {\n      margin-top: 8px;\n      border: 1px solid #dfe6ff;\n      background: linear-gradient(180deg, #ffffff 0%, #f3f6ff 100%);\n      border-radius: 14px;\n      padding: 18px;\n      position: relative;\n      box-shadow: 0 6px 18px rgba(0,20,137,0.06);\n    }\n\n    .callout::before {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      border-radius: 14px;\n      padding: 1px;\n      background: linear-gradient(90deg, #001489, #6f8cff);\n      -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n      -webkit-mask-composite: xor;\n              mask-composite: exclude;\n      pointer-events: none;\n    }\n\n    .callout-head {\n      display: flex;\n      gap: 10px;\n      align-items: center;\n      margin-bottom: 6px;\n    }\n\n    .badge {\n      width: 28px;\n      height: 28px;\n      border-radius: 8px;\n      background: var(--brand);\n      display: grid;\n      place-items: center;\n    }\n\n    .badge svg {\n      width: 16px;\n      height: 16px;\n      color: #fff;\n    }\n\n    .callout-title {\n      font-size: 0.95rem;\n      font-weight: 900;\n      color: var(--brand);\n      text-transform: uppercase;\n      margin: 0;\n    }\n\n    .callout-body {\n      font-size: 0.98rem;\n      line-height: 1.6;\n      margin: 0;\n    }\n\n    .callout a {\n      color: var(--brand);\n      font-weight: 700;\n      text-decoration: none;\n    }\n    .callout a:hover { text-decoration: underline; }\n\n    @media (max-width: 900px) {\n      .duo-grid { grid-template-columns: 1fr; }\n      .figure-wrap { min-height: 300px; }\n    }\n\n    @media (max-width: 600px) {\n      .top-pill {\n        white-space: normal;\n        display: -webkit-box;\n        -webkit-box-orient: vertical;\n        -webkit-line-clamp: 2;\n        line-clamp: 2;\n        overflow: hidden;\n\n        left: 12px;\n        right: 12px;\n        transform: none;\n        width: auto;\n        max-width: none;\n        box-sizing: border-box;\n        text-align: center;\n\n        font-size: clamp(0.84rem, 3.7vw, 1rem);\n        line-height: 1.22;\n        letter-spacing: 0.045em;\n        padding: 10px 14px;\n\n        top: 18px;\n\n        text-wrap: balance;\n        overflow-wrap: anywhere;\n        word-break: normal;\n      }\n\n      .figure-wrap {\n        min-height: 340px;\n        padding-top: 48px;\n      }\n    }\n\n    @media (max-width: 360px) {\n      .top-pill {\n        left: 10px;\n        right: 10px;\n        font-size: clamp(0.8rem, 4.2vw, 0.95rem);\n        padding: 8px 12px;\n        top: 16px;\n      }\n      .figure-wrap { padding-top: 52px; }\n    }\n  <\/style>\n\n  <div class=\"duo-grid\">\n\n    <figure class=\"card figure-wrap\" role=\"group\" aria-labelledby=\"lote-caption\">\n      <div class=\"top-pill\">Retirada preventiva de lotes espec\u00edficos<\/div>\n\n      <img decoding=\"async\"\n        src=\"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/Logo-Almiron-en-Plata.png\"\n        alt=\"Logotipo Almir\u00f3n\"\n      \/>\n\n      <figcaption id=\"lote-caption\">\n        Consulta en <strong>comprobar el lote<\/strong> qu\u00e9 lotes y caducidades espec\u00edficos est\u00e1n afectados con la retirada preventiva.\n      <\/figcaption>\n    <\/figure>\n\n    <article class=\"card content\" aria-labelledby=\"info-label\">\n      <div id=\"info-label\" class=\"eyebrow\">Informaci\u00f3n importante<\/div>\n\n      <p class=\"lead\">\n        La salud y la seguridad de tu beb\u00e9 son siempre nuestra m\u00e1xima prioridad. Por este motivo, todas las f\u00f3rmulas infantiles de Danone cumplen con los m\u00e1s altos est\u00e1ndares de calidad y seguridad. Antes de salir de nuestras f\u00e1bricas, cada lote pasa por exhaustivos controles, y todos los controles han confirmado que nuestros productos son seguros.\n        <br><span class=\"spacer\"><\/span>\n        Sin embargo, siguiendo las directrices recientemente actualizadas de las autoridades regulatorias, hemos decidido retirar de forma preventiva algunos lotes de Almir\u00f3n. Esta decisi\u00f3n responde a nuestra responsabilidad de adaptarnos a los cambios normativos y garantizar la tranquilidad de las familias.\n      <\/p>\n\n      <section class=\"callout\" aria-labelledby=\"support-title\">\n        <div class=\"callout-head\">\n          <div class=\"badge\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n              <path d=\"M12 3a7 7 0 0 0-7 7v2a3 3 0 0 0 3 3h1v-6H7a5 5 0 0 1 10 0h-2v6h1a3 3 0 0 0 3-3v-2a7 7 0 0 0-7-7Zm-5 12a1 1 0 0 1-1-1v-2h2v3H7Zm11-3v2a1 1 0 0 1-1 1h-1v-3h2ZM9.5 18.5A2.5 2.5 0 0 0 12 21h0a2.5 2.5 0 0 0 2.5-2.5V18h-5v.5Z\"\/>\n            <\/svg>\n          <\/div>\n          <h3 class=\"callout-title\" id=\"support-title\">ATENCI\u00d3N Y SOPORTE<\/h3>\n        <\/div>\n\n        <p class=\"callout-body\">\n          Entendemos que puedas tener preguntas o necesites m\u00e1s informaci\u00f3n, por lo que nos mantenemos cerca de ti y con disponibilidad las 24 horas del d\u00eda en nuestro tel\u00e9fono gratuito\n          <a href=\"tel:900181797\">900&nbsp;181&nbsp;797<\/a> o, si lo prefieres,\n          en nuestro correo\n          <a href=\"mailto:almiclub@danone.com\">almiclub@danone.com<\/a>.\n          Nuestro equipo est\u00e1 a tu disposici\u00f3n para ofrecerte el apoyo y la tranquilidad que mereces.\n        <\/p>\n      <\/section>\n    <\/article>\n\n  <\/div>\n<\/section>\n\n\n\n<!-- Herramienta 4 pasos: Comprobaci\u00f3n de producto y fecha -->\n<div id=\"herramienta-4-pasos\" class=\"h3p-container\" lang=\"es\" data-selected-product=\"\" data-selected-product-name=\"\" data-selected-product-img=\"\">\n  <!-- Indicador de pasos (arriba del t\u00edtulo; visible solo en pasos 2, 3 y 4) -->\n  <nav id=\"h3p-steps\" class=\"h3p-steps\" aria-label=\"Progreso\" hidden>\n    <ol class=\"h3p-steps-list\">\n      <li class=\"h3p-step-indicator\" data-step=\"2\">\n        <span class=\"h3p-step-icon\" aria-hidden=\"true\">1<\/span>\n        <span class=\"h3p-step-text\"><strong>Producto<\/strong><\/span>\n      <\/li>\n      <li class=\"h3p-step-indicator\" data-step=\"3\">\n        <span class=\"h3p-step-icon\" aria-hidden=\"true\">2<\/span>\n        <span class=\"h3p-step-text\"><strong>Fecha de caducidad<\/strong><\/span>\n      <\/li>\n      <li class=\"h3p-step-indicator\" data-step=\"4\">\n        <span class=\"h3p-step-icon\" aria-hidden=\"true\">3<\/span>\n        <span class=\"h3p-step-text\"><strong>Resultado<\/strong><\/span>\n      <\/li>\n    <\/ol>\n  <\/nav>\n\n  <!-- T\u00edtulo din\u00e1mico (barra azul) -->\n  <h2 id=\"h3p-title\" class=\"h3p-title h3p-title--bar\" aria-live=\"polite\">Comprobar el lote<\/h2>\n\n  <!-- Paso 1: GIF, descripci\u00f3n y CTA empezar -->\n  <div id=\"h3p-step1\" class=\"h3p-step h3p-step--active\" data-step=\"1\">\n    <!-- GIF SOLO PASO 1, debajo del t\u00edtulo -->\n    <div id=\"h3p-main-image\" class=\"h3p-main-image\" aria-hidden=\"true\">\n      https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/white-magnifying-glass.gif\n    <\/div>\n\n    <!-- Descripci\u00f3n (dos p\u00e1rrafos, el segundo en negrita) -->\n    <p id=\"h3p-intro\" class=\"h3p-intro\">\n      Comprueba si tu producto forma parte de la retirada preventiva haciendo clic en &#8220;Empezar&#8221;.\n    <\/p>\n    <p class=\"h3p-intro\">\n      <strong>Selecciona el producto y la fecha de caducidad y te indicaremos c\u00f3mo proceder.<\/strong>\n    <\/p>\n\n    <!-- CTA empezar -->\n    <button id=\"h3p-start\" class=\"h3p-btn h3p-btn--primary\" type=\"button\">EMPEZAR<\/button>\n  <\/div>\n\n  <!-- Paso 2: Selecci\u00f3n de producto -->\n  <div id=\"h3p-step2\" class=\"h3p-step\" data-step=\"2\" hidden>\n    <div id=\"h3p-product-grid\" class=\"h3p-product-grid\" role=\"radiogroup\" aria-label=\"Producto\"><\/div>\n    <div class=\"h3p-actions\">\n      <button id=\"h3p-back-to-1\" class=\"h3p-btn h3p-btn--ghost\" type=\"button\">Atr\u00e1s<\/button>\n      <button id=\"h3p-go-to-3\" class=\"h3p-btn h3p-btn--primary\" type=\"button\" disabled>Siguiente<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Paso 3: Fecha de caducidad -->\n  <div id=\"h3p-step3\" class=\"h3p-step\" data-step=\"3\" hidden>\n    <div id=\"h3p-date-product\" class=\"h3p-date-product\" aria-live=\"polite\" tabindex=\"-1\"><\/div>\n    <label for=\"h3p-date\" class=\"h3p-label\">Fecha de caducidad<\/label>\n    <div class=\"h3p-field\">\n      <input id=\"h3p-date\" class=\"h3p-input-date\" type=\"date\" required aria-required=\"true\" aria-describedby=\"h3p-date-help\" \/>\n      <small id=\"h3p-date-help\" class=\"h3p-help\">\n        La fecha de caducidad se encuentra en la <strong>base del envase<\/strong>, precedida por las letras <strong>EXP<\/strong>.\n      <\/small>\n    <\/div>\n    <div class=\"h3p-actions\">\n      <button id=\"h3p-back-to-2\" class=\"h3p-btn h3p-btn--ghost\" type=\"button\">Atr\u00e1s<\/button>\n      <button id=\"h3p-check\" class=\"h3p-btn h3p-btn--primary\" type=\"button\" disabled>Comprobar<\/button>\n    <\/div>\n    <div id=\"h3p-result\" class=\"h3p-result\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/div>\n  <\/div>\n\n  <!-- Paso 4: Resultado final -->\n  <div id=\"h3p-step4\" class=\"h3p-step\" data-step=\"4\" hidden>\n    <div id=\"h3p-final-product\" class=\"h3p-final-product\" aria-live=\"polite\"><\/div>\n    <div id=\"h3p-final-body\" class=\"h3p-final-body\"><\/div>\n    <div class=\"h3p-actions\">\n      <button id=\"h3p-final-back\" class=\"h3p-btn h3p-btn--ghost\" type=\"button\">Atr\u00e1s<\/button>\n      <button id=\"h3p-final-restart\" class=\"h3p-btn h3p-btn--primary\" type=\"button\">Empezar de nuevo<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n  \/* ====== Estilos base ====== *\/\n  .h3p-container {\n    --h3p-azul: #001489;\n    --h3p-text: #001489;\n    --h3p-border: #e6e6e6;\n    --h3p-bg: #fff;\n\n    max-width: 960px;\n    margin: 1rem auto;\n    padding: 1.25rem;\n    background: var(--h3p-bg);\n    border: 1px solid var(--h3p-border);\n    border-radius: 12px;\n    box-shadow: 0 1px 2px rgba(0,0,0,.03);\n    font-family: system-ui, -apple-system, Segoe UI, Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Apple Color Emoji\",\"Segoe UI Emoji\";\n    color: var(--h3p-text);\n  }\n\n  .h3p-title {\n    font-size: clamp(1.125rem, 2.2vw, 1.5rem);\n    margin: 0 0 .5rem;\n    line-height: 1.3;\n    text-align: center;\n  }\n  .h3p-title:empty { display: none; }\n\n  \/* T\u00edtulo en barra azul (solo paso 1) *\/\n  .h3p-title--bar {\n    margin-left: calc(-1.25rem);\n    margin-right: calc(-1.25rem);\n    margin-top: calc(-1.25rem);\n    background: var(--h3p-azul);\n    color: #fff;\n    padding: 1rem 1.25rem .9rem;\n    line-height: 1.25;\n    text-align: center;\n    font-weight: 700;\n    text-transform: uppercase;\n    border-radius: 10px;\n  }\n\n  \/* GIF *\/\n  .h3p-main-image { display: flex; justify-content: center; margin: 1.1rem 0 .6rem 0; pointer-events: none; }\n  .h3p-main-image img { width: 120px; max-width: 100%; height: auto; object-fit: contain; }\n\n  \/* Texto intro *\/\n  .h3p-intro { color: var(--h3p-text); margin: 0 0 1.1rem; text-align: center; }\n\n  .h3p-step { transition: opacity .2s ease; }\n  .h3p-step[hidden] { display: none; }\n\n  .h3p-label { display: block; font-weight: 400; margin-bottom: .5rem; color: var(--h3p-text); }\n  .h3p-field { margin-bottom: 1rem; }\n  .h3p-input-date {\n    width: 100%;\n    padding: .65rem .8rem;\n    font-size: 1rem;\n    border: 1px solid #d5d5d5;\n    border-radius: 10px;\n    background: #fff;\n    color: var(--h3p-text);\n  }\n\n  .h3p-actions { margin-top: .75rem; display: flex; gap: .5rem; justify-content: flex-end; flex-wrap: wrap; }\n\n  \/* Botones *\/\n  .h3p-btn { appearance: none; border: 1px solid transparent; border-radius: 999px; padding: .6rem 1rem; font-size: .95rem; cursor: pointer; transition: background .15s ease, border-color .15s ease, color .15s ease, opacity .15s, filter .15s ease; position: relative; z-index: 1; text-decoration: none; display: inline-flex; align-items: center; gap: .5rem; }\n  .h3p-btn:disabled { opacity: .5; cursor: not-allowed; }\n  .h3p-btn__icon { width: 1.1em; height: 1.1em; flex: 0 0 auto; }\n\n  .h3p-btn--primary {\n    background: var(--h3p-azul);\n    color: #fff;\n    border-color: var(--h3p-azul);\n    font-weight: 600;\n  }\n  .h3p-btn--primary:hover,\n  .h3p-btn--primary:focus-visible { filter: brightness(1.1); }\n  .h3p-btn--primary:active { filter: brightness(1.18); }\n\n  #h3p-start { display: block; margin: 0 auto; }\n\n  .h3p-btn--ghost {\n    background: transparent;\n    color: var(--h3p-azul);\n    border-color: #cfe2ff;\n  }\n  .h3p-btn--ghost:hover,\n  .h3p-btn--ghost:focus-visible { background: #f1f7ff; border-color: #b6d4fe; filter: brightness(1.02); }\n  .h3p-btn--ghost:active { filter: brightness(1.06); }\n\n  .h3p-card:focus-visible,\n  .h3p-btn:focus-visible,\n  .h3p-input-date:focus-visible {\n    outline: 3px solid rgba(0, 20, 137, 0.45);\n    outline-offset: 2px;\n  }\n\n  .h3p-result { margin-top: .75rem; padding: .9rem 1rem; border-radius: 10px; border: 1px solid #e5e7eb; background: #f8fafc; }\n  .h3p-result--ok { border-color: #22c55e; background: #ecfdf5; color: #065f46; }\n  .h3p-result--affected { border-color: #ef4444; background: #fef2f2; color: #7f1d1d; }\n\n  .h3p-final-body { padding: 1rem; border: 1px solid #e5e7eb; border-radius: 10px; background: #fff; color: var(--h3p-text); position: relative; }\n  .h3p-final-body--affected { border-color: #ef4444; background: #fff5f5; }\n  .h3p-final-body--ok { border-color: #22c55e; background: #ecfdf5; }\n  .h3p-final-body p { margin: .5rem 0; }\n  .h3p-final-body strong { display: inline-block; margin-bottom: .25rem; }\n\n  .h3p-final-header {\n    display: flex; flex-direction: column; align-items: center; text-align: center;\n    border: 1px solid #e5e7eb; background: #fff; border-radius: 12px; padding: .75rem;\n    box-shadow: 0 1px 8px rgba(0,0,0,.05);\n    margin-bottom: .75rem;\n  }\n  .h3p-final-header img { width: 120px; height: 120px; object-fit: contain; }\n  .h3p-final-header .h3p-final-product-name { margin-top: .4rem; font-weight: 400; color: var(--h3p-text); }\n  .h3p-final-header .h3p-final-product-date { margin-top: .15rem; color: var(--h3p-text); }\n\n  .h3p-status-badge { position: absolute; top: -12px; right: -12px; width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0,0,0,.2); }\n  .h3p-final-body--affected .h3p-status-badge { background: #ef4444; color: #fff; }\n  .h3p-final-body--ok .h3p-status-badge { background: #22c55e; color: #fff; }\n  .h3p-status-badge svg { width: 22px; height: 22px; display: block; }\n\n  .h3p-cta-wrap { display: flex; justify-content: center; margin: .5rem 0 .75rem; }\n\n  .h3p-final-product, .h3p-date-product { display: flex; flex-direction: column; align-items: center; justify-content: center; margin: 0 0 .75rem 0; text-align: center; }\n  .h3p-final-product img, .h3p-date-product img { max-width: 140px; height: auto; object-fit: contain; }\n\n  \/* Contenedor im\u00e1genes en paso 3 *\/\n  .h3p-date-figure {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    flex-wrap: wrap;\n    margin-bottom: .4rem;\n  }\n\n  \/* ===== Indicador de pasos ===== *\/\n  .h3p-steps { margin: 0 0 .5rem; }\n  .h3p-steps[hidden] { display: none; }\n  .h3p-steps-list { list-style: none; display: flex; gap: .75rem 1rem; padding: 0; margin: 0 0 .25rem 0; flex-wrap: wrap; }\n  .h3p-step-indicator { display: inline-flex; align-items: center; gap: .5rem; color: #6b7280; padding: .4rem .6rem; border-radius: 999px; border: 1px solid #eef2f7; background: #fafafa; font-size: .92rem; }\n  .h3p-step-indicator[aria-current=\"step\"], .h3p-step-indicator.h3p-step-indicator--active { border-color: #b6d4fe; background: #eff6ff; color: #0b4ea2; }\n  .h3p-step-text strong { font-weight: 700; }\n\n  \/* === C\u00edrculos numerados para los pasos === *\/\n  .h3p-step-icon {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 28px;\n    height: 28px;\n    border-radius: 50%;\n    border: 2px solid #cfe2ff;\n    background: #fff;\n    color: #001489;\n    font-weight: 700;\n    line-height: 1;\n    flex: 0 0 auto;\n  }\n  \/* Estado activo: c\u00edrculo azul, n\u00famero blanco *\/\n  .h3p-step-indicator[aria-current=\"step\"] .h3p-step-icon,\n  .h3p-step-indicator.h3p-step-indicator--active .h3p-step-icon {\n    background: var(--h3p-azul);\n    color: #fff;\n    border-color: var(--h3p-azul);\n  }\n\n  .h3p-product-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; }\n  .h3p-card { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: .5rem; height: 100%; border: 1px solid #e5e7eb; border-radius: 12px; background: #fff; padding: .75rem; cursor: pointer; text-align: center; transition: border-color .12s ease, box-shadow .12s ease, transform .05s ease; color: var(--h3p-text); position: relative; }\n  .h3p-card:hover { border-color: #cfe2ff; box-shadow: 0 1px 8px rgba(0,0,0,.05); }\n  .h3p-card--selected { border-color: var(--h3p-azul); box-shadow: 0 0 0 3px rgba(0,20,137,.15); }\n  .h3p-card-name { display: block; font-size: .95rem; font-weight: 400; }\n  .h3p-card--selected .h3p-card-name { font-weight: 700; }\n  .h3p-card img { width: 120px; height: 120px; object-fit: contain; }\n  .h3p-radio { position: absolute; opacity: 0; pointer-events: none; width: 0; height: 0; }\n\n  \/* CTA \"Seleccionar\" por tarjeta: oculto por defecto, visible solo en mobile *\/\n  .h3p-card-cta {\n    display: none;\n  }\n\n  @media (max-width: 640px) {\n    \/* CTA \"Seleccionar\" con colores del bot\u00f3n primario (Siguiente) *\/\n    .h3p-card-cta {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: .35rem;\n      padding: .45rem .8rem;\n      font-size: .9rem;\n      font-weight: 600;\n      border: 1px solid var(--h3p-azul);\n      border-radius: 999px;\n      background: var(--h3p-azul);\n      color: #fff;\n    }\n    .h3p-card-cta:hover,\n    .h3p-card-cta:focus-visible { filter: brightness(1.1); }\n    .h3p-card-cta:active { filter: brightness(1.18); }\n\n    \/* Ocultar CTA \"Siguiente\" en la pantalla de producto (solo mobile) *\/\n    #h3p-step2 #h3p-go-to-3 {\n      display: none !important;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .h3p-step, .h3p-card { transition: none; }\n  }\n<\/style>\n\n<script>\n(function () {\n  const el = document.getElementById('herramienta-4-pasos') || document.getElementById('herramienta-3-pasos');\n  if (!el) return;\n\n  const AFFECTED = {\n    \"ALMIRON ADVANCE 1 (400G)\": [\"2026-11-09\"],\n    \"ALMIRON ADVANCE 1 (800G)\": [\"2026-07-08\",\"2026-07-22\",\"2026-10-30\",\"2026-12-03\"],\n    \"ALMIRON ADVANCE 2 (800G)\": [\"2026-07-13\",\"2026-08-31\",\"2026-09-18\",\"2026-10-27\",\"2026-10-28\",\"2026-11-21\",\"2026-12-18\"],\n    \"BIPACK ALMIRON ADVANCE 2 800 G POF 2\u00aa50%\": [\"2026-07-13\",\"2026-08-31\",\"2026-09-18\",\"2026-10-27\"],\n    \"ALMIRON ADVANCE 1 (1,2KG)\": [\"2026-12-05\"],\n    \"ALMIRON ADVANCE 2 (1,2KG)\": [\"2026-08-09\",\"2026-11-25\",\"2027-01-20\"],\n    \"ALMIR\u00d3N PROFUTURA 1 (800G)\": [\"2026-12-28\",\"2027-04-15\",\"2027-05-14\",\"2027-06-13\",\"2027-08-19\",\"2027-09-13\"],\n    \"ALMIR\u00d3N PROFUTURA 2 (800G)\": [\"2026-12-28\",\"2027-01-11\",\"2027-05-10\",\"2027-06-13\",\"2027-07-11\"],\n    \"BIPACK ALMIR\u00d3N PROFUTURA DUOB. 2 2\u00aa30%\": [\"2026-12-28\",\"2027-01-11\",\"2027-05-10\",\"2027-06-13\",\"2027-07-11\"],\n    \"ALMIRON PROFUTURA 2 - SOBRES (28.8G) MUESTRAS\": [\"2026-07-12\",\"2026-08-21\"],\n    \"ALMIRON AR 2 (800G)\": [\"2026-10-03\",\"2026-11-02\"]\n  };\n\n  const PRODUCTS = [\n    { key: \"ALMIRON ADVANCE 1 (400G)\", name: \"Almir\u00f3n Advance 1 (400g)\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354655_2D_SN_Almiron-1_FOP-scaled.png\", alt: \"Almir\u00f3n Advance 1 400g\" },\n    { key: \"ALMIRON ADVANCE 1 (800G)\", name: \"Almir\u00f3n Advance 1 (800g)\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354657_2D_SN_Almiron-1_FOP-scaled.png\", alt: \"Almir\u00f3n Advance 1 800g\" },\n    { key: \"ALMIRON ADVANCE 2 (800G)\", name: \"Almir\u00f3n Advance 2 (800g)\", img: \"https:\/\/danonees2022prew4.housings.nexica.net\/wp-content\/uploads\/2023\/01\/354650_2D_SN_Almiron-2_FOP_V2-1-400x364-1.png\", alt: \"Almir\u00f3n Advance 2 800g\" },\n    { key: \"ALMIRON ADVANCE 2 (1,2KG)\", name: \"Almir\u00f3n Advance 2 (1,2kg)\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354901_2D_SN_Almiron-2_FOP-scaled.png\", alt: \"Almir\u00f3n Advance 2 1,2kg\" },\n    { key: \"ALMIRON ADVANCE 1 (1,2KG)\", name: \"Almir\u00f3n Advance 1 (1,2kg)\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354979_2D_SN_Almiron-1_FOP.png\", alt: \"Almir\u00f3n Advance 1 1,2kg\" },\n    { key: \"BIPACK ALMIRON ADVANCE 2 800 G POF 2\u00aa50%\", name: \"Bipack Almir\u00f3n Advance 2 2\u00aa50%\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/Imagen-bipack-ADV-2.png\", alt: \"Bipack Almir\u00f3n Advance 2 2\u00aa50%\" },\n    { key: \"ALMIR\u00d3N PROFUTURA 1 (800G)\", name: \"Almir\u00f3n Profutura 1 (800g)\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Profutura-Duobiotik-1-FOP-scaled.png\", alt: \"Almir\u00f3n Profutura 1 800g\" },\n    { key: \"ALMIR\u00d3N PROFUTURA 2 (800G)\", name: \"Almir\u00f3n Profutura 2 (800g)\", img: \"https:\/\/danonees2022prew4.housings.nexica.net\/wp-content\/uploads\/2023\/01\/almiron_profutura_duobiotik_2-400x412-1.png\", alt: \"Almir\u00f3n Profutura 2 800g\" },\n    { key: \"ALMIRON PROFUTURA 2 - SOBRES (28.8G) MUESTRAS\", name: \"Almir\u00f3n Profutura 2 \u2013 Sobres (28.8g)\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/C1N1-scaled.jpg\", alt: \"Almir\u00f3n Profutura 2 Sobres 28.8g\" },\n    { key: \"BIPACK ALMIR\u00d3N PROFUTURA DUOB. 2 2\u00aa30%\", name: \"Bipack Almir\u00f3n Profutura 2 2\u00aa30%\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/Bipack-Almiron-Profura-DUOB.2-1-1-scaled.png\", alt: \"Bipack Almir\u00f3n Profutura 2 2\u00aa30%\" },\n    { key: \"ALMIRON AR 2 (800G)\", name: \"Almir\u00f3n AR 2 (800g)\", img: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2023\/01\/imagen-15-768x768.png\", alt: \"Almir\u00f3n AR 2 800g\" }\n  ];\n\n  \/* === MAPA DE IM\u00c1GENES BOP\/EXP PARA PASO 3 === *\/\n  const PRODUCT_BOP = {\n    \"ALMIRON ADVANCE 1 (400G)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-1-400-EXP-scaled.png\",\n    \"ALMIRON ADVANCE 1 (800G)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-1-800-EXP-scaled.png\",\n    \"ALMIRON ADVANCE 2 (800G)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-2-800-EXP-scaled.png\",\n    \"BIPACK ALMIRON ADVANCE 2 800 G POF 2\u00aa50%\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-2-800-EXP-scaled.png\",\n    \"ALMIR\u00d3N PROFUTURA 1 (800G)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-EXP-f.png\",\n    \"ALMIR\u00d3N PROFUTURA 2 (800G)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-EXP-f.png\",\n    \"ALMIRON PROFUTURA 2 - SOBRES (28.8G) MUESTRAS\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-Muestras-EXP.png\",\n    \"BIPACK ALMIR\u00d3N PROFUTURA DUOB. 2 2\u00aa30%\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-EXP-f.png\",\n    \"ALMIRON AR 2 (800G)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-AR-2-EXP.png\",\n    \"ALMIRON ADVANCE 1 (1,2KG)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-1-12-EXP-scaled.png\",\n    \"ALMIRON ADVANCE 2 (1,2KG)\": \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-2-12-EXP-scaled.png\"\n  };\n\n  \/* === AYUDA DIN\u00c1MICA SEG\u00daN PRODUCTO (paso 3) === *\/\n  const DEFAULT_HELP = 'La fecha de caducidad se encuentra en la <strong>base del envase<\/strong>, precedida por las letras <strong>EXP<\/strong>.';\n\n  const HELP_BY_PRODUCT = {\n    REAR_ENVASE: new Set([\n      \"ALMIRON ADVANCE 1 (400G)\",\n      \"ALMIRON ADVANCE 1 (800G)\",\n      \"ALMIRON ADVANCE 2 (800G)\",\n      \"BIPACK ALMIRON ADVANCE 2 800 G POF 2\u00aa50%\",\n      \"ALMIRON AR 2 (800G)\"\n    ]),\n    REAR_SOBRE: new Set([\n      \"ALMIRON PROFUTURA 2 - SOBRES (28.8G) MUESTRAS\"\n    ]),\n    TOP_ENVASE: new Set([\n      \"ALMIRON ADVANCE 2 (1,2KG)\",\n      \"ALMIRON ADVANCE 1 (1,2KG)\"\n    ])\n  };\n\n  function getHelpFor(productKey) {\n    if (HELP_BY_PRODUCT.REAR_ENVASE.has(productKey)) {\n      return 'La fecha de caducidad se encuentra en la <strong>parte trasera del envase<\/strong>, precedida por las letras <strong>EXP.<\/strong>';\n    }\n    if (HELP_BY_PRODUCT.REAR_SOBRE.has(productKey)) {\n      return 'La fecha de caducidad se encuentra en la <strong>parte trasera del sobre<\/strong>, precedida por las letras <strong>EXP.<\/strong>';\n    }\n    if (HELP_BY_PRODUCT.TOP_ENVASE.has(productKey)) {\n      return 'La fecha de caducidad se encuentra en la <strong>parte superior del envase<\/strong>, precedida por las letras <strong>EXP.<\/strong>';\n    }\n    return DEFAULT_HELP;\n  }\n\n  const title = document.getElementById('h3p-title');\n  const stepsNav = document.getElementById('h3p-steps');\n  const stepIndicators = Array.from(document.querySelectorAll('.h3p-step-indicator'));\n\n  const step1 = document.getElementById('h3p-step1');\n  const step2 = document.getElementById('h3p-step2');\n  const step3 = document.getElementById('h3p-step3');\n  const step4 = document.getElementById('h3p-step4');\n\n  const productGrid = document.getElementById('h3p-product-grid');\n  const btnStart = document.getElementById('h3p-start');\n  const btnBackTo1 = document.getElementById('h3p-back-to-1');\n  const btnGoTo3 = document.getElementById('h3p-go-to-3');\n\n  const dateProduct = document.getElementById('h3p-date-product');\n  const inputDate = document.getElementById('h3p-date');\n  const btnBackTo2 = document.getElementById('h3p-back-to-2');\n  const btnCheck = document.getElementById('h3p-check');\n  const result = document.getElementById('h3p-result');\n\n  const finalBody = document.getElementById('h3p-final-body');\n  const finalProduct = document.getElementById('h3p-final-product');\n  const btnFinalBack = document.getElementById('h3p-final-back');\n  const btnFinalRestart = document.getElementById('h3p-final-restart');\n\n  const isMobile = () => window.matchMedia('(max-width: 640px)').matches;\n\n  \/* Inyectar <img> en el contenedor del GIF si solo hay texto *\/\n  const mainImage = document.getElementById('h3p-main-image');\n  if (mainImage && !mainImage.querySelector('img')) {\n    const url = (mainImage.textContent || '').trim();\n    if (url && \/^https?:\\\/\\\/\/i.test(url)) {\n      mainImage.textContent = '';\n      const img = document.createElement('img');\n      img.src = url;\n      img.alt = '';\n      img.loading = 'lazy';\n      img.decoding = 'async';\n      img.width = 120;\n      img.height = 120;\n      mainImage.appendChild(img);\n    }\n  }\n\n  function renderProducts(selectedKey = '') {\n    productGrid.innerHTML = '';\n    PRODUCTS.forEach((p, idx) => {\n      const label = document.createElement('label');\n      label.className = 'h3p-card';\n      label.tabIndex = (selectedKey ? (selectedKey === p.key ? 0 : -1) : (idx === 0 ? 0 : -1));\n      label.setAttribute('role', 'radio');\n      label.setAttribute('aria-checked', selectedKey === p.key ? 'true' : 'false');\n      if (selectedKey === p.key) label.classList.add('h3p-card--selected');\n\n      const input = document.createElement('input');\n      input.type = 'radio';\n      input.name = 'h3p-product';\n      input.value = p.key;\n      input.className = 'h3p-radio';\n      if (selectedKey === p.key) input.checked = true;\n\n      const img = document.createElement('img');\n      img.src = p.img;\n      img.loading = 'lazy';\n      img.decoding = 'async';\n      img.alt = p.alt || p.name;\n      img.width = 120; img.height = 120;\n\n      const nameSpan = document.createElement('span');\n      nameSpan.className = 'h3p-card-name';\n      nameSpan.textContent = p.name;\n\n      \/* CTA \"Seleccionar\" SOLO visible en mobile con colores del primario *\/\n      const cta = document.createElement('button');\n      cta.type = 'button';\n      cta.className = 'h3p-card-cta';\n      cta.setAttribute('aria-label', `Seleccionar ${p.name}`);\n      cta.textContent = 'Seleccionar';\n\n      label.appendChild(input);\n      label.appendChild(img);\n      label.appendChild(nameSpan);\n      label.appendChild(cta);\n\n      function selectThis(focus = true) {\n        Array.from(productGrid.querySelectorAll('.h3p-card')).forEach(card => {\n          card.classList.remove('h3p-card--selected');\n          card.setAttribute('aria-checked', 'false');\n          card.tabIndex = -1;\n          const r = card.querySelector('input[type=\"radio\"]');\n          if (r) r.checked = false;\n        });\n        label.classList.add('h3p-card--selected');\n        label.setAttribute('aria-checked', 'true');\n        label.tabIndex = 0;\n        input.checked = true;\n\n        el.dataset.selectedProduct = p.key;\n        el.dataset.selectedProductName = p.name;\n        el.dataset.selectedProductImg = p.img;\n        btnGoTo3.disabled = false;\n\n        if (focus) label.focus();\n      }\n\n      \/* Selecci\u00f3n de tarjeta por puntero\/teclado (escritorio + accesibilidad) *\/\n      label.addEventListener('pointerdown', () => selectThis(false));\n      label.addEventListener('click', (e) => { e.preventDefault(); selectThis(false); });\n      label.addEventListener('keydown', (e) => {\n        if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); selectThis(); return; }\n        const cards = Array.from(productGrid.querySelectorAll('.h3p-card'));\n        const currentIndex = cards.indexOf(label);\n        let nextIndex = -1;\n        if (['ArrowRight','ArrowDown'].includes(e.key)) nextIndex = (currentIndex + 1) % cards.length;\n        if (['ArrowLeft','ArrowUp'].includes(e.key)) nextIndex = (currentIndex - 1 + cards.length) % cards.length;\n        if (nextIndex > -1) { e.preventDefault(); cards[nextIndex].focus(); }\n      });\n\n      \/* Acci\u00f3n del CTA (mobile): selecciona y avanza a Paso 3 sin abrir el date-picker *\/\n      cta.addEventListener('click', (e) => {\n        e.stopPropagation();\n        selectThis(false);\n        if (isMobile()) {\n          inputDate.value = '';\n          btnCheck.disabled = true;\n          clearResult();\n          goToStep(3);\n          \/* \ud83d\udd12 No enfocar el input de fecha en mobile para evitar abrir el calendario *\/\n          const focusTarget = document.getElementById('h3p-date-product') || document.getElementById('h3p-title');\n          focusTarget && focusTarget.focus?.();\n        }\n      });\n\n      productGrid.appendChild(label);\n    });\n  }\n\n  function updateStepIndicators(currentStep) {\n    if (currentStep >= 2 && currentStep <= 4) { stepsNav.removeAttribute('hidden'); } else { stepsNav.setAttribute('hidden', ''); }\n    stepIndicators.forEach(li => { li.removeAttribute('aria-current'); li.classList.remove('h3p-step-indicator--active'); });\n    const currentLi = stepIndicators.find(li => Number(li.dataset.step) === currentStep);\n    if (currentLi) { currentLi.setAttribute('aria-current', 'step'); currentLi.classList.add('h3p-step-indicator--active'); }\n  }\n\n  function goToStep(stepNumber) {\n    [step1, step2, step3, step4].forEach(s => s && s.setAttribute('hidden', ''));\n    const target = ({1: step1, 2: step2, 3: step3, 4: step4})[stepNumber];\n    if (target) target.removeAttribute('hidden');\n\n    switch (stepNumber) {\n      case 1:\n        title.textContent = 'Comprobar el lote';\n        title.classList.add('h3p-title--bar');\n        break;\n      case 2:\n        title.textContent = 'Seleccione el producto que est\u00e1 utilizando.';\n        title.classList.remove('h3p-title--bar');\n        document.querySelectorAll('.h3p-intro').forEach(p => p.hidden = true);\n        renderProducts(el.dataset.selectedProduct || '');\n        btnGoTo3.disabled = !el.dataset.selectedProduct;\n        break;\n      case 3:\n        title.textContent = 'Introduzca la fecha de caducidad que aparece en su envase.';\n        title.classList.remove('h3p-title--bar');\n        document.querySelectorAll('.h3p-intro').forEach(p => p.hidden = true);\n        renderDateProduct(el.dataset.selectedProductName, el.dataset.selectedProductImg);\n        \/\/ Actualizar ayuda seg\u00fan producto seleccionado\n        const helpEl = document.getElementById('h3p-date-help');\n        if (helpEl) {\n          const productKey = el.dataset.selectedProduct || '';\n          helpEl.innerHTML = getHelpFor(productKey);\n        }\n        break;\n      case 4:\n        title.textContent = '';\n        title.classList.remove('h3p-title--bar');\n        document.querySelectorAll('.h3p-intro').forEach(p => p.hidden = true);\n        break;\n    }\n    updateStepIndicators(stepNumber);\n  }\n\n  function clearResult() {\n    result.classList.remove('h3p-result--ok','h3p-result--affected');\n    result.textContent = '';\n  }\n  function toEsDate(iso) {\n    if (!iso || !\/^\\d{4}-\\d{2}-\\d{2}$\/.test(iso)) return '';\n    const [y,m,d] = iso.split('-'); return `${d}\/${m}\/${y}`;\n  }\n  function checkAffected(productKey, isoDate) {\n    const list = AFFECTED[productKey] || []; return list.includes(isoDate);\n  }\n\n  \/* ====== PASO 3: imagen del producto + imagen BOP\/EXP espec\u00edfica ====== *\/\n  function renderDateProduct(name, imgUrl) {\n    if (!dateProduct) return;\n    if (!name && !imgUrl) { dateProduct.innerHTML = ''; return; }\n\n    const productKey = el.dataset.selectedProduct || '';\n    const bopImg = PRODUCT_BOP[productKey] || '';\n\n    const productImgHTML = imgUrl\n      ? `<img src=\"${imgUrl}\" alt=\"${name || 'Producto seleccionado'}\" decoding=\"async\" fetchpriority=\"low\" width=\"140\" height=\"140\">`\n      : '';\n\n    const bopImgHTML = bopImg\n      ? `<img src=\"${bopImg}\" alt=\"Ejemplo de ubicaci\u00f3n de la fecha de caducidad (EXP) para ${name || 'el producto seleccionado'}\" decoding=\"async\" fetchpriority=\"low\" width=\"140\" height=\"140\">`\n      : '';\n\n    dateProduct.innerHTML = `\n      <div class=\"h3p-date-figure\">\n        ${productImgHTML}\n        ${bopImgHTML}\n      <\/div>\n      ${name ? `<div class=\"h3p-date-product-name\">${name}<\/div>` : ''}\n      <div class=\"h3p-date-product-note\"><\/div>\n    `;\n  }\n\n  \/* === Listeners principales === *\/\n  if (btnStart) {\n    btnStart.addEventListener('click', () => {\n      goToStep(2);\n      const firstCard = productGrid.querySelector('.h3p-card');\n      if (firstCard) firstCard.focus();\n    });\n  }\n\n  if (btnBackTo1) btnBackTo1.addEventListener('click', () => {\n    document.querySelectorAll('.h3p-intro').forEach(p => p.hidden = false);\n    goToStep(1);\n    btnStart && btnStart.focus();\n  });\n\n  \/* Escritorio: al pulsar Siguiente s\u00ed enfocamos el input de fecha (comportamiento previo) *\/\n  if (btnGoTo3) btnGoTo3.addEventListener('click', function () {\n    if (!el.dataset.selectedProduct) return;\n    inputDate.value = '';\n    btnCheck.disabled = true;\n    clearResult();\n    goToStep(3);\n    inputDate.focus(); \/\/ solo escritorio (en mobile este bot\u00f3n est\u00e1 oculto)\n  });\n\n  if (btnBackTo2) btnBackTo2.addEventListener('click', function () {\n    goToStep(2);\n    const selected = productGrid.querySelector('.h3p-card--selected');\n    (selected || productGrid.querySelector('.h3p-card'))?.focus();\n  });\n\n  if (inputDate) inputDate.addEventListener('change', function () {\n    btnCheck.disabled = !inputDate.value;\n    clearResult();\n  });\n\n  if (btnCheck) btnCheck.addEventListener('click', function () {\n    clearResult();\n    const productKey = el.dataset.selectedProduct;\n    const productName = el.dataset.selectedProductName || productKey;\n    const productImg  = el.dataset.selectedProductImg || '';\n    const iso = inputDate.value;\n    if (!productKey || !iso) return;\n\n    const isAffected = checkAffected(productKey, iso);\n    const humanDate  = toEsDate(iso);\n\n    if (isAffected) {\n      result.classList.add('h3p-result--affected');\n      result.innerHTML = `<strong>Producto afectado.<\/strong><br><small>Producto: ${productName}<\/small><small>Fecha de caducidad: ${humanDate}<\/small>`;\n    } else {\n      result.classList.add('h3p-result--ok');\n      result.innerHTML = `<strong>No afectado.<\/strong><br><small>Producto: ${productName}<\/small><small>Fecha de caducidad: ${humanDate}<\/small>`;\n    }\n\n    renderFinal(isAffected, productName, productImg, humanDate);\n    goToStep(4);\n    btnFinalBack && btnFinalBack.focus();\n  });\n\n  if (btnFinalBack) btnFinalBack.addEventListener('click', function () {\n    clearResult();\n    goToStep(3);\n    inputDate && inputDate.focus();\n  });\n\n  if (btnFinalRestart) btnFinalRestart.addEventListener('click', function () {\n    el.dataset.selectedProduct = '';\n    el.dataset.selectedProductName = '';\n    el.dataset.selectedProductImg = '';\n    inputDate.value = '';\n    clearResult();\n    btnGoTo3 && (btnGoTo3.disabled = true);\n    document.querySelectorAll('.h3p-intro').forEach(p => p.hidden = false);\n    goToStep(1);\n    btnStart && btnStart.focus();\n  });\n\n  function renderFinal(isAffected, productName, productImg, humanDate) {\n    finalProduct.innerHTML = `\n      <div class=\"h3p-final-header\">\n        ${productImg ? `<img decoding=\"async\" src=\"${productImg}\" alt=\"${productName}\">` : ''}\n        <div class=\"h3p-final-product-name\">Producto: <strong>${productName}<\/strong><\/div>\n        <div class=\"h3p-final-product-date\">Fecha de caducidad: <strong>${humanDate}<\/strong><\/div>\n      <\/div>\n    `;\n\n    finalBody.classList.remove('h3p-final-body--affected','h3p-final-body--ok');\n\n    if (isAffected) {\n      finalBody.classList.add('h3p-final-body--affected');\n      finalBody.innerHTML = `\n        <div class=\"h3p-status-badge\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" role=\"img\" aria-hidden=\"true\" focusable=\"false\">\n            <path d=\"M12 2c.7 0 1.33.36 1.68.96l8.87 15.36c.72 1.25-.18 2.83-1.68 2.83H3.13c-1.5 0-2.4-1.58-1.68-2.83L10.32 2.96A1.92 1.92 0 0 1 12 2zm0 5a1 1 0 0 0-1 1v5.25a1 1 0 1 0 2 0V8a1 1 0 0 0-1-1zm0 10.75a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5z\"\/>\n          <\/svg>\n        <\/div>\n\n        <p>Tu producto ${productName} con fecha de caducidad ${humanDate} <strong>est\u00e1 incluido en la retirada preventiva.<\/strong><\/p>\n\n        <p><strong>La recomendaci\u00f3n es que dejes de utilizar este lote.<\/strong> Para gestionar tu caso de forma r\u00e1pida y eficaz ponte en contacto con nosotros en el tel\u00e9fono gratuito\n            <a class=\"link-cta\" href=\"tel:+34900181797\" aria-label=\"Llamar al 900 181 797\"><strong>900 181 797<\/strong><\/a> o, si lo prefieres, en nuestro correo\n            <a class=\"link-cta\" href=\"mailto:almiclub@danone.com\" aria-label=\"Enviar correo a almiclub@danone.com\"><strong>almiclub@danone.com<\/strong><\/a>.\n      `;\n    } else {\n      finalBody.classList.add('h3p-final-body--ok');\n      finalBody.innerHTML = `\n        <div class=\"h3p-status-badge\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" role=\"img\" aria-hidden=\"true\" focusable=\"false\">\n            <path d=\"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/>\n          <\/svg>\n        <\/div>\n\n        <p>Tu producto ${productName} con fecha de caducidad ${humanDate} no forma parte de la retirada y <strong>puedes seguir us\u00e1ndolo con normalidad.<\/strong><\/p>\n      `;\n    }\n  }\n\n  renderProducts();\n  goToStep(1);\n})();\n<\/script>\n\n\n\n<section class=\"faq-block\" aria-label=\"Preguntas frecuentes\">\n  <style>\n    .faq-block {\n      --brand: #001489;\n      --ink: #001489;\n      --pill-bg: #e8eeff;\n      --card-border: #e7ebf3;\n      --surface: #f6f8ff;\n      --radius: 16px;\n\n      max-width: 1100px;\n      margin: 40px auto;\n      padding: 0 16px;\n      font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif;\n      color: var(--ink);\n    }\n\n    .faq-eyebrow {\n      display: inline-block;\n      padding: 6px 14px;\n      background: var(--pill-bg);\n      color: var(--brand);\n      font-weight: 800;\n      font-size: 1rem;\n      border-radius: 999px;\n      text-transform: uppercase;\n      letter-spacing: 0.06em;\n      margin-bottom: 20px;\n    }\n\n    .faq-list {\n      display: grid;\n      gap: 14px;\n    }\n\n    .faq-item {\n      background: #fff;\n      border: 1px solid var(--card-border);\n      border-radius: var(--radius);\n      box-shadow: 0 6px 18px rgba(0,20,137,0.06);\n      overflow: hidden;\n    }\n\n    .faq-button {\n      width: 100%;\n      padding: 16px 18px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      background: #fff;\n      border: none;\n      color: var(--brand);\n      font-size: 1rem;\n      font-weight: 800;\n      text-align: left;\n      cursor: pointer;\n    }\n    .faq-button:focus-visible {\n      outline: 3px solid #b9c7ff;\n      border-radius: 8px;\n    }\n\n    .faq-icon {\n      width: 22px; height: 22px;\n      border-radius: 999px;\n      background: var(--brand);\n      color: #fff;\n      display: grid;\n      place-items: center;\n      font-size: 1.2rem;\n      transition: transform .2s ease;\n      box-shadow: 0 4px 10px rgba(0,20,137,0.18);\n    }\n    .faq-item.open .faq-icon { transform: rotate(45deg); }\n\n    .faq-panel {\n      display: grid;\n      grid-template-rows: 0fr;\n      transition: grid-template-rows .28s ease;\n      background: linear-gradient(180deg, #ffffff 0%, #f3f6ff 100%);\n      border-top: 1px dashed #e1e6f0;\n    }\n    .faq-item.open .faq-panel { grid-template-rows: 1fr; }\n\n    .faq-inner { overflow: hidden; }\n\n    .faq-body {\n      margin: 0;\n      padding: 14px 18px 18px;\n      font-size: 0.98rem;\n      line-height: 1.6;\n      color: var(--ink);\n    }\n\n    .faq-field {\n      display: grid;\n      gap: 8px;\n      padding: 0 18px 10px;\n    }\n\n    .faq-label {\n      font-weight: 400;\n      color: var(--brand);\n      font-size: 0.95rem;\n    }\n\n    .faq-select {\n      appearance: none;\n      width: 100%;\n      padding: 10px 14px;\n      border: 1px solid var(--card-border);\n      border-radius: 10px;\n      background:\n        linear-gradient(180deg, #fff, #fbfcff) padding-box,\n        linear-gradient(180deg, #e9eef9, #dfe7fb) border-box;\n      box-shadow: 0 2px 8px rgba(0,20,137,0.06) inset;\n      color: var(--ink);\n      font-size: 0.98rem;\n    }\n\n    .faq-select:focus {\n      outline: 3px solid #b9c7ff;\n    }\n\n    .faq-thumbs {\n      padding: 0 18px 10px;\n    }\n    .faq-thumbs[hidden] { display: none !important; }\n\n    .faq-thumbs-grid {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 10px;\n      align-items: start;\n    }\n\n    .faq-thumb {\n      display: block;\n      width: 100%;\n      max-height: 120px;\n      object-fit: contain;\n      background: #ffffff; \/* almohadilla blanca *\/\n      border: 1px solid var(--card-border);\n      border-radius: 10px;\n      box-shadow: 0 3px 10px rgba(0,20,137,0.06);\n    }\n\n    @media (max-width: 640px) {\n      .faq-thumbs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n    }\n\n    .sr-only {\n      position: absolute !important;\n      width: 1px; height: 1px;\n      padding: 0; margin: -1px;\n      overflow: hidden; clip: rect(0,0,0,0);\n      white-space: nowrap; border: 0;\n    }\n  <\/style>\n\n  <div class=\"faq-eyebrow\">Preguntas frecuentes<\/div>\n\n  <div class=\"faq-list\">\n\n    <!-- NUEVA Pregunta A -->\n    <div class=\"faq-item\">\n      <button class=\"faq-button\" aria-expanded=\"false\">\n        \u00bfQu\u00e9 est\u00e1 pasando con las leches de f\u00f3rmula?\n        <span class=\"faq-icon\">+<\/span>\n      <\/button>\n      <div class=\"faq-panel\" role=\"region\" aria-label=\"Respuesta: \u00bfQu\u00e9 est\u00e1 pasando con las leches de f\u00f3rmula?\">\n        <div class=\"faq-inner\">\n          <p class=\"faq-body\">\n            Durante estas \u00faltimas semanas ha habido varios cambios en las directrices de las autoridades europeas lo que ha hecho que se realicen retiradas preventivas de diferentes productos.\n            <br><br>\n            Estas retiradas son tr\u00e1mites preventivos que consisten en retirar algunos lotes por precauci\u00f3n, para garantizar la m\u00e1xima seguridad de los m\u00e1s peque\u00f1os.\n            <br><br>\n            Esto no significa que nuestros productos no fueran seguros: tanto nuestros controles rutinarios como los an\u00e1lisis espec\u00edficos adicionales realizados en el contexto actual del sector confirman que los productos de Danone son seguros y cumplen plenamente con todas las normativas aplicables.\n          <\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- NUEVA Pregunta B -->\n    <div class=\"faq-item\">\n      <button class=\"faq-button\" aria-expanded=\"false\">\n        \u00bfPor qu\u00e9 ha habido varias retiradas de producto por parte de Almir\u00f3n?\n        <span class=\"faq-icon\">+<\/span>\n      <\/button>\n      <div class=\"faq-panel\" role=\"region\" aria-label=\"Respuesta: \u00bfPor qu\u00e9 ha habido varias retiradas de producto por parte de Almir\u00f3n?\">\n        <div class=\"faq-inner\">\n          <p class=\"faq-body\">\n            Las recomendaciones de las autoridades sanitarias han ido cambiando y nosotros nos hemos adaptado a ellas:\n            <br><br>\n            <u>23 Enero 2026 \u2013 Actualizaci\u00f3n de directrices autoridades europeas<\/u><br>\n            Aplicamos inmediatamente esta actualizaci\u00f3n y procedimos a una retirada voluntaria y preventiva de un lote de Almir\u00f3n.\n            <br><br>\n            <u>En las \u00faltimas semanas<\/strong> \u2013 EFSA* publica una evaluaci\u00f3n cient\u00edfica, con nuevas recomendaciones<\/u><br>\n            En este contexto, y porque la seguridad de los beb\u00e9s es lo m\u00e1s importante, decidimos ampliar nuestra retirada preventiva a varios lotes de leches infantiles Almir\u00f3n.\n            <br><br>\n            Todos los productos fuera de esta retirada preventiva cumplen con las nuevas normativas.\n            <br><br>\n            *EFSA: Autoridad Europea de Seguridad Alimentaria.\n          <\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- NUEVA Pregunta C -->\n    <div class=\"faq-item\">\n      <button class=\"faq-button\" aria-expanded=\"false\">\n        \u00bfEs seguro usar los productos si los lotes no forman parte de la retirada preventiva?\n        <span class=\"faq-icon\">+<\/span>\n      <\/button>\n      <div class=\"faq-panel\" role=\"region\" aria-label=\"Respuesta: \u00bfEs seguro usar los productos si los lotes no forman parte de la retirada preventiva?\">\n        <div class=\"faq-inner\">\n          <p class=\"faq-body\">\n            S\u00ed, puedes usarlos con total tranquilidad.\n            <br><br>\n            Nuestros productos se fabrican siguiendo normas muy estrictas y se someten a m\u00e1s de 500 controles antes de salir de nuestras f\u00e1bricas.\n            <br><br>\n            Tanto nuestros controles rutinarios como los an\u00e1lisis espec\u00edficos adicionales realizados en el contexto actual del sector confirman que los productos de Danone son seguros y cumplen plenamente con todas las normativas aplicables.\n          <\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- NUEVA Pregunta D -->\n    <div class=\"faq-item\">\n      <button class=\"faq-button\" aria-expanded=\"false\">\n        \u00bfQu\u00e9 hago si he comprado o usado uno de los productos con el lote incluido en la retirada?\n        <span class=\"faq-icon\">+<\/span>\n      <\/button>\n      <div class=\"faq-panel\" role=\"region\" aria-label=\"Respuesta: \u00bfQu\u00e9 hago si he comprado o usado uno de los productos con el lote incluido en la retirada? (nuevo)\">\n        <div class=\"faq-inner\">\n          <p class=\"faq-body\">\n            La recomendaci\u00f3n es que dejes de utilizar este lote. Para gestionar tu caso de forma r\u00e1pida y eficaz ponte en contacto con nosotros en el tel\u00e9fono gratuito\n            <a class=\"link-cta\" href=\"tel:+34900181797\" aria-label=\"Llamar al 900 181 797\"><strong>900 181 797<\/strong><\/a> o, si lo prefieres, en nuestro correo\n            <a class=\"link-cta\" href=\"mailto:almiclub@danone.com\" aria-label=\"Enviar correo a almiclub@danone.com\"><strong>almiclub@danone.com<\/strong><\/a>.\n          <\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- NUEVA Pregunta E -->\n    <div class=\"faq-item\">\n      <button class=\"faq-button\" aria-expanded=\"false\">\n        Mi beb\u00e9 ha consumido el producto pero no ha presentado s\u00edntomas, \u00bfme tengo que preocupar?\n        <span class=\"faq-icon\">+<\/span>\n      <\/button>\n      <div class=\"faq-panel\" role=\"region\" aria-label=\"Respuesta: Mi beb\u00e9 ha consumido el producto pero no ha presentado s\u00edntomas, \u00bfme tengo que preocupar? (nuevo)\">\n        <div class=\"faq-inner\">\n          <p class=\"faq-body\">\n            Si tu beb\u00e9 ha tomado alguno de los productos incluidos y no ha mostrado ning\u00fan s\u00edntoma, no hay raz\u00f3n para preocuparse.\n          <\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Pregunta 1 (con selector e im\u00e1genes) \u2014 MOVIDA A LA \u00daLTIMA POSICI\u00d3N -->\n    <div class=\"faq-item\" id=\"faq-p1\">\n      <button class=\"faq-button\" aria-expanded=\"false\">\n        \u00bfD\u00f3nde puedo comprobar la fecha de caducidad?\n        <span class=\"faq-icon\">+<\/span>\n      <\/button>\n\n      <div class=\"faq-panel\" role=\"region\" aria-label=\"Respuesta: D\u00f3nde comprobar la fecha de caducidad\">\n        <div class=\"faq-inner\">\n\n          <div class=\"faq-field\">\n            <label class=\"faq-label\" for=\"producto-exp\">Selecciona tu producto<\/label>\n            <select id=\"producto-exp\" class=\"faq-select\" aria-label=\"Seleccionar producto para mostrar im\u00e1genes y mensaje\">\n              <option disabled selected>Elige una opci\u00f3n\u2026<\/option>\n              <option>Almir\u00f3n Advance 1 (400g)<\/option>\n              <option>Almir\u00f3n Advance 1 (800g)<\/option>\n              <option>Almir\u00f3n Advance 2 (800g)<\/option>\n              <option>Almir\u00f3n Advance 2 (1,2kg)<\/option>\n              <option>Almir\u00f3n Advance 1 (1,2kg)<\/option>\n              <option>Bipack Almir\u00f3n Advance 2 2\u00aa50%<\/option>\n              <option>Almir\u00f3n Profutura 1 (800g)<\/option>\n              <option>Almir\u00f3n Profutura 2 (800g)<\/option>\n              <option>Almir\u00f3n Profutura 2 \u2013 Sobres (28.8g)<\/option>\n              <option>Bipack Almir\u00f3n Profutura 2 2\u00aa30%<\/option>\n              <option>Almir\u00f3n AR 2 (800g)<\/option>\n            <\/select>\n          <\/div>\n\n          <div id=\"producto-thumbs\" class=\"faq-thumbs\" hidden>\n            <div class=\"faq-thumbs-grid\"><\/div>\n          <\/div>\n\n          <p id=\"producto-mensaje\" class=\"faq-body\" aria-live=\"polite\" hidden><\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n\n  <script>\n    \/\/ Acorde\u00f3n (con reseteo para P1)\n    document.querySelectorAll(\".faq-item\").forEach(item => {\n      const btn = item.querySelector(\".faq-button\");\n      btn.addEventListener(\"click\", () => {\n        const isOpen = item.classList.contains(\"open\");\n        item.classList.toggle(\"open\", !isOpen);\n        btn.setAttribute(\"aria-expanded\", String(!isOpen));\n\n        \/\/ \ud83d\udd01 Si se est\u00e1 cerrando la Pregunta 1, resetea su estado\n        if (item.id === \"faq-p1\" && isOpen) {\n          const selectEl   = document.getElementById(\"producto-exp\");\n          const thumbsWrap = document.getElementById(\"producto-thumbs\");\n          const thumbsGrid = thumbsWrap.querySelector(\".faq-thumbs-grid\");\n          const messageEl  = document.getElementById(\"producto-mensaje\");\n\n          \/\/ Reset select al placeholder\n          if (selectEl) {\n            selectEl.selectedIndex = 0; \/\/ vuelve a \"Elige una opci\u00f3n\u2026\"\n          }\n\n          \/\/ Limpia im\u00e1genes y oculta contenedor\n          if (thumbsGrid && thumbsWrap) {\n            thumbsGrid.innerHTML = \"\";\n            thumbsWrap.hidden = true;\n          }\n\n          \/\/ Limpia y oculta el mensaje\n          if (messageEl) {\n            messageEl.innerHTML = \"\";\n            messageEl.hidden = true;\n          }\n        }\n      });\n    });\n\n    \/\/ Mapeo producto -> im\u00e1genes\n    const PRODUCT_IMAGES = {\n      \"Almir\u00f3n Advance 1 (400g)\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354655_2D_SN_Almiron-1_FOP-scaled.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-1-400-EXP-scaled.png\"\n      },\n      \"Almir\u00f3n Advance 1 (800g)\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354657_2D_SN_Almiron-1_FOP-scaled.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-1-800-EXP-scaled.png\"\n      },\n      \"Almir\u00f3n Advance 2 (800g)\": {\n        img1: \"https:\/\/danonees2022prew4.housings.nexica.net\/wp-content\/uploads\/2023\/01\/354650_2D_SN_Almiron-2_FOP_V2-1-400x364-1.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-2-800-EXP-scaled.png\"\n      },\n      \"Almir\u00f3n Advance 2 (1,2kg)\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354901_2D_SN_Almiron-2_FOP-scaled.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-2-12-EXP-scaled.png\"\n      },\n      \"Almir\u00f3n Advance 1 (1,2kg)\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/354979_2D_SN_Almiron-1_FOP.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-1-12-EXP-scaled.png\"\n      },\n      \"Bipack Almir\u00f3n Advance 2 2\u00aa50%\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/Imagen-bipack-ADV-2.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Advance-2-800-EXP-scaled.png\"\n      },\n      \"Almir\u00f3n Profutura 1 (800g)\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Profutura-Duobiotik-1-FOP-scaled.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-EXP-f.png\"\n      },\n      \"Almir\u00f3n Profutura 2 (800g)\": {\n        img1: \"https:\/\/danonees2022prew4.housings.nexica.net\/wp-content\/uploads\/2023\/01\/almiron_profutura_duobiotik_2-400x412-1.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-EXP-f.png\"\n      },\n      \"Almir\u00f3n Profutura 2 \u2013 Sobres (28.8g)\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/C1N1-scaled.jpg\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-Muestras-EXP.png\"\n      },\n      \"Bipack Almir\u00f3n Profutura 2 2\u00aa30%\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/Bipack-Almiron-Profura-DUOB.2-1-1-scaled.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-Profutura-EXP-f.png\"\n      },\n      \"Almir\u00f3n AR 2 (800g)\": {\n        img1: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2023\/01\/imagen-15-768x768.png\",\n        img2: \"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/02\/BOP-Almiron-AR-2-EXP.png\"\n      }\n    };\n\n    const DEFAULT_MESSAGE =\n      'La fecha de caducidad se encuentra en la <strong>base del envase<\/strong>, precedida por las letras <strong>EXP<\/strong>.';\n\n    const GRUPO_TRASERA_ENVASE = new Set([\n      \"Almir\u00f3n Advance 1 (400g)\",\n      \"Almir\u00f3n Advance 1 (800g)\",\n      \"Almir\u00f3n Advance 2 (800g)\",\n      \"Bipack Almir\u00f3n Advance 2 2\u00aa50%\",\n      \"Almir\u00f3n AR 2 (800g)\"\n    ]);\n\n    const GRUPO_SUPERIOR_ENVASE = new Set([\n      \"Almir\u00f3n Advance 2 (1,2kg)\",\n      \"Almir\u00f3n Advance 1 (1,2kg)\"\n    ]);\n\n    const GRUPO_TRASERA_SOBRE = new Set([\n      \"Almir\u00f3n Profutura 2 \u2013 Sobres (28.8g)\"\n    ]);\n\n    function getMessageFor(product) {\n      if (GRUPO_TRASERA_ENVASE.has(product)) {\n        return 'La fecha de caducidad se encuentra en la <strong>parte trasera del envase<\/strong>, precedida por las letras <strong>EXP.<\/strong>';\n      }\n      if (GRUPO_SUPERIOR_ENVASE.has(product)) {\n        return 'La fecha de caducidad se encuentra en la <strong>parte superior del envase<\/strong>, precedida por las letras <strong>EXP.<\/strong>';\n      }\n      if (GRUPO_TRASERA_SOBRE.has(product)) {\n        return 'La fecha de caducidad se encuentra en la <strong>parte trasera del sobre<\/strong>, precedida por las letras <strong>EXP.<\/strong>';\n      }\n      return DEFAULT_MESSAGE;\n    }\n\n    \/\/ L\u00f3gica UI de P1\n    const selectEl   = document.getElementById(\"producto-exp\");\n    const thumbsWrap = document.getElementById(\"producto-thumbs\");\n    const thumbsGrid = thumbsWrap.querySelector(\".faq-thumbs-grid\");\n    const messageEl  = document.getElementById(\"producto-mensaje\");\n\n    if (selectEl) {\n      selectEl.addEventListener(\"change\", () => {\n        const product = selectEl.value;\n        const imgs = PRODUCT_IMAGES[product];\n\n        if (imgs) {\n          thumbsGrid.innerHTML = `\n            <img class=\"faq-thumb\" src=\"${imgs.img1}\" alt=\"Imagen del producto\" loading=\"lazy\" decoding=\"async\">\n            <img class=\"faq-thumb\" src=\"${imgs.img2}\" alt=\"Imagen del envase con ubicaci\u00f3n de EXP\" loading=\"lazy\" decoding=\"async\">\n          `;\n          thumbsWrap.hidden = false;\n        } else {\n          thumbsGrid.innerHTML = \"\";\n          thumbsWrap.hidden = true;\n        }\n\n        const msg = getMessageFor(product);\n        messageEl.innerHTML = msg || \"\";\n        messageEl.hidden = !msg;\n      });\n    }\n  <\/script>\n<\/section>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":14,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"tax-brand":[593],"interaction-goal":[],"class_list":["post-37512","page","type-page","status-publish","hentry","tax-brand-almiron"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n - Almir\u00f3n<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"ca_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n - Almir\u00f3n\" \/>\n<meta property=\"og:url\" content=\"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/\" \/>\n<meta property=\"og:site_name\" content=\"Almir\u00f3n\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/p\/Danone-Espaa-100083223195835\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-16T14:53:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Plantilla-905x1280.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Temps estimat de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minuts\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/\",\"url\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/\",\"name\":\"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n - Almir\u00f3n\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.almiclub.es\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Plantilla-905x1280.png\",\"datePublished\":\"2026-01-28T09:41:21+00:00\",\"dateModified\":\"2026-03-16T14:53:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/#breadcrumb\"},\"inLanguage\":\"ca\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.almiclub.es\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Plantilla-905x1280.png\",\"contentUrl\":\"https:\\\/\\\/www.almiclub.es\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Plantilla-905x1280.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/retirada-de-lotes-almiron\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/danoneesprew4.housings.nexica.net\\\/ca\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/#website\",\"url\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/\",\"name\":\"Danone\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ca\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/#organization\",\"name\":\"Danone\",\"url\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/danone_logo_2025.png\",\"contentUrl\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/danone_logo_2025.png\",\"width\":150,\"height\":150,\"caption\":\"Danone\"},\"image\":{\"@id\":\"https:\\\/\\\/almiclubes2022prew4.housings.nexica.net\\\/ca\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/p\\\/Danone-Espaa-100083223195835\\\/\",\"https:\\\/\\\/www.instagram.com\\\/danone.es\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n - Almir\u00f3n","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"ca_ES","og_type":"article","og_title":"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n - Almir\u00f3n","og_url":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/","og_site_name":"Almir\u00f3n","article_publisher":"https:\/\/www.facebook.com\/p\/Danone-Espaa-100083223195835\/","article_modified_time":"2026-03-16T14:53:11+00:00","og_image":[{"url":"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Plantilla-905x1280.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Temps estimat de lectura":"4 minuts"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/","url":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/","name":"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n - Almir\u00f3n","isPartOf":{"@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/#primaryimage"},"image":{"@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/#primaryimage"},"thumbnailUrl":"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Plantilla-905x1280.png","datePublished":"2026-01-28T09:41:21+00:00","dateModified":"2026-03-16T14:53:11+00:00","breadcrumb":{"@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/#breadcrumb"},"inLanguage":"ca","potentialAction":[{"@type":"ReadAction","target":["https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/"]}]},{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/#primaryimage","url":"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Plantilla-905x1280.png","contentUrl":"https:\/\/www.almiclub.es\/wp-content\/uploads\/2026\/01\/Plantilla-905x1280.png"},{"@type":"BreadcrumbList","@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/retirada-de-lotes-almiron\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/danoneesprew4.housings.nexica.net\/ca\/"},{"@type":"ListItem","position":2,"name":"Retirada preventiva de lotes espec\u00edficos de Almir\u00f3n"}]},{"@type":"WebSite","@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/#website","url":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/","name":"Danone","description":"","publisher":{"@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ca"},{"@type":"Organization","@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/#organization","name":"Danone","url":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/","logo":{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/#\/schema\/logo\/image\/","url":"https:\/\/almiclubes2022prew4.housings.nexica.net\/wp-content\/uploads\/2025\/09\/danone_logo_2025.png","contentUrl":"https:\/\/almiclubes2022prew4.housings.nexica.net\/wp-content\/uploads\/2025\/09\/danone_logo_2025.png","width":150,"height":150,"caption":"Danone"},"image":{"@id":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/p\/Danone-Espaa-100083223195835\/","https:\/\/www.instagram.com\/danone.es\/"]}]}},"_links":{"self":[{"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/pages\/37512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/comments?post=37512"}],"version-history":[{"count":113,"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/pages\/37512\/revisions"}],"predecessor-version":[{"id":38359,"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/pages\/37512\/revisions\/38359"}],"wp:attachment":[{"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/media?parent=37512"}],"wp:term":[{"taxonomy":"tax-brand","embeddable":true,"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/tax-brand?post=37512"},{"taxonomy":"interaction-goal","embeddable":true,"href":"https:\/\/almiclubes2022prew4.housings.nexica.net\/ca\/wp-json\/wp\/v2\/interaction-goal?post=37512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}