PageSourceSearch

https://www.farma.it/checkout/cart/index/

html farma.it collected 2026-10-09 18:26:25 UTC 554,603 bytes, 9,304 lines download raw bytes

1<!doctype html>
2<html lang="it">
3<head >
4    <meta charset="utf-8"/>
5<meta name="title" content="Carrello"/>
6<meta name="robots" content="INDEX,FOLLOW"/>
7<meta name="viewport" content="width=device-width, initial-scale=1"/>
8<title>Carrello</title>
9        <link rel="stylesheet" type="text/css" media="all" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/css/styles.css" />
10<link rel="stylesheet" type="text/css" media="all" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Amasty_Rewards/vendor/tooltipster/css/tooltipster.min.css" />
11<link rel="stylesheet" type="text/css" media="all" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Amasty_Rules/css/amrules.css" />
12<link rel="stylesheet" type="text/css" media="all" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Klarna_Siwk/css/button_cart_page.css" />
13<link rel="icon" type="image/x-icon" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/favicon.ico" />
14<link rel="shortcut icon" type="image/x-icon" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/favicon.ico" />
15<script type="text/javascript" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Amasty_Promo/js/amastyNoticeDisable.js"></script>
vendor: 1 bytes, line 15
15
16<script type="text/javascript" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Scalapay_Scalapay/js/scalapay_widget.js"></script>
16
17<link rel="preload" as="font" crossorigin="anonymous" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/fonts/SourceSans3/SourceSans3-Light.woff2" />
18<link rel="preload" as="font" crossorigin="anonymous" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/fonts/SourceSans3/SourceSans3-Medium.woff2" />
19<link rel="preload" as="font" crossorigin="anonymous" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/fonts/SourceSans3/SourceSans3-Bold.woff2" />
20<link rel="preload" as="font" crossorigin="anonymous" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/fonts/BalooBhaina2/BalooBhaina2-Bold.woff2" />
21<link rel="icon" sizes="16x16" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/favicon-16x16.png" />
22<link rel="icon" sizes="32x32" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/favicon-32x32.png" />
23<link rel="apple-touch-icon-precomposed" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/apple-touch-icon.png" />
24<meta name="facebook-domain-verification" content="19ikyzhaaju7aes0tjiyen338y422x" />
25<style>
26.checkout-payment-method .payment-method-title input[value="sella_fabrickpass"]+label>span {
27    width: 100%
28}
29
30.checkout-payment-method .payment-method-title input[value="sella_fabrickpass"]+label:after {
31    content: '';
32    display: block;
33    height: 30px;
34    width: 100%;
35    background-size: contain!important;
36    background: url("https://www.farma.it/media/paybybank-logo.png") no-repeat right
37}
38
39.bg-cerave-week {
40    background: #0072ba;
41}
42
43.bg-cerave-week:hover {
44    background: #0069ac;
45    text-decoration: none;
46}
47
48[data-content-type="text"] ol {
49    list-style-type: decimal;
50    padding-left: 20px;
51}
52
53[data-content-type="text"] ul {
54    list-style-type: disc;
55    padding-left: 20px;
56}
57
58[data-content-type="text"] ol li, [data-content-type="text"] ol li {
59    margin-top: 4px;
60}
61
62.catalog-product-view .product-info-main #gallery img.derma-badge {
63    width: 120px!important;
64}
65
66#amfaq-ask-form-inline .button-container {
67display: none !important;
68}
69
70.children-category-container {
71overflow: hidden;
72}
73div.sella-payment-method-container div.img-sella-container {
74    display: none;
75}
76
77div.sella-payment-method-container > div {
78    display: flex;
79    align-items: center;
80}
81div.sella-card-form input {
82    width: 100%;
83    border-radius: 26px;
84    border-width: 1px;
85    --tw-border-opacity: 1;
86    border-color: rgb(214 214 214 / var(--tw-border-opacity));
87    padding: .875rem;
88    line-height: 1;
89    color: rgb(8 1 26 / var(--tw-text-opacity));
90    --tw-text-opacity: 1;
91    color: rgb(107 114 128 / var(--tw-text-opacity));
92    font-size: 16px;
93}
94
95[data-bind="i18n: 'Sustainable delivery estimated in 48-72 hours'"] {
96    display: none;
97}
98
99/* stile doppi punti */
100/*
101.col-method#label_method_inpost_inpost:after {
102    content: 'Punti Fedeltà x2!';
103    background: #fec802e6;
104    padding: 0px 5px;
105    border-radius: 5px;
106    color: #f15b2c;
107    font-weight: bold;
108    font-size: 12px;
109    vertical-align: middle;
110    display: inline-block;
111    white-space: nowrap;
112    animation: smooth-bounce-h 2.5s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
113    padding: 4px 8px;
114}
115
116@keyframes smooth-bounce-h {
117    0%   { transform: translateX(0); }
118    25%  { transform: translateX(6px); }
119    50%  { transform: translateX(0); }
120    75%  { transform: translateX(-6px); }
121    100% { transform: translateX(0); }
122}
123
124.col-method#label_method_inpost_inpost {
125    display: flex;
126    gap: 8px;
127    align-items: center;
128}
129*/
130</style>
131
132
133<meta name="google-site-verification" content="9QFzfN_ciMqKFU_cA05_S82R8WLpqnsp4E4Ihexm7EE" />
134
135<script>
136// Aggiungi un event listener al documento
137document.addEventListener('click', function(event) {
138  // Ottieni l'elemento target cliccato
139  var targetElement = event.target;
140
141  // Verifica se l'elemento cliccato ha le classi specificate
142  var hasTargetClasses = targetElement.classList.contains('block') &&
143                          targetElement.classList.contains('px-6') &&
144                          targetElement.classList.contains('w-full') &&
145                          targetElement.classList.contains('py-3') &&
146                          targetElement.classList.contains('text-base') &&
147                          targetElement.classList.contains('hover:text-secondary') &&
148                          targetElement.classList.contains('hover:bg-tertiary-darker/10') &&
149                          targetElement.classList.contains('hover:fill-primary') &&
150                          targetElement.classList.contains('font-bold') &&
151                          targetElement.classList.contains('cursor-pointer') &&
152                          targetElement.classList.contains('level0') &&
153                          targetElement.classList.contains('nav-11') &&
154                          targetElement.classList.contains('page-item');
155
156  // Verifica se l'elemento cliccato è un figlio di un elemento con le classi specificate
157  var parentElement = targetElement.closest('.block.px-6.w-full.py-3.text-base.hover\\:text-secondary.hover\\:bg-tertiary-darker\\/10.hover\\:fill-primary.font-bold.cursor-pointer.level0.nav-11.page-item');
158
159  // Esegui l'azione solo se l'elemento cliccato ha le classi o è un figlio di un elemento con le classi
160  if (hasTargetClasses || parentElement) {
161    // Esegui il reindirizzamento o caricamento del link
162      window.location.href = "https://www.farma.it/dermocosmetica";
163  }
164
165  // Ottieni l'elemento target cliccato
166  targetElement = event.target;
167
168  // Verifica se l'elemento cliccato ha le classi specificate
169  hasTargetClasses = targetElement.classList.contains('block') &&
170                          targetElement.classList.contains('px-6') &&
171                          targetElement.classList.contains('w-full') &&
172                          targetElement.classList.contains('py-3') &&
173                          targetElement.classList.contains('text-base') &&
174                          targetElement.classList.contains('hover:text-secondary') &&
175                          targetElement.classList.contains('hover:bg-tertiary-darker/10') &&
176                          targetElement.classList.contains('hover:fill-primary') &&
177                          targetElement.classList.contains('font-bold') &&
178                          targetElement.classList.contains('cursor-pointer') &&
179                          targetElement.classList.contains('level0') &&
180                          targetElement.classList.contains('nav-12') &&
181                          targetElement.classList.contains('page-item');
182
183  // Verifica se l'elemento cliccato è un figlio di un elemento con le classi specificate
184  parentElement = targetElement.closest('.block.px-6.w-full.py-3.text-base.hover\\:text-secondary.hover\\:bg-tertiary-darker\\/10.hover\\:fill-primary.font-bold.cursor-pointer.level0.nav-12.page-item');
185
186  // Esegui l'azione solo se l'elemento cliccato ha le classi o è un figlio di un elemento con le classi
187  if (hasTargetClasses || parentElement) {
188    // Esegui il reindirizzamento o caricamento del link
189      window.location.href = "https://www.farma.it/gastro-intestinale";
190  }
191
192});
193
194</script>
194
195
196<script defer>
197    window.addEventListener('load', () => {
198        Alpine.effect(() => {
199            // Funzione per capire se un elemento è naturalmente focusabile
200            const isNaturallyFocusable = (el) => {
201                const tag = el.tagName.toLowerCase();
202                if (tag === "a") return el.hasAttribute("href");
203                return ["button", "input", "select", "textarea"].includes(tag);
204            };
205
206            // 1. Link con href="#" => role="button" + tabindex
207            document.querySelectorAll("[href='#']:not([role])").forEach(el => {
208                el.setAttribute("role", "button");
209                if (!el.hasAttribute("tabindex") && !isNaturallyFocusable(el)) {
210                    el.setAttribute("tabindex", "0");
211                }
212            });
213
214            // 2. Link target="_blank" => aria-label se manca
215            document.querySelectorAll("a[target='_blank']:not([aria-label])").forEach(el => {
216                const text = el.textContent.trim();
217                if (text.length > 0) {
218                    el.setAttribute("aria-label", `${text} - opens in new tab`);
219                }
220            });
221
222            // 2.1 Link con href valorizzato e senza aria-label => estrai path finale
223            document.querySelectorAll("a[href]:not([aria-label])").forEach(el => {
224                const href = el.getAttribute("href");
225                if (href && href !== "#" && !el.hasAttribute("aria-label")) {
226                    try {
227                        const cleanHref = href.split('?')[0].split('#')[0];
228                        const parts = cleanHref.split('/');
229                        const last = parts.filter(p => p).pop();
230                        if (last) {
231                            const label = decodeURIComponent(last)
232                                .replace(/[-_]/g, ' ')
233                                .replace(/[^\w\sàèéìòùÀÈÉÌÒÙ]/gi, '')
234                                .trim();
235                            if (label) {
236                                el.setAttribute("aria-label", label);
237                            }
238                        }
239                    } catch (e) {}
240                }
241            });
242
243            // 3. Form di ricerca => role="search"
244            document.getElementById("search_mini_form")?.setAttribute("role", "search");
245
246            // 4. Icone visive => role="presentation" se mancante
247            document.querySelectorAll("i[class*='-icon'], em[class*='-icon'], span[class*='-icon']").forEach(el => {
248                if (!el.hasAttribute("role")) {
249                    el.setAttribute("role", "presentation");
250                }
251            });
252
253            // 5. SVG: rimuovi role="img", imposta alt e role="presentation" se serve
254            document.querySelectorAll("svg").forEach(el => {
255                if (el.getAttribute("role") === "img") {
256                    el.removeAttribute("role");
257                }
258                if (!el.hasAttribute("alt")) {
259                    el.setAttribute("alt", "Icona");
260                }
261                if (!el.hasAttribute("role")) {
262                    el.setAttribute("role", "presentation");
263                }
264            });
265
266            // 6. Elementi cliccabili via classi => role="button" + tabindex="0"
267            const clickableSelector = [
268                ".cursor-pointer",
269                ".group\\/button",
270                "[style*='cursor: pointer']",
271                '.swiper-button-prev',
272                '.swiper-button-next',
273                '.swiper-pagination-bullet',
274                '.product-item-link'
275            ].join(',');
276
277            document.querySelectorAll(clickableSelector).forEach(el => {
278                if (el.hasAttribute("role")) return;
279
280                const tag = el.tagName.toLowerCase();
281                const isNativeButton =
282                    tag === "button" ||
283                    (tag === "input" && ["button", "submit", "reset"].includes(el.type));
284
285                if (!isNativeButton) {
286                    el.setAttribute("role", "button");
287
288                    if (!el.hasAttribute("tabindex") && !isNaturallyFocusable(el)) {
289                        el.setAttribute("tabindex", "0");
290                    }
291
292                    if (!el.hasAttribute("aria-label")) {
293                        el.setAttribute("aria-label", "Action");
294                    }
295                }
296            });
297
298            // 7. Elementi con @click => role="button" + tabindex="0"
299            document.querySelectorAll("*").forEach(el => {
300                if (
301                    el.hasAttribute("@click") &&
302                    el.hasAttribute("@click.prevent") &&
303                    !el.hasAttribute("role") &&
304                    el.tagName.toLowerCase() !== "button"
305                ) {
306                    el.setAttribute("role", "button");
307
308                    if (!el.hasAttribute("tabindex") && !isNaturallyFocusable(el)) {
309                        el.setAttribute("tabindex", "0");
310                    }
311
312                    if (!el.hasAttribute("aria-label")) {
313                        el.setAttribute("aria-label", "Action");
314                    }
315                }
316            });
317
318            // 8. Cookiebot title: attesa dinamica e pulizia
319            const observeCookiebotTitle = () => {
320                const targetId = "CybotCookiebotDialogBodyContentTitle";
321
322                const handleTitle = (el) => {
323                    if (el.getAttribute("role") === "heading") el.removeAttribute("role");
324                    if (el.hasAttribute("aria-level")) el.removeAttribute("aria-level");
325                };
326
327                const existing = document.getElementById(targetId);
328                if (existing) {
329                    handleTitle(existing);
330                    return;
331                }
332
333                const observer = new MutationObserver((mutations, obs) => {
334                    const found = document.getElementById(targetId);
335                    if (found) {
336                        handleTitle(found);
337                        obs.disconnect();
338                    }
339                });
340
341                observer.observe(document.body, {
342                    childList: true,
343                    subtree: true,
344                });
345            };
346
347            observeCookiebotTitle();
348
349            // 9. Correzione elementi pseudo-button generici (span/div/a) con comportamento da bottone
350            document.querySelectorAll("a, span, div").forEach(el => {
351                const isButtonLike =
352                    el.hasAttribute("@click") ||
353                    el.hasAttribute("@click.prevent") ||
354                    el.hasAttribute("x-on:click") ||
355                    el.hasAttribute("onclick") ||
356                    el.hasAttribute("@keyup.enter") ||
357                    el.hasAttribute("x-on:keyup.enter") ||
358                    el.classList.contains("cursor-pointer") ||
359                    el.classList.contains("badge-container") ||
360                    el.classList.contains("rating-summary");
361
362                if (isButtonLike) {
363                    const isFocusable = isNaturallyFocusable(el) || el.hasAttribute("tabindex");
364
365                    // Assegna solo se mancano
366                    if (!el.hasAttribute("role")) {
367                        el.setAttribute("role", "button");
368                    }
369                    if (!isFocusable) {
370                        el.setAttribute("tabindex", "0");
371                    }
372                    if (!el.hasAttribute("aria-label")) {
373                        el.setAttribute("aria-label", "Action");
374                    }
375                }
376            });
377        });
378    });
379
380
381window.addEventListener('init-external-scripts', () => {
382
383if (!window.dataLayer) {
384        window.dataLayer = [];
385}
386
387      window.dataLayer.push({
388                    event: 'init_external_scripts'
389      })
390});
391
392
393document.addEventListener('click', function (event) {
394    const link = event.target.closest('a[href^="#"]');
395
396    if (!link) {
397        return;
398    }
399
400    const targetId = link.getAttribute('href').substring(1);
401
402    if (!targetId) {
403        return;
404    }
405
406    const target = document.getElementById(targetId);
407
408    // Ci interessa solo se il target è un form
409    if (!(target instanceof HTMLFormElement)) {
410        return;
411    }
412
413    event.preventDefault();
414
415    target.requestSubmit();
416});
417</script>
417
418
419    <!-- Meta Business Extension for Magento 2 -->
420<!-- Meta Pixel Code -->
421<script>
vendor: 398 bytes, lines 421-429
421
422!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
423n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
424n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
425t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
426document,'script','//connect.facebook.net/en_US/fbevents.js');
427    fbq(
428  'init',
429  '
429512468414859242
vendor: 59 bytes, lines 429-432
429',
430    {},
431  {agent: 'magento_opensource-0.0.0-1.6.4' }
432);
433fbq('track', 'PageView', {
434  source: "magento_opensource",
435  pluginVersion: "1.6.4"
436});
437</script>
437
438
439<script>
440    function metaPixelTracker(config) {
441        let eventId = crypto.randomUUID();
442        var browserEventData = config.browserEventData;
443        let browserPayload = config.browserEventData.payload;
444
445        browserPayload.source = browserEventData.source;
446        browserPayload.pluginVersion = browserEventData.pluginVersion;
447
448        fbq('set', 'agent', browserEventData.fbAgentVersion, browserEventData.fbPixelId);
449        fbq(browserEventData.track, browserEventData.event, browserPayload, {
450                eventID: eventId
451            }
452        );
453
454        var formData = new FormData();
455        formData.append('form_key', hyva.getFormKey());
456        formData.append('eventId', eventId);
457
458        Object.entries(config.payload).forEach(function (item) {
459            formData.append(item[0], item[1]);
460        })
461
462        fetch(config.url, {
463            method: 'POST',
464            body: formData
465        }).catch(error => {
466            console.error(error);
467        });
468    }
469
470    function metaParseJson(json) {
471        json = decodeURIComponent(json.replace(/\+/g, ' '));
472        return JSON.parse(json);
473    }
474
475    function metaDelCookie(name) {
476        var date = new Date(0);
477        var cookie = name + '=' + '; path=/; expires=' + date.toUTCString();
478
479        document.cookie = cookie;
480    }
481
482    function metaGetCookie(name) {
483        var cookie = ' ' + document.cookie;
484        var search = ' ' + name + '=';
485        var setStr = null;
486        var offset = 0;
487        var end = 0;
488
489        if (cookie.length > 0) {
490            offset = cookie.indexOf(search);
491            if (offset !== -1) {
492                offset += search.length;
493                end = cookie.indexOf(';', offset);
494                if (end === -1) {
495                    end = cookie.length;
496                }
497                setStr = decodeURI(cookie.substring(offset, end));
498            }
499        }
500        return setStr;
501    }
502</script>
502
503<!-- End Meta Pixel Code -->
504
505<!-- Google Tag Manager by MagePal -->
506<script type="text/javascript">
507    window.dataLayer = window.dataLayer || [];
508
509
510    function initMagepalGtmDatalayer_4f71f1c5e6503faecb6d9e35a59f2399() {
511        'use strict';
512
513        let lastPushedCart = {};
514        let lastPushedCustomer = {};
515
516        function objectKeyExist(object)
517        {
518            const items = Array.isArray(object) ? object : Object.values(object);
519            return items.reduce((acc, v) => (acc || v.customer || v.cart), false);
520            // return _.some(object, function (o) {
521            //     return !_.isEmpty(_.pick(o, ['customer', 'cart']));
522            // })
523        }
524
525        const isObject = x => x === Object(x);
526        const has = (x, p) => isObject(x) && x.hasOwnProperty(p);
527        const isEqual = (x, y) => JSON.stringify(x) === JSON.stringify(y);
528
529        //Update datalayer
530        function updateDataLayer(_gtmDataLayer, _dataObject, _forceUpdate)
531        {
532            let customer = {isLoggedIn : false},
533                cart = {hasItems: false};
534
535            if (_gtmDataLayer !== undefined && (!objectKeyExist(_gtmDataLayer) || _forceUpdate)) {
536                if (isObject(_dataObject) && has(_dataObject, 'customer')) {
537                    customer = _dataObject.customer;
538                }
539
540                if (isObject(_dataObject) && has(_dataObject, 'cart')) {
541                    cart = _dataObject.cart;
542                }
543
544                if (!isEqual(lastPushedCart, cart) || !isEqual(lastPushedCustomer, customer)) {
545                    window.dispatchEvent(new CustomEvent('mpCustomerSession', {detail: [customer, cart, _gtmDataLayer]}));
546                    //$('body').trigger('mpCustomerSession', [customer, cart, _gtmDataLayer]);
547                    _gtmDataLayer.push({'event': 'mpCustomerSession', 'customer': customer, 'cart': cart});
548
549                    lastPushedCustomer = customer;
550                    lastPushedCart = cart;
551                }
552            }
553        }
554
555        function isTrackingAllowed(config)
556        {
557            let allowServices = false,
558                allowedCookies,
559                allowedWebsites;
560
561            if (!config.isGdprEnabled || (!config.isGdprEnabled && !config.addJsInHeader)) {
562                allowServices = true;
563            } else if (config.isCookieRestrictionModeEnabled && config.gdprOption === 1) {
564                allowedCookies = hyva.getCookie(config.cookieName);
565
566                if (allowedCookies !== null) {
567                    allowedWebsites = JSON.parse(allowedCookies);
568
569                    if (allowedWebsites[config.currentWebsite] === 1) {
570                        allowServices = true;
571                    }
572                }
573            } else if (config.gdprOption === 2) {
574                allowServices = hyva.getCookie(config.cookieName) !== null;
575            } else if (config.gdprOption === 3) {
576                allowServices = hyva.getCookie(config.cookieName) === null;
577            }
578
579            return allowServices;
580        }
581
582        //load gtm
583        function initTracking(dataLayerName, accountId, containerCode)
584        {
585            window.dispatchEvent(new CustomEvent('gtm:beforeInitialize'));
586
587            (function (w, d, s, l, i) {
588                w[l] = w[l] || [];
589                w[l].push({
590                    'gtm.start':
591                        new Date().getTime(), event: 'gtm.js'
592                });
593                var f = d.getElementsByTagName(s)[0],
594                    j = d.createElement(s), dl = l != dataLayerName ? '&l=' + l : '';
595                j.async = true;
596                j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl + containerCode;
597                f.parentNode.insertBefore(j, f);
598            })(window, document, 'script', dataLayerName, accountId);
599            window.dispatchEvent(new CustomEvent('gtm:afterInitialize'));
600        }
601
602        function pushData(dataLayerName, dataLayer)
603        {
604            //if (_.isArray(dataLayer)) {
605            if (Array.isArray(dataLayer)) {
606                //_.each(dataLayer, function (data) {
607                dataLayer.forEach(function (data) {
608                    window[dataLayerName].push(data);
609                });
610            }
611        }
612
613        const config = {
614            dataLayer: "dataLayer",
615            gdprOption: 0,
616            isGdprEnabled: 0,
617            isCookieRestrictionModeEnabled: 0,
618        };
619
620                config.currentWebsite = 1;
621        config.cookieName = "user_allowed_save_cookie";
622        config.accountId = "GTM-TQTH9KNM";
623        config.data = [{"ecommerce":{"currencyCode":"EUR"},"pageType":"checkout_cart_index","list":"cart","customer":{"isLoggedIn":false}},{"event":"cartPage","cart":{"hasItems":false}}];
624        config.addJsInHeader = 0;
625        config.containerCode = "";
626        
627        window[config.dataLayer] = window[config.dataLayer] || [];
628
629        if (has(config, 'accountId') && isTrackingAllowed(config)) {
630            pushData(config.dataLayer, config.data);
631            initTracking(config.dataLayer, config.accountId, config.containerCode);
632        }
633
634        const gtmDataLayer = window[config.dataLayer];
635
636        window.addEventListener("private-content-loaded", event => {
637            const dataObject = event.detail.data['magepal-gtm-jsdatalayer'] || {};
638            updateDataLayer(gtmDataLayer, dataObject, true)
639        });
640
641        // dataObject.subscribe(function (_dataObject) {
642        //     updateDataLayer(gtmDataLayer, _dataObject, true);
643        // }, this);
644
645        // if (!_.contains(customerData.getExpiredKeys(), 'magepal-gtm-jsdatalayer')) {
646        //     updateDataLayer(gtmDataLayer, dataObject(), false);
647        // }
648
649    }
650    window.addEventListener('DOMContentLoaded', initMagepalGtmDatalayer_4f71f1c5e6503faecb6d9e35a59f2399);
651
652</script>
652
653<!-- End Google Tag Manager by MagePal -->
654
655<link rel="canonical" href="https://www.farma.it/checkout/cart/index/">
656<script>
657    var BASE_URL = 'https://www.farma.it/';
658    var THEME_PATH = 'https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT';
659    var COOKIE_CONFIG = {
660        "expires": null,
661        "path": "\u002F",
662        "domain": ".farma.it",
663        "secure": true,
664        "lifetime": "7200",
665        "cookie_restriction_enabled": false    };
666    var CURRENT_STORE_CODE = 'default';
667    var CURRENT_WEBSITE_ID = '1';
668    var CURRENT_MIN_ORDER_VALUE = '24.90';
669    var CURRENT_MIN_ORDER_VALUE_FORMATTED = '24,90 €';
670    var CURRENT_MIN_ORDER_INCLUDE_DISCOUNT = '0';
671    var CURRENT_STORE_CURRENCY = 'EUR';
672
673    window.hyva = window.hyva || {}
674
675    window.cookie_consent_groups = window.cookie_consent_groups || {}
676    window.cookie_consent_groups['necessary'] = true;
677
678    window.cookie_consent_config = window.cookie_consent_config || {};
679    window.cookie_consent_config['necessary'] = [].concat(
680        window.cookie_consent_config['necessary'] || [],
681        [
682            'user_allowed_save_cookie',
683            'form_key',
684            'mage-messages',
685            'private_content_version',
686            'mage-cache-sessid',
687            'last_visited_store',
688            'section_data_ids'
689        ]
690    );
691    document.addEventListener("alpine:init", () => {
692        Alpine.store('externalScriptsInit', false);
693        window.addEventListener('init-external-scripts', () => Alpine.store('externalScriptsInit',true), {
694            once: true,
695            passive: true
696        });
697    });
698</script>
vendor: 1 bytes, line 698
698
699<script>
700    (function( hyva, undefined ) {
701
702        function lifetimeToExpires(options, defaults) {
703
704            const lifetime = options.lifetime || defaults.lifetime;
705
706            if (lifetime) {
707                const date = new Date;
708                date.setTime(date.getTime() + lifetime * 1000);
709                return date;
710            }
711
712            return null;
713        }
714
715        function generateRandomString() {
716
717            const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
718                length = 16;
719
720            let formKey = '',
721                charactersLength = allowedCharacters.length;
722
723            for (let i = 0; i < length; i++) {
724                formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))]
725            }
726
727            return formKey;
728        }
729
730        const sessionCookieMarker = {noLifetime: true}
731
732        const cookieTempStorage = {};
733
734        const internalCookie = {
735            get(name) {
736                const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
737                return v ? v[2] : null;
738            },
739            set(name, value, days, skipSetDomain) {
740                let expires,
741                    path,
742                    domain,
743                    secure,
744                    samesite;
745
746                const defaultCookieConfig = {
747                    expires: null,
748                    path: '/',
749                    domain: null,
750                    secure: false,
751                    lifetime: null,
752                    samesite: 'lax'
753                };
754
755                const cookieConfig = window.COOKIE_CONFIG || {};
756
757                expires = days && days !== sessionCookieMarker
758                    ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig)
759                    : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires;
760
761                path = cookieConfig.path || defaultCookieConfig.path;
762                domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain);
763                secure = cookieConfig.secure || defaultCookieConfig.secure;
764                samesite = cookieConfig.samesite || defaultCookieConfig.samesite;
765
766                document.cookie = name + "=" + encodeURIComponent(value) +
767                    (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') +
768                    (path ? '; path=' + path : '') +
769                    (domain ? '; domain=' + domain : '') +
770                    (secure ? '; secure' : '') +
771                    (samesite ? '; samesite=' + samesite : 'lax');
772            },
773            isWebsiteAllowedToSaveCookie() {
774                const allowedCookies = this.get('user_allowed_save_cookie');
775                if (allowedCookies) {
776                    const allowedWebsites = JSON.parse(unescape(allowedCookies));
777
778                    return allowedWebsites[CURRENT_WEBSITE_ID] === 1;
779                }
780                return false;
781            },
782            getGroupByCookieName(name) {
783                const cookieConsentConfig = window.cookie_consent_config || {};
784                let group = null;
785                for (let prop in cookieConsentConfig) {
786                    if (!cookieConsentConfig.hasOwnProperty(prop)) continue;
787                    if (cookieConsentConfig[prop].includes(name)) {
788                        group = prop;
789                        break;
790                    }
791                }
792                return group;
793            },
794            isCookieAllowed(name) {
795                const cookieGroup = this.getGroupByCookieName(name);
796                return cookieGroup
797                    ? window.cookie_consent_groups[cookieGroup]
798                    : this.isWebsiteAllowedToSaveCookie();
799            },
800            saveTempStorageCookies() {
801                for (const [name, data] of Object.entries(cookieTempStorage)) {
802                    if (this.isCookieAllowed(name)) {
803                        this.set(name, data['value'], data['days'], data['skipSetDomain']);
804                        delete cookieTempStorage[name];
805                    }
806                }
807            }
808        };
809
810        hyva.getCookie = (name) => {
811            const cookieConfig = window.COOKIE_CONFIG || {};
812
813            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
814                return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null;
815            }
816
817            return internalCookie.get(name);
818        }
819
820        hyva.setCookie = (name, value, days, skipSetDomain) => {
821            const cookieConfig = window.COOKIE_CONFIG || {};
822
823            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
824                cookieTempStorage[name] = {value, days, skipSetDomain};
825                return;
826            }
827            return internalCookie.set(name, value, days, skipSetDomain);
828        }
829
830
831        hyva.setSessionCookie = (name, value, skipSetDomain) => {
832            return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain)
833        }
834
835        hyva.getBrowserStorage = () => {
836            const browserStorage = window.localStorage || window.sessionStorage;
837            if (!browserStorage) {
838                console.warn('Browser Storage is unavailable');
839                return false;
840            }
841            try {
842                browserStorage.setItem('storage_test', '1');
843                browserStorage.removeItem('storage_test');
844            } catch (error) {
845                console.warn('Browser Storage is not accessible', error);
846                return false;
847            }
848            return browserStorage;
849        }
850
851        hyva.postForm = (postParams) => {
852            const form = document.createElement("form");
853
854            let data = postParams.data;
855
856            if (! postParams.skipUenc && ! data.uenc) {
857                data.uenc = btoa(window.location.href);
858            }
859            form.method = "POST";
860            form.action = postParams.action;
861
862            Object.keys(postParams.data).map(key => {
863                const field = document.createElement("input");
864                field.type = 'hidden'
865                field.value = postParams.data[key];
866                field.name = key;
867                form.appendChild(field);
868            });
869
870            const form_key = document.createElement("input");
871            form_key.type = 'hidden';
872            form_key.value = hyva.getFormKey();
873            form_key.name="form_key";
874            form.appendChild(form_key);
875
876            document.body.appendChild(form);
877
878            form.submit();
879        }
880
881        hyva.getFormKey = function () {
882            let formKey = hyva.getCookie('form_key');
883
884            if (!formKey) {
885                formKey = generateRandomString();
886                hyva.setCookie('form_key', formKey);
887            }
888
889            return formKey;
890        }
891
892        hyva.formatPrice = (value, showSign, options = {}) => {
893            const groupSeparator = options.groupSeparator;
894            const decimalSeparator = options.decimalSeparator
895            delete options.groupSeparator;
896            delete options.decimalSeparator;
897            const formatter = new Intl.NumberFormat(
898                'it\u002DIT',
899                Object.assign({
900                    style: 'currency',
901                    currency: 'EUR',
902                    signDisplay: showSign ? 'always' : 'auto'
903                }, options)
904            );
905            return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ?
906                formatter.formatToParts(value).map(({type, value}) => {
907                    switch (type) {
908                        case 'currency':
909                            return '\u20AC' || value;
910                        case 'minusSign':
911                            return '- ';
912                        case 'plusSign':
913                            return '+ ';
914                        case 'group':
915                            return groupSeparator !== undefined ? groupSeparator : value;
916                        case 'decimal':
917                            return decimalSeparator !== undefined ? decimalSeparator : value;
918                        default :
919                            return value;
920                    }
921                }).reduce((string, part) => string + part) :
922                formatter.format(value);
923        }
924
925        const formatStr = function (str, nStart) {
926            const args = Array.from(arguments).slice(2);
927
928            return str.replace(/(%+)([0-9]+)/g, (m, p, n) => {
929                const idx = parseInt(n) - nStart;
930
931                if (args[idx] === null || args[idx] === void 0) {
932                    return m;
933                }
934                return p.length % 2
935                    ? p.slice(0, -1).replace('%%', '%') + args[idx]
936                    : p.replace('%%', '%') + n;
937            })
938        }
939
940        hyva.str = function (string) {
941            const args = Array.from(arguments);
942            args.splice(1, 0, 1);
943
944            return formatStr.apply(undefined, args);
945        }
946
947        hyva.strf = function () {
948            const args = Array.from(arguments);
949            args.splice(1, 0, 0);
950
951            return formatStr.apply(undefined, args);
952        }
953
954        /**
955         * Take a html string as `content` parameter and
956         * extract an element from the DOM to replace in
957         * the current page under the same selector,
958         * defined by `targetSelector`
959         */
960        hyva.replaceDomElement = (targetSelector, content) => {
961            // Parse the content and extract the DOM node using the `targetSelector`
962            const parser = new DOMParser();
963            const doc = parser.parseFromString(content, 'text/html');
964            const contentNode = doc.querySelector(targetSelector);
965
966            // Bail if content or target can't be found
967            if (!contentNode || !document.querySelector(targetSelector)) {
968                return;
969            }
970
971                        hyva.activateScripts(contentNode);
972            
973            // Replace the old DOM node with the new content
974            document.querySelector(targetSelector).replaceWith(contentNode);
975
976            // Reload customerSectionData and display cookie-messages if present
977            window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
978            hyva.initMessages();
979        }
980
981        hyva.removeScripts = (contentNode) => {
982            const scripts = contentNode.getElementsByTagName('script');
983            for (let i = 0; i < scripts.length; i++) {
984                scripts[i].parentNode.removeChild(scripts[i]);
985            }
986            const templates = contentNode.getElementsByTagName('template');
987            for (let i = 0; i < templates.length; i++) {
988                const container = document.createElement('div');
989                container.innerHTML = templates[i].innerHTML;
990                hyva.removeScripts(container);
991                templates[i].innerHTML = container.innerHTML;
992            }
993        }
994
995        hyva.activateScripts = (contentNode) => {
996            // Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM.
997            const scripts = Array.from(contentNode.getElementsByTagName('script'));
998
999            // Iterate over all script tags to duplicate+inject each into the head
1000            for (const original of scripts) {
1001                const script = document.createElement('script');
1002                original.type && (script.type = original.type);
1003                script.innerHTML = original.innerHTML;
1004
1005                // Remove the original (non-executing) script from the contentNode
1006                original.parentNode.removeChild(original)
1007
1008                // Add script to head
1009                document.head.appendChild(script);
1010            }
1011
1012            return contentNode;
1013        }
1014
1015        const replace = {['+']: '-', ['/']: '_', ['=']: ','};
1016        hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]);
1017
1018        let currentTrap;
1019
1020        const focusableElements = (rootElement) => {
1021            const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]';
1022            return Array.from(rootElement.querySelectorAll(selector))
1023                .filter(el => {
1024                    return el.style.display !== 'none'
1025                        && !el.disabled
1026                        && el.tabIndex !== -1
1027                        && (el.offsetWidth || el.offsetHeight || el.getClientRects().length)
1028                })
1029        }
1030
1031        const focusTrap = (e) => {
1032            const isTabPressed = e.key === 'Tab' || e.keyCode === 9;
1033            if (!isTabPressed) return;
1034
1035            const focusable = focusableElements(currentTrap)
1036            const firstFocusableElement = focusable[0]
1037            const lastFocusableElement = focusable[focusable.length - 1]
1038
1039            e.shiftKey
1040                ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault())
1041                : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault())
1042        };
1043
1044        hyva.releaseFocus = (rootElement) => {
1045            if (currentTrap && (!rootElement || rootElement === currentTrap)) {
1046                currentTrap.removeEventListener('keydown', focusTrap)
1047                currentTrap = null
1048            }
1049        }
1050        hyva.trapFocus = (rootElement) => {
1051            if (!rootElement) return;
1052            hyva.releaseFocus()
1053            currentTrap = rootElement
1054            rootElement.addEventListener('keydown', focusTrap)
1055            const firstElement = focusableElements(rootElement)[0]
1056            firstElement && firstElement.focus()
1057        }
1058
1059        hyva.safeParseNumber = (rawValue) => {
1060            const number = rawValue ? parseFloat(rawValue) : null;
1061
1062            return Array.isArray(number) || isNaN(number) ? rawValue : number;
1063        }
1064
1065        const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
1066        hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => {
1067
1068            const camelCase = toCamelCase(name);
1069            const key = '__hyva_bool_' + name
1070
1071            return new Proxy(Object.assign(
1072                additionalMethods,
1073                {
1074                    [key]: !!value,
1075                    [name]() {return !!this[key]},
1076                    ['!' + name]() {return !this[key]}, // @deprecated This does not work with non-CSP Alpine
1077                    ['not' + camelCase]() {return !this[key]},
1078                    ['toggle' + camelCase]() {this[key] = !this[key]},
1079                    [`set${camelCase}True`]() {this[key] = true},
1080                    [`set${camelCase}False`]() {this[key] = false},
1081                }
1082            ), {
1083                set(target, prop, value) {
1084                    return prop === name
1085                        ? (target[key] = !!value)
1086                        : Reflect.set(...arguments);
1087                }
1088            })
1089        }
1090
1091                hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
1092        window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true});
1093                window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
1094
1095    }( window.hyva = window.hyva || {} ));
1096    //# sourceURL=hyva.js
1097</script>
vendor: 1 bytes, line 1097
1097
1098<script type="speculationrules">
1099{
1100    "tag": "Hyva Theme",
1101    "prefetch": [{
1102        "source": "document",
1103        "where": {
1104            "and": [
1105                { "href_matches": "/*" },
1106                { "not": {
1107                    "href_matches": ["/customer/*","/search/*","/sales/*","/wishlist/*","/checkout/*","/paypal/*","/newsletter/*","/stores/store/redirect/*"]                }},
1108                { "not": {
1109                    "selector_matches": [".no-preload", ".do-not-prerender", "[download]", "[rel~=nofollow]", "[target]"]
1110                }}
1111            ]
1112        },
1113        "eagerness": "moderate"
1114    }]
1115}
1116</script>
vendor: 1 bytes, line 1116
1116
1117<script class="feedaty_sdk" src="https://widget.feedaty.com/v3.0.0/js/2021/10214034/feedaty.min.js" async></script>
vendor: 1 bytes, line 1117
1117
1118<script>
1119    function deepMerge(target, ...sources) {
1120        if (!sources.length) {
1121            return target;
1122        }
1123
1124        const source = sources.shift();
1125
1126        if (typeof target !== 'object' || typeof source !== 'object') {
1127            return target;
1128        }
1129
1130        for (let key in source) {
1131            if (source.hasOwnProperty(key)) {
1132                if (source[key] instanceof Array) {
1133                    target[key] = target[key] || [];
1134                    target[key] = target[key].concat(source[key]);
1135                } else if (typeof source[key] === 'object') {
1136                    target[key] = deepMerge(target[key] || {}, source[key]);
1137                } else {
1138                    target[key] = source[key];
1139                }
1140            }
1141        }
1142
1143        return deepMerge(target, ...sources);
1144    }
1145
1146    function amastyRewardsProduct() {
1147        return {
1148            captionStartText: 'Puoi\u0020guadagnare',
1149            captionAfterText: '',
1150            captionRegistrationText: 'registrandoti\u0021',
1151            captionEndText: '',
1152            productId: this.$el.dataset.productId,
1153            formSelector: 'product_addtocart_form',
1154            form: null,
1155            refreshUrl: this.$el.dataset.refreshUrl,
1156            loader: false,
1157            isFetching: false,
1158            abortFetchController: false,
1159            highlight: {
1160                registration_link: '',
1161                caption_color: '',
1162                caption_text: '0',
1163                visible: false
1164            },
1165
1166            init() {
1167                this.formObserver();
1168                document.addEventListener(`update-qty-${this.productId}`, () => {
1169                    this.updateData();
1170                });
1171                window.addEventListener('update-bundle-option-selection', () => {
1172                    this.updateData();
1173                });
1174                this.$nextTick(() => this.updateData());
1175            },
1176
1177            hideBlock() {
1178                this.highlight.visible = false;
1179                this.loader = true;
1180            },
1181
1182            dispatchStatus(type, message) {
1183                window.dispatchMessages([{
1184                    type: type,
1185                    text: message
1186                }], 5000);
1187            },
1188
1189            formObserver() {
1190                const product = document.querySelector(`input[name='product'][value='${this.productId}']`);
1191
1192                if (product) {
1193                    const productForm = product.form;
1194                    if (productForm) {
1195                        productForm.addEventListener('change', () => {
1196                            this.updateData();
1197                        });
1198                    }
1199                }
1200            },
1201
1202            updateData() {
1203                if (this.isFetching) {
1204                    return false;
1205                }
1206                if (!this.refreshUrl) {
1207                    this.loader = false;
1208                    return false;
1209                }
1210                this.hideBlock();
1211
1212                if (this.abortFetchController) {
1213                    this.abortFetchController.abort();
1214                }
1215
1216                this.abortFetchController = new AbortController();
1217
1218                const product = document.querySelector(`input[name='product'][value='${this.productId}']`);
1219                let formParams = '';
1220
1221                if (!product) {
1222                    formParams = 'form_key=' + hyva.getFormKey() + '&product=' + this.productId;
1223                } else {
1224                    const form = product.form;
1225                    const formData = new FormData(form);
1226                    formParams = new URLSearchParams(formData).toString();
1227                }
1228                const formJson = JSON.stringify({
1229                    page: 0,
1230                    productId: this.productId,
1231                    attributes: formParams
1232                });
1233
1234                const requestOptions = {
1235                    method: 'POST',
1236                    body: formJson,
1237                    headers: {
1238                        'Content-Type': 'application/json',
1239                        'x-requested-with': 'XMLHttpRequest',
1240                    },
1241                    signal: this.abortFetchController.signal
1242                };
1243                this.isFetching = true;
1244                fetch(this.refreshUrl, requestOptions).then(response => {
1245                    if (!response.ok) {
1246                        return Promise.reject(`${response.status} ${response.statusText}`);
1247                    }
1248                    return response.json();
1249                }).then((data) => {
1250                    this.highlight.visible = data.visible;
1251                    this.highlight.caption_text = data.caption_text;
1252                    this.highlight.caption_color = data.caption_color;
1253
1254                    if (data?.registration_link) {
1255                        this.highlight.registration_link = data.registration_link;
1256                    }
1257
1258                    if (data?.need_to_change_message && data?.need_to_change_message === 1) {
1259                        this.captionAfterText = 'completando\u0020un\u0020acquisto\u0021\u0020Solo\u0020per';
1260                        this.captionRegistrationText = 'registrati.';
1261                        this.captionEndText = 'utenti';
1262                    }
1263                }).catch(error => {
1264                    if (error.name !== 'AbortError' && typeof error === 'string' && error.match(/'401'/g) !== null) {
1265                        this.dispatchStatus('error', error);
1266                    }
1267                }).finally(() => {
1268                    this.loader = false;
1269                    this.isFetching = false;
1270                });
1271            },
1272
1273            highlightCaptionText() {
1274                return this.highlight.caption_text !== '0' && !this.loader;
1275            },
1276
1277            highlightStyle() {
1278                return `color: ${this.highlight.caption_color}`;
1279            },
1280
1281            isHighlightRegistrationLink() {
1282                return this.highlight.registration_link && this.highlight.registration_link !== '';
1283            },
1284
1285            isNotRegistrationLink() {
1286                return !this.highlight.registration_link;
1287            },
1288
1289            highlightVisible() {
1290                return this.highlight.visible && !this.loader;
1291            }
1292        }
1293    }
1294
1295    window.addEventListener(
1296        'alpine:init',
1297        () => Alpine.data('amastyRewardsProduct', amastyRewardsProduct),
1298        { once: true }
1299    );
1300</script>
vendor: 1 bytes, line 1300
1300
1301<script>
1302    (function () {
1303        let amSwiperProcessed = false;
1304
1305        window.addEventListener('load-amswiper', () => {
1306            if (amSwiperProcessed) {
1307                window?.Swiper && window.dispatchEvent(new CustomEvent('amswiper-loaded', {}));
1308                return;
1309            }
1310
1311            const script = document.createElement('script');
1312            script.src = 'https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Amasty_LibSwiperJs/js/vendor/swiper/swiper.min.js';
1313            script.async = true;
1314            document.body.appendChild(script);
1315
1316            amSwiperProcessed = true;
1317
1318            script.onload = () => {
1319                window.dispatchEvent(new CustomEvent('amswiper-loaded', {}));
1320            }
1321
1322            const stylesHref = 'https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Amasty_LibSwiperJs/vendor/swiper/swiper.min.css';
1323
1324            if (document.querySelector(`link[href="${stylesHref}"]`)) {
1325                return;
1326            }
1327
1328            const styles = document.createElement('link');
1329            styles.rel = 'stylesheet';
1330            styles.type = 'text/css';
1331            styles.href = stylesHref;
1332
1333            document.head.appendChild(styles);
1334        });
1335    }());
1336</script>
1336
1337</head>
1338<body id="html-body" class="checkout-cart-index page-layout-1column">
1339                        <noscript>
1340            <img height="1" width="1" style="display:none"
1341                 src="https://www.facebook.com/tr?id=512468414859242&amp;ev=PageView&amp;noscript=1&amp;a=magento_opensource-0.0.0-1.6.4">
1342        </noscript>
1343    
1344<!-- Google Tag Manager by MagePal -->
vendor: 62 bytes, lines 1344-1345
1344
1345<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1345GTM-TQTH9KNM
vendor: 83 bytes, lines 1345-1346
1345"
1346height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1347<!-- End Google Tag Manager by MagePal -->
1348
1349
1350    
1351    
1351<script type="module">const { KlarnaSDK } = await import("https\u003A\u002F\u002Fjs.klarna.com\u002Fweb\u002Dsdk\u002Fv2\u002Fklarna.mjs");
1352const MyKlarna = await KlarnaSDK({
1353    clientId: "klarna_live_client_Rnpiams_MTNpWWc3LzJ3UUppciNHKUgqJSlSTG9lS0gsN2Q1MmUxN2UtZmE4MC00OGIxLWFhNjgtNTc4NDMyN2M2MGQ0LDEsWlJNMmtVejlkd0Q1bVBoOHZnc3JKN1YyL3FOY2ZrYzRRSWRjNUNhY3ZZYz0",
1354    products: ["PAYMENT", "MESSAGING", "IDENTITY", "CUSTOMER"],
1355    locale: "it\u002DIT"
1356});
1357const token = await MyKlarna.Interoperability.token();
1358const klarnaReadyEvent = new CustomEvent("klarna-sdk-ready", {
1359    detail: { token, sdk: MyKlarna }
1360});
1361window.dispatchEvent(klarnaReadyEvent);</script>
1361    
1362<div
1363            class="ambanners ambanner-10"
1364        data-position="10"
1365        data-bannerid=""
1366        data-role="amasty-banner-container"
1367></div>
1368
1369<script nonce='Z2l2dTh1bnAyMzhybmE3YTNnc2RqeXhsN3Nva2E4dDQ=' >
1370    'use strict';
1371    (function (blackbird) {
1372
1373        const addEventListenerOnElementToLoad = (elementToLoad, source) => new Promise((resolve, reject) => {
1374            elementToLoad.addEventListener('load', () => {
1375                elementToLoad.dataset.loaded = true;
1376                resolve(elementToLoad);
1377            })
1378
1379            elementToLoad.addEventListener('error', () => {
1380                reject(new Error(`[External resource loader] : The resource "${source}", failed to load.`));
1381            });
1382        });
1383
1384        blackbird.loadExternalScript = async (source) => {
1385            const scriptWithSameSrc = document.querySelector(`script[src="${source}"][data-loaded]`);
1386
1387            if (scriptWithSameSrc && scriptWithSameSrc.dataset.loaded === 'true') {
1388                return scriptWithSameSrc;
1389            }
1390
1391            const script = scriptWithSameSrc ?? document.createElement('script');
1392            script.type = 'text/javascript';
1393            script.async = true;
1394            script.src = source;
1395            script.dataset.loaded = false;
1396
1397            document.head.appendChild(script);
1398            await addEventListenerOnElementToLoad(script, source);
1399            return script;
1400        }
1401
1402        blackbird.loadExternalStyle = async (source) => {
1403            const linkWithSameHref = document.querySelector(`link[href="${source}"][data-loaded]`);
1404
1405            if (linkWithSameHref && linkWithSameHref.dataset.loaded === 'true') {
1406                return linkWithSameHref;
1407            }
1408
1409            const link = linkWithSameHref ?? document.createElement('link');
1410            link.type = 'text/css'
1411            link.rel = 'stylesheet';
1412            link.href = source;
1413            link.dataset.loaded = false;
1414
1415            document.head.prepend(link);
1416            await addEventListenerOnElementToLoad(link, source);
1417            return link;
1418        }
1419
1420        blackbird.loadExternalResource = (source) => {
1421            const scriptUrlRegex = /\.(js)$/i;
1422            const styleUrlRegex = /\.(css)$/i;
1423
1424            if (scriptUrlRegex.test(source)) {
1425                return blackbird.loadExternalScript(source);
1426            }
1427
1428            if (styleUrlRegex.test(source)) {
1429                return blackbird.loadExternalStyle(source);
1430            }
1431        }
1432
1433    }(window.blackbird = window.blackbird || {}));
1434</script>
1434
1435<!-- BEGIN Trovaprezzi Trusted Program CODE -->
1436<script type="text/javascript" src="https://tps.trovaprezzi.it/javascripts/tracking-vanilla.min.js"></script>
1436
1437
1438<!-- END  Trovaprezzi Trusted Program CODE -->
1439<input name="form_key" type="hidden" value="Tlh3OSamFFweEWy7" />
1440    <noscript>
1441        <section
1442            class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"
1443            aria-labelledby="messageGlobalNoScriptMessage"
1444        >
1445            <div class="container text-center">
1446                <p id="messageGlobalNoScriptMessage">
1447                    <strong>I JavaScript sembrano essere disabilitati nel tuo browser.</strong>
1448                    <span>
1449                        Per una migliore esperienza sul nostro sito, assicurati di attivare i javascript nel tuo browser.                    </span>
1450                </p>
1451            </div>
1452        </section>
1453    </noscript>
1454
1455
1456<div class="widget block block-static-block">
1457    <style>#html-body [data-pb-style=HBYLWMQ]{justify-content:flex-start;display:flex;flex-direction:column;background-color:#ff6801;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div class="preheader" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-intersect="false" data-element="main" data-pb-style="HBYLWMQ"><div data-content-type="html" data-appearance="default" data-intersect="false" data-element="main" data-decoded="true"><p class="py-1 text-xxs lg:text-xs text-center w-full text-white font-medium px-2">
1458Spedizione <strong id="prova-agent">Gratuita</strong><span class="hidden lg:inline"> su tutti i prodotti</span> | Ordine minimo 24,90 €
1459</p>
1460<a href="http://reskyt.com/app/anticafarmaciaorlandi" class="href-download-app reskyt" id="href-download-app" style="display:none">
1461    <div id="install-app">
1462        <span class="close-install-app" onclick="return reskytCloseBar();"><span>x</span></span>
1463        <div class="content-app">
1464            <img class="img-app" src="https://cdn.reskyt.com/7724/antica-farmacia-orlandi-icono-app-436884-250116101022.png" alt="Farma.it">
1465            <div class="name-app">Farma.it</div>
1466            <div class="fab-app">Farma.it - by Antica Farmacia Orlandi</div>
1467            <div class="title-app">Disponibile su <span id="platform-app"></span></div>
1468        </div>
1469    </div>
1470</a>
1471
1472<style>
1473    .fixed-header .reskyt #install-app {
1474        display: none;
1475    }
1476    
1477    .reskyt #install-app {
1478        width:100%;
1479        right: 0;
1480        position: fixed;
1481        top:0;
1482        z-index: 900;
1483        color:#000000;
1484        background-color:rgb(255, 102, 0);;
1485        font-family: Verdana, Arial, sans-serif;
1486        font-size:12px;
1487        min-height:90px;
1488        z-index: 99999;
1489    }
1490    .reskyt .close-install-app {
1491        padding:8px 5px;
1492        display:block;
1493        width:20px;
1494        height:40px;
1495        font-family: Helvetica, Arial, Verdana, sans-serif;
1496        font-weight: normal;
1497        font-size:14px;
1498        text-align:center;
1499        cursor:pointer !important;
1500        font-weight:bold;
1501        color:#666;
1502        position:absolute;
1503        margin-top:20px;
1504    }
1505    .reskyt .img-app {
1506        max-height: 60px;
1507        width:57px;
1508        border: 1px solid #e8ecf1;
1509        -webkit-border-radius: 8px;
1510        -moz-border-radius: 8px;
1511        border-radius: 8px;
1512    }
1513    .reskyt .img-app, .reskyt .content-app {
1514        float:left;
1515    }
1516    .reskyt .fab-app {
1517        color:#000000;
1518        font-size:11px;
1519    }
1520    .reskyt .name-app, .reskyt .title-app, .reskyt .fab-app {
1521        margin-left:70px;
1522        padding:1px 0;
1523    }
1524    .reskyt .title-app {                 color: #444444;             }
1525    .reskyt .name-app {
1526        font-weight:bold;
1527        margin-top:2px;
1528        overflow:hidden;
1529        height: 16px;
1530    }
1531    .reskyt .content-app {
1532        margin-top:8px;
1533        margin-right: 34px;
1534        margin-left: 30px;
1535        position:absolute;
1536    }
1537    .reskyt .view-install-app {
1538        color:blue;
1539        line-height:25px;
1540        margin-top:23px;
1541        text-transform:uppercase;
1542        position:absolute;
1543        right:5px;
1544    }
1545    @media screen and (max-width: 350px){                  .reskyt .title-app { overflow: auto; max-height: 28px;}                }
1546</style>
1547
1548<script>
1549
1550    function reskytCloseBar () {
1551        dias_expire = 7; /*Dias que queremos que pasen hasta que se vuelva a mostrar la barra*/
1552        reskytSetCookie("reskyt-install-app", 1, dias_expire);
1553        document.getElementById("href-download-app").style.display = "none";
1554        return false;
1555    }
1556    function reskytSetCookie(cname, cvalue, exdays) {
1557        var d = new Date();
1558        d.setTime(d.getTime() + (exdays*24*60*60*1000));
1559        var expires = "expires="+ d.toUTCString();
1560        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; /*Añadir ;SameSite=None;Secure en caso de que la cookie tenga que ser accesible entre iFrame*/
1561    }
1562    function reskytGetCookie(cname) {
1563        var name = cname + "=";
1564        var decodedCookie = decodeURIComponent(document.cookie);
1565        var ca = decodedCookie.split(';');
1566        for(var i = 0; i <ca.length; i++) {
1567            var c = ca[i];
1568            while (c.charAt(0) == ' ') {
1569                c = c.substring(1);
1570            }
1571            if (c.indexOf(name) == 0) {
1572                return c.substring(name.length, c.length);
1573            }
1574        }
1575        return "";
1576    }
1577    url = window.location.href;
1578    if ( url.indexOf("customapp=") != -1 ) {
1579        reskytSetCookie("is_app_install_bar", 1, 365);
1580    }
1581    window.addEventListener('load', function () {
1582        let isMobile = true;
1583
1584        const platformApp = document.getElementById("platform-app");
1585        const downloadApp = document.getElementById("href-download-app");
1586
1587        if (/Android/i.test(navigator.userAgent)) {
1588            if (platformApp) {
1589                platformApp.innerHTML = "Google Play";
1590            }
1591        } else if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
1592            if (platformApp) {
1593                platformApp.innerHTML = "App Store";
1594            }
1595        } else if (/IEMobile/i.test(navigator.userAgent)) {
1596            if (platformApp) {
1597                platformApp.innerHTML = "Windows Phone";
1598            }
1599        } else {
1600            isMobile = false;
1601        }
1602
1603        if (
1604            downloadApp &&
1605            isMobile &&
1606            !reskytGetCookie("is_app_install_bar") &&
1607            !reskytGetCookie("reskyt-install-app")
1608        ) {
1609            downloadApp.style.display = "block";
1610        } else if (downloadApp) {
1611            downloadApp.style.display = "none";
1612        }
1613    });
1614</script>
1614</div></div></div>
1615
1616
1617<script data-cfasync="false">
1618    window.amastyCookieManager = window.amastyCookieManager || {};
1619</script>
vendor: 1 bytes, line 1619
1619
1620<script type="text/plain" data-cookieconsent="marketing">
1621    (function() {
1622      "use strict";
1623
1624      window.CONNECTIF_CART_SUMMARY = null;
1625
1626      function addClientScript(result) {
1627          if (
1628              !document.querySelector("#__cn_generic_script__" + result.clientId) &&
1629              !document.querySelector("#__cn_client_script_" + result.clientId)
1630          ) {
1631              const url =
1632                  result.cdnProtocol +
1633                  "://" +
1634                  result.cdnDomain +
1635                  "/" +
1636                  result.cdnPath +
1637                  "/" +
1638                  result.clientScriptPath +
1639                  result.clientId;
1640              const element = document.createElement("script");
1641              element.setAttribute("src", url);
1642              element.setAttribute("id", "__cn_generic_script__" + result.clientId);
1643              document.body.appendChild(element);
1644          } else {
1645              var cartModel = window.connectif.getCartModel();
1646              window.connectif.managed.sendEvents([], {cart: cartModel})
1647          }
1648      }
1649
1650      function addTags(innerHTML, elementToRemove = null) {
1651        if (!!innerHTML) {
1652            if (elementToRemove) {
1653                let elementToRemoveNode = document.querySelector(elementToRemove);
1654                if (elementToRemoveNode) {
1655                    elementToRemoveNode.remove();
1656                }
1657            }
1658
1659          let element = document.createElement("div");
1660          element.style.display = "none";
1661          element.innerHTML = innerHTML;
1662          document.body.appendChild(element);
1663        }
1664      }
1665
1666      function fetchConnectif() {
1667        const url = 'https://www.farma.it/connectif/tags/ajaxconnectiftags' + '?' + Date.now().toString(36) + Math.random().toString(36).substr(2);
1668
1669        fetch(url, {
1670          method: "GET",
1671          headers: {
1672            "Content-Type": "application/json",
1673              'Cache-Control': 'no-cache, no-store, must-revalidate',
1674              'Pragma': 'no-cache',
1675              'Expires': '0',
1676              'X-Requested-With': 'XMLHttpRequest'
1677          }
1678        })
1679        .then(response => response.json())
1680        .then(result => {
1681          addTags(result.renderedClientInfo, '.cn_client_info');
1682          addTags(result.renderedCart, '.cn_cart');
1683          addTags(result.renderedNewsletter, '.cn_newsletter_subscribe');
1684
1685          if (
1686            document.readyState === "complete" ||
1687            document.readyState === "interactive"
1688          ) {
1689            addClientScript(result);
1690          } else {
1691            document.addEventListener(
1692              "DOMContentLoaded",
1693              addClientScript.bind(null, result)
1694            );
1695          }
1696        })
1697        .catch(error => console.error('Error:', error));
1698      }
1699
1700        window.addEventListener('private-content-loaded', (e) => {
1701            //fetch Connecitf only at first visit or whenever cart is updated (add to cart, remove from cart, qty update)
1702            var cartSummary = 0;
1703            if (e.detail && e.detail.data && e.detail.data.cart && e.detail.data.cart.summary_count) {
1704                cartSummary = e.detail.data.cart.summary_count;
1705            }
1706            if (window.CONNECTIF_CART_SUMMARY === null || cartSummary !== window.CONNECTIF_CART_SUMMARY)  {
1707                fetchConnectif();
1708                window.CONNECTIF_CART_SUMMARY = cartSummary;
1709            }
1710        });
1711    })();
1712</script>
1712
1713<div class="page-wrapper"><header class="page-header"><a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white
1714   contentarea"
1715   href="#contentarea">
1716    <span>
1717        Salta al contenuto    </span>
1718</a>
1719
1720<div id="header"
1721     class="relative z-30 w-full border-b bg-white border-container shadow-md">
1722    <div class="container flex flex-col lg:flex-row items-center flex-wrap w-full py-4 mx-auto mt-0 ">
1723        <div class="w-full lg:w-1/3 order-2 lg:order-1">
1724            <div class="w-full">
1725                
1726<ol class="opc-progress-bar flex flex-row justify-center lg:justify-start mt-3 lg:mt-0 text-xs lg:text-sm gap-4 list-decimal list-inside whitespace-nowrap text-primary-lighter">
1727    <li class="opc-progress-bar-item _active text-secondary">
1728        <span>Carrello</span>
1729    </li>
1730    <li class="opc-progress-bar-item">
1731        <a href="https://www.farma.it/checkout/">
1732            <span>Spedizione</span>
1733        </a>
1734    </li>
1735    <li class="opc-progress-bar-item">
1736        <span>Paga &amp; Conferma</span>
1737    </li>
1738</ol>
1739            </div>
1740        </div>
1741        <div class="w-full lg:w-1/3 order-1 lg:order-2">
1742            <div class="text-center">
1743                <div class="order-2 flex-1 lg:flex-none w-auto">
1744    <a class="flex items-center justify-center lg:justify-start text-xl font-medium tracking-wide text-gray-800
1745        no-underline hover:no-underline font-title !justify-center"
1746       href="https://www.farma.it/"
1747       title=""
1748       aria-label="store logo">
1749        <img src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/logo.svg"
1750             style="height: 60px;"
1751             title=""
1752             alt=""
1753            width="253"            height="70"        />
1754            </a>
1755</div>
1756            </div>
1757        </div>
1758        <div class="w-full lg:w-1/3 order-3"></div>
1759    </div>
1760</div>
1761</header><div class="widget block block-static-block">
1762    </div>
1763<div class="top-container flex flex-col"><div class="widget block block-static-block">
1764    </div>
1765</div><main id="maincontent" class="page-main"><div id="algolia-autocomplete-container"></div><div id="contentarea" tabindex="-1"></div>
1766<div class="page messages">
1766<script>
1767    function initMessages() {
1768        "use strict";
1769        return {
1770            messages: window.mageMessages || [],
1771
1772            hideAfter: 4000,
1773            icons: {
1774                error: '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="text-white" role="img">    <path d="M0 12a12 12 0 1 1 12 12A12.015 12.015 0 0 1 0 12Z" fill="#ea302d"/>    <path d="m12.033 13.582-.036.036-.035-.036-3.629 3.563-1.6-1.58L10.355 12 6.733 8.437l1.6-1.58 3.632 3.562.035-.033.036.033 3.626-3.562 1.606 1.58L13.646 12l3.622 3.565-1.606 1.58Z" fill="#fdeae9"/><title>message-type-error</title></svg>',
1775                success: '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="text-white" role="img">    <path d="M0 12a12 12 0 1 1 12 12A12.015 12.015 0 0 1 0 12Z" fill="#10b981"/>    <path d="M9.841 16.98a1.2 1.2 0 0 1-.849-.352l-4.089-4.092 1.7-1.7 3.24 3.24 7.561-7.561 1.7 1.7-8.41 8.41a1.2 1.2 0 0 1-.853.355Z" fill="#e6f8f2"/><title>message-type-success</title></svg>',
1776                info: '<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewBox="0 0 24 24" class="text-white" width="20" height="20" role="img">    <path d="M12 24C5.37 24 0 18.63 0 12S5.37 0 12 0s12 5.37 12 12-5.37 12-12 12Z" style="fill:#08011a"/>    <path fill="#fff" d="M12 10c1.1 0 2 .9 2 2v5.33c0 1.1-.9 2-2 2s-2-.9-2-2V12c0-1.1.9-2 2-2ZM11.99 4.42H12c1.24 0 2.25 1.01 2.25 2.25S13.24 8.92 12 8.92h-.01c-1.24 0-2.25-1.01-2.25-2.25s1.01-2.25 2.25-2.25Z"/><title>message-type-info</title></svg>',
1777                warning: '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="text-white" role="img">    <path d="M3.31 22.862a3.3 3.3 0 0 1-2.866-4.948L9.135 2.793a3.307 3.307 0 0 1 5.731 0l8.689 15.121a3.3 3.3 0 0 1-2.865 4.947Z" fill="#f9b602"/>    <path d="M13.145 14.219h-2.287V7.61h2.287ZM10.856 18.546v-2.287h2.302v2.288Z" fill="#2e2f2f"/><title>message-type-warning</title></svg>',
1778                notice: '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="text-white" role="img">    <path d="M10.437 23.584a3.184 3.184 0 0 1-1.151-1.146l1.6-.93a1.214 1.214 0 0 0 .472.471 1.282 1.282 0 0 0 1.289 0 1.205 1.205 0 0 0 .471-.471l1.6.93a3.2 3.2 0 0 1-1.146 1.146A3.156 3.156 0 0 1 12 24a3.125 3.125 0 0 1-1.563-.416Zm-8.405-4.01a.929.929 0 0 1-.9-.65.9.9 0 0 1 .357-1.024 6.091 6.091 0 0 0 1.455-2.037 17.711 17.711 0 0 0 1.485-7.845 8.242 8.242 0 0 1 2.2-5.648A7.428 7.428 0 0 1 12 0a7.426 7.426 0 0 1 5.375 2.369 8.241 8.241 0 0 1 2.2 5.648 17.725 17.725 0 0 0 1.485 7.846 6.116 6.116 0 0 0 1.452 2.037.9.9 0 0 1 .352 1.02.928.928 0 0 1-.9.65Z" fill="#2e2f2f"/><title>message-type-notice</title></svg>',
1779            },
1780
1781            isEmpty() {
1782                return this.messages.reduce(
1783                    function (isEmpty, message) {
1784                        return isEmpty && message === undefined
1785                    }, true
1786                )
1787            },
1788            removeMessage(messageIndex) {
1789                this.messages[messageIndex] = undefined;
1790            },
1791            addMessages(messages, hideAfter) {
1792                messages.map((message) => {
1793                    message.icon = this.icons[message.type];
1794                    this.messages = this.messages.concat(message);
1795                    if (hideAfter) {
1796                        this.setHideTimeOut(this.messages.length - 1, hideAfter);
1797                    }
1798                });
1799            },
1800            setHideTimeOut(messageIndex, hideAfter) {
1801                setTimeout((messageIndex) => {
1802                    this.removeMessage(messageIndex);
1803                }, hideAfter, messageIndex);
1804            },
1805            animateMessage(elem) {
1806                if (elem) {
1807                    if (window.matchMedia('(min-width: 1024px)').matches) {
1808                        elem.classList.add('transition-all', 'duration-300');
1809                        elem.style.position = 'absolute';
1810                        const headerEl = document.querySelector('.header-elements');
1811                        elem.style.left = (headerEl ? headerEl.getBoundingClientRect().left : 0) + 'px';
1812                        elem.style.opacity = 1;
1813
1814                        setTimeout(() => {
1815                            elem.style.left = '0';
1816                            elem.style.opacity = 0;
1817                        }, this.hideAfter - 300);
1818                    } else {
1819                        elem.style.left = '-400px';
1820                        elem.classList.add('transition-all', 'duration-300');
1821                        elem.style.opacity = 0;
1822
1823                        setTimeout(() => {
1824                            elem.style.left = '0';
1825                            elem.style.opacity = 1;
1826                        }, 10);
1827
1828                        setTimeout(() => {
1829                            elem.style.left = '-400px';
1830                            elem.style.opacity = 0;
1831                        }, this.hideAfter - 300);
1832                    }
1833                }
1834            },
1835            eventListeners: {
1836                ['@messages-loaded.window']() {
1837                    this.addMessages(event.detail.messages, this.hideAfter)
1838                },
1839                ['@private-content-loaded.window'](event) {
1840                    const data = event.detail.data;
1841                    if (
1842                        data.messages &&
1843                        data.messages.messages &&
1844                        data.messages.messages.length
1845                    ) {
1846                        this.addMessages(data.messages.messages, this.hideAfter);
1847                    }
1848                },
1849                ['@clear-messages.window']() {
1850                    this.messages = [];
1851                }
1852            }
1853        }
1854    }
1855</script>
1855
1856<section id="messages"
1857         x-data="initMessages()"
1858         x-bind="eventListeners"
1859         class="absolute"
1860>
1861    <template x-if="!isEmpty()">
1862        <div class="w-full">
1863            <div role="alert" class="messages mx-auto py-3 pl-0 pr-[.938rem] lg:px-layoutGutter lg:px-0">
1864                <template x-for="(message, index) in messages" :key="index">
1865                    <div>
1866                        <template x-if="message">
1867                            <div class="message w-fit lg:min-w-[25rem] rounded-md relative" :class="message.type"
1868                                 :ui-id="'message-' + message.type"
1869                                 style="left: 0; max-width: 400px"
1870                                 x-init="animateMessage($el)"
1871                            >
1872                                <span x-html="message.icon" class="mr-3"></span>
1873                                <span x-html="message.text" class="pr-2"></span>
1874                                <a href="#" class="close cursor-pointer ml-auto my-auto" title="close"
1875                                   @click.prevent="removeMessage(index)">
1876                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="text-primary" width="12" height="12" role="img">
1877    <path d="M21.82 24c-.58 0-1.13-.23-1.54-.64l-8.27-8.27-8.29 8.27a2.179 2.179 0 0 1-3.08-3.08L8.92 12 .64 3.73a2.19 2.19 0 0 1 0-3.09 2.172 2.172 0 0 1 3.08 0L12 8.92 20.27.64a2.19 2.19 0 0 1 3.09 0c.85.85.85 2.23 0 3.09L15.08 12l8.27 8.27c.85.85.85 2.24 0 3.09-.41.41-.96.64-1.54.64Z" style="fill:currentColor"/>
1878<title>x</title></svg>
1879                                </a>
1880                            </div>
1881                        </template>
1882                    </div>
1883                </template>
1884            </div>
1885        </div>
1886    </template>
1887</section>
1888</div><div class="max-w-none xl:max-w-screen-xl 2xl:max-w-screen-2xl container flex flex-col md:flex-row flex-wrap md:mb-0 mb-0  text-3xl">
1889    <h1 class="text-primary-darker page-title title-font text-2xl xl:text-3xl font-bold xl:mb-4 mb-2 "
1890        >
1891        <span class="base" data-ui-id="page-title-wrapper" >Carrello</span>    </h1>
1892    </div>
1893<div class="columns"><div class="column main">
1893<script>
1894    document.addEventListener("alpine:init", () => {
1895        Alpine.store('ajaxPrices', {
1896            nodesToUpdate: [],
1897            prices: [],
1898            options: {
1899                additional_data: {}
1900            },
1901
1902            hasPrice(productId){
1903                return this.getPriceFloat(productId) != null;
1904            },
1905
1906            getPriceHtml(productId) {
1907                if (!(productId in this.prices)) {
1908                    return null;
1909                }
1910                return this.prices[productId]['html'];
1911            },
1912
1913            getPriceFloat(productId) {
1914                if (!(productId in this.prices)) {
1915                    return null;
1916                }
1917                return this.prices[productId]['float'];
1918            },
1919
1920            addNode(productId) {
1921                if (!productId) {
1922                    return
1923                }
1924
1925                this.nodesToUpdate.push({
1926                    "productId": productId,
1927                });
1928
1929                Alpine.debounce(this.updateNodes.bind(this), 150)();
1930            },
1931
1932            updateNodes() {
1933                var nodes = this.nodesToUpdate;
1934                this.nodesToUpdate = [];
1935
1936                this.processNodes(nodes);
1937            },
1938
1939            processNodes(nodes) {
1940                var self = this,
1941                    idsToLoad = [],
1942                    containerToReload = [];
1943
1944                nodes.forEach(function (node) {
1945                    var productId = node.productId;
1946
1947                    if (productId in self.prices) {
1948                        //self.apply(node);
1949                        return; //continue
1950                    }
1951
1952                    idsToLoad.push(productId);
1953
1954                    containerToReload.push(node);
1955                });
1956
1957                if (idsToLoad.length) {
1958                    self.get(idsToLoad, function () {
1959                        self.processNodes(containerToReload);
1960                    });
1961                }
1962            },
1963
1964            store: function (prices) {
1965                this.prices = Object.assign(this.prices, prices);
1966            },
1967
1968            get(ids, callback) {
1969
1970                var self = this,
1971                    params = '/ids/' + ids.join();
1972
1973                let additionalParams = this.options.additional_data;
1974                params += "?" + new URLSearchParams(additionalParams).toString();
1975
1976                fetch(BASE_URL + 'ajaxprices/price/render' + params)
1977                    .then((response) => response.json())
1978                    .then((data) => {
1979                        if (data.error) {
1980                            console.error("ajax_price_error: " + data.errorMessage)
1981                            return;
1982                        }
1983
1984                        var prices = data.data;
1985                        self.store(prices);
1986                        callback();
1987                    });
1988            }
1989        });
1990    });
1991</script>
1991
1992
1993<script>
1994    document.addEventListener("alpine:init", () => {
1995        Alpine.store('badges', {
1996            nodesToUpdate: [],
1997            badges: [],
1998            productBadges: [],
1999            options: {
2000                additional_data: {}
2001            },
2002
2003            getBadgesHtml(productId, position) {
2004                if (!(productId in this.productBadges) || !(position in this.productBadges[productId])) {
2005                    return [];
2006                }
2007                let index = this.productBadges[productId][position],
2008                    self = this,
2009                    badges = [];
2010
2011                index.forEach(function (element) {
2012                    badges.push(self.badges[element]);
2013                });
2014                return badges;
2015            },
2016
2017            addNode(productId, position) {
2018                this.nodesToUpdate.push({
2019                    "productId": productId,
2020                    "position": position
2021                });
2022
2023                Alpine.debounce(this.updateNodes.bind(this), 150)();
2024            },
2025
2026            updateNodes() {
2027                var nodes = this.nodesToUpdate;
2028                this.nodesToUpdate = [];
2029
2030                this.processNodes(nodes);
2031            },
2032
2033            processNodes(nodes) {
2034                var self = this,
2035                    idsToLoad = [],
2036                    containerToReload = [];
2037
2038                nodes.forEach(function (node) {
2039                    var productId = node.productId;
2040
2041                    if (self.productBadges[productId]) {
2042                        //self.apply(node);
2043                        return; //continue
2044                    }
2045
2046                    idsToLoad.push(productId);
2047                    containerToReload.push(node);
2048                });
2049
2050                if (idsToLoad.length) {
2051                    self.get(idsToLoad, function () {
2052                        self.processNodes(containerToReload);
2053                    });
2054                }
2055            },
2056
2057            store: function (badges, productBadges) {
2058                this.badges = Object.assign(this.badges, badges);
2059                this.productBadges = Object.assign(this.productBadges, productBadges);
2060            },
2061
2062            get(ids, callback) {
2063                var self = this,
2064                    params = '/ids/' + ids.join();
2065
2066                let additionalParams = this.options.additional_data;
2067                params += "?" + new URLSearchParams(additionalParams).toString();
2068
2069                fetch(BASE_URL + 'badge/api/get' + params)
2070                    .then((response) => response.json())
2071                    .then((data) => {
2072                        if (data.error) {
2073                            console.error("badges_error: " + data.errorMessage)
2074                            return;
2075                        }
2076
2077                        var badges = data.data.badges,
2078                            productBadges = data.data.productBadges;
2079
2080                        self.store(badges, productBadges);
2081                        callback();
2082                    });
2083            }
2084        });
2085    });
2086</script>
2086
2087
2088
2089<script>
2090    document.addEventListener("alpine:init", () => {
2091        Alpine.store('omnibusPrices', {
2092            nodesToUpdate: [],
2093            prices: [],
2094            options: {
2095                additional_data: {}
2096            },
2097
2098            hasPrice(productId){
2099                return this.getPriceHtml(productId) != null;
2100            },
2101
2102            getPriceHtml(productId) {
2103                if (!(productId in this.prices)) {
2104                    return null;
2105                }
2106                return this.prices[productId];
2107            },
2108
2109            addNode(productId, position) {
2110                this.nodesToUpdate.push({
2111                    "productId": productId,
2112                });
2113
2114                Alpine.debounce(this.updateNodes.bind(this), 150)();
2115            },
2116
2117            updateNodes() {
2118                var nodes = this.nodesToUpdate;
2119                this.nodesToUpdate = [];
2120
2121                this.processNodes(nodes);
2122            },
2123
2124            processNodes(nodes) {
2125                var self = this,
2126                    idsToLoad = [],
2127                    containerToReload = [];
2128
2129                nodes.forEach(function (node) {
2130                    var productId = node.productId;
2131
2132                    if (productId in self.prices) {
2133                        //self.apply(node);
2134                        return; //continue
2135                    }
2136
2137                    idsToLoad.push(productId);
2138                    containerToReload.push(node);
2139                });
2140
2141                if (idsToLoad.length) {
2142                    self.get(idsToLoad, function () {
2143                        self.processNodes(containerToReload);
2144                    });
2145                }
2146            },
2147
2148            store: function (prices) {
2149                this.prices = Object.assign(this.prices, prices);
2150            },
2151
2152            get(ids, callback) {
2153                var self = this,
2154                    params = '/ids/' + ids.join();
2155
2156                let additionalParams = this.options.additional_data;
2157                params += "?" + new URLSearchParams(additionalParams).toString();
2158
2159                fetch(BASE_URL + 'omnibus/ajax/render' + params)
2160                    .then((response) => response.json())
2161                    .then((data) => {
2162                        if (data.error) {
2163                            console.error("omnibus_prices_error: " + data.errorMessage)
2164                            return;
2165                        }
2166
2167                        var prices = data.data;
2168                        self.store(prices);
2169                        callback();
2170                    });
2171            }
2172        });
2173    });
2174</script>
vendor: 1 bytes, line 2174
2174
2175<script nonce="Z2l2dTh1bnAyMzhybmE3YTNnc2RqeXhsN3Nva2E4dDQ=">
2176    var feedId = getUrlParam('ff'),
2177        product = getUrlParam('fp'),
2178        currentDate = new Date(),
2179        session = getCookie('feed_session');
2180
2181    if (!session) {
2182        session = '' + Math.floor(currentDate.getTime() / 1000) + Math.floor(Math.random() * 10000001);
2183    }
2184
2185    if (session && feedId > 0 && product > 0) {
2186        setCookie('feed_session', session, {expires: 365, path: '/'});
2187        setCookie('feed_id', feedId, 365);
2188
2189        var xhr = new XMLHttpRequest(),
2190            baseUrl = 'https://www.farma.it/',
2191            url = BASE_URL + '?rnd=' + Math.floor(Math.random() * 10000001) + "&feed=" + feedId + "&session=" + session + "&product=" + product;
2192
2193        xhr.open('GET', url, true);
2194        xhr.setRequestHeader('Content-Type', 'application/json');
2195        xhr.send();
2196    }
2197
2198    function getUrlParam(name) {
2199        let results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
2200
2201        if (results === null) {
2202            return '';
2203        } else {
2204            return results[1] || 0;
2205        }
2206    }
2207
2208    function getCookie(cookieName) {
2209        var name = cookieName + "=",
2210            decodedCookie = decodeURIComponent(document.cookie),
2211            cookieArray = decodedCookie.split(';');
2212
2213        for (var i = 0; i < cookieArray.length; i++) {
2214            var cookie = cookieArray[i].trim();
2215            if (cookie.indexOf(name) === 0) {
2216                return cookie.substring(name.length, cookie.length);
2217            }
2218        }
2219
2220        return null;
2221    }
2222
2223    function setCookie(cookieName, cookieValue, expirationDays) {
2224        var d = new Date();
2225        d.setTime(d.getTime() + (expirationDays * 24 * 60 * 60 * 1000));
2226        var expires = "expires=" + d.toUTCString();
2227        document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/";
2228    }
2229</script>
2229
2230
2231<div class="w-full lg:w-7/12 mb-8 lg:mb-10 lg:pb-5 banners-wrapper">
2232    <div
2233                class="ambanners ambanner-0"
2234        data-position="0"
2235        data-bannerid=""
2236        data-role="amasty-banner-container"
2237    ></div>
2238</div>
2239
2240
2241<script>
2242    window.checkoutConfig = false;
2243    window.customerData = window.checkoutConfig.customerData;
2244    window.isCustomerLoggedIn = window.checkoutConfig.isCustomerLoggedIn;
2245</script>
2245
2246
2247<script>
2248    'use strict';
2249    (function( hyva, undefined ) {
2250        /**
2251         * Takes a form element and submits it through fetch,
2252         * then replaces the result into the document without
2253         * refreshing the page
2254         */
2255        hyva.postCart = (form) => {
2256            if (!form.action) {
2257                return;
2258            }
2259            const action = form.action;
2260            const formData = new FormData(form);
2261
2262            if (!formData.uenc) {
2263                formData.append('uenc', hyva.getUenc());
2264            }
2265
2266            formData.append('form_key', hyva.getFormKey());
2267
2268            window.dispatchEvent(new Event('cart-loading-start'));
2269
2270            window.fetch(action, {
2271                method: 'POST',
2272                body: formData
2273            }).then((result) => {
2274                return result.text()
2275            }).then((content) => {
2276
2277                hyva.replaceDomElement('#maincontent', content)
2278
2279            }).catch((error) => {
2280                console.error(error);
2281                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
2282                    [{
2283                        type: "error",
2284                        text: "Qualcosa\u0020\u00E8\u0020andato\u0020storto.\u0020Riprova\u0020di\u0020nuovo."
2285                    }], 10000
2286                );
2287            }).finally(() => {
2288                window.dispatchEvent(new Event('cart-loading-stop'));
2289            });
2290        }
2291    }( window.hyva = window.hyva || {} ));
2292</script>
2292
2293
2294<script>
2295
2296    function initCartForm(){
2297        return {
2298            isLoading: false,
2299            cartIsEmpty: !!window.checkoutConfig,
2300            checkCartShouldUpdate(data) {
2301                const cart = data.cart;
2302
2303                if (this.cartIsEmpty !== !!window.checkoutConfig) {
2304                    this.cartIsEmpty = !!window.checkoutConfig;
2305                    this.reloadCartContent();
2306                    return;
2307                }
2308
2309                if (cart) {
2310                    if (!window.checkoutConfig) {
2311                        if (cart.items.length) {
2312                            this.reloadCartContent();
2313                        }
2314                        return;
2315                    }
2316
2317                    const roundUp = (number) => {
2318                        return Math.round(number * 100);
2319                    }
2320
2321                    const decimalNumbersAreEqual = (number1, number2) => {
2322                        return roundUp(number1) === roundUp(number2);
2323                    }
2324
2325                    if (window.checkoutConfig && cart) {
2326                        if (decimalNumbersAreEqual(
2327                            cart.items.reduce((totalQty, cartItem) => totalQty + cartItem.qty, 0),
2328                                window.checkoutConfig.quoteData.items_qty
2329                            ) &&
2330                            decimalNumbersAreEqual(
2331                                cart.subtotalAmount,
2332                                window.checkoutConfig.totalsData.total_segments.find((segment) => segment.code === "subtotal").value
2333                            )
2334                        ) {
2335                            return;
2336                        } else {
2337                            hyva.setCookie('mage-cache-sessid', '', -1, true);
2338                            window.checkoutConfig = null;
2339                        }
2340                    }
2341                }
2342                this.reloadCartContent();
2343            },
2344            reloadCartContent() {
2345                window.dispatchEvent(new Event('cart-loading-start'));
2346                window.fetch(window.location.href, {
2347                    method: "GET"
2348                }).then((result) => {
2349                    return result.text()
2350
2351                }).then((body) => {
2352                    hyva.setCookie('mage-cache-sessid', '', -1, true);
2353                    window.checkoutConfig = null;
2354                    hyva.replaceDomElement('#maincontent', body)
2355
2356                }).catch((error) => {
2357                    console.error(error);
2358                    window.location.reload()
2359                }).finally(() => {
2360                    window.dispatchEvent(new Event('cart-loading-stop'));
2361                });
2362            },
2363            onStorageChange(event) {
2364                if (event.key === 'private_content_version') {
2365                    window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
2366                }
2367            }
2368        }
2369    }
2370</script>
2370
2371<div x-data="initCartForm()"
2372     class="cart-form clearfix"
2373     @private-content-loaded.window="checkCartShouldUpdate($event.detail.data)"
2374     @storage.window="onStorageChange($event)"
2375     @cart-loading-start.window="isLoading=true"
2376     @cart-loading-stop.window="isLoading=false"
2377>
2378            <div class="cart-empty">
2379        <div>
2380        <p>Non ci sono articoli nel tuo carrello.</p>
2381        <p class="mt-4">
2382            <a href="https://www.farma.it/" class="btn btn-primary">
2383                Click here to continue shopping.            </a>
2384        </p>
2385    </div>
2386    </div>
2387    
2388    
2389<div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50"
2390     style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgb(255 255 255/0.60);"
2391     x-show="isLoading"
2392     x-transition:enter="ease-out duration-200"
2393     x-transition:enter-start="opacity-0"
2394     x-transition:enter-end="opacity-100"
2395     x-transition:leave="ease-in duration-200"
2396     x-transition:leave-start="opacity-100"
2397     x-transition:leave-end="opacity-0">
2398    <svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 38 38" stroke="#ffb590" class="text-primary" role="img">
2399    <g fill="none" fill-rule="evenodd">
2400        <g transform="translate(1 1)" stroke-width="2">
2401            <circle stroke="#ff6801" cx="18" cy="18" r="18"/>
2402            <path d="M36 18c0-9.94-8.06-18-18-18">
2403                <animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"/>
2404            </path>
2405        </g>
2406    </g>
2407<title>loader</title></svg>
2408</div>
2409
2410</div>
2411
2412<div class="w-full lg:w-7/12 mb-8 lg:mb-10 lg:pb-5 banners-wrapper">
2413    <div
2414                class="ambanners ambanner-60"
2415        data-position="60"
2416        data-bannerid=""
2417        data-role="amasty-banner-container"
2418    ></div>
2419</div>
2420
2421<div><div class="widget block block-static-block">
2422    <style>#html-body [data-pb-style=OSPI6OA]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-intersect="false" data-element="main" data-pb-style="OSPI6OA"><div class="row-full-width-inner" data-element="inner"><h2 data-content-type="heading" data-appearance="default" data-intersect="false" data-element="main">Offerte ultimo minuto</h2><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="true" data-show-dots="true" data-carousel-mode="default" data-intersect="false" data-center-padding="90px" data-element="main"><div class="product-items widget-product-carousel carousel-ngutter pb-4" x-data="{ active: false }" x-intersect.once="active = true">
2423        <div class="swiper swiper-container group">
2424            <div class="swiper-wrapper">
2425                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2426                    
2427<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/274141/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2428    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="274141">
2429    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2430    <input type="hidden" name="product" value="274141">
2431                <a href="https://www.farma.it/950041842-erba-vita-group-spa-disney-vitamina-d-30gomm.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Erba Vita Disney vitamina D per bambini 30 caramelle gommose"></a>
2432        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(274141, 'card_top_left')">
2433        <template x-for="badge in $store.badges.getBadgesHtml(274141, 'card_top_left')">
2434            <span x-html="badge"></span>
2435        </template>
2436    </span>
2437                <a href="https://www.farma.it/950041842-erba-vita-group-spa-disney-vitamina-d-30gomm.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2438            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_29436-9b83ddc9.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_29436.jpg" width="142" height="142" alt="/i/m/image_29436.jpg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-274141.window="updateImage" loading="lazy"></picture>
2439        </a>
2440        <div class="product-info flex flex-col grow justify-start">
2441                        <div class="items-center justify-center ">
2442                <a class="product-item-link" href="https://www.farma.it/950041842-erba-vita-group-spa-disney-vitamina-d-30gomm.html" :id="`slide-desc-274141-${$id('slider-id')}`">
2443                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2444                        Erba Vita Disney vitamina D per bambini 30 caramelle gommose                    </h2>
2445                </a>
2446            </div>
2447
2448                            <div class="mt-1 mb-1 ">
2449                                    </div>
2450            
2451                                        
2452            
2453            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
2454            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
2455                <template x-if="active = true">
2456                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(274141)">
2457                        <template x-if="!$store.ajaxPrices.hasPrice(274141)">
2458                            <div class="skeleton w-16 lg:w-full h-6">
2459                                Caricamento...                            </div>
2460                        </template>
2461                        <template x-if="$store.ajaxPrices.hasPrice(274141)">
2462                            <span x-html="$store.ajaxPrices.getPriceHtml(274141)"></span>
2463                        </template>
2464                    </div>
2465                </template>
2466            </span>
2467
2468                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
2469                            <?xml version="1.0" encoding="UTF-8"?>
2470<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
2471                        </button>
2472                                                                                </div>
2473        </div>
2474        </form>
2475
2476                </div>
2477                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2478                    
2479<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/274149/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2480    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="274149">
2481    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2482    <input type="hidden" name="product" value="274149">
2483                <a href="https://www.farma.it/950041792-erba-vita-group-spa-disney-multivit-kids-30gomm.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Erba Vita Disney Multivit Kids 30 caramelle gommose"></a>
2484        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(274149, 'card_top_left')">
2485        <template x-for="badge in $store.badges.getBadgesHtml(274149, 'card_top_left')">
2486            <span x-html="badge"></span>
2487        </template>
2488    </span>
2489                <a href="https://www.farma.it/950041792-erba-vita-group-spa-disney-multivit-kids-30gomm.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2490            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_29444-e96e1f1a.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_29444.jpg" width="142" height="142" alt="/i/m/image_29444.jpg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-274149.window="updateImage" loading="lazy"></picture>
2491        </a>
2492        <div class="product-info flex flex-col grow justify-start">
2493                        <div class="items-center justify-center ">
2494                <a class="product-item-link" href="https://www.farma.it/950041792-erba-vita-group-spa-disney-multivit-kids-30gomm.html" :id="`slide-desc-274149-${$id('slider-id')}`">
2495                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2496                        Erba Vita Disney Multivit Kids 30 caramelle gommose                    </h2>
2497                </a>
2498            </div>
2499
2500                            <div class="mt-1 mb-1 ">
2501                                    </div>
2502            
2503                                        
2504            
2505            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
2506            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
2507                <template x-if="active = true">
2508                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(274149)">
2509                        <template x-if="!$store.ajaxPrices.hasPrice(274149)">
2510                            <div class="skeleton w-16 lg:w-full h-6">
2511                                Caricamento...                            </div>
2512                        </template>
2513                        <template x-if="$store.ajaxPrices.hasPrice(274149)">
2514                            <span x-html="$store.ajaxPrices.getPriceHtml(274149)"></span>
2515                        </template>
2516                    </div>
2517                </template>
2518            </span>
2519
2520                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
2521                            <?xml version="1.0" encoding="UTF-8"?>
2522<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
2523                        </button>
2524                                                                                </div>
2525        </div>
2526        </form>
2527
2528                </div>
2529                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2530                    
2531<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/274142/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2532    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="274142">
2533    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2534    <input type="hidden" name="product" value="274142">
2535                <a href="https://www.farma.it/950041855-erba-vita-group-spa-disney-vitamina-c-30gomm.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Erba Vita Disney vitamina C per bambini 30 caramelle gommose"></a>
2536        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(274142, 'card_top_left')">
2537        <template x-for="badge in $store.badges.getBadgesHtml(274142, 'card_top_left')">
2538            <span x-html="badge"></span>
2539        </template>
2540    </span>
2541                <a href="https://www.farma.it/950041855-erba-vita-group-spa-disney-vitamina-c-30gomm.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2542            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_29437-16e4d080.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_29437.jpg" width="142" height="142" alt="/i/m/image_29437.jpg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-274142.window="updateImage" loading="lazy"></picture>
2543        </a>
2544        <div class="product-info flex flex-col grow justify-start">
2545                        <div class="items-center justify-center ">
2546                <a class="product-item-link" href="https://www.farma.it/950041855-erba-vita-group-spa-disney-vitamina-c-30gomm.html" :id="`slide-desc-274142-${$id('slider-id')}`">
2547                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2548                        Erba Vita Disney vitamina C per bambini 30 caramelle gommose                    </h2>
2549                </a>
2550            </div>
2551
2552                            <div class="mt-1 mb-1 ">
2553                                    </div>
2554            
2555                                        
2556            
2557            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
2558            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
2559                <template x-if="active = true">
2560                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(274142)">
2561                        <template x-if="!$store.ajaxPrices.hasPrice(274142)">
2562                            <div class="skeleton w-16 lg:w-full h-6">
2563                                Caricamento...                            </div>
2564                        </template>
2565                        <template x-if="$store.ajaxPrices.hasPrice(274142)">
2566                            <span x-html="$store.ajaxPrices.getPriceHtml(274142)"></span>
2567                        </template>
2568                    </div>
2569                </template>
2570            </span>
2571
2572                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
2573                            <?xml version="1.0" encoding="UTF-8"?>
2574<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
2575                        </button>
2576                                                                                </div>
2577        </div>
2578        </form>
2579
2580                </div>
2581                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2582                    
2583<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/258652/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2584    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="258652">
2585    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2586    <input type="hidden" name="product" value="258652">
2587                <a href="https://www.farma.it/988032470-the-good-vibes-company-srl-goovi-drenante-melo-bos24stick.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Goovi Drenante Melograno e Frutti Di Bosco 24 Stick Pack"></a>
2588        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(258652, 'card_top_left')">
2589        <template x-for="badge in $store.badges.getBadgesHtml(258652, 'card_top_left')">
2590            <span x-html="badge"></span>
2591        </template>
2592    </span>
2593                <a href="https://www.farma.it/988032470-the-good-vibes-company-srl-goovi-drenante-melo-bos24stick.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2594            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/8/988032470-e9f30fd6.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/8/988032470.jpeg" width="142" height="142" alt="Goovi Drenante Melograno e Frutti Di Bosco 24 Stick Pack" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-258652.window="updateImage" loading="lazy"></picture>
2595        </a>
2596        <div class="product-info flex flex-col grow justify-start">
2597                        <div class="items-center justify-center ">
2598                <a class="product-item-link" href="https://www.farma.it/988032470-the-good-vibes-company-srl-goovi-drenante-melo-bos24stick.html" :id="`slide-desc-258652-${$id('slider-id')}`">
2599                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2600                        Goovi Drenante Melograno e Frutti Di Bosco 24 Stick Pack                    </h2>
2601                </a>
2602            </div>
2603
2604                            <div class="mt-1 mb-1 ">
2605                                    </div>
2606            
2607                                        
2608            
2609            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
2610            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
2611                <template x-if="active = true">
2612                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(258652)">
2613                        <template x-if="!$store.ajaxPrices.hasPrice(258652)">
2614                            <div class="skeleton w-16 lg:w-full h-6">
2615                                Caricamento...                            </div>
2616                        </template>
2617                        <template x-if="$store.ajaxPrices.hasPrice(258652)">
2618                            <span x-html="$store.ajaxPrices.getPriceHtml(258652)"></span>
2619                        </template>
2620                    </div>
2621                </template>
2622            </span>
2623
2624                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
2625                            <?xml version="1.0" encoding="UTF-8"?>
2626<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
2627                        </button>
2628                                                                                </div>
2629        </div>
2630        </form>
2631
2632                </div>
2633                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2634                    
2635<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/248061/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2636    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="248061">
2637    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2638    <input type="hidden" name="product" value="248061">
2639                <a href="https://www.farma.it/adtab3cpr-48mg-gatti-2-8kg.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Adtab Per Gatti Da 2 A 8kg 3 Compresse Masticabili 48mg"></a>
2640        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(248061, 'card_top_left')">
2641        <template x-for="badge in $store.badges.getBadgesHtml(248061, 'card_top_left')">
2642            <span x-html="badge"></span>
2643        </template>
2644    </span>
2645                <a href="https://www.farma.it/adtab3cpr-48mg-gatti-2-8kg.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2646            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/1/0/105723148-27e8cc0e.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/1/0/105723148.jpg" width="142" height="142" alt="Adtab Per Gatti Da 2 A 8kg 3 Compresse Masticabili 48mg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-248061.window="updateImage" loading="lazy"></picture>
2647        </a>
2648        <div class="product-info flex flex-col grow justify-start">
2649                        <div class="items-center justify-center ">
2650                <a class="product-item-link" href="https://www.farma.it/adtab3cpr-48mg-gatti-2-8kg.html" :id="`slide-desc-248061-${$id('slider-id')}`">
2651                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2652                        Adtab Per Gatti Da 2 A 8kg 3 Compresse Masticabili 48mg                    </h2>
2653                </a>
2654            </div>
2655
2656                            <div class="mt-1 mb-1 ">
2657                        <div class="flex gap-2">
2658        <div x-data="initRating2480616ac924c0cb125()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
2659                ? 'Adtab\u0020Per\u0020Gatti\u0020Da\u00202\u0020A\u00208kg\u00203\u0020Compresse\u0020Masticabili\u002048mg\u0020rating.\u00204.9\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
2660                : 'Adtab\u0020Per\u0020Gatti\u0020Da\u00202\u0020A\u00208kg\u00203\u0020Compresse\u0020Masticabili\u002048mg\u0020rating.\u00204.9\u0020out\u0020of\u00205\u0020stars'
2661            " role="group">
2662                            <span class="hidden">4.9</span>
2663                <span class="hidden">478</span>
2664                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2665                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2666                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2667                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2668                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2669                    </svg>
2670                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2671                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2672                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2673                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2674                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2675                    </svg>
2676                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2677                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2678                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2679                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2680                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2681                    </svg>
2682                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2683                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2684                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2685                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2686                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2687                    </svg>
2688                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
2689                        <defs>
2690                            <lineargradient id="partialFill248061">
2691                                <stop offset="0%" stop-color="#f6e05e"></stop>
2692                                <stop offset="90%" stop-color="#f6e05e"></stop>
2693                                <stop offset="90%" stop-color="#cbd5e0"></stop>
2694                                <stop offset="100%" stop-color="#cbd5e0"></stop>
2695                            </lineargradient>
2696                        </defs>
2697                        <g fill="url(#partialFill248061)">
2698                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
2699                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2700                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
2701                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2702                        </g>
2703                    </svg>
2704                                                                        </div>
2705                    <div class="text-xs">
2706                (478)
2707            </div>
2708            </div>
2709
2710    
2710<script>
2711        'use strict';
2712
2713        function initRating2480616ac924c0cb125() {
2714            return {
2715                get reviewsSection() {
2716                    return document.getElementById('customer-review-list')
2717                        || document.getElementById('customer-reviews')
2718                        || document.getElementById('review-form');
2719                },
2720                scrollToRatings() {
2721                    let scrollTimeout = null
2722
2723                    if (!this.reviewsSection) {
2724                        return
2725                    }
2726
2727                    addEventListener('scroll', () => {
2728                        clearTimeout(scrollTimeout);
2729
2730                        scrollTimeout = setTimeout(() => {
2731                            if (this.reviewsSection) {
2732                                this.reviewsSection.focus()
2733                            }
2734                        }, 50);
2735                    }, { once: true });
2736
2737                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
2738                }
2739            }
2740        }
2741    </script>
2741
2742                </div>
2743            
2744                                        
2745            
2746            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
2747            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
2748                <template x-if="active = true">
2749                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(248061)">
2750                        <template x-if="!$store.ajaxPrices.hasPrice(248061)">
2751                            <div class="skeleton w-16 lg:w-full h-6">
2752                                Caricamento...                            </div>
2753                        </template>
2754                        <template x-if="$store.ajaxPrices.hasPrice(248061)">
2755                            <span x-html="$store.ajaxPrices.getPriceHtml(248061)"></span>
2756                        </template>
2757                    </div>
2758                </template>
2759            </span>
2760
2761                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
2762                            <?xml version="1.0" encoding="UTF-8"?>
2763<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
2764                        </button>
2765                                                                                </div>
2766        </div>
2767        </form>
2768
2769                </div>
2770                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2771                    
2772<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/271176/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2773    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="271176">
2774    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2775    <input type="hidden" name="product" value="271176">
2776                <a href="https://www.farma.it/987406725-boiron-srl-nutrimagnesium-300-20bust.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="NutriMagnesium 300+ Integratore per Stanchezza 20 Bustine Gusto Agrumi"></a>
2777        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(271176, 'card_top_left')">
2778        <template x-for="badge in $store.badges.getBadgesHtml(271176, 'card_top_left')">
2779            <span x-html="badge"></span>
2780        </template>
2781    </span>
2782                <a href="https://www.farma.it/987406725-boiron-srl-nutrimagnesium-300-20bust.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2783            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_28428-b619537a.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_28428.jpg" width="142" height="142" alt="/i/m/image_28428.jpg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-271176.window="updateImage" loading="lazy"></picture>
2784        </a>
2785        <div class="product-info flex flex-col grow justify-start">
2786                        <div class="items-center justify-center ">
2787                <a class="product-item-link" href="https://www.farma.it/987406725-boiron-srl-nutrimagnesium-300-20bust.html" :id="`slide-desc-271176-${$id('slider-id')}`">
2788                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2789                        NutriMagnesium 300+ Integratore per Stanchezza 20 Bustine Gusto Agrumi                    </h2>
2790                </a>
2791            </div>
2792
2793                            <div class="mt-1 mb-1 ">
2794                                    </div>
2795            
2796                                        
2797            
2798            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
2799            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
2800                <template x-if="active = true">
2801                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(271176)">
2802                        <template x-if="!$store.ajaxPrices.hasPrice(271176)">
2803                            <div class="skeleton w-16 lg:w-full h-6">
2804                                Caricamento...                            </div>
2805                        </template>
2806                        <template x-if="$store.ajaxPrices.hasPrice(271176)">
2807                            <span x-html="$store.ajaxPrices.getPriceHtml(271176)"></span>
2808                        </template>
2809                    </div>
2810                </template>
2811            </span>
2812
2813                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
2814                            <?xml version="1.0" encoding="UTF-8"?>
2815<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
2816                        </button>
2817                                                                                </div>
2818        </div>
2819        </form>
2820
2821                </div>
2822                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2823                    
2824<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/64626/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2825    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="64626">
2826    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2827    <input type="hidden" name="product" value="64626">
2828                <a href="https://www.farma.it/yovis-stick-10-bustoro.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Yovis Stick Fermenti Lattici Vivi Probiotici Senza Glutine e Lattosio 10 Bustine"></a>
2829        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(64626, 'card_top_left')">
2830        <template x-for="badge in $store.badges.getBadgesHtml(64626, 'card_top_left')">
2831            <span x-html="badge"></span>
2832        </template>
2833    </span>
2834                <a href="https://www.farma.it/yovis-stick-10-bustoro.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2835            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/972264410_1-ff7c0242.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/972264410_1.jpg" width="142" height="142" alt="Yovis Stick Fermenti Lattici Vivi Probiotici Senza Glutine e Lattosio 10 Bustine" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-64626.window="updateImage" loading="lazy"></picture>
2836        </a>
2837        <div class="product-info flex flex-col grow justify-start">
2838                        <div class="items-center justify-center ">
2839                <a class="product-item-link" href="https://www.farma.it/yovis-stick-10-bustoro.html" :id="`slide-desc-64626-${$id('slider-id')}`">
2840                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2841                        Yovis Stick Fermenti Lattici Vivi Probiotici Senza Glutine e Lattosio 10 Bustine                    </h2>
2842                </a>
2843            </div>
2844
2845                            <div class="mt-1 mb-1 ">
2846                        <div class="flex gap-2">
2847        <div x-data="initRating646266ac925af30be5()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
2848                ? 'Yovis\u0020Stick\u0020Fermenti\u0020Lattici\u0020Vivi\u0020Probiotici\u0020Senza\u0020Glutine\u0020e\u0020Lattosio\u002010\u0020Bustine\u0020rating.\u00204.8\u0020
2848out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
2849                : 'Yovis\u0020Stick\u0020Fermenti\u0020Lattici\u0020Vivi\u0020Probiotici\u0020Senza\u0020Glutine\u0020e\u0020Lattosio\u002010\u0020Bustine\u0020rating.\u00204.8\u0020out\u0020of\u00205\u0020stars'
2850            " role="group">
2851                            <span class="hidden">4.8</span>
2852                <span class="hidden">19</span>
2853                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2854                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2855                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2856                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2857                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2858                    </svg>
2859                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2860                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2861                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2862                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2863                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2864                    </svg>
2865                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2866                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2867                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2868                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2869                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2870                    </svg>
2871                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2872                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2873                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2874                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2875                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2876                    </svg>
2877                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
2878                        <defs>
2879                            <lineargradient id="partialFill64626">
2880                                <stop offset="0%" stop-color="#f6e05e"></stop>
2881                                <stop offset="80%" stop-color="#f6e05e"></stop>
2882                                <stop offset="80%" stop-color="#cbd5e0"></stop>
2883                                <stop offset="100%" stop-color="#cbd5e0"></stop>
2884                            </lineargradient>
2885                        </defs>
2886                        <g fill="url(#partialFill64626)">
2887                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
2888                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2889                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
2890                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2891                        </g>
2892                    </svg>
2893                                                                        </div>
2894                    <div class="text-xs">
2895                (19)
2896            </div>
2897            </div>
2898
2899    
2899<script>
2900        'use strict';
2901
2902        function initRating646266ac925af30be5() {
2903            return {
2904                get reviewsSection() {
2905                    return document.getElementById('customer-review-list')
2906                        || document.getElementById('customer-reviews')
2907                        || document.getElementById('review-form');
2908                },
2909                scrollToRatings() {
2910                    let scrollTimeout = null
2911
2912                    if (!this.reviewsSection) {
2913                        return
2914                    }
2915
2916                    addEventListener('scroll', () => {
2917                        clearTimeout(scrollTimeout);
2918
2919                        scrollTimeout = setTimeout(() => {
2920                            if (this.reviewsSection) {
2921                                this.reviewsSection.focus()
2922                            }
2923                        }, 50);
2924                    }, { once: true });
2925
2926                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
2927                }
2928            }
2929        }
2930    </script>
2930
2931                </div>
2932            
2933                                        
2934            
2935            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
2936            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
2937                <template x-if="active = true">
2938                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(64626)">
2939                        <template x-if="!$store.ajaxPrices.hasPrice(64626)">
2940                            <div class="skeleton w-16 lg:w-full h-6">
2941                                Caricamento...                            </div>
2942                        </template>
2943                        <template x-if="$store.ajaxPrices.hasPrice(64626)">
2944                            <span x-html="$store.ajaxPrices.getPriceHtml(64626)"></span>
2945                        </template>
2946                    </div>
2947                </template>
2948            </span>
2949
2950                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
2951                            <?xml version="1.0" encoding="UTF-8"?>
2952<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
2953                        </button>
2954                                                                                </div>
2955        </div>
2956        </form>
2957
2958                </div>
2959                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
2960                    
2961<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/28779/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
2962    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="28779">
2963    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
2964    <input type="hidden" name="product" value="28779">
2965                <a href="https://www.farma.it/eucerin-hyalfiller-cocchi.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Eucerin Hyaluron-Filler Contorno Occhi 15ml Trattamento Antirughe con Acido Ialuronico"></a>
2966        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(28779, 'card_top_left')">
2967        <template x-for="badge in $store.badges.getBadgesHtml(28779, 'card_top_left')">
2968            <span x-html="badge"></span>
2969        </template>
2970    </span>
2971                <a href="https://www.farma.it/eucerin-hyalfiller-cocchi.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
2972            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/0/905380059-1-b2344897.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/0/905380059-1.jpeg" width="142" height="142" alt="Eucerin Hyaluron-Filler Contorno Occhi 15ml Trattamento Antirughe con Acido Ialuronico" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-28779.window="updateImage" loading="lazy"></picture>
2973        </a>
2974        <div class="product-info flex flex-col grow justify-start">
2975                        <div class="items-center justify-center ">
2976                <a class="product-item-link" href="https://www.farma.it/eucerin-hyalfiller-cocchi.html" :id="`slide-desc-28779-${$id('slider-id')}`">
2977                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
2978                        Eucerin Hyaluron-Filler Contorno Occhi 15ml Trattamento Antirughe con Acido Ialuronico                    </h2>
2979                </a>
2980            </div>
2981
2982                            <div class="mt-1 mb-1 ">
2983                        <div class="flex gap-2">
2984        <div x-data="initRating287796ac9256ac8b81()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
2985                ? 'Eucerin\u0020Hyaluron\u002DFiller\u0020Contorno\u0020Occhi\u002015ml\u0020Trattamento\u0020Antirughe\u0020con\u0020Acido\u0020Ialuronico\u0020rating.\u00205\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
2986                : 'Eucerin\u0020Hyaluron\u002DFiller\u0020Contorno\u0020Occhi\u002015ml\u0020Trattamento\u0020Antirughe\u0020con\u0020Acido\u0020Ialuronico\u0020rating.\u00205\u0020out\u0020of\u00205\u0020stars'
2987            " role="group">
2988                            <span class="hidden">5</span>
2989                <span class="hidden">1</span>
2990                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2991                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2992                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2993                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
2994                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2995                    </svg>
2996                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
2997                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
2998                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2999                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3000                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3001                    </svg>
3002                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3003                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3004                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3005                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3006                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3007                    </svg>
3008                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3009                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3010                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3011                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3012                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3013                    </svg>
3014                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3015                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3016                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3017                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3018                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3019                    </svg>
3020                                                                                                            </div>
3021                    <div class="text-xs">
3022                (1)
3023            </div>
3024            </div>
3025
3026    
3026<script>
3027        'use strict';
3028
3029        function initRating287796ac9256ac8b81() {
3030            return {
3031                get reviewsSection() {
3032                    return document.getElementById('customer-review-list')
3033                        || document.getElementById('customer-reviews')
3034                        || document.getElementById('review-form');
3035                },
3036                scrollToRatings() {
3037                    let scrollTimeout = null
3038
3039                    if (!this.reviewsSection) {
3040                        return
3041                    }
3042
3043                    addEventListener('scroll', () => {
3044                        clearTimeout(scrollTimeout);
3045
3046                        scrollTimeout = setTimeout(() => {
3047                            if (this.reviewsSection) {
3048                                this.reviewsSection.focus()
3049                            }
3050                        }, 50);
3051                    }, { once: true });
3052
3053                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
3054                }
3055            }
3056        }
3057    </script>
3057
3058                </div>
3059            
3060                                        
3061            
3062            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3063            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3064                <template x-if="active = true">
3065                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(28779)">
3066                        <template x-if="!$store.ajaxPrices.hasPrice(28779)">
3067                            <div class="skeleton w-16 lg:w-full h-6">
3068                                Caricamento...                            </div>
3069                        </template>
3070                        <template x-if="$store.ajaxPrices.hasPrice(28779)">
3071                            <span x-html="$store.ajaxPrices.getPriceHtml(28779)"></span>
3072                        </template>
3073                    </div>
3074                </template>
3075            </span>
3076
3077                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3078                            <?xml version="1.0" encoding="UTF-8"?>
3079<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3080                        </button>
3081                                                                                </div>
3082        </div>
3083        </form>
3084
3085                </div>
3086                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3087                    
3088<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/95435/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3089    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="95435">
3090    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3091    <input type="hidden" name="product" value="95435">
3092                <a href="https://www.farma.it/neo-immuno-200ml-oti-0.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="OTI Neo Immuno Sciroppo 200ml"></a>
3093        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(95435, 'card_top_left')">
3094        <template x-for="badge in $store.badges.getBadgesHtml(95435, 'card_top_left')">
3095            <span x-html="badge"></span>
3096        </template>
3097    </span>
3098                <a href="https://www.farma.it/neo-immuno-200ml-oti-0.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3099            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/974504817-ebbe0f62.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/974504817.jpeg" width="142" height="142" alt="OTI Neo Immuno Sciroppo 200ml" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-95435.window="updateImage" loading="lazy"></picture>
3100        </a>
3101        <div class="product-info flex flex-col grow justify-start">
3102                        <div class="items-center justify-center ">
3103                <a class="product-item-link" href="https://www.farma.it/neo-immuno-200ml-oti-0.html" :id="`slide-desc-95435-${$id('slider-id')}`">
3104                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3105                        OTI Neo Immuno Sciroppo 200ml                    </h2>
3106                </a>
3107            </div>
3108
3109                            <div class="mt-1 mb-1 ">
3110                        <div class="flex gap-2">
3111        <div x-data="initRating954356ac9256aca0cb()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
3112                ? 'OTI\u0020Neo\u0020Immuno\u0020Sciroppo\u0020200ml\u0020rating.\u00204.85\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
3113                : 'OTI\u0020Neo\u0020Immuno\u0020Sciroppo\u0020200ml\u0020rating.\u00204.85\u0020out\u0020of\u00205\u0020stars'
3114            " role="group">
3115                            <span class="hidden">4.85</span>
3116                <span class="hidden">7</span>
3117                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3118                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3119                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3120                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3121                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3122                    </svg>
3123                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3124                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3125                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3126                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3127                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3128                    </svg>
3129                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3130                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3131                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3132                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3133                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3134                    </svg>
3135                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3136                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3137                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3138                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3139                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3140                    </svg>
3141                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
3142                        <defs>
3143                            <lineargradient id="partialFill95435">
3144                                <stop offset="0%" stop-color="#f6e05e"></stop>
3145                                <stop offset="85%" stop-color="#f6e05e"></stop>
3146                                <stop offset="85%" stop-color="#cbd5e0"></stop>
3147                                <stop offset="100%" stop-color="#cbd5e0"></stop>
3148                            </lineargradient>
3149                        </defs>
3150                        <g fill="url(#partialFill95435)">
3151                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
3152                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3153                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
3154                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3155                        </g>
3156                    </svg>
3157                                                                        </div>
3158                    <div class="text-xs">
3159                (7)
3160            </div>
3161            </div>
3162
3163    
3163<script>
3164        'use strict';
3165
3166        function initRating954356ac9256aca0cb() {
3167            return {
3168                get reviewsSection() {
3169                    return document.getElementById('customer-review-list')
3170                        || document.getElementById('customer-reviews')
3171                        || document.getElementById('review-form');
3172                },
3173                scrollToRatings() {
3174                    let scrollTimeout = null
3175
3176                    if (!this.reviewsSection) {
3177                        return
3178                    }
3179
3180                    addEventListener('scroll', () => {
3181                        clearTimeout(scrollTimeout);
3182
3183                        scrollTimeout = setTimeout(() => {
3184                            if (this.reviewsSection) {
3185                                this.reviewsSection.focus()
3186                            }
3187                        }, 50);
3188                    }, { once: true });
3189
3190                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
3191                }
3192            }
3193        }
3194    </script>
3194
3195                </div>
3196            
3197                                        
3198            
3199            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3200            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3201                <template x-if="active = true">
3202                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(95435)">
3203                        <template x-if="!$store.ajaxPrices.hasPrice(95435)">
3204                            <div class="skeleton w-16 lg:w-full h-6">
3205                                Caricamento...                            </div>
3206                        </template>
3207                        <template x-if="$store.ajaxPrices.hasPrice(95435)">
3208                            <span x-html="$store.ajaxPrices.getPriceHtml(95435)"></span>
3209                        </template>
3210                    </div>
3211                </template>
3212            </span>
3213
3214                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3215                            <?xml version="1.0" encoding="UTF-8"?>
3216<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3217                        </button>
3218                                                                                </div>
3219        </div>
3220        </form>
3221
3222                </div>
3223                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3224                    
3225<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/207144/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3226    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="207144">
3227    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3228    <input type="hidden" name="product" value="207144">
3229                <a href="https://www.farma.it/mellin-omog-mela-3pz-100g.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Mellin Omogeneizzati Mela 3 Pezzi 100g"></a>
3230        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(207144, 'card_top_left')">
3231        <template x-for="badge in $store.badges.getBadgesHtml(207144, 'card_top_left')">
3232            <span x-html="badge"></span>
3233        </template>
3234    </span>
3235                <a href="https://www.farma.it/mellin-omog-mela-3pz-100g.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3236            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_21085-8937e20b.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_21085.jpg" width="142" height="142" alt="/i/m/image_21085.jpg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-207144.window="updateImage" loading="lazy"></picture>
3237        </a>
3238        <div class="product-info flex flex-col grow justify-start">
3239                        <div class="items-center justify-center ">
3240                <a class="product-item-link" href="https://www.farma.it/mellin-omog-mela-3pz-100g.html" :id="`slide-desc-207144-${$id('slider-id')}`">
3241                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3242                        Mellin Omogeneizzati Mela 3 Pezzi 100g                    </h2>
3243                </a>
3244            </div>
3245
3246                            <div class="mt-1 mb-1 ">
3247                                    </div>
3248            
3249                                        
3250            
3251            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3252            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3253                <template x-if="active = true">
3254                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(207144)">
3255                        <template x-if="!$store.ajaxPrices.hasPrice(207144)">
3256                            <div class="skeleton w-16 lg:w-full h-6">
3257                                Caricamento...                            </div>
3258                        </template>
3259                        <template x-if="$store.ajaxPrices.hasPrice(207144)">
3260                            <span x-html="$store.ajaxPrices.getPriceHtml(207144)"></span>
3261                        </template>
3262                    </div>
3263                </template>
3264            </span>
3265
3266                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3267                            <?xml version="1.0" encoding="UTF-8"?>
3268<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3269                        </button>
3270                                                                                </div>
3271        </div>
3272        </form>
3273
3274                </div>
3275                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3276                    
3277<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/270795/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3278    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="270795">
3279    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3280    <input type="hidden" name="product" value="270795">
3281                <a href="https://www.farma.it/974998849-apivita-sa-apivita-exp-pumpkin-2x8ml-19.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Apivita Maschera Viso Detossinante Zucca 2x8ml"></a>
3282        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(270795, 'card_top_left')">
3283        <template x-for="badge in $store.badges.getBadgesHtml(270795, 'card_top_left')">
3284            <span x-html="badge"></span>
3285        </template>
3286    </span>
3287                <a href="https://www.farma.it/974998849-apivita-sa-apivita-exp-pumpkin-2x8ml-19.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3288            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/974998849-738fdfd7.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/974998849.jpg" width="142" height="142" alt="Apivita Maschera Viso Detossinante Zucca 2x8ml" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-270795.window="updateImage" loading="lazy"></picture>
3289        </a>
3290        <div class="product-info flex flex-col grow justify-start">
3291                        <div class="items-center justify-center ">
3292                <a class="product-item-link" href="https://www.farma.it/974998849-apivita-sa-apivita-exp-pumpkin-2x8ml-19.html" :id="`slide-desc-270795-${$id('slider-id')}`">
3293                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3294                        Apivita Maschera Viso Detossinante Zucca 2x8ml                    </h2>
3295                </a>
3296            </div>
3297
3298                            <div class="mt-1 mb-1 ">
3299                                    </div>
3300            
3301                                        
3302            
3303            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3304            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3305                <template x-if="active = true">
3306                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(270795)">
3307                        <template x-if="!$store.ajaxPrices.hasPrice(270795)">
3308                            <div class="skeleton w-16 lg:w-full h-6">
3309                                Caricamento...                            </div>
3310                        </template>
3311                        <template x-if="$store.ajaxPrices.hasPrice(270795)">
3312                            <span x-html="$store.ajaxPrices.getPriceHtml(270795)"></span>
3313                        </template>
3314                    </div>
3315                </template>
3316            </span>
3317
3318                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3319                            <?xml version="1.0" encoding="UTF-8"?>
3320<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3321                        </button>
3322                                                                                </div>
3323        </div>
3324        </form>
3325
3326                </div>
3327                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3328                    
3329<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/193876/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3330    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="193876">
3331    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3332    <input type="hidden" name="product" value="193876">
3333                <a href="https://www.farma.it/euphralia-occhi-secchi-collir.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Euphralia Occhi Secchi Collirio"></a>
3334        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(193876, 'card_top_left')">
3335        <template x-for="badge in $store.badges.getBadgesHtml(193876, 'card_top_left')">
3336            <span x-html="badge"></span>
3337        </template>
3338    </span>
3339                <a href="https://www.farma.it/euphralia-occhi-secchi-collir.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3340            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_19079-87c42b34.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/i/m/image_19079.jpg" width="142" height="142" alt="/i/m/image_19079.jpg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-193876.window="updateImage" loading="lazy"></picture>
3341        </a>
3342        <div class="product-info flex flex-col grow justify-start">
3343                        <div class="items-center justify-center ">
3344                <a class="product-item-link" href="https://www.farma.it/euphralia-occhi-secchi-collir.html" :id="`slide-desc-193876-${$id('slider-id')}`">
3345                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3346                        Euphralia Occhi Secchi Collirio                    </h2>
3347                </a>
3348            </div>
3349
3350                            <div class="mt-1 mb-1 ">
3351                        <div class="flex gap-2">
3352        <div x-data="initRating1938766ac9256acbd1e()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
3353                ? 'Euphralia\u0020Occhi\u0020Secchi\u0020Collirio\u0020rating.\u00204.95\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
3354                : 'Euphralia\u0020Occhi\u0020Secchi\u0020Collirio\u0020rating.\u00204.95\u0020out\u0020of\u00205\u0020stars'
3355            " role="group">
3356                            <span class="hidden">4.95</span>
3357                <span class="hidden">14</span>
3358                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3359                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3360                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3361                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3362                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3363                    </svg>
3364                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3365                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3366                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3367                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3368                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3369                    </svg>
3370                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3371                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3372                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3373                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3374                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3375                    </svg>
3376                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3377                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3378                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3379                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3380                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3381                    </svg>
3382                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
3383                        <defs>
3384                            <lineargradient id="partialFill193876">
3385                                <stop offset="0%" stop-color="#f6e05e"></stop>
3386                                <stop offset="95%" stop-color="#f6e05e"></stop>
3387                                <stop offset="95%" stop-color="#cbd5e0"></stop>
3388                                <stop offset="100%" stop-color="#cbd5e0"></stop>
3389                            </lineargradient>
3390                        </defs>
3391                        <g fill="url(#partialFill193876)">
3392                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
3393                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3394                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
3395                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3396                        </g>
3397                    </svg>
3398                                                                        </div>
3399                    <div class="text-xs">
3400                (14)
3401            </div>
3402            </div>
3403
3404    
3404<script>
3405        'use strict';
3406
3407        function initRating1938766ac9256acbd1e() {
3408            return {
3409                get reviewsSection() {
3410                    return document.getElementById('customer-review-list')
3411                        || document.getElementById('customer-reviews')
3412                        || document.getElementById('review-form');
3413                },
3414                scrollToRatings() {
3415                    let scrollTimeout = null
3416
3417                    if (!this.reviewsSection) {
3418                        return
3419                    }
3420
3421                    addEventListener('scroll', () => {
3422                        clearTimeout(scrollTimeout);
3423
3424                        scrollTimeout = setTimeout(() => {
3425                            if (this.reviewsSection) {
3426                                this.reviewsSection.focus()
3427                            }
3428                        }, 50);
3429                    }, { once: true });
3430
3431                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
3432                }
3433            }
3434        }
3435    </script>
3435
3436                </div>
3437            
3438                                        
3439            
3440            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3441            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3442                <template x-if="active = true">
3443                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(193876)">
3444                        <template x-if="!$store.ajaxPrices.hasPrice(193876)">
3445                            <div class="skeleton w-16 lg:w-full h-6">
3446                                Caricamento...                            </div>
3447                        </template>
3448                        <template x-if="$store.ajaxPrices.hasPrice(193876)">
3449                            <span x-html="$store.ajaxPrices.getPriceHtml(193876)"></span>
3450                        </template>
3451                    </div>
3452                </template>
3453            </span>
3454
3455                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3456                            <?xml version="1.0" encoding="UTF-8"?>
3457<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3458                        </button>
3459                                                                                </div>
3460        </div>
3461        </form>
3462
3463                </div>
3464                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3465                    
3466<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/276146/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3467    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="276146">
3468    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3469    <input type="hidden" name="product" value="276146">
3470                <a href="https://www.farma.it/950951689-i-c-i-m-bionike-internation-defence-my-age-collagene-10fl.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Defence My Age Collagen Drink 10 flaconcini Bionike"></a>
3471        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(276146, 'card_top_left')">
3472        <template x-for="badge in $store.badges.getBadgesHtml(276146, 'card_top_left')">
3473            <span x-html="badge"></span>
3474        </template>
3475    </span>
3476                <a href="https://www.farma.it/950951689-i-c-i-m-bionike-internation-defence-my-age-collagene-10fl.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3477            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/5/950951689-8ec9a6c5.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/5/950951689.jpeg" width="142" height="142" alt="Defence My Age Collagen Drink 10 flaconcini Bionike" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-276146.window="updateImage" loading="lazy"></picture>
3478        </a>
3479        <div class="product-info flex flex-col grow justify-start">
3480                        <div class="items-center justify-center ">
3481                <a class="product-item-link" href="https://www.farma.it/950951689-i-c-i-m-bionike-internation-defence-my-age-collagene-10fl.html" :id="`slide-desc-276146-${$id('slider-id')}`">
3482                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3483                        Defence My Age Collagen Drink 10 flaconcini Bionike                    </h2>
3484                </a>
3485            </div>
3486
3487                            <div class="mt-1 mb-1 ">
3488                                    </div>
3489            
3490                                        
3491            
3492            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3493            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3494                <template x-if="active = true">
3495                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(276146)">
3496                        <template x-if="!$store.ajaxPrices.hasPrice(276146)">
3497                            <div class="skeleton w-16 lg:w-full h-6">
3498                                Caricamento...                            </div>
3499                        </template>
3500                        <template x-if="$store.ajaxPrices.hasPrice(276146)">
3501                            <span x-html="$store.ajaxPrices.getPriceHtml(276146)"></span>
3502                        </template>
3503                    </div>
3504                </template>
3505            </span>
3506
3507                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3508                            <?xml version="1.0" encoding="UTF-8"?>
3509<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3510                        </button>
3511                                                                                </div>
3512        </div>
3513        </form>
3514
3515                </div>
3516                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3517                    
3518<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/242620/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3519    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="242620">
3520    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3521    <input type="hidden" name="product" value="242620">
3522                <a href="https://www.farma.it/laila-dormibene-60gommose.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Laila DormiBene 60 Gommose Integratore Sonno Melatonina Rilassante Frutti Bosco"></a>
3523        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(242620, 'card_top_left')">
3524        <template x-for="badge in $store.badges.getBadgesHtml(242620, 'card_top_left')">
3525            <span x-html="badge"></span>
3526        </template>
3527    </span>
3528                <a href="https://www.farma.it/laila-dormibene-60gommose.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3529            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/c/a/catalog_prodotti2_986734515-36374451.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/c/a/catalog_prodotti2_986734515.jpeg" width="142" height="142" alt="Laila DormiBene 60 Gommose Integratore Sonno Melatonina Rilassante Frutti Bosco" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-242620.window="updateImage" loading="lazy"></picture>
3530        </a>
3531        <div class="product-info flex flex-col grow justify-start">
3532                        <div class="items-center justify-center ">
3533                <a class="product-item-link" href="https://www.farma.it/laila-dormibene-60gommose.html" :id="`slide-desc-242620-${$id('slider-id')}`">
3534                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3535                        Laila DormiBene 60 Gommose Integratore Sonno Melatonina Rilassante Frutti Bosco                    </h2>
3536                </a>
3537            </div>
3538
3539                            <div class="mt-1 mb-1 ">
3540                        <div class="flex gap-2">
3541        <div x-data="initRating2426206ac925f04caf4()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
3542                ? 'Laila\u0020DormiBene\u002060\u0020Gommose\u0020Integratore\u0020Sonno\u0020Melatonina\u0020Rilassante\u0020Frutti\u0020Bosco\u0020rating.\u00205\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
3543                : 'Laila\u0020DormiBene\u002060\u0020Gommose\u0020Integratore\u0020Sonno\u0020Melatonina\u0020Rilassante\u0020Frutti\u0020Bosco\u0020rating.\u00205\u0020out\u0020of\u00205\u0020stars'
3544            " role="group">
3545                            <span class="hidden">5</span>
3546                <span class="hidden">4</span>
3547                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3548                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3549                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3550                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3551                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3552                    </svg>
3553                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3554                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3555                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3556                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3557                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3558                    </svg>
3559                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3560                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3561                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3562                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3563                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3564                    </svg>
3565                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3566                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3567                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3568                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3569                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3570                    </svg>
3571                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3572                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3573                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3574                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3575                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3576                    </svg>
3577                                                                                                            </div>
3578                    <div class="text-xs">
3579                (4)
3580            </div>
3581            </div>
3582
3583    
3583<script>
3584        'use strict';
3585
3586        function initRating2426206ac925f04caf4() {
3587            return {
3588                get reviewsSection() {
3589                    return document.getElementById('customer-review-list')
3590                        || document.getElementById('customer-reviews')
3591                        || document.getElementById('review-form');
3592                },
3593                scrollToRatings() {
3594                    let scrollTimeout = null
3595
3596                    if (!this.reviewsSection) {
3597                        return
3598                    }
3599
3600                    addEventListener('scroll', () => {
3601                        clearTimeout(scrollTimeout);
3602
3603                        scrollTimeout = setTimeout(() => {
3604                            if (this.reviewsSection) {
3605                                this.reviewsSection.focus()
3606                            }
3607                        }, 50);
3608                    }, { once: true });
3609
3610                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
3611                }
3612            }
3613        }
3614    </script>
3614
3615                </div>
3616            
3617                                        
3618            
3619            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3620            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3621                <template x-if="active = true">
3622                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(242620)">
3623                        <template x-if="!$store.ajaxPrices.hasPrice(242620)">
3624                            <div class="skeleton w-16 lg:w-full h-6">
3625                                Caricamento...                            </div>
3626                        </template>
3627                        <template x-if="$store.ajaxPrices.hasPrice(242620)">
3628                            <span x-html="$store.ajaxPrices.getPriceHtml(242620)"></span>
3629                        </template>
3630                    </div>
3631                </template>
3632            </span>
3633
3634                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3635                            <?xml version="1.0" encoding="UTF-8"?>
3636<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3637                        </button>
3638                                                                                                                    </div>
3639        </div>
3640        </form>
3641
3642                </div>
3643                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3644                    
3645<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/130751/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3646    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="130751">
3647    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3648    <input type="hidden" name="product" value="130751">
3649                <a href="https://www.farma.it/vidermina-lubripiuolio-latte.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Lubripi&ugrave; di Vidermina olio latte detergente intimo 200 ml"></a>
3650        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(130751, 'card_top_left')">
3651        <template x-for="badge in $store.badges.getBadgesHtml(130751, 'card_top_left')">
3652            <span x-html="badge"></span>
3653        </template>
3654    </span>
3655                <a href="https://www.farma.it/vidermina-lubripiuolio-latte.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3656            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/d/a/data_vidermina_lubripi___olio_latte-109bf44d.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/d/a/data_vidermina_lubripi___olio_latte.jpeg" width="142" height="142" alt="Lubripi&ugrave; di Vidermina olio latte detergente intimo 200 ml" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-130751.window="updateImage" loading="lazy"></picture>
3657        </a>
3658        <div class="product-info flex flex-col grow justify-start">
3659                        <div class="items-center justify-center ">
3660                <a class="product-item-link" href="https://www.farma.it/vidermina-lubripiuolio-latte.html" :id="`slide-desc-130751-${$id('slider-id')}`">
3661                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3662                        Lubripi&ugrave; di Vidermina olio latte detergente intimo 200 ml                    </h2>
3663                </a>
3664            </div>
3665
3666                            <div class="mt-1 mb-1 ">
3667                        <div class="flex gap-2">
3668        <div x-data="initRating1307516ac925bccc153()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
3669                ? 'Lubripi\u00F9\u0020di\u0020Vidermina\u0020olio\u0020latte\u0020detergente\u0020intimo\u0020200\u0020ml\u0020rating.\u00205\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
3670                : 'Lubripi\u00F9\u0020di\u0020Vidermina\u0020olio\u0020latte\u0020detergente\u0020intimo\u0020200\u0020ml\u0020rating.\u00205\u0020out\u0020of\u00205\u0020stars'
3671            " role="group">
3672                            <span class="hidden">5</span>
3673                <span class="hidden">7</span>
3674                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3675                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3676                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3677                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3678                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3679                    </svg>
3680                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3681                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3682                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3683                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3684                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3685                    </svg>
3686                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3687                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3688                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3689                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3690                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3691                    </svg>
3692                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3693                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3694                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3695                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3696                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3697                    </svg>
3698                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3699                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3700                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3701                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3702                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3703                    </svg>
3704                                                                                                            </div>
3705                    <div class="text-xs">
3706                (7)
3707            </div>
3708            </div>
3709
3710    
3710<script>
3711        'use strict';
3712
3713        function initRating1307516ac925bccc153() {
3714            return {
3715                get reviewsSection() {
3716                    return document.getElementById('customer-review-list')
3717                        || document.getElementById('customer-reviews')
3718                        || document.getElementById('review-form');
3719                },
3720                scrollToRatings() {
3721                    let scrollTimeout = null
3722
3723                    if (!this.reviewsSection) {
3724                        return
3725                    }
3726
3727                    addEventListener('scroll', () => {
3728                        clearTimeout(scrollTimeout);
3729
3730                        scrollTimeout = setTimeout(() => {
3731                            if (this.reviewsSection) {
3732                                this.reviewsSection.focus()
3733                            }
3734                        }, 50);
3735                    }, { once: true });
3736
3737                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
3738                }
3739            }
3740        }
3741    </script>
3741
3742                </div>
3743            
3744                                        
3745            
3746            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3747            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3748                <template x-if="active = true">
3749                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(130751)">
3750                        <template x-if="!$store.ajaxPrices.hasPrice(130751)">
3751                            <div class="skeleton w-16 lg:w-full h-6">
3752                                Caricamento...                            </div>
3753                        </template>
3754                        <template x-if="$store.ajaxPrices.hasPrice(130751)">
3755                            <span x-html="$store.ajaxPrices.getPriceHtml(130751)"></span>
3756                        </template>
3757                    </div>
3758                </template>
3759            </span>
3760
3761                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3762                            <?xml version="1.0" encoding="UTF-8"?>
3763<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3764                        </button>
3765                                                                                </div>
3766        </div>
3767        </form>
3768
3769                </div>
3770                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3771                    
3772<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/52915/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3773    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="52915">
3774    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3775    <input type="hidden" name="product" value="52915">
3776                <a href="https://www.farma.it/echinerg-150ml.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Echinerg 150ml Cemon"></a>
3777        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(52915, 'card_top_left')">
3778        <template x-for="badge in $store.badges.getBadgesHtml(52915, 'card_top_left')">
3779            <span x-html="badge"></span>
3780        </template>
3781    </span>
3782                <a href="https://www.farma.it/echinerg-150ml.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3783            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/c/a/catalog_fotocemon_972295885-ee8c01a9.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/c/a/catalog_fotocemon_972295885.jpg" width="142" height="142" alt="Echinerg 150ml Cemon" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-52915.window="updateImage" loading="lazy"></picture>
3784        </a>
3785        <div class="product-info flex flex-col grow justify-start">
3786                        <div class="items-center justify-center ">
3787                <a class="product-item-link" href="https://www.farma.it/echinerg-150ml.html" :id="`slide-desc-52915-${$id('slider-id')}`">
3788                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3789                        Echinerg 150ml Cemon                    </h2>
3790                </a>
3791            </div>
3792
3793                            <div class="mt-1 mb-1 ">
3794                        <div class="flex gap-2">
3795        <div x-data="initRating529156ac9256acef61()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
3796                ? 'Echinerg\u0020150ml\u0020Cemon\u0020rating.\u00204.95\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
3797                : 'Echinerg\u0020150ml\u0020Cemon\u0020rating.\u00204.95\u0020out\u0020of\u00205\u0020stars'
3798            " role="group">
3799                            <span class="hidden">4.95</span>
3800                <span class="hidden">23</span>
3801                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3802                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3803                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3804                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3805                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3806                    </svg>
3807                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3808                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3809                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3810                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3811                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3812                    </svg>
3813                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3814                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3815                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3816                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3817                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3818                    </svg>
3819                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3820                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3821                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3822                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3823                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3824                    </svg>
3825                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
3826                        <defs>
3827                            <lineargradient id="partialFill52915">
3828                                <stop offset="0%" stop-color="#f6e05e"></stop>
3829                                <stop offset="95%" stop-color="#f6e05e"></stop>
3830                                <stop offset="95%" stop-color="#cbd5e0"></stop>
3831                                <stop offset="100%" stop-color="#cbd5e0"></stop>
3832                            </lineargradient>
3833                        </defs>
3834                        <g fill="url(#partialFill52915)">
3835                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
3836                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3837                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
3838                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3839                        </g>
3840                    </svg>
3841                                                                        </div>
3842                    <div class="text-xs">
3843                (23)
3844            </div>
3845            </div>
3846
3847    
3847<script>
3848        'use strict';
3849
3850        function initRating529156ac9256acef61() {
3851            return {
3852                get reviewsSection() {
3853                    return document.getElementById('customer-review-list')
3854                        || document.getElementById('customer-reviews')
3855                        || document.getElementById('review-form');
3856                },
3857                scrollToRatings() {
3858                    let scrollTimeout = null
3859
3860                    if (!this.reviewsSection) {
3861                        return
3862                    }
3863
3864                    addEventListener('scroll', () => {
3865                        clearTimeout(scrollTimeout);
3866
3867                        scrollTimeout = setTimeout(() => {
3868                            if (this.reviewsSection) {
3869                                this.reviewsSection.focus()
3870                            }
3871                        }, 50);
3872                    }, { once: true });
3873
3874                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
3875                }
3876            }
3877        }
3878    </script>
3878
3879                </div>
3880            
3881                                        
3882            
3883            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
3884            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
3885                <template x-if="active = true">
3886                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(52915)">
3887                        <template x-if="!$store.ajaxPrices.hasPrice(52915)">
3888                            <div class="skeleton w-16 lg:w-full h-6">
3889                                Caricamento...                            </div>
3890                        </template>
3891                        <template x-if="$store.ajaxPrices.hasPrice(52915)">
3892                            <span x-html="$store.ajaxPrices.getPriceHtml(52915)"></span>
3893                        </template>
3894                    </div>
3895                </template>
3896            </span>
3897
3898                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
3899                            <?xml version="1.0" encoding="UTF-8"?>
3900<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
3901                        </button>
3902                                                                                </div>
3903        </div>
3904        </form>
3905
3906                </div>
3907                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
3908                    
3909<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/258683/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
3910    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="258683">
3911    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
3912    <input type="hidden" name="product" value="258683">
3913                <a href="https://www.farma.it/985658145-aboca-spa-societa-agricola-neobianacid-14-cpr-limone.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Neobianacid gusto limone 14 compresse per reflusso"></a>
3914        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(258683, 'card_top_left')">
3915        <template x-for="badge in $store.badges.getBadgesHtml(258683, 'card_top_left')">
3916            <span x-html="badge"></span>
3917        </template>
3918    </span>
3919                <a href="https://www.farma.it/985658145-aboca-spa-societa-agricola-neobianacid-14-cpr-limone.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
3920            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/8/985658145_1-7c55a491.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/8/985658145_1.jpg" width="142" height="142" alt="Neobianacid gusto limone 14 compresse per reflusso" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-258683.window="updateImage" loading="lazy"></picture>
3921        </a>
3922        <div class="product-info flex flex-col grow justify-start">
3923                        <div class="items-center justify-center ">
3924                <a class="product-item-link" href="https://www.farma.it/985658145-aboca-spa-societa-agricola-neobianacid-14-cpr-limone.html" :id="`slide-desc-258683-${$id('slider-id')}`">
3925                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
3926                        Neobianacid gusto limone 14 compresse per reflusso                    </h2>
3927                </a>
3928            </div>
3929
3930                            <div class="mt-1 mb-1 ">
3931                        <div class="flex gap-2">
3932        <div x-data="initRating2586836ac9256ad0473()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
3933                ? 'Neobianacid\u0020gusto\u0020limone\u002014\u0020compresse\u0020per\u0020reflusso\u0020rating.\u00204.5\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
3934                : 'Neobianacid\u0020gusto\u0020limone\u002014\u0020compresse\u0020per\u0020reflusso\u0020rating.\u00204.5\u0020out\u0020of\u00205\u0020stars'
3935            " role="group">
3936                            <span class="hidden">4.5</span>
3937                <span class="hidden">2</span>
3938                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3939                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3940                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3941                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3942                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3943                    </svg>
3944                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3945                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3946                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3947                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3948                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3949                    </svg>
3950                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3951                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3952                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3953                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3954                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3955                    </svg>
3956                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
3957                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
3958                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3959                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
3960                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3961                    </svg>
3962                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
3963                        <defs>
3964                            <lineargradient id="partialFill258683">
3965                                <stop offset="0%" stop-color="#f6e05e"></stop>
3966                                <stop offset="50%" stop-color="#f6e05e"></stop>
3967                                <stop offset="50%" stop-color="#cbd5e0"></stop>
3968                                <stop offset="100%" stop-color="#cbd5e0"></stop>
3969                            </lineargradient>
3970                        </defs>
3971                        <g fill="url(#partialFill258683)">
3972                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
3973                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
3974                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
3975                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
3976                        </g>
3977                    </svg>
3978                                                                        </div>
3979                    <div class="text-xs">
3980                (2)
3981            </div>
3982            </div>
3983
3984    
3984<script>
3985        'use strict';
3986
3987        function initRating2586836ac9256ad0473() {
3988            return {
3989                get reviewsSection() {
3990                    return document.getElementById('customer-review-list')
3991                        || document.getElementById('customer-reviews')
3992                        || document.getElementById('review-form');
3993                },
3994                scrollToRatings() {
3995                    let scrollTimeout = null
3996
3997                    if (!this.reviewsSection) {
3998                        return
3999                    }
4000
4001                    addEventListener('scroll', () => {
4002                        clearTimeout(scrollTimeout);
4003
4004                        scrollTimeout = setTimeout(() => {
4005                            if (this.reviewsSection) {
4006                                this.reviewsSection.focus()
4007                            }
4008                        }, 50);
4009                    }, { once: true });
4010
4011                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
4012                }
4013            }
4014        }
4015    </script>
4015
4016                </div>
4017            
4018                                        
4019            
4020            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
4021            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
4022                <template x-if="active = true">
4023                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(258683)">
4024                        <template x-if="!$store.ajaxPrices.hasPrice(258683)">
4025                            <div class="skeleton w-16 lg:w-full h-6">
4026                                Caricamento...                            </div>
4027                        </template>
4028                        <template x-if="$store.ajaxPrices.hasPrice(258683)">
4029                            <span x-html="$store.ajaxPrices.getPriceHtml(258683)"></span>
4030                        </template>
4031                    </div>
4032                </template>
4033            </span>
4034
4035                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
4036                            <?xml version="1.0" encoding="UTF-8"?>
4037<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
4038                        </button>
4039                                                                                </div>
4040        </div>
4041        </form>
4042
4043                </div>
4044                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
4045                    
4046<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/248045/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
4047    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="248045">
4048    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
4049    <input type="hidden" name="product" value="248045">
4050                <a href="https://www.farma.it/adtab3cpr-900mg-cani-22-45kg.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Adtab Per Cani Da 22 A 45kg 3 Compresse Masticabili 900mg"></a>
4051        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(248045, 'card_top_left')">
4052        <template x-for="badge in $store.badges.getBadgesHtml(248045, 'card_top_left')">
4053            <span x-html="badge"></span>
4054        </template>
4055    </span>
4056                <a href="https://www.farma.it/adtab3cpr-900mg-cani-22-45kg.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
4057            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/1/0/105723100-c1da8523.
4057webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/1/0/105723100.jpg" width="142" height="142" alt="Adtab Per Cani Da 22 A 45kg 3 Compresse Masticabili 900mg" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-248045.window="updateImage" loading="lazy"></picture>
4058        </a>
4059        <div class="product-info flex flex-col grow justify-start">
4060                        <div class="items-center justify-center ">
4061                <a class="product-item-link" href="https://www.farma.it/adtab3cpr-900mg-cani-22-45kg.html" :id="`slide-desc-248045-${$id('slider-id')}`">
4062                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
4063                        Adtab Per Cani Da 22 A 45kg 3 Compresse Masticabili 900mg                    </h2>
4064                </a>
4065            </div>
4066
4067                            <div class="mt-1 mb-1 ">
4068                        <div class="flex gap-2">
4069        <div x-data="initRating2480456ac9268709acb()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
4070                ? 'Adtab\u0020Per\u0020Cani\u0020Da\u002022\u0020A\u002045kg\u00203\u0020Compresse\u0020Masticabili\u0020900mg\u0020rating.\u00204.95\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
4071                : 'Adtab\u0020Per\u0020Cani\u0020Da\u002022\u0020A\u002045kg\u00203\u0020Compresse\u0020Masticabili\u0020900mg\u0020rating.\u00204.95\u0020out\u0020of\u00205\u0020stars'
4072            " role="group">
4073                            <span class="hidden">4.95</span>
4074                <span class="hidden">
4074194</span>
4075                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4076                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4077                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4078                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4079                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4080                    </svg>
4081                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4082                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4083                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4084                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4085                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4086                    </svg>
4087                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4088                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4089                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4090                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4091                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4092                    </svg>
4093                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4094                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4095                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4096                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4097                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4098                    </svg>
4099                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
4100                        <defs>
4101                            <lineargradient id="partialFill248045">
4102                                <stop offset="0%" stop-color="#f6e05e"></stop>
4103                                <stop offset="95%" stop-color="#f6e05e"></stop>
4104                                <stop offset="95%" stop-color="#cbd5e0"></stop>
4105                                <stop offset="100%" stop-color="#cbd5e0"></stop>
4106                            </lineargradient>
4107                        </defs>
4108                        <g fill="url(#partialFill248045)">
4109                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
4110                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4111                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
4112                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4113                        </g>
4114                    </svg>
4115                                                                        </div>
4116                    <div class="text-xs">
4117                (194)
4118            </div>
4119            </div>
4120
4121    
4121<script>
4122        'use strict';
4123
4124        function initRating2480456ac9268709acb() {
4125            return {
4126                get reviewsSection() {
4127                    return document.getElementById('customer-review-list')
4128                        || document.getElementById('customer-reviews')
4129                        || document.getElementById('review-form');
4130                },
4131                scrollToRatings() {
4132                    let scrollTimeout = null
4133
4134                    if (!this.reviewsSection) {
4135                        return
4136                    }
4137
4138                    addEventListener('scroll', () => {
4139                        clearTimeout(scrollTimeout);
4140
4141                        scrollTimeout = setTimeout(() => {
4142                            if (this.reviewsSection) {
4143                                this.reviewsSection.focus()
4144                            }
4145                        }, 50);
4146                    }, { once: true });
4147
4148                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
4149                }
4150            }
4151        }
4152    </script>
4152
4153                </div>
4154            
4155                                        
4156            
4157            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
4158            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
4159                <template x-if="active = true">
4160                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(248045)">
4161                        <template x-if="!$store.ajaxPrices.hasPrice(248045)">
4162                            <div class="skeleton w-16 lg:w-full h-6">
4163                                Caricamento...                            </div>
4164                        </template>
4165                        <template x-if="$store.ajaxPrices.hasPrice(248045)">
4166                            <span x-html="$store.ajaxPrices.getPriceHtml(248045)"></span>
4167                        </template>
4168                    </div>
4169                </template>
4170            </span>
4171
4172                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
4173                            <?xml version="1.0" encoding="UTF-8"?>
4174<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
4175                        </button>
4176                                                                                </div>
4177        </div>
4178        </form>
4179
4180                </div>
4181                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
4182                    
4183<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/93206/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
4184    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="93206">
4185    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
4186    <input type="hidden" name="product" value="93206">
4187                <a href="https://www.farma.it/cve-schiuma-detviso-236ml.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="CeraVe Schiuma Detergente viso pelli normali e grasse"></a>
4188        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(93206, 'card_top_left')">
4189        <template x-for="badge in $store.badges.getBadgesHtml(93206, 'card_top_left')">
4190            <span x-html="badge"></span>
4191        </template>
4192    </span>
4193                <a href="https://www.farma.it/cve-schiuma-detviso-236ml.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
4194            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/974109187-4689349d.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/7/974109187.jpg" width="142" height="142" alt="CeraVe Schiuma Detergente viso pelli normali e grasse" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-93206.window="updateImage" loading="lazy"></picture>
4195        </a>
4196        <div class="product-info flex flex-col grow justify-start">
4197                        <div class="items-center justify-center ">
4198                <a class="product-item-link" href="https://www.farma.it/cve-schiuma-detviso-236ml.html" :id="`slide-desc-93206-${$id('slider-id')}`">
4199                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
4200                        CeraVe Schiuma Detergente viso pelli normali e grasse                    </h2>
4201                </a>
4202            </div>
4203
4204                            <div class="mt-1 mb-1 ">
4205                        <div class="flex gap-2">
4206        <div x-data="initRating932066ac9256ad1d24()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
4207                ? 'CeraVe\u0020Schiuma\u0020Detergente\u0020viso\u0020pelli\u0020normali\u0020e\u0020grasse\u0020rating.\u00204.85\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
4208                : 'CeraVe\u0020Schiuma\u0020Detergente\u0020viso\u0020pelli\u0020normali\u0020e\u0020grasse\u0020rating.\u00204.85\u0020out\u0020of\u00205\u0020stars'
4209            " role="group">
4210                            <span class="hidden">4.85</span>
4211                <span class="hidden">6</span>
4212                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4213                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4214                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4215                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4216                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4217                    </svg>
4218                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4219                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4220                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4221                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4222                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4223                    </svg>
4224                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4225                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4226                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4227                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4228                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4229                    </svg>
4230                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4231                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4232                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4233                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4234                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4235                    </svg>
4236                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
4237                        <defs>
4238                            <lineargradient id="partialFill93206">
4239                                <stop offset="0%" stop-color="#f6e05e"></stop>
4240                                <stop offset="85%" stop-color="#f6e05e"></stop>
4241                                <stop offset="85%" stop-color="#cbd5e0"></stop>
4242                                <stop offset="100%" stop-color="#cbd5e0"></stop>
4243                            </lineargradient>
4244                        </defs>
4245                        <g fill="url(#partialFill93206)">
4246                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
4247                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4248                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
4249                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4250                        </g>
4251                    </svg>
4252                                                                        </div>
4253                    <div class="text-xs">
4254                (6)
4255            </div>
4256            </div>
4257
4258    
4258<script>
4259        'use strict';
4260
4261        function initRating932066ac9256ad1d24() {
4262            return {
4263                get reviewsSection() {
4264                    return document.getElementById('customer-review-list')
4265                        || document.getElementById('customer-reviews')
4266                        || document.getElementById('review-form');
4267                },
4268                scrollToRatings() {
4269                    let scrollTimeout = null
4270
4271                    if (!this.reviewsSection) {
4272                        return
4273                    }
4274
4275                    addEventListener('scroll', () => {
4276                        clearTimeout(scrollTimeout);
4277
4278                        scrollTimeout = setTimeout(() => {
4279                            if (this.reviewsSection) {
4280                                this.reviewsSection.focus()
4281                            }
4282                        }, 50);
4283                    }, { once: true });
4284
4285                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
4286                }
4287            }
4288        }
4289    </script>
4289
4290                </div>
4291            
4292                                        
4293            
4294            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
4295            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
4296                <template x-if="active = true">
4297                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(93206)">
4298                        <template x-if="!$store.ajaxPrices.hasPrice(93206)">
4299                            <div class="skeleton w-16 lg:w-full h-6">
4300                                Caricamento...                            </div>
4301                        </template>
4302                        <template x-if="$store.ajaxPrices.hasPrice(93206)">
4303                            <span x-html="$store.ajaxPrices.getPriceHtml(93206)"></span>
4304                        </template>
4305                    </div>
4306                </template>
4307            </span>
4308
4309                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
4310                            <?xml version="1.0" encoding="UTF-8"?>
4311<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
4312                        </button>
4313                                                                                </div>
4314        </div>
4315        </form>
4316
4317                </div>
4318                                <div class="w-1/2 md:w-1/3 lg:w-1/4 2xl:w-1/6 swiper-slide min-h-full">
4319                    
4320<form method="post" action="https://www.farma.it/checkout/cart/add/uenc/%25uenc%25/product/13285/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full h-full
4321    border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3 " data-feedaty-product-id="13285">
4322    <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
4323    <input type="hidden" name="product" value="13285">
4324                <a href="https://www.farma.it/gynocanesten-inthima-l.html" class="product-item-link absolute top-0 left-0 h-full w-full" aria-label="Gyno-Canesten Inthima Lenitivo detergente intimo da 200ml"></a>
4325        <span class="badge-container flex flex-wrap gap-2 absolute top-2 left-2 z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode(13285, 'card_top_left')">
4326        <template x-for="badge in $store.badges.getBadgesHtml(13285, 'card_top_left')">
4327            <span x-html="badge"></span>
4328        </template>
4329    </span>
4330                <a href="https://www.farma.it/gynocanesten-inthima-l.html" class="product photo product-item-photo block mx-auto mb-4 " tabindex="-1">
4331            <picture class="product-image-photo"><source type="image/webp" srcset="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/3/931051799_01_1-6be10782.webp"><img src="https://www.farma.it/media/catalog/product/cache/f3921bc2d6fbe5976d60e86f03705674/9/3/93
43311051799_01_1.jpg" width="142" height="142" alt="Gyno-Canesten Inthima Lenitivo detergente intimo da 200ml" class="product-image-photo" loading="lazy" x-data="initProductItemImage" @update-gallery-13285.window="updateImage" loading="lazy"></picture>
4332        </a>
4333        <div class="product-info flex flex-col grow justify-start">
4334                        <div class="items-center justify-center ">
4335                <a class="product-item-link" href="https://www.farma.it/gynocanesten-inthima-l.html" :id="`slide-desc-13285-${$id('slider-id')}`">
4336                    <h2 class="text-primary text-xs line-clamp-3 font-normal">
4337                        Gyno-Canesten Inthima Lenitivo detergente intimo da 200ml                    </h2>
4338                </a>
4339            </div>
4340
4341                            <div class="mt-1 mb-1 ">
4342                        <div class="flex gap-2">
4343        <div x-data="initRating132856ac9239255868()" @keyup.enter="scrollToRatings()" @click="scrollToRatings()" class="rating-summary flex" :class="{'cursor-pointer' : reviewsSection}" tabindex="0" :aria-label="reviewsSection
4344                ? 'Gyno\u002DCanesten\u0020Inthima\u0020Lenitivo\u0020detergente\u0020intimo\u0020da\u0020200ml\u0020rating.\u00204.85\u0020out\u0020of\u00205\u0020stars.\u0020Click\u0020to\u0020go\u0020to\u0020reviews.'
4345                : 'Gyno\u002DCanesten\u0020Inthima\u0020Lenitivo\u0020detergente\u0020intimo\u0020da\u0020200ml\u0020rating.\u00204.85\u0020out\u0020of\u00205\u0020stars'
4346            " role="group">
4347                            <span class="hidden">4.85</span>
4348                <span class="hidden">12</span>
4349                                                                            <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4350                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4351                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4352                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4353                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4354                    </svg>
4355                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4356                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4357                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4358                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4359                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4360                    </svg>
4361                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4362                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4363                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4364                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4365                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4366                    </svg>
4367                                                        <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-4 h-4" viewbox="3 0 20 20" style="color: #f6e05e" fill="currentColor" aria-hidden="true">
4368                        <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
4369                            1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4370                            1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
4371                            1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4372                    </svg>
4373                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="3 0 20 20" fill="currentColor" class="w-4 h-4" aria-hidden="true">
4374                        <defs>
4375                            <lineargradient id="partialFill13285">
4376                                <stop offset="0%" stop-color="#f6e05e"></stop>
4377                                <stop offset="85%" stop-color="#f6e05e"></stop>
4378                                <stop offset="85%" stop-color="#cbd5e0"></stop>
4379                                <stop offset="100%" stop-color="#cbd5e0"></stop>
4380                            </lineargradient>
4381                        </defs>
4382                        <g fill="url(#partialFill13285)">
4383                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
4384                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
4385                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
4386                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
4387                        </g>
4388                    </svg>
4389                                                                        </div>
4390                    <div class="text-xs">
4391                (12)
4392            </div>
4393            </div>
4394
4395    
4395<script>
4396        'use strict';
4397
4398        function initRating132856ac9239255868() {
4399            return {
4400                get reviewsSection() {
4401                    return document.getElementById('customer-review-list')
4402                        || document.getElementById('customer-reviews')
4403                        || document.getElementById('review-form');
4404                },
4405                scrollToRatings() {
4406                    let scrollTimeout = null
4407
4408                    if (!this.reviewsSection) {
4409                        return
4410                    }
4411
4412                    addEventListener('scroll', () => {
4413                        clearTimeout(scrollTimeout);
4414
4415                        scrollTimeout = setTimeout(() => {
4416                            if (this.reviewsSection) {
4417                                this.reviewsSection.focus()
4418                            }
4419                        }, 50);
4420                    }, { once: true });
4421
4422                    this.reviewsSection.scrollIntoView({behavior: 'smooth'})
4423                }
4424            }
4425        }
4426    </script>
4426
4427                </div>
4428            
4429                                        
4430            
4431            <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
4432            <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
4433                <template x-if="active = true">
4434                    <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode(13285)">
4435                        <template x-if="!$store.ajaxPrices.hasPrice(13285)">
4436                            <div class="skeleton w-16 lg:w-full h-6">
4437                                Caricamento...                            </div>
4438                        </template>
4439                        <template x-if="$store.ajaxPrices.hasPrice(13285)">
4440                            <span x-html="$store.ajaxPrices.getPriceHtml(13285)"></span>
4441                        </template>
4442                    </div>
4443                </template>
4444            </span>
4445
4446                                                            <button class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Posizione aggiungi al carrello">
4447                            <?xml version="1.0" encoding="UTF-8"?>
4448<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewbox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
4449                        </button>
4450                                                                                </div>
4451        </div>
4452        </form>
4453
4454                </div>
4455                            </div>
4456            
4457<div style="top: calc(50% - 24px);" class="swiper-button-prev left-9 w-12 h-12 rounded-full group/button bg-white/90 hover:bg-white hidden opacity-0 md:group-hover:opacity-100 md:flex shadow-lg shadow-black/30 transition-all">
4458    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="m-auto group-hover/button:!stroke-primary" width="20" height="20" role="img">
4459  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
4460<title>chevron-left</title></svg>
4461</div>
4462<div style="top: calc(50% - 24px);" class="swiper-button-next right-9 w-12 h-12 rounded-full group/button bg-white/90 hover:bg-white hidden hover:!stroke-primary opacity-0 md:group-hover:opacity-100 md:flex shadow-lg shadow-black/30 transition-all">
4463    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="m-auto group-hover/button:!stroke-primary" width="20" height="20" role="img">
4464  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
4465<title>chevron-right</title></svg>
4466</div>
4467<div class="relative md:opacity-0 md:pointer-events-none swiper-pagination dark-bullets mt-6 flex-wrap gap-y-1"></div>
4468        </div>
4469    </div></div></div></div></div>
4470</div>
4471<script src="https://cdn.scalapay.com/widget/scalapay-widget-loader.js" type="module"></script>
4471
4472
4473<script>
4474        window.addEventListener('cart-loading-start', (event) => {
4475            const banners = document.querySelectorAll('.banners-wrapper');
4476            window.bannersHtml = Array.from(banners).map(banner => banner.innerHTML);
4477        });
4478
4479        window.addEventListener('cart-loading-stop', (event) => {
4480            const banners = document.querySelectorAll('.banners-wrapper');
4481            banners.forEach((banner, index) => {
4482                if (window.bannersHtml && window.bannersHtml[index]) {
4483                    banner.innerHTML = window.bannersHtml[index];
4484                }
4485            });
4486            Clerk('content', '.clerk');
4487        });
4488</script>
vendor: 1 bytes, line 4488
4488
4489<script>
4490    function hasWebP() {
4491        var elem = document.createElement('canvas');
4492
4493        if (!!(elem.getContext && elem.getContext('2d'))) {
4494            return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0;
4495        }
4496        return false;
4497    }
4498
4499    if (hasWebP()) {
4500        document.body.classList.add("webp");
4501    } else {
4502        document.body.classList.add("no-webp");
4503    }
4504</script>
4504
4505
4506
4507
4508
4509</div></div></main><footer class="page-footer mt-auto">
4510                                    <div x-data="{ show: false }"  x-intersect.once.margin.200px="show = true" x-init="$watch('show', (value) => { if (value) { $nextTick(() => { $dispatch('footer:added') }); } } )" class="dna-footer-item " id="dna-footer-item_footer">
4511                 <template x-if="show">
4512                                 <div class="dna-footer-item-content">
4513                         <div data-content-type="html" data-appearance="default" data-intersect="false" data-element="main" data-decoded="true"><div class="bg-container-gray">
4514    <div class="py-5 md:pt-10 md:pb-8 container">
4515        <div class="md:grid col-span-7 grid-cols-4 gap-4">
4516            <div class="overflow-hidden">
4517                <h5 class="font-bold md:pb-4 pt-2 pb-3 md:pt-0 font-baloo-bhaina">Servizi Offerti</h5>
4518
4519                <ul class="md:h-auto mb-4">
4520                    <li class="mb-3"><p href="#" class="text-xs md:text-base flex gap-2 items-center">
4521                        <img class='w-5 h-5' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_discount.svg" alt="discount" />Tantissimi Sconti</p></li>
4522                    <li class="mb-3"><p href="#" class="text-xs md:text-base flex gap-2 items-center">
4523                        <img class='w-5 h-5' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_lock.svg" alt="lock" />Transazione Sicura</p></li>
4524                    <li class="mb-3"><p href="#" class="text-xs md:text-base flex gap-2 items-center">
4525                        <img class='w-5 h-5' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_return.svg" alt="return" />Reso Facile e Veloce</p></li>
4526                    <li><p href="#" class="text-xs md:text-base flex gap-2 items-center">
4527                        <img class='w-5 h-5' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_shield.svg" alt="shield" />Garanzia</p></li>
4528                </ul>
4529            </div>
4530
4531            <div class="max-w-60">
4532                <h5 class="font-bold md:pb-4 pb-3 pt-3 md:pt-0 font-baloo-bhaina">Pagamenti Veloci & Sicuri</h5>
4533
4534                <div class="mb-4 flex gap-1.5 md:gap-2 flex-wrap">
4535                    <img title="Visa" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/visa.svg" alt="visa" />
4536                    <img title="PayPal" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/paypal.svg" alt="PayPal" />
4537                    <img title="Mastercard" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/mastercard.svg" alt="Mastercard" />
4538                    <img title="Maestro" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/maestro.svg" alt="Maestro" />
4539                    <img title="Discover" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/discover.svg" alt="Discover" />
4540                    <img title="Amex" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/amex.svg" alt="Amex" />
4541                    <img title="Amex" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/klarna.svg" alt="Klarna" />
4542                    <img title="Satispay" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/satispay.svg" alt="Satispay" />
4543                    <img title="Contrassegno" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/contrassegno.svg" alt="Contrassegno" />
4544                    <img title="Bonifico" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/payment/bonifico.svg" alt="Bonifico" />
4545                    <img title="Google Pay" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/media/wysiwyg/Google_Pay_Logo_Orlandi.svg" alt="Google Pay"/>
4546                    <img title="Apple Pay" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/media/wysiwyg/Apple_Pay_logo_Orlandi.svg" alt="Apple Pay"/>
4547                </div>
4548            </div>
4549
4550            <div class="overflow-hidden max-w-60">
4551                <h5 class="font-bold md:pb-4 pb-3 pt-3 md:pt-0 font-baloo-bhaina">Consegna Gratuita in 24/72h</h5>
4552
4553                <div class="mb-4 flex gap-1.5 md:gap-2">
4554                    <img title="GLS" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/carrier/gls.svg" alt="GLS" />
4555                    <img title="UPS" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/carrier/ups.svg" alt="UPS" />
4556<!-- <img title="Liccardi" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/media/wysiwyg/liccardi_orlandi.svg" alt="Liccardi"/> -->
4557<img title="InPost" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/media/wysiwyg/inpost_orlandi.svg" alt="InPost"/>
4558<!-- <img title="Amazon Shipping" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/media/wysiwyg/amazon-shipping_orlandi.svg" alt="Amazon Shipping"/> -->
4559                </div>
4560            </div>
4561
4562            <div>
4563                <div>
4564                    <h5 class="font-bold md:pb-4 pb-3 pt-3 md:pt-0 font-baloo-bhaina">Sito sicuro</h5>
4565                </div>
4566
4567               <!-- here need feedaty widget -->
4568                <div class="gap-4 mb-4 md:mb-9 md:flex">
4569                    <div class="feedaty_widget" data-ver="2021" data-id="65d4990ccab7d" data-type="merchant" data-variant="200x150-4" data-lang="all" data-gui="all"></div>
4570                </div>
4571            </div>
4572        </div>
4573    </div>
4574</div>
4575
4576<script>
4577if(typeof FeedatyWidget !== 'undefined') {
4578FeedatyWidget.init();
4579}
4580</script>
4580</div>                     </div>
4581                             </template>
4582            </div>
4583                <div class="footer content">
4583<script>
4584    'use strict';
4585
4586    function amBrandsPopup() {
4587        let cached = false;
4588
4589        const displayError = (error) => {
4590            console.error(error);
4591            typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
4592                [{
4593                    type: "error",
4594                    text: "Qualcosa\u0020\u00E8\u0020andato\u0020storto.\u0020Riprova\u0020di\u0020nuovo."
4595                }], 10000
4596            );
4597        };
4598
4599        let letters = [
4600            "A","B","C","D",
4601            "E","F","G","H","I","J","K","L","M",
4602            "N","O","P","Q","R","S","T","U","V","W","X","Y","Z","#"
4603        ];
4604
4605        return {
4606            hoverPanelActiveId: null,
4607            selectedLetter: null,
4608            items: [],
4609            letters: [],
4610            showCount: null,
4611            showFilter: null,
4612            showImages: true,
4613            showSearch: null,
4614            loading: false,
4615            label: 'Brands',
4616            isPopupEnabled: false,
4617            isTopMenuItemEnabled: false,
4618            cache: false,
4619            isMobile: false,
4620
4621            initErrorMessages(errors) {
4622                const messages = [];
4623                for (let error in Object.keys(errors)) {
4624                    messages.push({type: 'error', text: errors[error].message});
4625                }
4626                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(messages, 10000);
4627            },
4628
4629            chooseLetter(letter) {
4630                this.selectedLetter = this.selectedLetter === letter ? null : letter;
4631            },
4632
4633            getQuery() {
4634                return "query BrandsPopupQuery { ambrandlist(\n                    showCount: true\n                    displayZero: true\n                  ) {\n                    all_letters,\n                    items {\n                      alt\n                      brandId\n                      cnt\n                      image\n                      img\n                      label\n                      letter\n                      url\n                    }\n                  }\n                  storeConfig {\n                    amshopby_brand_general_brands_brands_popup,\n                    amshopby_brand_general_menu_item_label,\n                    amshopby_brand_general_brands_page,\n                    amshopby_brand_general_topmenu_enabled,\n                    amshopby_brand_general_brands_popup_config {\n                      show_images,\n                      display_zero,\n                      filter_display_all,\n                      image_width,\n                      image_height,\n                      show_filter,\n                      show_count\n                    }\n                  } }"            },
4635
4636            /**
4637             * Retrieve media url for given path
4638             *
4639             * @param path
4640             * @returns {string}
4641             */
4642            getMediaUrl(path) {
4643                const baseUrl = BASE_URL.replace('index.php/', '');
4644                if (path.includes('://')) {
4645                    return path;
4646                }
4647
4648                let productImageUrl = `${baseUrl}${path}`;
4649                const regexDuplicateDomain = new RegExp(`^(https?:\/\/[^/]+).*\\1`);
4650                productImageUrl = productImageUrl.replace(regexDuplicateDomain, '$1');
4651
4652                return productImageUrl.includes('/product/placeholder/')
4653                    ? productImageUrl.replace(/\/media(?=\/static)/, '')
4654                    : productImageUrl;
4655            },
4656
4657            checkIsMobileResolution() {
4658                this.isMobile = window.matchMedia('(max-width: 1023px)').matches;
4659            },
4660
4661            getBrandUrl(url){
4662                return BASE_URL + url;
4663            },
4664
4665            init() {
4666                this.checkIsMobileResolution();
4667
4668                                    this.$watch('hoverPanelActiveId', (value) => {
4669                        if (value === 'am-brand') {
4670                            this.sendRequest();
4671                        }
4672                    });
4673                            },
4674
4675            /**
4676             * Get brands by letter
4677             *
4678             * @param result
4679             * @returns {{imageWidth: *, isTopMenuItemEnabled: *, showCount: *, displayAll: *, showFilter: *, showImages: *, isPopupEnabled: *, label: *, imageHeight: *, filterDisplayAll: *, brandsPage: *}}
4680             */
4681            settingsMapper(result) {
4682                const config = result.data.storeConfig?.amshopby_brand_general_brands_popup_config;
4683                return {
4684                    showImages: config.show_images,
4685                    showCount: config.show_count,
4686                    showFilter: config.show_filter,
4687                    imageWidth: config.image_width,
4688                    imageHeight: config.image_height,
4689                    filterDisplayAll: config.filter_display_all,
4690                    displayAll: config.display_zero,
4691                    isPopupEnabled: result.data.storeConfig?.amshopby_brand_general_brands_brands_popup,
4692                    label: result.data.storeConfig?.amshopby_brand_general_menu_item_label,
4693                    isTopMenuItemEnabled: result.data.storeConfig?.amshopby_brand_general_topmenu_enabled,
4694                    brandsPage: result.data.storeConfig?.amshopby_brand_general_brands_page,
4695                }
4696            },
4697
4698            /**
4699             * Send request to graphql
4700             *
4701             * @returns {Promise<any>}
4702             */
4703            async sendRequest() {
4704                if (this.isMobile) {
4705                    return false;
4706                }
4707
4708                this.loading = true;
4709
4710                try {
4711                    if (cached) {
4712                        this.loading = false;
4713                        return false;
4714                    }
4715
4716                    const response = await fetch('https://www.farma.it/graphql', {
4717                        method: 'POST',
4718                        headers: {
4719                            'Content-Type': 'application/json',
4720                            'Store': 'default'
4721                        },
4722                        credentials: 'include',
4723                        body: JSON.stringify({query: this.getQuery(), variables: {}})
4724                    });
4725
4726                    const result = await response.json();
4727
4728                    if (result?.errors) {
4729                        this.initErrorMessages(result.errors);
4730                        return;
4731                    }
4732
4733                    const data = result.data?.ambrandlist;
4734                    const mapper = this.settingsMapper(result);
4735
4736                    // Update component settings
4737                    Object.keys(mapper).forEach(config => {
4738                        this[config] = mapper[config];
4739                    });
4740
4741                    if (!this.filterDisplayAll) {
4742                        letters = data.all_letters.split(',');
4743                    }
4744
4745                    const items = data.items.map(brand => {
4746                        brand.image = brand.img
4747                            ? this.getMediaUrl(brand.img) : (brand.image ? this.getMediaUrl(brand.image) : null);
4748                        return brand;
4749                    });
4750
4751                    this.letters = letters.map(letter => ({
4752                        letter,
4753                        brands: this.getLetterItems(items, letter),
4754                    }));
4755
4756                    this.items = this.letters.filter(row => row.brands?.length > 0);
4757
4758                    cached = true;
4759                } catch (error) {
4760                    displayError(error);
4761                } finally {
4762                    this.loading = false;
4763                }
4764            },
4765
4766            /**
4767             * Get brands by letter
4768             *
4769             * @param items
4770             * @param letter
4771             * @returns {*}
4772             */
4773            getLetterItems(items, letter) {
4774                return items.filter(row => row.letter === letter);
4775            },
4776
4777            convertHtml(text) {
4778                let textField = document.createElement("textarea");
4779                textField.innerHTML = text;
4780                return textField.value;
4781            }
4782        }
4783    }
4784    
4785    function amBrandsPopupData() {
4786        return Object.assign(
4787            amBrandsPopup(),
4788            {
4789                brandPopupClass() {
4790                    return {
4791                        'hover:border-primary data-[active]:border-primary': !this.isPopupEnabled
4792                    }
4793                },
4794                labelPopupClass() {
4795                    return {'w-14 opacity-0': this.label === ''}
4796                },
4797                popupcontentClass() {
4798                    return {
4799                        'hidden' : this.hoverPanelActiveId !== 'am-brand',
4800                        'left-0' : `${this.$el.dataset.first}`,
4801                        'right-0' : `${this.$el.dataset.last}`
4802                    }
4803                },
4804                panelActiveMouseenterEvent() {
4805                    return this.hoverPanelActiveId = 'am-brand'
4806                },
4807                panelActiveMouseleaveEvent() {
4808                    return this.hoverPanelActiveId = null
4809                },
4810                isPopupShow() {
4811                    return this.hoverPanelActiveId === 'am-brand'
4812                },
4813                labelText(){
4814                    return this.label
4815                },
4816                isEnabledPopup(){
4817                    return this.isPopupEnabled
4818                },
4819                showExtMessage(){
4820                    return false
4821                },
4822                notLoading() {
4823                    return !this.loading
4824                },
4825                brandLabel() {
4826                    return this.brand.label
4827                },
4828                letterClass() {
4829                    return {
4830                        'border-blue-400 text-blue-400 bg-blue-100': this.selectedLetter === this.letter.letter,
4831                        'bg-gray-200 text-gray-700 cursor-default pointer-events-none': !this.letter.brands || this.letter.brands.length === 0
4832                    }
4833                },
4834                letterClickEvent(event) {
4835                    return this.chooseLetter(this.letter.letter)
4836                },
4837                letterBrands() {
4838                    return this.letter.brands
4839                },
4840                brandUrl() {
4841                    return this.getBrandUrl(this.brand.url)
4842                },
4843                brandImage() {
4844                    return this.brand.image
4845                },
4846                notBrandImage() {
4847                    return !this.brand.image
4848                },
4849                letterLetter() {
4850                    return this.letter.letter
4851                },
4852                brandBrandId() {
4853                    return this.brand.brandId
4854                },
4855                isLetterShow() {
4856                    return !this.selectedLetter || this.selectedLetter === this.letter.letter
4857                },
4858                brandImageMediaUrl() {
4859                    return this.getMediaUrl(this.brand.image)
4860                },
4861                brandImageStyle() {
4862                    return `max-width: ${this.imageWidth ? this.imageWidth + 'px' : '100px' };max-height: ${this.imageHeight ? this.imageHeight + 'px' : 'inherit'}`
4863                },
4864                brandsLabelStyle() {
4865                    return `min-width: ${this.imageWidth}px`
4866                },
4867                brandLabelFilter() {
4868                    return this.brand.label.charAt(0)
4869                },
4870                brandCnt() {
4871                    return '(' + this.brand.cnt + ')'
4872                }
4873            }
4874        )
4875    }
4876    window.addEventListener('alpine:init', () => Alpine.data('amBrandsPopupData', amBrandsPopupData), {once: true});
4877</script>
4877
4878</div><div class="after-footer footer content">
4879                                    <div x-data="{ show: false }"  x-intersect.once.margin.200px="show = true" x-init="$watch('show', (value) => { if (value) { $nextTick(() => { $dispatch('footer:added') }); } } )" class="dna-footer-item " id="dna-footer-item_after_footer">
4880                 <template x-if="show">
4881                                 <div class="dna-footer-item-content">
4882                         <div data-content-type="html" data-appearance="default" data-intersect="false" data-element="main" data-decoded="true"><div class="bg-quaternary pb-6 pt-5">
4883    <div class="md:flex justify-between text-white container lg:grid grid-cols-8">
4884        <div class="flex items-center order-2 col-span-2 mb-4 md:mb-0 w-60 socials">
4885            <h5 class="font-bold font-baloo-bhaina text-white">Seguici su</h5>
4886            <a target="_blank" href="https://www.instagram.com/farma.it/" class="ml-4">
4887                <img title="instagram" class='w-5 h-5' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/social/instagram.svg" alt="instagram" />
4888            </a>
4889            <a target="_blank" href="https://www.facebook.com/farmapuntoit" class="ml-4">
4890                <img title="Facebook" class='w-5 h-5' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/social/facebook.svg" alt="Facebook" />
4891            </a>
4892        </div>
4893        <div class="col-span-6">
4894            <p class="text-xxs mt-2 mb-2 md:flex font-normal leading-5 md:text-xs">Farma.it S.a.s. P. IVA 07417261216  REA: NA-884088 <br class="sm:hidden">
4895                <span class="flex gap-1.5"><span class="hidden md:block">&nbsp;&nbsp;-</span>CREDITS &nbsp;
4896                 <a href="https://www.dnafactory.it/" target="_blank" title="DNA Factory">
4897                    <img title="DNAFactory" class='w-28 h-5' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/dnafactory_logo_negativo.svg" alt="DNAFactory" />
4898                 </a>
4899                </span>
4900            </p>
4901
4902            <p class="text-xxs md:text-xs">Sede legale Via delle Repubbliche Marinare 128, 80147 Napoli </br>
4903Vendita online di medicinali senza obbligo di prescrizione effettuata tramite esercizio autorizzato dal Ministero della Salute – Codice identificativo n. 016715</p>
4904        </div>
4905    </div>
4906</div></div>                     </div>
4907                             </template>
4908            </div>
4909                </div></footer>
4910<script>
4911    function amBannerInjectorResolver () {
4912        const injectors = Object.values({"products.among.injector":{"position":14,"name":"amBannerAmongCategoryInjector"},"products.belowcart.injector":{"position":15,"name":"amBannerBelowCartInjector"}});
4913
4914        return {
4915            amBannerAmongCategoryInjector: function (sectionId, injectorParams) {
4916                const container = document.querySelector('[data-role="amasty-banner-container"][data-position="' + sectionId + '"]');
4917
4918                Object.keys(injectorParams.banners).map((id) => {
4919                    const params = injectorParams.banners[id];
4920                    const element = container.querySelector('[data-banner-id="' + id + '"]');
4921                    insertBannerAmongCategoryByConfig({
4922                        containerSelector: injectorParams.containerSelector,
4923                        itemSelector: injectorParams.itemSelector,
4924                        afterProductRow: params.afterProductRow,
4925                        afterProductNum: params.afterProductNum,
4926                        span: params.width
4927                    }, element);
4928                });
4929
4930                function insertBannerAmongCategoryByConfig (injectorConfig, element) {
4931                    const options = {
4932                        injectorConfig: {},
4933                        container: null,
4934                        after: null,
4935                        wrapper: null,
4936                        initialized: false,
4937                        gridSizes: ['sm', 'xl'],
4938                        bannerWidthClass: 'col-span',
4939                        ...injectorConfig
4940                    }
4941
4942                    insertBanner(element);
4943
4944                    function insertBanner(element) {
4945                        const initialized = setOptions();
4946
4947                        if (!initialized) {
4948                            return;
4949                        }
4950
4951                        element.classList.add('ambanners-injected-banner');
4952                        const wrapper = options.wrapper.cloneNode(true);
4953
4954                        wrapper.classList.remove('card', 'card-interactive');
4955                        addStylesForDifferentSizes(wrapper);
4956
4957                        insertWrapper(wrapper);
4958                        wrapper.append(element);
4959                    }
4960
4961                    function setOptions () {
4962                        const initialized = document.querySelector(options.containerSelector) !== null;
4963
4964                        if (!initialized) {
4965                            console.warn(
4966                                'Failed to initialize banner: Can\'t find an element with selector "' + options.containerSelector + '"'
4967                            );
4968
4969                            return;
4970                        }
4971
4972                        options.container = document.querySelector(options.containerSelector);
4973
4974                        setLineToInject();
4975
4976                        if (!options.after) {
4977                            return;
4978                        }
4979
4980                        setWrapper();
4981
4982                        return true;
4983                    }
4984
4985                    function setLineToInject() {
4986                        if (options.afterProductNum === -1) {
4987                            setFirstLineToInject();
4988                        } else {
4989                            setLineByPositionToInject();
4990                        }
4991                    }
4992
4993                    function setWrapper() {
4994                        if (options.after) {
4995                            options.wrapper = options.after.cloneNode();
4996                        }
4997                    }
4998
4999                    function setFirstLineToInject() {
5000                        options.after = document.querySelector(options.itemSelector);
5001                    }
5002
5003                    function setLineByPositionToInject() {
5004                        // calc banner insert offset
5005                        const offset = calculateOffsetBasedOnPreviousBanners();
5006
5007                        options.after = document.querySelectorAll(options.itemSelector)[options.afterProductNum - offset];
5008                    }
5009
5010                    function calculateOffsetBasedOnPreviousBanners () {
5011                        return [...document.querySelectorAll(`${options.itemSelector}`)]
5012                            ?.reduce((accumulator, amInjectedBannerWrapper) => {
5013                                const widthAttributeValue = Number(amInjectedBannerWrapper?.getAttribute('am-banner-span'))
5014
5015                                if (widthAttributeValue > 1) {
5016                                    accumulator += (widthAttributeValue - 1);
5017                                }
5018
5019                                return accumulator;
5020                            }, 0);
5021                    }
5022
5023                    function insertWrapper(insert) {
5024                        if (options.after) {
5025                            insertWrapperAfterFoundProduct(insert);
5026                        } else if (options.container) {
5027                            insertWrapperInProductListContainer(insert);
5028                        }
5029                    }
5030
5031                    function insertWrapperAfterFoundProduct(insert) {
5032                        if (options.afterProductNum === -1) {
5033                            options.after.parentNode.insertBefore(insert, options.after);
5034                        } else {
5035                            options.after.parentNode.insertBefore(insert, options.after.nextSibling);
5036                        }
5037                    }
5038
5039                    function insertWrapperInProductListContainer(insert) {
5040                        if (parseInt(options.afterProductRow) > 1) {
5041                            options.container.innerHTML += insert.innerHTML;
5042                        } else {
5043                            options.container.innerHTML = insert.innerHTML + options.container.innerHTML;
5044                        }
5045                    }
5046
5047                    function addStylesForDifferentSizes (wrapper) {
5048                        options.gridSizes?.forEach((size, index) => {
5049                            const widthValue = options.span > index + 1 ? index + 2 : options.span;
5050                            wrapper?.classList.add(`${size}:${options.bannerWidthClass}-${widthValue}`);
5051                            wrapper?.setAttribute('am-banner-span', widthValue);
5052                        });
5053                    }
5054                }
5055            },
5056
5057            amBannerBelowCartInjector: function (sectionId) {
5058                const belowProductAddToCartBanner = document.querySelector('.ambanners.ambanner-' + sectionId);
5059                belowProductAddToCartBanner.style.display = 'block';
5060                document.querySelectorAll('.product-item')?.forEach(product => {
5061                    product?.append(belowProductAddToCartBanner.cloneNode(true));
5062                });
5063                belowProductAddToCartBanner.style.display = 'none';
5064            },
5065
5066            resolve: function (position, injectorParams) {
5067                const injector = injectors.find((injector) => {
5068                    return injector.position === Number(position);
5069                });
5070
5071                return this[injector?.name]?.(position, injectorParams);
5072            }
5073        }
5074    }
5075</script>
5075
5076    
5076<script>
5077        (function () {
5078            var metaPixelData = {
5079                "url" : "https://www.farma.it/fbe/pixel/tracker/",
5080                "payload": {"eventName":"facebook_businessextension_ssapi_add_to_wishlist"},
5081                "browserEventData": {"fbAgentVersion":"magento_opensource-0.0.0-1.6.4","fbPixelId":"512468414859242","source":"magento_opensource","pluginVersion":"1.6.4","track":"track","event":"AddToWishlist","payload":{"currency":"eur"}}            };
5082
5083            let payload = null,
5084                cookieName = 'event_add_to_wishlist',
5085                currency = '',
5086                eventName = '';
5087
5088            currency = metaPixelData.browserEventData.payload.currency;
5089            eventName = metaPixelData.payload.eventName;
5090
5091            function isPayloadAvailable()
5092            {
5093                payload = metaGetCookie(cookieName);
5094                if (payload === "null") {
5095                    payload = null;
5096                }
5097
5098                if (payload !== null) {
5099                    payload = metaParseJson(payload);
5100                    return true;
5101                }
5102                return false;
5103            }
5104
5105            if (isPayloadAvailable()) {
5106                metaPixelData.browserEventData.payload = payload;
5107                metaPixelData.browserEventData.payload.currency = currency;
5108
5109                metaPixelData.payload = payload;
5110                metaPixelData.payload.currency = currency;
5111                metaPixelData.payload.eventName = eventName;
5112
5113                metaPixelTracker(metaPixelData);
5114                metaDelCookie(cookieName);
5115            }
5116        })();
5117    </script>
5117
5118    <span class="data-fbq-success" data-fbq-success="true"></span>
5119
5120<div x-data="{...hyva.modal(), ...initAmGdprPolicyPopup()}" x-init="initGdprPopup()"
5121     x-spread="eventListeners" x-bind="eventListeners">
5122    <div x-cloak x-spread="overlay('amgdpr-policy-popup')" x-bind="overlay('amgdpr-policy-popup')"
5123         class="fixed inset-0 flex items-center justify-center text-left bg-black bg-opacity-50 z-40">
5124        <div x-ref="amgdpr-policy-popup" role="dialog" aria-labelledby="amgdpr-policy-content"
5125             class="flex flex-col  bg-white shadow-xl rounded-lg p-10 max-h-[95vh] max-w-6xl relative">
5126            <button @click="$dispatch('amgdpr-close-policy')" aria-label="Chiudi"
5127                    class="absolute right-4 top-4 text-gray-300 transition
5128                    hover:text-black focus:drop-shadow-md hover:drop-shadow-md">
5129                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-6 w-6" width="24" height="24" role="img">
5130  <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/>
5131<title>x</title></svg>
5132            </button>
5133            <div class="flex w-full">
5134                <p class="w-full text-3xl mb-5" x-text="title"></p>
5135            </div>
5136            <div x-show="notificationText && policyData.versionChanged" class="flex w-full">
5137                <p class="mb-4 p-4 bg-yellow-100 w-full" x-text="notificationText"></p>
5138            </div>
5139            <div id="amgdpr-policy-content" class="max-h-[500px] overflow-auto first:mx-0 child:mx-0"
5140                 x-html="policyText"></div>
5141            <div class="mt-8 flex w-full justify-center">
5142                <button x-focus-first @click="$dispatch('amgdpr-accept-policy')" type="button"
5143                        class="btn btn-primary font-bold"
5144                        aria-label="Ho&#x20;letto&#x20;e&#x20;Acconsento">
5145                    Ho letto e Acconsento                </button>
5146            </div>
5147        </div>
5148
5149    </div>
5150</div>
5151
5152<script>
5153    'use strict';
5154
5155    function initAmGdprPolicyPopup() {
5156        return {
5157            /**
5158             * @typedef PolicyData
5159             * @property {string} policyVersion
5160             * @property {boolean} show
5161             * @property {string} title
5162             * @property{boolean} versionChanged
5163             * @property {boolean} hideClose
5164             * @property {boolean} action
5165             */
5166
5167            eventListeners: {
5168                ['@amgdpr-accept-policy']() {
5169                    if (this.consentId) {
5170                        window.dispatchEvent(new CustomEvent('amgdpr-consent-accepted', {detail: this.consentId}));
5171                        this.consentId = undefined;
5172                        this.hide('amgdpr-policy-popup');
5173                    } else {
5174                        this.acceptPolicy();
5175                    }
5176                },
5177                ['@amgdpr-show-policy.window'](event) {
5178                    this.consentId = event.detail;
5179                    this.fetchPolicyContent().then(() => {
5180                        this.$nextTick(() => {
5181                            this.show('amgdpr-policy-popup');
5182                        });
5183                    });
5184                },
5185                ['@amgdpr-close-policy']() {
5186                    this.hide('amgdpr-policy-popup');
5187                }
5188            },
5189            textUrl: `${BASE_URL}gdpr/policy/policytext`,
5190            acceptUrl: `${BASE_URL}gdpr/policy/accept`,
5191            popupDataUrl: `${BASE_URL}gdpr/policy/popupData`,
5192            notificationText: 'We would like to inform you that our Privacy Policy has been amended.Please, read and accept the new terms.',
5193            showOnPageLoad: '',
5194            /**
5195             * @type PolicyData
5196             */
5197            policyData: {
5198                policyVersion: '',
5199                show: false,
5200                title: '',
5201                versionChanged: false,
5202                hideClose: false,
5203                action: true
5204            },
5205            title: '',
5206            policyText: '',
5207            consentId: undefined,
5208            initGdprPopup: function () {
5209                this.fetchPolicyData().then(() => {
5210                    if ((this.showOnPageLoad && this.policyData.show) || this.policyData.versionChanged) {
5211                        this.fetchPolicyContent().then(() => {
5212                            this.$nextTick(() => {
5213                                this.show('amgdpr-policy-popup');
5214                            });
5215                        });
5216                    }
5217                });
5218            },
5219
5220            /**
5221             * @returns {Promise}
5222             */
5223            fetchPolicyData: function () {
5224                return fetch(this.popupDataUrl)
5225                    .then(response => response.json())
5226                    .then((data) => {
5227                        this.policyData = {...data}
5228                    })
5229                    .catch(error => this.dispatchErrorMessage(error));
5230            },
5231
5232            /**
5233             * @returns {Promise}
5234             */
5235            fetchPolicyContent: function () {
5236                this.title = '';
5237                this.policyText = '';
5238
5239                const params = !!this.consentId
5240                    ? '?' + new URLSearchParams({consent_id: this.consentId})
5241                    : ''
5242
5243                return fetch(this.textUrl + params)
5244                    .then(response => response.json())
5245                    .then(policyContent => {
5246                        this.title = policyContent.title;
5247                        this.policyText = policyContent.content;
5248                    }).catch(error => this.dispatchErrorMessage(error));
5249            },
5250
5251            /**
5252             * @returns {void}
5253             */
5254            acceptPolicy: function () {
5255                window.dispatchEvent(new Event('amgdpr-loading-start'));
5256
5257                const body = new URLSearchParams({form_key: hyva.getFormKey(), ...this.policyData});
5258                const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
5259
5260                fetch(this.acceptUrl, {method: 'POST', body, headers: {'Content-Type': contentType}})
5261                    .then(response => response.json())
5262                    .then(data => {
5263                        if (data.error) {
5264                            this.dispatchErrorMessage(data.message)
5265                        } else {
5266                            this.notificationText = '';
5267                            this.hide('amgdpr-policy-popup');
5268                        }
5269                    })
5270                    .catch(error => this.dispatchErrorMessage(error))
5271                    .finally(() => window.dispatchEvent(new Event('amgdpr-loading-stop')));
5272            },
5273
5274            /**
5275             * @param {string} message
5276             * @returns {void}
5277             */
5278            dispatchErrorMessage: function (message) {
5279                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
5280                    {
5281                        type: "error",
5282                        text: message
5283                    }
5284                ]);
5285            }
5286        }
5287    }
5288</script>
5288
5289
5290
5291
5292
5293<script>
5294    function initFakeBrothers() {
5295        return {
5296            selected: 0,
5297            productId: 0,
5298            data: [],
5299            skeletonCount: 0,
5300            fetched: false,
5301            ajaxUrl: 'https://www.farma.it/fakeconfigurable/product/getBrothers/',
5302            showAttribute: false,
5303            attributeLabel: 'Color',
5304            optionDisplay: null,
5305            responsive: false,
5306            responsiveData: {
5307                children: [],
5308                childrenLenght: 0,
5309                itemSize: 0,
5310                itemOffset: 0,
5311                childrenSize: 0,
5312                boxSize: 0,
5313                hiddenCount: 0
5314            },
5315            init() {
5316                // Skeleton init
5317                if (this.skeletonCount) {
5318                    this.data = Array.from({length: this.skeletonCount}, () => ({}));
5319                }
5320                // Responsive init
5321                this.$nextTick(() => {
5322                    if (this.responsive && this.data.length) {
5323                        this.initResponsive();
5324                    }
5325                });
5326                // Brothers init
5327                if (this.productId) {
5328                    fetch(this.ajaxUrl + '?productId=' + this.productId)
5329                        .then(response => {
5330                            if (! response.ok) console.warn('GET request failed');
5331                            return response.json()
5332                        })
5333                        .then(result => {
5334                            if (this.showAttribute) {
5335                                result.data.forEach(function (item, index) {
5336                                    if (item.attribute == false) {
5337                                        result.data[index].attribute = '';
5338                                    }
5339                                });
5340                            }
5341                            this.data = result.data;
5342                            this.fetched = true;
5343                            // Attribute init
5344                            this.$nextTick(() => {
5345                                if (this.showAttribute) {
5346                                    // Siccome "x-ref" non funziona dentro gli elementi "template" devo usare "querySelector"
5347                                    this.optionDisplay = document.querySelector('[x-ref="optionDisplay"]');
5348                                    this.optionDisplay.innerText = this.data[0].attribute;
5349                                }
5350                            })
5351                        })
5352                        .catch(result => {
5353                            console.error(result.error);
5354                        })
5355                }
5356            },
5357            initResponsive() {
5358                this.responsiveData.children = this.$el.querySelectorAll('.brother');
5359                this.responsiveData.itemSize = this.responsiveData.children[0].offsetWidth + this.responsiveData.itemOffset;
5360                this.responsiveData.childrenLenght = this.responsiveData.children.length;
5361                this.responsiveData.childrenSize = this.responsiveData.childrenLenght * this.responsiveData.itemSize;
5362                this.calculateHiddenCount();
5363            },
5364            calculateHiddenCount() {
5365                if (this.responsive) {
5366                    this.responsiveData.boxSize = this.$el.offsetWidth;
5367
5368                    if (this.responsiveData.childrenSize > this.responsiveData.boxSize) {
5369                        this.responsiveData.hiddenCount =
5370                            Math.ceil((this.responsiveData.childrenSize - this.responsiveData.boxSize) / this.responsiveData.itemSize) + 1;
5371                    } else {
5372                        this.responsiveData.hiddenCount = 0;
5373                    }
5374                }
5375            },
5376            eventListeners: {
5377                ['@resize.window.debounce.50ms']() {
5378                    this.calculateHiddenCount();
5379                }
5380            }
5381        }
5382
5383    }
5384</script>
5384
5385<!-- Start Google Analytics 4 for Google Tag Manager by MagePal -->
5386        
5386<script type="text/javascript">
5387             (function() {
5388                window.addEventListener("private-content-loaded", event => {
5389                    const dataObject = event.detail.data['magepal-eegtm-jsdatalayer'] || {};
5390                    pushAddRemoveItemDataLayer(dataObject)
5391                });
5392
5393                const isObject = x => x === Object(x);
5394                const has = (x, p) => isObject(x) && x.hasOwnProperty(p);
5395                var itemListName = null;
5396                var itemListId = null;
5397
5398                function isEmpty(obj){
5399                    return JSON.stringify(obj) === '{}';
5400                }
5401
5402                function addDynamicElements(storedData, item) {
5403
5404                    if (has(storedData, 'index')) {
5405                        item.index = storedData.index;
5406                    }
5407
5408                    if (has(storedData, 'item_list_id')) {
5409                        item.item_list_id = itemListId = storedData.item_list_id;
5410                    }
5411
5412                    if (has(storedData, 'item_list_name')) {
5413                        item.item_list_name = itemListName = storedData.item_list_name;
5414                    }
5415                }
5416                /**
5417                 * Add click position/index to data
5418                 * @param ecommerceData
5419                 * @return {*}
5420                 */
5421                function processData(ecommerceData) {
5422                    var storedData = JSON.parse(window.localStorage.getItem("product-click-ga4"));
5423
5424                    ecommerceData.forEach((data) => {
5425                        if (has(data, 'parent_sku')
5426                            && isObject(storedData)
5427                            && has(storedData, 'item_id')
5428                            && data.parent_sku === storedData.item_id
5429                        ) {
5430                            addDynamicElements(storedData, data);
5431                        } else if (has(data, 'parent_sku')) {
5432                            var product = getProductBySku(data.parent_sku);
5433
5434                            if (product) {
5435                                addDynamicElements(product, data);
5436                            }
5437                        }
5438                    });
5439
5440                    return ecommerceData;
5441                }
5442
5443                 function getProductBySku(sku) {
5444                     var dlItems = window.dataLayer.find((item) => item?.ecommerce?.items)
5445
5446                     if (dlItems !== 'undefined') {
5447                         var dlItem = dlItems?.ecommerce?.items.find((item) => item.item_id === sku)
5448                         if (dlItem !== undefined) {
5449                             return dlItem;
5450                         }
5451                     }
5452
5453                     return false;
5454                 }
5455
5456                function pushAddRemoveItemDataLayer(data) {
5457                    if (isObject(data) && has(data, 'cart_items')) {
5458                        var ts = window.localStorage.getItem("magepal-eegtm-jsdatalayer-ts");
5459
5460                        if (ts !== 'undefined' && parseInt(ts) === parseInt(data.data_id)) {
5461                            return false;
5462                        } else {
5463                            window.localStorage.setItem("magepal-eegtm-jsdatalayer-ts", parseInt(data.data_id));
5464                        }
5465
5466                        var cartGenericLayer = {};
5467                        var dataLayer = window.dataLayer;
5468                        var self = this;
5469
5470                        data.cart_items.forEach((cartItem) =>  {
5471                            if (has(cartItem, 'event')) {
5472                                if (has(cartItem,'ecommerce')) {
5473                                    cartItem.ecommerce.currency = 'EUR';
5474                                }
5475
5476                                if (cartItem.event === 'add_to_cart') {
5477                                    var itemsAdded = processData(cartItem.ecommerce.items);
5478
5479                                    //$("body").trigger("mpGa4ItemAddToCart", [itemsAdded, dataLayer]);
5480                                    cartGenericLayer.add = {
5481                                        'products': itemsAdded
5482                                    };
5483                                }
5484
5485                                if (cartItem.event === 'remove_from_cart') {
5486                                    var itemsRemoved = processData(cartItem.ecommerce.items);
5487
5488                                    //$("body").trigger("mpGa4ItemRemoveFromCart", [itemsRemoved, dataLayer]);
5489                                    cartGenericLayer.remove = {
5490                                        'products': itemsRemoved
5491                                    };
5492                                }
5493                            }
5494
5495                            if (!isEmpty(cartGenericLayer)) {
5496                                cartItem.cart = cartGenericLayer;
5497                            }
5498                            cartItem._clear = true;
5499                            dataLayer.push(cartItem);
5500                        });
5501                    }
5502                }
5503            })();
5504        </script>
5504
5505    <!-- End Google Analytics 4 for Google Tag Manager by MagePal -->
5506
5507<script>
5508    document.addEventListener("alpine:initialized", () => {
5509        Alpine.store('dnafactoryGA4Promotions', {
5510            promotions: [{"creative_name":"Cemon 21092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Cemon 21092026 BannerCategory","promotion_name":"Cemon 21092026 BannerCategory","css_selector":"[title=\"Cemon 21092026 BannerCategory\"]"},{"creative_name":"Bioderma 21092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Bioderma 21092026 Sliderhomepage","promotion_name":"Bioderma 21092026 Sliderhomepage","css_selector":"[title=\"Bioderma 21092026 Sliderhomepage\"]"},{"creative_name":"Perrigo 21092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Perrigo 21092026 Sliderhomepage","promotion_name":"Perrigo 21092026 Sliderhomepage","css_selector":"[title=\"Perrigo 21092026 Sliderhomepage\"]"},{"creative_name":"Wala 21092026 BannerCarrello","creative_slot":"BannerCarrello","promotion_id":"Wala 21092026 BannerCarrello","promotion_name":"Wala 21092026 BannerCarrello","css_selector":"[title=\"Wala 21092026 BannerCarrello\"]"},{"creative_name":"Erbavita 22092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Erbavita 22092026 BannerCategory","promotion_name":"Erbavita 22092026 BannerCategory","css_selector":"[title=\"Erbavita 22092026 BannerCategory\"]"},{"creative_name":"Galderma 22092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Galderma 22092026 BannerCategory","promotion_name":"Galderma 22092026 BannerCategory","css_selector":"[title=\"Galderma 22092026 BannerCategory\"]"},{"creative_name":"Alfasigma 22092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Alfasigma 22092026 Sliderhomepage","promotion_name":"Alfasigma 22092026 Sliderhomepage","css_selector":"[title=\"Alfasigma 22092026 Sliderhomepage\"]"},{"creative_name":"Wala 23092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Wala 23092026 Sliderhomepage","promotion_name":"Wala 23092026 Sliderhomepage","css_selector":"[title=\"Wala 23092026 Sliderhomepage\"]"},{"creative_name":"Wala 23092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Wala 23092026 BannerCategory","promotion_name":"Wala 23092026 BannerCategory","css_selector":"[title=\"Wala 23092026 BannerCategory\"]"},{"creative_name":"Ganassini 23092026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Ganassini 23092026 BannerProductPage","promotion_name":"Ganassini 23092026 BannerProductPage","css_selector":"[title=\"Ganassini 23092026 BannerProductPage\"]"},{"creative_name":"Uriage 23092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Uriage 23092026 Sliderhomepage","promotion_name":"Uriage 23092026 Sliderhomepage","css_selector":"[title=\"Uriage 23092026 Sliderhomepage\"]"},{"creative_name":"Ibsa 23092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Ibsa 23092026 BannerCategory","promotion_name":"Ibsa 23092026 BannerCategory","css_selector":"[title=\"Ibsa 23092026 BannerCategory\"]"},{"creative_name":"Swisse 24092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Swisse 24092026 Sliderhomepage","promotion_name":"Swisse 24092026 Sliderhomepage","css_selector":"[title=\"Swisse 24092026 Sliderhomepage\"]"},{"creative_name":"Swisse 24092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Swisse 24092026 BannerCategory","promotion_name":"Swisse 24092026 BannerCategory","css_selector":"[title=\"Swisse 24092026 BannerCategory\"]"},{"creative_name":"Manetti 24092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Manetti 24092026 Sliderhomepage","promotion_name":"Manetti 24092026 Sliderhomepage","css_selector":"[title=\"Manetti 24092026 Sliderhomepage\"]"},{"creative_name":"Schwabe 24092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Schwabe 24092026 BannerCategory","promotion_name":"Schwabe 24092026 BannerCategory","css_selector":"[title=\"Schwabe 24092026 BannerCategory\"]"},{"creative_name":"Pharmalife 24092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Pharmalife 24092026 BannerCategory","promotion_name":"Pharmalife 24092026 BannerCategory","css_selector":"[title=\"Pharmalife 24092026 BannerCategory\"]"},{"creative_name":"Zeta 25092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Zeta 25092026 BannerCategory","promotion_name":"Zeta 25092026 BannerCategory","css_selector":"[title=\"Zeta 25092026 BannerCategory\"]"},{"creative_name":"Montefarmaco 25092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Montefarmaco 25092026 Sliderhomepage","promotion_name":"Montefarmaco 25092026 Sliderhomepage","css_selector":"[title=\"Montefarmaco 25092026 Sliderhomepage\"]"},{"creative_name":"Aboca 25092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Aboca 25092026 Sliderhomepage","promotion_name":"Aboca 25092026 Sliderhomepage","css_selector":"[title=\"Aboca 25092026 Sliderhomepage\"]"},{"creative_name":"Named 28092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Named 28092026 BannerCategory","promotion_name":"Named 28092026 BannerCategory","css_selector":"[title=\"Named 28092026 BannerCategory\"]"},{"creative_name":"Loreal 28092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Loreal 28092026 Sliderhomepage","promotion_name":"Loreal 28092026 Sliderhomepage","css_selector":"[title=\"Loreal 28092026 Sliderhomepage\"]"},{"creative_name":"Menarini 29092026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Menarini 29092026 BannerProductPage","promotion_name":"Menarini 29092026 BannerProductPage","css_selector":"[title=\"Menarini 29092026 BannerProductPage\"]"},{"creative_name":"Uniderm 29092026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Uniderm 29092026 BannerCategory","promotion_name":"Uniderm 29092026 BannerCategory","css_selector":"[title=\"Uniderm 29092026 BannerCategory\"]"},{"creative_name":"Prodeco 30092026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Prodeco 30092026 BannerProductPage","promotion_name":"Prodeco 30092026 BannerProductPage","css_selector":"[title=\"Prodeco 30092026 BannerProductPage\"]"},{"creative_name":"Alfasigma 30092026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Alfasigma 30092026 Sliderhomepage","promotion_name":"Alfasigma 30092026 Sliderhomepage","css_selector":"[title=\"Alfasigma 30092026 Sliderhomepage\"]"},{"creative_name":"Farmait 30092026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Farmait 30092026 BannerProductPage","promotion_name":"Farmait 30092026 BannerProductPage","css_selector":"[title=\"Farmait 30092026 BannerProductPage\"]"},{"creative_name":"farmait 01102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"farmait 01102026 Sliderhomepage","promotion_name":"farmait 01102026 Sliderhomepage","css_selector":"[title=\"farmait 01102026 Sliderhomepage\"]"},{"creative_name":"Farmait 01102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Farmait 01102026 BannerProductPage","promotion_name":"Farmait 01102026 BannerProductPage","css_selector":"[title=\"Farmait 01102026 BannerProductPage\"]"},{"creative_name":"Boiron 01102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Boiron 01102026 BannerProductPage","promotion_name":"Boiron 01102026 BannerProductPage","css_selector":"[title=\"Boiron 01102026 BannerProductPage\"]"},{"creative_name":"Boehringer 02102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Boehringer 02102026 BannerCategory","promotion_name":"Boehringer 02102026 BannerCategory","css_selector":"[title=\"Boehringer 02102026 BannerCategory\"]"},{"creative_name":"Boehringer 02102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Boehringer 02102026 Sliderhomepage","promotion_name":"Boehringer 02102026 Sliderhomepage","css_selector":"[title=\"Boehringer 02102026 Sliderhomepage\"]"},{"creative_name":"Haleon 02102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Haleon 02102026 BannerProductPage","promotion_name":"Haleon 02102026 BannerProductPage","css_selector":"[title=\"Haleon 02102026 BannerProductPage\"]"},{"creative_name":"Apivita 02102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Apivita 02102026 BannerCategory","promotion_name":"Apivita 02102026 BannerCategory","css_selector":"[title=\"Apivita 02102026 BannerCategory\"]"},{"creative_name":"Danone 02102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Danone 02102026 BannerCategory","promotion_name":"Danone 02102026 BannerCategory","css_selector":"[title=\"Danone 02102026 BannerCategory\"]"},{"creative_name":"Guna 02102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Guna 02102026 BannerCategory","promotion_name":"Guna 02102026 BannerCategory","css_selector":"[title=\"Guna 02102026 BannerCategory\"]"},{"creative_name":"Rilastil 02102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Rilastil 02102026 Sliderhomepage","promotion_name":"Rilastil 02102026 Sliderhomepage","css_selector":"[title=\"Rilastil 02102026 Sliderhomepage\"]"},{"creative_name":"Boiron 02102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Boiron 02102026 Sliderhomepage","promotion_name":"Boiron 02102026 Sliderhomepage","css_selector":"[title=\"Boiron 02102026 Sliderhomepage\"]"},{"creative_name":"Prodeco 05102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Prodeco 05102026 BannerCategory","promotion_name":"Prodeco 05102026 BannerCategory","css_selector":"[title=\"Prodeco 05102026 BannerCategory\"]"},{"creative_name":"Oti 05102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Ot
5510i 05102026 Sliderhomepage","promotion_name":"Oti 05102026 Sliderhomepage","css_selector":"[title=\"Oti 05102026 Sliderhomepage\"]"},{"creative_name":"Eucerin 05102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Eucerin 05102026 BannerCategory","promotion_name":"Eucerin 05102026 BannerCategory","css_selector":"[title=\"Eucerin 05102026 BannerCategory\"]"},{"creative_name":"Rilastil 05102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Rilastil 05102026 BannerProductPage","promotion_name":"Rilastil 05102026 BannerProductPage","css_selector":"[title=\"Rilastil 05102026 BannerProductPage\"]"},{"creative_name":"Rilastil 05102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Rilastil 05102026 BannerCategory","promotion_name":"Rilastil 05102026 BannerCategory","css_selector":"[title=\"Rilastil 05102026 BannerCategory\"]"},{"creative_name":"IMO 05102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"IMO 05102026 Sliderhomepage","promotion_name":"IMO 05102026 Sliderhomepage","css_selector":"[title=\"IMO 05102026 Sliderhomepage\"]"},{"creative_name":"IMO 05102026 BannerCarrello","creative_slot":"BannerCarrello","promotion_id":"IMO 05102026 BannerCarrello","promotion_name":"IMO 05102026 BannerCarrello","css_selector":"[title=\"IMO 05102026 BannerCarrello\"]"},{"creative_name":"Kenvue 05102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Kenvue 05102026 Sliderhomepage","promotion_name":"Kenvue 05102026 Sliderhomepage","css_selector":"[title=\"Kenvue 05102026 Sliderhomepage\"]"},{"creative_name":"Kenvue 05102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Kenvue 05102026 BannerProductPage","promotion_name":"Kenvue 05102026 BannerProductPage","css_selector":"[title=\"Kenvue 05102026 BannerProductPage\"]"},{"creative_name":"Sanofi 05102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Sanofi 05102026 Sliderhomepage","promotion_name":"Sanofi 05102026 Sliderhomepage","css_selector":"[title=\"Sanofi 05102026 Sliderhomepage\"]"},{"creative_name":"Esi 05102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Esi 05102026 Sliderhomepage","promotion_name":"Esi 05102026 Sliderhomepage","css_selector":"[title=\"Esi 05102026 Sliderhomepage\"]"},{"creative_name":"Esi 05102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Esi 05102026 BannerProductPage","promotion_name":"Esi 05102026 BannerProductPage","css_selector":"[title=\"Esi 05102026 BannerProductPage\"]"},{"creative_name":"Salugea 06102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Salugea 06102026 BannerCategory","promotion_name":"Salugea 06102026 BannerCategory","css_selector":"[title=\"Salugea 06102026 BannerCategory\"]"},{"creative_name":"Prodeco 07102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Prodeco 07102026 BannerProductPage","promotion_name":"Prodeco 07102026 BannerProductPage","css_selector":"[title=\"Prodeco 07102026 BannerProductPage\"]"},{"creative_name":"Erbavita 07102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Erbavita 07102026 Sliderhomepage","promotion_name":"Erbavita 07102026 Sliderhomepage","css_selector":"[title=\"Erbavita 07102026 Sliderhomepage\"]"},{"creative_name":"Farmaderbe 07102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Farmaderbe 07102026 BannerCategory","promotion_name":"Farmaderbe 07102026 BannerCategory","css_selector":"[title=\"Farmaderbe 07102026 BannerCategory\"]"},{"creative_name":"Angelini 07102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Angelini 07102026 BannerProductPage","promotion_name":"Angelini 07102026 BannerProductPage","css_selector":"[title=\"Angelini 07102026 BannerProductPage\"]"},{"creative_name":"MarcoViti 08102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"MarcoViti 08102026 Sliderhomepage","promotion_name":"MarcoViti 08102026 Sliderhomepage","css_selector":"[title=\"MarcoViti 08102026 Sliderhomepage\"]"},{"creative_name":"Elanco 08102026 BannerProductPage","creative_slot":"BannerProductPage","promotion_id":"Elanco 08102026 BannerProductPage","promotion_name":"Elanco 08102026 BannerProductPage","css_selector":"[title=\"Elanco 08102026 BannerProductPage\"]"},{"creative_name":"Elanco 08102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Elanco 08102026 Sliderhomepage","promotion_name":"Elanco 08102026 Sliderhomepage","css_selector":"[title=\"Elanco 08102026 Sliderhomepage\"]"},{"creative_name":"Procter 08102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Procter 08102026 BannerCategory","promotion_name":"Procter 08102026 BannerCategory","css_selector":"[title=\"Procter 08102026 BannerCategory\"]"},{"creative_name":"Goovi 08102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Goovi 08102026 Sliderhomepage","promotion_name":"Goovi 08102026 Sliderhomepage","css_selector":"[title=\"Goovi 08102026 Sliderhomepage\"]"},{"creative_name":"Biosline 08102026 Sliderhomepage","creative_slot":"Sliderhomepage","promotion_id":"Biosline 08102026 Sliderhomepage","promotion_name":"Biosline 08102026 Sliderhomepage","css_selector":"[title=\"Biosline 08102026 Sliderhomepage\"]"},{"creative_name":"Galderma 08102026 BannerCategory","creative_slot":"BannerCategory","promotion_id":"Galderma 08102026 BannerCategory","promotion_name":"Galderma 08102026 BannerCategory","css_selector":"[title=\"Galderma 08102026 BannerCategory\"]"}],
5511            sentViewPromotions: [],
5512            sentClickPromotions: [],
5513
5514            init() {
5515                let self = this;
5516                self.promotions.forEach(function (promotion) {
5517                    var promotionElement = document.querySelector(promotion['css_selector']);
5518                    if (promotionElement) {
5519                        let aElement = promotionElement;
5520                        if (promotionElement.tagName !== 'A') {
5521                            aElement = promotionElement.closest('[data-content-type] a[href]');
5522                        }
5523
5524                        if (aElement) {
5525                            if (!self.sentViewPromotions.includes(promotion['promotion_id'])) {
5526                                self.sendView(promotion, aElement);
5527                            }
5528
5529                            aElement.addEventListener('click', function(e) {
5530                                if (!self.sentClickPromotions.includes(promotion['promotion_id'])) {
5531                                    self.sendClick(promotion, aElement);
5532                                }
5533                            });
5534                        }
5535                    }
5536                });
5537
5538                var additionalObserver = new MutationObserver(function(mutations) {
5539                    mutations.forEach(function(mutation) {
5540                        mutation.addedNodes.forEach(function(addedNode) {
5541                            if (addedNode.matches && addedNode.matches('.swiper-wrapper')) {
5542                                self.promotions.forEach(function (promotion) {
5543                                    var promotionElement = document.querySelector(promotion['css_selector']);
5544                                    if (promotionElement) {
5545                                        let aElement = promotionElement;
5546                                        if (promotionElement.tagName !== 'A') {
5547                                            aElement = promotionElement.closest('[data-content-type] a[href]');
5548                                        }
5549
5550                                        if (!self.sentViewPromotions.includes(promotion['promotion_id'])) {
5551                                            self.sendView(promotion, aElement);
5552                                        }
5553
5554                                        aElement.addEventListener('click', function(e) {
5555                                            if (!self.sentClickPromotions.includes(promotion['promotion_id'])) {
5556                                                self.sendClick(promotion, aElement);
5557                                            }
5558                                        });
5559                                    }
5560                                });
5561                            }
5562                        });
5563                    });
5564                });
5565
5566                document.querySelectorAll('[data-content-type="slider"], [data-role="amasty-banner-container"]').forEach(function (element) {
5567                    additionalObserver.observe(element, {childList: true, subtree: true});
5568                });
5569            },
5570
5571            sendView(promotionData, promotionElement = null) {
5572                this.sentViewPromotions.push(promotionData['promotion_id']);
5573                promotionData = this.normalizeData(promotionData, promotionElement);
5574                window.dataLayer.push({
5575                    event: 'view_promotion',
5576                    ecommerce: {
5577                        creative_name: promotionData['creative_name'],
5578                        creative_slot: promotionData['creative_slot'],
5579                        promotion_id: promotionData['promotion_id'],
5580                        promotion_name: promotionData['promotion_name'],
5581                    }
5582                })
5583            },
5584
5585            sendClick(promotionData, promotionElement = null) {
5586                this.sentClickPromotions.push(promotionData['promotion_id']);
5587                promotionData = this.normalizeData(promotionData, promotionElement);
5588                window.dataLayer.push({
5589                    event: 'select_promotion',
5590                    ecommerce: {
5591                        creative_name: promotionData['creative_name'],
5592                        creative_slot: promotionData['creative_slot'],
5593                        promotion_id: promotionData['promotion_id'],
5594                        promotion_name: promotionData['promotion_name'],
5595                    }
5596                })
5597            },
5598
5599            normalizeData(promotionData, promotionElement = null) {
5600                if (!promotionElement) {
5601                    return promotionData;
5602                }
5603
5604                var imgElement = promotionElement.querySelector('img');
5605                if (!imgElement) {
5606                    return promotionData;
5607                }
5608
5609                promotionData['creative_name'] = promotionData['creative_name'] ? promotionData['creative_name'] : imgElement.src.replace(BASE_URL, '');
5610                promotionData['creative_slot'] = promotionData['creative_slot'] ? promotionData['creative_slot'] : imgElement.alt;
5611                promotionData['promotion_name'] = promotionData['promotion_name'] ? promotionData['promotion_name'] : imgElement.title;
5612                return promotionData;
5613            }
5614        });
5615    });
5616</script>
5616
5617
5618<script>
5619    document.addEventListener("alpine:initialized", () => {
5620        Alpine.store('dnafactoryGA4Items', {
5621            itemsPushed: [],
5622            itemsSelected: [],
5623            itemsToPush: [],
5624
5625            sendItemListDebounced(...itemData) {
5626                let self = this;
5627                var itemDataToPush = itemData.filter(function (el) {
5628                    var itemList = el.item_list_id ?? 'default_list';
5629                    if (!(self.itemsPushed.hasOwnProperty(itemList) && self.itemsPushed[itemList].includes(el.item_id))) {
5630                        if (!self.itemsPushed.hasOwnProperty(itemList)) {
5631                            self.itemsPushed[itemList] = [];
5632                        }
5633                        self.itemsPushed[itemList].push(el.item_id);
5634                        return true;
5635                    }
5636
5637                    return false;
5638                });
5639
5640                this.itemsToPush.push(...itemDataToPush);
5641                Alpine.debounce(this.updateItemList.bind(this), 200)();
5642            },
5643
5644            sendItemList(itemsData, currency = "EUR", itemlistName = "Default List", itemlistId = "default_list") {
5645                window.dataLayer.push({
5646                    event: 'view_item_list',
5647                    ecommerce: {
5648                        items: this.normalizeData(itemsData)
5649                    },
5650                    currency: currency,
5651                    item_list_name: itemlistName,
5652                    item_list_id: itemlistId,
5653                    _clear: true
5654                })
5655            },
5656
5657            sendSelectItem(itemData, currency = "EUR", itemlistName = "Default List", itemlistId = "default_list") {
5658                if (this.itemsSelected.includes(itemData.item_id)) {
5659                    return;
5660                }
5661                this.itemsSelected.push(itemData.item_id);
5662
5663                window.dataLayer.push({
5664                    event: 'select_item',
5665                    ecommerce: {
5666                        items: this.normalizeData([itemData])
5667                    },
5668                    currency: currency,
5669                    item_list_name: itemlistName,
5670                    item_list_id: itemlistId,
5671                    _clear: true
5672                })
5673            },
5674
5675            updateItemList() {
5676                var items = this.itemsToPush;
5677                this.itemsToPush = [];
5678
5679                if (items.length > 0) {
5680                    var firstItem = items[0];
5681                    var [currency, itemListName, itemListId] = [firstItem.currency, firstItem.item_list_name, firstItem.item_list_id];
5682                    this.sendItemList(items, currency, itemListName, itemListId);
5683                }
5684            },
5685
5686            normalizeData(itemData) {
5687                itemData.forEach(function (el) {
5688                    var vatDivider = 1;
5689                    if (el.hasOwnProperty('vat_divider')) {
5690                        vatDivider = (parseFloat(el['vat_divider']) + 100)/100;
5691                        if (vatDivider <= 0) {
5692                            vatDivider = 1;
5693                        }
5694                    }
5695
5696                    if (el.hasOwnProperty('price')) {
5697                        el['price'] = parseFloat((el['price']/vatDivider).toFixed(2));
5698                    }
5699
5700                    if (el.hasOwnProperty('discount')) {
5701                        el['discount'] = parseFloat((el['discount']/vatDivider).toFixed(2));
5702                    }
5703
5704                    if (el.hasOwnProperty('item_category')) {
5705                        var categories = el['item_category'].split(/[>\/]+/);
5706                        if (categories.length > 0) {
5707                            var indexCategory = 1;
5708                            categories.forEach(function (category) {
5709                                var categoryKey = (indexCategory > 1) ? 'item_category' + indexCategory : 'item_category';
5710                                el[categoryKey] = category.trim();
5711                                indexCategory++;
5712                            });
5713                        }
5714                    }
5715                });
5716
5717                return itemData;
5718            }
5719        });
5720    });
5721</script>
5721
5722
5723<script>
5724    window.DNAFACTORY_GA4_SHOW_PRICE_TAX = 0;
5725    if (!window.dataLayer) {
5726        window.dataLayer = [];
5727    }
5728</script>
5728
5729
5730<script>
5731    let SnapSlider = class {
5732        constructor(el, {
5733            labelSepparator = 'di',
5734            autoPager,
5735            groupPager,
5736            loop
5737        } = {}) {
5738            this.el = el;
5739            this.track = this.el.querySelector("[data-track]");
5740            if (!this.track) {
5741                console.warn(
5742                    "No Slider track defined, reverting back to CSS slider.\nPlease create a wrapper for your slides with the attribute data-track",
5743                    this.el
5744                );
5745                return;
5746            }
5747            this.initialLoad = true;
5748            this.slides = [];
5749            this.inViewObserver;
5750            this.mutationObserver;
5751            this.resizeObserver;
5752            this.pager = this.el.querySelector("[data-pager]");
5753            this.navBtns = Array.from(
5754                this.el.querySelectorAll("[data-next], [data-prev]")
5755            );
5756            this.slideLabelSepparator = this.el.dataset.slideLabelSepparator || labelSepparator;
5757            this.useAutoPager = autoPager || this.el.hasAttribute("data-auto-pager") || false;
5758            this.useGroupPager = groupPager || this.el.hasAttribute("data-group-pager") || false;
5759            this.useLoop = loop || this.el.hasAttribute("data-loop") || false;
5760            this.sliderLabel = this.el.hasAttribute("aria-label") && this.el.getAttribute("aria-label").toLowerCase().trim().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
5761            this.sliderId = this.el.id || this.sliderLabel || "slider";
5762            this.markerIdName = "data-target-id";
5763            this.pagerClasses = this.el.dataset.pagerClass || "snap-pager";
5764            this.markerClasses = this.el.dataset.markerClass || "snap-marker";
5765            this.init();
5766        }
5767        init() {
5768            this.setupSlides();
5769            this.setupNav();
5770            if (this.useAutoPager) {
5771                this.createPager();
5772            } else {
5773                this.setupPager();
5774            }
5775            this.setupObservers();
5776            this.setupMutationObserver();
5777            this.setupResizeObserver();
5778            this.el.addEventListener("click", this.eventHandler.bind(this));
5779            this.el.addEventListener("keydown", this.eventHandler.bind(this));
5780            if ("onscrollend" in window) {
5781                this.track.addEventListener("scrollend", () => {
5782                    this.isNavigating = false;
5783                });
5784            } else {
5785                this.track.addEventListener("scroll", () => {
5786                    clearTimeout(this.scrollEndTimer);
5787                    this.scrollEndTimer = setTimeout(() => {
5788                        this.isNavigating = false;
5789                    }, 100);
5790                });
5791            }
5792        }
5793        destroy() {
5794            this.inViewObserver?.disconnect();
5795            this.mutationObserver?.disconnect();
5796            this.resizeObserver?.disconnect();
5797            this.el.removeEventListener("click", this.eventHandler.bind(this));
5798            this.el.removeEventListener("keydown", this.eventHandler.bind(this));
5799        }
5800        roundUpIfGreaterThan(number, min = 8) {
5801            const decimalPart = number - Math.floor(number);
5802            return decimalPart >= min ? Math.ceil(number) : Math.floor(number);
5803        }
5804        getInViewItems() {
5805            const inViewSlides = Array.from(this.track.querySelectorAll("[data-in-view]")).filter((el) => this.slides.includes(el));
5806            const firstInViewSlide = inViewSlides[0] || null;
5807            const lastInViewSlide = inViewSlides[inViewSlides.length - 1] || null;
5808            const isAtStart = firstInViewSlide === this.slides[0];
5809            const isAtEnd = lastInViewSlide === this.slides[this.slides.length - 1];
5810            return {
5811                inViewSlides,
5812                totalInViewSlides: inViewSlides.length,
5813                firstInViewSlide,
5814                lastInViewSlide,
5815                isAtStart,
5816                isAtEnd,
5817                hasNoOverflow: isAtStart && isAtEnd
5818            };
5819        }
5820        groupPagerMarkers() {
5821            if (this.slides.length === 0 || !this.pager || !this.useGroupPager) return;
5822            const totalVisibleSlides = this.roundUpIfGreaterThan(
5823                this.track.offsetWidth / this.slides[0].offsetWidth
5824            );
5825            const markers = Array.from(this.pager.querySelectorAll("a, button"));
5826            markers.forEach((marker, index) => {
5827                marker.style.display = index % totalVisibleSlides === 0 ? null : "none";
5828            });
5829        }
5830        handleInView(entries) {
5831            entries.forEach((entry) => {
5832                const marker = this.pager && (this.pager.querySelector(`[href="#${entry.target.id}"]`) || this.pager.querySelector(
5833                    `[${this.markerIdName}="${entry.target.id}"]`
5834                ));
5835                entry.target.toggleAttribute("data-in-view", entry.isIntersecting);
5836                entry.target.toggleAttribute("inert", !entry.isIntersecting);
5837                marker?.setAttribute("aria-current", entry.isIntersecting);
5838                marker?.setAttribute("tabindex", entry.isIntersecting ? "0" : "-1");
5839            });
5840            const { isAtStart, isAtEnd, hasNoOverflow } = this.getInViewItems();
5841            this.navBtns.forEach((btn) => {
5842                if (btn.hasAttribute("data-next")) {
5843                    btn.style.visibility = hasNoOverflow ? "hidden" : null;
5844                    isAtEnd && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
5845                }
5846                if (btn.hasAttribute("data-prev")) {
5847                    btn.style.visibility = hasNoOverflow ? "hidden" : null;
5848                    isAtStart && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
5849                }
5850            });
5851            if (this.pager) {
5852                this.pager.style.visibility = hasNoOverflow ? "hidden" : null;
5853                this.pager.toggleAttribute("inert", hasNoOverflow);
5854            }
5855            if (!this.initialLoad) {
5856                this.el.dispatchEvent(
5857                    new CustomEvent("slideChange", {
5858                        detail: this.getInViewItems()
5859                    })
5860                );
5861            } else {
5862                this.initialLoad = false;
5863            }
5864            if (document.activeElement.parentElement.hasAttribute("data-pager")) {
5865                const activeItems = this.pager.querySelectorAll('[tabindex="0"]');
5866                if (activeItems.length) {
5867                    activeItems[0].focus({ preventScroll: true });
5868                }
5869            }
5870        }
5871        getSlides() {
5872            if (!this.track) return [];
5873            return Array.from(this.track.children).filter(
5874                (child) => child.tagName.toLowerCase() !== "template" && child.tagName.toLowerCase() !== "style" && child.tagName.toLowerCase() !== "script" && child.style.display !== "none"
5875            );
5876        }
5877        refreshSlides() {
5878            this.initialLoad = true;
5879            this.slides = this.getSlides();
5880            this.setupSlides();
5881            if (this.useAutoPager) {
5882                this.createPager();
5883            } else {
5884                this.setupPager();
5885            }
5886            this.groupPagerMarkers();
5887            this.setupObservers();
5888        }
5889        setupSlides() {
5890            this.slides = this.getSlides();
5891            this.slides.forEach((slide, index) => {
5892                const totalSlides = this.slides.length;
5893                const currentSlide = index + 1;
5894                const existingLabel = slide.getAttribute("aria-label") || "";
5895                const isImage = slide.tagName.toLowerCase() === "img" || slide.tagName.toLowerCase() === "picture";
5896                const slideLabelTag = isImage ? "alt" : "aria-label";
5897                const hasAutoLabel = existingLabel.startsWith(
5898                    `${currentSlide} ${this.slideLabelSepparator} `
5899                );
5900                if (!slide.hasAttribute("id")) {
5901                    slide.setAttribute(
5902                        "id",
5903                        `${this.sliderId}-item-${currentSlide}`
5904                    );
5905                }
5906                if (!slide.hasAttribute(slideLabelTag) || slide.getAttribute(slideLabelTag) === "" || hasAutoLabel) {
5907                    slide.setAttribute(
5908                        slideLabelTag,
5909                        `${currentSlide} ${this.slideLabelSepparator} ${totalSlides}`
5910                    );
5911                }
5912                if (slide.tagName.toLowerCase() === "div" && !slide.hasAttribute("role")) {
5913                    slide.setAttribute("role", "group");
5914                }
5915                if (this.pager && !isImage) {
5916                    slide.setAttribute("role", "tabpanel");
5917                }
5918                if (slide.getAttribute("role") === "group") {
5919                    slide.setAttribute("aria-roledescription", "item");
5920                }
5921            });
5922            if (!this.el.hasAttribute("role") && this.el.tagName !== "SECTION") {
5923                this.el.setAttribute("role", "region");
5924            }
5925            if (!this.el.hasAttribute("aria-roledescription")) {
5926                this.el.setAttribute("aria-roledescription", "carousel");
5927            }
5928            if (!this.track.hasAttribute("tabindex")) {
5929                this.track.setAttribute("tabindex", 0);
5930            }
5931            this.track.setAttribute("aria-live", "polite");
5932        }
5933        setupNav() {
5934            this.navBtns.forEach((btn) => {
5935                btn.setAttribute("disabled", "");
5936                btn.removeAttribute("hidden");
5937                btn.classList.remove("invisible");
5938                btn.style.visibility = null;
5939            });
5940        }
5941        createPager() {
5942            const newPager = document.createElement("nav");
5943            newPager.setAttribute("data-pager", "");
5944            newPager.setAttribute("role", "tablist");
5945            newPager.classList.add(...this.pagerClasses.split(" "));
5946            this.slides.forEach((slide, index) => {
5947                const marker = document.createElement("button");
5948                const slideId = slide.id || `${this.sliderId}-item-${index + 1}`;
5949                marker.setAttribute(this.markerIdName, slideId);
5950                marker.classList.add(...this.markerClasses.split(" "));
5951                this.setupPagerMarker(marker, index);
5952                newPager.appendChild(marker);
5953                if (slide.tagName.toLowerCase() !== "img" && slide.tagName.toLowerCase() !== "picture") {
5954                    slide.removeAttribute("aria-roledescription");
5955                    slide.setAttribute("role", "tabpanel");
5956                }
5957            });
5958            if (this.pager) {
5959                this.pager.setAttribute("role", "tablist");
5960                this.pager.replaceChildren(...newPager.children);
5961            } else {
5962                this.track.after(newPager);
5963                this.pager = this.el.querySelector("[data-pager]");
5964            }
5965        }
5966        setupPager() {
5967            if (!this.pager) return;
5968            this.pager.setAttribute("role", "tablist");
5969            const items = Array.from(this.pager.querySelectorAll("a, button"));
5970            items.forEach((marker, index) => this.setupPagerMarker(marker, index));
5971        }
5972        setupPagerMarker(marker, index) {
5973            const markerId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
5974            const slideId = markerId || `${this.sliderId}-item-${index + 1}`;
5975            if (!markerId) {
5976                marker.setAttribute(this.markerIdName, slideId);
5977            }
5978            marker.setAttribute("role", "tab");
5979            marker.setAttribute("aria-controls", slideId);
5980            marker.setAttribute("aria-posinset", index + 1);
5981            marker.setAttribute("aria-setsize", this.slides.length);
5982            marker.setAttribute("tabindex", "-1");
5983            if (!marker.hasAttribute("aria-label")) {
5984                marker.setAttribute("aria-label", `Slide ${index + 1}`);
5985            }
5986        }
5987        setupObservers() {
5988            if (this.inViewObserver) {
5989                this.inViewObserver.disconnect();
5990            }
5991            this.inViewObserver = new IntersectionObserver(
5992                this.handleInView.bind(this), {
5993                    root: this.track,
5994                    threshold: 0.8
5995                }
5996            );
5997            this.slides.forEach((slide) => this.inViewObserver.observe(slide));
5998        }
5999        setupMutationObserver() {
6000            this.mutationObserver = new MutationObserver((mutations) => {
6001                if (mutations.some((m) => m.type === "childList" || m.target.parentElement === this.track)) {
6002                    this.refreshSlides();
6003                }
6004            });
6005            this.mutationObserver.observe(this.track, {
6006                childList: true,
6007                subtree: true,
6008                attributeFilter: ["style"]
6009            });
6010        }
6011        setupResizeObserver() {
6012            this.resizeObserver = new ResizeObserver(
6013                this.groupPagerMarkers.bind(this)
6014            );
6015            this.resizeObserver.observe(this.el);
6016        }
6017        goToSlideDir(dir = "next") {
6018            if (this.isNavigating) return;
6019            const { firstInViewSlide, lastInViewSlide } = this.getInViewItems();
6020            const isPrev = dir === "prev";
6021            const referenceSlide = isPrev ? firstInViewSlide : lastInViewSlide;
6022            const currentIndex = this.slides.indexOf(referenceSlide);
6023            let targetIndex = isPrev ? currentIndex - 1 : currentIndex + 1;
6024            if (targetIndex < 0 || targetIndex >= this.slides.length) {
6025                if (!this.useLoop) return;
6026                targetIndex = isPrev ? this.slides.length - 1 : 0;
6027            }
6028            const targetSlide = this.slides[targetIndex];
6029            if (!targetSlide) return;
6030            this.isNavigating = true;
6031            targetSlide.scrollIntoView({
6032                block: "nearest",
6033                inline: isPrev ? "end" : "start"
6034            });
6035        }
6036        pagerToSlide(event) {
6037            if (!event.target.closest("[data-pager]")) return;
6038            const marker = event.target.closest("a, button");
6039            if (!marker) return;
6040            event.preventDefault();
6041            const slideId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
6042            const targetSlide = this.track.querySelector(`#${slideId}`);
6043            targetSlide?.scrollIntoView({ block: "nearest", inline: "start" });
6044        }
6045        eventHandler(event) {
6046            const target = event.target.closest(
6047                "[data-next], [data-prev], [data-pager]"
6048            );
6049            if (!target) return;
6050            if (event.type === "click") {
6051                if (target.hasAttribute("data-next")) {
6052                    this.goToSlideDir("next");
6053                } else if (target.hasAttribute("data-prev")) {
6054                    this.goToSlideDir("prev");
6055                } else if (target.closest("[data-pager]")) {
6056                    this.pagerToSlide(event);
6057                }
6058            }
6059            if (event.type === "keydown" && target.closest("[data-pager]")) {
6060                if (event.key === "ArrowRight" || event.key === "ArrowDown") {
6061                    event.preventDefault();
6062                    this.goToSlideDir("next");
6063                } else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
6064                    event.preventDefault();
6065                    this.goToSlideDir("prev");
6066                }
6067            }
6068        }
6069    };
6070
6071    (() => {
6072        function alpineSnapSlider(Alpine) {
6073            Alpine.directive("snap-slider", (el, {
6074                modifiers
6075            }, {
6076                cleanup
6077            }) => {
6078                const slider = new SnapSlider(el, {
6079                    autoPager: modifiers.includes("auto-pager"),
6080                    groupPager: modifiers.includes("group-pager"),
6081                    loop: modifiers.includes("loop")
6082                });
6083                cleanup(() => {
6084                    slider.destroy();
6085                });
6086            });
6087        }
6088
6089        document.addEventListener("alpine:init", () => {
6090            window.Alpine.plugin(alpineSnapSlider);
6091        });
6092    })();
6093    //# sourceURL=alpine-snap-slider.js
6094</script>
vendor: 1 bytes, line 6094
6094
6095<script>
6096    (() => {
6097        // src/dialog.js
6098        function dialog_default(Alpine) {
6099            Alpine.directive("htmldialog", fylgjaAlpineDialog);
6100            function fylgjaAlpineDialog(el, { expression, modifiers }, { evaluateLater, cleanup }) {
6101            const evaluate = expression.length ? evaluateLater(expression) : () => {};
6102            const lockPageScroll = modifiers.includes("noscroll");
6103            const isModeless = modifiers.includes("modeless");
6104            const closeBy = el.getAttribute("closeby") || modifierValue(modifiers, "closeby", "closerequest");
6105            el.style.display = null;
6106            el.style.length === 0 && el.removeAttribute("style");
6107            if (el._x_isShown) {
6108                open();
6109            }
6110            const closeBySupported = (() => {
6111                return "closedBy" in HTMLDialogElement.prototype;
6112            })();
6113            function scrollLock(use = true) {
6114                document.body.style.overflow = use ? "hidden" : "";
6115            }
6116            function dialogSubmit(event) {
6117                if (event.target.getAttribute("method") === "dialog" || event.submitter?.getAttribute("formmethod") === "dialog") {
6118                event.preventDefault();
6119                evaluate();
6120                }
6121            }
6122            function escapeDialog(event) {
6123                if (event.key !== "Escape") return;
6124                event.preventDefault();
6125                if (closeBy === "none") return;
6126                evaluate();
6127            }
6128            function handleCloseByEvent(event) {
6129                if (event.target !== el) return;
6130                const rect = el.getBoundingClientRect();
6131                const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;
6132                if (!isInDialog) {
6133                if (closeBy === "any") {
6134                    if (closeBySupported) {
6135                    event.preventDefault();
6136                    }
6137                    evaluate();
6138                }
6139                }
6140            }
6141            function handleCloseEvent() {
6142                evaluate();
6143            }
6144            function open() {
6145                if (el.hasAttribute("open")) return;
6146                isModeless ? el.show() : el.showModal();
6147                scrollLock(lockPageScroll);
6148            }
6149            function close() {
6150                if (!el.hasAttribute("open")) return;
6151                el.close();
6152                scrollLock(false);
6153            }
6154            el._x_doShow = () => open();
6155            el._x_doHide = () => close();
6156            el.addEventListener("keydown", escapeDialog);
6157            el.addEventListener("submit", dialogSubmit);
6158            el.addEventListener("click", handleCloseByEvent);
6159            el.addEventListener("cancel", handleCloseEvent);
6160            cleanup(() => {
6161                el.removeEventListener("keydown", escapeDialog);
6162                el.removeEventListener("submit", dialogSubmit);
6163                el.removeEventListener("click", handleCloseByEvent);
6164                el.removeEventListener("cancel", handleCloseEvent);
6165                scrollLock(false);
6166            });
6167            }
6168        }
6169        function modifierValue(modifiers, key, fallback) {
6170            if (modifiers.indexOf(key) === -1) return fallback;
6171            const rawValue = modifiers[modifiers.indexOf(key) + 1];
6172            if (!rawValue) return fallback;
6173            if (key === "closeby") {
6174            const allowedValues = ["auto", "none", "closerequest", "any"];
6175            const options = allowedValues.join(", ");
6176            if (!allowedValues.includes(rawValue)) {
6177                console.warn(
6178                `"${rawValue}" is not one of the allowed values for closeby: ${options}`
6179                );
6180                return fallback;
6181            }
6182            }
6183            return rawValue;
6184        }
6185
6186        // src/cdn.js
6187        document.addEventListener("alpine:init", () => {
6188            window.Alpine.plugin(dialog_default);
6189        });
6190    })();
6191    //# sourceURL=alpine-htmldialog.js
6192</script>
vendor: 1 bytes, line 6192
6192
6193<script>
6194    (() => {
6195        function src_default(Alpine) {
6196            Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {
6197                let evaluate = evaluateLater(expression);
6198                let options = {
6199                    rootMargin: getRootMargin(modifiers),
6200                    threshold: getThreshold(modifiers)
6201                };
6202                let observer = new IntersectionObserver((entries) => {
6203                    entries.forEach((entry) => {
6204                        if (entry.isIntersecting === (value === "leave"))
6205                            return;
6206                        evaluate();
6207                        modifiers.includes("once") && observer.disconnect();
6208                    });
6209                }, options);
6210                observer.observe(el);
6211                cleanup(() => {
6212                    observer.disconnect();
6213                });
6214            }));
6215        }
6216        function getThreshold(modifiers) {
6217            if (modifiers.includes("full"))
6218                return 0.99;
6219            if (modifiers.includes("half"))
6220                return 0.5;
6221            if (!modifiers.includes("threshold"))
6222                return 0;
6223            let threshold = modifiers[modifiers.indexOf("threshold") + 1];
6224            if (threshold === "100")
6225                return 1;
6226            if (threshold === "0")
6227                return 0;
6228            return Number(`.${threshold}`);
6229        }
6230        function getLengthValue(rawValue) {
6231            let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);
6232            return match ? match[1] + (match[2] || "px") : void 0;
6233        }
6234        function getRootMargin(modifiers) {
6235            const key = "margin";
6236            const fallback = "0px 0px 0px 0px";
6237            const index = modifiers.indexOf(key);
6238            if (index === -1)
6239                return fallback;
6240            let values = [];
6241            for (let i = 1; i < 5; i++) {
6242                values.push(getLengthValue(modifiers[index + i] || ""));
6243            }
6244            values = values.filter((v) => v !== void 0);
6245            return values.length ? values.join(" ").trim() : fallback;
6246        }
6247
6248        document.addEventListener("alpine:init", () => {
6249            window.Alpine.plugin(src_default);
6250        });
6251    })();
6252    //# sourceURL=alpine-intersect.js
6253</script>
6253
6254
6255<script>
6256    for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]":"intersect",".product-info [x-data]":"intersect","#filters-content [x-data]":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","div[x-data^=initBundleOptions]":"intersect","#notice-cookie-block":"intersect","#product_addtocart_form [x-data]:not(.dont-defer)":"intersect"})) {
6257        document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`));
6258    }
6259    //# sourceURL=alpine-defer-rules.js
6260</script>
vendor: 1 bytes, line 6260
6260
6261<script>
6262    (() => {
6263        const hasAlpine = new Promise(resolve => {
6264            window.addEventListener('alpine:initialized', resolve, {once: true, passive: true});
6265        });
6266
6267        const hasInteract = new Promise(resolve => {
6268            (events => {
6269                const onInteract = () => {
6270                    resolve();
6271                    events.forEach(type => window.removeEventListener(type, onInteract));
6272                }
6273                events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true}))
6274            })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])
6275        });
6276
6277        const onIntersect = (el) => {
6278            return new Promise(resolve => {
6279                const observer = new IntersectionObserver(entries => {
6280                    for (const entry of entries) {
6281                        if (entry.isIntersecting) {
6282                            observer.disconnect()
6283                            resolve();
6284                        }
6285                    }
6286                }, {});
6287                observer.observe(el);
6288            });
6289        }
6290
6291        function runComponent(el) {
6292            hasAlpine.then(() => {
6293                el.removeAttribute('x-ignore');
6294                queueMicrotask(() => Alpine.initTree(el));
6295            });
6296        }
6297
6298        function initDeferredComponents() {
6299            document.querySelectorAll('[x-data][x-defer]').forEach(el => {
6300                el.setAttribute('x-ignore', '');
6301                const deferUntil = (el.getAttribute('x-defer') || '').trim();
6302                switch (deferUntil) {
6303                    case 'interact':
6304                        hasInteract.then(() => runComponent(el));
6305                        break;
6306                    case 'intersect':
6307                        onIntersect(el).then(() => runComponent(el))
6308                        break;
6309                    case 'idle':
6310                        window.requestIdleCallback
6311                            ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000})
6312                            : setTimeout(() => runComponent(el), 4000);
6313                        break;
6314                    case 'eager':
6315                        runComponent(el);
6316                        break;
6317                    default:
6318                        if (deferUntil.startsWith('event:') && deferUntil.length > 6) {
6319                            window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true});
6320                        }
6321                }
6322            });
6323        }
6324
6325        window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true});
6326    })();
6327    //# sourceURL=alpine-defer.js
6328</script>
6328
6329
6330<script>
6331// x-teleport implementation
6332(_ => {
6333    document.addEventListener('DOMContentLoaded', event => {
6334        // x-teleport available only for template
6335        if (!Alpine.version.startsWith('2')) {
6336            return;
6337        }
6338
6339        const teleportDirective = (el, expression) => {
6340            let target = document.querySelector(expression)
6341            let clone = el.content.cloneNode(true).firstElementChild;
6342
6343            target.appendChild(clone);
6344            setTimeout(() => {
6345                target.querySelectorAll('[x-data]')
6346                    .forEach(el => Alpine.initializeComponent(el));
6347            }, 0)
6348        };
6349
6350        document.querySelectorAll('template').forEach(el => {
6351            if (!el.hasAttribute('x-teleport')) {
6352                return;
6353            }
6354
6355            teleportDirective(el, el.getAttribute('x-teleport'));
6356        });
6357
6358        document.querySelectorAll('[x-data]').forEach(el => {
6359            if (el.hasAttribute('x-init')) {
6360                return;
6361            }
6362
6363            setTimeout(() => {
6364                Alpine.initializeComponent(el);
6365            }, 0);
6366        });
6367    });
6368})()
6369</script>
6369
6370
6371<script type="module"
6372        src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Hyva_Theme/js/alpine3.min.js"
6373        defer
6374        crossorigin
6375></script>
vendor: 1 bytes, line 6375
6375
6376<script>
6377    function dispatchMessages(messages, hideAfter) {
6378        const messagesEvent = new CustomEvent("messages-loaded", {
6379            detail: {
6380                messages: messages,
6381                hideAfter: hideAfter
6382            }
6383        });
6384        window.dispatchEvent(messagesEvent);
6385    }
6386
6387        if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
6388        console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
6389    }
6390
6391    (function( hyva, undefined ) {
6392
6393        hyva.initFormKey = () => {
6394            if (typeof hyva.getFormKey !== 'function') return;
6395
6396            const formKey = hyva.getFormKey();
6397            if (!formKey) return;
6398
6399            document.querySelectorAll('input[name="form_key"]').forEach((input) => {
6400                input.value = formKey;
6401            });
6402        }
6403
6404        hyva.initMessages = () => {
6405            try {
6406                const messages = hyva.getCookie('mage-messages');
6407                window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
6408
6409                dispatchMessages(window.mageMessages);
6410
6411                                // empty `mage-messages` cookie
6412                const skipSetDomain = true;
6413                hyva.setCookie('mage-messages','', -1, skipSetDomain);
6414
6415            } catch (error) {
6416                console.warn('Error parsing Cookie Messages:', error);
6417            }
6418        }
6419
6420        window.addEventListener('DOMContentLoaded', hyva.initFormKey);
6421
6422        window.addEventListener('pageshow', (event) => {
6423            if (event.persisted) {
6424                hyva.initFormKey();
6425            }
6426        });
6427
6428        hyva.alpineInitialized(hyva.initMessages)
6429    }( window.hyva = window.hyva || {} ));
6430    //# sourceURL=hyva-cookies.js
6431</script>
vendor: 1 bytes, line 6431
6431
6432<script>
6433    (() => {
6434        const private_content_key = 'mage-cache-storage';
6435        const private_content_expire_key = 'mage-cache-timeout';
6436        const private_content_version_key = 'private_content_version';
6437        const section_data_ids_key = 'section_data_ids';
6438        const mage_cache_session_id_key = 'mage-cache-sessid';
6439        const last_visited_store_key = 'last_visited_store';
6440
6441        const ttl = 7200;
6442
6443                if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
6444            console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
6445        }
6446
6447        function loadSectionData () {
6448            const browserStorage = hyva.getBrowserStorage();
6449            if (!browserStorage) {
6450                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
6451                    [{
6452                        type: "warning",
6453                        text: "Please enable LocalStorage in your browser."
6454                    }]
6455                );
6456                return;
6457            }
6458            try {
6459                let isInvalid = false;
6460
6461                                if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) {
6462                    isInvalid = true;
6463                }
6464                hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false);
6465
6466                                if (!hyva.getCookie(mage_cache_session_id_key)) {
6467                    isInvalid = true;
6468                    browserStorage.removeItem(private_content_key);
6469                    const skipSetDomain = true;
6470                    const days = false;
6471                    hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain)
6472                }
6473
6474                const cookieVersion = hyva.getCookie(private_content_version_key);
6475                const storageVersion = browserStorage.getItem(private_content_version_key);
6476
6477                if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) {
6478                    isInvalid = true;
6479                }
6480
6481                const privateContentExpires = browserStorage.getItem(private_content_expire_key);
6482                if (privateContentExpires && new Date(privateContentExpires) < new Date()) {
6483                    browserStorage.removeItem(private_content_key);
6484                }
6485
6486                if (isInvalid && cookieVersion) {
6487                    fetchPrivateContent([]);
6488                } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) {
6489                    const privateContent = JSON.parse(browserStorage.getItem(private_content_key));
6490                    if (
6491                        privateContent &&
6492                        privateContentExpires &&
6493                        privateContent.cart &&
6494                        privateContent.customer
6495                    ) {
6496                        dispatchPrivateContent(privateContent);
6497                    } else {
6498                        fetchPrivateContent([]);
6499                    }
6500                } else {
6501                    if (document.getElementById('default-section-data')) {
6502                        const privateContent = JSON.parse(document.getElementById('default-section-data').textContent.trim());
6503                        dispatchPrivateContent(privateContent);
6504                    } else {
6505                        dispatchPrivateContent({});
6506                    }
6507                }
6508
6509            } catch (error) {
6510                console.warn('Error retrieving Private Content:', error);
6511            }
6512        }
6513
6514        hyva.alpineInitialized(loadSectionData)
6515        window.addEventListener('reload-customer-section-data', loadSectionData);
6516
6517                window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data);
6518
6519        function dispatchPrivateContent(data) {
6520
6521            const privateContentEvent = new CustomEvent("private-content-loaded", {
6522                detail: {
6523                    data: window.processSectionDataBeforeDispatch(data)
6524                }
6525            });
6526            window.dispatchEvent(privateContentEvent);
6527        }
6528
6529                function fetchPrivateContent(sections) {
6530            fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, {
6531                method: 'GET',
6532                headers: {
6533                    'Content-Type': 'application/json',
6534                    'X-Requested-With': 'XMLHttpRequest'
6535                }
6536            })
6537                .then(response => response.ok && response.json())
6538                .then(
6539                    data => {
6540                        if (data) {
6541                            try {
6542                                const browserStorage = hyva.getBrowserStorage();
6543
6544                                // merge new data preserving non-invalidated sections
6545                                const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {};
6546
6547                                                                if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) {
6548                                    delete oldSectionData['checkout-data'];
6549                                }
6550                                const newSectionData = Object.assign(oldSectionData, data);
6551
6552                                dispatchPrivateContent(newSectionData);
6553
6554                                // don't persist messages, they've been dispatched already
6555                                if (newSectionData.messages && newSectionData.messages.messages ) {
6556                                    newSectionData.messages.messages = [];
6557                                }
6558
6559                                browserStorage.setItem(private_content_key, JSON.stringify(newSectionData));
6560
6561                                const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString();
6562                                browserStorage.setItem(private_content_expire_key, expiresAt);
6563
6564                                const newCookieVersion = hyva.getCookie(private_content_version_key);
6565                                browserStorage.setItem(private_content_version_key, newCookieVersion);
6566
6567                                // We don't need the section_data_ids in Hyvä, but we store them for compatibility
6568                                // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout
6569                                hyva.setCookie(
6570                                    section_data_ids_key,
6571                                    JSON.stringify(
6572                                        Object.keys(data).reduce((sectionDataIds, sectionKey) => {
6573                                            sectionDataIds[sectionKey] = data[sectionKey]['data_id'];
6574                                            return sectionDataIds;
6575                                        }, {})
6576                                    ),
6577                                    false,
6578                                    true
6579                                );
6580                            } catch (error) {
6581                                console.warn("Couldn't store privateContent", error);
6582                            }
6583                        }
6584                    }
6585                )
6586                .catch(error => {
6587                    console.warn("Couldn't fetch privateContent", error);
6588                });
6589        }
6590    })();
6591    //# sourceURL=hyva-private-content.js
6592</script>
vendor: 1 bytes, line 6592
6592
6593<script>
6594    (() => {
6595        document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc()));
6596    })()
6597</script>
vendor: 1 bytes, line 6597
6597
6598<script>
6599    (events => {
6600        const addListeners = () => {
6601            var init = false;
6602            const dispatchUserInteractionEvent = Alpine.throttle(() => {
6603                if(!init){
6604                    init=true;
6605                    return false;
6606                }
6607                events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent))
6608                window.dispatchEvent(new Event('init-external-scripts'))
6609            }, 30);
6610            document.removeEventListener('alpine:initialized', addListeners)
6611            events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, { passive: true}))
6612        }
6613        document.addEventListener('alpine:initialized', addListeners, { once: true });
6614    })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])
6615</script>
vendor: 1 bytes, line 6615
6615
6616<script>
6617    function initWishlist() {
6618        return {
6619            addToWishlist(productId) {
6620                const formKey = hyva.getFormKey();
6621                const postUrl = BASE_URL + 'wishlist/index/add/';
6622
6623                const params = new URLSearchParams({
6624                    form_key: formKey,
6625                    product: productId,
6626                    uenc: hyva.getUenc()
6627                });
6628
6629                const form = document.getElementById(`product_addtocart_form_${productId}`);
6630                if (form) {
6631                    new FormData(form).forEach((value, key) => params.set(key, value));
6632                }
6633
6634                fetch(postUrl, {
6635                    "headers": {
6636                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
6637                    },
6638                    "body": params.toString(),
6639                    "method": "POST",
6640                    "mode": "cors",
6641                    "credentials": "include"
6642                }).then(function (response) {
6643                    if (response.redirected) {
6644                        window.location.href = response.url;
6645                    } else if (response.ok) {
6646                        return response.json();
6647                    } else {
6648                        typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
6649                            [{
6650                                type: "warning",
6651                                text: "Could\u0020not\u0020add\u0020item\u0020to\u0020wishlist."
6652                            }], 5000
6653                        );
6654                    }
6655                }).then(function (response) {
6656                    if (!response) { return }
6657                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
6658                        [{
6659                            type: (response.success) ? "success" : "error",
6660                            text: (response.success)
6661                                ? "Prodotto\u0020\u00E8\u0020stato\u0020aggiunto\u0020nella\u0020tua\u0020lista\u0020desideri."
6662                                : response.error_message
6663                        }], 5000
6664                    );
6665                    const reloadCustomerDataEvent = new CustomEvent("reload-customer-section-data");
6666                    window.dispatchEvent(reloadCustomerDataEvent);
6667                }).catch(function (error) {
6668                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
6669                        [{
6670                            type: "error",
6671                            text: error
6672                        }], 5000
6673                    );
6674                });
6675            }
6676        }
6677    }
6678</script>
vendor: 1 bytes, line 6678
6678
6679<script>
6680    function initProductItemImage() {
6681        return {
6682            updateImage() {
6683                const image = this.$event.detail.medium;
6684                if (!image) return;
6685                this.$el.src = image;
6686            }
6687        }
6688    }
6689    window.addEventListener('alpine:init', () => {
6690        Alpine.data('initProductItemImage', initProductItemImage);
6691    }, { once: true });
6692</script>
vendor: 1 bytes, line 6692
6692
6693<script>
6694    'use strict';
6695
6696    (() => {
6697        const initCarousels = (elements) => {
6698            if (!Swiper) {
6699                return;
6700            }
6701
6702            const initProductCarousel = (carousel, additionalOptions) => {
6703                carousel.classList.add("swiper");
6704                if (!carousel.querySelectorAll(".swiper-wrapper").length) {
6705                    carousel.innerHTML = `<div class="swiper-wrapper">${carousel.innerHTML}</div>`;
6706                }
6707                carousel.querySelectorAll(".swiper-wrapper > *").forEach(function (el) {
6708                    el.classList.add("swiper-slide");
6709                });
6710
6711                let swiperElement = carousel.querySelector('.swiper');
6712                if (!swiperElement) {
6713                    swiperElement = carousel;
6714                }
6715
6716                if ((carousel.dataset.showArrows === 'true' || carousel.dataset.showDots === 'true') && !carousel.querySelectorAll(".swiper-pagination").length) {
6717                    swiperElement.insertAdjacentHTML(
6718                        'beforeend',
6719                        '\u000A\u003Cdiv\u0020class\u003D\u0022swiper\u002Dbutton\u002Dprev\u0020w\u002D12\u0020h\u002D12\u0020rounded\u002Dfull\u0020group\u002Fbutton\u0020bg\u002Dwhite\u0020hidden\u0020opacity\u002D0\u0020md\u003Agroup\u002Dhover\u003Aopacity\u002D100\u0020md\u003A\u0021flex\u0020shadow\u002Dlg\u0020shadow\u002Dblack\u002F30\u0020transition\u002Dall\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020fill\u003D\u0022none\u0022\u0020viewBox\u003D\u00220\u00200\u002024\u002024\u0022\u0020stroke\u002Dwidth\u003D\u00222\u0022\u0020stroke\u003D\u0022currentColor\u0022\u0020class\u003D\u0022m\u002Dauto\u0020group\u002Dhover\u002Fbutton\u003A\u0021stroke\u002Dprimary\u0022\u0020width\u003D\u002220\u0022\u0020height\u003D\u002220\u0022\u0020role\u
6719003D\u0022img\u0022\u003E\u000A\u0020\u0020\u003Cpath\u0020stroke\u002Dlinecap\u003D\u0022round\u0022\u0020stroke\u002Dlinejoin\u003D\u0022round\u0022\u0020d\u003D\u0022M15\u002019l\u002D7\u002D7\u00207\u002D7\u0022\u002F\u003E\u000A\u003Ctitle\u003Echevron\u002Dleft\u003C\u002Ftitle\u003E\u003C\u002Fsvg\u003E\u000A\u003C\u002Fdiv\u003E\u000A\u003Cdiv\u0020class\u003D\u0022swiper\u002Dbutton\u002Dnext\u0020w\u002D12\u0020h\u002D12\u0020rounded\u002Dfull\u0020group\u002Fbutton\u0020bg\u002Dwhite\u0020hidden\u0020hover\u003A\u0021stroke\u002Dprimary\u0020opacity\u002D0\u0020md\u003Agroup\u002Dhover\u003Aopacity\u002D100\u0020md\u003A\u0021flex\u0020shadow\u002Dlg\u0020shadow\u002Dblack\u002F30\u0020transition\u002Dall\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020fill\u003D\u0022none\u0022\u0020viewBox\u003D\u00220\u00200\u002024\u002024\u0022\u0020stroke\u002Dwidth\u003D\u00222\u0022\u0020stroke\u003D\u0022currentColor\u0022\u0020class\u003D\u0022m\u002Dauto\u0020group\u002Dhover\u002Fbutton\u003A\u0021stroke\u002Dprimary\u0022\u0020width\u003D\u002220\u0022\u0020height\u003D\u002220\u0022\u0020role\u
6719003D\u0022img\u0022\u003E\u000A\u0020\u0020\u003Cpath\u0020stroke\u002Dlinecap\u003D\u0022round\u0022\u0020stroke\u002Dlinejoin\u003D\u0022round\u0022\u0020d\u003D\u0022M9\u00205l7\u00207\u002D7\u00207\u0022\u002F\u003E\u000A\u003Ctitle\u003Echevron\u002Dright\u003C\u002Ftitle\u003E\u003C\u002Fsvg\u003E\u000A\u003C\u002Fdiv\u003E\u000A\u003Cdiv\u0020class\u003D\u0022swiper\u002Dpagination\u0020absolute\u0020right\u002D1\u002F2\u0020translate\u002Dx\u002D1\u002F2\u0020bottom\u002D5\u0020md\u003Abottom\u002D7\u0022\u003E\u003C\u002Fdiv\u003E\u000A'
6720                    );
6721                }
6722
6723                let autoplayOptions = {autoplay: false};
6724                if (carousel.dataset.autoplay === 'true') {
6725                    autoplayOptions = {
6726                        autoplay: {
6727                            delay: carousel.dataset.autoplaySpeed
6728                        },
6729                        plugins: [ SwiperPluginPagination, SwiperPluginAutoPlay, SwiperPluginNavigation ]
6730                    };
6731                }
6732
6733                let dotsOptions = {pagination: false};
6734                if (carousel.dataset.showDots === 'true') {
6735                    dotsOptions = {
6736                        pagination: {
6737                            el: '.swiper-pagination',
6738                            type: 'bullets',
6739                            clickable: true
6740                        }
6741                    };
6742                }
6743
6744                let arrowsOptions = {navigation: false};
6745                if (carousel.dataset.showArrows === 'true') {
6746                    arrowsOptions = {
6747                        navigation: {
6748                            nextEl: '.swiper-button-next',
6749                            prevEl: '.swiper-button-prev',
6750                        },
6751                    };
6752                }
6753
6754                let options = Object.assign({
6755                    slidesPerView: 'auto',
6756                    loop: carousel.dataset.infiniteLoop?.toLowerCase?.() === 'true'
6757                }, additionalOptions, dotsOptions, arrowsOptions, autoplayOptions);
6758
6759                initCarousel(swiperElement, options);
6760            };
6761
6762            elements.forEach(element => {
6763                if (element.dataset.contentType === 'slider') {
6764                    initProductCarousel(element, {slidesPerView: 1});
6765                } else {
6766                    initProductCarousel(element);
6767                }
6768            });
6769        };
6770
6771        window.addEventListener('init-external-scripts', () => {
6772            const carouselElements = document.querySelectorAll(
6773                `[data-content-type="products"][data-appearance="carousel"],
6774                [data-content-type="slider"], .clerk-product-async, .swiper.products-widget, .swiper, .async-carousel, .clerk`
6775            );
6776
6777            window.carouselInitialized = false;
6778
6779            // Autoplay Plugin
6780            const scriptAutoplay = document.createElement('script');
6781            scriptAutoplay.type = 'text/javascript';
6782            scriptAutoplay.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002FautoPlay.min.js';
6783            document.head.appendChild(scriptAutoplay);
6784
6785            // Pagination Plugin
6786            const scriptPagination = document.createElement('script');
6787            scriptPagination.type = 'text/javascript';
6788            scriptPagination.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002Fpagination.min.js';
6789            document.head.appendChild(scriptPagination);
6790
6791            // Navigation Plugin
6792            const scriptNavigation = document.createElement('script');
6793            scriptNavigation.type = 'text/javascript';
6794            scriptNavigation.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002Fnavigation.min.js';
6795            document.head.appendChild(scriptNavigation);
6796
6797            // Swiper
6798            const script = document.createElement('script');
6799            script.type = 'text/javascript';
6800
6801            script.addEventListener('load', () => {
6802                if (window.carouselInitialized) {
6803                    return;
6804                }
6805
6806                const carouselElementsToInitialize = document.querySelectorAll(
6807                    `[data-content-type="products"][data-appearance="carousel"],
6808                      [data-content-type="slider"], .swiper.products-widget`
6809                );
6810                initCarousels(carouselElementsToInitialize);
6811
6812                window.carouselInitialized = true;
6813                const carouselInitializedEvent = new Event("carousel-initialized");
6814                document.dispatchEvent(carouselInitializedEvent);
6815            });
6816
6817            script.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002Ftinyswiper\u002Dfull.min.js';
6818            document.head.appendChild(script);
6819        }, { once: true, passive: true });
6820    })();
6821
6822    function initCarousel(element = "", options = {}) {
6823        var defaultOptions = {
6824            slidesPerView: 'auto',
6825            navigation: {
6826                nextEl: '.swiper-button-next',
6827                prevEl: '.swiper-button-prev',
6828            },
6829            pagination: {
6830                el: '.swiper-pagination',
6831                type: 'bullets',
6832                clickable: true
6833            },
6834            fadingSlideSelector: ''
6835        };
6836        options = Object.assign(defaultOptions, options);
6837
6838        if (typeof element === 'string' || element instanceof String) {
6839            element = document.querySelector(element);
6840        }
6841
6842        if (!element) {
6843            return false;
6844        }
6845
6846        let paginationElement = element.querySelector(defaultOptions.pagination.el)
6847        if (paginationElement && defaultOptions.pagination) {
6848            defaultOptions.pagination.el = paginationElement;
6849        } else {
6850            defaultOptions.pagination = false
6851        }
6852
6853        let nextElement = element.querySelector(defaultOptions.navigation.nextEl)
6854        if (nextElement && defaultOptions.navigation) {
6855            defaultOptions.navigation.nextEl = nextElement;
6856        } else {
6857            defaultOptions.navigation = false;
6858        }
6859
6860        let prevElement = element.querySelector(defaultOptions.navigation.prevEl)
6861        if (prevElement && defaultOptions.navigation) {
6862            defaultOptions.navigation.prevEl = prevElement;
6863        } else {
6864            defaultOptions.navigation = false;
6865        }
6866
6867        if (options.slidesPerView == 'auto') {
6868            let wrapperWidth = element.clientWidth,
6869                slideWidth = element.querySelector('.swiper-slide').clientWidth;
6870
6871            options.slidesPerView = Math.round(wrapperWidth / slideWidth);
6872        }
6873
6874        if (!options.navigation) {
6875            element.querySelectorAll('.swiper-button-prev, .swiper-button-next')
6876                .forEach((element) => element.remove());
6877        }
6878
6879        if (options.slidesPerView > element.querySelectorAll('.swiper-slide').length) {
6880            element.querySelectorAll('.swiper-button-prev, .swiper-button-next, .swiper-pagination')
6881                .forEach((element) => element.remove());
6882            return;
6883        }
6884
6885        if (typeof Swiper != "undefined") {
6886            let carousel = new Swiper(element, options);
6887            attachCustomBehaviours(carousel, element, options);
6888            return;
6889        }
6890
6891        document.addEventListener("carousel-initialized", function () {
6892            let carousel = new Swiper(element, options);
6893            carousel.slideTo(0); // Fix per disabilitare navigazione quando non c'è overflow degli elementi
6894            attachCustomBehaviours(carousel, element, options);
6895        });
6896
6897    }
6898
6899    function attachCustomBehaviours(carousel, element, options) {
6900        // Fading selected slide behaviour
6901        let fadingSlide;
6902        try {
6903            if (options.fadingSlideSelector) {
6904                fadingSlide = document.querySelector(options.fadingSlideSelector)
6905            } else {
6906                fadingSlide = element.closest('.fading-slide-container').querySelector('.fading-slide');
6907            }
6908        } catch (e) {
6909            fadingSlide = null;
6910        }
6911
6912        if (fadingSlide) {
6913            fadingSlide.classList.add('transition-all');
6914
6915            carousel.on('before-slide', function(currentIndex, state, newIndex) {
6916                if (newIndex > 0) {
6917                    fadingSlide.classList.add('md:opacity-0');
6918                } else if (newIndex == 0) {
6919                    fadingSlide.classList.remove('md:opacity-0');
6920                }
6921            });
6922        }
6923    }
6924</script>
vendor: 1 bytes, line 6924
6924
6925<script>
6926    'use strict';
6927
6928    (() => {
6929        const applyShowOnHover = (element) => {
6930            const showOverlayOnHover = (element) => {
6931                const overlay = element.querySelector('.pagebuilder-overlay');
6932                const color = overlay.dataset.overlayColor;
6933
6934                element.addEventListener('mouseover', () => {
6935                    overlay.style.backgroundColor = color;
6936                });
6937                element.addEventListener('mouseout', () => {
6938                    overlay.style.backgroundColor = 'transparent';
6939                });
6940            };
6941
6942            const showButtonOnHover = (element) => {
6943                const button = element.querySelector('.pagebuilder-banner-button');
6944
6945                element.addEventListener('mouseover', () => {
6946                    button.style.opacity = '1';
6947                    button.style.visibility = 'visible';
6948                });
6949                element.addEventListener('mouseout', () => {
6950                    button.style.opacity = '0';
6951                    button.style.visibility = 'hidden';
6952                });
6953            };
6954
6955            if (element.dataset.showOverlay === 'hover') {
6956                showOverlayOnHover(element);
6957            }
6958            if (element.dataset.showButton === 'hover') {
6959                showButtonOnHover(element);
6960            }
6961        };
6962
6963        window.addEventListener('DOMContentLoaded', () => {
6964            document.querySelectorAll('[data-content-type="banner"],[data-content-type="slider"]').forEach(element => {
6965                applyShowOnHover(element);
6966            });
6967        });
6968    })();
6969</script>
vendor: 1 bytes, line 6969
6969
6970<script>
6971    // Overridden for exception handling
6972    function initPriceBox() {
6973        return {
6974            updatePrice(priceData) {
6975                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
6976                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
6977                // Ensure regularPriceLabel exists before accessing classList
6978                if (regularPriceLabel) {
6979                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
6980                        regularPriceLabel.classList.add('hidden');
6981                    } else {
6982                        regularPriceLabel.classList.remove('hidden');
6983                    }
6984                }
6985
6986                // Ensure regularPriceElement exists before setting innerText
6987                if (regularPriceElement) {
6988                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
6989                }
6990
6991                // Ensure basePriceElement exists before setting innerText
6992                if (basePriceElement) {
6993                    basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
6994                }
6995            }
6996        }
6997    }
6998</script>
6998
6999 
6999<script>
7000        function amastyRewardsCatalog() {
7001            return {
7002                productId: this.$el.dataset.productId,
7003                formSelector: 'product_addtocart_form',
7004                refreshUrl: this.$el.dataset.refreshUrl,
7005                loader: false,
7006                isFetching: false,
7007                abortFetchController: false,
7008                highlight: {
7009                    caption_color: '',
7010                    caption_text: '',
7011                    visible: false
7012                },
7013
7014                init() {
7015                    this.formObserver();
7016                    document.addEventListener(`update-qty-${this.productId}`, () => {
7017                        this.updateData();
7018                    });
7019                    this.$nextTick(() => this.updateData());
7020                },
7021
7022                hideBlock() {
7023                    this.highlight.visible = false;
7024                    this.loader = true;
7025                },
7026
7027                dispatchStatus(type, message) {
7028                    window.dispatchMessages([{
7029                        type: type,
7030                        text: message
7031                    }], 5000);
7032                },
7033
7034                formObserver() {
7035                    const product = document.querySelector(`input[name="product"][value="${this.productId}"]`);
7036
7037                    if (product) {
7038                        const productForm = product.form;
7039                        if (productForm) {
7040                            productForm.addEventListener('change', () => {
7041                                this.updateData();
7042                            });
7043                        }
7044                    }
7045                },
7046
7047                updateData() {
7048                    if (!this.refreshUrl || this.isFetching) return false;
7049                    this.hideBlock();
7050
7051                    if (this.abortFetchController) {
7052                        this.abortFetchController.abort();
7053                    }
7054                    this.abortFetchController = new AbortController();
7055
7056                    const product = document.querySelector(`input[name='product'][value='${this.productId}']`);
7057                    if (!product) return false;
7058
7059                    const form = product.form;
7060                    const formData = new FormData(form);
7061                    const formParams = new URLSearchParams(formData).toString();
7062                    const formJson = JSON.stringify({
7063                        productId: this.productId,
7064                        attributes: formParams
7065                    });
7066
7067                    const requestOptions = {
7068                        method: 'POST',
7069                        body: formJson,
7070                        headers: {
7071                            'Content-Type': 'application/json',
7072                            'x-requested-with': 'XMLHttpRequest',
7073                        },
7074                        signal: this.abortFetchController.signal
7075                    };
7076
7077                    this.isFetching = true;
7078                    fetch(this.refreshUrl, requestOptions).then(response => {
7079                        if (!response.ok) {
7080                            return Promise.reject(`${response.status} ${response.statusText}`);
7081                        }
7082                        return response.json();
7083                    }).then(data => {
7084                        this.highlight.visible = data.visible;
7085                        this.highlight.caption_text = data.caption_text;
7086                        this.highlight.caption_color = data.caption_color;
7087                    }).catch(error => {
7088                        if (error.name !== 'AbortError'
7089                                && typeof error === 'string'
7090                                && error.match(/'401'/g) !== null
7091                            ) {
7092                            this.dispatchStatus('error', error);
7093                        }
7094                    }).finally(() => {
7095                        this.loader = false;
7096                        this.abortFetchController = false;
7097                        this.isFetching = false;
7098                    });
7099                },
7100
7101                highlightVisible() {
7102                    return this.highlight.visible && !this.loader;
7103                },
7104
7105                highlightStyle() {
7106                    return `color: ${this.highlight.caption_color}`;
7107                },
7108            }
7109        }
7110
7111        window.addEventListener(
7112            'alpine:init',
7113            () => Alpine.data('amastyRewardsCatalog', amastyRewardsCatalog),
7114            { once: true }
7115        );
7116 </script>
7116
7117 
7117<script>
7118    'use strict';
7119
7120    const grecaptchaV2LoadCallbacks = [];
7121
7122    function executeRecaptchaLoadCallbacks () {
7123        while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) {
7124            const callback = grecaptchaV2LoadCallbacks.pop();
7125            typeof callback === 'string' ? window[callback]() : callback();
7126        }
7127    }
7128
7129    (function() {
7130        const loadRecaptchaScript = (event) => {
7131
7132            if (window.grecaptcha || !event.target.form) {
7133                return;
7134            }
7135
7136            const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks';
7137            const siteKey = '6LdDii8sAAAAAF1j_v4WIzmCV2phMFuJKWeFtEhJ';
7138            const script = document.createElement('script');
7139            script.type = 'text/javascript';
7140            script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`;
7141            script.async = true;
7142            document.head.appendChild(script);
7143
7144            script.addEventListener('load', () => {
7145                Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled'));
7146            });
7147        }
7148
7149        window.forceLoadRecaptchaScript = (form) => {
7150            loadRecaptchaScript({target: {form: form || 'dummy'}});
7151            executeRecaptchaLoadCallbacks();
7152        };
7153
7154        document.body.addEventListener('input', loadRecaptchaScript, { once: true });
7155        document.body.addEventListener('focus', loadRecaptchaScript, { once: true });
7156
7157    }());
7158
7159</script>
vendor: 1 bytes, line 7159
7159
7160<script>
7161    function selectManager() {
7162        return {
7163            value: '',
7164
7165            input: {
7166                ['x-model']: "value",
7167                [':class']: "{ 'invalid-placeholder': !value || value == \"\" }",
7168                ['x-init']() {
7169                    this.value = this.$el.options[this.$el.selectedIndex || 0].value
7170                }
7171            }
7172        }
7173    }
7174
7175    function qtyManager() {
7176        return {
7177            inputElement: null,
7178            value: 0,
7179            step: 1,
7180            min: null,
7181            max: null,
7182
7183            input: {
7184                ["x-model"]: "value",
7185                ['x-init']() {
7186                    this.inputElement = this.$el;
7187                    this.value = parseInt(this.$el.value);
7188                },
7189                ['x-on:input'] ($event) {
7190                    let inputValue = parseInt($event.target.value.replace(/\D/g, ''));
7191                    if (!this.checkMin(inputValue)) {
7192                        this.value = this.min;
7193                    } else if (!this.checkMax(inputValue)) {
7194                        this.value = this.max;
7195                    } else {
7196                        this.value = inputValue;
7197                    }
7198                }
7199            },
7200            plus: {
7201                ['@click']() {
7202                    if (this.checkMax(this.value, this.step)) {
7203                        this.value += this.step;
7204                    }
7205                    this.inputElement.dispatchEvent(new Event('changed'));
7206                }
7207            },
7208            minus: {
7209                ['@click']() {
7210                    if (this.checkMin(this.value, this.step)) {
7211                        this.value -= this.step;
7212                    }
7213                    this.inputElement.dispatchEvent(new Event('changed'));
7214                }
7215            },
7216            checkMin(value, step = null) {
7217                if (this.min) {
7218                    if (step) {
7219                        return value - step >= this.min;
7220                    }
7221                    return value >= this.min;
7222                }
7223                return true;
7224            },
7225            checkMax(value, step = null) {
7226                if (this.max) {
7227                    if (step) {
7228                        return value + step <= this.max;
7229                    }
7230                    return value <= this.max;
7231                }
7232                return true;
7233            }
7234        }
7235    }
7236
7237    /** Questo potrebbe convenire aggiungerlo solamente dove usiamo quell'input **/
7238    function dateInputManager() {
7239        return {
7240            value: '',
7241
7242            input: {
7243                ["x-model"]: "value",
7244                ['x-init']() {
7245                    this.value = this.$el.value
7246                },
7247
7248                ['x-on:input'](e) {
7249                    let date = e.target.value.replace(/\D/g, '');
7250                    let formattedDate = '';
7251
7252                    if (date.length >= 2) {
7253                        let value = date.substring(0, 2);
7254                        if (value > 31) {
7255                            value = 31;
7256                        }
7257                        formattedDate = value + '/';
7258                    } else {
7259                        this.value = date;
7260                        return;
7261                    }
7262
7263                    if (date.length >= 4) {
7264                        let value = date.substring(2, 4);
7265                        if (value > 12) {
7266                            value = 12;
7267                        }
7268                        formattedDate += value + '/';
7269                    } else {
7270                        this.value = formattedDate + date.substring(2, date.length);
7271                        return;
7272                    }
7273
7274                    if (date.length > 4) {
7275                        formattedDate += date.substring(4, 8);
7276                    } else {
7277                        this.value = formattedDate + date.substring(4, date.length);
7278                        return;
7279                    }
7280
7281                    this.value = formattedDate;
7282                }
7283            }
7284        }
7285    }
7286</script>
vendor: 1 bytes, line 7286
7286
7287<script>
7288    (function (w,d){
7289        function setScrollbarWidthCssVar() {
7290            let newSize = (w.innerWidth - d.body.clientWidth) + "px",
7291                oldSize = d.documentElement.style.getPropertyValue('--scrollbar-width');
7292            if (newSize !== oldSize){
7293                d.documentElement.style.setProperty('--scrollbar-width', newSize);
7294            }
7295        }
7296        d.addEventListener('alpine:init', () => {
7297            new ResizeObserver(Alpine.debounce(setScrollbarWidthCssVar, 300)).observe(d.documentElement);
7298        }, { once: true });
7299        setScrollbarWidthCssVar();
7300    }) (window, document);
7301    /** Effettua il lock della viewport quando necessario (es. all'apertura del menu o del minicart) */
7302    window.addEventListener('screen-lock', (event) => {
7303        document.body.classList.toggle('max-h-screen', event.detail);
7304        document.body.classList.toggle('lock-screen', event.detail);
7305        document.body.classList.toggle('overflow-hidden', event.detail);
7306    });
7307
7308    function initCustomerMenuMobile() {
7309        return {
7310            open: false,
7311            customer: {},
7312            getData(data) {
7313                if (data.customer) { this.customer = data.customer }
7314            },
7315            isLoggedIn(){
7316                return !!(this.customer.firstname);
7317            }
7318        }
7319    }
7320</script>
7320
7321
7322<script>
7323    (function () {
7324        const modals = [];
7325                let lastHide = 0;
7326
7327                function resolveElement($refs, value) {
7328            if (!value) return null;
7329                        if (value instanceof Element) return value;
7330                        if (typeof value === 'string') {
7331                try {
7332                    return ($refs && $refs[value]) || document.querySelector(value) || null;
7333                } catch (e) {}
7334            }
7335            return null;
7336        }
7337
7338                function determineTrigger($refs, dialog, trigger) {
7339                        if (!trigger && dialog?.target instanceof HTMLElement) {
7340                return dialog.target;
7341            }
7342
7343                        if (typeof dialog === 'string' && trigger?.target instanceof HTMLElement) {
7344                return trigger.target;
7345            }
7346
7347            return resolveElement($refs, trigger);
7348        }
7349
7350                function setFocusFirstElement(dialogElement) {
7351            if (!dialogElement) return;
7352
7353            window.setTimeout(() => {
7354                const candidates = dialogElement.querySelectorAll('[x-focus-first]');
7355                for (const candidate of candidates) {
7356                    if (candidate.closest('dialog') === dialogElement) {
7357                        candidate.focus();
7358                        return;
7359                    }
7360                }
7361            }, 50);
7362        }
7363
7364        window.hyva.modal = function(options = {}) {
7365                        if (this.$el && this.$el.dataset && this.$el.dataset.options) {
7366                try {
7367                    options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}'));
7368                } catch (e) {
7369                    throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON');
7370                }
7371            }
7372
7373            const config = Object.assign({
7374                dialog: 'dialog',                 duration: 300,                 transitionEnter: 'transition ease-out duration-300',
7375                transitionEnterStart: 'opacity-0',
7376                transitionEnterEnd: 'opacity-100',
7377                transitionLeave: 'transition ease-in duration-300',
7378                transitionLeaveStart: 'opacity-100',
7379                transitionLeaveEnd: 'opacity-0',
7380            }, options);
7381
7382            return {
7383                opened: {},
7384                show(dialog, trigger) {
7385                    const name = typeof dialog === 'string' ? dialog : config.dialog;
7386                    if (!name || this.opened[name]) return;
7387
7388                    this.opened[name] = true;
7389                    const focusTarget = determineTrigger(this.$refs, dialog, trigger);
7390                    const dialogEl = this.$refs && this.$refs[name];
7391                    const frame = { name, instance: this, focusTarget, time: Date.now() };
7392                    modals.push(frame);
7393                    setFocusFirstElement(dialogEl);
7394                    return new Promise(resolve => { frame.resolve = resolve; });
7395                },
7396                cancel() {
7397                    this.hide(false);
7398                },
7399                ok() {
7400                    this.hide(true);
7401                },
7402                hide(value) {
7403                                        if (Date.now() - lastHide < config.duration) return;
7404                    lastHide = Date.now();
7405
7406                                        const modal = modals.pop();
7407                    if (!modal) return;
7408
7409                    modal.instance.opened[modal.name] = false;
7410
7411                                        const focusTarget = modal.focusTarget;
7412                    focusTarget && window.setTimeout(() => focusTarget.focus(), config.duration + 50);
7413                    modal.resolve && modal.resolve(value);
7414                },
7415                /**
7416                 * @deprecated Use dialogConfig() instead, which is used by the default modal-container.phtml template.
7417                 * This method is kept for backwards compatibility with custom container templates.
7418                 */
7419                overlay(dialog) {
7420                    dialog = this.$el.dataset.dialogRefName || dialog;
7421                    const name = typeof dialog === 'string' ? dialog : config.dialog;
7422                    if (this.$el.tagName !== 'DIALOG' && ! window.hyva.modal.legacyModalCompatibility) {
7423                        console.warn(
7424                            '[hyva] Deprecated modal markup detected (x-bind="overlay" on a non-dialog element' +
7425                            (name ? ` for "${name}"` : '') + ').\n' +
7426                            'Escape and click-outside closing are not available for such dialogs anymore.\n' +
7427                            'Install hyva-themes/magento2-legacy-modal-compatibility or migrate to the native <dialog> markup.'
7428                        );
7429                    }
7430                    return Object.assign({}, this.dialogConfig(name), {
7431                        ['@hyva-modal-show.window'](event) {
7432                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide)
7433                        }
7434                    });
7435                },
7436                dialogConfig(name) {
7437                    name = name || this.$el.dataset.dialogRefName || config.dialog;
7438                    return {
7439                        ['x-show']: () => name ? this.opened[name] : false,
7440                        ['x-transition:enter']: config.transitionEnter,
7441                        ['x-transition:enter-start']: config.transitionEnterStart,
7442                        ['x-transition:enter-end']: config.transitionEnterEnd,
7443                        ['x-transition:leave']: config.transitionLeave,
7444                        ['x-transition:leave-start']: config.transitionLeaveStart,
7445                        ['x-transition:leave-end']: config.transitionLeaveEnd,
7446                        ['@hyva-modal-show.window'](event) {
7447                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide);
7448                        },
7449                    };
7450                },
7451                showDialogOnInit() {
7452                    const name = this.$el.dataset.dialogRefName;
7453                    if (name) {
7454                        this.show(name);
7455                    }
7456                }
7457            };
7458        }
7459
7460        window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length - 1]
7461
7462        window.hyva.modal.pop = function () {
7463            if (modals.length > 0) {
7464                modals[modals.length - 1].instance.hide();
7465            }
7466        }
7467
7468        /**
7469         * @deprecated Native <dialog> handles focus trapping automatically.
7470         * Calling this function has no effect. Kept for backwards compatibility.
7471         */
7472        window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) {}
7473
7474        /**
7475         * @deprecated Native <dialog> with x-htmldialog handles ESC key and click-outside events.
7476         * These functions have no effect. Kept for backwards compatibility.
7477         */
7478        window.hyva.modal.eventListeners = {
7479            keydown: event => {},
7480            click: event => {}
7481        };
7482    })();
7483
7484    window.addEventListener('alpine:init', () => {
7485        Alpine.data('hyvaModal', window.hyva.modal);
7486    }, {once: true});
7487</script>
7487
7488
7489<!-- Start Google Analytics 4 for Google Tag Manager by MagePal -->
7490<script type="text/javascript">
7491    (function () {
7492        let globalDatalayer = window.dataLayer = window.dataLayer || [];
7493
7494        function init() {
7495            const data = [{"event":"view_cart","ecommerce":{"currency":"EUR","items":[],"value":null},"_clear":true}];
7496            if (data) {
7497                let storedData = null
7498
7499                data.forEach((item) => {
7500                    // Set category data on product detail page
7501                    if (item?.event === 'view_item') {
7502                        if (storedData === null) {
7503                            storedData = JSON.parse(window.localStorage.getItem("product-click-ga4"));
7504                        }
7505
7506                        item?.ecommerce?.items?.forEach((product) => {
7507                            if (storedData?.index) {
7508                                product.index = storedData.index
7509                            }
7510
7511                            if (storedData?.item_list_name) {
7512                                product.item_list_name = storedData.item_list_name;
7513                                product.item_list_id = storedData.item_list_id;
7514                            }
7515                        })
7516                    }
7517
7518                    globalDatalayer.push(item);
7519                })
7520            }
7521        }
7522
7523        init();
7524
7525                // Track product clicks
7526        const productsList = []
7527        productsList.forEach((list) => {
7528            document.querySelectorAll(list?.class_name).forEach((productLink) => {
7529                productLink.addEventListener("click", () => {
7530                    productClick(productLink, list)
7531                })
7532            })
7533        })
7534
7535        function productClick(element, list) {
7536            const container = element.closest(list?.container_class)
7537
7538            // Find product url
7539            let productUrl = null
7540            if (container && container.querySelector('a.product-item-link')) {
7541                productUrl = container.querySelector('a.product-item-link').href
7542            } else if (container && container.querySelector('a.product-item-photo')) {
7543                productUrl = container.querySelector('a.product-item-photo').href
7544            } else {
7545                productUrl = element.href
7546            }
7547
7548            const autoRedirectTimer = setTimeout(function () {
7549                document.location = productUrl
7550            }, 3000);
7551
7552            const priceBox = container.querySelector("[data-product-id]")
7553            if (priceBox) {
7554                const productId = priceBox.dataset.productId
7555
7556                const productCollections = globalDatalayer.find((layer) => layer?.ecommerce?.items).ecommerce?.items
7557                const product = productCollections.find((product) => product.p_id == productId)
7558
7559                const productClickData = {
7560                    pid: productId,
7561                    item_id: product.item_id,
7562                    item_list_name: list.item_list_name,
7563                    item_list_id: list.item_list_id,
7564                    index: product.index
7565                }
7566                window.localStorage.setItem("product-click-ga4", JSON.stringify(productClickData))
7567
7568                globalDatalayer.push({
7569                    'event': 'select_item',
7570                    'ecommerce': {
7571                        'items': [product]
7572                    },
7573                    'eventCallback': function () {
7574                        clearTimeout(autoRedirectTimer);
7575                        document.location = productUrl
7576                    },
7577                    '_clear': true
7578                });
7579
7580                return false
7581            }
7582
7583            return true
7584        }
7585            })();
7586</script>
7586
7587<!-- End Google Analytics 4 for Google Tag Manager by MagePal -->
7588
7589<!-- Wrapping template -->
7590<script type="text/template" id="instant_wrapper_template">
7591    {{#findAutocomplete}}
7592    <div id="algolia-autocomplete-container"></div>
7593    {{/findAutocomplete}}
7594
7595    <div id="algolia_instant_selector"
7596         class=" with-facets"
7597    >
7598        <div class="columns">
7599            <aside class="sidebar sidebar-main relative" id="algolia-left-container">
7600                <button class="filters lg:hidden btn btn-tertiary bg-tertiary-darker text-white rounded-lg flex pl-3 pr-4 py-1.5 items-center" onclick="toggleAaFilters()">
7601                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" alt="Icona" role="presentation">
7602                        <path stroke-linecap="round" stroke-linejoin="round" d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"></path>
7603                        <title>adjustments</title>
7604                    </svg>
7605                    <span class="ml-1.5 font-baloo-bhaina">
7606                          Filtri                    </span>
7607                </button>
7608                <div class="mb-4 hidden lg:block" id="facets">
7609                    <div class="aa-mobile-header flex px-layoutGutter py-3 border-b mb-2 justify-between items-center lg:hidden shadow-md">
7610                        <span class="text-primary text-lg font-bold mx-auto pl-6">
7611                            Filtri                        </span>
7612                        <span id="aa-mobile-toggler" class="cursor-pointer" onclick="toggleAaFilters()">
7613                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img">
7614                                <path d="M21.82 24c-.58 0-1.13-.23-1.54-.64l-8.27-8.27-8.29 8.27a2.179 2.179 0 0 1-3.08-3.08L8.92 12 .64 3.73a2.19 2.19 0 0 1 0-3.09 2.172 2.172 0 0 1 3.08 0L12 8.92 20.27.64a2.19 2.19 0 0 1 3.09 0c.85.85.85 2.23 0 3.09L15.08 12l8.27 8.27c.85.85.85 2.24 0 3.09-.41.41-.96.64-1.54.64Z" style="fill:currentColor"></path>
7615                                <title>x</title>
7616                            </svg>
7617                        </span>
7618                    </div>
7619                    <div class="pt-[50px] px-layoutGutter lg:px-0 lg:pt-0" id="instant-search-facets-container">
7620                        <div class="hidden lg:block text-primary text-md text-xl lg:text-2xl font-semibold h-10 mt-2.5">
7621                            Filtri                        </div>
7622                        <div class="w-full flex flex-col bg-white shadow hidden lg:mt-4 py-3" id="instant-search-active-filters">
7623                            <span class="title text-base font-bold font-baloo-bhaina hidden" id="instant-search-active-filters-label">
7624                                Filtri attivi                            </span>
7625                            <div class="order-2" id="clear-refinements"></div>
7626                            <div id="current-refinements"></div>
7627                        </div>
7628                    </div>
7629                </div>
7630            </aside>
7631            <div class="column main" id="algolia-right-container">
7632                <div class="hidden">
7633                    <div class="pb-3.5">
7634                        <div class="px-2.5">
7635                            {{#second_bar}}
7636                            <div id="instant-search-bar"></div>
7637                            {{/second_bar}}
7638                        </div>
7639                    </div>
7640                </div>
7641                <div class="relative">
7642                    <div itemscope itemtype="http://schema.org/ItemList" class="w-full">
7643                        <div id="algolia-toolbar" class="toolbar toolbar-products items-center flex justify-between">
7644                            <div class="left flex items-center">
7645                                <div id="algolia-stats"></div>
7646                            </div>
7647                            <div class="right flex items-center">
7648                                <span class="mr-2 inline-block">
7648Ordina per</span>
7649                                <div id="algolia-sorts"></div>
7650                            </div>
7651                        </div>
7652                        <div id="algolia-banner"></div>
7653                        <div id="instant-empty-results-container"></div>
7654                        <div class="py-6" id="instant-search-results-container"></div>
7655                    </div>
7656                </div>
7657                <div>
7658                    <div id="algolia-stats-range" class="mb-2"></div>
7659                    <div id="instant-search-pagination-container"></div>
7660                </div>
7661            </div>
7662        </div>
7663    </div>
7664</script>
7664
7665
7666<script>
7667    function toggleAaFilters() {
7668        try {
7669            var facets = document.getElementById('facets');
7670            if (!facets) return;
7671
7672            // Toggle visibility of facets (mobile overlay)
7673            facets.classList.toggle('hidden');
7674
7675            var isOpen = !facets.classList.contains('hidden');
7676            var body = document.body;
7677            var lockClasses = ['max-h-screen', 'lock-screen', 'overflow-hidden', 'instant-lock'];
7678            lockClasses.forEach(function (cls) {
7679                if (isOpen) {
7680                    body.classList.add(cls);
7681                } else {
7682                    body.classList.remove(cls);
7683                }
7684            });
7685
7686            // Apply or remove mobile collapsible bindings only when toggler is used
7687            try {
7688                if (window.AISFacetsCollapsible) {
7689                    if (isOpen) {
7690                        window.AISFacetsCollapsible.enable();
7691                    }
7692                }
7693            } catch (e2) { /* noop */ }
7694        } catch (e) {
7695            // Fail-safe: do nothing on error
7696            console.error('toggleAaFilters error', e);
7697        }
7698    }
7699</script>
7699
7700
7701<script>
7702    // Mobile-only: make Algolia facets panels (.ais-Panel) collapsible after they are rendered
7703    (function() {
7704        'use strict';
7705        var MOBILE_MQL = window.matchMedia('(max-width: 1023px)'); // Tailwind lg breakpoint
7706
7707        function applyCollapsible(root) {
7708            if (!root) return;
7709            var panels = root.querySelectorAll('.ais-Panel');
7710            panels.forEach(function(panel) {
7711                if (!panel || panel.dataset.collapsibleApplied === '1') return;
7712                var header = panel.querySelector('.ais-Panel-header');
7713                var body = panel.querySelector('.ais-Panel-body');
7714                if (!header || !body) return;
7715
7716                // Mark as processed
7717                panel.dataset.collapsibleApplied = '1';
7718
7719                // Ensure default open state
7720                panel.classList.remove('is-collapsed');
7721                header.setAttribute('aria-expanded', 'true');
7722
7723                // Make header interactive
7724                header.setAttribute('role', 'button');
7725                header.setAttribute('tabindex', '0');
7726
7727                // Inject chevron-down if not present
7728                if (!header.querySelector('.ais-Panel-chevron')) {
7729                    var chev = document.createElement('span');
7730                    chev.className = 'ais-Panel-chevron chevron';
7731                    chev.setAttribute('aria-hidden', 'true');
7732                    chev.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" role="img" aria-hidden="true"><path d="M6.23 8.34a1 1 0 0 1 1.41 0L12 12.7l4.36-4.36a1 1 0 1 1 1.41 1.41l-5.07 5.07a1 1 0 0 1-1.41 0L6.23 9.75a1 1 0 0 1 0-1.41Z" fill="currentColor"/></svg>';
7733                    header.appendChild(chev);
7734                }
7735
7736                var toggle = function() {
7737                    var collapsed = panel.classList.toggle('is-collapsed');
7738                    header.setAttribute('aria-expanded', String(!collapsed));
7739                };
7740
7741                header.addEventListener('click', toggle);
7742                header.addEventListener('keydown', function(e) {
7743                    if (e.key === 'Enter' || e.key === ' ') {
7744                        e.preventDefault();
7745                        toggle();
7746                    }
7747                });
7748            });
7749        }
7750
7751        function enableMobileCollapsible() {
7752            if (!MOBILE_MQL.matches) return;
7753            var container = document.getElementById('instant-search-facets-container');
7754            if (!container) return;
7755            applyCollapsible(container);
7756
7757            // Observe for dynamic facet (re)renders
7758            if (!container._aisCollapsibleObserver) {
7759                var obs = new MutationObserver(function() {
7760                    applyCollapsible(container);
7761                });
7762                obs.observe(container, { childList: true, subtree: true });
7763                container._aisCollapsibleObserver = obs;
7764            }
7765        }
7766
7767        function disableMobileCollapsible() {
7768            var container = document.getElementById('instant-search-facets-container');
7769            if (!container) return;
7770            // Ensure all panels are open on desktop
7771            container.querySelectorAll('.ais-Panel').forEach(function(panel) {
7772                panel.classList.remove('is-collapsed');
7773                var header = panel.querySelector('.ais-Panel-header');
7774                if (header) {
7775                    header.setAttribute('aria-expanded', 'true');
7776                }
7777            });
7778            if (container._aisCollapsibleObserver) {
7779                try { container._aisCollapsibleObserver.disconnect(); } catch (e) {}
7780                container._aisCollapsibleObserver = null;
7781            }
7782        }
7783
7784        // Expose API to be triggered explicitly by the mobile toggler
7785        window.AISFacetsCollapsible = {
7786            enable: enableMobileCollapsible,
7787            disable: disableMobileCollapsible,
7788            _mql: MOBILE_MQL
7789        };
7790    })();
7791</script>
7791
7792
7793<style>
7794    .ais-ClearRefinements-button span {
7795        display: none;
7796    }
7797
7798    .ais-ClearRefinements-button::after {
7799        content: 'Cancella tutto';
7800    }
7801</style>
7802<script type="text/template" id="instant-hit-template">
7803    <div class="item product product-item card card-interactive flex flex-col w-full h-full border hover:border-tertiary rounded-lg p-2 lg:px-4 lg:py-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"
7804         x-data="initInsight()"
7805         x-init="bindClickEvent($el, 'Product Clicked', '{{objectID}}', '{{__indexName}}', '{{__position}}', '{{__queryID}}')"
7806    >
7807        <meta itemprop="position" content="{{__position}}"/>
7808        <div class="relative flex flex-col flex-grow" itemprop="item" itemscope itemtype="http://schema.org/Product">
7809            <meta itemprop="url"
7810                  {{^__queryID}} content="{{url}}" {{/__queryID}}
7811                  {{#__queryID}} content="{{urlForInsights}}" {{/__queryID}}
7812            />
7813
7814            <span class="badge-container flex flex-wrap gap-2 absolute z-10" x-defer="intersect" x-intersect.once="$store.badges.addNode({{objectID}}, 'card_top_left')">
7815                <template x-for="badge in $store.badges.getBadgesHtml({{objectID}}, 'card_top_left')">
7816                    <span x-html="badge"></span>
7817                </template>
7818            </span>
7819
7820            <a class="product photo product-item-photo block mx-auto mb-4 result flex items-center justify-center max-w-[142px] max-h-[142px]"
7821               tabindex="-1"
7822               {{^__queryID}} href="{{url}}" {{/__queryID}}
7823               {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}}
7824            >
7825                {{#image_url}}<img itemprop="image" src="{{{image_url}}}" alt="{{{name}}}" class="max-w-full max-h-full object-contain"/>{{/image_url}}
7826                {{^image_url}}<span class="no-image block max-w-[142px] max-h-[142px] bg-gray-3"></span>{{/image_url}}
7827            </a>
7828
7829            <div class="product-info flex flex-col grow justify-start">
7830                <div class="items-center justify-center">
7831                    <a class="product-item-link result"
7832                       {{^__queryID}} href="{{url}}" {{/__queryID}}
7833                       {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}}>
7834                        <h2 class="text-primary text-xs line-clamp-3 font-normal">
7835                            {{{ _highlightResult.name.value }}}
7836                        </h2>
7837                    </a>
7838                </div>
7839                <div class="mt-1 mb-1">
7840                    {{#rating_count}}
7841                    <div class="rating-summary" title="{{rating_summary}}%" role="group" aria-label="{{rating_summary}}%">
7842                        <div class="inline-flex align-middle" style="line-height: 0;">
7843                            <div class="relative">
7844                                <div class="flex">
7845                                    <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #cbd5e0" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7846                                    <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #cbd5e0" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7847                                    <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #cbd5e0" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
7847</svg>
7848                                    <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #cbd5e0" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7849                                    <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #cbd5e0" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7850                                </div>
7851                                <div class="absolute top-0 left-0 overflow-hidden" style="width: {{rating_summary}}%">
7852                                    <div class="flex w-fit">
7853                                        <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #f6e05e" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7854                                        <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #f6e05e" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7855                                        <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #f6e05e" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7856                                        <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #f6e05e" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7857                                        <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="3 0 20 20" fill="currentColor" style="color: #f6e05e" aria-hidden="true"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/></svg>
7858                                    </div>
7859                                </div>
7860                            </div>
7861                            <span class="ml-1 text-xs relative top-[-1px]">({{rating_count}})</span>
7862                        </div>
7863                    </div>
7864                    {{/rating_count}}
7865                </div>
7866
7867                <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
7868                    <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
7869                        <template x-if="active = true">
7870                            <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode({{objectID}})">
7871                                <template x-if="!$store.ajaxPrices.hasPrice({{objectID}})">
7872                                    <div class="skeleton w-16 lg:w-full h-6">
7873                                        Caricamento...                                    </div>
7874                                </template>
7875                                <template x-if="$store.ajaxPrices.hasPrice({{objectID}})">
7876                                    <span x-html="$store.ajaxPrices.getPriceHtml({{objectID}})"></span>
7877                                </template>
7878                            </div>
7879                        </template>
7880                    </span>
7881
7882                    {{#isAddToCartEnabled}}
7883                    {{#in_stock}}
7884                        <form class="flex-grow-0 product_addtocart_form" data-role="tocart-form" action="{{ addToCart.action }}" method="post">
7885                            <input type="hidden" name="product" value="{{objectID}}">
7886                            <input type="hidden" name="uenc" value="{{ addToCart.uenc }}">
7887                            <input name="form_key" type="hidden" value="{{ addToCart.formKey }}">
7888                            <button type="submit" title="Aggiungi al Carrello"
7889                                    class="w-auto btn btn-primary mt-auto z-10 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2"
7890                            >
7891                                <svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewBox="0 0 23.99 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true" alt="Icona" role="presentation"><path fill="#fff" d="m4.93,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m14.79,21.86c0-1.18.96-2.14,2.14-2.14,1.18,0,2.14.96,2.14,2.14,0,1.18-.96,2.14-2.14,2.14,0,0,0,0,0,0-1.18,0-2.13-.96-2.14-2.14Z"></path><path fill="#fff" d="m18.73,7.07v-1.81h-1.8c-.64,0-1.15-.51-1.15-1.15s.51-1.15,1.15-1.15h1.8v-1.8C18.73.52,19.25,0,19.89,0s1.15.52,1.15,1.15v1.8h1.8c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15h-1.8v1.81c0,.64-.52,1.15-1.15,1.15s-1.15-.52-1.15-1.15Z"></path><path fill="#fff" d="m8.6,19.07c-2.58,0-4.76-1.93-5.06-4.5L2.18,3.03c-.05-.41-.4-.72-.82-.72h-.22c-.64,0-1.15-.52-1.15-1.15C0,.52.51,0,1.15,0h.22c1.58,0,2.92,1.19,3.1,2.76l.03.2h8.49c.64,0,1.15.51,1.15,1.15s-.51,1.15-1.15,1.15H4.77l.88,7.56h11.92c1.35,0,2.51-.97,2.75-2.3.1-.54.57-.94,1.13-.95.07,0,.14,0,.21.02.3.05.57.23.74.48.18.25.25.56.19.86-.43,2.43-2.55,4.2-5.01,4.19H6.05c.45,1,1.45,1.64,2.55,1.65h10.3c.64,0,1.15.52,1.15,1.15s-.52,1.15-1.15,1.15h-10.3Z"></path></svg>
7892                            </button>
7893                        </form>
7894                    {{/in_stock}}
7895                    {{^in_stock}}
7896                        <a class="w-auto mt-auto z-10 btn btn-primary bg-quaternary hover:bg-slate-900 active:bg-slate-900 justify-center text-sm rounded-md px-3 lg:px-4 py-2 ml-2" aria-label="Notify me"
7897                           {{^__queryID}} href="{{url}}" {{/__queryID}}
7898                           {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}}
7899                    >
7900                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true" alt="Icona" role="presentation">
7901                                <path d="M19.5 24c-.38 0-.69-.31-.68-.69 0-.22.11-.43.28-.55a9.215 9.215 0 0 0 3.55-5.77c.07-.31.35-.53.67-.53.05 0 .1 0 .15.02.37.08.6.44.52.81a10.61 10.61 0 0 1-4.08 6.58c-.12.09-.26.13-.41.13Zm-6.88 0c-1.04 0-2.05-.32-2.89-.92l-.2-.14-.2.15c-2 1.5-4.85 1.1-6.35-.9a4.547 4.547 0 0 1-.06-5.37l.17-.24-1.57-1.56a5.049 5.049 0 0 1 0-7.16c.28-.28.59-.53.93-.74L8.4 3.45A8.797 8.797 0 0 1 18.64 4l.24.19 1.92-1.92c.26-.27.7-.28.97-.01.27.26.28.7.01.97l-.01.01-1.92 1.92.19.24a8.864 8.864 0 0 1 .81 9.86l-3.88 6.33a5.058 5.
7901058 0 0 1-3.73 2.39c-.2.02-.4.04-.6.04Zm.52-20.57c-1.42 0-2.82.41-4.02 1.18L3.17 8.28a3.7 3.7 0 0 0-.68 5.76l7.51 7.5c.7.69 1.64 1.08 2.62 1.08.15 0 .29 0 .43-.03 1.13-.13 2.13-.77 2.73-1.74l3.87-6.3a7.478 7.478 0 0 0-1.24-8.93l-.59-.58v.05a7.325 7.325 0 0 0-4.7-1.67Zm-9.09 14.1-.22.4c-.69 1.24-.47 2.78.54 3.77 1.01.96 2.51 1.17 3.75.52l.41-.22-4.48-4.48ZM.68 5.22a.69.69 0 0 1-.55-1.09C1.76 1.95 4.16.48 6.83.02S6.92 0 6.97 0c.38 0 .69.3.69.68 0 .33-.23.61-.55.68a9.18 9.18 0 0 0-5.89 3.58c-.13.17-.33.28-.55.28Z" style="fill:currentColor"></path>
7902                            </svg>
7903                        </a>
7904                    {{/in_stock}}
7905
7906                    {{/isAddToCartEnabled}}
7907                </div>
7908            </div>
7909        </div>
7910    </div>
7911</script>
vendor: 1 bytes, line 7911
7911
7912<script>
7913    'use strict';
7914
7915    function initInsight() {
7916        return {
7917            bindClickEvent(element, eventName, objectID, indexName, position, queryID) {
7918                element.querySelector(algoliaConfig.ccAnalytics.ISSelector).addEventListener("click", function () {
7919                    buildInsightsEventData(eventName, objectID, indexName, position, queryID);
7920                });
7921            }
7922        }
7923    }
7924</script>
vendor: 1 bytes, line 7924
7924
7925<script type="text/template" id="instant-stats-total-template">
7926    <div class="font-body-sm text-gray-1 hidden lg:block">
7927        <span itemprop="numberOfItems">{{nbHits}}</span>
7928        <span>prodotti</span>
7929    </div>
7930</script>
7930
7931
7932<script type="text/template" id="instant-stats-range-template">
7933    <div class="toolbar-amount font-body-sm text-gray-1 pb-4 text-center">
7934        <span itemprop="numberOfItems">{{first}}-{{last}}</span>
7935        <span>di</span>
7936        <span itemprop="numberOfItems">{{nbHits}}</span>
7937    </div>
7938</script>
vendor: 1 bytes, line 7938
7938
7939<script type="text/template" id="refinements-lists-item-template">
7940    <label class="{{cssClasses.label}} {{#isRefined}}checked{{/isRefined}} flex items-center mb-1">
7941        <input class="{{cssClasses.checkbox}}" {{#isRefined}}checked{{/isRefined}} type="checkbox" value="{{value}}" />
7942        <span class="pl-2">{{value}}</span>
7943        <span class="{{cssClasses.count}} flex-grow text-right">{{count}}</span>
7944    </label>
7945</script>
vendor: 1 bytes, line 7945
7945
7946<script type="text/template" id="current-refinements-template">
7947    <div class="cross-wrapper">
7948        <span class="clear-cross clear-refinement"></span>
7949    </div>
7950    <div class="current-refinement-wrapper">
7951        {{#label}}
7952        <span class="current-refinement-label">{{label}}{{^operator}}:{{/operator}}</span>
7953        {{/label}}
7954        {{#operator}}
7955        {{{displayOperator}}}
7956        {{/operator}}
7957        {{#exclude}}-{{/exclude}}
7958        <span class="current-refinement-name">{{name}}</span>
7959    </div>
7960</script>
7960
7961
7962<section x-data="initAmGdprLoader"
7963         @amgdpr-loading-start.window="showLoader"
7964         @amgdpr-loading-stop.window="hideLoader"
7965>
7966    
7967<div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50"
7968     style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgb(255 255 255/0.60);"
7969     x-show="isLoading"
7970     x-transition:enter="ease-out duration-200"
7971     x-transition:enter-start="opacity-0"
7972     x-transition:enter-end="opacity-100"
7973     x-transition:leave="ease-in duration-200"
7974     x-transition:leave-start="opacity-100"
7975     x-transition:leave-end="opacity-0">
7976    <svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 38 38" stroke="#ffb590" class="text-primary" role="img">
7977    <g fill="none" fill-rule="evenodd">
7978        <g transform="translate(1 1)" stroke-width="2">
7979            <circle stroke="#ff6801" cx="18" cy="18" r="18"/>
7980            <path d="M36 18c0-9.94-8.06-18-18-18">
7981                <animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"/>
7982            </path>
7983        </g>
7984    </g>
7985<title>loader</title></svg>
7986</div>
7987</section>
7988
7989<script data-cfasync="false">
7990    'use strict';
7991
7992    function initAmGdprLoader() {
7993        return {
7994            isLoading: false,
7995
7996            /**
7997             * @returns {void}
7998             */
7999            showLoader: function () {
8000                this.isLoading = true;
8001            },
8002
8003            /**
8004             * @returns {void}
8005             */
8006            hideLoader: function () {
8007                this.isLoading = false;
8008            }
8009        }
8010    }
8011
8012    window.addEventListener(
8013        'alpine:init',
8014        () => Alpine.data('initAmGdprLoader', initAmGdprLoader),
8015        { once: true }
8016    );
8017</script>
8017
8018
8019
8020<script data-cfasync="false">
8021    'use strict';
8022
8023    /**
8024     * @typedef {Object} CookieGroupData
8025     * @prop {Boolean} checked
8026     * @prop {[{description: string, lifetime: number|null, name: string, provider: string, type: string}]} cookies
8027     * @prop {String} description
8028     * @prop {string|null} groupId
8029     * @prop {Boolean} isEssential
8030     * @prop {String} name
8031     */
8032
8033    function initAmastyCookieGroupsStorage() {
8034        return {
8035            /**
8036             * @type {[CookieGroupData]}
8037             */
8038            groupData: [],
8039            cookiePolicy: undefined,
8040            lastUpdate: undefined,
8041
8042            /**
8043             * @returns {string|number[]}
8044             */
8045            getEssentialGroupIds: function () {
8046                return this.groupData.reduce(function (essentialGroupIds, group) {
8047                    if (group.isEssential) {
8048                        essentialGroupIds.push(group.groupId)
8049                    }
8050
8051                    return essentialGroupIds;
8052                }, []);
8053            },
8054
8055            /**
8056             * @returns {string|number[]}
8057             */
8058            getCheckedGroupIds: function () {
8059                return this.groupData.reduce(function (checkedGroupIds, group) {
8060                    if (group.checked) {
8061                        checkedGroupIds.push(group.groupId);
8062                    }
8063
8064                    return checkedGroupIds;
8065                }, []);
8066            },
8067
8068            /**
8069             * @param {string} cookieName
8070             * @returns {boolean}
8071             */
8072            isCookieEssential: function (cookieName) {
8073                const allEssentialCookies = this.getEssentialCookies();
8074
8075                return !!allEssentialCookies.find(cookie => cookie.name === cookieName);
8076            },
8077
8078            /**
8079             * @returns {array}
8080             */
8081            getEssentialCookies: function () {
8082                return this.groupData
8083                    .filter(group => group.isEssential)
8084                    .map(group => group.cookies)
8085                    .flat();
8086            },
8087
8088            /**
8089             * @returns {boolean}
8090             */
8091            hasGroupData: function () {
8092                return !!this.groupData.length;
8093            },
8094
8095            /**
8096             * @param {string} cookieName
8097             * @param {string} pattern
8098             * @returns {boolean}
8099             */
8100            isEssentialByPattern: function (cookieName, pattern) {
8101                const essentialCookiePatterns = this.getEssentialCookiesPattern(pattern);
8102
8103                return essentialCookiePatterns.some((pattern) => !!cookieName.match(this.getCookiePattern(pattern)));
8104            },
8105
8106            /**
8107             * @param {string} pattern
8108             * @return {Array}
8109             */
8110            getEssentialCookiesPattern: function (pattern) {
8111                return this.getCookiesByPattern(pattern, this.getEssentialCookies());
8112            },
8113
8114            /**
8115             * @param {string} pattern
8116             * @param {Array|undefined} cookies
8117             * @return {Array}
8118             */
8119            getCookiesByPattern: function (pattern, cookies) {
8120                if (typeof cookie === 'undefined') {
8121                    cookies = this.getAllCookies();
8122                }
8123
8124                return cookies
8125                    .map((cookie) => typeof cookie === 'object' ? cookie.name : cookie.split('=')[0].trim())
8126                    .filter((cookie) => cookie.match(pattern) !== null);
8127            },
8128
8129            /**
8130             * @returns {array}
8131             */
8132            getDisallowedCookies: function () {
8133                const disallowedCookie = decodeURIComponent(hyva.getCookie('amcookie_disallowed') ?? '');
8134                if (!disallowedCookie) {
8135                    return [];
8136                }
8137
8138                return disallowedCookie.split(',');
8139            },
8140
8141            /**
8142             * @returns {string}
8143             */
8144            getCookiePattern: function (pattern) {
8145                return `^${pattern.replaceAll('*', '.*')}$`;
8146            },
8147
8148            /**
8149             * @returns {array}
8150             */
8151            getAllCookies: function () {
8152                return document.cookie.split(';');
8153            },
8154
8155            /**
8156             * @param {boolean} setAcceptance
8157             * @returns {Promise}
8158             */
8159            updateGroupData: function (setAcceptance = false) {
8160                const cookieFetchUrl = `${BASE_URL}amcookie/cookie/cookies`;
8161                return fetch(cookieFetchUrl, {
8162                    method: "POST",
8163                    headers: {
8164                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
8165                        'X-Requested-With': 'XMLHttpRequest'
8166                    },
8167                    body: new URLSearchParams({
8168                        allowed: hyva.getCookie('amcookie_allowed'),
8169                        restriction: hyva.getCookie('amcookie_policy_restriction')
8170                    })
8171                }).then(response => {
8172                    if (response.ok) {
8173                        return response.json();
8174                    }
8175
8176                    return Promise.reject(`${response.status} ${response.statusText}`);
8177                }).then(data => {
8178                    this.cookiePolicy = data.cookiePolicy ?? 'allowed';
8179                    this.lastUpdate = data.lastUpdate ?? 0;
8180                    this.groupData = [...data.groupData];
8181
8182                    hyva.setCookie('amcookie_policy_restriction', this.cookiePolicy, 10);
8183                    if (setAcceptance) {
8184                        amastyCookieManager.setLastCookieAcceptance(this.lastUpdate);
8185                    }
8186
8187                    return data;
8188                }).catch(error => {
8189                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
8190                        {
8191                            type: "error",
8192                            text: error
8193                        }
8194                    ]);
8195                }).finally(() => window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated')));
8196            }
8197        }
8198    }
8199
8200    window.addEventListener(
8201        'alpine:init',
8202        () => Alpine.store('AmastyCookieGroups', initAmastyCookieGroupsStorage()),
8203        { once: true }
8204    );
8205</script>
8205
8206
8207<script data-cfasync="false">
8208    (function (amastyCookieManager) {
8209        'use strict';
8210
8211        amastyCookieManager.pattern = '{(?<cookiePattern>.*)}';
8212
8213        amastyCookieManager.getAmastyCookieGroupStorage = function () {
8214            return Alpine.store('AmastyCookieGroups') ?? {};
8215        };
8216
8217        amastyCookieManager.deleteDisallowedCookie = function () {
8218            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
8219            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
8220
8221            disallowedCookies.forEach((name) => {
8222                const pattern = name.match(this.pattern);
8223                if (!!pattern && !!amastyCookieGroupStorage) {
8224                    const cookiePattern = amastyCookieGroupStorage.getCookiePattern(pattern.groups.cookiePattern) ?? '';
8225
8226                    amastyCookieGroupStorage.getCookiesByPattern(cookiePattern).forEach((cookieName) => {
8227                        this.deleteNotEssentialCookie(cookieName);
8228                    });
8229                } else {
8230                    this.deleteNotEssentialCookie(name);
8231                }
8232            });
8233        };
8234
8235        amastyCookieManager.isCookieAllowed = function (cookieName) {
8236            const allowedGroups = hyva.getCookie('amcookie_allowed');
8237            const disallowedCookie = this.getAmastyCookieGroupStorage()?.getDisallowedCookies() ?? [];
8238            const isCookiePolicyAllowed = hyva.getCookie('amcookie_policy_restriction') === 'allowed';
8239            const isCookieEssential = this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName);
8240            const isCookieEssentialByPattern = this.getAmastyCookieGroupStorage()?.isEssentialByPattern(cookieName, this.pattern);
8241
8242            if (!isCookiePolicyAllowed || isCookieEssential || isCookieEssentialByPattern) {
8243                return true;
8244            }
8245
8246            return !((!allowedGroups && !disallowedCookie) || this.isCookieDisallowed(cookieName));
8247        };
8248
8249        amastyCookieManager.isCookieDisallowed = function (cookieName) {
8250            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
8251            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
8252
8253            return disallowedCookies.some((cookie) => {
8254                const pattern = cookie.match(this.pattern);
8255
8256                return !!pattern && !!cookieName.match(amastyCookieGroupStorage?.getCookiePattern(pattern.groups.cookiePattern));
8257            }) || disallowedCookies.indexOf(cookieName) !== -1;
8258        };
8259
8260        amastyCookieManager.processManageableCookies = function () {
8261            let cookieScripts = document.querySelectorAll('script[data-amcookie-groupid][type="text/plain"]');
8262
8263            cookieScripts.forEach((elem) => {
8264                if (this.isChecked(elem.dataset['amcookie-groupid'])) {
8265                    let elClone = elem.cloneNode(true).setAttribute('type', 'text/javascript');
8266
8267                    elem.remove();
8268                    document.body.appendChild(elClone);
8269                }
8270            });
8271        };
8272
8273        amastyCookieManager.deleteNotEssentialCookie = function (cookieName) {
8274            if (!this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName)) {
8275                hyva.setCookie(cookieName, '', -1, true);
8276            }
8277        };
8278
8279        amastyCookieManager.setLastCookieAcceptance = function (lastUpdate) {
8280            localStorage.setItem('am-last-cookie-acceptance', lastUpdate);
8281        };
8282
8283        window.addEventListener('amasty-cookie-group-updated', () => {
8284            amastyCookieManager.deleteDisallowedCookie();
8285        });
8286
8287        window.addEventListener('private-content-loaded', () => {
8288            amastyCookieManager.getAmastyCookieGroupStorage()?.hasGroupData() && amastyCookieManager.deleteDisallowedCookie();
8289        });
8290    }(window.amastyCookieManager = window.amastyCookieManager || {}));
8291</script>
8291
8292
8293<script data-cfasync="false">
8294    (function () {
8295        'use strict';
8296
8297        window.addEventListener('cookiebar-action-accept', (event) => {
8298            const groups = event.detail?.include_checked_groups ? Alpine.store('AmastyCookieGroups').getCheckedGroupIds() : [];
8299            const url = `${BASE_URL}amcookie/cookie/savegroups`;
8300            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
8301            const body = new URLSearchParams({
8302                form_key: hyva.getFormKey()
8303            });
8304            groups.length && groups.map(groupId => body.append('groups[]', groupId));
8305
8306            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
8307                .then(response => {
8308                    if (response.ok) {
8309                        return response.json();
8310                    }
8311
8312                    return Promise.reject(`${response.status} ${response.statusText}`);
8313                })
8314                .then(data => {
8315                    !!data.success && Alpine.store('AmastyCookieGroups').updateGroupData(true);
8316                })
8317                .catch(error => {
8318                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
8319                        {
8320                            type: "error",
8321                            text: error
8322                        }
8323                    ]);
8324                })
8325                .finally(() => {
8326                    amastyCookieManager.processManageableCookies();
8327                    window.dispatchEvent(new CustomEvent('cookiebar-action-accept-finish'));
8328                    window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated'));
8329                    // Wait cookiebar close animation
8330                    setTimeout(() => {
8331                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
8332                    }, 100);
8333                });
8334        });
8335    })();
8336</script>
8336
8337
8338<script data-cfasync="false">
8339    (function () {
8340        'use strict';
8341
8342        window.addEventListener('cookiebar-action-allow', () => {
8343            const url = `${BASE_URL}amcookie/cookie/allow`;
8344            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
8345            const body = new URLSearchParams({
8346                form_key: hyva.getFormKey()
8347            });
8348            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
8349                .then(response => {
8350                    if (response.ok) {
8351                        return response;
8352                    }
8353
8354                    return Promise.reject(`${response.status} ${response.statusText}`);
8355                })
8356                .then(() => {
8357                    Alpine.store('AmastyCookieGroups').updateGroupData(true);
8358                })
8359                .catch(error => {
8360                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
8361                        {
8362                            type: "error",
8363                            text: error
8364                        }
8365                    ]);
8366                })
8367                .finally(() => {
8368                    amastyCookieManager.processManageableCookies();
8369                    window.dispatchEvent(new CustomEvent('cookiebar-action-allow-finish'));
8370                    // Wait cookiebar close animation
8371                    setTimeout(() => {
8372                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
8373                    }, 100);
8374                });
8375        });
8376    })();
8377</script>
8377
8378
8379<style>
8380    :root {
8381        /* Bar Color Settings */
8382        --ambar-background: #fff;
8383        --ambar-links-color: #326ed1;
8384        --ambar-policy-text: #374151;
8385        --ambar-toggle-active-color: #2563eb;
8386        --ambar-toggle-inactive-color: #fff;
8387
8388        /* Buttons Color Settings */
8389        --ambar-button-accept-color: #337ab7;
8390        --ambar-button-accept-hover-color: #337ab7;
8391        --ambar-button-accept-text: #fff;
8392        --ambar-button-accept-hover-text: #fff;
8393
8394        --ambar-button-allow-color: #337ab7;
8395        --ambar-button-allow-hover-color: #337ab7;
8396        --ambar-button-allow-text: #fff;
8397        --ambar-button-allow-hover-text: #fff;
8398
8399        --ambar-button-decline-color: #337ab7;
8400        --ambar-button-decline-hover-color: #337ab7;
8401        --ambar-button-decline-text: #fff;
8402        --ambar-button-decline-hover-text: #fff;
8403
8404        --ambar-button-settings-color: #337ab7;
8405        --ambar-button-settings-hover-color: #337ab7;
8406        --ambar-button-settings-text: #fff;
8407        --ambar-button-settings-hover-text: #fff;
8408
8409        /* Buttons Order Settings */
8410        --ambar-button-accept-order: 0;
8411        --ambar-button-allow-order: 0;
8412        --ambar-button-settings-order: 0;
8413        --ambar-button-decline-order: 0;
8414
8415        /* Cookie Information Bar Color Settings */
8416        --ambar-information-background: #fff;
8417        --ambar-information-title: #374151;
8418        --ambar-information-description: #374151;
8419        --ambar-information-table-header: #374151;
8420        --ambar-information-table-content: #374151;
8421
8422        /* Cookie Information Bar Done Button Settings */
8423        --ambar-information-button-color: #1d4ed8;
8424        --ambar-information-button-hover-color: #1d4ed8;
8425        --ambar-information-button-text: #fff;
8426        --ambar-information-button-hover-text: #fff;
8427
8428        /* Settings Bar Done Button Settings */
8429        --ambar-setting-button-color: #1d4ed8;
8430        --ambar-setting-button-hover-color: #1d4ed8;
8431        --ambar-setting-button-text: #fff;
8432        --ambar-setting-button-hover-text: #fff;
8433    }
8434</style>
8435
8436<script data-cfasync="false">
8437    'use strict';
8438
8439    function initAmCookieActionDispatcherBtn() {
8440        return {
8441            actiondispatchHandler: function (event) {
8442                const { dispatchAction, dispatchPayload } = event.currentTarget.dataset;
8443                this.$dispatch(dispatchAction, this.parsePayload(dispatchPayload));
8444            },
8445            parsePayload: function (payload) {
8446                try {
8447                    return JSON.parse(payload);
8448                } catch (e) {
8449                    return null;
8450                }
8451            }
8452        };
8453    }
8454
8455    window.addEventListener(
8456        'alpine:init',
8457        () => Alpine.data('initAmCookieActionDispatcherBtn', initAmCookieActionDispatcherBtn),
8458        { once: true }
8459    );
8460</script>
8460
8461
8462<script data-cfasync="false">
8463    'use strict';
8464
8465    function initAmCookieGroups() {
8466        return {
8467            /**
8468             * @withContext x-for: $store.AmastyCookieGroups.groupData
8469             * @returns {string}
8470             */
8471            getInputGroupId: function () {
8472                return `amcookie-${this.$el.dataset.groupPrefix}group-${this.group.groupId}`
8473            },
8474
8475            /**
8476             * @withContext x-for: $store.AmastyCookieGroups.groupData
8477             * @returns {{"!bg-gray-400": boolean}}
8478             */
8479            getInputStyles: function () {
8480                return {
8481                    '!bg-gray-400': this.group.isEssential
8482                }
8483            },
8484
8485            /**
8486             * @withContext x-for: $store.AmastyCookieGroups.groupData
8487             * @returns {void}
8488             */
8489            toggleGroup: function () {
8490                this.group.checked = !this.group.checked;
8491            },
8492
8493            /**
8494             * @withContext x-for: $store.AmastyCookieGroups.groupData
8495             * @returns {void}
8496             */
8497            moreInfoClickHandler: function () {
8498                this.$dispatch(this.$el.dataset.dispatchAction, this.group);
8499            },
8500
8501            moreInformationAboutCookieGroup: function () {
8502                return hyva.str('About\u0020\u0022\u00251\u0022\u0020Cookie\u0020Group', this.group.name);
8503            }
8504        }
8505    }
8506
8507    window.addEventListener(
8508        'alpine:init',
8509        () => Alpine.data('initAmCookieGroups', initAmCookieGroups),
8510        {once: true}
8511    );
8512</script>
8512
8513<style>
8514    .is-loading > :not(.loader) {
8515        visibility: hidden;
8516    }
8517</style>
8518
8519<script>
8520    function connectifGetURLParameters(form) {
8521        let url = form.querySelector('.connectif-url').getAttribute('href');
8522        const parsedUrl = new URL(url);
8523
8524        const params = new URLSearchParams(parsedUrl.search);
8525
8526        const paramsObject = {};
8527        params.forEach((value, key) => {
8528            paramsObject[key] = decodeURIComponent(value);
8529        });
8530
8531        return paramsObject;
8532    }
8533
8534    var addToCartAjaxEvent = function (e) {
8535        let form = this;
8536        let delay = parseInt('1000', 10);
8537
8538        e.preventDefault();
8539
8540        const data = new URLSearchParams(new FormData(form)),
8541            button = form.querySelector('button') ?
8542                form.querySelector('button') :
8543                document.getElementById('product-addtocart-button'),
8544            loader = document.createElement('div'),
8545            initialText = button.innerHTML;
8546
8547        loader.className = 'absolute inset-0 flex justify-center items-center loader';
8548        loader.innerHTML = `
8549                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" xml:space="preserve" width="32" height="32">
8550                    <path fill="#333" d="M73 50c0-12.7-10.3-23-23-23S27 37.3 27 50m3.9 0c0-10.5 8.5-19.1 19.1-19.1S69.1 39.5 69.1 50">
8551                        <animateTransform attributeName="transform" attributeType="XML" type="rotate" dur="1s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/>
8552                    </path>
8553                </svg>
8554                `;
8555
8556        button.prepend(loader);
8557        button.classList.add('relative', 'is-loading', 'text-[0]');
8558        button.disabled = true;
8559
8560        var product_id = data.get('product');
8561
8562        fetch(e.currentTarget.action, {
8563            method: 'POST',
8564            body: data,
8565            headers: {
8566                'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
8567                'X-Requested-With': 'XMLHttpRequest'
8568            }
8569        })
8570            .then(res => {
8571                if (!res.ok) {
8572                    return form.submit();
8573                }
8574
8575                if (res.redirected) {
8576                    return [];
8577                }
8578
8579                return res.json();
8580            })
8581            .then(data => {
8582                if (form.classList.contains('connectif-product')) {
8583                    let jsonDecodedVAR = JSON.parse(connectifGetURLParameters(form)['cnWebLinkClicked']);
8584                    jsonDecodedVAR.type = "web-link-clicked";
8585
8586                    window.connectif.managed.sendEvents([jsonDecodedVAR], []).finally(() => submitCallback());
8587                } else {
8588                    submitCallback();
8589                }
8590
8591                function submitCallback() {
8592                    if (data.backUrl && data.backUrl !== window.location.href) {
8593                        form.submit();
8594                    } else {
8595                        button.classList.add('bg-success-darker', 'hover:bg-success-darker');
8596                        loader.remove();
8597
8598                        let defaultChild = button.querySelector('.check');
8599                        if (!defaultChild) {
8600                            button.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 17.45" class="w-6 h-6" width="24" height="24" role="img">
8601        <path d="M7.75 17.46c-.68 0-1.34-.27-1.82-.76L.44 11.17a1.54 1.54 0 0 1 0-2.16c.58-.59 1.54-.6 2.13-.01l.01.01 5.17 5.2L21.42.44c.58-.59 1.54-.6 2.13-.01l.01.01c.59.6.59 1.56 0 2.16L9.57 16.7c-.48.49-1.13.76-1.82.76Z" style="fill:currentColor"/>
8602    <title>check</title></svg>
8603    `;
8604                        } else {
8605                            defaultChild.classList.add('hidden');
8606                            let addingChild = button.querySelector('.added');
8607                            if (addingChild) {
8608                                addingChild.classList.remove('hidden');
8609                            }
8610                        }
8611
8612                        button.classList.remove('is-loading', 'text-[0]');
8613                    }
8614
8615                    window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
8616                }
8617            })
8618            .catch(err => {
8619                window.dispatchEvent(new CustomEvent('product-addtocart-error'));
8620
8621                setMessage({
8622                    text:'There was a problem adding your item to the cart.',
8623                    type: 'error'
8624                });
8625            })
8626            .finally(() => {
8627                try {
8628                    var messages = hyva.getCookie('mage-messages');
8629                    messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
8630                    document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
8631
8632                } catch (error) {
8633                    console.warn('Error parsing Cookie Messages:', error);
8634                    return;
8635                }
8636
8637                setTimeout(() => {
8638                    button.disabled = false;
8639                    button.classList.remove('bg-success-darker', 'hover:bg-success-darker');
8640                    button.classList.remove('text-[0]');
8641
8642                    let defaultChild = button.querySelector('.default');
8643                    if (!defaultChild) {
8644                        button.innerHTML = button.getAttribute("aria-label");
8645                    } else {
8646                        defaultChild.classList.remove('hidden');
8647                        let addingChild = button.querySelector('.added');
8648                        if (addingChild) {
8649                            addingChild.classList.add('hidden');
8650                        }
8651                    }
8652
8653                    button.innerHTML = initialText;
8654
8655                    window.dispatchEvent(new CustomEvent('product-addtocart-success', {
8656                        detail: {
8657                            product_id: product_id,
8658                            form_data: Object.fromEntries(new FormData(form))
8659                        }
8660                    }));
8661
8662                    messages.forEach(message => {
8663                        setMessage(message);
8664                    });
8665                }, delay);
8666            });
8667    };
8668
8669    window.setAjaxCart = (selectors = '.product_addtocart_form:not(.no-ajax), #product_addtocart_form:not(.no-ajax)') => {
8670        const addToCartForms = document.querySelectorAll(selectors);
8671
8672        addToCartForms.forEach(form => {
8673            form.removeEventListener('submit', addToCartAjaxEvent);
8674            form.addEventListener('submit', addToCartAjaxEvent);
8675        });
8676    }
8677
8678    /**
8679     * Set Message
8680     */
8681    function setMessage(message) {
8682        typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
8683            [message], 5000
8684        );
8685    }
8686
8687    /** Init on pageload */
8688    window.setAjaxCart();
8689</script>
8689
8690    
8690<script>
8691    function initAlgoliaInsights(partial) {
8692        window.algoliaAnalytics = AlgoliaAnalytics.default;
8693        window.hasAddedParameters = false;
8694        window.useCookie = algoliaConfig.cookieConfiguration.cookieRestrictionModeEnabled ? !!hyva.getCookie(algoliaConfig.cookieConfiguration.consentCookieName) : true;
8695
8696        if (!canTrack()) {
8697            return;
8698        }
8699
8700        initializeAnalytics(partial);
8701        addSearchParameters();
8702        bindEvents();
8703
8704        // Although events can accept both auth and anon tokens, queries can only accept a single token
8705        function determineUserToken() {
8706            return window.algoliaAnalytics.getAuthenticatedUserToken() ?? algoliaAnalytics.getUserToken();
8707        }
8708
8709        function initializeAnalytics(partial = false) {
8710            if (partial) {
8711                algoliaAnalytics.init({
8712                    appId: algoliaConfig.applicationId,
8713                    apiKey: algoliaConfig.apiKey,
8714                    partial: true,
8715                    useCookie: true,
8716                    cookieDuration: Number(algoliaConfig.cookieConfiguration.cookieDuration)
8717                });
8718            } else {
8719                algoliaAnalytics.init({
8720                    appId: algoliaConfig.applicationId,
8721                    apiKey: algoliaConfig.apiKey,
8722                    useCookie: true,
8723                    cookieDuration: Number(algoliaConfig.cookieConfiguration.cookieDuration)
8724                });
8725            }
8726            let userAgent = 'insights-js-in-magento (' + algoliaConfig.extensionVersion + ')';
8727            window.algoliaAnalytics.addAlgoliaAgent(userAgent);
8728
8729            let unsetAuthenticationToken = hyva.getCookie('unset_authentication_token');
8730            if (hyva.getCookie('aa-search') && hyva.getCookie('aa-search') !== '') {
8731                window.algoliaAnalytics.setUserToken(hyva.getCookie('aa-search'));
8732            } else if (hyva.getCookie('_ALGOLIA') && hyva.getCookie('_ALGOLIA') !== '') {
8733                window.algoliaAnalytics.setUserToken(hyva.getCookie('_ALGOLIA'));
8734            } else if (unsetAuthenticationToken && unsetAuthenticationToken !== '') {
8735                window.algoliaAnalytics.setUserToken('undefined');
8736                hyva.setCookie('unset_authentication_token', '', -1);
8737            }
8738        }
8739
8740        function applyInsightsToSearchParams(params = {}) {
8741            if (algoliaConfig.ccAnalytics.enabled) {
8742                params.clickAnalytics = true;
8743            }
8744
8745            if (algoliaConfig.personalization.enabled) {
8746                params.enablePersonalization = true;
8747                params.userToken = determineUserToken();
8748            }
8749
8750            return params;
8751        }
8752
8753        function addSearchParameters() {
8754            if (window.hasAddedParameters) {
8755                return;
8756            }
8757            algolia.registerHook('beforeWidgetInitialization', function (allWidgetConfiguration) {
8758                allWidgetConfiguration.configure = applyInsightsToSearchParams(
8759                    allWidgetConfiguration.configure
8760                );
8761                return allWidgetConfiguration;
8762            });
8763
8764            algolia.registerHook('afterAutocompleteProductSourceOptions', (options) => {
8765                return applyInsightsToSearchParams(options);
8766            });
8767
8768            window.hasAddedParameters = true;
8769        }
8770
8771
8772        function bindEvents() {
8773            bindClickedEvents();
8774            bindViewedEvents();
8775
8776            algolia.triggerHooks('afterInsightsBindEvents', this);
8777        }
8778
8779        function bindClickedEvents() {
8780            // Filter Clicked
8781            if (algoliaConfig.personalization.filterClicked.enabled) {
8782                const facets = algoliaConfig.facets;
8783                let containers = [];
8784                for (let i = 0; i < facets.length; i++) {
8785                    let elem = createISWidgetContainer(facets[i].attribute);
8786                    containers.push('.' + elem.className);
8787                }
8788
8789                algolia.registerHook('afterInstantsearchStart', function (search) {
8790                    const selectors = document.querySelectorAll(containers.join(', '));
8791                    selectors.forEach(function (e) {
8792                        e.addEventListener('click', function (event) {
8793                            const attribute = this.dataset.attr;
8794                            const elem = event.target;
8795                            if (elem.type === "checkbox" && elem.checked) {
8796                                var filter = attribute + ':' + elem.value;
8797                                trackFilterClick([filter]);
8798                            }
8799                        });
8800                    });
8801
8802                    return search;
8803                });
8804            }
8805        }
8806
8807        function bindViewedEvents() {
8808            // viewed event is exclusive to personalization
8809            if (!algoliaConfig.personalization.enabled) {
8810                return;
8811            }
8812
8813            const viewConfig = algoliaConfig.personalization.viewedEvents.viewProduct;
8814            if (viewConfig.enabled) {
8815                if (document.body.classList.contains('catalog-product-view')) {
8816                    const objectId = document.querySelector('#product_addtocart_form')?.querySelector('input[name="product"]').value;
8817                    if (objectId) {
8818                        const viewData = buildEventData(viewConfig.eventName, objectId, algoliaConfig.indexName + '_products');
8819                        trackView(viewData);
8820                    }
8821                }
8822
8823            }
8824        }
8825
8826        function buildEventData(eventName, objectId, indexName, position = null, queryId = null) {
8827            const eventData = {
8828                eventName: eventName,
8829                objectIDs: [objectId + ''],
8830                index: indexName
8831            };
8832
8833            if (position) {
8834                eventData.positions = [parseInt(position)];
8835            }
8836
8837            if (queryId) {
8838                eventData.queryID = queryId;
8839            }
8840
8841            return eventData;
8842        }
8843
8844        function trackClick(eventData) {
8845            if (eventData.queryID) {
8846                window.algoliaAnalytics.clickedObjectIDsAfterSearch(eventData);
8847            } else {
8848                window.algoliaAnalytics.clickedObjectIDs(eventData);
8849            }
8850        }
8851
8852        function trackFilterClick(filters) {
8853            const eventData = {
8854                index: algoliaConfig.indexName + '_products',
8855                eventName: algoliaConfig.personalization.filterClicked.eventName,
8856                filters: filters
8857            };
8858
8859            window.algoliaAnalytics.clickedFilters(eventData);
8860        }
8861
8862        function trackView(eventData) {
8863            window.algoliaAnalytics.viewedObjectIDs(eventData);
8864        }
8865    }
8866
8867    function canTrack() {
8868        return ((algoliaConfig.ccAnalytics.enabled
8869            || algoliaConfig.personalization.enabled) && window.useCookie);
8870    }
8871
8872    function buildInsightsEventData(eventName, objectId, indexName, position = null, queryId = null) {
8873        if (!canTrack()) {
8874            return;
8875        }
8876
8877        const eventData = {
8878            eventName: eventName,
8879            objectIDs: [objectId + ''],
8880            index: indexName
8881        };
8882        if (position) {
8883            eventData.positions = [parseInt(position)];
8884        }
8885        if (queryId) {
8886            eventData.queryID = queryId;
8887        }
8888        trackClick(eventData);
8889    }
8890
8891    function trackClick(eventData) {
8892        if (eventData.queryID) {
8893            window.algoliaAnalytics.clickedObjectIDsAfterSearch(eventData);
8894        } else {
8895            window.algoliaAnalytics.clickedObjectIDs(eventData);
8896        }
8897    }
8898</script>
8898
8899    
8899<script>
8900        window.algoliaConfig = {"instant":{"enabled":true,"selector":".columns","isAddToCartEnabled":true,"addToCartParams":{"action":"https:\/\/www.farma.it\/checkout\/cart\/add\/","formKey":"Tlh3OSamFFweEWy7","redirectUrlParam":"uenc"},"infiniteScrollEnabled":false,"urlTrackedParameters":["query","attribute:*","index","page"],"isSearchBoxEnabled":true,"isVisualMerchEnabled":false,"categorySeparator":" \/\/\/ ","categoryPageIdAttribute":"categoryPageId","isCategoryNavigationEnabled":false,"hidePagination":false},"autocomplete":{"enabled":true,"selector":".algolia-search-input","sections":[{"name":"manufacturer","label":"Marchi","hitsPerPage":""}],"nbOfProductsSuggestions":5,"nbOfCategoriesSuggestions":4,"nbOfQueriesSuggestions":10,"isDebugEnabled":false,"isNavigatorEnabled":true,"debounceMilliseconds":300,"minimumCharacters":3},"landingPage":{"query":"","configuration":"[]"},"recommend":{"enabledFBT":false,"enabledRelated":false,"enabledFBTInCart":false,"enabledRelatedInCart":false,"enabledLookingSimilar":0,"limitFBTProducts":12,"limitRelatedProducts":12,"limitTrendingItems":12,"limitLookingSimilar":12,"enabledTrendItems":0,"trendItemFacetName":null,"trendItemFacetValue":null,"isTrendItemsEnabledInPDP":0,"isTrendItemsEnabledInCartPage":0,"isAddToCartEnabledInFBT":false,"isAddToCartEnabledInRelatedProduct":false,"isAddToCartEnabledInTrendsItem":false,"isAddToCartEnabledInLookingSimilar":false,"FBTTitle":"Frequently bought together","relatedProductsTitle":"Potrebbe interessarti anche","trendingItemsTitle":"Trending items","addToCartParams":{"action":"https:\/\/www.farma.it\/checkout\/cart\/add\/","formKey":"Tlh3OSamFFweEWy7","redirectUrlParam":"uenc"},"isLookingSimilarEnabledInPDP":0,"isLookingSimilarEnabledInCartPage":0,"lookingSimilarTitle":"Prodotti simili"},"extensionVersion":"3.15.3","applicationId":"ZMUZFC3VV1","indexName":"magento2_default","apiKey":"NTE5ZjlhYjIyOGEzNWVmMmQ1ODUxZjFkYmY0MWQ5NTUzYzhhOTBiOTRlMDI4NTVjODIxYzU2N2U4MTY1M2MyZHRhZ0ZpbHRlcnM9JnZhbGlkVW50aWw9MTc5MTY1Njc4Mw==","attributeFilter":[],"facets":[{"attribute":"manufacturer","type":"disjunctive","label":"Marchi","searchable":"1","create_rule":"2"},{"attribute":"price","type":"slider","label":"Prezzo","searchable":"1","create_rule":"2"},{"attribute":"categories","type":"disjunctive","label":"Categorie","searchable":"1","create_rule":"2"}],"areCategoriesInFacets":true,"hitsPerPage":20,"sortingIndices":[{"attribute":"price","sort":"asc","sortLabel":"Prezzo crescente","virtualReplica":"0","name":"magento2_default_products_price_default_asc","ranking":["asc(price.EUR.default)","typo","geo","words","filters","proximity","attribute","exact","custom"],"label":"Prezzo crescente"},{"attribute":"price","sort":"desc","sortLabel":"Prezzo decrescente","virtualReplica":"0","name":"magento2_default_products_price_default_desc","ranking":["desc(price.EUR.default)","typo","geo","words","filters","proximity","attribute","exact","custom"],"label":"Prezzo decrescente"},{"attribute":"created_at","sort":"desc","sortLabel":"Novit\u00e0","virtualReplica":"0","name":"magento2_default_products_created_at_desc","ranking":["desc(created_at)","typo","geo","words","filters","proximity","attribute","exact","custom"],"label":"Novit\u00e0"}],"isSearchPage":false,"isCategoryPage":false,"isLandingPage":false,"removeBranding":false,"productId":null,"priceKey":".EUR.default","priceGroup":null,"origFormatedVar":"price.EUR.default_original_formated","tierFormatedVar":"price.EUR.default_tier_formated","currencyCode":"EUR","currencySymbol":"\u20ac","priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"maxValuesPerFacet":10,"autofocus":true,"resultPageUrl":"https:\/\/www.farma.it\/catalogsearch\/result\/","request":{"query":"","refinementKey":"","refinementValue":"","categoryId":"","landingPageId":"","path":"","level":"","parentCategory":"","childCategories":[],"url":"https:\/\/www.farma.it\/checkout\/cart\/index\/"},"showCatsNotIncludedInNavigation":false,"showSuggestionsOnNoResultsPage":true,"baseUrl":"https:\/\/www.farma.it","popularQueries":["bionike","magnesio","Euphidra","Svr","NUXE","fermenti lattici","Solari","filorga","dentifricio","neavita"],"useAdaptiveImage":false,"urls":{"logo":"https:\/\/www.farma.it\/static\/version1789421831\/frontend\/DNAFactory\/orlandi_hyva\/it_IT\/Algolia_AlgoliaSearch\/js\/images\/algolia-logo-blue.svg"},"cookieConfiguration":{"customerTokenCookie":"_ALGOLIA_MAGENTO_AUTH","consentCookieName":"user_allowed_save_cookie","cookieAllowButtonSelector":"#btn-cookie-allow","cookieRestrictionModeEnabled":false,"cookieDuration":"15552000000"},"ccAnalytics":{"enabled":true,"ISSelector":".ais-Hits-item a.result, .ais-InfiniteHits-item a.result","conversionAnalyticsMode":"all","addToCartSelector":".action.primary.tocart","orderedProductIds":[]},"isPersonalizationEnabled":true,"personalization":{"enabled":true,"viewedEvents":{"viewProduct":{"eventName":"Viewed Product","enabled":true,"method":"viewedObjectIDs"}},"clickedEvents":{"productClicked":{"eventName":"Product Clicked","enabled":true,"selector":".ais-Hits-item a.result, .ais-InfiniteHits-item a.result","method":"clickedObjectIDs"},"productRecommended":{"eventName":"Recommended Product Clicked","enabled":true,"selector":".products-upsell .product-item","method":"clickedObjectIDs"}},"filterClicked":{"eventName":"Filter Clicked","enabled":true,"method":"clickedFilters"}},"analytics":{"enabled":false,"delay":"3000","triggerOnUiInteraction":"1","pushInitialSearch":"0"},"now":1791504000,"queue":{"isEnabled":true,"nbOfJobsToRun":30,"retryLimit":3,"nbOfElementsPerIndexingJob":300},"isPreventBackendRenderingEnabled":false,"translations":{"to":"a","or":"o","go":"Go","popularQueries":"Puoi provare le seguenti ricerche popolari","seeAll":"Vedi tutti i prodotti","allDepartments":"All departments","seeIn":"See products in","orIn":"or in","noProducts":"Non abbiamo trovato nessun prodotto per questa ricerca","noResults":"Nessun risultato","refine":"Refine","selectedFilters":"Selected Filters","clearAll":"Clear all","previousPage":"Pagina precedente","nextPage":"Pagina successiva","searchFor":"Search for products","relevance":"Rilevanza","categories":"Categorie","products":"Prodotti","suggestions":"Suggestions","searchBy":"Search by","searchForFacetValuesPlaceholder":"Cerca","showMore":"Show more products","searchTitle":"Search results for","placeholder":"Search for products, categories, ...","addToCart":"Aggiungi al Carrello"}};
8901
8902        let autocompleteInitialized = false;
8903        let commonInitialized = false;
8904        let insightsInitialized = false;
8905
8906        async function initAutocomplete() {
8907            if (autocompleteInitialized) {
8908                return
8909            }
8910
8911            autocompleteInitialized = true;
8912            Promise.all([
8913                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/common.js"),
8914                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/base64.js"),
8915                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-instantsearch.min.js"),
8916                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/search-insights.min.js"),
8917                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-search.min.js"),
8918                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-autocomplete.min.js"),
8919                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/query-suggestions-plugin.min.js"),
8920                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/autocomplete.js"),
8921                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/additional-section.js"),
8922                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/categories.js"),
8923                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/pages.js"),
8924                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/products.js"),
8925                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/suggestions.js"),
8926                ]
8927            ).then(data => {
8928                initCommon();
8929                initAlgoliaInsights();
8930                initAlgoliaAutocomplete();
8931            });
8932        }
8933
8934        function initInstantSearch() {
8935            Promise.all([
8936                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/common.js"),
8937                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/base64.js"),
8938                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-instantsearch.min.js"),
8939                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/search-insights.min.js"),
8940                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/hogan.min.js"),
8941                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/mustache.min.js"),
8942                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/template-engine.js"),
8943                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/instantsearch.js"),
8944                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-search.min.js"),
8945                ]
8946            ).then(data => {
8947                initCommon();
8948                initAlgoliaInsights();
8949                initAlgoliaInstantSearch();
8950            });
8951        }
8952
8953        function initRecommended(objectIds) {
8954            Promise.all([
8955                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/common.js"),
8956                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/base64.js"),
8957                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-instantsearch.min.js"),
8958                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/search-insights.min.js"),
8959                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/recommend.min.js"),
8960                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/recommend-js.min.js"),
8961                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/recommend.js"),
8962                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/recommend/products.js"),
8963                ]
8964            ).then(data => {
8965                initCommon();
8966                initBase64();
8967                initAlgoliaInsights();
8968                initAlgoliaRecommended('checkout_cart_index', objectIds);
8969            });
8970        }
8971
8972        function initCommon() {
8973            if (commonInitialized) {
8974                return
8975            }
8976
8977            commonInitialized = true
8978            initAlgoliaCommon();
8979            initBase64();
8980            window.dispatchEvent(new CustomEvent('algolia-loaded'));
8981        }
8982
8983        if (algoliaConfig.instant.enabled && (algoliaConfig.isCategoryPage || algoliaConfig.isSearchPage)) {
8984            initInstantSearch();
8985        }
8986
8987        
8988                if (algoliaConfig.recommend.enabledFBTInCart || algoliaConfig.recommend.enabledRelatedInCart || algoliaConfig.recommend.isTrendItemsEnabledInPCart || algoliaConfig.recommend.isLookingSimilarEnabledInCart) {
8989            let recommendedLoaded = false;
8990            window.addEventListener('private-content-loaded', function (event) {
8991                if (!recommendedLoaded) {
8992                    let objectIds = [""];
8993                    const items = event.detail.data?.cart?.items;
8994                    objectIds = [];
8995                    items.forEach(function (item) {
8996                        objectIds.push(item.product_id);
8997                    });
8998                    initRecommended(objectIds);
8999                    recommendedLoaded = true;
9000                }
9001            });
9002        }
9003        
9004
9005        let objectIds = [""];
9006                window.addEventListener('private-content-loaded', function (event) {
9007            let objectIds = [""];
9008            const items = event.detail.data?.cart?.items;
9009            objectIds = [];
9010            items.forEach(function (item) {
9011                objectIds.push(item.product_id);
9012            });
9013        });
9014        
9015        if (algoliaConfig.autocomplete.enabled) {
9016            document.getElementById('menu-search-icon').addEventListener('click', async () => {
9017                await initAutocomplete();
9018            },{once: true});
9019        }
9020
9021        window.addEventListener('init-algolia-trends', function () {
9022            initCommon();
9023            initAlgoliaInsights();
9024            window.dispatchEvent(new CustomEvent('init-algolia-trends-done'));
9025        });
9026
9027        window.addEventListener('init-algolia-LS', function () {
9028            initCommon();
9029            initAlgoliaInsights();
9030            window.dispatchEvent(new CustomEvent('init-algolia-LS-done'));
9031        });
9032
9033        window.addEventListener('user-allowed-save-cookie', function () {
9034            initAlgoliaInsights(true);
9035        });
9036    </script>
9036
9037
9038<style>
9039    .algolia-ac-product-row .badge-container .badge {
9040        max-height: fit-content;
9041        margin: auto 0;
9042    }
9043
9044    @media (max-width: 768px) {
9045        .catalogsearch-result-index {
9046            #algolia-left-container {
9047                width: calc(100vw - 15px);
9048                left: -15px;
9049                padding-left: 15px;
9050            }
9051
9052            #algolia-left-container .filters {
9053                width: calc(50% - 15px);
9054                margin-top: 30px;
9055            }
9056
9057            #algolia-toolbar {
9058                top: -76px;
9059                width: calc(50% - 15px);
9060            }
9061
9062            #algolia-toolbar .flex.right {
9063                flex-direction: column;
9064                align-items: flex-end;
9065                width: 100%;
9066                font-weight: bold;
9067            }
9068
9069            #algolia-toolbar .flex.left {
9070                position: absolute;
9071                width: calc(93vw - var(--scrollbar-width));
9072                top: -5px;
9073                left: calc((0% - 100vw + var(--scrollbar-width)) / 2);
9074                right: auto;
9075            }
9076
9077            #algolia-toolbar #algolia-sorts {
9078                width: 100%;
9079            }
9080
9081            #algolia-toolbar .ais-SortBy-select {
9082                background-color: white;
9083                font-weight: bold;
9084                padding-top: 0.375rem;
9085                padding-bottom: 0.375rem;
9086                padding-left: 0.75rem;
9087                padding-right: 1rem;
9088                width: 100%;
9089                border: 2px solid #6328e0;
9090            }
9091
9092            .ais-Stats-text > div {
9093                font-size: 16px;
9094                display: block;
9095            }
9096        }
9097    }
9098
9099    input[type="search"]::-webkit-search-decoration,
9100    input[type="search"]::-webkit-search-cancel-button,
9101    input[type="search"]::-webkit-search-results-button,
9102    input[type="search"]::-webkit-search-results-decoration {
9103        -webkit-appearance:none!important;
9104    }
9105
9106    .ais-Hits-banner-image {
9107        margin: auto!important;
9108        margin-bottom: 20px!important;
9109    }
9110</style>
9111<script>
9112    function initWishlist() {
9113        return {
9114            addToWishlist(productId) {
9115                const formKey = hyva.getFormKey();
9116                const postUrl = BASE_URL + 'wishlist/index/add/';
9117
9118                const params = new URLSearchParams({
9119                    form_key: formKey,
9120                    product: productId,
9121                    uenc: hyva.getUenc()
9122                });
9123
9124                const form = document.getElementById(`product_addtocart_form_${productId}`);
9125                if (form) {
9126                    new FormData(form).forEach((value, key) => params.set(key, value));
9127                }
9128
9129                fetch(postUrl, {
9130                    "headers": {
9131                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
9132                    },
9133                    "body": params.toString(),
9134                    "method": "POST",
9135                    "mode": "cors",
9136                    "credentials": "include"
9137                }).then(function (response) {
9138                    if (response.redirected) {
9139                        window.location.href = response.url;
9140                    } else if (response.ok) {
9141                        return response.json();
9142                    } else {
9143                        typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
9144                            [{
9145                                type: "warning",
9146                                text: "Could\u0020not\u0020add\u0020item\u0020to\u0020wishlist."
9147                            }], 5000
9148                        );
9149                    }
9150                }).then(function (response) {
9151                    if (!response) { return }
9152                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
9153                        [{
9154                            type: (response.success) ? "success" : "error",
9155                            text: (response.success)
9156                                ? "Prodotto\u0020\u00E8\u0020stato\u0020aggiunto\u0020nella\u0020tua\u0020lista\u0020desideri."
9157                                : response.error_message
9158                        }], 5000
9159                    );
9160                    const reloadCustomerDataEvent = new CustomEvent("reload-customer-section-data");
9161                    window.dispatchEvent(reloadCustomerDataEvent);
9162                }).catch(function (error) {
9163                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
9164                        [{
9165                            type: "error",
9166                            text: error
9167                        }], 5000
9168                    );
9169                });
9170            }
9171        }
9172    }
9173</script>
vendor: 1 bytes, line 9173
9173
9174<script>
9175    window.addEventListener('algolia-loaded', () => {
9176        algolia.registerHook('afterAutocompleteStart', () => {
9177            document.querySelector('#algoliaAutocomplete input')?.focus();
9178        });
9179    },{ once: true})
9180</script>
9180
9181    
9181<script>
9182        window.addEventListener('algolia-loaded', () => {
9183            algolia.registerHook('beforeWidgetInitialization', (allWidgetConfiguration) => {
9184                const {currentRefinements} = allWidgetConfiguration;
9185                const originalTransformItems = currentRefinements.transformItems.bind(currentRefinements);
9186                currentRefinements.transformItems = (items) => {
9187                    if (items.length !== 0) {
9188                        document.getElementById('instant-search-active-filters').classList.remove('hidden');
9189                        document.getElementById('instant-search-active-filters-label').classList.remove('hidden');
9190                    } else {
9191                        document.getElementById('instant-search-active-filters').classList.add('hidden');
9192                        document.getElementById('instant-search-active-filters-label').classList.add('hidden');
9193                    }
9194                    return originalTransformItems(items);
9195                }
9196                return allWidgetConfiguration;
9197            });
9198        },{ once: true})
9199    </script>
9199
9200<div x-cloak x-data="{...initAmBanners()}" x-init="initBanners()">
9201    
9202<div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50"
9203     style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgb(255 255 255/0.60);"
9204     x-show="isLoading"
9205     x-transition:enter="ease-out duration-200"
9206     x-transition:enter-start="opacity-0"
9207     x-transition:enter-end="opacity-100"
9208     x-transition:leave="ease-in duration-200"
9209     x-transition:leave-start="opacity-100"
9210     x-transition:leave-end="opacity-0">
9211    <svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 38 38" stroke="#ffb590" class="text-primary" role="img">
9212    <g fill="none" fill-rule="evenodd">
9213        <g transform="translate(1 1)" stroke-width="2">
9214            <circle stroke="#ff6801" cx="18" cy="18" r="18"/>
9215            <path d="M36 18c0-9.94-8.06-18-18-18">
9216                <animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"/>
9217            </path>
9218        </g>
9219    </g>
9220<title>loader</title></svg>
9221</div>
9222</div>
9223<script>
9224    'use strict';
9225
9226    function initAmBanners() {
9227        return {
9228            options: {
9229                sections: [],
9230                content: [],
9231                banners: [],
9232                injectorSectionId: null,
9233                injectorParams: {}
9234            },
9235            isLoading: true,
9236            injectorResolver: {},
9237
9238            initBanners: function () {
9239                this.options = {"sections":{"50":[37,103,127,50,128,117,90,67,54,6,41,40,21,13,7],"7":[62,61],"0":[58],"4":[10,9,8]},"content":{"37":"\n<div data-banner-id=\"37\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"https:\/\/wa.me\/447418640409\" aria-label=\"Promozione\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Whatsapp_BPP.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","103":"\n<div data-banner-id=\"103\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/resi-e-rimborsi2\" aria-label=\"Promozione\" title=\"Farmait 30092026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/reso_BPP.jpg\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","127":"\n<div data-banner-id=\"127\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-farmait\" aria-label=\"Promozione\" title=\"Farmait 01102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Solari_BPP_10_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","50":"\n<div data-banner-id=\"50\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-rilastil\" aria-label=\"Promozione\" title=\"Rilastil 05102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Rilastil_MUp_BPP_10_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","128":"\n<div data-banner-id=\"128\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-thermacare\" aria-label=\"Promozione\" title=\"Angelini 07102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/ThermaCare_BPP_04_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","117":"\n<div data-banner-id=\"117\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-menarini\" aria-label=\"Promozione\" title=\"Menarini 29092026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Menarini_BTW_BPP_09_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","90":"\n<div data-banner-id=\"90\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-prodeco4\" aria-label=\"Promozione\" title=\"Prodeco 07102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/InMood_BPP_09_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","67":"\n<div data-banner-id=\"67\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-haleon2\" aria-label=\"Promozione\" title=\"Haleon 02102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/BeTotal_BPP_10_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","62":"\n<div data-banner-id=\"62\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"https:\/\/www.salute.gov.it\/LogoCommercioElettronicoVET\/CercaSitoEComm?useMode=getDettaglio&VOLID=C016715&area=veterinari&id=5907&lingua=italiano&menu=vendite\" style=\"\r\n    background-color: #efeff0;\r\n    display: inline-block;\r\n    border-radius: 1.2rem;\r\n    padding: 8px;\r\n    margin-top: 10px;\r\n\" target=\"_blank\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/VET-c21198a7.jpg\" class=\"rounded-lg\" alt=\"Garanzia Veterinari\" width=\"110\" \/>\r\n<\/a><\/div>    <\/div>\n","61":"\n<div data-banner-id=\"61\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"https:\/\/www.salute.gov.it\/LogoCommercioElettronico\/CercaSitoEComm?useMode=getDettaglio&VOLID=C016715\" style=\"\r\n    background-color: #efeff0;\r\n    display: inline-block;\r\n    border-radius: 1.2rem;\r\n    padding: 8px;\r\n    margin-top: 10px;\r\n\" target=\"_blank\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/farmacia-ab57f402.jpg\" class=\"rounded-lg\" alt=\"Garanzia Farmaci\" width=\"110\"\/>\r\n<\/a><\/div>    <\/div>\n","58":"\n<div data-banner-id=\"58\">\n    <style>#html-body [data-pb-style=YEJYU1X]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=G07EOKR]{margin-top:20px;border-style:none}#html-body [data-pb-style=FBDF4WI],#html-body [data-pb-style=XTES42W]{border-radius:5px;max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=G07EOKR]{border-style:none} }<\/style><div data-content-type=\"row\" data-appearance=\"contained\" data-element=\"main\"><div data-enable-parallax=\"0\" data-parallax-speed=\"0.5\" data-background-images=\"{}\" data-background-type=\"image\" data-video-loop=\"true\" data-video-play-only-visible=\"true\" data-video-lazy-load=\"true\" data-video-fallback-src=\"\" data-element=\"inner\" data-pb-style=\"YEJYU1X\"><figure data-content-type=\"image\" data-appearance=\"full-width\" data-intersect=\"false\" data-element=\"main\" data-pb-style=\"G07EOKR\"><a href=\"#product-add-promo-284906\" target=\"\" data-link-type=\"default\" title=\"IMO 05102026 BannerCarrello\" data-element=\"link\"><img width=\"761\" height=\"80\" class=\"pagebuilder-mobile-hidden\" src=\"https:\/\/www.farma.it\/media\/wysiwyg\/VC15_Active_CartBD_10_26_1.png\" alt=\"IMO 05102026 BannerCarrello\" title=\"IMO 05102026 BannerCarrello\" loading=\"lazy\" data-element=\"desktop_image\" data-pb-style=\"XTES42W\"><img width=\"288\" height=\"164\" class=\"pagebuilder-mobile-only\" src=\"https:\/\/www.farma.it\/media\/wysiwyg\/VC15_Active_CartBM_10_26.png\" alt=\"IMO 05102026 BannerCarrello\" title=\"IMO 05102026 BannerCarrello\" loading=\"lazy\" data-element=\"mobile_image\" data-pb-style=\"FBDF4WI\"><\/a><\/figure><div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><form id=\"product-add-promo-284906\" method=\"post\" action=\"\/checkout\/cart\/add\/\">\r\n    <input name=\"form_key\" type=\"hidden\" x-bind:value=\"hyva.getFormKey()\">\r\n    <input name=\"uenc\" type=\"hidden\" x-bind:value=\"hyva.getUenc()\">\r\n    <input name=\"product\" type=\"hidden\" value=\"284906\">\r\n<\/form>\r\n\r\n
9239<script>\r\n    window.addEventListener('init-external-scripts',function () {\r\n        document.querySelector('a[href*=\"#product-add-promo-284906\"]').addEventListener(\"click\", function(e) {\r\n            e.preventDefault();\r\n            document.getElementById(\"product-add-promo-284906\").submit();\r\n        });\r\n    });\r\n<\/script>\r\n<\/div><\/div><\/div>    <\/div>\n","54":"\n<div data-banner-id=\"54\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-prodeco2\" aria-label=\"Promozione\"  title=\"Prodeco 30092026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Relief_BPP_09_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","6":"\n<div data-banner-id=\"6\">\n        <\/div>\n","41":"\n<div data-banner-id=\"41\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-boiron\" aria-label=\"Promozione\" title=\"Boiron 01102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Euphralia_BPP_10_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","40":"\n<div data-banner-id=\"40\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-kenvue3\" aria-label=\"Promozione\" title=\"Kenvue 05102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Neutrogena_BPP_10_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","21":"\n<div data-banner-id=\"21\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/promo-esi\" aria-label=\"Promozione\" title=\"Esi 05102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/ESI_BPP_10_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","13":"\n<div data-banner-id=\"13\">\n    <div data-content-type=\"html\" data-appearance=\"default\" data-intersect=\"false\" data-element=\"main\" data-decoded=\"true\"><a href=\"\/prodotti-elanco\" aria-label=\"Promozione\" title=\"Elanco 08102026 BannerProductPage\">\r\n<img src=\"https:\/\/www.farma.it\/media\/wysiwyg\/banner_product_page\/Elanco_BPP_10_26.png\" alt=\"\" width=\"333\" height=\"189\" class=\"rounded-md mb-5\" \/>\r\n<\/a><\/div>    <\/div>\n","10":"\n<div data-banner-id=\"10\">\n        <\/div>\n","9":"\n<div data-banner-id=\"9\">\n        <\/div>\n","8":"\n<div data-banner-id=\"8\">\n        <\/div>\n","7":"\n<div data-banner-id=\"7\">\n        <\/div>\n"},"injectorParams":{"containerSelector":".products-grid > .relative > .grid:not(.amasty-banner-items)","itemSelector":".products-grid > .relative > .grid:not(.amasty-banner-items) .product-item","banners":[]},"banners":[],"injectorSectionId":14};
9240                this.injectorResolver = amBannerInjectorResolver?.();
9241
9242                this.insertBanners();
9243                this.isLoading = false;
9244            },
9245
9246            insertBanners: function () {
9247                document.querySelectorAll('[data-role="amasty-banner-container"]').forEach((container) => {
9248                    const sectionId = container.getAttribute('data-position');
9249
9250                    if (sectionId) {
9251                        this.loadBannerBySection(sectionId, container);
9252                    } else {
9253                        this.loadBannerByBannerId(container);
9254                    }
9255                });
9256            },
9257
9258            getBanners: function (bannerId) {
9259                if (this.options.banners.indexOf(bannerId) === -1) {
9260                    return [];
9261                }
9262                const insertedBanner = this.banners.find((element) => {
9263                    return element === bannerId;
9264                });
9265
9266                return content[insertedBanner];
9267            },
9268
9269            getSectionBanners: function (section) {
9270                if (!(section in this.options.sections)) {
9271                    return [];
9272                }
9273
9274                return this.options.sections[section].map((id) => {
9275                    return this.options.content[id];
9276                });
9277            },
9278
9279            loadBannerBySection: function (sectionId, container) {
9280                container.innerHTML = this.getSectionBanners(sectionId).join('');
9281                this.injectorResolver?.resolve(sectionId, this.options.injectorParams);
9282                this.updateSection(`[data-role="amasty-banner-container"][data-position="${sectionId}"]`, container);
9283            },
9284
9285            loadBannerByBannerId: function (container) {
9286                const bannerId = container.getAttribute('data-bannerid');
9287                container.innerHTML = (this.getBanners(bannerId));
9288                this.updateSection(`[data-role="amasty-banner-container"][data-bannerid="${bannerId}"]`, container);
9289            },
9290
9291            updateSection: function(containerSelector, container) {
9292                hyva.replaceDomElement(
9293                    containerSelector,
9294                    container.innerHTML
9295                );
9296            }
9297        }
9298    }
9299</script>
vendor: 1 bytes, line 9299
9299
9300<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"WebSite","url":"https:\/\/www.farma.it\/","name":"Antica Farmacia Orlandi","potentialAction":{"@type":"SearchAction","target":"https:\/\/www.farma.it\/catalogsearch\/result\/?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
9300<script type="application/ld+json">{"sameAs":["https:\/\/www.facebook.com\/farmapuntoit","https:\/\/www.instagram.com\/farma.it\/"]}</script>
9300<script type="text/json" id="default-section-data">
9301    {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"AT":{"name":"Austria","regions":{"102":{"code":"BL","name":"Burgenland"},"99":{"code":"KN","name":"K\u00e4rnten"},"96":{"code":"NO","name":"Nieder\u00f6sterreich"},"97":{"code":"OO","name":"Ober\u00f6sterreich"},"98":{"code":"SB","name":"Salzburg"},"100":{"code":"ST","name":"Steiermark"},"101":{"code":"TI","name":"Tirol"},"103":{"code":"VB","name":"Vorarlberg"},"95":{"code":"WI","name":"Wien"}}},"BE":{"name":"Belgio","regions":{"620":{"code":"VAN","name":"Antwerpen"},"621":{"code":"WBR","name":"Brabant wallon"},"622":{"code":"BRU","name":"Brussels-Capital Region"},"623":{"code":"WHT","name":"Hainaut"},"625":{"code":"WLG","name":"Li\u00e8ge"},"624":{"code":"VLI","name":"Limburg"},"626":{"code":"WLX","name":"Luxembourg"},"627":{"code":"WNA","name":"Namur"},"628":{"code":"VOV","name":"Oost-Vlaanderen"},"629":{"code":"VBR","name":"Vlaams-Brabant"},"630":{"code":"VWV","name":"West-Vlaanderen"}}},"BG":{"name":"Bulgaria","regions":{"640":{"code":"BG-01","name":"Blagoevgrad"},"641":{"code":"BG-02","name":"Burgas"},"647":{"code":"BG-08","name":"Dobrich"},"646":{"code":"BG-07","name":"Gabrovo"},"665":{"code":"BG-26","name":"Haskovo"},"648":{"code":"BG-09","name":"Kardzhali"},"649":{"code":"BG-10","name":"Kyustendil"},"650":{"code":"BG-11","name":"Lovech"},"651":{"code":"BG-12","name":"Montana"},"652":{"code":"BG-13","name":"Pazardzhik"},"653":{"code":"BG-14","name":"Pernik"},"654":{"code":"BG-15","name":"Pleven"},"655":{"code":"BG-16","name":"Plovdiv"},"656":{"code":"BG-17","name":"Razgrad"},"657":{"code":"BG-18","name":"Ruse"},"666":{"code":"BG-27","name":"Shumen"},"658":{"code":"BG-19","name":"Silistra"},"659":{"code":"BG-20","name":"Sliven"},"660":{"code":"BG-21","name":"Smolyan"},"661":{"code":"BG-22","name":"Sofia City"},"662":{"code":"BG-23","name":"Sofia Province"},"663":{"code":"BG-24","name":"Stara Zagora"},"664":{"code":"BG-25","name":"Targovishte"},"642":{"code":"BG-03","name":"Varna"},"643":{"code":"BG-04","name":"Veliko Tarnovo"},"644":{"code":"BG-05","name":"Vidin"},"645":{"code":"BG-06","name":"Vratsa"},"667":{"code":"BG-28","name":"Yambol"}}},"CH":{"name":"Svizzera","regions":{"104":{"code":"AG","name":"Aargau"},"106":{"code":"AR","name":"Appenzell Ausserrhoden"},"105":{"code":"AI","name":"Appenzell Innerrhoden"},"108":{"code":"BL","name":"Basel-Landschaft"},"109":{"code":"BS","name":"Basel-Stadt"},"107":{"code":"BE","name":"Bern"},"110":{"code":"FR","name":"Friburg"},"111":{"code":"GE","name":"Geneva"},"112":{"code":"GL","name":"Glarus"},"113":{"code":"GR","name":"Graub\u00fcnden"},"114":{"code":"JU","name":"Jura"},"115":{"code":"LU","name":"Lucerne"},"116":{"code":"NE","name":"Neuch\u00e2tel"},"117":{"code":"NW","name":"Nidwalden"},"118":{"code":"OW","name":"Obwalden"},"120":{"code":"SH","name":"Schaffhausen"},"122":{"code":"SZ","name":"Schwyz"},"121":{"code":"SO","name":"Solothurn"},"119":{"code":"SG","name":"St. Gallen"},"123":{"code":"TG","name":"Thurgau"},"124":{"code":"TI","name":"Ticino"},"125":{"code":"UR","name":"Uri"},"126":{"code":"VD","name":"Vaud"},"127":{"code":"VS","name":"Wallis"},"128":{"code":"ZG","name":"Zug"},"129":{"code":"ZH","name":"Z\u00fcrich"}}},"CZ":{"name":"Repubblica Ceca","regions":{"752":{"code":"CZ-31","name":"Jiho\u010desk\u00fd kraj"},"760":{"code":"CZ-64","name":"Jihomoravsk\u00fd kraj"},"754":{"code":"CZ-41","name":"Karlovarsk\u00fd kraj"},"759":{"code":"CZ-63","name":"Kraj Vyso\u010dina"},"757":{"code":"CZ-52","name":"Kr\u00e1lov\u00e9hradeck\u00fd kraj"},"756":{"code":"CZ-51","name":"Libereck\u00fd kraj"},"763":{"code":"CZ-80","name":"Moravskoslezsk\u00fd kraj"},"761":{"code":"CZ-71","name":"Olomouck\u00fd kraj"},"758":{"code":"CZ-53","name":"Pardubick\u00fd kraj"},"753":{"code":"CZ-32","name":"Plze\u0148sk\u00fd kraj"},"750":{"code":"CZ-10","name":"Praha, Hlavn\u00ed m\u011bsto"},"751":{"code":"CZ-20","name":"St\u0159edo\u010desk\u00fd kraj"},"755":{"code":"CZ-42","name":"\u00dasteck\u00fd kraj"},"762":{"code":"CZ-72","name":"Zl\u00ednsk\u00fd kraj"}}},"DE":{"name":"Germania","regions":{"80":{"code":"BAW","name":"Baden-W\u00fcrttemberg"},"81":{"code":"BAY","name":"Bayern"},"82":{"code":"BER","name":"Berlin"},"83":{"code":"BRG","name":"Brandenburg"},"84":{"code":"BRE","name":"Bremen"},"85":{"code":"HAM","name":"Hamburg"},"86":{"code":"HES","name":"Hessen"},"87":{"code":"MEC","name":"Mecklenburg-Vorpommern"},"79":{"code":"NDS","name":"Niedersachsen"},"88":{"code":"NRW","name":"Nordrhein-Westfalen"},"89":{"code":"RHE","name":"Rheinland-Pfalz"},"90":{"code":"SAR","name":"Saarland"},"91":{"code":"SAS","name":"Sachsen"},"92":{"code":"SAC","name":"Sachsen-Anhalt"},"93":{"code":"SCN","name":"Schleswig-Holstein"},"94":{"code":"THE","name":"Th\u00fcringen"}}},"DK":{"name":"Danimarca","regions":{"764":{"code":"DK-84","name":"Hovedstaden"},"765":{"code":"DK-82","name":"Midtjylland"},"766":{"code":"DK-81","name":"Nordjylland"},"767":{"code":"DK-85","name":"Sj\u00e6lland"},"768":{"code":"DK-83","name":"Syddanmark"}}},"EE":{"name":"Estonia","regions":{"340":{"code":"EE-37","name":"Harjumaa"},"341":{"code":"EE-39","name":"Hiiumaa"},"342":{"code":"EE-44","name":"Ida-Virumaa"}
9301,"344":{"code":"EE-51","name":"J\u00e4rvamaa"},"343":{"code":"EE-49","name":"J\u00f5gevamaa"},"346":{"code":"EE-59","name":"L\u00e4\u00e4ne-Virumaa"},"345":{"code":"EE-57","name":"L\u00e4\u00e4nemaa"},"348":{"code":"EE-67","name":"P\u00e4rnumaa"},"347":{"code":"EE-65","name":"P\u00f5lvamaa"},"349":{"code":"EE-70","name":"Raplamaa"},"350":{"code":"EE-74","name":"Saaremaa"},"351":{"code":"EE-78","name":"Tartumaa"},"352":{"code":"EE-82","name":"Valgamaa"},"353":{"code":"EE-84","name":"Viljandimaa"},"354":{"code":"EE-86","name":"V\u00f5rumaa"}}},"ES":{"name":"Spagna","regions":{"130":{"code":"A Coru\u0441a","name":"A Coru\u00f1a"},"131":{"code":"Alava","name":"Alava"},"132":{"code":"Albacete","name":"Albacete"},"133":{"code":"Alicante","name":"Alicante"},"134":{"code":"Almeria","name":"Almeria"},"135":{"code":"Asturias","name":"Asturias"},"136":{"code":"Avila","name":"Avila"},"137":{"code":"Badajoz","name":"Badajoz"},"138":{"code":"Baleares","name":"Baleares"},"139":{"code":"Barcelona","name":"Barcelona"},"140":{"code":"Burgos","name":"Burgos"},"141":{"code":"Caceres","name":"Caceres"},"142":{"code":"Cadiz","name":"Cadiz"},"143":{"code":"Cantabria","name":"Cantabria"},"144":{"code":"Castellon","name":"Castellon"},"145":{"code":"Ceuta","name":"Ceuta"},"146":{"code":"Ciudad Real","name":"Ciudad Real"},"147":{"code":"Cordoba","name":"Cordoba"},"148":{"code":"Cuenca","name":"Cuenca"},"149":{"code":"Girona","name":"Girona"},"150":{"code":"Granada","name":"Granada"},"151":{"code":"Guadalajara","name":"Guadalajara"},"152":{"code":"Guipuzcoa","name":"Guipuzcoa"},"153":{"code":"Huelva","name":"Huelva"},"154":{"code":"Huesca","name":"Huesca"},"155":{"code":"Jaen","name":"Jaen"},"156":{"code":"La Rioja","name":"La Rioja"},"157":{"code":"Las Palmas","name":"Las Palmas"},"158":{"code":"Leon","name":"Leon"},"159":{"code":"Lleida","name":"Lleida"},"160":{"code":"Lugo","name":"Lugo"},"161":{"code":"Madrid","name":"Madrid"},"162":{"code":"Malaga","name":"Malaga"},"163":{"code":"Melilla","name":"Melilla"},"164":{"code":"Murcia","name":"Murcia"},"165":{"code":"Navarra","name":"Navarra"},"166":{"code":"Ourense","name":"Ourense"},"167":{"code":"Palencia","name":"Palencia"},"168":{"code":"Pontevedra","name":"Pontevedra"},"169":{"code":"Salamanca","name":"Salamanca"},"170":{"code":"Santa Cruz de Tenerife","name":"Santa Cruz de Tenerife"},"171":{"code":"Segovia","name":"Segovia"},"172":{"code":"Sevilla","name":"Sevilla"},"173":{"code":"Soria","name":"Soria"},"174":{"code":"Tarragona","name":"Tarragona"},"175":{"code":"Teruel","name":"Teruel"},"176":{"code":"Toledo","name":"Toledo"},"177":{"code":"Valencia","name":"Valencia"},"178":{"code":"Valladolid","name":"Valladolid"},"179":{"code":"Vizcaya","name":"Vizcaya"},"180":{"code":"Zamora","name":"Zamora"},"181":{"code":"Zaragoza","name":"Zaragoza"}}},"FI":{"name":"Finlandia","regions":{"339":{"code":"Ahvenanmaa","name":"Ahvenanmaa"},"333":{"code":"Etel\u00e4-Karjala","name":"Etel\u00e4-Karjala"},"326":{"code":"Etel\u00e4-Pohjanmaa","name":"Etel\u00e4-Pohjanmaa"},"325":{"code":"Etel\u00e4-Savo","name":"Etel\u00e4-Savo"},"337":{"code":"It\u00e4-Uusimaa","name":"It\u00e4-Uusimaa"},"322":{"code":"Kainuu","name":"Kainuu"},"335":{"code":"Kanta-H\u00e4me","name":"Kanta-H\u00e4me"},"330":{"code":"Keski-Pohjanmaa","name":"Keski-Pohjanmaa"},"331":{"code":"Keski-Suomi","name":"Keski-Suomi"},"338":{"code":"Kymenlaakso","name":"Kymenlaakso"},"320":{"code":"Lappi","name":"Lappi"},"334":{"code":"P\u00e4ij\u00e4t-H\u00e4me","name":"P\u00e4ij\u00e4t-H\u00e4me"},"328":{"code":"Pirkanmaa","name":"Pirkanmaa"},"327":{"code":"Pohjanmaa","name":"Pohjanmaa"},"323":{"code":"Pohjois-Karjala","name":"Pohjois-Karjala"},"321":{"code":"Pohjois-Pohjanmaa","name":"Pohjois-Pohjanmaa"},"324":{"code":"Pohjois-Savo","name":"Pohjois-Savo"},"329":{"code":"Satakunta","name":"Satakunta"},"336":{"code":"Uusimaa","name":"Uusimaa"},"332":{"code":"Varsinais-Suomi","name":"Varsinais-Suomi"}}},"FR":{"name":"Francia","regions":{"182":{"code":"1","name":"Ain"},"183":{"code":"2","name":"Aisne"},"184":{"code":"3","name":"Allier"}
9301,"185":{"code":"4","name":"Alpes-de-Haute-Provence"},"187":{"code":"6","name":"Alpes-Maritimes"},"188":{"code":"7","name":"Ard\u00e8che"},"189":{"code":"8","name":"Ardennes"},"190":{"code":"9","name":"Ari\u00e8ge"},"191":{"code":"10","name":"Aube"},"192":{"code":"11","name":"Aude"},"193":{"code":"12","name":"Aveyron"},"249":{"code":"67","name":"Bas-Rhin"},"194":{"code":"13","name":"Bouches-du-Rh\u00f4ne"},"195":{"code":"14","name":"Calvados"},"196":{"code":"15","name":"Cantal"},"197":{"code":"16","name":"Charente"},"198":{"code":"17","name":"Charente-Maritime"},"199":{"code":"18","name":"Cher"},"200":{"code":"19","name":"Corr\u00e8ze"},"201":{"code":"2A","name":"Corse-du-Sud"},"203":{"code":"21","name":"C\u00f4te-d'Or"},"204":{"code":"22","name":"C\u00f4tes-d'Armor"},"205":{"code":"23","name":"Creuse"},"261":{"code":"79","name":"Deux-S\u00e8vres"},"206":{"code":"24","name":"Dordogne"},"207":{"code":"25","name":"Doubs"},"208":{"code":"26","name":"Dr\u00f4me"},"273":{"code":"91","name":"Essonne"},"209":{"code":"27","name":"Eure"},"210":{"code":"28","name":"Eure-et-Loir"},"211":{"code":"29","name":"Finist\u00e8re"},"212":{"code":"30","name":"Gard"},"214":{"code":"32","name":"Gers"},"215":{"code":"33","name":"Gironde"},"250":{"code":"68","name":"Haut-Rhin"},"202":{"code":"2B","name":"Haute-Corse"},"213":{"code":"31","name":"Haute-Garonne"},"225":{"code":"43","name":"Haute-Loire"},"234":{"code":"52","name":"Haute-Marne"},"252":{"code":"70","name":"Haute-Sa\u00f4ne"},"256":{"code":"74","name":"Haute-Savoie"},"269":{"code":"87","name":"Haute-Vienne"},"186":{"code":"5","name":"Hautes-Alpes"},"247":{"code":"65","name":"Hautes-Pyr\u00e9n\u00e9es"},"274":{"code":"92","name":"Hauts-de-Seine"},"216":{"code":"34","name":"H\u00e9rault"},"217":{"code":"35","name":"Ille-et-Vilaine"},"218":{"code":"36","name":"Indre"},"219":{"code":"37","name":"Indre-et-Loire"},"220":{"code":"38","name":"Is\u00e8re"},"221":{"code":"39","name":"Jura"},"222":{"code":"40","name":"Landes"},"223":{"code":"41","name":"Loir-et-Cher"},"224":{"code":"42","name":"Loire"},"226":{"code":"44","name":"Loire-Atlantique"},"227":{"code":"45","name":"Loiret"},"228":{"code":"46","name":"Lot"},"229":{"code":"47","name":"Lot-et-Garonne"},"230":{"code":"48","name":"Loz\u00e8re"},"231":{"code":"49","name":"Maine-et-Loire"},"232":{"code":"50","name":"Manche"},"233":{"code":"51","name":"Marne"},"235":{"code":"53","name":"Mayenne"},"236":{"code":"54","name":"Meurthe-et-Moselle"},"237":{"code":"55","name":"Meuse"},"238":{"code":"56","name":"Morbihan"},"239":{"code":"57","name":"Moselle"},"240":{"code":"58","name":"Ni\u00e8vre"},"241":{"code":"59","name":"Nord"},"242":{"code":"60","name":"Oise"},"243":{"code":"61","name":"Orne"},"257":{"code":"75","name":"Paris"},"244":{"code":"62","name":"Pas-de-Calais"},"245":{"code":"63","name":"Puy-de-D\u00f4me"},"246":{"code":"64","name":"Pyr\u00e9n\u00e9es-Atlantiques"},"248":{"code":"66","name":"Pyr\u00e9n\u00e9es-Orientales"},"251":{"code":"69","name":"Rh\u00f4ne"},"253":{"code":"71","name":"Sa\u00f4ne-et-Loire"},"254":{"code":"72","name":"Sarthe"},"255":{"code":"73","name":"Savoie"},"259":{"code":"77","name":"Seine-et-Marne"},"258":{"code":"76","name":"Seine-Maritime"},"275":{"code":"93","name":"Seine-Saint-Denis"},"262":{"code":"80","name":"Somme"},"263":{"code":"81","name":"Tarn"},"264":{"code":"82","name":"Tarn-et-Garonne"},"272":{"code":"90","name":"Territoire-de-Belfort"},"277":{"code":"95","name":"Val-d'Oise"},"276":{"code":"94","name":"Val-de-Marne"},"265":{"code":"83","name":"Var"},"266":{"code":"84","name":"Vaucluse"},"267":{"code":"85","name":"Vend\u00e9e"},"268":{"code":"86","name":"Vienne"},"270":{"code":"88","name":"Vosges"},"271":{"code":"89","name":"Yonne"},"260":{"code":"78","name":"Yvelines"}}},"GR":{"name":"Grecia","regions":{"806":{"code":"GR-69","name":"\u00c1gion \u00d3ros"},"793":{"code":"GR-A","name":"Anatolik\u00ed Makedon\u00eda kai Thr\u00e1ki"},"794":{"code":"GR-I","name":"Attik\u00ed"},"795":{"code":"GR-G","name":"Dytik\u00ed Ell\u00e1da"},"796":{"code":"GR-C","name":"Dytik\u00ed Makedon\u00eda"},"797":{"code":"GR-F","name":"Ion\u00eda N\u00edsia"},"798":{"code":"GR-D","name":"\u00cdpeiros"},"799":{"code":"GR-B","name":"Kentrik\u00ed Makedon\u00eda"},"800":{"code":"GR-M","name":"Kr\u00edti"},"801":{"code":"GR-L","name":"N\u00f3tio Aiga\u00edo"},"802":{"code":"GR-J","name":"Pelop\u00f3nnisos"},"803":{"code":"GR-H","name":"Stere\u00e1 Ell\u00e1da"}
9301,"804":{"code":"GR-E","name":"Thessal\u00eda"},"805":{"code":"GR-K","name":"V\u00f3reio Aiga\u00edo"}}},"HR":{"name":"Croazia","regions":{"554":{"code":"HR-07","name":"Bjelovarsko-bilogorska \u017eupanija"},"559":{"code":"HR-12","name":"Brodsko-posavska \u017eupanija"},"566":{"code":"HR-19","name":"Dubrova\u010dko-neretvanska \u017eupanija"},"568":{"code":"HR-21","name":"Grad Zagreb"},"565":{"code":"HR-18","name":"Istarska \u017eupanija"},"551":{"code":"HR-04","name":"Karlova\u010dka \u017eupanija"},"553":{"code":"HR-06","name":"Koprivni\u010dko-kri\u017eeva\u010dka \u017eupanija"},"549":{"code":"HR-02","name":"Krapinsko-zagorska \u017eupanija"},"556":{"code":"HR-09","name":"Li\u010dko-senjska \u017eupanija"},"567":{"code":"HR-20","name":"Me\u0111imurska \u017eupanija"},"561":{"code":"HR-14","name":"Osje\u010dko-baranjska \u017eupanija"},"558":{"code":"HR-11","name":"Po\u017ee\u0161ko-slavonska \u017eupanija"},"555":{"code":"HR-08","name":"Primorsko-goranska \u017eupanija"},"562":{"code":"HR-15","name":"\u0160ibensko-kninska \u017eupanija"},"550":{"code":"HR-03","name":"Sisa\u010dko-moslava\u010dka \u017eupanija"},"564":{"code":"HR-17","name":"Splitsko-dalmatinska \u017eupanija"},"552":{"code":"HR-05","name":"Vara\u017edinska \u017eupanija"},"557":{"code":"HR-10","name":"Viroviti\u010dko-podravska \u017eupanija"},"563":{"code":"HR-16","name":"Vukovarsko-srijemska \u017eupanija"},"560":{"code":"HR-13","name":"Zadarska \u017eupanija"},"548":{"code":"HR-01","name":"Zagreba\u010dka \u017eupanija"}}},"HU":{"name":"Ungheria"},"IE":{"name":"Irlanda"},"IT":{"name":"Italia","regions":{"825":{"code":"AG","name":"Agrigento"},"826":{"code":"AL","name":"Alessandria"},"827":{"code":"AN","name":"Ancona"},"828":{"code":"AO","name":"Aosta"},"830":{"code":"AR","name":"Arezzo"},"831":{"code":"AP","name":"Ascoli-Piceno"},"832":{"code":"AT","name":"Asti"},"833":{"code":"AV","name":"Avellino"},"834":{"code":"BA","name":"Bari"},"835":{"code":"BT","name":"Barletta-Andria-Trani"},"836":{"code":"BL","name":"Belluno"},"837":{"code":"BN","name":"Benevento"},"838":{"code":"BG","name":"Bergamo"},"839":{"code":"BI","name":"Biella"},"840":{"code":"BO","name":"Bologna"},"841":{"code":"BZ","name":"Bolzano"},"842":{"code":"BS","name":"Brescia"},"843":{"code":"BR","name":"Brindisi"},"844":{"code":"CA","name":"Cagliari"},"845":{"code":"CL","name":"Caltanissetta"},"846":{"code":"CB","name":"Campobasso"},"847":{"code":"CI","name":"Carbonia Iglesias"},"848":{"code":"CE","name":"Caserta"},"849":{"code":"CT","name":"Catania"},"850":{"code":"CZ","name":"Catanzaro"},"851":{"code":"CH","name":"Chieti"},"852":{"code":"CO","name":"Como"},"853":{"code":"CS","name":"Cosenza"},"854":{"code":"CR","name":"Cremona"},"855":{"code":"KR","name":"Crotone"},"856":{"code":"CN","name":"Cuneo"},"857":{"code":"EN","name":"Enna"},"858":{"code":"FM","name":"Fermo"},"859":{"code":"FE","name":"Ferrara"},"860":{"code":"FI","name":"Firenze"},"861":{"code":"FG","name":"Foggia"},"862":{"code":"FC","name":"Forli-Cesena"},"863":{"code":"FR","name":"Frosinone"},"864":{"code":"GE","name":"Genova"},"865":{"code":"GO","name":"Gorizia"},"866":{"code":"GR","name":"Grosseto"},"867":{"code":"IM","name":"Imperia"},"868":{"code":"IS","name":"Isernia"},"829":{"code":"AQ","name":"L'Aquila"},"869":{"code":"SP","name":"La-Spezia"},"870":{"code":"LT","name":"Latina"},"871":{"code":"LE","name":"Lecce"},"872":{"code":"LC","name":"Lecco"},"873":{"code":"LI","name":"Livorno"},"874":{"code":"LO","name":"Lodi"},"875":{"code":"LU","name":"Lucca"},"876":{"code":"MC","name":"Macerata"},"877":{"code":"MN","name":"Mantova"},"878":{"code":"MS","name":"Massa-Carrara"},"879":{"code":"MT","name":"Matera"},"880":{"code":"VS","name":"Medio Campidano"},"881":{"code":"ME","name":"Messina"},"882":{"code":"MI","name":"Milano"},"883":{"code":"MO","name":"Modena"},"884":{"code":"MB","name":"Monza-Brianza"},"885":{"code":"NA","name":"Napoli"},"886":{"code":"NO","name":"Novara"},"887":{"code":"NU","name":"Nuoro"},"888":{"code":"OG","name":"Ogliastra"},"889":{"code":"OT","name":"Olbia Tempio"},"890":{"code":"OR","name":"Oristano"},"891":{"code":"PD","name":"Padova"},"892":{"code":"PA","name":"Palermo"},"893":{"code":"PR","name":"Parma"},"894":{"code":"PV","name":"Pavia"},"895":{"code":"PG","name":"Perugia"},"896":{"code":"PU","name":"Pesaro-Urbino"},"897":{"code":"PE","name":"Pescara"},"898":{"code":"PC","name":"Piacenza"},"899":{"code":"PI","name":"Pisa"},"900":{"code":"PT","name":"Pistoia"},"901":{"code":"PN","name":"Pordenone"},"902":{"code":"PZ","name":"Potenza"},"903":{"code":"PO","name":"Prato"},"904":{"code":"RG","name":"Ragusa"},"905":{"code":"RA","name":"Ravenna"},"906":{"code":"RC","name":"Reggio-Calabria"},"907":{"code":"RE","name":"Reggio-Emilia"},"908":{"code":"RI","name":"Rieti"},"909":{"code":"RN","name":"Rimini"},"910":{"code":"RM","name":"Roma"},"911":{"code":"RO","name":"Rovigo"},"912":{"code":"SA","name":"Salerno"},"913":{"code":"SS","name":"Sassari"},"914":{"code":"SV","name":"Savona"},"915":{"code":"SI","name":"Siena"},"916":{"code":"SR","name":"Siracusa"},"917":{"code":"SO","name":"Sondrio"},"918":{"code":"TA","name":"Taranto"},"919":{"code":"TE","name":"Teramo"},"920":{"code":"TR","name":"Terni"},"921":{"code":"TO","name":"Torino"},"922":{"code":"TP","name":"Trapani"},"923":{"code":"TN","name":"Trento"},"924":{"code":"TV","name":"Treviso"},"925":{"code":"TS","name":"Trieste"},"926":{"code":"UD","name":"Udine"},"927":{"code":"VA","name":"Varese"},"928":{"code":"VE","name":"Venezia"},"929":{"code":"VB","name":"Verbania"},"930":{"code":"VC","name":"Vercelli"},"931":{"code":"VR","name":"Verona"}
9301,"932":{"code":"VV","name":"Vibo-Valentia"},"933":{"code":"VI","name":"Vicenza"},"934":{"code":"VT","name":"Viterbo"}}},"LT":{"name":"Lituania","regions":{"475":{"code":"LT-AL","name":"Alytaus Apskritis"},"476":{"code":"LT-KU","name":"Kauno Apskritis"},"477":{"code":"LT-KL","name":"Klaip\u0117dos Apskritis"},"478":{"code":"LT-MR","name":"Marijampol\u0117s Apskritis"},"479":{"code":"LT-PN","name":"Panev\u0117\u017eio Apskritis"},"480":{"code":"LT-SA","name":"\u0160iauli\u0173 Apskritis"},"481":{"code":"LT-TA","name":"Taurag\u0117s Apskritis"},"482":{"code":"LT-TE","name":"Tel\u0161i\u0173 Apskritis"},"483":{"code":"LT-UT","name":"Utenos Apskritis"},"484":{"code":"LT-VL","name":"Vilniaus Apskritis"}}},"LU":{"name":"Lussemburgo"},"LV":{"name":"Lettonia","regions":{"471":{"code":"\u0100da\u017eu novads","name":"\u0100da\u017eu novads"},"366":{"code":"Aglonas novads","name":"Aglonas novads"},"367":{"code":"LV-AI","name":"Aizkraukles novads"},"368":{"code":"Aizputes novads","name":"Aizputes novads"},"369":{"code":"Akn\u012bstes novads","name":"Akn\u012bstes novads"},"370":{"code":"Alojas novads","name":"Alojas novads"},"371":{"code":"Alsungas novads","name":"Alsungas novads"},"372":{"code":"LV-AL","name":"Al\u016bksnes novads"},"373":{"code":"Amatas novads","name":"Amatas novads"},"374":{"code":"Apes novads","name":"Apes novads"},"375":{"code":"Auces novads","name":"Auces novads"},"376":{"code":"Bab\u012btes novads","name":"Bab\u012btes novads"},"377":{"code":"Baldones novads","name":"Baldones novads"},"378":{"code":"Baltinavas novads","name":"Baltinavas novads"},"379":{"code":"LV-BL","name":"Balvu novads"},"380":{"code":"LV-BU","name":"Bauskas novads"},"381":{"code":"Bever\u012bnas novads","name":"Bever\u012bnas novads"},"382":{"code":"Broc\u0113nu novads","name":"Broc\u0113nu novads"},"383":{"code":"Burtnieku novads","name":"Burtnieku novads"},"384":{"code":"Carnikavas novads","name":"Carnikavas novads"},"387":{"code":"LV-CE","name":"C\u0113su novads"},"385":{"code":"Cesvaines novads","name":"Cesvaines novads"},"386":{"code":"Ciblas novads","name":"Ciblas novads"},"388":{"code":"Dagdas novads","name":"Dagdas novads"},"355":{"code":"LV-DGV","name":"Daugavpils"},"389":{"code":"LV-DA","name":"Daugavpils novads"},"390":{"code":"LV-DO","name":"Dobeles novads"},"391":{"code":"Dundagas novads","name":"Dundagas novads"},"392":{"code":"Durbes novads","name":"Durbes novads"},"393":{"code":"Engures novads","name":"Engures novads"},"472":{"code":"\u0112rg\u013cu novads","name":"\u0112rg\u013cu novads"},"394":{"code":"Garkalnes novads","name":"Garkalnes novads"},"395":{"code":"Grobi\u0146as novads","name":"Grobi\u0146as novads"},"396":{"code":"LV-GU","name":"Gulbenes novads"},"397":{"code":"Iecavas novads","name":"Iecavas novads"},"398":{"code":"Ik\u0161\u0137iles novads","name":"Ik\u0161\u0137iles novads"},"399":{"code":"Il\u016bkstes novads","name":"Il\u016bkstes novads"},"400":{"code":"In\u010dukalna novads","name":"In\u010dukalna novads"},"401":{"code":"Jaunjelgavas novads","name":"Jaunjelgavas novads"},"402":{"code":"Jaunpiebalgas novads","name":"Jaunpiebalgas novads"},"403":{"code":"Jaunpils novads","name":"Jaunpils novads"},"357":{"code":"J\u0113kabpils","name":"J\u0113kabpils"},"405":{"code":"LV-JK","name":"J\u0113kabpils novads"},"356":{"code":"LV-JEL","name":"Jelgava"},"404":{"code":"LV-JL","name":"Jelgavas novads"},"358":{"code":"LV-JUR","name":"J\u016brmala"},"406":{"code":"Kandavas novads","name":"Kandavas novads"},"412":{"code":"K\u0101rsavas novads","name":"K\u0101rsavas novads"},"473":{"code":"\u0136eguma novads","name":"\u0136eguma novads"},"474":{"code":"\u0136ekavas novads","name":"\u0136ekavas novads"},"407":{"code":"Kokneses novads","name":"Kokneses novads"},"410":{"code":"LV-KR","name":"Kr\u0101slavas novads"},"408":{"code":"Krimuldas novads","name":"Krimuldas novads"},"409":{"code":"Krustpils novads","name":"Krustpils novads"},"411":{"code":"LV-KU","name":"Kuld\u012bgas novads"},"413":{"code":"Lielv\u0101rdes novads","name":"Lielv\u0101rdes novads"},"359":{"code":"LV-LPX","name":"Liep\u0101ja"},"360":{"code":"LV-LE","name":"Liep\u0101jas novads"},"417":{"code":"L\u012bgatnes novads","name":"L\u012bgatnes novads"},"414":{"code":"LV-LM","name":"Limba\u017eu novads"},"418":{"code":"L\u012bv\u0101nu novads","name":"L\u012bv\u0101nu novads"},"415":{"code":"Lub\u0101nas novads","name":"Lub\u0101nas novads"},"416":{"code":"LV-LU","name":"Ludzas novads"},"419":{"code":"LV-MA","name":"Madonas novads"},"421":{"code":"M\u0101lpils novads","name":"M\u0101lpils novads"},"422":{"code":"M\u0101rupes novads","name":"M\u0101rupes novads"},"420":{"code":"Mazsalacas novads","name":"Mazsalacas novads"},"423":{"code":"Nauk\u0161\u0113nu novads","name":"Nauk\u0161\u0113nu novads"},"424":{"code":"Neretas novads","name":"Neretas novads"},"425":{"code":"N\u012bcas novads","name":"N\u012bcas novads"},"426":{"code":"LV-OG","name":"Ogres novads"},"427":{"code":"Olaines novads","name":"Olaines novads"},"428":{"code":"Ozolnieku novads","name":"Ozolnieku novads"},"432":{"code":"P\u0101rgaujas novads","name":"P\u0101rgaujas novads"},"433":{"code":"P\u0101vilostas novads","name":"P\u0101vilostas novads"},"434":{"code":"P\u013cavi\u0146u novads","name":"P\u013cavi\u0146u novads"},"429":{"code":"LV-PR","name":"Prei\u013cu novads"},"430":{"code":"Priekules novads","name":"Priekules novads"},"431":{"code":"Prieku\u013cu novads","name":"Prieku\u013cu novads"},"435":{"code":"Raunas novads","name":"Raunas novads"},"361":{"code":"LV-REZ","name":"R\u0113zekne"},"442":{"code":"LV-RE","name":"R\u0113zeknes novads"},"436":{"code":"Riebi\u0146u novads","name":"Riebi\u0146u novads"},"362":{"code":"LV-RIX","name":"R\u012bga"},"363":{"code":"LV-RI","name":"R\u012bgas novads"},"437":{"code":"Rojas novads","name":"Rojas novads"},"438":{"code":"Ropa\u017eu novads","name":"Ropa\u017eu novads"},"439":{"code":"Rucavas novads","name":"Rucavas novads"},"440":{"code":"Rug\u0101ju novads","name":"Rug\u0101ju novads"},"443":{"code":"R\u016bjienas novads","name":"R\u016bjienas novads"},"441":{"code":"Rund\u0101les novads","name":"Rund\u0101les novads"},"444":{"code":"Salacgr\u012bvas novads","name":"Salacgr\u012bvas novads"},"445":{"code":"Salas novads","name":"Salas novads"},"446":{"code":"Salaspils novads","name":"Salaspils novads"},"447":{"code":"LV-SA","name":"Saldus novads"},"448":{"code":"Saulkrastu novads","name":"Saulkrastu novads"},"455":{"code":"S\u0113jas novads","name":"S\u0113jas novads"},"449":{"code":"Siguldas novads","name":"Siguldas novads"}
9301,"451":{"code":"Skr\u012bveru novads","name":"Skr\u012bveru novads"},"450":{"code":"Skrundas novads","name":"Skrundas novads"},"452":{"code":"Smiltenes novads","name":"Smiltenes novads"},"453":{"code":"Stopi\u0146u novads","name":"Stopi\u0146u novads"},"454":{"code":"Stren\u010du novads","name":"Stren\u010du novads"},"456":{"code":"LV-TA","name":"Talsu novads"},"458":{"code":"T\u0113rvetes novads","name":"T\u0113rvetes novads"},"457":{"code":"LV-TU","name":"Tukuma novads"},"459":{"code":"Vai\u0146odes novads","name":"Vai\u0146odes novads"},"460":{"code":"LV-VK","name":"Valkas novads"},"364":{"code":"Valmiera","name":"Valmiera"},"461":{"code":"LV-VM","name":"Valmieras novads"},"462":{"code":"Varak\u013c\u0101nu novads","name":"Varak\u013c\u0101nu novads"},"469":{"code":"V\u0101rkavas novads","name":"V\u0101rkavas novads"},"463":{"code":"Vecpiebalgas novads","name":"Vecpiebalgas novads"},"464":{"code":"Vecumnieku novads","name":"Vecumnieku novads"},"365":{"code":"LV-VEN","name":"Ventspils"},"465":{"code":"LV-VE","name":"Ventspils novads"},"466":{"code":"Vies\u012btes novads","name":"Vies\u012btes novads"},"467":{"code":"Vi\u013cakas novads","name":"Vi\u013cakas novads"},"468":{"code":"Vi\u013c\u0101nu novads","name":"Vi\u013c\u0101nu novads"},"470":{"code":"Zilupes novads","name":"Zilupes novads"}}},"MC":{"name":"Monaco"},"NL":{"name":"Paesi Bassi"},"PL":{"name":"Polonia","regions":{"1011":{"code":"PL-02","name":"dolno\u015bl\u0105skie"},"1012":{"code":"PL-04","name":"kujawsko-pomorskie"},"1013":{"code":"PL-06","name":"lubelskie"},"1014":{"code":"PL-08","name":"lubuskie"},"1017":{"code":"PL-14","name":"mazowieckie"},"1016":{"code":"PL-12","name":"ma\u0142opolskie"},"1018":{"code":"PL-16","name":"opolskie"},"1019":{"code":"PL-18","name":"podkarpackie"},"1020":{"code":"PL-20","name":"podlaskie"},"1021":{"code":"PL-22","name":"pomorskie"},"1022":{"code":"PL-24","name":"\u015bl\u0105skie"},"1023":{"code":"PL-26","name":"\u015bwi\u0119tokrzyskie"},"1024":{"code":"PL-28","name":"warmi\u0144sko-mazurskie"},"1025":{"code":"PL-30","name":"wielkopolskie"},"1026":{"code":"PL-32","name":"zachodniopomorskie"},"1015":{"code":"PL-10","name":"\u0142\u00f3dzkie"}}},"PT":{"name":"Portogallo","regions":{"1027":{"code":"PT-01","name":"Aveiro"},"1028":{"code":"PT-02","name":"Beja"},"1029":{"code":"PT-03","name":"Braga"},"1030":{"code":"PT-04","name":"Bragan\u00e7a"},"1031":{"code":"PT-05","name":"Castelo Branco"},"1032":{"code":"PT-06","name":"Coimbra"},"1033":{"code":"PT-07","name":"\u00c9vora"},"1034":{"code":"PT-08","name":"Faro"},"1035":{"code":"PT-09","name":"Guarda"},"1036":{"code":"PT-10","name":"Leiria"},"1037":{"code":"PT-11","name":"Lisboa"},"1038":{"code":"PT-12","name":"Portalegre"},"1039":{"code":"PT-13","name":"Porto"},"1046":{"code":"PT-30","name":"Regi\u00e3o Aut\u00f3noma da Madeira"},"1045":{"code":"PT-20","name":"Regi\u00e3o Aut\u00f3noma dos A\u00e7ores"},"1040":{"code":"PT-14","name":"Santar\u00e9m"},"1041":{"code":"PT-15","name":"Set\u00fabal"},"1042":{"code":"PT-16","name":"Viana do Castelo"},"1043":{"code":"PT-17","name":"Vila Real"},"1044":{"code":"PT-18","name":"Viseu"}}},"RO":{"name":"Romania","regions":{"278":{"code":"AB","name":"Alba"},"279":{"code":"AR","name":"Arad"},"280":{"code":"AG","name":"Arge\u015f"},"281":{"code":"BC","name":"Bac\u0103u"},"282":{"code":"BH","name":"Bihor"},"283":{"code":"BN","name":"Bistri\u0163a-N\u0103s\u0103ud"},"284":{"code":"BT","name":"Boto\u015fani"},"286":{"code":"BR","name":"Br\u0103ila"},"285":{"code":"BV","name":"Bra\u015fov"},"287":{"code":"B","name":"Bucure\u015fti"},"288":{"code":"BZ","name":"Buz\u0103u"},"290":{"code":"CL","name":"C\u0103l\u0103ra\u015fi"},"289":{"code":"CS","name":"Cara\u015f-Severin"},"291":{"code":"CJ","name":"Cluj"},"292":{"code":"CT","name":"Constan\u0163a"},"293":{"code":"CV","name":"Covasna"},"294":{"code":"DB","name":"D\u00e2mbovi\u0163a"},"295":{"code":"DJ","name":"Dolj"},"296":{"code":"GL","name":"Gala\u0163i"},"297":{"code":"GR","name":"Giurgiu"},"298":{"code":"GJ","name":"Gorj"},"299":{"code":"HR","name":"Harghita"},"300":{"code":"HD","name":"Hunedoara"},"301":{"code":"IL","name":"Ialomi\u0163a"},"302":{"code":"IS","name":"Ia\u015fi"},"303":{"code":"IF","name":"Ilfov"},"304":{"code":"MM","name":"Maramure\u015f"},"305":{"code":"MH","name":"Mehedin\u0163i"},"306":{"code":"MS","name":"Mure\u015f"},"307":{"code":"NT","name":"Neam\u0163"},"308":{"code":"OT","name":"Olt"},"309":{"code":"PH","name":"Prahova"},"311":{"code":"SJ","name":"S\u0103laj"},"310":{"code":"SM","name":"Satu-Mare"},"312":{"code":"SB","name":"Sibiu"},"313":{"code":"SV","name":"Suceava"},"314":{"code":"TR","name":"Teleorman"},"315":{"code":"TM","name":"Timi\u015f"},"316":{"code":"TL","name":"Tulcea"},"318":{"code":"VL","name":"V\u00e2lcea"},"317":{"code":"VS","name":"Vaslui"},"319":{"code":"VN","name":"Vrancea"}}},"SE":{"name":"Svezia","regions":{"1057":{"code":"SE-K","name":"Blekinge l\u00e4n"}
9301,"1058":{"code":"SE-W","name":"Dalarnas l\u00e4n"},"1060":{"code":"SE-X","name":"G\u00e4vleborgs l\u00e4n"},"1059":{"code":"SE-I","name":"Gotlands l\u00e4n"},"1061":{"code":"SE-N","name":"Hallands l\u00e4n"},"1062":{"code":"SE-Z","name":"J\u00e4mtlands l\u00e4n"},"1063":{"code":"SE-F","name":"J\u00f6nk\u00f6pings l\u00e4n"},"1064":{"code":"SE-H","name":"Kalmar l\u00e4n"},"1065":{"code":"SE-G","name":"Kronobergs l\u00e4n"},"1066":{"code":"SE-BD","name":"Norrbottens l\u00e4n"},"1076":{"code":"SE-T","name":"\u00d6rebro l\u00e4n"},"1077":{"code":"SE-E","name":"\u00d6sterg\u00f6tlands l\u00e4n"},"1067":{"code":"SE-M","name":"Sk\u00e5ne l\u00e4n"},"1069":{"code":"SE-D","name":"S\u00f6dermanlands l\u00e4n"},"1068":{"code":"SE-AB","name":"Stockholms l\u00e4n"},"1070":{"code":"SE-C","name":"Uppsala l\u00e4n"},"1071":{"code":"SE-S","name":"V\u00e4rmlands l\u00e4n"},"1072":{"code":"SE-AC","name":"V\u00e4sterbottens l\u00e4n"},"1073":{"code":"SE-Y","name":"V\u00e4sternorrlands l\u00e4n"},"1074":{"code":"SE-U","name":"V\u00e4stmanlands l\u00e4n"},"1075":{"code":"SE-O","name":"V\u00e4stra G\u00f6talands l\u00e4n"}}},"SI":{"name":"Slovenia"},"SK":{"name":"Slovacchia"},"XI":{"name":"Irlanda del Nord"},"data_id":1791570383},"captcha":[],"instant-purchase":[],"loggedAsCustomer":[],"persistent":[],"review":[],"payments":[],"wishlist":{"items":[]},"faq":[],"ammessages":[],"rewards":[],"capi-event-ids":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[],"paypal-buyer-country":[],"magepal-gtm-jsdatalayer":[],"magepal-eegtm-jsdatalayer":[]}</script>
9301
9302
9303</div></body>
9304</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.