PageSourceSearch

https://www.farma.it/blog.html

html farma.it collected 2026-10-09 18:26:21 UTC 552,306 bytes, 9,357 lines download raw bytes

1<!doctype html>
2<html lang="it">
3<head >
4    <meta charset="utf-8"/>
5<meta name="title" content="Blog"/>
6<meta name="keywords" content="blog farmacia orlandi"/>
7<meta name="robots" content="INDEX,FOLLOW"/>
8<meta name="viewport" content="width=device-width, initial-scale=1"/>
9<title>Blog</title>
10        <link rel="stylesheet" type="text/css" media="all" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/css/styles.css" />
11<link rel="icon" type="image/x-icon" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/favicon.ico" />
12<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" />
13<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" />
14<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" />
15<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" />
16<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" />
17<link rel="icon" sizes="16x16" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/favicon-16x16.png" />
18<link rel="icon" sizes="32x32" href="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Magento_Theme/favicon-32x32.png" />
19<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" />
20<meta name="facebook-domain-verification" content="19ikyzhaaju7aes0tjiyen338y422x" />
21<style>
22.checkout-payment-method .payment-method-title input[value="sella_fabrickpass"]+label>span {
23    width: 100%
24}
25
26.checkout-payment-method .payment-method-title input[value="sella_fabrickpass"]+label:after {
27    content: '';
28    display: block;
29    height: 30px;
30    width: 100%;
31    background-size: contain!important;
32    background: url("https://www.farma.it/media/paybybank-logo.png") no-repeat right
33}
34
35.bg-cerave-week {
36    background: #0072ba;
37}
38
39.bg-cerave-week:hover {
40    background: #0069ac;
41    text-decoration: none;
42}
43
44[data-content-type="text"] ol {
45    list-style-type: decimal;
46    padding-left: 20px;
47}
48
49[data-content-type="text"] ul {
50    list-style-type: disc;
51    padding-left: 20px;
52}
53
54[data-content-type="text"] ol li, [data-content-type="text"] ol li {
55    margin-top: 4px;
56}
57
58.catalog-product-view .product-info-main #gallery img.derma-badge {
59    width: 120px!important;
60}
61
62#amfaq-ask-form-inline .button-container {
63display: none !important;
64}
65
66.children-category-container {
67overflow: hidden;
68}
69div.sella-payment-method-container div.img-sella-container {
70    display: none;
71}
72
73div.sella-payment-method-container > div {
74    display: flex;
75    align-items: center;
76}
77div.sella-card-form input {
78    width: 100%;
79    border-radius: 26px;
80    border-width: 1px;
81    --tw-border-opacity: 1;
82    border-color: rgb(214 214 214 / var(--tw-border-opacity));
83    padding: .875rem;
84    line-height: 1;
85    color: rgb(8 1 26 / var(--tw-text-opacity));
86    --tw-text-opacity: 1;
87    color: rgb(107 114 128 / var(--tw-text-opacity));
88    font-size: 16px;
89}
90
91[data-bind="i18n: 'Sustainable delivery estimated in 48-72 hours'"] {
92    display: none;
93}
94
95/* stile doppi punti */
96/*
97.col-method#label_method_inpost_inpost:after {
98    content: 'Punti Fedeltà x2!';
99    background: #fec802e6;
100    padding: 0px 5px;
101    border-radius: 5px;
102    color: #f15b2c;
103    font-weight: bold;
104    font-size: 12px;
105    vertical-align: middle;
106    display: inline-block;
107    white-space: nowrap;
108    animation: smooth-bounce-h 2.5s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
109    padding: 4px 8px;
110}
111
112@keyframes smooth-bounce-h {
113    0%   { transform: translateX(0); }
114    25%  { transform: translateX(6px); }
115    50%  { transform: translateX(0); }
116    75%  { transform: translateX(-6px); }
117    100% { transform: translateX(0); }
118}
119
120.col-method#label_method_inpost_inpost {
121    display: flex;
122    gap: 8px;
123    align-items: center;
124}
125*/
126</style>
127
128
129<meta name="google-site-verification" content="9QFzfN_ciMqKFU_cA05_S82R8WLpqnsp4E4Ihexm7EE" />
130
131<script>
132// Aggiungi un event listener al documento
133document.addEventListener('click', function(event) {
134  // Ottieni l'elemento target cliccato
135  var targetElement = event.target;
136
137  // Verifica se l'elemento cliccato ha le classi specificate
138  var hasTargetClasses = targetElement.classList.contains('block') &&
139                          targetElement.classList.contains('px-6') &&
140                          targetElement.classList.contains('w-full') &&
141                          targetElement.classList.contains('py-3') &&
142                          targetElement.classList.contains('text-base') &&
143                          targetElement.classList.contains('hover:text-secondary') &&
144                          targetElement.classList.contains('hover:bg-tertiary-darker/10') &&
145                          targetElement.classList.contains('hover:fill-primary') &&
146                          targetElement.classList.contains('font-bold') &&
147                          targetElement.classList.contains('cursor-pointer') &&
148                          targetElement.classList.contains('level0') &&
149                          targetElement.classList.contains('nav-11') &&
150                          targetElement.classList.contains('page-item');
151
152  // Verifica se l'elemento cliccato è un figlio di un elemento con le classi specificate
153  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');
154
155  // Esegui l'azione solo se l'elemento cliccato ha le classi o è un figlio di un elemento con le classi
156  if (hasTargetClasses || parentElement) {
157    // Esegui il reindirizzamento o caricamento del link
158      window.location.href = "https://www.farma.it/dermocosmetica";
159  }
160
161  // Ottieni l'elemento target cliccato
162  targetElement = event.target;
163
164  // Verifica se l'elemento cliccato ha le classi specificate
165  hasTargetClasses = targetElement.classList.contains('block') &&
166                          targetElement.classList.contains('px-6') &&
167                          targetElement.classList.contains('w-full') &&
168                          targetElement.classList.contains('py-3') &&
169                          targetElement.classList.contains('text-base') &&
170                          targetElement.classList.contains('hover:text-secondary') &&
171                          targetElement.classList.contains('hover:bg-tertiary-darker/10') &&
172                          targetElement.classList.contains('hover:fill-primary') &&
173                          targetElement.classList.contains('font-bold') &&
174                          targetElement.classList.contains('cursor-pointer') &&
175                          targetElement.classList.contains('level0') &&
176                          targetElement.classList.contains('nav-12') &&
177                          targetElement.classList.contains('page-item');
178
179  // Verifica se l'elemento cliccato è un figlio di un elemento con le classi specificate
180  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');
181
182  // Esegui l'azione solo se l'elemento cliccato ha le classi o è un figlio di un elemento con le classi
183  if (hasTargetClasses || parentElement) {
184    // Esegui il reindirizzamento o caricamento del link
185      window.location.href = "https://www.farma.it/gastro-intestinale";
186  }
187
188});
189
190</script>
190
191
192<script defer>
193    window.addEventListener('load', () => {
194        Alpine.effect(() => {
195            // Funzione per capire se un elemento è naturalmente focusabile
196            const isNaturallyFocusable = (el) => {
197                const tag = el.tagName.toLowerCase();
198                if (tag === "a") return el.hasAttribute("href");
199                return ["button", "input", "select", "textarea"].includes(tag);
200            };
201
202            // 1. Link con href="#" => role="button" + tabindex
203            document.querySelectorAll("[href='#']:not([role])").forEach(el => {
204                el.setAttribute("role", "button");
205                if (!el.hasAttribute("tabindex") && !isNaturallyFocusable(el)) {
206                    el.setAttribute("tabindex", "0");
207                }
208            });
209
210            // 2. Link target="_blank" => aria-label se manca
211            document.querySelectorAll("a[target='_blank']:not([aria-label])").forEach(el => {
212                const text = el.textContent.trim();
213                if (text.length > 0) {
214                    el.setAttribute("aria-label", `${text} - opens in new tab`);
215                }
216            });
217
218            // 2.1 Link con href valorizzato e senza aria-label => estrai path finale
219            document.querySelectorAll("a[href]:not([aria-label])").forEach(el => {
220                const href = el.getAttribute("href");
221                if (href && href !== "#" && !el.hasAttribute("aria-label")) {
222                    try {
223                        const cleanHref = href.split('?')[0].split('#')[0];
224                        const parts = cleanHref.split('/');
225                        const last = parts.filter(p => p).pop();
226                        if (last) {
227                            const label = decodeURIComponent(last)
228                                .replace(/[-_]/g, ' ')
229                                .replace(/[^\w\sàèéìòùÀÈÉÌÒÙ]/gi, '')
230                                .trim();
231                            if (label) {
232                                el.setAttribute("aria-label", label);
233                            }
234                        }
235                    } catch (e) {}
236                }
237            });
238
239            // 3. Form di ricerca => role="search"
240            document.getElementById("search_mini_form")?.setAttribute("role", "search");
241
242            // 4. Icone visive => role="presentation" se mancante
243            document.querySelectorAll("i[class*='-icon'], em[class*='-icon'], span[class*='-icon']").forEach(el => {
244                if (!el.hasAttribute("role")) {
245                    el.setAttribute("role", "presentation");
246                }
247            });
248
249            // 5. SVG: rimuovi role="img", imposta alt e role="presentation" se serve
250            document.querySelectorAll("svg").forEach(el => {
251                if (el.getAttribute("role") === "img") {
252                    el.removeAttribute("role");
253                }
254                if (!el.hasAttribute("alt")) {
255                    el.setAttribute("alt", "Icona");
256                }
257                if (!el.hasAttribute("role")) {
258                    el.setAttribute("role", "presentation");
259                }
260            });
261
262            // 6. Elementi cliccabili via classi => role="button" + tabindex="0"
263            const clickableSelector = [
264                ".cursor-pointer",
265                ".group\\/button",
266                "[style*='cursor: pointer']",
267                '.swiper-button-prev',
268                '.swiper-button-next',
269                '.swiper-pagination-bullet',
270                '.product-item-link'
271            ].join(',');
272
273            document.querySelectorAll(clickableSelector).forEach(el => {
274                if (el.hasAttribute("role")) return;
275
276                const tag = el.tagName.toLowerCase();
277                const isNativeButton =
278                    tag === "button" ||
279                    (tag === "input" && ["button", "submit", "reset"].includes(el.type));
280
281                if (!isNativeButton) {
282                    el.setAttribute("role", "button");
283
284                    if (!el.hasAttribute("tabindex") && !isNaturallyFocusable(el)) {
285                        el.setAttribute("tabindex", "0");
286                    }
287
288                    if (!el.hasAttribute("aria-label")) {
289                        el.setAttribute("aria-label", "Action");
290                    }
291                }
292            });
293
294            // 7. Elementi con @click => role="button" + tabindex="0"
295            document.querySelectorAll("*").forEach(el => {
296                if (
297                    el.hasAttribute("@click") &&
298                    el.hasAttribute("@click.prevent") &&
299                    !el.hasAttribute("role") &&
300                    el.tagName.toLowerCase() !== "button"
301                ) {
302                    el.setAttribute("role", "button");
303
304                    if (!el.hasAttribute("tabindex") && !isNaturallyFocusable(el)) {
305                        el.setAttribute("tabindex", "0");
306                    }
307
308                    if (!el.hasAttribute("aria-label")) {
309                        el.setAttribute("aria-label", "Action");
310                    }
311                }
312            });
313
314            // 8. Cookiebot title: attesa dinamica e pulizia
315            const observeCookiebotTitle = () => {
316                const targetId = "CybotCookiebotDialogBodyContentTitle";
317
318                const handleTitle = (el) => {
319                    if (el.getAttribute("role") === "heading") el.removeAttribute("role");
320                    if (el.hasAttribute("aria-level")) el.removeAttribute("aria-level");
321                };
322
323                const existing = document.getElementById(targetId);
324                if (existing) {
325                    handleTitle(existing);
326                    return;
327                }
328
329                const observer = new MutationObserver((mutations, obs) => {
330                    const found = document.getElementById(targetId);
331                    if (found) {
332                        handleTitle(found);
333                        obs.disconnect();
334                    }
335                });
336
337                observer.observe(document.body, {
338                    childList: true,
339                    subtree: true,
340                });
341            };
342
343            observeCookiebotTitle();
344
345            // 9. Correzione elementi pseudo-button generici (span/div/a) con comportamento da bottone
346            document.querySelectorAll("a, span, div").forEach(el => {
347                const isButtonLike =
348                    el.hasAttribute("@click") ||
349                    el.hasAttribute("@click.prevent") ||
350                    el.hasAttribute("x-on:click") ||
351                    el.hasAttribute("onclick") ||
352                    el.hasAttribute("@keyup.enter") ||
353                    el.hasAttribute("x-on:keyup.enter") ||
354                    el.classList.contains("cursor-pointer") ||
355                    el.classList.contains("badge-container") ||
356                    el.classList.contains("rating-summary");
357
358                if (isButtonLike) {
359                    const isFocusable = isNaturallyFocusable(el) || el.hasAttribute("tabindex");
360
361                    // Assegna solo se mancano
362                    if (!el.hasAttribute("role")) {
363                        el.setAttribute("role", "button");
364                    }
365                    if (!isFocusable) {
366                        el.setAttribute("tabindex", "0");
367                    }
368                    if (!el.hasAttribute("aria-label")) {
369                        el.setAttribute("aria-label", "Action");
370                    }
371                }
372            });
373        });
374    });
375
376
377window.addEventListener('init-external-scripts', () => {
378
379if (!window.dataLayer) {
380        window.dataLayer = [];
381}
382
383      window.dataLayer.push({
384                    event: 'init_external_scripts'
385      })
386});
387
388
389document.addEventListener('click', function (event) {
390    const link = event.target.closest('a[href^="#"]');
391
392    if (!link) {
393        return;
394    }
395
396    const targetId = link.getAttribute('href').substring(1);
397
398    if (!targetId) {
399        return;
400    }
401
402    const target = document.getElementById(targetId);
403
404    // Ci interessa solo se il target è un form
405    if (!(target instanceof HTMLFormElement)) {
406        return;
407    }
408
409    event.preventDefault();
410
411    target.requestSubmit();
412});
413</script>
413
414
415    <!-- Meta Business Extension for Magento 2 -->
416<!-- Meta Pixel Code -->
417<script>
vendor: 398 bytes, lines 417-425
417
418!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
419n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
420n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
421t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
422document,'script','//connect.facebook.net/en_US/fbevents.js');
423    fbq(
424  'init',
425  '
425512468414859242
vendor: 59 bytes, lines 425-428
425',
426    {},
427  {agent: 'magento_opensource-0.0.0-1.6.4' }
428);
429fbq('track', 'PageView', {
430  source: "magento_opensource",
431  pluginVersion: "1.6.4"
432});
433</script>
433
434
435<script>
436    function metaPixelTracker(config) {
437        let eventId = crypto.randomUUID();
438        var browserEventData = config.browserEventData;
439        let browserPayload = config.browserEventData.payload;
440
441        browserPayload.source = browserEventData.source;
442        browserPayload.pluginVersion = browserEventData.pluginVersion;
443
444        fbq('set', 'agent', browserEventData.fbAgentVersion, browserEventData.fbPixelId);
445        fbq(browserEventData.track, browserEventData.event, browserPayload, {
446                eventID: eventId
447            }
448        );
449
450        var formData = new FormData();
451        formData.append('form_key', hyva.getFormKey());
452        formData.append('eventId', eventId);
453
454        Object.entries(config.payload).forEach(function (item) {
455            formData.append(item[0], item[1]);
456        })
457
458        fetch(config.url, {
459            method: 'POST',
460            body: formData
461        }).catch(error => {
462            console.error(error);
463        });
464    }
465
466    function metaParseJson(json) {
467        json = decodeURIComponent(json.replace(/\+/g, ' '));
468        return JSON.parse(json);
469    }
470
471    function metaDelCookie(name) {
472        var date = new Date(0);
473        var cookie = name + '=' + '; path=/; expires=' + date.toUTCString();
474
475        document.cookie = cookie;
476    }
477
478    function metaGetCookie(name) {
479        var cookie = ' ' + document.cookie;
480        var search = ' ' + name + '=';
481        var setStr = null;
482        var offset = 0;
483        var end = 0;
484
485        if (cookie.length > 0) {
486            offset = cookie.indexOf(search);
487            if (offset !== -1) {
488                offset += search.length;
489                end = cookie.indexOf(';', offset);
490                if (end === -1) {
491                    end = cookie.length;
492                }
493                setStr = decodeURI(cookie.substring(offset, end));
494            }
495        }
496        return setStr;
497    }
498</script>
498
499<!-- End Meta Pixel Code -->
500
501<!-- Google Tag Manager by MagePal -->
502<script type="text/javascript">
503    window.dataLayer = window.dataLayer || [];
504
505
506    function initMagepalGtmDatalayer_4f71f1c5e6503faecb6d9e35a59f2399() {
507        'use strict';
508
509        let lastPushedCart = {};
510        let lastPushedCustomer = {};
511
512        function objectKeyExist(object)
513        {
514            const items = Array.isArray(object) ? object : Object.values(object);
515            return items.reduce((acc, v) => (acc || v.customer || v.cart), false);
516            // return _.some(object, function (o) {
517            //     return !_.isEmpty(_.pick(o, ['customer', 'cart']));
518            // })
519        }
520
521        const isObject = x => x === Object(x);
522        const has = (x, p) => isObject(x) && x.hasOwnProperty(p);
523        const isEqual = (x, y) => JSON.stringify(x) === JSON.stringify(y);
524
525        //Update datalayer
526        function updateDataLayer(_gtmDataLayer, _dataObject, _forceUpdate)
527        {
528            let customer = {isLoggedIn : false},
529                cart = {hasItems: false};
530
531            if (_gtmDataLayer !== undefined && (!objectKeyExist(_gtmDataLayer) || _forceUpdate)) {
532                if (isObject(_dataObject) && has(_dataObject, 'customer')) {
533                    customer = _dataObject.customer;
534                }
535
536                if (isObject(_dataObject) && has(_dataObject, 'cart')) {
537                    cart = _dataObject.cart;
538                }
539
540                if (!isEqual(lastPushedCart, cart) || !isEqual(lastPushedCustomer, customer)) {
541                    window.dispatchEvent(new CustomEvent('mpCustomerSession', {detail: [customer, cart, _gtmDataLayer]}));
542                    //$('body').trigger('mpCustomerSession', [customer, cart, _gtmDataLayer]);
543                    _gtmDataLayer.push({'event': 'mpCustomerSession', 'customer': customer, 'cart': cart});
544
545                    lastPushedCustomer = customer;
546                    lastPushedCart = cart;
547                }
548            }
549        }
550
551        function isTrackingAllowed(config)
552        {
553            let allowServices = false,
554                allowedCookies,
555                allowedWebsites;
556
557            if (!config.isGdprEnabled || (!config.isGdprEnabled && !config.addJsInHeader)) {
558                allowServices = true;
559            } else if (config.isCookieRestrictionModeEnabled && config.gdprOption === 1) {
560                allowedCookies = hyva.getCookie(config.cookieName);
561
562                if (allowedCookies !== null) {
563                    allowedWebsites = JSON.parse(allowedCookies);
564
565                    if (allowedWebsites[config.currentWebsite] === 1) {
566                        allowServices = true;
567                    }
568                }
569            } else if (config.gdprOption === 2) {
570                allowServices = hyva.getCookie(config.cookieName) !== null;
571            } else if (config.gdprOption === 3) {
572                allowServices = hyva.getCookie(config.cookieName) === null;
573            }
574
575            return allowServices;
576        }
577
578        //load gtm
579        function initTracking(dataLayerName, accountId, containerCode)
580        {
581            window.dispatchEvent(new CustomEvent('gtm:beforeInitialize'));
582
583            (function (w, d, s, l, i) {
584                w[l] = w[l] || [];
585                w[l].push({
586                    'gtm.start':
587                        new Date().getTime(), event: 'gtm.js'
588                });
589                var f = d.getElementsByTagName(s)[0],
590                    j = d.createElement(s), dl = l != dataLayerName ? '&l=' + l : '';
591                j.async = true;
592                j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl + containerCode;
593                f.parentNode.insertBefore(j, f);
594            })(window, document, 'script', dataLayerName, accountId);
595            window.dispatchEvent(new CustomEvent('gtm:afterInitialize'));
596        }
597
598        function pushData(dataLayerName, dataLayer)
599        {
600            //if (_.isArray(dataLayer)) {
601            if (Array.isArray(dataLayer)) {
602                //_.each(dataLayer, function (data) {
603                dataLayer.forEach(function (data) {
604                    window[dataLayerName].push(data);
605                });
606            }
607        }
608
609        const config = {
610            dataLayer: "dataLayer",
611            gdprOption: 0,
612            isGdprEnabled: 0,
613            isCookieRestrictionModeEnabled: 0,
614        };
615
616                config.currentWebsite = 1;
617        config.cookieName = "user_allowed_save_cookie";
618        config.accountId = "GTM-TQTH9KNM";
619        config.data = [{"ecommerce":{"currencyCode":"EUR"},"pageType":"blog_home_index","list":"other"}];
620        config.addJsInHeader = 0;
621        config.containerCode = "";
622        
623        window[config.dataLayer] = window[config.dataLayer] || [];
624
625        if (has(config, 'accountId') && isTrackingAllowed(config)) {
626            pushData(config.dataLayer, config.data);
627            initTracking(config.dataLayer, config.accountId, config.containerCode);
628        }
629
630        const gtmDataLayer = window[config.dataLayer];
631
632        window.addEventListener("private-content-loaded", event => {
633            const dataObject = event.detail.data['magepal-gtm-jsdatalayer'] || {};
634            updateDataLayer(gtmDataLayer, dataObject, true)
635        });
636
637        // dataObject.subscribe(function (_dataObject) {
638        //     updateDataLayer(gtmDataLayer, _dataObject, true);
639        // }, this);
640
641        // if (!_.contains(customerData.getExpiredKeys(), 'magepal-gtm-jsdatalayer')) {
642        //     updateDataLayer(gtmDataLayer, dataObject(), false);
643        // }
644
645    }
646    window.addEventListener('DOMContentLoaded', initMagepalGtmDatalayer_4f71f1c5e6503faecb6d9e35a59f2399);
647
648</script>
648
649<!-- End Google Tag Manager by MagePal -->
650
651<link rel="canonical" href="https://www.farma.it/blog.html">
652<script>
653    var BASE_URL = 'https://www.farma.it/';
654    var THEME_PATH = 'https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT';
655    var COOKIE_CONFIG = {
656        "expires": null,
657        "path": "\u002F",
658        "domain": ".farma.it",
659        "secure": true,
660        "lifetime": "7200",
661        "cookie_restriction_enabled": false    };
662    var CURRENT_STORE_CODE = 'default';
663    var CURRENT_WEBSITE_ID = '1';
664    var CURRENT_MIN_ORDER_VALUE = '24.90';
665    var CURRENT_MIN_ORDER_VALUE_FORMATTED = '24,90 €';
666    var CURRENT_MIN_ORDER_INCLUDE_DISCOUNT = '0';
667    var CURRENT_STORE_CURRENCY = 'EUR';
668
669    window.hyva = window.hyva || {}
670
671    window.cookie_consent_groups = window.cookie_consent_groups || {}
672    window.cookie_consent_groups['necessary'] = true;
673
674    window.cookie_consent_config = window.cookie_consent_config || {};
675    window.cookie_consent_config['necessary'] = [].concat(
676        window.cookie_consent_config['necessary'] || [],
677        [
678            'user_allowed_save_cookie',
679            'form_key',
680            'mage-messages',
681            'private_content_version',
682            'mage-cache-sessid',
683            'last_visited_store',
684            'section_data_ids'
685        ]
686    );
687    document.addEventListener("alpine:init", () => {
688        Alpine.store('externalScriptsInit', false);
689        window.addEventListener('init-external-scripts', () => Alpine.store('externalScriptsInit',true), {
690            once: true,
691            passive: true
692        });
693    });
694</script>
vendor: 1 bytes, line 694
694
695<script>
696    (function( hyva, undefined ) {
697
698        function lifetimeToExpires(options, defaults) {
699
700            const lifetime = options.lifetime || defaults.lifetime;
701
702            if (lifetime) {
703                const date = new Date;
704                date.setTime(date.getTime() + lifetime * 1000);
705                return date;
706            }
707
708            return null;
709        }
710
711        function generateRandomString() {
712
713            const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
714                length = 16;
715
716            let formKey = '',
717                charactersLength = allowedCharacters.length;
718
719            for (let i = 0; i < length; i++) {
720                formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))]
721            }
722
723            return formKey;
724        }
725
726        const sessionCookieMarker = {noLifetime: true}
727
728        const cookieTempStorage = {};
729
730        const internalCookie = {
731            get(name) {
732                const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
733                return v ? v[2] : null;
734            },
735            set(name, value, days, skipSetDomain) {
736                let expires,
737                    path,
738                    domain,
739                    secure,
740                    samesite;
741
742                const defaultCookieConfig = {
743                    expires: null,
744                    path: '/',
745                    domain: null,
746                    secure: false,
747                    lifetime: null,
748                    samesite: 'lax'
749                };
750
751                const cookieConfig = window.COOKIE_CONFIG || {};
752
753                expires = days && days !== sessionCookieMarker
754                    ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig)
755                    : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires;
756
757                path = cookieConfig.path || defaultCookieConfig.path;
758                domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain);
759                secure = cookieConfig.secure || defaultCookieConfig.secure;
760                samesite = cookieConfig.samesite || defaultCookieConfig.samesite;
761
762                document.cookie = name + "=" + encodeURIComponent(value) +
763                    (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') +
764                    (path ? '; path=' + path : '') +
765                    (domain ? '; domain=' + domain : '') +
766                    (secure ? '; secure' : '') +
767                    (samesite ? '; samesite=' + samesite : 'lax');
768            },
769            isWebsiteAllowedToSaveCookie() {
770                const allowedCookies = this.get('user_allowed_save_cookie');
771                if (allowedCookies) {
772                    const allowedWebsites = JSON.parse(unescape(allowedCookies));
773
774                    return allowedWebsites[CURRENT_WEBSITE_ID] === 1;
775                }
776                return false;
777            },
778            getGroupByCookieName(name) {
779                const cookieConsentConfig = window.cookie_consent_config || {};
780                let group = null;
781                for (let prop in cookieConsentConfig) {
782                    if (!cookieConsentConfig.hasOwnProperty(prop)) continue;
783                    if (cookieConsentConfig[prop].includes(name)) {
784                        group = prop;
785                        break;
786                    }
787                }
788                return group;
789            },
790            isCookieAllowed(name) {
791                const cookieGroup = this.getGroupByCookieName(name);
792                return cookieGroup
793                    ? window.cookie_consent_groups[cookieGroup]
794                    : this.isWebsiteAllowedToSaveCookie();
795            },
796            saveTempStorageCookies() {
797                for (const [name, data] of Object.entries(cookieTempStorage)) {
798                    if (this.isCookieAllowed(name)) {
799                        this.set(name, data['value'], data['days'], data['skipSetDomain']);
800                        delete cookieTempStorage[name];
801                    }
802                }
803            }
804        };
805
806        hyva.getCookie = (name) => {
807            const cookieConfig = window.COOKIE_CONFIG || {};
808
809            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
810                return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null;
811            }
812
813            return internalCookie.get(name);
814        }
815
816        hyva.setCookie = (name, value, days, skipSetDomain) => {
817            const cookieConfig = window.COOKIE_CONFIG || {};
818
819            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
820                cookieTempStorage[name] = {value, days, skipSetDomain};
821                return;
822            }
823            return internalCookie.set(name, value, days, skipSetDomain);
824        }
825
826
827        hyva.setSessionCookie = (name, value, skipSetDomain) => {
828            return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain)
829        }
830
831        hyva.getBrowserStorage = () => {
832            const browserStorage = window.localStorage || window.sessionStorage;
833            if (!browserStorage) {
834                console.warn('Browser Storage is unavailable');
835                return false;
836            }
837            try {
838                browserStorage.setItem('storage_test', '1');
839                browserStorage.removeItem('storage_test');
840            } catch (error) {
841                console.warn('Browser Storage is not accessible', error);
842                return false;
843            }
844            return browserStorage;
845        }
846
847        hyva.postForm = (postParams) => {
848            const form = document.createElement("form");
849
850            let data = postParams.data;
851
852            if (! postParams.skipUenc && ! data.uenc) {
853                data.uenc = btoa(window.location.href);
854            }
855            form.method = "POST";
856            form.action = postParams.action;
857
858            Object.keys(postParams.data).map(key => {
859                const field = document.createElement("input");
860                field.type = 'hidden'
861                field.value = postParams.data[key];
862                field.name = key;
863                form.appendChild(field);
864            });
865
866            const form_key = document.createElement("input");
867            form_key.type = 'hidden';
868            form_key.value = hyva.getFormKey();
869            form_key.name="form_key";
870            form.appendChild(form_key);
871
872            document.body.appendChild(form);
873
874            form.submit();
875        }
876
877        hyva.getFormKey = function () {
878            let formKey = hyva.getCookie('form_key');
879
880            if (!formKey) {
881                formKey = generateRandomString();
882                hyva.setCookie('form_key', formKey);
883            }
884
885            return formKey;
886        }
887
888        hyva.formatPrice = (value, showSign, options = {}) => {
889            const groupSeparator = options.groupSeparator;
890            const decimalSeparator = options.decimalSeparator
891            delete options.groupSeparator;
892            delete options.decimalSeparator;
893            const formatter = new Intl.NumberFormat(
894                'it\u002DIT',
895                Object.assign({
896                    style: 'currency',
897                    currency: 'EUR',
898                    signDisplay: showSign ? 'always' : 'auto'
899                }, options)
900            );
901            return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ?
902                formatter.formatToParts(value).map(({type, value}) => {
903                    switch (type) {
904                        case 'currency':
905                            return '\u20AC' || value;
906                        case 'minusSign':
907                            return '- ';
908                        case 'plusSign':
909                            return '+ ';
910                        case 'group':
911                            return groupSeparator !== undefined ? groupSeparator : value;
912                        case 'decimal':
913                            return decimalSeparator !== undefined ? decimalSeparator : value;
914                        default :
915                            return value;
916                    }
917                }).reduce((string, part) => string + part) :
918                formatter.format(value);
919        }
920
921        const formatStr = function (str, nStart) {
922            const args = Array.from(arguments).slice(2);
923
924            return str.replace(/(%+)([0-9]+)/g, (m, p, n) => {
925                const idx = parseInt(n) - nStart;
926
927                if (args[idx] === null || args[idx] === void 0) {
928                    return m;
929                }
930                return p.length % 2
931                    ? p.slice(0, -1).replace('%%', '%') + args[idx]
932                    : p.replace('%%', '%') + n;
933            })
934        }
935
936        hyva.str = function (string) {
937            const args = Array.from(arguments);
938            args.splice(1, 0, 1);
939
940            return formatStr.apply(undefined, args);
941        }
942
943        hyva.strf = function () {
944            const args = Array.from(arguments);
945            args.splice(1, 0, 0);
946
947            return formatStr.apply(undefined, args);
948        }
949
950        /**
951         * Take a html string as `content` parameter and
952         * extract an element from the DOM to replace in
953         * the current page under the same selector,
954         * defined by `targetSelector`
955         */
956        hyva.replaceDomElement = (targetSelector, content) => {
957            // Parse the content and extract the DOM node using the `targetSelector`
958            const parser = new DOMParser();
959            const doc = parser.parseFromString(content, 'text/html');
960            const contentNode = doc.querySelector(targetSelector);
961
962            // Bail if content or target can't be found
963            if (!contentNode || !document.querySelector(targetSelector)) {
964                return;
965            }
966
967                        hyva.activateScripts(contentNode);
968            
969            // Replace the old DOM node with the new content
970            document.querySelector(targetSelector).replaceWith(contentNode);
971
972            // Reload customerSectionData and display cookie-messages if present
973            window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
974            hyva.initMessages();
975        }
976
977        hyva.removeScripts = (contentNode) => {
978            const scripts = contentNode.getElementsByTagName('script');
979            for (let i = 0; i < scripts.length; i++) {
980                scripts[i].parentNode.removeChild(scripts[i]);
981            }
982            const templates = contentNode.getElementsByTagName('template');
983            for (let i = 0; i < templates.length; i++) {
984                const container = document.createElement('div');
985                container.innerHTML = templates[i].innerHTML;
986                hyva.removeScripts(container);
987                templates[i].innerHTML = container.innerHTML;
988            }
989        }
990
991        hyva.activateScripts = (contentNode) => {
992            // Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM.
993            const scripts = Array.from(contentNode.getElementsByTagName('script'));
994
995            // Iterate over all script tags to duplicate+inject each into the head
996            for (const original of scripts) {
997                const script = document.createElement('script');
998                original.type && (script.type = original.type);
999                script.innerHTML = original.innerHTML;
1000
1001                // Remove the original (non-executing) script from the contentNode
1002                original.parentNode.removeChild(original)
1003
1004                // Add script to head
1005                document.head.appendChild(script);
1006            }
1007
1008            return contentNode;
1009        }
1010
1011        const replace = {['+']: '-', ['/']: '_', ['=']: ','};
1012        hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]);
1013
1014        let currentTrap;
1015
1016        const focusableElements = (rootElement) => {
1017            const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]';
1018            return Array.from(rootElement.querySelectorAll(selector))
1019                .filter(el => {
1020                    return el.style.display !== 'none'
1021                        && !el.disabled
1022                        && el.tabIndex !== -1
1023                        && (el.offsetWidth || el.offsetHeight || el.getClientRects().length)
1024                })
1025        }
1026
1027        const focusTrap = (e) => {
1028            const isTabPressed = e.key === 'Tab' || e.keyCode === 9;
1029            if (!isTabPressed) return;
1030
1031            const focusable = focusableElements(currentTrap)
1032            const firstFocusableElement = focusable[0]
1033            const lastFocusableElement = focusable[focusable.length - 1]
1034
1035            e.shiftKey
1036                ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault())
1037                : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault())
1038        };
1039
1040        hyva.releaseFocus = (rootElement) => {
1041            if (currentTrap && (!rootElement || rootElement === currentTrap)) {
1042                currentTrap.removeEventListener('keydown', focusTrap)
1043                currentTrap = null
1044            }
1045        }
1046        hyva.trapFocus = (rootElement) => {
1047            if (!rootElement) return;
1048            hyva.releaseFocus()
1049            currentTrap = rootElement
1050            rootElement.addEventListener('keydown', focusTrap)
1051            const firstElement = focusableElements(rootElement)[0]
1052            firstElement && firstElement.focus()
1053        }
1054
1055        hyva.safeParseNumber = (rawValue) => {
1056            const number = rawValue ? parseFloat(rawValue) : null;
1057
1058            return Array.isArray(number) || isNaN(number) ? rawValue : number;
1059        }
1060
1061        const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
1062        hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => {
1063
1064            const camelCase = toCamelCase(name);
1065            const key = '__hyva_bool_' + name
1066
1067            return new Proxy(Object.assign(
1068                additionalMethods,
1069                {
1070                    [key]: !!value,
1071                    [name]() {return !!this[key]},
1072                    ['!' + name]() {return !this[key]}, // @deprecated This does not work with non-CSP Alpine
1073                    ['not' + camelCase]() {return !this[key]},
1074                    ['toggle' + camelCase]() {this[key] = !this[key]},
1075                    [`set${camelCase}True`]() {this[key] = true},
1076                    [`set${camelCase}False`]() {this[key] = false},
1077                }
1078            ), {
1079                set(target, prop, value) {
1080                    return prop === name
1081                        ? (target[key] = !!value)
1082                        : Reflect.set(...arguments);
1083                }
1084            })
1085        }
1086
1087                hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
1088        window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true});
1089                window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
1090
1091    }( window.hyva = window.hyva || {} ));
1092    //# sourceURL=hyva.js
1093</script>
vendor: 1 bytes, line 1093
1093
1094<script type="speculationrules">
1095{
1096    "tag": "Hyva Theme",
1097    "prefetch": [{
1098        "source": "document",
1099        "where": {
1100            "and": [
1101                { "href_matches": "/*" },
1102                { "not": {
1103                    "href_matches": ["/customer/*","/search/*","/sales/*","/wishlist/*","/checkout/*","/paypal/*","/newsletter/*","/stores/store/redirect/*"]                }},
1104                { "not": {
1105                    "selector_matches": [".no-preload", ".do-not-prerender", "[download]", "[rel~=nofollow]", "[target]"]
1106                }}
1107            ]
1108        },
1109        "eagerness": "moderate"
1110    }]
1111}
1112</script>
vendor: 1 bytes, line 1112
1112
1113<script class="feedaty_sdk" src="https://widget.feedaty.com/v3.0.0/js/2021/10214034/feedaty.min.js" async></script>
1113
1114
1115<meta property="og:type" content="WebPage"/>
1116
1117    <meta property="og:name" content="I nostri consigli"/>
1118
1119
1120<link rel="canonical" href="https://www.farma.it/blog.html">
1121<script>
1122    function deepMerge(target, ...sources) {
1123        if (!sources.length) {
1124            return target;
1125        }
1126
1127        const source = sources.shift();
1128
1129        if (typeof target !== 'object' || typeof source !== 'object') {
1130            return target;
1131        }
1132
1133        for (let key in source) {
1134            if (source.hasOwnProperty(key)) {
1135                if (source[key] instanceof Array) {
1136                    target[key] = target[key] || [];
1137                    target[key] = target[key].concat(source[key]);
1138                } else if (typeof source[key] === 'object') {
1139                    target[key] = deepMerge(target[key] || {}, source[key]);
1140                } else {
1141                    target[key] = source[key];
1142                }
1143            }
1144        }
1145
1146        return deepMerge(target, ...sources);
1147    }
1148
1149    function amastyRewardsProduct() {
1150        return {
1151            captionStartText: 'Puoi\u0020guadagnare',
1152            captionAfterText: '',
1153            captionRegistrationText: 'registrandoti\u0021',
1154            captionEndText: '',
1155            productId: this.$el.dataset.productId,
1156            formSelector: 'product_addtocart_form',
1157            form: null,
1158            refreshUrl: this.$el.dataset.refreshUrl,
1159            loader: false,
1160            isFetching: false,
1161            abortFetchController: false,
1162            highlight: {
1163                registration_link: '',
1164                caption_color: '',
1165                caption_text: '0',
1166                visible: false
1167            },
1168
1169            init() {
1170                this.formObserver();
1171                document.addEventListener(`update-qty-${this.productId}`, () => {
1172                    this.updateData();
1173                });
1174                window.addEventListener('update-bundle-option-selection', () => {
1175                    this.updateData();
1176                });
1177                this.$nextTick(() => this.updateData());
1178            },
1179
1180            hideBlock() {
1181                this.highlight.visible = false;
1182                this.loader = true;
1183            },
1184
1185            dispatchStatus(type, message) {
1186                window.dispatchMessages([{
1187                    type: type,
1188                    text: message
1189                }], 5000);
1190            },
1191
1192            formObserver() {
1193                const product = document.querySelector(`input[name='product'][value='${this.productId}']`);
1194
1195                if (product) {
1196                    const productForm = product.form;
1197                    if (productForm) {
1198                        productForm.addEventListener('change', () => {
1199                            this.updateData();
1200                        });
1201                    }
1202                }
1203            },
1204
1205            updateData() {
1206                if (this.isFetching) {
1207                    return false;
1208                }
1209                if (!this.refreshUrl) {
1210                    this.loader = false;
1211                    return false;
1212                }
1213                this.hideBlock();
1214
1215                if (this.abortFetchController) {
1216                    this.abortFetchController.abort();
1217                }
1218
1219                this.abortFetchController = new AbortController();
1220
1221                const product = document.querySelector(`input[name='product'][value='${this.productId}']`);
1222                let formParams = '';
1223
1224                if (!product) {
1225                    formParams = 'form_key=' + hyva.getFormKey() + '&product=' + this.productId;
1226                } else {
1227                    const form = product.form;
1228                    const formData = new FormData(form);
1229                    formParams = new URLSearchParams(formData).toString();
1230                }
1231                const formJson = JSON.stringify({
1232                    page: 0,
1233                    productId: this.productId,
1234                    attributes: formParams
1235                });
1236
1237                const requestOptions = {
1238                    method: 'POST',
1239                    body: formJson,
1240                    headers: {
1241                        'Content-Type': 'application/json',
1242                        'x-requested-with': 'XMLHttpRequest',
1243                    },
1244                    signal: this.abortFetchController.signal
1245                };
1246                this.isFetching = true;
1247                fetch(this.refreshUrl, requestOptions).then(response => {
1248                    if (!response.ok) {
1249                        return Promise.reject(`${response.status} ${response.statusText}`);
1250                    }
1251                    return response.json();
1252                }).then((data) => {
1253                    this.highlight.visible = data.visible;
1254                    this.highlight.caption_text = data.caption_text;
1255                    this.highlight.caption_color = data.caption_color;
1256
1257                    if (data?.registration_link) {
1258                        this.highlight.registration_link = data.registration_link;
1259                    }
1260
1261                    if (data?.need_to_change_message && data?.need_to_change_message === 1) {
1262                        this.captionAfterText = 'completando\u0020un\u0020acquisto\u0021\u0020Solo\u0020per';
1263                        this.captionRegistrationText = 'registrati.';
1264                        this.captionEndText = 'utenti';
1265                    }
1266                }).catch(error => {
1267                    if (error.name !== 'AbortError' && typeof error === 'string' && error.match(/'401'/g) !== null) {
1268                        this.dispatchStatus('error', error);
1269                    }
1270                }).finally(() => {
1271                    this.loader = false;
1272                    this.isFetching = false;
1273                });
1274            },
1275
1276            highlightCaptionText() {
1277                return this.highlight.caption_text !== '0' && !this.loader;
1278            },
1279
1280            highlightStyle() {
1281                return `color: ${this.highlight.caption_color}`;
1282            },
1283
1284            isHighlightRegistrationLink() {
1285                return this.highlight.registration_link && this.highlight.registration_link !== '';
1286            },
1287
1288            isNotRegistrationLink() {
1289                return !this.highlight.registration_link;
1290            },
1291
1292            highlightVisible() {
1293                return this.highlight.visible && !this.loader;
1294            }
1295        }
1296    }
1297
1298    window.addEventListener(
1299        'alpine:init',
1300        () => Alpine.data('amastyRewardsProduct', amastyRewardsProduct),
1301        { once: true }
1302    );
1303</script>
vendor: 1 bytes, line 1303
1303
1304<script>
1305    (function () {
1306        let amSwiperProcessed = false;
1307
1308        window.addEventListener('load-amswiper', () => {
1309            if (amSwiperProcessed) {
1310                window?.Swiper && window.dispatchEvent(new CustomEvent('amswiper-loaded', {}));
1311                return;
1312            }
1313
1314            const script = document.createElement('script');
1315            script.src = 'https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Amasty_LibSwiperJs/js/vendor/swiper/swiper.min.js';
1316            script.async = true;
1317            document.body.appendChild(script);
1318
1319            amSwiperProcessed = true;
1320
1321            script.onload = () => {
1322                window.dispatchEvent(new CustomEvent('amswiper-loaded', {}));
1323            }
1324
1325            const stylesHref = 'https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Amasty_LibSwiperJs/vendor/swiper/swiper.min.css';
1326
1327            if (document.querySelector(`link[href="${stylesHref}"]`)) {
1328                return;
1329            }
1330
1331            const styles = document.createElement('link');
1332            styles.rel = 'stylesheet';
1333            styles.type = 'text/css';
1334            styles.href = stylesHref;
1335
1336            document.head.appendChild(styles);
1337        });
1338    }());
1339</script>
1339
1340</head>
1341<body id="html-body" class="blog blog-home-index page-layout-2columns-left">
1342                        <noscript>
1343            <img height="1" width="1" style="display:none"
1344                 src="https://www.facebook.com/tr?id=512468414859242&amp;ev=PageView&amp;noscript=1&amp;a=magento_opensource-0.0.0-1.6.4">
1345        </noscript>
1346    
1347<!-- Google Tag Manager by MagePal -->
vendor: 62 bytes, lines 1347-1348
1347
1348<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1348GTM-TQTH9KNM
vendor: 83 bytes, lines 1348-1349
1348"
1349height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1350<!-- End Google Tag Manager by MagePal -->
1351
1352
1353    
1354    
1354<script type="module">const { KlarnaSDK } = await import("https\u003A\u002F\u002Fjs.klarna.com\u002Fweb\u002Dsdk\u002Fv2\u002Fklarna.mjs");
1355const MyKlarna = await KlarnaSDK({
1356    clientId: "klarna_live_client_Rnpiams_MTNpWWc3LzJ3UUppciNHKUgqJSlSTG9lS0gsN2Q1MmUxN2UtZmE4MC00OGIxLWFhNjgtNTc4NDMyN2M2MGQ0LDEsWlJNMmtVejlkd0Q1bVBoOHZnc3JKN1YyL3FOY2ZrYzRRSWRjNUNhY3ZZYz0",
1357    products: ["PAYMENT", "MESSAGING", "IDENTITY", "CUSTOMER"],
1358    locale: "it\u002DIT"
1359});
1360const token = await MyKlarna.Interoperability.token();
1361const klarnaReadyEvent = new CustomEvent("klarna-sdk-ready", {
1362    detail: { token, sdk: MyKlarna }
1363});
1364window.dispatchEvent(klarnaReadyEvent);</script>
1364    
1365<div
1366            class="ambanners ambanner-10"
1367        data-position="10"
1368        data-bannerid=""
1369        data-role="amasty-banner-container"
1370></div>
1371
1372<script nonce='NjNtZzZkZG5hN3RlcXptYzE0eXZhMWpqNnQzY2N0djE=' >
1373    'use strict';
1374    (function (blackbird) {
1375
1376        const addEventListenerOnElementToLoad = (elementToLoad, source) => new Promise((resolve, reject) => {
1377            elementToLoad.addEventListener('load', () => {
1378                elementToLoad.dataset.loaded = true;
1379                resolve(elementToLoad);
1380            })
1381
1382            elementToLoad.addEventListener('error', () => {
1383                reject(new Error(`[External resource loader] : The resource "${source}", failed to load.`));
1384            });
1385        });
1386
1387        blackbird.loadExternalScript = async (source) => {
1388            const scriptWithSameSrc = document.querySelector(`script[src="${source}"][data-loaded]`);
1389
1390            if (scriptWithSameSrc && scriptWithSameSrc.dataset.loaded === 'true') {
1391                return scriptWithSameSrc;
1392            }
1393
1394            const script = scriptWithSameSrc ?? document.createElement('script');
1395            script.type = 'text/javascript';
1396            script.async = true;
1397            script.src = source;
1398            script.dataset.loaded = false;
1399
1400            document.head.appendChild(script);
1401            await addEventListenerOnElementToLoad(script, source);
1402            return script;
1403        }
1404
1405        blackbird.loadExternalStyle = async (source) => {
1406            const linkWithSameHref = document.querySelector(`link[href="${source}"][data-loaded]`);
1407
1408            if (linkWithSameHref && linkWithSameHref.dataset.loaded === 'true') {
1409                return linkWithSameHref;
1410            }
1411
1412            const link = linkWithSameHref ?? document.createElement('link');
1413            link.type = 'text/css'
1414            link.rel = 'stylesheet';
1415            link.href = source;
1416            link.dataset.loaded = false;
1417
1418            document.head.prepend(link);
1419            await addEventListenerOnElementToLoad(link, source);
1420            return link;
1421        }
1422
1423        blackbird.loadExternalResource = (source) => {
1424            const scriptUrlRegex = /\.(js)$/i;
1425            const styleUrlRegex = /\.(css)$/i;
1426
1427            if (scriptUrlRegex.test(source)) {
1428                return blackbird.loadExternalScript(source);
1429            }
1430
1431            if (styleUrlRegex.test(source)) {
1432                return blackbird.loadExternalStyle(source);
1433            }
1434        }
1435
1436    }(window.blackbird = window.blackbird || {}));
1437</script>
1437
1438<!-- BEGIN Trovaprezzi Trusted Program CODE -->
1439<script type="text/javascript" src="https://tps.trovaprezzi.it/javascripts/tracking-vanilla.min.js"></script>
1439
1440
1441<!-- END  Trovaprezzi Trusted Program CODE -->
1442<input name="form_key" type="hidden" value="uky45cJBt3wJBuSu" />
1443    <noscript>
1444        <section
1445            class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"
1446            aria-labelledby="messageGlobalNoScriptMessage"
1447        >
1448            <div class="container text-center">
1449                <p id="messageGlobalNoScriptMessage">
1450                    <strong>I JavaScript sembrano essere disabilitati nel tuo browser.</strong>
1451                    <span>
1452                        Per una migliore esperienza sul nostro sito, assicurati di attivare i javascript nel tuo browser.                    </span>
1453                </p>
1454            </div>
1455        </section>
1456    </noscript>
1457
1458
1459<div class="widget block block-static-block">
1460    <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">
1461Spedizione <strong id="prova-agent">Gratuita</strong><span class="hidden lg:inline"> su tutti i prodotti</span> | Ordine minimo 24,90 €
1462</p>
1463<a href="http://reskyt.com/app/anticafarmaciaorlandi" class="href-download-app reskyt" id="href-download-app" style="display:none">
1464    <div id="install-app">
1465        <span class="close-install-app" onclick="return reskytCloseBar();"><span>x</span></span>
1466        <div class="content-app">
1467            <img class="img-app" src="https://cdn.reskyt.com/7724/antica-farmacia-orlandi-icono-app-436884-250116101022.png" alt="Farma.it">
1468            <div class="name-app">Farma.it</div>
1469            <div class="fab-app">Farma.it - by Antica Farmacia Orlandi</div>
1470            <div class="title-app">Disponibile su <span id="platform-app"></span></div>
1471        </div>
1472    </div>
1473</a>
1474
1475<style>
1476    .fixed-header .reskyt #install-app {
1477        display: none;
1478    }
1479    
1480    .reskyt #install-app {
1481        width:100%;
1482        right: 0;
1483        position: fixed;
1484        top:0;
1485        z-index: 900;
1486        color:#000000;
1487        background-color:rgb(255, 102, 0);;
1488        font-family: Verdana, Arial, sans-serif;
1489        font-size:12px;
1490        min-height:90px;
1491        z-index: 99999;
1492    }
1493    .reskyt .close-install-app {
1494        padding:8px 5px;
1495        display:block;
1496        width:20px;
1497        height:40px;
1498        font-family: Helvetica, Arial, Verdana, sans-serif;
1499        font-weight: normal;
1500        font-size:14px;
1501        text-align:center;
1502        cursor:pointer !important;
1503        font-weight:bold;
1504        color:#666;
1505        position:absolute;
1506        margin-top:20px;
1507    }
1508    .reskyt .img-app {
1509        max-height: 60px;
1510        width:57px;
1511        border: 1px solid #e8ecf1;
1512        -webkit-border-radius: 8px;
1513        -moz-border-radius: 8px;
1514        border-radius: 8px;
1515    }
1516    .reskyt .img-app, .reskyt .content-app {
1517        float:left;
1518    }
1519    .reskyt .fab-app {
1520        color:#000000;
1521        font-size:11px;
1522    }
1523    .reskyt .name-app, .reskyt .title-app, .reskyt .fab-app {
1524        margin-left:70px;
1525        padding:1px 0;
1526    }
1527    .reskyt .title-app {                 color: #444444;             }
1528    .reskyt .name-app {
1529        font-weight:bold;
1530        margin-top:2px;
1531        overflow:hidden;
1532        height: 16px;
1533    }
1534    .reskyt .content-app {
1535        margin-top:8px;
1536        margin-right: 34px;
1537        margin-left: 30px;
1538        position:absolute;
1539    }
1540    .reskyt .view-install-app {
1541        color:blue;
1542        line-height:25px;
1543        margin-top:23px;
1544        text-transform:uppercase;
1545        position:absolute;
1546        right:5px;
1547    }
1548    @media screen and (max-width: 350px){                  .reskyt .title-app { overflow: auto; max-height: 28px;}                }
1549</style>
1550
1551<script>
1552
1553    function reskytCloseBar () {
1554        dias_expire = 7; /*Dias que queremos que pasen hasta que se vuelva a mostrar la barra*/
1555        reskytSetCookie("reskyt-install-app", 1, dias_expire);
1556        document.getElementById("href-download-app").style.display = "none";
1557        return false;
1558    }
1559    function reskytSetCookie(cname, cvalue, exdays) {
1560        var d = new Date();
1561        d.setTime(d.getTime() + (exdays*24*60*60*1000));
1562        var expires = "expires="+ d.toUTCString();
1563        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; /*Añadir ;SameSite=None;Secure en caso de que la cookie tenga que ser accesible entre iFrame*/
1564    }
1565    function reskytGetCookie(cname) {
1566        var name = cname + "=";
1567        var decodedCookie = decodeURIComponent(document.cookie);
1568        var ca = decodedCookie.split(';');
1569        for(var i = 0; i <ca.length; i++) {
1570            var c = ca[i];
1571            while (c.charAt(0) == ' ') {
1572                c = c.substring(1);
1573            }
1574            if (c.indexOf(name) == 0) {
1575                return c.substring(name.length, c.length);
1576            }
1577        }
1578        return "";
1579    }
1580    url = window.location.href;
1581    if ( url.indexOf("customapp=") != -1 ) {
1582        reskytSetCookie("is_app_install_bar", 1, 365);
1583    }
1584    window.addEventListener('load', function () {
1585        let isMobile = true;
1586
1587        const platformApp = document.getElementById("platform-app");
1588        const downloadApp = document.getElementById("href-download-app");
1589
1590        if (/Android/i.test(navigator.userAgent)) {
1591            if (platformApp) {
1592                platformApp.innerHTML = "Google Play";
1593            }
1594        } else if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
1595            if (platformApp) {
1596                platformApp.innerHTML = "App Store";
1597            }
1598        } else if (/IEMobile/i.test(navigator.userAgent)) {
1599            if (platformApp) {
1600                platformApp.innerHTML = "Windows Phone";
1601            }
1602        } else {
1603            isMobile = false;
1604        }
1605
1606        if (
1607            downloadApp &&
1608            isMobile &&
1609            !reskytGetCookie("is_app_install_bar") &&
1610            !reskytGetCookie("reskyt-install-app")
1611        ) {
1612            downloadApp.style.display = "block";
1613        } else if (downloadApp) {
1614            downloadApp.style.display = "none";
1615        }
1616    });
1617</script>
1617</div></div></div>
1618
1619
1620<script data-cfasync="false">
1621    window.amastyCookieManager = window.amastyCookieManager || {};
1622</script>
vendor: 1 bytes, line 1622
1622
1623<script type="text/plain" data-cookieconsent="marketing">
1624    (function() {
1625      "use strict";
1626
1627      window.CONNECTIF_CART_SUMMARY = null;
1628
1629      function addClientScript(result) {
1630          if (
1631              !document.querySelector("#__cn_generic_script__" + result.clientId) &&
1632              !document.querySelector("#__cn_client_script_" + result.clientId)
1633          ) {
1634              const url =
1635                  result.cdnProtocol +
1636                  "://" +
1637                  result.cdnDomain +
1638                  "/" +
1639                  result.cdnPath +
1640                  "/" +
1641                  result.clientScriptPath +
1642                  result.clientId;
1643              const element = document.createElement("script");
1644              element.setAttribute("src", url);
1645              element.setAttribute("id", "__cn_generic_script__" + result.clientId);
1646              document.body.appendChild(element);
1647          } else {
1648              var cartModel = window.connectif.getCartModel();
1649              window.connectif.managed.sendEvents([], {cart: cartModel})
1650          }
1651      }
1652
1653      function addTags(innerHTML, elementToRemove = null) {
1654        if (!!innerHTML) {
1655            if (elementToRemove) {
1656                let elementToRemoveNode = document.querySelector(elementToRemove);
1657                if (elementToRemoveNode) {
1658                    elementToRemoveNode.remove();
1659                }
1660            }
1661
1662          let element = document.createElement("div");
1663          element.style.display = "none";
1664          element.innerHTML = innerHTML;
1665          document.body.appendChild(element);
1666        }
1667      }
1668
1669      function fetchConnectif() {
1670        const url = 'https://www.farma.it/connectif/tags/ajaxconnectiftags' + '?' + Date.now().toString(36) + Math.random().toString(36).substr(2);
1671
1672        fetch(url, {
1673          method: "GET",
1674          headers: {
1675            "Content-Type": "application/json",
1676              'Cache-Control': 'no-cache, no-store, must-revalidate',
1677              'Pragma': 'no-cache',
1678              'Expires': '0',
1679              'X-Requested-With': 'XMLHttpRequest'
1680          }
1681        })
1682        .then(response => response.json())
1683        .then(result => {
1684          addTags(result.renderedClientInfo, '.cn_client_info');
1685          addTags(result.renderedCart, '.cn_cart');
1686          addTags(result.renderedNewsletter, '.cn_newsletter_subscribe');
1687
1688          if (
1689            document.readyState === "complete" ||
1690            document.readyState === "interactive"
1691          ) {
1692            addClientScript(result);
1693          } else {
1694            document.addEventListener(
1695              "DOMContentLoaded",
1696              addClientScript.bind(null, result)
1697            );
1698          }
1699        })
1700        .catch(error => console.error('Error:', error));
1701      }
1702
1703        window.addEventListener('private-content-loaded', (e) => {
1704            //fetch Connecitf only at first visit or whenever cart is updated (add to cart, remove from cart, qty update)
1705            var cartSummary = 0;
1706            if (e.detail && e.detail.data && e.detail.data.cart && e.detail.data.cart.summary_count) {
1707                cartSummary = e.detail.data.cart.summary_count;
1708            }
1709            if (window.CONNECTIF_CART_SUMMARY === null || cartSummary !== window.CONNECTIF_CART_SUMMARY)  {
1710                fetchConnectif();
1711                window.CONNECTIF_CART_SUMMARY = cartSummary;
1712            }
1713        });
1714    })();
1715</script>
1715
1716<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
1717   contentarea"
1718   href="#contentarea">
1719    <span>
1720        Salta al contenuto    </span>
1721</a>
1722<script>
1723    function initHeader () {
1724        return {
1725            cart: {},
1726            fixedPosition: 50,
1727            fixedClass: 'fixed-header',
1728            getData(data) {
1729                if (data.cart) { this.cart = data.cart }
1730            },
1731            getCartItemsCountLabel() {
1732                if(this.cart && this.cart.summary_count){
1733                    return (this.cart.summary_count > 99)? '99+' : `${this.cart.summary_count}`
1734                }
1735                return '0';
1736            },
1737            fixedHeader() {
1738                if (window.scrollY > this.fixedPosition) {
1739                    document.body.classList.add(this.fixedClass);
1740                } else {
1741                    document.body.classList.remove(this.fixedClass);
1742                }
1743            },
1744            bodyScroll(removeScroll) {
1745                const body = document.querySelector('body');
1746                if (!document.querySelector("#maincontent > .dfd-root")) {
1747                    if (removeScroll) {
1748                        body.classList.add('overflow-hidden');
1749                    } else {
1750                        body.classList.remove('overflow-hidden');
1751                    }
1752                }
1753            }
1754        }
1755    }
1756</script>
1756
1757<div id="header"
1758     class="relative w-full"
1759     :class="searchOpened ? '' : 'z-30'"
1760     x-data="{...initHeader(), ...{searchOpened: false}}"
1761     @live-search-state-changed.window="searchOpened = $event.detail; bodyScroll(searchOpened)"
1762     @private-content-loaded.window="getData(event.detail.data)"
1763     @scroll.window="fixedHeader()"
1764>
1765    <div class="content w-full bg-white shadow-lg border-b border-primary-darker" :class="searchOpened ? 'z-40' : ''">
1766        <div class="container flex flex-wrap items-center justify-between w-full pt-4 mx-auto mt-0">
1767            <!-- Logo -->
1768            <div class="order-2 flex-1 lg:flex-none w-auto">
1769    <a class="flex items-center justify-center lg:justify-start text-xl font-medium tracking-wide text-gray-800
1770        no-underline hover:no-underline font-title "
1771       href="https://www.farma.it/"
1772       title=""
1773       aria-label="store logo">
1774        <img src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/logo.svg"
1775             style="height: 60px;"
1776             title=""
1777             alt=""
1778            width="253"            height="70"        />
1779            </a>
1780</div>
1781
1782            <!-- Main Navigation -->
1783            
1784
1785<div x-data="initMenuMobile_6ac8c77d0ec48()"
1786     x-defer="intersect"
1787     x-intersect.once="isActive = true; $watch('open', value => { fetchData() })"
1788     class="z-20 order-1 navigation lg:hidden"
1789>
1790    <template x-if="isActive">
1791        <div class="flex items-baseline justify-between menu-icon mr-3">
1792            <div class="flex justify-end w-full">
1793                <a @click="$dispatch('toggle-mobile-menu6ac8c77d0ec48')"
1794                   class="flex items-center justify-center cursor-pointer">
1795                    <span class="bg-[#6328E035] rounded-full text-secondary p-2">
1796                        <svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewBox="0 0 24 17.44" width="14" height="14" role="img">
1797    <path fill="currentColor" d="M1.54 10.26a1.541 1.541 0 0 1 0-3.08h20.92a1.541 1.541 0 0 1 .08 3.08h-21ZM1.54 3.08a1.541 1.541 0 0 1 0-3.08h20.92a1.541 1.541 0 0 1 .08 3.08h-21ZM1.54 17.44a1.541 1.541 0 0 1 0-3.08h20.92a1.541 1.541 0 0 1 .08 3.08h-21Z"/>
1798<title>menu</title></svg>
1799                    </span>
1800                </a>
1801            </div>
1802        </div>
1803    </template>
1804    <!-- mobile -->
1805    <template x-if="isActive">
1806        <div @load.window="setActiveMenu($root)"
1807         class="bg-container-lighter h-screen overflow-x-hidden overflow-y-auto fixed top-0 left-0 w-full"
1808         :class="{'' : open}"
1809         @toggle-mobile-menu6ac8c77d0ec48.window="open = !open"
1810         @keydown.window.escape="open=false"
1811         x-cloak
1812         x-show="open"
1813         x-transition:enter="transform transition ease-in-out duration-300"
1814         x-transition:enter-start="-translate-x-full"
1815         x-transition:enter-end="translate-x-0"
1816         x-transition:leave="transform transition ease-in-out duration-300"
1817         x-transition:leave-start="translate-x-0"
1818         x-transition:leave-end="-translate-x-full">
1819
1820        <div class="flex items-baseline justify-between menu-icon shadow-md">
1821            <span class="font-bold font-baloo-bhaina text-primary px-4 pt-4 pb-3 w-full text-center text-xl"  :class="{
1822                    'hidden' : panelLevel > 0
1823                }">Menu</span>
1824            <a @click="$dispatch('toggle-mobile-menu6ac8c77d0ec48')"
1825               class="absolute z-10 top-0 right-0 cursor-pointer mt-0.5 p-5 pr-4"
1826            >
1827                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12" role="img">
1828    <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"/>
1829<title>x</title></svg>
1830            </a>
1831        </div>
1832
1833        <nav class="hidden w-full duration-150 text-base ease-in-out transform border-t transition-display border-container"
1834             :class="{ 'hidden' : !open }">
1835
1836
1837            <div class="submenu-top mt-4">
1838                
1839<div class="level-0">
1840        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
1841          :class="{
1842                    '-translate-x-full' : panelLevel > '0',
1843                    'translate-x-0' : panelLevel <= '0'
1844                }">
1845        <a href="https://www.farma.it/farma-lovers" class="level-top new-badge flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
1846                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/point.svg" alt="Raccolta&#x20;Punti&#x20;Farma&#x20;Lovers" />
1847            </span>
1848                    <span>Raccolta Punti Farma Lovers</span>
1849        </a>            </span>
1850
1851    </div>
1852
1853<div class="level-0">
1854        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
1855          :class="{
1856                    '-translate-x-full' : panelLevel > '0',
1857                    'translate-x-0' : panelLevel <= '0'
1858                }">
1859        <a href="https://www.farma.it/coupon-e-promo" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
1860                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/coupon-duotone.svg" alt="Fino&#x20;al&#x20;-10&#x25;&#x20;sui&#x20;prodotti&#x20;cosmetici" />
1861            </span>
1862                    <span>Fino al -10% sui prodotti cosmetici</span>
1863        </a>            </span>
1864
1865    </div>
1866
1867<div class="level-0">
1868        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
1869          :class="{
1870                    '-translate-x-full' : panelLevel > '0',
1871                    'translate-x-0' : panelLevel <= '0'
1872                }">
1873        <a href="/richiamami" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
1874                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/phone-duotone.svg" alt="Richiamami" />
1875            </span>
1876                    <span>Richiamami</span>
1877        </a>            </span>
1878
1879    </div>
1880            </div>
1881
1882            <!-- LEVEL 0 -->
1883            <div class="level-0 mt-4">
1884                <div @click="togglePanelActiveId('root')" class="flex items-center transition-transform duration-150 ease-in-out transform"
1885                      :class="{
1886                    '-translate-x-full' : panelLevel > 0,
1887                    'translate-x-0' : panelLevel <= 0
1888                }">
1889                    <div class="w-full cursor-pointer level-0 px-3  ">
1890                        <div class="px-4 pt-3 pb-2 flex justify-between items-center text-secondary bg-tertiary-darker/10 rounded-xl">
1891                            <span class="font-bold text-lg font-baloo-bhaina">
1892                                Categorie                            </span>
1893                            <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="relative bottom-0.5" width="20" height="20" role="img">
1894  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1895<title>chevron-right</title></svg>
1896                        </div>
1897                    </div>
1898                </div>
1899                <div class="absolute top-0 right-0 z-10 h-screen overflow-hidden w-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter level0"
1900                     :class="{
1901                    'translate-x-full h-0' : !isPanelActive('root'),
1902                    'translate-x-0 h-screen overflow-y-auto' : isPanelActive('root')
1903                }"
1904                >
1905                    <template x-if="isLoading && $store.externalScriptsInit">
1906    <div class="absolute bg-white/60 z-10 h-full w-full flex items-center justify-center">
1907        <div class="flex items-center">
1908            <!-- loading icon -->
1909            <svg class="animate-spin h-5 w-5 text-gray-600" xmlns="http://www.w3.org/2000/svg" fill="none"
1910                 viewBox="0 0 24 24">
1911                <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
1912                <path class="opacity-75" fill="currentColor"
1913                      d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">
1914                </path>
1915            </svg>
1916            <!-- end loading icon -->
1917        </div>
1918    </div>
1919</template>
1920                    <a class="block mb-4 relative shadow-md font-bold font-baloo-bhaina text-primary px-4 pt-4 pb-3 w-full text-center text-xl bg-white"
1921                       @click="removePanelActiveId('root')"
1922                       :class="{ 'sticky top-0 left-0 right-0 z-20': isPanelActive('root') && panelLevel <= 1 }"
1923                    >
1924                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 20.57" class="absolute top-4.5 left-4" width="16" height="16" role="img">
1925    <path d="M22.29 8.58H5.14l5.64-5.64c.65-.69.62-1.78-.07-2.43-.66-.62-1.68-.62-2.35 0L1.01 7.88C.37 8.52 0 9.39 0 10.29c0 .9.37 1.76 1.01 2.4l7.35 7.38c.68.66 1.77.64 2.43-.05.64-.67.64-1.73 0-2.39L5.15 12h17.14c.95-.02 1.7-.81 1.67-1.76-.02-.92-.76-1.65-1.67-1.67Z" style="fill:currentColor"/>
1926<title>arrow-back</title></svg>
1927                        <span class="ml-4">
1928                            Categorie                        </span>
1929                    </a>
1930                    <template x-for="(item, index) in menuData" :key="item.id">
1931                        <!-- LEVEL 1 -->
1932                        <div class="level-1">
1933                            <span class="flex items-center transition-transform duration-150 ease-in-out transform px-4 py-2 font-bold font-baloo-bhaina"
1934                                  :class="{
1935                                    '-translate-x-full h-0 overflow-hidden' : panelLevel > 1,
1936                                    'translate-x-0' : panelLevel <= 1
1937                                }"
1938                            >
1939                                <a x-bind:href="item.link" @click="(item.submenu && item.submenu.children) && togglePanelActiveId(item.id, $event)" class="flex items-center w-full cursor-pointer level-1">
1940                                    <template x-if="item.icon">
1941                                        <template x-if="item.icon_content">
1942                                            <span x-html="item.icon_content" class='menu-icon mr-4 inline-block'></span>
1943                                        </template>
1944                                        <template x-if="!item.icon_content">
1945                                            <span x-show="item.icon" class='menu-icon mr-4 inline-block'><img x-bind:src="item.icon" x-bind:alt="item.label" /></span>
1946                                        </template>
1947                                    </template>
1948                                    <span x-text="item.label"></span>
1949                                </a>
1950                                <template x-if="item.submenu && item.submenu.children">
1951                                    <span class="block"
1952                                          @click="togglePanelActiveId(item.id)"
1953                                    >
1954                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" role="img">
1955  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1956<title>chevron-right</title></svg>
1957                                     </span>
1958                                </template>
1959                            </span>
1960                            <template x-if="item.submenu && item.submenu.children">
1961                                <div class="level1 absolute flex flex-col top-0 right-0 z-10 overflow-hidden w-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter"
1962                                     :class="{
1963                                        'translate-x-full h-0' : !isPanelActive(item.id),
1964                                        'translate-x-0 h-screen' : isPanelActive(item.id),
1965                                        'overflow-y-auto': isPanelActive(item.id) && panelLevel <= 2
1966                                    }"
1967                                >
1968                                    <a class="block mb-4 relative shadow-md font-bold font-baloo-bhaina text-primary px-4 pt-4 pb-3 w-full text-center text-xl bg-white"
1969                                       @click="removePanelActiveId(item.id)"
1970                                       :class="{ 'sticky top-0 left-0 right-0 z-20': isPanelActive(item.id) && panelLevel <= 2 }"
1971                                    >
1972                                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 20.57" class="absolute top-4.5 left-4" width="16" height="16" role="img">
1973    <path d="M22.29 8.58H5.14l5.64-5.64c.65-.69.62-1.78-.07-2.43-.66-.62-1.68-.62-2.35 0L1.01 7.88C.37 8.52 0 9.39 0 10.29c0 .9.37 1.76 1.01 2.4l7.35 7.38c.68.66 1.77.64 2.43-.05.64-.67.64-1.73 0-2.39L5.15 12h17.14c.95-.02 1.7-.81 1.67-1.76-.02-.92-.76-1.65-1.67-1.67Z" style="fill:currentColor"/>
1974<title>arrow-back</title></svg>
1975                                        <span class="ml-4" x-text="item.label"></span>
1976                                    </a>
1977                                    <a x-bind:href="item.link"
1978                                       x-bind:title="item.label"
1979                                       class="order-1 flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter underline text-secondary gap-1"
1980                                    >
1981                                        <span>Vedi tutti</span>
1982                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
1983  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1984<title>chevron-right</title></svg>
1985                                    </a>
1986                                    <template x-for="child in item.submenu.children">
1987                                        <template x-for="(item, index) in child">
1988                                            <template x-if="item.type && item.type == 'category-item'">
1989                                                <!-- LEVEL 2 -->
1990                                                <div class="level-2" :class="{'order-0': item.type == 'custom_list', 'order-1': item.type != 'custom_list'}">
1991                                                    <span class="flex items-center transition-transform duration-150 ease-in-out transform"
1992                                                          :class="{
1993                                                            'font-bold': item.type == 'custom_list',
1994                                                            '-translate-x-full' : panelLevel > 2,
1995                                                            'translate-x-0' : panelLevel <= 2
1996                                                        }"
1997                                                    >
1998                                                        <a x-bind:href="item.link" @click="(item.children) && togglePanelActiveId(item.id, $event)" class="flex items-center w-full px-7 py-1 text-[15px] cursor-pointer level-2">
1999                                                            <span x-text="item.label"></span>
2000                                                        </a>
2001                                                        <template x-if="item.children">
2002                                                            <span class="block"
2003                                                                  @click="togglePanelActiveId(item.id)"
2004                                                            >
2005                                                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" role="img">
2006  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
2007<title>chevron-right</title></svg>
2008                                                             </span>
2009                                                        </template>
2010                                                    </span>
2011
2012                                                    <template x-if="item.children">
2013                                                        <div class="level2 absolute flex flex-col top-0 right-0 z-10 overflow-hidden w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter"
2014                                                             :class="{
2015                                                                'translate-x-full h-0' : !isPanelActive(item.id),
2016                                                                'translate-x-0 h-screen overflow-y-auto' : isPanelActive(item.id)
2017                                                            }"
2018                                                        >
2019                                                            <a class="block mb-4 relative shadow-md font-bold font-baloo-bhaina text-primary px-4 pt-4 pb-3 w-full text-center text-xl bg-white"
2020                                                               @click="removePanelActiveId(item.id)"
2021                                                               :class="{ 'sticky top-0 left-0 right-0 z-20': isPanelActive(item.id) }"
2022                                                            >
2023                                                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 20.57" width="16" height="16" role="img">
2024    <path d="M22.29 8.58H5.14l5.64-5.64c.65-.69.62-1.78-.07-2.43-.66-.62-1.68-.62-2.35 0L1.01 7.88C.37 8.52 0 9.39 0 10.29c0 .9.37 1.76 1.01 2.4l7.35 7.38c.68.66 1.77.64 2.43-.05.64-.67.64-1.73 0-2.39L5.15 12h17.14c.95-.02 1.7-.81 1.67-1.76-.02-.92-.76-1.65-1.67-1.67Z" style="fill:currentColor"/>
2025<title>arrow-back</title></svg>
2026                                                                <sp
2026an class="ml-4" x-text="item.label"></span>
2027                                                            </a>
2028                                                            <template x-for="(item, index) in item.children" :key="index">
2029                                                                <template x-if="item.type && item.type != 'block'">
2030
2031                                                                        <div class="level-3">
2032                                                                            <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2033                                                                                  :class="{
2034                                                                                    '-translate-x-full' : panelLevel > 3,
2035                                                                                    'translate-x-0' : panelLevel <= 3
2036                                                                                }"
2037                                                                            >
2038                                                                                <a x-bind:href="item.link" class="flex items-center w-full px-7 py-4 cursor-pointer bg-container-lighter border-container level-3">
2039                                                                                    <span x-text="item.label"></span>
2040                                                                                </a>
2041                                                                            </span>
2042                                                                        </div>
2043
2044                                                                    </template>
2045                                                            </template>
2046                                                        </div>
2047                                                    </template>
2048                                                </div>
2049
2050                                            </template>
2051                                        </template>
2052                                    </template>
2053                                </div>
2054                            </template>
2055                        </div>
2056                    </template>
2057                </div>
2058            </div>
2059
2060            <div class="transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : panelLevel > 0, 'translate-x-0' : panelLevel <= 0 }">
2061                <div class="font-bold px-7 mt-5 mb-2">
2062                    Collegamenti utili                </div>
2063                
2064<div class="level-0">
2065        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2066          :class="{
2067                    '-translate-x-full' : panelLevel > '0',
2068                    'translate-x-0' : panelLevel <= '0'
2069                }">
2070        <a href="https://www.farma.it/brands" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span>Marchi</span>
2071        </a>            </span>
2072
2073    </div>
2074
2075<div class="level-0">
2076        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2077          :class="{
2078                    '-translate-x-full' : panelLevel > '0',
2079                    'translate-x-0' : panelLevel <= '0'
2080                }">
2081        <a href="/blog.html" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span>I nostri consigli</span>
2082        </a>            </span>
2083
2084    </div>
2085
2086<div class="level-0">
2087        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2088          :class="{
2089                    '-translate-x-full' : panelLevel > '0',
2090                    'translate-x-0' : panelLevel <= '0'
2091                }">
2092        <a href="https://www.farma.it/coupon-e-promo" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">
2092                    <span>Coupon</span>
2093        </a>            </span>
2094
2095    </div>
2096
2097<div class="level-0">
2098        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2099          :class="{
2100                    '-translate-x-full' : panelLevel > '0',
2101                    'translate-x-0' : panelLevel <= '0'
2102                }">
2103        <a href="/prodotti-in-offerta" class="level-top text-red flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span>In offerta</span>
2104        </a>            </span>
2105
2106    </div>
2107
2108<div class="level-0">
2109        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2110          :class="{
2111                    '-translate-x-full' : panelLevel > '0',
2112                    'translate-x-0' : panelLevel <= '0'
2113                }">
2114        <a href="/faq" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span>Serve Aiuto?</span>
2115        </a>            </span>
2116
2117    </div>
2118
2119<div class="level-0">
2120        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2121          :class="{
2122                    '-translate-x-full' : panelLevel > '0',
2123                    'translate-x-0' : panelLevel <= '0'
2124                }">
2125        <a href="/sales/guest/form" class="level-top hidden lg:inline flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span>Informazioni sul tuo ordine</span>
2126        </a>            </span>
2127
2128    </div>
2129
2130<div class="level-0">
2131        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2132          :class="{
2133                    '-translate-x-full' : panelLevel > '0',
2134                    'translate-x-0' : panelLevel <= '0'
2135                }">
2136        <a href="/farma-it-podcast" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
2137                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/tv-warning.svg" alt="Podcast" />
2138            </span>
2139                    <span>Podcast</span>
2140        </a>            </span>
2141
2142    </div>
2143
2144<div class="level-0">
2145        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2146          :class="{
2147                    '-translate-x-full' : panelLevel > '0',
2148                    'translate-x-0' : panelLevel <= '0'
2149                }">
2150        <a href="/app" class="level-top text-secondary font-medium flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span>Scarica l&#039;App!</span>
2151        </a>            </span>
2152
2153    </div>
2154
2155                <!-- BLOCK customer-menu-mobile -->
2156<div class="w-full px-3 my-3" x-data="initCustomerMenuMobile()" @private-content-loaded.window="getData(event.detail.data)">
2157    <template x-if="isLoggedIn()">
2158        <a
2159                href="https&#x3A;&#x2F;&#x2F;www.farma.it&#x2F;customer&#x2F;account&#x2F;"
2160                id="customer-menu-mobile"
2161                class="px-4 pt-3 pb-2 flex justify-start gap-3 items-center bg-category-lighter rounded-xl"
2162                aria-label="Il&#x20;mio&#x20;Account"
2163        >
2164            <span class="relative block">
2165                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true">
2166    <path d="M4.07 21c-.07-.05-.13-.1-.19-.17C-1 16.35-1.32 8.76 3.16 3.87c4.48-4.88 12.07-5.2 16.95-.72 4.88 4.48 5.21 12.07.73 16.96-.23.25-.47.49-.73.73-.05.06-.12.12-.19.17-4.53 4-11.32 4-15.85 0ZM12 22.15c2.25 0 4.44-.75 6.22-2.13a7.354 7.354 0 0 0-6.14-3.4h-.16c-2.49.02-4.8 1.3-6.14 3.4 1.78 1.39 3.97 2.14 6.22 2.13Zm4.83-6.02c1.09.67 2.03 1.56 2.76 2.61 3.73-4.19 3.35-10.61-.84-14.33C14.56.68 8.14 1.06 4.42 5.25 1 9.1 1 14.9 4.42 18.74a9.2 9.2 0 0 1 4.16-3.31 5.546 5.546 0 0 1-.93-7.78 5.546 5.546 0 0 1 7.78-.93 5.546 5.546 0 0 1 0 8.71c.49.19.96.43 1.4.7Zm-8.52-5.06c0 2.01 1.61 3.65 3.62 3.69h.15A3.694 3.694 0 0 0 15.7 11a3.694 3.694 0 0 0-3.76-3.62 3.692 3.692 0 0 0-3.62 3.69Z" style="fill:currentColor"/>
2167</svg>
2168            </span>
2169            <span class="font-bold text-lg font-baloo-bhaina truncate">
2170                <span>Ciao, </span>
2171                <span x-text="customer.firstname"></span>
2172            </span>
2173            <span class="relative bottom-0.5 whitespace-nowrap block ml-auto text-[15px] font-medium">Il mio Account</span>
2174        </a>
2175    </template>
2176    <template x-if="!isLoggedIn()">
2177        <span>
2178            <a
2179                    href="https&#x3A;&#x2F;&#x2F;www.farma.it&#x2F;customer&#x2F;account&#x2F;"
2180                    id="customer-menu-mobile"
2181                    class="px-4 py-3 flex justify-between gap-3 items-center bg-category-lighter rounded-xl"
2182                    aria-label="Il&#x20;mio&#x20;Account"
2183            >
2184                <span class="relative block">
2185                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true">
2186    <path d="M4.07 21c-.07-.05-.13-.1-.19-.17C-1 16.35-1.32 8.76 3.16 3.87c4.48-4.88 12.07-5.2 16.95-.72 4.88 4.48 5.21 12.07.73 16.96-.23.25-.47.49-.73.73-.05.06-.12.12-.19.17-4.53 4-11.32 4-15.85 0ZM12 22.15c2.25 0 4.44-.75 6.22-2.13a7.354 7.354 0 0 0-6.14-3.4h-.16c-2.49.02-4.8 1.3-6.14 3.4 1.78 1.39 3.97 2.14 6.22 2.13Zm4.83-6.02c1.09.67 2.03 1.56 2.76 2.61 3.73-4.19 3.35-10.61-.84-14.33C14.56.68 8.14 1.06 4.42 5.25 1 9.1 1 14.9 4.42 18.74a9.2 9.2 0 0 1 4.16-3.31 5.546 5.546 0 0 1-.93-7.78 5.546 5.546 0 0 1 7.78-.93 5.546 5.546 0 0 1 0 8.71c.49.19.96.43 1.4.7Zm-8.52-5.06c0 2.01 1.61 3.65 3.62 3.69h.15A3.694 3.694 0 0 0 15.7 11a3.694 3.694 0 0 0-3.76-3.62 3.692 3.692 0 0 0-3.62 3.69Z" style="fill:currentColor"/>
2187</svg>
2188                </span>
2189                <span class="label font-medium text-[15px]">
2190                    <span>Accedi&#x20;&#x2F;&#x20;Registrati</span>
2191                </span>
2192            </a>
2193        </span>
2194    </template>
2195</div>
2196<!-- /BLOCK customer-menu-mobile -->
2197                <div class="font-bold px-7 mt-5 mb-2">
2198                    Servizi clienti                </div>
2199                <div class="submenu-bottom mb-4">
2200                    
2201<div class="level-0">
2202        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2203          :class="{
2204                    '-translate-x-full' : panelLevel > '0',
2205                    'translate-x-0' : panelLevel <= '0'
2206                }">
2207        <a href="faq" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
2208                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/information-circle.svg" alt="Serve&#x20;aiuto&#x3F;" />
2209            </span>
2210                    <span>Serve aiuto?</span>
2211        </a>            </span>
2212
2213    </div>
2214
2215<div class="level-0">
2216        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2217          :class="{
2218                    '-translate-x-full' : panelLevel > '0',
2219                    'translate-x-0' : panelLevel <= '0'
2220                }">
2221        <a href="https://www.farma.it/contattaci" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
2222                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/chat.svg" alt="Contattaci" />
2223            </span>
2224                    <span>Contattaci</span>
2225        </a>            </span>
2226
2227    </div>
2228
2229<div class="level-0">
2230        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2231          :class="{
2232                    '-translate-x-full' : panelLevel > '0',
2233                    'translate-x-0' : panelLevel <= '0'
2234                }">
2235        <a href="sales/guest/form" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
2236                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/tracking.svg" alt="Traccia&#x20;il&#x20;tuo&#x20;pacco" />
2237            </span>
2238                    <span>Traccia il tuo pacco</span>
2239        </a>            </span>
2240
2241    </div>
2242
2243<div class="level-0">
2244        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2245          :class="{
2246                    '-translate-x-full' : panelLevel > '0',
2247                    'translate-x-0' : panelLevel <= '0'
2248                }">
2249        <a href="https://www.farma.it/pagamenti-e-condizioni" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
2250                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/credit-card.svg" alt="Pagamenti" />
2251            </span>
2252                    <span>Pagamenti</span>
2253        </a>            </span>
2254
2255    </div>
2256
2257<div class="level-0">
2258        <span class="flex items-center transition-transform duration-150 ease-in-out transform"
2259          :class="{
2260                    '-translate-x-full' : panelLevel > '0',
2261                    'translate-x-0' : panelLevel <= '0'
2262                }">
2263        <a href="https://www.farma.it/spedizioni" class="level-top  flex items-center w-full px-7 py-1 text-[15px] cursor-pointer bg-container-lighter border-container level-0">                    <span class='menu-icon mr-2'>
2264                <img class="w-4.5 h-4.5" src="https://www.farma.it/media/dnafactory/megamenu/truck.svg" alt="Spedizioni" />
2265            </span>
2266                    <span>Spedizioni</span>
2267        </a>            </span>
2268
2269    </div>
2270                </div>
2271            </div>
2272
2273            
2274        </nav>
2275    </div>
2276    </template>
2277</div>
2278
2279<script>
2280    'use strict';
2281
2282    const initMenuMobile_6ac8c77d0ec48 = () => {
2283        return {
2284            open: false,
2285            isActive: false,
2286            isLoaded: false,
2287            mobilePanelActiveId: [],
2288            panelLevel: 0,
2289            menuData: null,
2290            isLoading: false,
2291            currentUrl: window.location.href.split('?')[0],
2292            isPanelActive(id){
2293                return this.mobilePanelActiveId.includes(id);
2294            },
2295            setPanelActiveId(id, replace = false){
2296                if(replace){
2297                    this.clearPanelActiveId();
2298                }
2299                if(!this.isPanelActive(id))
2300                    this.mobilePanelActiveId.push(id);
2301                id && (this.panelLevel += 1);
2302            },
2303            removePanelActiveId(id){
2304                let i = this.mobilePanelActiveId.indexOf(id);
2305                if(i >= 0)
2306                    this.mobilePanelActiveId.splice(i, 1);
2307                this.panelLevel -= 1;
2308            },
2309            togglePanelActiveId(id, event){
2310                if(event)
2311                    event.preventDefault();
2312                if(this.isPanelActive(id))
2313                    this.removePanelActiveId(id);
2314                else
2315                    this.setPanelActiveId(id);
2316            },
2317            clearPanelActiveId(){
2318                this.mobilePanelActiveId =[];
2319            },
2320            hasSubmenu(item){
2321                return item.submenu;
2322            },
2323            setActiveMenu(menuNode) {
2324                Array.from(menuNode.querySelectorAll('a')).filter(link => {
2325                    return link.href === window.location.href.split('?')[0];
2326                }).map(item => {
2327                    this.addClassToParent(item);
2328                });
2329            },
2330            addClassToParent(item){
2331                if(item) {
2332                    item.classList.add('underline')
2333                    parent = item.closest(`div.class-${this.panelLevel - 1}`)
2334                    parent && (parent !== item) && this.addClassToParent(parent.querySelector('span > a'));
2335                }
2336            },
2337            dispatchMessage(type, message, timeout) {
2338                typeof window.dispatchMessages && window.dispatchMessages(
2339                    [{
2340                        type: type,
2341                        text: message,
2342                    }],
2343                    timeout
2344                );
2345            },
2346            fetchData(){
2347                this.$dispatch('screen-lock',this.open);
2348                this.isLoaded = true;
2349                if (!this.menuData && this.open) {
2350                    this.isLoading = true;
2351                    fetch(
2352                        'https://www.farma.it/megamenu/get/json/id/1/limit/0/level/2/',
2353                        {
2354                            headers: {contentType: 'application/json'},
2355                        }
2356                    ).then(response => {
2357                        if (response.ok) {
2358                            return response.json();
2359                        } else {
2360                            this.dispatchMessage('error', response);
2361                            console.warn("GET request failed", response);
2362                        }
2363                    })
2364                    .then(data => {
2365                        this.menuData = data;
2366                        this.isLoading = false;
2367                        this.$nextTick(() => {
2368                            this.setActiveMenu(this.$root);
2369                        });
2370                    });
2371                }
2372            }
2373        }
2374    }
2375</script>
2375
2376
2377
2378<nav class="hidden hierarchy">
2379    <li><a href='https://www.farma.it/rimedi-e-salute.html'>Rimedi e Salute</a><ul><li><a href='https://www.farma.it/rimedi-e-salute/immunologici.html'>Immunologici</a></li><li><a href='https://www.farma.it/rimedi-e-salute/antiparassitari-insetticidi-e-repellenti.html'>Antiparassitari, Insetticidi e Repellenti</a></li><li><a href='https://www.farma.it/rimedi-e-salute/mal-di-testa-0.html'>Dolore, Febbre e Infiammazioni</a></li><li><a href='https://www.farma.it/rimedi-e-salute/antimicrobici.html'>Antimicrobici</a></li><li><a href='https://www.farma.it/rimedi-e-salute/preparati-ormonali.html'>Preparati Ormonali</a></li><li><a href='https://www.farma.it/rimedi-e-salute/antiacne.html'>Antiacne</a></li><li><a href='https://www.farma.it/rimedi-e-salute/decongestionanti-nasali.html'>Influenza e Raffreddore</a></li><li><a href='https://www.farma.it/rimedi-e-salute/decongestionanti-ed-antinfiammatori.html'>Occhi</a></li><li><a href='https://www.farma.it/rimedi-e-salute/emorroidi-e-ragadi.html'>Stomaco e Intestino</a></li><li><a href='https://www.farma.it/rimedi-e-salute/igiene-orale.html'>Igiene Orale</a></li><li><a href='https://www.farma.it/rimedi-e-salute/sali-minerali.html'>Sali minerali</a></li><li><a href='https://www.farma.it/rimedi-e-salute/cicatrizzanti.html'>Cicatrizzanti</a></li><li><a href='https://www.farma.it/rimedi-e-salute/sistema-cardiovascolare.html'>Sistema Cardiovascolare</a></li><li><a href='https://www.farma.it/rimedi-e-salute/stitichezza-e-lassativi.html'>Stitichezza e Lassativi</a></li><li><a href='https://www.farma.it/rimedi-e-salute/dermatologici.html'>Dermatologici</a></li><li><a href='https://www.farma.it/rimedi-e-salute/antisettici-cavo-orale.html'>Antisettici cavo orale</a></li><li><a href='https://www.farma.it/rimedi-e-salute/anti-diarrea.html'>Anti Diarrea</a></li><li><a href='https://www.farma.it/rimedi-e-salute/disinfettanti.html'>Disinfettanti</a></li><li><a href='https://www.farma.it/rimedi-e-salute/altri-disturbi.html'>Altri Disturbi</a></li><li><a href='https://www.farma.it/rimedi-e-salute/antimicotici.html'>Antimicotici</a></li><li><a href='https://www.farma.it/rimedi-e-salute/allergie.html'>Allergie</a></li><li><a href='https://www.farma.it/rimedi-e-salute/antiacidi-e-digestivi.html'>Antiacidi e Digestivi</a></li><li><a href='https://www.farma.it/rimedi-e-salute/disturbi-addominali.html'>Disturbi Addominali</a></li><li><a href='https://www.farma.it/rimedi-e-salute/controllo-del-peso.html'>Controllo del Peso</a></li><li><a href='https://www.farma.it/rimedi-e-salute/genito-urinario.html'>Genito-Urinario</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/veterinaria-e-animali.html'>Veterinaria e animali</a><ul><li><a href='https://www.farma.it/veterinaria-e-animali/antiparassitari.html'>Antiparassitari</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/toelettatura-e-igiene.html'>Toelettatura e Igiene</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/alimentazione.html'>Alimentazione cani, gatti ed altri animali domestici</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/medicazioni.html'>Medicazioni Veterinarie</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/accessori-0.html'>Accessori</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/integratori-e-parafarmaci.html'>Integratori e Parafarmaci Veterinari</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/alimentazione-0.html'>Alimentazione</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/medicazioni-0.html'>Medicazioni</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/integratori-e-parafarmaci-0.html'>Integratori e Parafarmaci</a></li><li><a href='https://www.farma.it/veterinaria-e-animali/abbigliamento.html'>Abbigliamento</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/omeopatia-0.html'>Omeopatia</a><ul><li><a href='https://www.farma.it/omeopatia-0/gocce.html'>Gocce</a></li><li><a href='https://www.farma.it/omeopatia-0/granuli.html'>Granuli</a></li><li><a href='https://www.farma.it/omeopatia-0/globuli.html'>Globuli</a></li><li><a href='https://www.farma.it/omeopatia-0/creme-e-unguenti.html'>Creme e Unguenti</a></li><li><a href='https://www.farma.it/omeopatia-0/sciroppi.html'>Sciroppi</a></li><li><a href='https://www.farma.it/omeopatia-0/fiale.html'>Fiale</a></li><li><a href='https://www.farma.it/omeopatia-0/colliri-0.html'>Colliri</a></li><li><a href='https://www.farma.it/omeopatia-0/spray.html'>Spray</a></li><li><a href='https://www.farma.it/omeopatia-0/altri-preparati.html'>Preparati omeopatici</a></li><li><a href='https://www.farma.it/omeopatia-0/confetti-e-capsule.html'>Confetti e Capsule</a></li><li><a href='https://www.farma.it/omeopatia-0/polveri.html'>Polveri</a></li><li><a href='https://www.farma.it/omeopatia-0/supposte.html'>Supposte</a></li><li><a href='https://www.farma.it/omeopatia-0/olii.html'>Olii</a></li><li><a href='https://www.farma.it/omeopatia-0/ovuli.html'>Ovuli</a></li><li><a href='https://www.farma.it/omeopatia-0/bioterapici.html'>Bioterapici</a></li><li><a href='https://www.farma.it/omeopatia-0/altro.html'>Altro</a></li><li><a href='https://www.farma.it/omeopatia-0/altri-preparati-1.html'>Altri preparati</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/erboristeria-e-fitoterapia.html'>Erboristeria e Fitoterapia</a><ul><li><a href='https://www.farma.it/erboristeria-e-fitoterapia/floriterapia.html'>Floriterapia</a></li><li><a href='https://www.farma.it/erboristeria-e-fitoterapia/cosmetici-naturali.html'>Cosmetici Naturali</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/alimentazione-e-integratori.html'>Alimentazione e Integratori</a><ul><li><a href='https://www.farma.it/alimentazione-e-integratori/integratori-alimentari.html'>Integratori Alimentari</a></li><li><a href='https://www.farma.it/alimentazione-e-integratori/alimentazione-speciale.html'>Alimentazione Speciale</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/igiene-e-benessere.html'>Igiene e Benessere</a><ul><li><a href='https://www.farma.it/igiene-e-benessere/igiene-intima.html'>Igiene intima</a></li><li><a href='https://www.farma.it/igiene-e-benessere/bocca-e-denti.html'>Bocca e Denti</a></li><li><a href='https://www.farma.it/igiene-e-benessere/capelli.html'>Capelli</a></li><li><a href='https://www.farma.it/igiene-e-benessere/naso.html'>Naso</a></li><li><a href='https://www.farma.it/igiene-e-benessere/corpo-0.html'>Corpo</a></li><li><a href='https://www.farma.it/igiene-e-benessere/anti-zanzare-e-insetti.html'>Anti zanzare e insetti</a></li><li><a href='https://www.farma.it/catalog/category/view/s/strumenti-sanitari/id/162/'>Strumenti Sanitari</a></li><li><a href='https://www.farma.it/igiene-e-benessere/prodotti-per-la-casa.html'>Prodotti per la casa</a></li><li><a href='https://www.farma.it/igiene-e-benessere/orecchie.html'>Orecchie</a></li><li><a href='https://www.farma.it/igiene-e-benessere/igiene-orale-0.html'>Igiene Orale</a></li><li><a href='https://www.farma.it/igiene-e-benessere/amplificatori-acustici.html'>Amplificatori acustici</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/bellezza-e-cosmetica.html'>Bellezza e Cosmetica</a><ul><li><a href='https://www.farma.it/bellezza-e-cosmetica/corpo.html'>Corpo</a></li><li><a href='https://www.farma.it/bellezza-e-cosmetica/viso.html'>Viso</a></li><li><a href='https://www.farma.it/bellezza-e-cosmetica/piedi.html'>Piedi</a></li><li><a href='https://www.farma.it/bellezza-e-cosmetica/mani.html'>Mani</a></li><li><a href='https://www.farma.it/bellezza-e-cosmetica/capelli-0.html'>Capelli</a></li><li><a href='https://www.farma.it/bellezza-e-cosmetica/solari.html'>Solari</a></li><li><a href='https://www.farma.it/bellezza-e-cosmetica/trucco-e-make-up.html'>Trucco e Make-Up</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/salute-e-cura-della-persona.html'>Salute e Cura della Persona</a><ul><li><a href='https://www.farma.it/salute-e-cura-della-persona/prodotti-per-gli-occhi.html'>Prodotti per gli occhi</a></li><li><a href='https://www.farma.it/salute-e-cura-della-persona/ortopedia-e-comfort.html'>Ortopedia e Comfort</a></li><li><a href='https://www.farma.it/salute-e-cura-della-persona/medicazioni-e-disinfettanti.html'>Medicazioni e Disinfettanti</a></li><li><a href='https://www.farma.it/salute-e-cura-della-persona/diagnostici.html'>Diagnostici</a></li><li><a href='https://www.farma.it/salute-e-cura-della-persona/profilattici.html'>Profilattici</a></li><li><a href='https://www.farma.it/salute-e-cura-della-persona/decongestionanti-nasali-0.html'>Decongestionanti Nasali</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/mamme-e-bambini.html'>Mamme e Bambini</a><ul><li><a href='https://www.farma.it/mamme-e-bambini/igiene-del-bambino.html'>Igiene del Bambino</a></li><li><a href='https://www.farma.it/mamme-e-bambini/alimentazione-ed-integrazione.html'>Alimentazione ed Integrazione</a></li><li><a href='https://www.farma.it/mamme-e-bambini/accessori.html'>Accessori</a></li><li><a href='https://www.farma.it/mamme-e-bambini/alimentazione-del-bambino.html'>Alimentazione del bambino</a></li><li><a href='https://www.farma.it/mamme-e-bambini/giochi.html'>Giochi</a></li></ul><ul></ul></li><li><a href='https://www.farma.it/apparecchi-elettromedicali.html'>Apparecchi Elettromedicali</a><ul><li><a href='https://www.farma.it/apparecchi-elettromedicali/aerosol-0.html'>Aerosol e accessori</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/termometri.html'>Termometri</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/sfigmomanometri.html'>Sfigmomanometri</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/terapia-termica.html'>Terapia termica</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/fisioterapia-e-massaggi.html'>Fisioterapia e Massaggi</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/altri.html'>Altri</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/bilance.html'>Bilance</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/dispositivi-medicali.html'>Dispositivi Medicali</a></li><li><a href='https://www.farma.it/apparecchi-elettromedicali/aerosol-1.html'>Aerosol</a></li></ul></li><li><a href='https://www.farma.it/dermocosmetica'>Dermocosmetica</a></li><li><a href='https://www.farma.it/gastro-intestinale'>Benessere intestinale</a></li></nav>
2380
2381<div x-data="initMenuDesktop_6ac8c77d1c956()"
2382     x-defer="intersect"
2383     x-intersect.once="isActive = true; $watch('open', value => { fetchData() })"
2384     class="order-5 navigation first hidden lg:flex w-full main lg:mt-3"
2385     :class="{ 'z-20': open }"
2386>
2387    <!-- desktop -->
2388    <div x-ref="nav-desktop"
2389         @load.window="setActiveMenu($root)"
2390         class="hidden lg:block lg:relative lg:min-h-0 lg:w-auto">
2391        <nav class="w-full duration-150 ease-in-out transform flex justify-start w-auto min-h-0 transition-display my-2">
2392            <div class="mr-6 level-top nav-side">
2393                <span class="level-top py-3 md:py-0 w-full font-bold level-0 cursor-pointer flex items-center gap-2" @click="$dispatch('toggle-main-menu')">
2394                    <span class="bg-[#6328E035] rounded-full text-secondary p-1.5">
2395                        <svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewBox="0 0 24 17.44" width="12" height="12" role="img">
2396    <path fill="currentColor" d="M1.54 10.26a1.541 1.541 0 0 1 0-3.08h20.92a1.541 1.541 0 0 1 .08 3.08h-21ZM1.54 3.08a1.541 1.541 0 0 1 0-3.08h20.92a1.541 1.541 0 0 1 .08 3.08h-21ZM1.54 17.44a1.541 1.541 0 0 1 0-3.08h20.92a1.541 1.541 0 0 1 .08 3.08h-21Z"/>
2397<title>menu</title></svg>
2398                    </span>
2399                    <span class="my-auto">Categorie</span>
2400                </span>
2401            </div>
2402            <div class="nav-menu flex">
2403                
2404<div class="relative mx-2 level-0 level0 nav-1 first page-item level-top">
2405        <a href="https://www.farma.it/brands" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 ">                <span class="leading-none">Marchi</span>
2406    </a>
2407    </div>
2408
2409<div class="relative mx-2 level-0 level0 nav-2 custom-item level-top">
2410        <a href="/blog.html" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 ">                <span class="leading-none">I nostri consigli</span>
2411    </a>
2412    </div>
2413
2414<div class="relative mx-2 level-0 level0 nav-3 page-item level-top">
2415        <a href="https://www.farma.it/coupon-e-promo" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 ">                <span class="leading-none">Coupon</span>
2416    </a>
2417    </div>
2418
2419<div class="relative mx-2 level-0 level0 nav-4 custom-item level-top">
2420        <a href="/prodotti-in-offerta" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 text-red">                <span class="leading-none">In offerta</span>
2421    </a>
2422    </div>
2423
2424<div class="relative mx-2 level-0 level0 nav-5 custom-item level-top">
2425        <a href="/faq" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 ">                <span class="leading-none">Serve Aiuto?</span>
2426    </a>
2427    </div>
2428
2429<div class="relative mx-2 level-0 level0 nav-6 custom-item level-top">
2430        <a href="/sales/guest/form" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 hidden lg:inline">                <span class="leading-none">Informazioni sul tuo ordine</span>
2431    </a>
2432    </div>
2433
2434<div class="relative mx-2 level-0 level0 nav-7 custom-item level-top">
2435        <a href="/farma-it-podcast" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 ">                    
2436<span class="menu-icon flex gap-2 items-center relative">
2437    <?xml version="1.0" encoding="UTF-8"?>
2438<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" stroke-width="1.5" viewBox="0 0 24 24" fill="none" color="#000000" class="fill-primary"><path d="M12 11V14" stroke="#000000" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M12 18.01L12.01 17.9989" stroke="#000000" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M2 20V9C2 7.89543 2.89543 7 4 7H20C21.1046 7 22 7.89543 22 9V20C22 21.1046 21.1046 22 20 22H4C2.89543 22 2 21.1046 2 20Z" stroke="#000000" stroke-width="1.5"/><path d="M8.5 2.5L12 6L15.5 2.5" stroke="#000000" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
2439                <span class="leading-none">Podcast</span>
2440    </a>
2441    </div>
2442
2443<div class="relative mx-2 level-0 level0 nav-8 last custom-item level-top">
2444        <a href="/app" class="py-3 md:py-0 flex w-full text-base md:text-sm md:inline hover:underline level-0 text-secondary font-medium">                <span class="leading-none">Scarica l&#039;App!</span>
2445    </a>
2446    </div>
2447            </div>
2448        </nav>
2449    </div>
2450    <template x-if="isActive">
2451        <section x-cloak id="main-menu_6ac8c77d1c956"
2452             @toggle-main-menu.window="open = !open"
2453             @keydown.window.escape="open=false"
2454    >
2455        <div role="dialog"
2456             x-ref="dialog"
2457             aria-label="Menu"
2458             aria-labelledby="menu-drawer-title"
2459             aria-modal="true"
2460             class="fixed inset-y-0 left-0 z-30 flex">
2461            <div class="relative z-20 w-screen"
2462                 x-ref="dialogContainer"
2463                 x-show="open"
2464                 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
2465                 x-transition:enter-start="-translate-x-full"
2466                 x-transition:enter-end="translate-x-0"
2467                 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
2468                 x-transition:leave-start="translate-x-0"
2469                 x-transition:leave-end="-translate-x-full"
2470            >
2471                <div class="flex flex-col h-full pb-6 bg-container-gray shadow-inner">
2472                    <template x-if="isLoading && $store.externalScriptsInit">
2473    <div class="absolute bg-white/60 z-10 h-full w-full flex items-center justify-center">
2474        <div class="flex items-center">
2475            <!-- loading icon -->
2476            <svg class="animate-spin h-5 w-5 text-gray-600" xmlns="http://www.w3.org/2000/svg" fill="none"
2477                 viewBox="0 0 24 24">
2478                <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
2479                <path class="opacity-75" fill="currentColor"
2480                      d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">
2481                </path>
2482            </svg>
2483            <!-- end loading icon -->
2484        </div>
2485    </div>
2486</template>
2487                    <div x-ref="dialogContent" class="h-full overflow-y-auto scrollbar scrollbar-thin scrollbar-track-transparent scrollbar-thumb-gray-3 w-full">
2488                        <template x-cloak x-for="(item, index) in menuData" :key="index">
2489                            <div class="level-1" :class="item.classes" @click="onMouseEnter(item, null, true)">
2490                                <div class="block px-6 w-full py-3 text-base hover:text-secondary hover:bg-tertiary-darker/10 hover:fill-primary font-bold cursor-pointer"
2491                                   :class="[ item.classes? item.classes.join(' '): '', isPanelActive(item.id)? 'fill-primary bg-tertiary-darker/10' : '']"
2492                                   :style="{ color: item.color }"
2493                                >
2494                                    <div class="ml-auto w-full max-w-[246px] flex items-center">
2495                                        <template x-if="item.icon">
2496                                            <template x-if="item.icon_content">
2497                                                <span x-html="item.icon_content" class='menu-icon mr-2.5 inline-block'></span>
2498                                            </template>
2499                                            <template x-if="!item.icon_content">
2500                                                <span x-show="item.icon" class='menu-icon mr-2.5 inline-block'><img x-bind:src="item.icon" x-bind:alt="item.label" /></span>
2501                                            </template>
2502                                        </template>
2503                                        <span x-text="item.label"></span>
2504                                        <template x-if="hasSubmenu(item)">
2505                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12.24 24" class="ml-auto" width="12" height="12" role="img">
2506    <path d="M1.08 23.87C.43 23.61.01 22.99 0 22.29c0-.46.18-.89.51-1.21l7.62-7.52c.86-.85.87-2.23.03-3.09l-.03-.03L.52 2.93C-.15 2.27-.16 1.2.5.53L.52.51C1.2-.17 2.29-.17 2.97.5l7.6 7.51c2.2 2.17 2.23 5.7.06 7.91l-.06.06-7.61 7.52a1.766 1.766 0 0 1-1.89.37Z" style="fill:currentColor"/>
2507<title>arrow-right</title></svg>
2508                                        </template>
2509                                    </div>
2510                                </div>
2511                                <template x-if="hasSubmenu(item)">
2512                                    <template x-teleport="#main-menu-second-level_6ac8c77d1c956" x-data="{ submenu: item.submenu, item: item}">
2513                                        <div class="absolute top-0 left-0 h-[calc(100vh-100px)] z-10 px-6 py-2 pb-16 bg-white shadow-lg level1"
2514                                             x-init="$watch('open',(value, oldValue) => { !value && clearPanelActiveId() })"
2515                                             :class="[ open? 'grid' : 'hidden', (submenu.l || submenu.r)? 'w-11/12 xl:w-4/5 2xl:w-8/12 grid-cols-5' : ((submenu.children && submenu.children.length > 1)? 'grid-cols-2 max-w-full' : 'min-w-[320px]') ]"
2516                                             x-show="isPanelActive(item.id)"
2517                                             x-transition:enter="transform transition ease-in-out duration-300"
2518                                             x-transition:enter-start="-translate-x-full"
2519                                             x-transition:enter-end="translate-x-0"
2520                                             x-transition:leave="transform transition ease-in-out duration-300"
2521                                             x-transition:leave-start="translate-x-0"
2522                                             x-transition:leave-end="-translate-x-full"
2523                                        >
2524                                            <template x-if="submenu.t">
2525                                                <div class="top_block column">
2526                                                    <div class="column-content" x-html="submenu.t"></div>
2527                                                </div>
2528                                            </template>
2529                                            <template x-if="submenu.l">
2530                                                <div class="left_block column">
2531                                                    <div class="column-content" x-html="submenu.l"></div>
2532                                                </div>
2533                                            </template>
2534
2535                                            <template x-if="submenu.children" x-data="{ children: submenu.children }">
2536                                                <div class="column main-column pb-16 pt-0.5 h-full overflow-y-auto scrollbar scrollbar-thin scrollbar-track-transparent scrollbar-thumb-gray-3"
2537                                                     :class="{ 'col
2537-span-3 flex gap-2': ((!submenu.r && submenu.l) || (!submenu.l && submenu.r)) || (submenu.children && submenu.children.length > 1) }"
2538                                                >
2539                                                    <template x-for="(column,y) in children" :key="y">
2540                                                        <div :class="{ 'w-[210px] xl:w-[240px]' : y != children.length - 1, 'w-[210px] xl:w-[317px]': y == children.length - 1 }">
2541                                                            <template x-if="item.label && y == 0">
2542                                                                <div class="flex justify-between gap-3">
2543                                                                    <span class="font-bold text-primary mb-3 block" x-text="item.label"></span>
2544                                                                    <a x-bind:href="item.link" class="hover:underline text-sm text-secondary flex items-center gap-1 -top-1.5 relative">
2545                                                                        <span class="leading-none">Vedi tutti</span>
2546                                                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
2547  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
2548<title>chevron-right</title></svg>
2549                                                                    </a>
2550                                                                </div>
2551                                                            </template>
2552                                                            <template x-if="column.label && y != 0">
2553                                                                <span class="font-bold text-primary mb-3 block" x-text="column.label"></span>
2554                                                            </template>
2555                                                            <template x-if="column.html">
2556                                                                <div x-html="column.html"></div>
2557                                                            </template>
2558                                                            <template x-if="!column.html">
2559                                                                <template x-for="(child, i) in column" :key="i">
2560                                                                    <div class="relative block w-full">
2561                                                                        <template x-if="child.type == 'header'">
2562                                                                            <div class="font-bold text-primary mb-3 block" x-text="child.label"></div>
2563                                                                        </template>
2564                                                                        <template x-if="child.type != 'header'">
2565                                                                            <template x-if="child.type != 'custom_list'">
2566                                                                                <div class="relative block w-full py-0.5 my-0.5" :class="child.classes">
2567                                                                                    <template x-if="child.html">
2568                                                                                        <div x-html="child.html"></div>
2569                                                                                    </template>
2570                                                                                    <template x-if="!child.html && child.type != 'custom_list'">
2571                                                                                        <a x-bind:href="child.link" class="hover:underline text-sm">
2572                                                                                            <span x-text="child.label"></span>
2573                                                                                        </a>
2574                                                                                    </template>
2575                                                                                </div>
2576                                                                            </template>
2577                                                                            <template x-if="child.type == 'custom_list'">
2578                                                                                <div class="brand-list">
2579                                                                                    <sp
2579an class="font-bold text-primary mb-4 block" x-text="child.label"></span>
2580                                                                                    <template x-for="(brand, i) in child.children" :key="i">
2581                                                                                        <div class="relative block w-full py-0.5 mt-0.5 brand-item">
2582                                                                                            <a x-bind:href="brand.link" class="hover:underline">
2583                                                                                                <span x-text="brand.label"></span>
2584                                                                                            </a>
2585                                                                                        </div>
2586                                                                                    </template>
2587                                                                                </div>
2588                                                                            </template>
2589                                                                        </template>
2590                                                                    </div>
2591                                                                </template>
2592                                                            </template>
2593                                                        </div>
2594                                                    </template>
2595                                                </div>
2596                                            </template>
2597
2598                                            <template x-if="submenu.r">
2599                                                <div class="right_block column -my-2 -mr-5 overflow-auto h-[calc(100vh-100px)] scrollbar scrollbar-thin scrollbar-track-transparent scrollbar-thumb-gray-3"
2600                                                     x-show="isPanelActive(item.id)"
2601                                                     :class="(submenu.children && submenu.children.length < 1)? 'col-span-3' : 'col-span-2'"
2602                                                     x-transition:enter="ease-in-out duration-700"
2603                                                     x-transition:enter-start="opacity-0"
2604                                                     x-transition:enter-end="opacity-100"
2605                                                     x-transition:leave="ease-in-out duration-100"
2606                                                     x-transition:leave-start="opacity-100"
2607                                                     x-transition:leave-end="opacity-0"
2608                                                >
2609                                                    <div class="column-content" x-html="submenu.r"></div>
2610                                                </div>
2611
2612
2613                                            </template>
2614                                            <template x-if="submenu.b">
2615                                                <div class="bottom_block column">
2616                                                    <div class="column-content" x-html="submenu.b"></div>
2617                                                </div>
2618                                            </template>
2619                                        </div>
2620                                    </template>
2621                                </template>
2622                            </div>
2623                        </template>
2624                    </div>
2625                </div>
2626            </div>
2627            <div id="main-menu-second-level_6ac8c77d1c956" class="relative z-10 w-screen h-[calc(100vh-100px)]"
2628                 x-show="open">
2629                <div class="backdrop"
2630                     x-ref="backdrop"
2631                     x-show="open"
2632                     x-transition:enter="ease-in-out duration-500"
2633                     x-transition:enter-start="opacity-0"
2634                     x-transition:enter-end="opacity-100"
2635                     x-transition:leave="ease-in-out duration-500"
2636                     x-transition:leave-start="opacity-100"
2637                     x-transition:leave-end="opacity-0"
2638                     @click="open=false"
2639                     aria-label="Close panel"></div>
2640            </div>
2641        </div>
2642    </section>
2643    </template>
2644</div>
2645
2646<script>
2647    'use strict';
2648
2649    const initMenuDesktop_6ac8c77d1c956 = () => {
2650        return {
2651            isActive: false,
2652            open: false,
2653            hoverPanelActiveId: [],
2654            menuData: null,
2655            isLoading: false,
2656            currentUrl: window.location.href.split('?')[0],
2657            panelLevel: 0,
2658            isPanelActive(id){
2659                return this.hoverPanelActiveId.includes(id);
2660            },
2661            setPanelActiveId(id, replace = false){
2662                if(replace){
2663                    this.clearPanelActiveId();
2664                }
2665                if(!this.isPanelActive(id))
2666                    this.hoverPanelActiveId.push(id);
2667            },
2668            removePanelActiveId(id){
2669                let i = this.hoverPanelActiveId.indexOf(id);
2670                if(i >= 0)
2671                    this.hoverPanelActiveId.splice(i, 1);
2672            },
2673            clearPanelActiveId(){
2674                this.hoverPanelActiveId =[];
2675            },
2676            onMouseEnter(item, id = null, clear = false){
2677                if(this.hasSubmenu(item)){
2678                    this.setPanelActiveId(id? id : item.id, clear);
2679                }else{
2680                    this.clearPanelActiveId();
2681                }
2682            },
2683            hasSubmenu(item){
2684                return item.submenu;
2685            },
2686            setActiveMenu(menuNode) {
2687                return; // ignoriamo questa funzionalità per questo progetto
2688                Array.from(menuNode.querySelectorAll('a')).filter(link => {
2689                    return (link.href) && link.href === this.currentUrl;
2690                }).map(item => {
2691                    item.classList.add('underline');
2692                    item.closest('div.level1') &&
2693                    item.closest('div.level1').querySelector('a').classList.add('underline');
2694                });
2695            },
2696            dispatchMessage(type, message, timeout) {
2697                typeof window.dispatchMessages && window.dispatchMessages(
2698                    [{
2699                        type: type,
2700                        text: message,
2701                    }],
2702                    timeout
2703                );
2704            },
2705            setMenuStyles () {
2706                let header = document.querySelector('#header .content');
2707                let headerContent = header.querySelector('.container');
2708                let headerContentStyle = window.getComputedStyle(headerContent);
2709
2710                const topDialog = (header.offsetHeight + header.getBoundingClientRect().top) + 'px';
2711                this.$refs.dialog.style.top = topDialog;
2712                this.$refs.backdrop.style.top = topDialog;
2713                this.$refs.dialogContainer.style.width =
2714                    (parseInt(headerContentStyle.marginLeft) + parseInt(headerContentStyle.paddingLeft) + 282) + 'px';
2715            },
2716            fetchData(){
2717                // Calculate offset top
2718                this.setMenuStyles();
2719                // Fetch data
2720                this.$dispatch('screen-lock',this.open);
2721                if(!this.menuData && this.open){
2722                    this.isLoading = true;
2723                    fetch(
2724                        'https://www.farma.it/megamenu/get/json/id/1/limit/0/level/1/?1791543165',
2725                        {
2726                            headers: {contentType: 'application/json'},
2727                        }
2728                    ).then(response => {
2729                        if (response.ok) {
2730                            return response.json();
2731                        } else {
2732                            this.dispatchMessage('error', response.statusText);
2733                            console.warn("GET request failed", response);
2734                        }
2735                    })
2736                    .then(data => {
2737                        this.menuData = data;
2738                        this.isLoading = false;
2739                        this.$nextTick(() => {
2740                            this.setActiveMenu(document.getElementById('main-menu-second-level_6ac8c77d1c956'));
2741                        });
2742                    });
2743                }
2744            }
2745        }
2746    }
2747</script>
2747
2748
2749            <!-- Search -->
2750            <div class="order-4 lg:order-3 w-full lg:w-auto lg:flex-1"
2751                 :class="searchOpened ? 'z-40': ''"
2752                 id="search-content"
2753            >
2754                    <div class="mx-auto my-3 lg:my-0 search-container">
2755        <div class="supercontainer">
2756            <div id="algoliaAutocomplete" class="block block-search algolia-search-block algolia-search-input container py-2 mx-auto text-black hidden" ></div>
2757            <div id="panelContainer" class="relative" x-data="initAutocompleteInsight"></div>
2758            <div id="menu-open-search" class="control relative lg:mx-10" >
2759                <label for="search" class="block relative cursor-text">
2760                    <div class="input-search form-input pl-[38px] py-2 h-[36px] flex items-center" aria-hidden="true">
2761                        <span>Cerca all’interno della farmacia</span>
2762                    </div>
2763                    <div class="absolute top-0 left-0 py-2.5 lg:py-3 px-4 h-[42px] lg:h-[46px] pointer-events-none">
2764                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14" role="img">
2765    <path d="M22.79 24c-.32 0-.63-.12-.86-.35l-6.05-6.04v-1.14l-.68-.7-.22.19a9.1 9.1 0 0 1-7.46 2.06 9.128 9.128 0 0 1-7.45-7.8 8.98 8.98 0 0 1 2.2-7.15A9.095 9.095 0 0 1 9.08 0c.38 0 .77.02 1.15.07 4.96.62 8.48 5.15 7.86 10.12a9.046 9.046 0 0 1-2.12 4.78l-.19.22.7.68h1.14l6.03 6.06a1.213 1.213 0 0 1-.86 2.07ZM9.08 2.27c-3.76 0-6.8 3.04-6.8 6.8s3.04 6.8 6.8 6.8 6.8-3.04 6.8-6.8c0-3.75-3.05-6.79-6.8-6.8Z" style="fill:currentColor"/>
2766<title>search</title></svg>
2767                    </div>
2768                </label>
2769            </div>
2770
2771            <!-- Close button (left arrow on mobile, X on desktop) -->
2772            <button id="close-instant-search"
2773                    type="button"
2774                    class="instant-search-close"
2775                    aria-label="Close search"
2776                    title="Close search">
2777                <span class="icon-x"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16" role="img">
2778    <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"/>
2779<title>x</title></svg>
2780</span>
2781                <span class="icon-arrow">
2782                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 20.57" width="12" height="12">
2783                        <path d="M22.29 8.58H5.14l5.64-5.64c.65-.69.62-1.78-.07-2.43-.66-.62-1.68-.62-2.35 0L1.01 7.88C.37 8.52 0 9.39 0 10.29c0 .9.37 1.76 1.01 2.4l7.35 7.38c.68.66 1.77.64 2.43-.05.64-.67.64-1.73 0-2.39L5.15 12h17.14c.95-.02 1.7-.81 1.67-1.76-.02-.92-.76-1.65-1.67-1.67Z" style="fill:currentColor"/>
2784                    </svg>
2785                </span>
2786            </button>
2787
2788            <!-- Reset button (clears input) shown on mobile -->
2789            <button id="reset-instant-search"
2790                    class="reset-instant-search"
2791                    aria-label="Clear search"
2792                    title="Clear search">
2793                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12" role="img">
2794    <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"/>
2795<title>x</title></svg>
2796            </button>
2797
2798            <div id="menu-search-icon" class="control relative">
2799                <input id="search"
2800                       x-ref="searchInput"
2801                       type="search"
2802                       enterkeyhint="search"
2803                       inputmode="search"
2804                       autocomplete="off"
2805                       name="q"
2806                       placeholder="Cerca&#x20;all&#x2019;interno&#x20;della&#x20;farmacia"
2807                       maxlength="128"
2808                       class="input-search form-input pl-[45px] lg:pl-[38px] py-2 h-[53px]"
2809                />
2810                <div class="hidden lg:block absolute top-[9px] left-0 py-2.5 px-4 h-[42px] lg:h-[46px]">
2811                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14" role="img">
2812    <path d="M22.79 24c-.32 0-.63-.12-.86-.35l-6.05-6.04v-1.14l-.68-.7-.22.19a9.1 9.1 0 0 1-7.46 2.06 9.128 9.128 0 0 1-7.45-7.8 8.98 8.98 0 0 1 2.2-7.15A9.095 9.095 0 0 1 9.08 0c.38 0 .77.02 1.15.07 4.96.62 8.48 5.15 7.86 10.12a9.046 9.046 0 0 1-2.12 4.78l-.19.22.7.68h1.14l6.03 6.06a1.213 1.213 0 0 1-.86 2.07ZM9.08 2.27c-3.76 0-6.8 3.04-6.8 6.8s3.04 6.8 6.8 6.8 6.8-3.04 6.8-6.8c0-3.75-3.05-6.79-6.8-6.8Z" style="fill:currentColor"/>
2813<title>search</title></svg>
2814                </div>
2815            </div>
2816            <div id="view-all-products" class="lg:hidden border-t">
2817                <button class="btn btn-primary view-all-button-algolia" onclick="try{document.querySelector('#autocomplete-products-footer a')?.click();}catch(e){};var p=document.getElementById('view-all-products');if(p){p.classList.add('hidden');}">
2818                    Vedi tutti i <span id="aa-count-mobile" class="mx-1"></span> prodotti
2819                </button>
2820            </div>
2821        </div>
2822    </div>
2823
2824    
2824<script>
2825        'use strict';
2826
2827        function initAutocompleteInsight() {
2828            return {
2829                bindClickEvent(element, eventName, objectID, indexName, position, queryId) {
2830                    try {
2831                        element.querySelector('.algoliasearch-autocomplete-hit')?.addEventListener("click", function () {
2832                            buildInsightsEventData(eventName, objectID, indexName, position, queryId);
2833                        });
2834                    } catch (e) {}
2835                }
2836            }
2837        }
2838
2839        document.addEventListener('DOMContentLoaded', function() {
2840            const searchEl = document.getElementById('search');
2841            if (!searchEl) return;
2842
2843            // delegate Enter/mobile submit logic to autocomplete.js bindings
2844            searchEl.addEventListener('click', function () {
2845                setTimeout(function () {
2846                    // After aa-Input is available, keep it in sync with #search value
2847                    function syncAaInput() {
2848                        const currentAaInput = document.querySelector('.aa-Input');
2849                        if (!currentAaInput || !('value' in currentAaInput)) return;
2850                        const newVal = searchEl.value ?? '';
2851                        if (currentAaInput.value !== newVal) {
2852                            currentAaInput.value = newVal;
2853                            // Notify Algolia/autocomplete about the programmatic change
2854                            currentAaInput.dispatchEvent(new Event('input', { bubbles: true }));
2855                            currentAaInput.dispatchEvent(new Event('change', { bubbles: true }));
2856                        }
2857                    }
2858
2859                    // Initial sync once available
2860                    syncAaInput();
2861                    // Keep syncing as the user types or changes the field
2862                    searchEl.addEventListener('input', syncAaInput);
2863                    searchEl.addEventListener('change', syncAaInput);
2864                }, 100);
2865            });
2866        });
2867    </script>
2867
2868    
2868<script>
2869        // Immediately apply open classes and show backdrop on click of #menu-open-search
2870        document.addEventListener('DOMContentLoaded', function() {
2871            var openTrigger = document.getElementById('menu-open-search');
2872            if (openTrigger) {
2873                openTrigger.addEventListener('click', function () {
2874                    try {
2875                        var panelContainer = document.getElementById('panelContainer');
2876                        var searchWrapper = document.getElementById('menu-search-icon');
2877                        var searchContainer = document.querySelector('.search-container');
2878                        var aaPanel = document.querySelector('.aa-Panel');
2879                        var bodyEl = document.body;
2880
2881                        if (panelContainer) panelContainer.classList.add('is-open');
2882                        if (searchWrapper) searchWrapper.classList.add('is-open');
2883                        if (searchContainer) searchContainer.classList.add('is-open');
2884                        if (aaPanel) aaPanel.classList.add('is-open');
2885                        if (bodyEl) bodyEl.classList.add('max-h-screen', 'lock-screen', 'overflow-hidden', 'instant-lock');
2886
2887                        // Pz8 per evitare flickering della ricerca
2888                        (function triggerSearchClicksOnce(el) {
2889                            if (!el) return;
2890
2891                            if (window.__algoliaSearchClicksTriggered) return;
2892                            window.__algoliaSearchClicksTriggered = true;
2893                            for (let i = 0; i < 100; i++) {
2894                                setTimeout(function () {
2895                                    let panel = document.querySelector('.aa-PanelLayout');
2896                                    if (panel) {
2897                                        i = 100;
2898                                        return;
2899                                    }
2900                                    if (window.__algoliaSearchClicksTriggered) {
2901                                        el.click();
2902                                    }
2903
2904                                }, i * 5);
2905                            }
2906                        })(document.getElementById('search'));
2907                    } catch (e) {
2908                        // swallow errors
2909                    }
2910                });
2911            }
2912
2913        });
2914    </script>
2914
2915    
2915<script>
2916        // Toggle 'is-empty' on .search-container only on 'change' when input remains empty and there are results
2917        document.addEventListener('DOMContentLoaded', function() {
2918            var searchContainer = document.querySelector('.search-container');
2919            if (!searchContainer) return;
2920
2921            function handleChange(e) {
2922                try {
2923                    var val = (e && e.target && typeof e.target.value === 'string') ? e.target.value.trim() : '';
2924                    if (val === '' && searchContainer.classList.contains('has-results')) {
2925                        searchContainer.classList.add('is-empty');
2926                    } else {
2927                        searchContainer.classList.remove('is-empty');
2928                    }
2929                } catch (err) {
2930                    // no-op
2931                }
2932            }
2933
2934            // Native search input
2935            var nativeInput = document.getElementById('search');
2936            if (nativeInput) {
2937                nativeInput.addEventListener('change', handleChange, { passive: true });
2938            }
2939
2940            // Algolia injected input may appear later; observe and bind once when present
2941            var aaBound = false;
2942            var tryBindAa = function() {
2943                if (aaBound) return;
2944                var aaInput = document.querySelector('.aa-Input');
2945                if (aaInput) {
2946                    aaInput.addEventListener('change', handleChange, { passive: true });
2947                    aaBound = true;
2948                }
2949            };
2950            // Try now and a little later in case of async initialization
2951            tryBindAa();
2952            var aaInterval = setInterval(function(){
2953                if (aaBound) { clearInterval(aaInterval); return; }
2954                tryBindAa();
2955            }, 200);
2956            setTimeout(function(){ clearInterval(aaInterval); }, 6000);
2957        });
2958    </script>
2958
2959            </div>
2960
2961            <!-- Buttons -->
2962            <div class="flex items-center gap-4 lg:gap-8 order-3 ml-3 lg:ml-0 lg:order-4">
2963                <!-- Static Block -->
2964                <div class="hidden lg:block">
2965                    <div data-content-type="html" data-appearance="default" data-intersect="false" data-element="main" data-decoded="true"><a class="flex items-center gap-2 hover:underline" href="/richiamami">
2966    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="20" height="20" role="img">
2967    <path d="M12.98 1c0-.55.45-1 1-1C19.51 0 23.99 4.49 24 10.02c0 .55-.45 1-1 1s-1-.45-1-1c0-4.43-3.59-8.01-8.02-8.02-.55 0-1-.45-1-1Zm1 5.01a4.01 4.01 0 0 1 4.01 4.01c0 .55.45 1 1 1s1-.45 1-1c0-3.32-2.69-6.01-6.01-6.01-.55 0-1 .45-1 1s.45 1 1 1Zm9.11 10.76a3.108 3.108 0 0 1 0 4.39l-.91 1.05C13.98 30.06-5.99 10.1 1.75 1.87l1.15-1a3.081 3.081 0 0 1 4.33.04c.03.03 1.89 2.44 1.89 2.44a3.118 3.118 0 0 1 0 4.29L7.96 9.1a12.83 12.83 0 0 0 6.94 6.96l1.47-1.17a3.099 3.099 0 0 1 4.29 0s2.41 1.86 2.44 1.89Zm-1.38 1.46s-2.4-1.84-2.43-1.88c-.43-.43-1.12-.43-1.55 0-.03.03-2.05 1.64-2.05 1.64-.28.22-.65.28-.98.15a15.02 15.02 0 0 1-8.83-8.82 1 1 0 0 1 .14-1S7.62 6.3 7.65 6.27c.43-.43.43-1.12 0-1.55-.03-.03-1.88-2.43-1.88-2.43-.43-.39-1.1-.38-1.52.04l-1.15 1c-5.65 6.8 11.65 23.14 17.6 17.51l.91-1.05c.44-.41.48-1.1.08-1.56Z" style="fill:currentColor"></path>
2968<title>heroicons/outline/phone</title></svg>
2969
2970    <div class="text-xs font-medium">Richiamami</div>
2971    </a></div>                </div>
2972
2973                <!-- Customer Icon & Dropdown -->
2974                <!-- BLOCK header.customer -->
2975<div x-data="initHeaderCustomerMenu()" @private-content-loaded.window="getData(event.detail.data)">
2976
2977    <template x-if="isLoggedIn()">
2978        <a
2979                href="https&#x3A;&#x2F;&#x2F;www.farma.it&#x2F;customer&#x2F;account&#x2F;"
2980                id="customer-menu"
2981                class="flex items-center gap-2 hover:underline"
2982                aria-label="Il&#x20;mio&#x20;Account"
2983        >
2984        <span class="relative block">
2985            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
2986    <path d="M4.07 21c-.07-.05-.13-.1-.19-.17C-1 16.35-1.32 8.76 3.16 3.87c4.48-4.88 12.07-5.2 16.95-.72 4.88 4.48 5.21 12.07.73 16.96-.23.25-.47.49-.73.73-.05.06-.12.12-.19.17-4.53 4-11.32 4-15.85 0ZM12 22.15c2.25 0 4.44-.75 6.22-2.13a7.354 7.354 0 0 0-6.14-3.4h-.16c-2.49.02-4.8 1.3-6.14 3.4 1.78 1.39 3.97 2.14 6.22 2.13Zm4.83-6.02c1.09.67 2.03 1.56 2.76 2.61 3.73-4.19 3.35-10.61-.84-14.33C14.56.68 8.14 1.06 4.42 5.25 1 9.1 1 14.9 4.42 18.74a9.2 9.2 0 0 1 4.16-3.31 5.546 5.546 0 0 1-.93-7.78 5.546 5.546 0 0 1 7.78-.93 5.546 5.546 0 0 1 0 8.71c.49.19.96.43 1.4.7Zm-8.52-5.06c0 2.01 1.61 3.65 3.62 3.69h.15A3.694 3.694 0 0 0 15.7 11a3.694 3.694 0 0 0-3.76-3.62 3.692 3.692 0 0 0-3.62 3.69Z" style="fill:currentColor"/>
2987</svg>
2988            <span x-text="customer.firstname.charAt(0)"
2989                  class="lg:hidden absolute h-3 w-3 bg-white leading-none top-[-3px] left-3 text-xxs font-bold text-center text-sale rounded-full"
2990            >0</span>
2991        </span>
2992            <span class="label hidden lg:block text-xs truncate text-center w-full leading-none font-medium">
2993                <span>Ciao, </span>
2994                <span x-text="customer.firstname"></span>
2995            </span>
2996        </a>
2997    </template>
2998
2999    <template x-if="!isLoggedIn()">
3000        <span>
3001            <a
3002                    href="https&#x3A;&#x2F;&#x2F;www.farma.it&#x2F;customer&#x2F;account&#x2F;"
3003                    id="customer-menu"
3004                    class="flex items-center gap-2 hover:underline"
3005                    aria-label="Il&#x20;mio&#x20;Account"
3006            >
3007                <span class="relative block">
3008                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
3009    <path d="M4.07 21c-.07-.05-.13-.1-.19-.17C-1 16.35-1.32 8.76 3.16 3.87c4.48-4.88 12.07-5.2 16.95-.72 4.88 4.48 5.21 12.07.73 16.96-.23.25-.47.49-.73.73-.05.06-.12.12-.19.17-4.53 4-11.32 4-15.85 0ZM12 22.15c2.25 0 4.44-.75 6.22-2.13a7.354 7.354 0 0 0-6.14-3.4h-.16c-2.49.02-4.8 1.3-6.14 3.4 1.78 1.39 3.97 2.14 6.22 2.13Zm4.83-6.02c1.09.67 2.03 1.56 2.76 2.61 3.73-4.19 3.35-10.61-.84-14.33C14.56.68 8.14 1.06 4.42 5.25 1 9.1 1 14.9 4.42 18.74a9.2 9.2 0 0 1 4.16-3.31 5.546 5.546 0 0 1-.93-7.78 5.546 5.546 0 0 1 7.78-.93 5.546 5.546 0 0 1 0 8.71c.49.19.96.43 1.4.7Zm-8.52-5.06c0 2.01 1.61 3.65 3.62 3.69h.15A3.694 3.694 0 0 0 15.7 11a3.694 3.694 0 0 0-3.76-3.62 3.692 3.692 0 0 0-3.62 3.69Z" style="fill:currentColor"/>
3010</svg>
3011                </span>
3012                <span class="label hidden lg:block text-xs truncate text-center w-full leading-none font-medium">
3013                    <span>Accedi&#x20;&#x2F;&#x20;Registrati</span>
3014                </span>
3015            </a>
3016        </span>
3017    </template>
3018</div>
3019<script>
3020    function initHeaderCustomerMenu() {
3021        return {
3022            open: false,
3023            customer: {},
3024            getData(data) {
3025                if (data.customer) { this.customer = data.customer }
3026            },
3027            isLoggedIn(){
3028                return !!(this.customer.firstname);
3029            }
3030        }
3031    }
3032</script>
3032
3033<!-- /BLOCK header.customer -->
3034                <!-- Wishlist Icon -->
3035                
3036<a
3037    href="https://www.farma.it/wishlist/"
3038    class="relative hidden md:inline-flex btn bg-transparent border-transparent p-1"
3039    x-data="initWishlistHeader"
3040    @private-content-loaded.window="receiveWishlistData"
3041    aria-label="La&#x20;mia&#x20;lista&#x20;desideri"
3042    :aria-label="linkAriaLabel"
3043>
3044    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true"><path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"/></svg>
3045    <template x-if="itemCount">
3046        <span
3047            x-text="itemCount"
3048            class="absolute -top-1.5 -right-1.5 px-2 py-1 rounded-full bg-primary text-on-primary text-xs
3049                font-semibold leading-none text-center uppercase tabular-nums"
3050            aria-hidden="true"
3051        ></span>
3052    </template>
3053</a>
3054
3055<script>
3056    function initWishlistHeader() {
3057        return {
3058            wishlistProducts: null,
3059            itemCount: 0,
3060            linkAriaLabel() {
3061                const countLabel = this.itemCount > 1
3062                    ? hyva.str('\u00251\u0020elementi', this.itemCount)
3063                    : hyva.str('\u00251\u0020elemento', this.itemCount);
3064                return `Wishlist\u0020Products (${countLabel})`;
3065            },
3066            receiveWishlistData() {
3067                const data = this.$event.detail.data;
3068                this.itemCount = data.wishlist ? parseInt(data.wishlist.counter) : 0;
3069            }
3070        }
3071    }
3072
3073    window.addEventListener('alpine:init', () => {
3074        Alpine.data('initWishlistHeader', initWishlistHeader);
3075    }, { once: true })
3076</script>
3076
3077
3078                <!-- Cart Icon -->
3079                <a id="menu-cart-icon"
3080                   @click.prevent.stop="$dispatch('toggle-cart',{});"                   class="flex items-center gap-2 hover:underline"
3081                   href="https://www.farma.it/checkout/cart/index/"
3082                >
3083                    <span class="relative block">
3084                        <svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewBox="0 0 22.79 24" width="20" height="20" role="img">
3085    <path fill="currentColor" d="M6.98 24c-1.05 0-1.9-.86-1.89-1.91 0-1.05.86-1.9 1.91-1.89 1.05 0 1.89.85 1.89 1.9 0 1.05-.86 1.9-1.91 1.9ZM17.11 24c-1.05 0-1.9-.86-1.89-1.91 0-1.05.86-1.9 1.91-1.89 1.05 0 1.89.85 1.89 1.9 0 1.05-.86 1.9-1.91 1.9ZM19.14 18.95H8.56c-2.5 0-4.62-1.87-4.91-4.35L2.24 2.78c-.07-.57-.55-1-1.12-1H.89A.893.893 0 0 1-.05.94C-.08.45.3.03.79 0h.33c1.48 0 2.72 1.1 2.9 2.57l.05.46h6.95c.49-.02.9.37.92.86.02.49-.37.9-.86.92H4.27l.98 8.32h12.51c1.53 0 2.84-1.09 3.11-2.59l.13-.72a.9.9 0 0 1 .88-.73c.05 0 .11 0 .16.01.48.09.81.55.72 1.03l-.13.72a4.953 4.953 0 0 1-4.87 4.06H5.51l.06.16c.45 1.26 1.64 2.1 2.98 2.1h10.58c.49-.02.9.37.92.86.02.49-.37.9-.86.92h-.06Z"/>
3086<title>shopping-cart</title></svg>
3087                        <span x-text="getCartItemsCountLabel"
3088                              class="absolute top-[-6px] right-[1px] text-xxs font-bold text-center text-sale rounded-full"
3089                        >0</span>
3090                    </span>
3091                    <span class="header-subtotal label hidden lg:inline text-sm leading-none font-bold">0,00 €</span>
3092                </a>
3093            </div>
3094        </div>
3095    </div>
3096
3097    <!-- Cart Drawer -->
3098    
3098<script>
3099    function initCartDrawer() {
3100        return {
3101            open: false,
3102            isLoading: false,
3103            cart: {},
3104            maxItemsToDisplay: 10,
3105            itemsCount: 0,
3106            totalCartAmount: 0,
3107            headerSubtotal: null,
3108            headerSubtotalSelector: '.header-subtotal',
3109            groupedData: {},
3110
3111            itemsCountLabel(){
3112                return (this.itemsCount > 99)? '99+' : `${this.itemsCount}`;
3113            },
3114            isVisible(){
3115                return (this.open && this.itemsCount > 0)
3116            },
3117            getData(data) {
3118                if (data.cart) {
3119                    this.cart = data.cart;
3120                    this.itemsCount = data.cart.items && data.cart.items.length || 0;
3121                    this.totalCartAmount = this.cart.summary_count;
3122                    this.setCartItems();
3123                    this.initGroupedData()
3124                }
3125                this.isLoading = false;
3126            },
3127            cartItems: [],
3128            getItemCountTitle() {
3129                return hyva.strf('(%0 di %1)', this.maxItemsToDisplay, this.itemsCount)
3130            },
3131            getHeaderSubtotal() {
3132                if (!this.headerSubtotal) {
3133                    this.headerSubtotal = document.querySelector(this.headerSubtotalSelector);
3134                }
3135
3136                return this.headerSubtotal;
3137            },
3138            setCartItems() {
3139                this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || [];
3140
3141                if (this.maxItemsToDisplay > 0) {
3142                    this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10));
3143                }
3144
3145                try {
3146                    var subtotal = (this.cart?.subtotal_incl_tax_discounted) ? this.cart.subtotal_incl_tax_discounted : this.cart.subtotal;
3147                    if (subtotal) {
3148                        this.getHeaderSubtotal().innerHTML = subtotal;
3149                    }
3150                } catch (e) {}
3151            },
3152            initGroupedData() {
3153                let self = this;
3154                try {
3155                    Object.values(this.cart['fake_grouped_parents']).forEac
3155h(function (parent) {
3156                        let price = 0.0000,
3157                            productIds = parent.product_ids.split(','),
3158                            groupedId = parent['grouped_id'];
3159                        self.groupedData[groupedId] = {
3160                            'price': price,
3161                            'items': []
3162                        };
3163                        productIds.forEach(function (productId) {
3164                            let product = self.cart.items.find((item) => item.product_id == productId);
3165                            if (product) {
3166                                self.groupedData[groupedId]['items'].push({
3167                                    'name': product['product_name'],
3168                                    'qty': product['qty']
3169                                });
3170                                price += product['product_price_value'] * product['qty'];
3171                            }
3172                        })
3173                        self.groupedData[groupedId]['price'] = hyva.formatPrice(price, false);
3174                    })
3175                } catch (e) {}
3176                console.log(this.groupedData);
3177            },
3178            deleteItemFromCart(itemId) {
3179                this.isLoading = true;
3180
3181                const formKey = hyva.getFormKey();
3182                const postUrl = BASE_URL + 'checkout/sidebar/removeItem/';
3183
3184                fetch(postUrl, {
3185                    "headers": {
3186                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
3187                    },
3188                    "body": "form_key=" + formKey + "&item_id=" + itemId,
3189                    "method": "POST",
3190                    "mode": "cors",
3191                    "credentials": "include"
3192                }).then(response => {
3193                    if (response.redirected) {
3194                        window.location.href = response.url;
3195                    } else if (response.ok) {
3196                        return response.json();
3197                    } else {
3198                        window.dispatchMessages && window.dispatchMessages([{
3199                            type: 'warning',
3200                            text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.'
3201                        }]);
3202                        this.isLoading = false;
3203                    }
3204                }).then(result => {
3205                    window.dispatchMessages && window.dispatchMessages([{
3206                        type: result.success ? 'success' : 'error',
3207                        text: result.success
3208                            ? 'Hai\u0020rimosso\u0020il\u0020prodotto.'
3209                            : result.error_message
3210                    }], result.success ? 5000 : 0)
3211                    window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
3212                });
3213            },
3214            deleteGroupedFromCart(groupedId) {
3215                let deleteButton = document.querySelector('#cart-drawer [data-grouped-id="' + groupedId + '"] .delete');
3216                if (deleteButton) {
3217                    deleteButton.click();
3218                }
3219            },
3220            getGroupedPrice(groupedId) {
3221                return this.groupedData[groupedId]['price'];
3222            }
3223        }
3224    }
3225</script>
3225
3226<section id="cart-drawer"
3227         x-data="initCartDrawer()"
3228         x-init="$watch('isVisible', value => $dispatch('screen-lock', value))"
3229         @private-content-loaded.window="getData($event.detail.data)"
3230         @toggle-cart.window="if(itemsCount > 0){open=true}"
3231         @keydown.window.escape="open=false"
3232         @cart-loading-start.window="isLoading=true"
3233         @cart-loading-stop.window="isLoading=false"
3234>
3235    <template x-if="cart && cart.summary_count">
3236        <div role="dialog"
3237             aria-labelledby="cart-drawer-title"
3238             aria-modal="true"
3239             @click.outside="open=false"
3240             class="fixed inset-y-0 right-0 z-30 flex max-w-full">
3241            <div class="backdrop"
3242                 x-show="open"
3243                 x-transition:enter="ease-in-out duration-500"
3244                 x-transition:enter-start="opacity-0"
3245                 x-transition:enter-end="opacity-100"
3246                 x-transition:leave="ease-in-out duration-500"
3247                 x-transition:leave-start="opacity-100"
3248                 x-transition:leave-end="opacity-0"
3249                 @click="open=false"
3250                 aria-label="Close panel"></div>
3251            <div class="relative w-screen max-w-[470px] shadow-2xl"
3252                 x-show="open"
3253                 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
3254                 x-transition:enter-start="translate-x-full"
3255                 x-transition:enter-end="translate-x-0"
3256                 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
3257                 x-transition:leave-start="translate-x-0"
3258                 x-transition:leave-end="translate-x-full"
3259            >
3260                <div
3261                    x-show="open"
3262                    x-transition:enter="ease-in-out duration-500"
3263                    x-transition:enter-start="opacity-0"
3264                    x-transition:enter-end="opacity-100"
3265                    x-transition:leave="ease-in-out duration-500"
3266                    x-transition:leave-start="opacity-100"
3267                    x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex p-2 mt-2">
3268                    <button @click="open=false" aria-label="Close panel"
3269                            class="p-2 text-primary transition duration-150 ease-in-out hover:text-secondary">
3270                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img">
3271    <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"/>
3272<title>x</title></svg>
3273                    </button>
3274                </div>
3275                <div class="flex flex-col h-screen h-[100dvh] py-6 space-y-6 bg-white shadow-xl">
3276                    
3277                    <header class="px-4 sm:px-6">
3278                        <h2 id="cart-drawer-title" class="text-xl font-bold leading-6 text-primary">
3279                            Carrello                            <span class="items-total font-normal"
3280                                  x-text="'(' + totalCartAmount + ')'">
3281                            </span>
3282                        </h2>
3283                    </header>
3284
3285                    
3286                    <div class="relative grid gap-6 px-4 py-6 overflow-y-auto bg-white border-t sm:gap-8 sm:px-6 border-container">
3287                        <template x-for="parent in cart.fake_grouped_parents">
3288                            <div class="flex items-start p-3 -m-3 space-x-4">
3289                                <a :href="parent.url" class="w-1/4">
3290                                    <img
3291                                        :src="parent.image"
3292                                        width="78"
3293                                        height="78"
3294                                        loading="lazy"
3295                                    />
3296                                </a>
3297                                <div class="w-3/4">
3298                                    <div>
3299                                        <p class="text-sm">
3300                                            <span x-html="parent.name"></span>
3301                                        </p>
3302                                    </div>
3303                                    <div class="mt-2">
3304                                        <template x-for="child_item in groupedData[parent.grouped_id].items">
3305                                            <div class="font-body-sm font-sm text-gray-1">
3306                                                <span x-html="child_item.qty + 'x ' + child_item.name"></span>
3307                                            </div>
3308                                        </template>
3309                                    </div>
3310                                    <p class="flex mt-2">
3311                                        <span>
3312                                            <span class="price-including-tax">
3313                                                <span class="minicart-price">
3314                                                    <span class="price" x-html="getGroupedPrice(parent.grouped_id)"></span>
3315                                                </span>
3316                                            </span>
3317                                        </span>
3318                                    </p>
3319                                    <div class="pt-2 mt-2">
3320                                        <button class="inline-flex p-2 btn shadow-none bg-container-darker text-primary hover:shadow-lg hover:bg-secondary/10"
3321                                                @click="deleteGroupedFromCart(parent.grouped_id)"
3322                                        >
3323                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.96 24" class="p-0.5" width="20" height="20" role="img">
3324    <path d="M13.9 24H8.06a4.85 4.85 0 0 1-4.84-4.4L1.87 5.64H.78a.781.781 0 0 1 0-1.56h4.38l.04-.19A4.86 4.86 0 0 1 9.96 0H12c2.31 0 4.3 1.63 4.76 3.89l.04.19h4.38c.42 0 .76.33.78.74v.04c0 .43-.35.78-.78.78h-1.12l-1.32 13.95a4.842 4.842 0 0 1-4.84 4.4ZM3.45 5.64l1.32 13.81a3.284 3.284 0 0 0 3.28 2.98h5.84c1.7 0 3.13-1.29 3.28-2.98l1.31-13.81H3.45Zm6.51-4.08c-1.4 0-2.65.88-3.11 2.2l-.11.32h8.48l-.11-.32A3.299 3.299 0 0 0 12 1.56H9.97Z" style="fill:currentColor"/>
3325<title>trash</title></svg>
3326                                        </button>
3327                                    </div>
3328                                </div>
3329                            </div>
3330                        </template>
3331                        <template x-for="item in cartItems">
3332                            <div class="flex items-start p-3 -m-3 space-x-4" :class="{'hidden': item.grouped_id }" x-bind:data-grouped-id="item.grouped_id">
3333                                <a :href="item.product_url" class="w-1/4">
3334                                    <img
3335                                        :src="item.product_image.src"
3336                                        :width="item.product_image.width"
3337                                        :height="item.product_image.height"
3338                                        loading="lazy"
3339                                    />
3340                                </a>
3341                                <div class="w-3/4 space-y-2">
3342                                    <div>
3343                                        <p class="text-sm">
3344                                            <span x-html="item.product_name"></span>
3345                                        </p>
3346                                        <p class="text-xs sr-only"><span x-html="item.product_sku"></span></p>
3347                                    </div>
3348                                    <template x-for="(option, i) in item.options">
3349                                        <span class="text-xxs text-primary-lighter inline-block before:inline-block before:mx-1 before:content-['-']"
3350                                              x-html="option.value"
3351                                              :class="{ 'before:content-none before:hidden': i == 0 }"
3352                                        ></span>
3353                                    </template>
3354                                    <div class="font-body-sm font-sm inline text-gray-1">
3355                                        Quantità:                                        <sp
3355an x-html="item.qty"></span>
3356                                    </div>
3357                                    <p class="flex">
3358                                        <span x-html="item.product_price"></span>
3359                                        <span x-show="item.regular_price_value > item.product_price_value" x-html="hyva.formatPrice(item.regular_price_value)" class="line-through ml-1.5"></span>
3360                                    </p>
3361                                    <div class="pt-2">
3362                                        <a :href="item.configure_url"
3363                                           x-show="item.product_type !== 'grouped'"
3364                                           class="inline-flex p-2 mr-2 btn shadow-none bg-container-darker text-primary hover:shadow-lg hover:bg-secondary/10">
3365                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="p-0.5" width="20" height="20" role="img">
3366    <path d="M2.88 24H.76a.76.76 0 0 1-.76-.76v-2.11c0-1.29.51-2.53 1.43-3.44L18.11 1.01a3.455 3.455 0 0 1 4.88-.02 3.455 3.455 0 0 1 .02 4.88l-.02.02L6.3 22.58C5.39 23.49 4.16 24 2.88 24ZM15.35 5.91 2.5 18.77c-.63.63-.98 1.48-.98 2.37v1.35h1.35c.89 0 1.74-.35 2.36-.98L18.09 8.66l-2.74-2.74Zm5.2-4.4c-.51 0-1 .2-1.37.57l-2.76 2.76 2.74 2.73 2.76-2.76c.76-.75.76-1.98 0-2.74-.36-.36-.86-.57-1.37-.57Z" style="fill:currentColor"/>
3367<title>Modifica</title></svg>
3368                                        </a>
3369                                        <button class="delete inline-flex p-2 btn shadow-none bg-container-darker text-primary hover:shadow-lg hover:bg-secondary/10"
3370                                                @click="deleteItemFromCart(item.item_id)"
3371                                        >
3372                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.96 24" class="p-0.5" width="20" height="20" role="img">
3373    <path d="M13.9 24H8.06a4.85 4.85 0 0 1-4.84-4.4L1.87 5.64H.78a.781.781 0 0 1 0-1.56h4.38l.04-.19A4.86 4.86 0 0 1 9.96 0H12c2.31 0 4.3 1.63 4.76 3.89l.04.19h4.38c.42 0 .76.33.78.74v.04c0 .43-.35.78-.78.78h-1.12l-1.32 13.95a4.842 4.842 0 0 1-4.84 4.4ZM3.45 5.64l1.32 13.81a3.284 3.284 0 0 0 3.28 2.98h5.84c1.7 0 3.13-1.29 3.28-2.98l1.31-13.81H3.45Zm6.51-4.08c-1.4 0-2.65.88-3.11 2.2l-.11.32h8.48l-.11-.32A3.299 3.299 0 0 0 12 1.56H9.97Z" style="fill:currentColor"/>
3374<title>Elimina</title></svg>
3375                                        </button>
3376                                    </div>
3377
3378                                </div>
3379                            </div>
3380                        </template>
3381                    </div>
3382
3383                    
3384                    <div class="relative grid gap-6 px-4 pt-6 bg-white sm:gap-8 sm:px-6 !mt-auto">
3385                        <div class="w-full p-3 -m-3 space-x-4 text-right">
3386                            <p>Subtotale: <span class="font-bold text-xl" x-html="cart.subtotal_incl_tax_discounted"></span></p>
3387                        </div>
3388                        <div class="w-full p-3 -m-3 space-y-3">
3389                            <a href="https://www.farma.it/checkout/cart/"
3390                               class="block btn btn-primary">
3391                                Vai al Carrello                            </a>
3392                        </div>
3393                                            </div>
3394
3395                                    </div>
3396            </div>
3397            
3398<div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50"
3399     style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgb(255 255 255/0.60);"
3400     x-show="isLoading"
3401     x-transition:enter="ease-out duration-200"
3402     x-transition:enter-start="opacity-0"
3403     x-transition:enter-end="opacity-100"
3404     x-transition:leave="ease-in duration-200"
3405     x-transition:leave-start="opacity-100"
3406     x-transition:leave-end="opacity-0">
3407    <svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 38 38" stroke="#ffb590" class="text-primary" role="img">
3408    <g fill="none" fill-rule="evenodd">
3409        <g transform="translate(1 1)" stroke-width="2">
3410            <circle stroke="#ff6801" cx="18" cy="18" r="18"/>
3411            <path d="M36 18c0-9.94-8.06-18-18-18">
3412                <animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indef
3412inite"/>
3413            </path>
3414        </g>
3415    </g>
3416<title>loader</title></svg>
3417</div>
3418        </div>
3419    </template>
3420</section>
3421
3422    <!-- Authentication Pop-Up -->
3423    <!-- BLOCK authentication-popup -->
3423<script>
3424    function initAuthentication() {
3425        return {
3426            open: false,
3427            forceAuthentication: false,
3428            checkoutUrl: 'https://www.farma.it/checkout/index/',
3429            errors: 0,
3430            hasCaptchaToken: 0,
3431            displayErrorMessage: false,
3432            errorMessages: [],
3433            setErrorMessages: function setErrorMessages(messages) {
3434                this.errorMessages = [messages];
3435                this.displayErrorMessage = this.errorMessages.length;
3436            },
3437            submitForm: function () {
3438                // Do not rename $form, the variable is expected to be declared in the recaptcha output
3439                const $form = document.querySelector('#login-form');
3440                
3441                if (this.errors === 0) {
3442                    this.dispatchLoginRequest($form);
3443                }
3444            },
3445            onPrivateContentLoaded: function (data) {
3446                const isLoggedIn = data.customer && data.customer.firstname;
3447                if (data.cart && !isLoggedIn) {
3448                    this.forceAuthentication = !data.cart.isGuestCheckoutAllowed;
3449                }
3450            },
3451            redirectIfAuthenticated: function (event) {
3452                if (event.detail && event.detail.url) {
3453                    this.checkoutUrl = event.detail.url;
3454                }
3455                if (!this.forceAuthentication) {
3456                    window.location.href = this.checkoutUrl;
3457                }
3458            },
3459            dispatchLoginRequest: function(form) {
3460                this.isLoading = true;
3461                const username = this.$refs['customer-email'].value;
3462                const password = this.$refs['customer-password'].value;
3463                const formKey = hyva.getFormKey();
3464                const bodyFields = {
3465                    'username': username,
3466                    'password': password,
3467                    'formKey': formKey
3468                };
3469                                const fieldName = 'g\u002Drecaptcha\u002Dresponse';
3470                const recaptchaField = fieldName && form[fieldName];
3471                if (recaptchaField) {
3472                    bodyFields[fieldName] = recaptchaField.value;
3473                }
3474                fetch('https://www.farma.it/customer/ajax/login/', {
3475                        method: 'POST',
3476                        headers: {
3477                            'Content-Type': 'application/json',
3478                            'X-Requested-With': 'XMLHttpRequest'
3479                        },
3480                        body: JSON.stringify(bodyFields)
3481                    }
3482                ).then(response => {
3483                        return response.json()
3484                    }
3485                ).then(data=> {
3486                    this.isLoading = false;
3487                    if (data.errors) {
3488                        dispatchMessages([{
3489                            type: 'error',
3490                            text: data.message
3491                        }], 5000);
3492                        this.errors = 1;
3493                        this.hasCaptchaToken = 0;
3494                    } else {
3495                        window.location.href = this.checkoutUrl;
3496                    }
3497                });
3498            }
3499        }
3500    }
3501</script>
3501
3502<section id="authentication-popup"
3503         x-data="initAuthentication()"
3504         @private-content-loaded.window="onPrivateContentLoaded($event.detail.data)"
3505         @toggle-authentication.window="open = forceAuthentication; redirectIfAuthenticated(event)"
3506         @keydown.window.escape="open = false"
3507         class="hidden"
3508         :class="{ 'hidden': !open }"
3509>
3510    <div role="dialog"
3511         aria-labelledby="authentication-popup-title"
3512         aria-modal="true"
3513         @click.outside="open=false"
3514         class="fixed inset-y-0 right-0 z-50 flex max-w-full">
3515        <div class="backdrop"
3516             x-show="open"
3517             x-transition:enter="ease-in-out duration-500"
3518             x-transition:enter-start="opacity-0"
3519             x-transition:enter-end="opacity-100"
3520             x-transition:leave="ease-in-out duration-500"
3521             x-transition:leave-start="opacity-100"
3522             x-transition:leave-end="opacity-0"
3523             @click="open=false"
3524             aria-label="Close panel"></div>
3525        <div class="relative w-screen max-w-[485px] shadow-2xl"
3526             x-show="open"
3527             x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
3528             x-transition:enter-start="translate-x-full"
3529             x-transition:enter-end="translate-x-0"
3530             x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
3531             x-transition:leave-start="translate-x-0"
3532             x-transition:leave-end="translate-x-full"
3533        >
3534            <div
3535                x-show="open"
3536                x-transition:enter="ease-in-out duration-500"
3537                x-transition:enter-start="opacity-0"
3538                x-transition:enter-end="opacity-100"
3539                x-transition:leave="ease-in-out duration-500"
3540                x-transition:leave-start="opacity-100"
3541                x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex p-2 mt-3 sm:mt-7 sm:mr-6">
3542                <button @click="open=false" aria-label="Close panel"
3543                        class="p-2 text-primary transition duration-150 ease-in-out hover:text-secondary">
3544                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16" role="img">
3545    <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"/>
3546<title>x</title></svg>
3547                </button>
3548            </div>
3549            <div class="flex flex-col h-screen h-[100dvh] pt-6 pb-6 sm:pt-10 space-y-6 sm:space-y-10 bg-white shadow-xl overflow-y-auto">
3550                <header class="px-4">
3551                    <div id="authentication-popup-title" class="text-3xl font-bold leading-6 text-primary-darker">
3552                        Accedi o registrati                    </div>
3553                </header>
3554                <div class="block-customer-login bg-container border border-container mx-4 p-4 shadow-sm">
3555                    <p id="authenticate-customer-login" class="text-lg leading-7 text-gray-900">
3556                        <strong class="font-medium">Esegui il checkout utilizzando il tuo account</strong>
3557                    </p>
3558
3559                    <form class="form form-login"
3560                          method="post"
3561                          @submit.prevent="submitForm();"
3562                          id="login-form"
3563                    >
3564                                                <div class="fieldset login">
3565                            <div class="field email required">
3566                                <label class="label" for="form-login-username" form="login-form" >
3567                                    <span>Indirizzo email</span>
3568                                </label>
3569                                <div class="control">
3570                                    <input name="username"
3571                                           id="form-login-username"
3572                                           x-ref="customer-email"
3573                                           @change="errors = 0"
3574                                           type="email"
3575                                           required
3576                                           class="form-input input-text"
3577                                    >
3578                                </div>
3579                            </div>
3580                            <div class="field password required">
3581                                <label for="form-login-password" class="label" form="login-form">
3582                                    <span>Password</span>
3583                                </label>
3584                                <div class="control">
3585                                    <input name="password"
3586                                           id="form-login-password"
3587                                           type="password"
3588                                           class="form-input input-text"
3589                                           required
3590                                           x-ref="customer-password"
3591                                           @change="errors = 0"
3592                                    >
3593                                </div>
3594                            </div>
3595
3596                            <input name="context" type="hidden" value="checkout" />
3597                            <div class="actions-toolbar flex justify-between pt-6 pb-2 items-center">
3598                                <button type="submit"                                        class="inline-flex btn btn-primary disabled:opacity-75"
3599                                >
3600                                    Accedi                                </button>
3601                                <a href="https://www.farma.it/customer/account/forgotpassword/"
3602                                >
3603                                    Hai dimenticato la password?                                </a>
3604                            </div>
3605
3606                        </div>
3607                    </form>
3608                </div>
3609                <div class="mx-4">
3610                                    </div>
3611                <div class="block-new-customer bg-container border border-container mx-4 p-4 shadow-sm">
3612                    <p id="authenticate-new-customer" class="text-lg mb-2 leading-7 text-gray-900">
3613                        <strong class="font-medium">Esegui il checkout come nuovo cliente</strong>
3614                    </p>
3615
3616                    <div class="block-content">
3617                        <p class="mb-1">
3618                            La creazione di un account ha molti vantaggi:                        </p>
3619                        <ul class="list-disc pl-5">
3620                            <li> Vedere lo stato dell&#039;ordine e della spedizione</li>
3621                            <li> Cronologia ordini</li>
3622                            <li> Checkout più veloce</li>
3623                        </ul>
3624                        <div class="actions-toolbar flex justify-between mt-6 mb-2 items-center">
3625                            <a href="https://www.farma.it/customer/account/create/"
3626                               class="inline-flex btn btn-primary">
3627                                Crea il tuo Account                            </a>
3628                        </div>
3629                    </div>
3630                </div>
3631            </div>
3632        </div>
3633    </div>
3634</section>
3635<!-- /BLOCK authentication-popup --></div>
3636
3637</header><div class="widget block block-static-block">
3638    </div>
3639<div class="top-container flex flex-col"><nav class="breadcrumbs order-1 " aria-label="Breadcrumb">
3640    <div class="container">
3641        <ol class="items list-reset pt-4 flex flex-wrap text-grey-1 text-xxs ">
3642                            <li class="item flex items-center  home">
3643                                    <a href="https://www.farma.it/"
3644                       class="no-underline hover:underline "
3645                       title="Vai&#x20;alla&#x20;Home&#x20;Page"
3646                    >Home</a>
3647                                                            <span aria-hidden="true" class="separator text-primary">
3648                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12.24 24" class="p-2" width="24" height="24" role="img">
3649    <path d="M1.08 23.87C.43 23.61.01 22.99 0 22.29c0-.46.18-.89.51-1.21l7.62-7.52c.86-.85.87-2.23.03-3.09l-.03-.03L.52 2.93C-.15 2.27-.16 1.2.5.53L.52.51C1.2-.17 2.29-.17 2.97.5l7.6 7.51c2.2 2.17 2.23 5.7.06 7.91l-.06.06-7.61 7.52a1.766 1.766 0 0 1-1.89.37Z" style="fill:currentColor"/>
3650<title>arrow-right</title></svg>
3651                    </span>
3652                                    </li>
3653                            <li class="item flex items-center  blog">
3654                                    <a href="https://www.farma.it/blog.html"
3655                       class="no-underline hover:underline "
3656                       title="I&#x20;nostri&#x20;consigli"
3657                    >I nostri consigli</a>
3658                                                    </li>
3659                    </ol>
3660    </div>
3661</nav>
3662<div class="widget block block-static-block">
3663    </div>
3664</div>
3664<main id="maincontent" class="page-main"><div id="algolia-autocomplete-container"></div><div id="contentarea" tabindex="-1"></div>
3665<div class="page messages">
3665<script>
3666    function initMessages() {
3667        "use strict";
3668        return {
3669            messages: window.mageMessages || [],
3670
3671            hideAfter: 4000,
3672            icons: {
3673                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>',
3674                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>',
3675                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>',
3676                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>',
3677                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>',
3678            },
3679
3680            isEmpty() {
3681                return this.messages.reduce(
3682                    function (isEmpty, message) {
3683                        return isEmpty && message === undefined
3684                    }, true
3685                )
3686            },
3687            removeMessage(messageIndex) {
3688                this.messages[messageIndex] = undefined;
3689            },
3690            addMessages(messages, hideAfter) {
3691                messages.map((message) => {
3692                    message.icon = this.icons[message.type];
3693                    this.messages = this.messages.concat(message);
3694                    if (hideAfter) {
3695                        this.setHideTimeOut(this.messages.length - 1, hideAfter);
3696                    }
3697                });
3698            },
3699            setHideTimeOut(messageIndex, hideAfter) {
3700                setTimeout((messageIndex) => {
3701                    this.removeMessage(messageIndex);
3702                }, hideAfter, messageIndex);
3703            },
3704            animateMessage(elem) {
3705                if (elem) {
3706                    if (window.matchMedia('(min-width: 1024px)').matches) {
3707                        elem.classList.add('transition-all', 'duration-300');
3708                        elem.style.position = 'absolute';
3709                        const headerEl = document.querySelector('.header-elements');
3710                        elem.style.left = (headerEl ? headerEl.getBoundingClientRect().left : 0) + 'px';
3711                        elem.style.opacity = 1;
3712
3713                        setTimeout(() => {
3714                            elem.style.left = '0';
3715                            elem.style.opacity = 0;
3716                        }, this.hideAfter - 300);
3717                    } else {
3718                        elem.style.left = '-400px';
3719                        elem.classList.add('transition-all', 'duration-300');
3720                        elem.style.opacity = 0;
3721
3722                        setTimeout(() => {
3723                            elem.style.left = '0';
3724                            elem.style.opacity = 1;
3725                        }, 10);
3726
3727                        setTimeout(() => {
3728                            elem.style.left = '-400px';
3729                            elem.style.opacity = 0;
3730                        }, this.hideAfter - 300);
3731                    }
3732                }
3733            },
3734            eventListeners: {
3735                ['@messages-loaded.window']() {
3736                    this.addMessages(event.detail.messages, this.hideAfter)
3737                },
3738                ['@private-content-loaded.window'](event) {
3739                    const data = event.detail.data;
3740                    if (
3741                        data.messages &&
3742                        data.messages.messages &&
3743                        data.messages.messages.length
3744                    ) {
3745                        this.addMessages(data.messages.messages, this.hideAfter);
3746                    }
3747                },
3748                ['@clear-messages.window']() {
3749                    this.messages = [];
3750                }
3751            }
3752        }
3753    }
3754</script>
3754
3755<section id="messages"
3756         x-data="initMessages()"
3757         x-bind="eventListeners"
3758         class="absolute"
3759>
3760    <template x-if="!isEmpty()">
3761        <div class="w-full">
3762            <div role="alert" class="messages mx-auto py-3 pl-0 pr-[.938rem] lg:px-layoutGutter lg:px-0">
3763                <template x-for="(message, index) in messages" :key="index">
3764                    <div>
3765                        <template x-if="message">
3766                            <div class="message w-fit lg:min-w-[25rem] rounded-md relative" :class="message.type"
3767                                 :ui-id="'message-' + message.type"
3768                                 style="left: 0; max-width: 400px"
3769                                 x-init="animateMessage($el)"
3770                            >
3771                                <span x-html="message.icon" class="mr-3"></span>
3772                                <span x-html="message.text" class="pr-2"></span>
3773                                <a href="#" class="close cursor-pointer ml-auto my-auto" title="close"
3774                                   @click.prevent="removeMessage(index)">
3775                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="text-primary" width="12" height="12" role="img">
3776    <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"/>
3777<title>x</title></svg>
3778                                </a>
3779                            </div>
3780                        </template>
3781                    </div>
3782                </template>
3783            </div>
3784        </div>
3785    </template>
3786</section>
3787</div><div class="columns"><aside class="sidebar sidebar-main">
3788<div class="blog__category__default lg:mb-6 first:border-t-0 border-container lg:border-0 pb-4 pt-2 lg:py-0" x-data="{ open: false }">
3789            <div class="font-baloo-bhaina text-base lg:text-xl lg:h4 font-bold leading-8 lg:leading-10 flex justify-between items-center" @click="open = !open">
3790            <span>
3791                Categorie            </span>
3792            <span class="md:hidden pr-4">
3793                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" :class="{ 'transform rotate-180': open }" role="img">
3794  <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>
3795<title>chevron-down</title></svg>
3796            </span>
3797        </div>
3798        <div class="relative mt-1 md:block" :class="open ? '' : 'hidden'">
3799        <a class="block text-primary-darker hover:font-bold text-xs md:text-md mb-2" href="/blog.html">
3800            Tutti gli articoli        </a>
3801                                <a class="block text-primary-darker hover:font-bold text-xs md:text-md mb-2  "  href="https://www.farma.it/blog/novita.html">
3802                                Novità            </a>
3803                                <a class="block text-primary-darker hover:font-bold text-xs md:text-md mb-2  "  href="https://www.farma.it/blog/bellezza.html">
3804                                Bellezza            </a>
3805                                <a class="block text-primary-darker hover:font-bold text-xs md:text-md mb-2  "  href="https://www.farma.it/blog/natura.html">
3806                                Natura            </a>
3807                                <a class="block text-primary-darker hover:font-bold text-xs md:text-md mb-2  "  href="https://www.farma.it/blog/rimedi.html">
3808                                Rimedi            </a>
3809            </div>
3810</div>
3811
3812<div
3813            class="ambanners ambanner-2"
3814        data-position="2"
3815        data-bannerid=""
3816        data-role="amasty-banner-container"
3817></div>
3818</aside><div class="column main"><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   mb-5 md:mb-10 px-0">
3819    <h1 class="text-primary-darker page-title title-font text-2xl xl:text-3xl font-bold xl:mb-4 mb-2 "
3820        >
3821        <span class="base" data-ui-id="page-title-wrapper" >I nostri consigli</span>    </h1>
3822    </div>
3823<script>
3824    document.addEventListener("alpine:init", () => {
3825        Alpine.store('ajaxPrices', {
3826            nodesToUpdate: [],
3827            prices: [],
3828            options: {
3829                additional_data: {}
3830            },
3831
3832            hasPrice(productId){
3833                return this.getPriceFloat(productId) != null;
3834            },
3835
3836            getPriceHtml(productId) {
3837                if (!(productId in this.prices)) {
3838                    return null;
3839                }
3840                return this.prices[productId]['html'];
3841            },
3842
3843            getPriceFloat(productId) {
3844                if (!(productId in this.prices)) {
3845                    return null;
3846                }
3847                return this.prices[productId]['float'];
3848            },
3849
3850            addNode(productId) {
3851                if (!productId) {
3852                    return
3853                }
3854
3855                this.nodesToUpdate.push({
3856                    "productId": productId,
3857                });
3858
3859                Alpine.debounce(this.updateNodes.bind(this), 150)();
3860            },
3861
3862            updateNodes() {
3863                var nodes = this.nodesToUpdate;
3864                this.nodesToUpdate = [];
3865
3866                this.processNodes(nodes);
3867            },
3868
3869            processNodes(nodes) {
3870                var self = this,
3871                    idsToLoad = [],
3872                    containerToReload = [];
3873
3874                nodes.forEach(function (node) {
3875                    var productId = node.productId;
3876
3877                    if (productId in self.prices) {
3878                        //self.apply(node);
3879                        return; //continue
3880                    }
3881
3882                    idsToLoad.push(productId);
3883
3884                    containerToReload.push(node);
3885                });
3886
3887                if (idsToLoad.length) {
3888                    self.get(idsToLoad, function () {
3889                        self.processNodes(containerToReload);
3890                    });
3891                }
3892            },
3893
3894            store: function (prices) {
3895                this.prices = Object.assign(this.prices, prices);
3896            },
3897
3898            get(ids, callback) {
3899
3900                var self = this,
3901                    params = '/ids/' + ids.join();
3902
3903                let additionalParams = this.options.additional_data;
3904                params += "?" + new URLSearchParams(additionalParams).toString();
3905
3906                fetch(BASE_URL + 'ajaxprices/price/render' + params)
3907                    .then((response) => response.json())
3908                    .then((data) => {
3909                        if (data.error) {
3910                            console.error("ajax_price_error: " + data.errorMessage)
3911                            return;
3912                        }
3913
3914                        var prices = data.data;
3915                        self.store(prices);
3916                        callback();
3917                    });
3918            }
3919        });
3920    });
3921</script>
3921
3922
3923<script>
3924    document.addEventListener("alpine:init", () => {
3925        Alpine.store('badges', {
3926            nodesToUpdate: [],
3927            badges: [],
3928            productBadges: [],
3929            options: {
3930                additional_data: {}
3931            },
3932
3933            getBadgesHtml(productId, position) {
3934                if (!(productId in this.productBadges) || !(position in this.productBadges[productId])) {
3935                    return [];
3936                }
3937                let index = this.productBadges[productId][position],
3938                    self = this,
3939                    badges = [];
3940
3941                index.forEach(function (element) {
3942                    badges.push(self.badges[element]);
3943                });
3944                return badges;
3945            },
3946
3947            addNode(productId, position) {
3948                this.nodesToUpdate.push({
3949                    "productId": productId,
3950                    "position": position
3951                });
3952
3953                Alpine.debounce(this.updateNodes.bind(this), 150)();
3954            },
3955
3956            updateNodes() {
3957                var nodes = this.nodesToUpdate;
3958                this.nodesToUpdate = [];
3959
3960                this.processNodes(nodes);
3961            },
3962
3963            processNodes(nodes) {
3964                var self = this,
3965                    idsToLoad = [],
3966                    containerToReload = [];
3967
3968                nodes.forEach(function (node) {
3969                    var productId = node.productId;
3970
3971                    if (self.productBadges[productId]) {
3972                        //self.apply(node);
3973                        return; //continue
3974                    }
3975
3976                    idsToLoad.push(productId);
3977                    containerToReload.push(node);
3978                });
3979
3980                if (idsToLoad.length) {
3981                    self.get(idsToLoad, function () {
3982                        self.processNodes(containerToReload);
3983                    });
3984                }
3985            },
3986
3987            store: function (badges, productBadges) {
3988                this.badges = Object.assign(this.badges, badges);
3989                this.productBadges = Object.assign(this.productBadges, productBadges);
3990            },
3991
3992            get(ids, callback) {
3993                var self = this,
3994                    params = '/ids/' + ids.join();
3995
3996                let additionalParams = this.options.additional_data;
3997                params += "?" + new URLSearchParams(additionalParams).toString();
3998
3999                fetch(BASE_URL + 'badge/api/get' + params)
4000                    .then((response) => response.json())
4001                    .then((data) => {
4002                        if (data.error) {
4003                            console.error("badges_error: " + data.errorMessage)
4004                            return;
4005                        }
4006
4007                        var badges = data.data.badges,
4008                            productBadges = data.data.productBadges;
4009
4010                        self.store(badges, productBadges);
4011                        callback();
4012                    });
4013            }
4014        });
4015    });
4016</script>
4016
4017
4018
4019<script>
4020    document.addEventListener("alpine:init", () => {
4021        Alpine.store('omnibusPrices', {
4022            nodesToUpdate: [],
4023            prices: [],
4024            options: {
4025                additional_data: {}
4026            },
4027
4028            hasPrice(productId){
4029                return this.getPriceHtml(productId) != null;
4030            },
4031
4032            getPriceHtml(productId) {
4033                if (!(productId in this.prices)) {
4034                    return null;
4035                }
4036                return this.prices[productId];
4037            },
4038
4039            addNode(productId, position) {
4040                this.nodesToUpdate.push({
4041                    "productId": productId,
4042                });
4043
4044                Alpine.debounce(this.updateNodes.bind(this), 150)();
4045            },
4046
4047            updateNodes() {
4048                var nodes = this.nodesToUpdate;
4049                this.nodesToUpdate = [];
4050
4051                this.processNodes(nodes);
4052            },
4053
4054            processNodes(nodes) {
4055                var self = this,
4056                    idsToLoad = [],
4057                    containerToReload = [];
4058
4059                nodes.forEach(function (node) {
4060                    var productId = node.productId;
4061
4062                    if (productId in self.prices) {
4063                        //self.apply(node);
4064                        return; //continue
4065                    }
4066
4067                    idsToLoad.push(productId);
4068                    containerToReload.push(node);
4069                });
4070
4071                if (idsToLoad.length) {
4072                    self.get(idsToLoad, function () {
4073                        self.processNodes(containerToReload);
4074                    });
4075                }
4076            },
4077
4078            store: function (prices) {
4079                this.prices = Object.assign(this.prices, prices);
4080            },
4081
4082            get(ids, callback) {
4083                var self = this,
4084                    params = '/ids/' + ids.join();
4085
4086                let additionalParams = this.options.additional_data;
4087                params += "?" + new URLSearchParams(additionalParams).toString();
4088
4089                fetch(BASE_URL + 'omnibus/ajax/render' + params)
4090                    .then((response) => response.json())
4091                    .then((data) => {
4092                        if (data.error) {
4093                            console.error("omnibus_prices_error: " + data.errorMessage)
4094                            return;
4095                        }
4096
4097                        var prices = data.data;
4098                        self.store(prices);
4099                        callback();
4100                    });
4101            }
4102        });
4103    });
4104</script>
vendor: 1 bytes, line 4104
4104
4105<script nonce="NjNtZzZkZG5hN3RlcXptYzE0eXZhMWpqNnQzY2N0djE=">
4106    var feedId = getUrlParam('ff'),
4107        product = getUrlParam('fp'),
4108        currentDate = new Date(),
4109        session = getCookie('feed_session');
4110
4111    if (!session) {
4112        session = '' + Math.floor(currentDate.getTime() / 1000) + Math.floor(Math.random() * 10000001);
4113    }
4114
4115    if (session && feedId > 0 && product > 0) {
4116        setCookie('feed_session', session, {expires: 365, path: '/'});
4117        setCookie('feed_id', feedId, 365);
4118
4119        var xhr = new XMLHttpRequest(),
4120            baseUrl = 'https://www.farma.it/',
4121            url = BASE_URL + '?rnd=' + Math.floor(Math.random() * 10000001) + "&feed=" + feedId + "&session=" + session + "&product=" + product;
4122
4123        xhr.open('GET', url, true);
4124        xhr.setRequestHeader('Content-Type', 'application/json');
4125        xhr.send();
4126    }
4127
4128    function getUrlParam(name) {
4129        let results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
4130
4131        if (results === null) {
4132            return '';
4133        } else {
4134            return results[1] || 0;
4135        }
4136    }
4137
4138    function getCookie(cookieName) {
4139        var name = cookieName + "=",
4140            decodedCookie = decodeURIComponent(document.cookie),
4141            cookieArray = decodedCookie.split(';');
4142
4143        for (var i = 0; i < cookieArray.length; i++) {
4144            var cookie = cookieArray[i].trim();
4145            if (cookie.indexOf(name) === 0) {
4146                return cookie.substring(name.length, cookie.length);
4147            }
4148        }
4149
4150        return null;
4151    }
4152
4153    function setCookie(cookieName, cookieValue, expirationDays) {
4154        var d = new Date();
4155        d.setTime(d.getTime() + (expirationDays * 24 * 60 * 60 * 1000));
4156        var expires = "expires=" + d.toUTCString();
4157        document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/";
4158    }
4159</script>
vendor: 1 bytes, line 4159
4159
4160<script>
4161    function hasWebP() {
4162        var elem = document.createElement('canvas');
4163
4164        if (!!(elem.getContext && elem.getContext('2d'))) {
4165            return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0;
4166        }
4167        return false;
4168    }
4169
4170    if (hasWebP()) {
4171        document.body.classList.add("webp");
4172    } else {
4173        document.body.classList.add("no-webp");
4174    }
4175</script>
4175
4176
4177    <div class="blog__post-list__default grid grid-cols-1 xl:grid-cols-2 gap-2 xl:gap-4">
4178                    
4179<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="421">
4180    <a href="https://www.farma.it/blog/guida-all-uso-dei-dispositivi-medici-per-l-aerosol-nei-mesi-invernali.html" class="cursor-pointer">
4181            <div class="overflow-hidden mb-2">
4182            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/Blog_Aerosol-ad34d7b0.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/Blog_Aerosol.jpg" alt="Guida&#x20;all&#x27;uso&#x20;dei&#x20;dispositivi&#x20;medici&#x20;per&#x20;l&#x2019;aerosol&#x20;nei&#x20;mesi&#x20;invernali" loading="lazy" /></picture>
4183        </div>
4184        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">10 nov 2025</p>
4185    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4186        Guida all'uso dei dispositivi medici per l’aerosol nei mesi invernali    </h2>
4187    </a>
4188    <a  href="https://www.farma.it/blog/guida-all-uso-dei-dispositivi-medici-per-l-aerosol-nei-mesi-invernali.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4189        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4190            Scopri come scegliere e usare correttamente i dispositivi per aerosol nei mesi invernali. Consigli pratici, manutenzione e rimedi per le vie respiratorie.        </p>
4191        <p class="text-secondary items-center text-md mr-auto ml-0 flex">Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4192  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4193<title>chevron-right</title></svg>
4194</span></p>
4195    </a>
4196</div>
4197                    
4198<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="406">
4199    <a href="https://www.farma.it/blog/prevenzione-delle-infezioni-urinarie-nei-mesi-freddi-consigli-e-prodotti-efficaci.html" class="cursor-pointer">
4200            <div class="overflow-hidden mb-2">
4201            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/infezioni_urinarie-2f933b95.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/infezioni_urinarie.png" alt="Prevenzione&#x20;delle&#x20;infezioni&#x20;urinarie&#x20;nei&#x20;mesi&#x20;freddi&#x3A;&#x20;consigli&#x20;e&#x20;prodotti&#x20;efficaci" loading="lazy" /></picture>
4202        </div>
4203        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">7 nov 2025</p>
4204    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4205        Prevenzione delle infezioni urinarie nei mesi freddi: consigli e prodotti efficaci    </h2>
4206    </a>
4207    <a  href="https://www.farma.it/blog/prevenzione-delle-infezioni-urinarie-nei-mesi-freddi-consigli-e-prodotti-efficaci.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4208        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4209            Prevenire le infezioni urinarie nei mesi freddi è possibile: scopri abitudini, igiene, alimentazione e integratori naturali per proteggere le vie urinarie.        </p>
4210        <p class="text-secondary items-center text-md mr-auto ml-0 flex">Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4211  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4212<title>chevron-right</title></svg>
4213</span></p>
4214    </a>
4215</div>
4216                    
4217<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="400">
4218    <a href="https://www.farma.it/blog/bronchite-stagionale-prevenzione-trattamenti-e-supporti-da-banco.html" class="cursor-pointer">
4219            <div class="overflow-hidden mb-2">
4220            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/BRONCHITE-3fd16ff0.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/BRONCHITE.png" alt="Bronchite&#x20;stagionale&#x3A;&#x20;prevenzione,&#x20;trattamenti&#x20;e&#x20;supporti&#x20;da&#x20;banco" loading="lazy" /></picture>
4221        </div>
4222        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">3 nov 2025</p>
4223    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4224        Bronchite stagionale: prevenzione, trattamenti e supporti da banco    </h2>
4225    </a>
4226    <a  href="https://www.farma.it/blog/bronchite-stagionale-prevenzione-trattamenti-e-supporti-da-banco.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4227        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4228            Scopri cos’è la bronchite stagionale, i sintomi principali e i rimedi efficaci: prevenzione, trattamenti da banco e consigli naturali per proteggere le vie respiratorie.        </p>
4229        <p class="text-secondary items-center text-md mr-auto ml-0 flex">
4229Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4230  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4231<title>chevron-right</title></svg>
4232</span></p>
4233    </a>
4234</div>
4235                    
4236<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="405">
4237    <a href="https://www.farma.it/blog/tisane-e-infusi-per-affrontare-i-primi-freddi-guida-e-consigli.html" class="cursor-pointer">
4238            <div class="overflow-hidden mb-2">
4239            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/infusi_e_tisane-f4befdbb.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/infusi_e_tisane.png" alt="erbe&#x20;per&#x20;tisane&#x20;in&#x20;barattoli&#x20;di&#x20;vetro" loading="lazy" /></picture>
4240        </div>
4241        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">31 ott 2025</p>
4242    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4243        Tisane e infusi per affrontare i primi freddi: guida e consigli    </h2>
4244    </a>
4245    <a  href="https://www.farma.it/blog/tisane-e-infusi-per-affrontare-i-primi-freddi-guida-e-consigli.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4246        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4247            Scopri le tisane migliori per affrontare i primi freddi: rimedi naturali per rafforzare difese, favorire digestione, respirazione e relax quotidiano.        </p>
4248        <p class="text-secondary items-center text-md mr-auto ml-0 flex">Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4249  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4250<title>chevron-right</title></svg>
4251</span></p>
4252    </a>
4253</div>
4254                    
4255<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="414">
4256    <a href="https://www.farma.it/blog/pelle-secca-in-autunno-ecco-come-mantenerla-idratata.html" class="cursor-pointer">
4257            <div class="overflow-hidden mb-2">
4258            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/pelle_secca-c9d7c4c0.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/pelle_secca.jpg" alt="Pelle&#x20;secca&#x20;in&#x20;autunno&#x3F;&#x20;Ecco&#x20;come&#x20;mantenerla&#x20;idratata" loading="lazy" /></picture>
4259        </div>
4260        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">13 ott 2025</p>
4261    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4262        Pelle secca in autunno? Ecco come mantenerla idratata    </h2>
4263    </a>
4264    <a  href="https://www.farma.it/blog/pelle-secca-in-autunno-ecco-come-mantenerla-idratata.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4265        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4266            Pelle secca in autunno? Scopri cause, rimedi e prodotti idratanti per mantenerla morbida, elastica e protetta dai cambiamenti climatici.        </p>
4267        <p class="text-secondary items-center text-md mr-auto ml-0 flex">Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4268  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4269<title>chevron-right</title></svg>
4270</span></p>
4271    </a>
4272</div>
4273                    
4274<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="412">
4275    <a href="https://www.farma.it/blog/infezioni-respiratorie-virus-o-batteri.html" class="cursor-pointer">
4276            <div class="overflow-hidden mb-2">
4277            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/virus_o_batteri-3bbe8a0a.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/virus_o_batteri.jpg" alt="Infezioni&#x20;respiratorie&#x3A;&#x20;virus&#x20;o&#x20;batteri&#x3F;" loading="lazy" /></picture>
4278        </div>
4279        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">10 ott 2025</p>
4280    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4281        Infezioni respiratorie: virus o batteri?    </h2>
4282    </a>
4283    <a  href="https://www.farma.it/blog/infezioni-respiratorie-virus-o-batteri.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4284        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4285            Scopri le differenze tra infezioni respiratorie virali e batteriche, i sintomi principali e i trattamenti corretti per prevenirle e curarle efficacemente.        </p>
4286        <p class="text-secondary items-center text-md mr-auto ml-0 flex">
4286Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4287  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4288<title>chevron-right</title></svg>
4289</span></p>
4290    </a>
4291</div>
4292                    
4293<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="402">
4294    <a href="https://www.farma.it/blog/allergie-da-muffe-autunnali-cause-sintomi-e-rimedi.html" class="cursor-pointer">
4295            <div class="overflow-hidden mb-2">
4296            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/Muffa-5703f5dc.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/Muffa.png" alt="Allergie&#x20;da&#x20;muffe&#x20;autunnali&#x3A;&#x20;cause,&#x20;sintomi&#x20;e&#x20;rimedi" loading="lazy" /></picture>
4297        </div>
4298        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">8 ott 2025</p>
4299    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4300        Allergie da muffe autunnali: cause, sintomi e rimedi    </h2>
4301    </a>
4302    <a  href="https://www.farma.it/blog/allergie-da-muffe-autunnali-cause-sintomi-e-rimedi.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4303        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4304            Allergie da muffe autunnali? Scopri cause, sintomi e rimedi naturali o da banco per prevenire i disturbi respiratori e proteggere la salute in ambienti umidi.        </p>
4305        <p class="text-secondary items-center text-md mr-auto ml-0 flex">Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4306  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4307<title>chevron-right</title></svg>
4308</span></p>
4309    </a>
4310</div>
4311                    
4312<div class="flex justify-between flex-col border border-primary-darker hover:border-tertiary rounded-md md:rounded-lg p-2 h-full" data-post-id="401">
4313    <a href="https://www.farma.it/blog/quali-vitamine-assumere-in-ottobre-per-la-stanchezza-da-cambio-stagione.html" class="cursor-pointer">
4314            <div class="overflow-hidden mb-2">
4315            <picture class="rounded-md block object-cover w-full"><source type="image/webp" srcset="https://www.farma.it/media/blog/vitamine-d2b6345c.webp"><img class="rounded-md block object-cover w-full" loading="lazy" width="303" height="168" src="https://www.farma.it/media/blog/vitamine.png" alt="Quali&#x20;vitamine&#x20;assumere&#x20;in&#x20;ottobre&#x20;per&#x20;la&#x20;stanchezza&#x20;da&#x20;cambio&#x20;stagione" loading="lazy" /></picture>
4316        </div>
4317        <p class="text-xxs md:text-xs text-primary-darker mx-2 md:mx-0">6 ott 2025</p>
4318    <h2 itemprop="headline" rel="bookmark" class="my-0.5 lg:my-1.5 h3 mx-2 md:mx-0 font-baloo-bhaina font-bold line-clamp">
4319        Quali vitamine assumere in ottobre per la stanchezza da cambio stagione    </h2>
4320    </a>
4321    <a  href="https://www.farma.it/blog/quali-vitamine-assumere-in-ottobre-per-la-stanchezza-da-cambio-stagione.html" class="cursor-pointer flex flex-col mb-2 mx-2 md:mx-0 items-center">
4322        <p class="line-clamp text-primary-darker text-sm md:text-md mx-0 mb-4">
4323            Scopri quali vitamine assumere in ottobre per combattere la stanchezza da cambio stagione, rinforzare le difese immunitarie e ritrovare energia fisica e mentale.        </p>
4324        <p class="text-secondary items-center text-md mr-auto ml-0 flex">Leggi di più        <span class="mt-0.5 pl-1"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-secondary" width="15" height="15" role="img">
4325  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4326<title>chevron-right</title></svg>
4327</span></p>
4328    </a>
4329</div>
4330        
4331        
4332    <div class="toolbar mx-list-toolbar col-span-1 mt-8 xl:mt-10 xl:col-span-2 flex flex-col items-center">
4333        <div class="toolbar-amount text-xs text-center text-primary-lighter mb-2" id="toolbar-amount">
4334            Articoli <span class="toolbar-number">1</span>-<span class="toolbar-number">8</span> di <span class="toolbar-number">346</span>    </div>
4335
4336        
4337    
4338    
4339    <div class="flex items-center">
4340                    <nav class="inline-flex items-center pages" aria-label="pagination">
4341                <ol class="relative z-0 inline-flex gap-x-[0.4rem] md:gap-x-2 items pages-items font-baloo-bhaina text-primary-darker text-lg">
4342
4343                                            
4344                    
4345                    
4346                                                                        <li
4347                                class="item -ml-px"
4348                                aria-label="Pagina 1"
4349                            >
4350                                <div
4351
4352                                    class="page relative inline-flex items-center font-medium leading-5 w-9 h-9 md:w-10 md:h-10 flex items-center justify-center border border-primary-darker rounded-full bg-tertiary-lighter !border-tertiary cursor-pointer rounded-full !bg-tertiary-darker z-10	"
4353                                    aria-current="page"
4354                                >
4355                                    <span class="sr-only label">
4356                                        Attualmente stai leggendo la pagina                                    </span>
4357                                    <span class="font-baloo-bhaina font-bold text-white align-text-bottom text-lg">1</span>
4358                                </div>
4359                            </li>
4360                                                                                                <li class="item -ml-px">
4361                                <a
4362                                    href="https://www.farma.it/blog.html?p=2"
4363                                    class="page relative inline-flex items-center font-medium leading-5 w-9 h-9 md:w-10 md:h-10 flex items-center justify-center border border-primary-darker rounded-full bg-tertiary-lighter"
4364                                >
4365                                    <span class="sr-only label">Pagina</span>
4366                                    <span>2</span>
4367                                </a>
4368                            </li>
4369                                                                                                <li class="item -ml-px">
4370                                <a
4371                                    href="https://www.farma.it/blog.html?p=3"
4372                                    class="page relative inline-flex items-center font-medium leading-5 w-9 h-9 md:w-10 md:h-10 flex items-center justify-center border border-primary-darker rounded-full bg-tertiary-lighter"
4373                                >
4374                                    <span class="sr-only label">Pagina</span>
4375                                    <span>3</span>
4376                                </a>
4377                            </li>
4378                                                                                                <li class="item -ml-px">
4379                                <a
4380                                    href="https://www.farma.it/blog.html?p=4"
4381                                    class="page relative inline-flex items-center font-medium leading-5 w-9 h-9 md:w-10 md:h-10 flex items-center justify-center border border-primary-darker rounded-full bg-tertiary-lighter"
4382                                >
4383                                    <span class="sr-only label">Pagina</span>
4384                                    <span>4</span>
4385                                </a>
4386                            </li>
4387                                                                                                <li class="item -ml-px">
4388                                <a
4389                                    href="https://www.farma.it/blog.html?p=5"
4390                                    class="page relative inline-flex items-center font-medium leading-5 w-9 h-9 md:w-10 md:h-10 flex items-center justify-center border border-primary-darker rounded-full bg-tertiary-lighter"
4391                                >
4392                                    <span class="sr-only label">Pagina</span>
4393                                    <span>5</span>
4394                                </a>
4395                            </li>
4396                                            
4397                    
4398                    
4399
4400                                            <li class="item pages-item-next -ml-px">
4401                                                        <a
4402                                href="https://www.farma.it/blog.html?p=2"
4403                                class="action  next
4404                                    relative inline-flex items-center font-medium leading-5 w-9 h-9 md:w-10 md:h-10 flex items-center justify-center border border-primary-darker rounded-full bg-tertiary-lighter !border-0"
4405                            >
4406                                                                    <span
4407                                        aria-label="Successivo"
4408                                    ><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="15" height="15" role="img">
4409  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
4410<title>chevron-right</title></svg>
4411</span>
4412                                                            </a>
4413                        </li>
4414                                    </ol>
4415            </nav>
4416            </div>
4417
4418    
4419    </div>
4420    </div>
4421            <div data-mage-init='null'></div>
4422    </div><aside class="sidebar sidebar-additional"><style>#html-body [data-pb-style=LGN6N5T]{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="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="LGN6N5T"><div data-content-type="block" data-appearance="default" data-intersect="false" data-element="main"><div class="widget block block-static-block">
4423    </div>
4424</div></div></div>
4425<div
4426            class="ambanners ambanner-1"
4427        data-position="1"
4428        data-bannerid=""
4429        data-role="amasty-banner-container"
4430></div>
4431</aside></div></main><footer class="page-footer mt-auto">
4432                                        <div style="background-image: url('https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/bg_newsletter.webp');
4433                    font-size: justify-content: flex-start;
4434                    display: flex;
4435                    flex-direction: column;
4436                    background-position: left top;
4437                    background-size: cover;
4438                    background-repeat: no-repeat;
4439                    background-attachment: scroll;"
4440                >
4441                    <div class="container">
4442                        <div class="py-8 md:py-10 scroll-mt-36" id="newsletter_footer">
4443    <form class="form subscribe rounded-full" action="https://www.farma.it/newsletter/subscriber/new/" method="post" x-data="initNewsletterForm()" @submit.prevent="submitForm(
4443)" id="newsletter-validate-detail">
4444        <div class="flex flex-wrap justify-start gap-2">
4445            <label for="newsletter-subscribe" class="sr-only" role="img" aria-label="Indirizzo&#x20;email">
4446                Indirizzo email            </label>
4447
4448            <input name="form_key" type="hidden" x-bind:value="window.hyva.getFormKey()">
4449            <div class="control">
4450    <input type="hidden"
4451           value=""
4452           name="g-recaptcha-response"
4453    >
4454</div>
4455
4456            <div class="w-full md:grid grid-cols-12 items-center xl:items-end">
4457                <div class="col-span-5 text-white mb-6">
4458                    <h4 class="h2 font-bold font-baloo-bhaina text-white mb-2 md:mb-4">Non perderti nulla!<br/>Iscriviti alla nostra Newsletter</h4>
4459                    <p>Ti basta un ultimo click per completare l’iscrizione e iniziare a ricevere subito tutti i <strong>nostri aggiornamenti</strong> e le <strong>nostre promozioni.</strong></p>
4460                </div>
4461                <div></div>
4462                <div class="col-span-6 order-3 md:mb-6">
4463                    <div class="control input-group flex gap-x-2.5 md:gap-x-4 relative">
4464                        <input class="input-text form-control py-2 form-input pl-12" name="email" type="email" required id="newsletter-subscribe"
4465                               x-bind:placeholder="window.matchMedia('(max-width: 700px)').matches ?
4466                               'Inserisci&#x20;e-mail&#x20;&#x2A;' :
4467                               'Inserisci&#x20;indirizzo&#x20;e-mail&#x20;&#x2A;'">
4468                        <div class="absolute top-0 left-3 py-3.5 pl-1">
4469                            <?xml version="1.0" encoding="UTF-8"?>
4470<svg xmlns="http://www.w3.org/2000/svg" id="Livello_1" viewBox="0 0 24 21.95" class="w-5 h-5" width="24" height="24" role="img">
4471    <path fill="#5E24C2" d="m19.19,21.95H4.81c-2.65,0-4.8-2.16-4.81-4.81V4.81C0,2.16,2.16,0,4.81,0h14.38c2.65,0,4.8,2.16,4.81,4.81v12.32c0,2.65-2.16,4.8-4.81,4.81ZM1.4,5.57v11.57c0,1.88,1.53,3.4,3.41,3.41h14.38c1.88,0,3.4-1.53,3.4-3.41V5.57l-7.19,7.19c-1.88,1.88-4.93,1.88-6.81,0L1.4,5.57ZM4.81,1.4c-1.39,0-2.64.85-3.15,2.14l-.08.2,8.02,8.02c1.33,1.33,3.48,1.33,4.82,0L22.43,3.75l-.08-.2c-.51-1.3-1.76-2.15-3.16-2.14H4.81Z"/>
4472<title>footer/icon_email</title></svg>
4473                        </div>
4474                        <div class="input-group-append">
4475                            <button class="btn btn-secondary h-full">
4476                                Iscriviti                            </button>
4477                        </div>
4478                    </div>
4479                    <div class="flex gap-2 mt-3 pl-5 max-w-lg">
4480                        
4481        <div x-data="{
4482            checked: false,
4483            consentId: 5         }"
4484         id="checkbox-0"
4485         class="flex w-full last:mb-3">
4486        <div
4487            class="flex flex-wrap field choice ">
4488            <input type="hidden" name="amgdpr_agreement[newsletter_privacy_policy]"
4489                   value="0"/>
4490            <div class="flex flex-row">
4491                <input type="checkbox"
4492                       name="amgdpr_agreement[newsletter_privacy_policy]"
4493                       title="Newsletter - Privacy Policy"
4494                       value="1"
4495                       id="amprivacy-checkbox-6ac8d151335e8"
4496                       class="amgdpr-consent-checkbox mt-0.5"
4497                       x-model="checked"
4498                       @amgdpr-consent-accepted.window="event.detail === consentId && (checked = true)"
4499                                            required
4500                     />
4501                <label for="amprivacy-checkbox-6ac8d151335e8"
4502                       class="label">
4503                <span class="amgdpr-consent-span">
4504                    Letta l’<a href="/privacy-policy" target="_blank" class="underline">informativa privacy</a>, presto il mio consenso per ricevere newsletter e/o DEM                </span>
4505                </label>
4506            </div>
4507            <div class="h-0 w-full"></div>
4508        </div>
4509
4510        <input type="hidden"
4511               name="am-gdpr-checkboxes-from"
4512               value="subscription"/>
4513    </div>
4514<policy-placeholder></policy-placeholder>
4515                    </div>
4516                </div>
4517            </div>
4518        </div>
4519        <div>
4520            <template x-if="displayErrorMessage">
4521                <p class="flex items-center mage-error">
4522                    <span class="inline-block w-8 h-8 mr-3">
4523                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img">
4524  <path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
4525<title>exclamation-circle</title></svg>
4526                    </span>
4527                    <template x-for="errorMessage in errorMessages">
4528                        <span x-html="errorMessage"></span>
4529                    </template>
4530                </p>
4531            </template>
4532        </div>
4533    </form>
4534    <div class="w-full text-white">
4535        <p class="legal-notice my-2 text-xxs">
4536    Questo form è protetto da reCAPTCHA - vi si applicano la <a class="underline" href="https://policies.google.com/privacy" target="_blank" rel="noopener">Privacy Policy</a> e i <a class="underline" href="https://policies.google.com/terms" target="_blank" rel="noopener">Termini di Servizio</a> di Google.</p>
4537    </div>
4538    
4538<script type="text/javascript">
4539        function initNewsletterForm() {
4540            return {
4541                errors: 0,
4542                hasCaptchaToken: 0,
4543                displayErrorMessage: false,
4544                errorMessages: [],
4545                setErrorMessages(messages) {
4546                    this.errorMessages = [messages]
4547                    this.displayErrorMessage = this.errorMessages.length
4548                },
4549                submitForm() {
4550                    // Do not rename $form, the variable is expected to be declared in the recaptcha output
4551                    const $form = document.querySelector('#newsletter-validate-detail');
4552                        if (!this.hasCaptchaToken) {
4553        this.errors = 1;
4554
4555        const lockSubmitButton = () => {
4556            $form.querySelector('[type="submit"]')?.setAttribute('disabled', true);
4557        };
4558
4559        const failCaptcha = (errorMessage, exception = null) => {
4560            this.errors = 1;
4561            lockSubmitButton();
4562
4563            if (this.setErrorMessages) {
4564                this.setErrorMessages([errorMessage]);
4565                this.displayErrorMessage = true;
4566            } else {
4567                window.dispatchMessages && window.dispatchMessages([{ type: "error", text: errorMessage }], 5000);
4568            }
4569
4570            if (exception) {
4571                console.error(
4572                    exception ||
4573                    'An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?'
4574                );
4575            }
4576        };
4577
4578        const executeGreCaptcha = () => {
4579            grecaptcha.ready(() => {
4580                grecaptcha.execute(
4581                    '6LdDii8sAAAAAF1j_v4WIzmCV2phMFuJKWeFtEhJ',
4582                    {action: 'submit'}
4583                ).then((token) => {
4584                    const tokenElement = $form['g\u002Drecaptcha\u002Dresponse'];
4585
4586                    if (tokenElement && token && token.length > 0) {
4587                        $form['g\u002Drecaptcha\u002Dresponse'].value = token;
4588                        this.errors = 0;
4589                        this.hasCaptchaToken = 1;
4590                        (this.submitForm || $form.submit).call(this);
4591                    } else {
4592                        failCaptcha(
4593                            tokenElement
4594                                ? 'ReCaptcha\u0020validation\u0020failed.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
4595                                : 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
4596                        );
4597                    }
4598                }).catch((exception) => {
4599                    failCaptcha(
4600                        'ReCaptcha\u0020validation\u0020failed\u0020due\u0020to\u0020a\u0020technical\u0020error.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.',
4601                        exception
4602                    );
4603                });
4604            });
4605        };
4606
4607        if (window.grecaptcha) {
4608            executeGreCaptcha();
4609        } else {
4610            const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LdDii8sAAAAAF1j_v4WIzmCV2phMFuJKWeFtEhJ";
4611            const script = document.createElement('script');
4612            script.setAttribute('type', 'text/javascript');
4613            script.setAttribute('src', recaptchaUrl);
4614            document.head.appendChild(script);
4615
4616            script.addEventListener("load", executeGreCaptcha, false);
4617        }
4618    }
4619
4620                    if (this.errors === 0) {
4621                        $form.submit();
4622                    }
4623                }
4624            }
4625        }
4626    </script>
4626
4627</div>
4628                    </div>
4629                </div>
4630                        <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">
4631                 <template x-if="show">
4632                                 <div class="dna-footer-item-content">
4633                         <div data-content-type="html" data-appearance="default" data-intersect="false" data-element="main" data-decoded="true"><div class="bg-container-gray">
4634    <div class="lg:grid grid-cols-10 justify-between w-full py-5 md:pt-10 md:pb-8 xl:gap-8 container bg-container-gray pt-2">
4635        <div class="md:grid grid-cols-3 col-span-7 md:mr-8 gap-2">
4636            <div class="overflow-hidden md:mb-8 lg:mb-0 mb-3" x-data="{open: false}">
4637                <h5 class="font-bold md:pb-4 pt-3 md:pt-0 md:pb-3 flex justify-between font-baloo-bhaina" @click="open = !open">farma.it
4638                    <span class="text-xl md:hidden items-center flex" x-show="!open">
4639                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_down.svg" alt="down"/>
4640                    </span>
4641                    <span class="text-xl md:hidden items-center flex" x-show="open">
4642                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_up.svg" alt="up"/>
4643                    </span>
4644                </h5>
4645
4646                <ul class="md:block transition-all md:h-auto md:mb-0 md:!h-auto" :class="open ? '' : 'h-0'"
4647                    x-bind:style="open ? 'height:' + $el.childElementCount * 27 /* 25px element child width */ + 'px' : ''">
4648                    <li class="py-0.5"><a href="/chi-siamo" class="text-xs md:text-base hover:text-secondary">La nostra Azienda</a></li>
4649                    <li class="py-0.5"><a href="/coupon-e-promo" class="text-xs md:text-base hover:text-secondary">Coupon</a></li>
4650                    <li class="py-0.5"><a href="/farma-lovers" class="text-xs md:text-base hover:text-secondary">Programma Fedeltà Farma Lovers</a></li>
4651                    <li class="py-0.5"><a href="/lavora-con-noi" class="text-xs md:text-base hover:text-secondary">Lavora con noi</a></li>
4652                    <li class="py-0.5"><a href="/blog" class="text-xs md:text-base hover:text-secondary">I nostri consigli</a></li>
4653                    <li class="py-0.5"><a href="/parita-di-genere" class="text-xs md:text-base hover:text-secondary">Politiche per la parità di genere</a></li>
4654                </ul>
4655            </div>
4656
4657            <div class="overflow-hidden mb-3" x-data="{open: false}">
4658                <h5 class="font-bold md:pb-4 pt-3 md:pt-0 md:pb-3 flex justify-between font-baloo-bhaina" @click="open = !open">Servizi clienti
4659                    <span class="text-xl md:hidden items-center flex" x-show="!open">
4660                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_down.svg" alt="down"/>
4661                    </span>
4662                    <span class="text-xl md:hidden items-center flex" x-show="open">
4663                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_up.svg" alt="up"/>
4664                    </span>
4665                </h5>
4666
4667                <ul class="md:block transition-all md:h-auto md:mb-0 md:!h-auto" :class="open ? '' : 'h-0'"
4668                    x-bind:style="open ? 'height:' + $el.childElementCount * 27 + 'px' : ''">
4669                    <li class="py-0.5"><a href="/contattaci" class="text-xs md:text-base hover:text-secondary">Contattaci</a></li>
4670                    <li class="py-0.5"><a href="/richiamami" class="text-xs md:text-base hover:text-secondary">Richiamami</a></li>
4671                    <!-- <li class="py-0.5"><a href="/sales/guest/form" class="text-xs md:text-base hover:text-secondary">Stato dell'ordine</a></li> -->
4672                    <li class="py-0.5"><a href="/faq" class="text-xs md:text-base hover:text-secondary">FAQ</a></li>
4673                    <li class="py-0.5"><a href="/rma/guest/login" class="text-xs md:text-base hover:text-secondary">Resi</a></li>
4674                </ul>
4675            </div>
4676
4677            <div class="overflow-hidden mb-3" x-data="{open: false}">
4678                <h5 class="font-bold md:pb-4 pt-3 md:pt-0 md:pb-3 flex justify-between font-baloo-bhaina" @click="open = !open">Condizioni di vendita
4679                    <span class="text-xl md:hidden items-center flex" x-show="!open">
4680                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_down.svg" alt="down"/>
4681                    </span>
4682                    <span class="text-xl md:hidden items-center flex" x-show="open">
4683                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_up.svg" alt="up"/>
4684                    </span>
4685                </h5>
4686
4687                <ul class="md:block transition-all md:h-auto md:mb-0 md:!h-auto text-xs md:text-base " :class="open ? '' : 'h-0'"
4688                    x-bind:style="open ? 'height:' + $el.childElementCount * 27 + 'px' : ''">
4689                    <li class="py-0.5"><a href="/pagamenti-e-condizioni" class="hover:text-secondary">Pagamenti & Condizioni</a></li>
4690                    <li class="py-0.5"><a href="/spedizioni" class="hover:text-secondary">Spedizioni</a></li>
4691                    <li class="py-0.5"><a href="/privacy-policy" class="hover:text-secondary">Privacy Policy</a></li>
4692                    <li class="py-0.5"><a href="/cookie-policy" class="hover:text-secondary">Cookie Policy</a></li>
4693                    <li class="py-0.5"><a href="/comunicazioni" class="hover:text-secondary">Comunicazioni</a></li>
4694                    <li class="py-0.5"><span class="hover:text-secondary cursor-pointer" onclick="Cookiebot.show();preventDefault()">Gestisci Cookie</span>
4695                    <li class="py-0.5"><a href="/garanzia-legale" class="hover:text-secondary">Garanzia legale UE – almeno 2 anni</a></li>
4696                    </li>
4697                </ul>
4698            </div>
4699
4700            <div class="overflow-hidden" x-data="{open: false}">
4701                <h5 class="font-bold md:pb-4 pt-3 md:pt-0 md:pb-3 flex justify-between font-baloo-bhaina pb-3" @click="open = !open">Servizi Offerti
4702                    <span class="text-xl md:hidden items-center flex" x-show="!open">
4703                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_down.svg" alt="down"/>
4704                    </span>
4705                    <span class="text-xl md:hidden items-center flex" x-show="open">
4706                        <img class='w-3 h-3' loading="lazy" src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/images/footer/icon/icon_arrow_up.svg" alt="up"/>
4707                    </span>
4708                </h5>
4709
4710                <ul class="md:block transition-all md:h-auto md:mb-0 md:!h-auto" :class="open ? 'mb-3' : 'h-0'"
4711                    x-bind:style="open ? 'height:' + $el.childElementCount * 32 + 'px' : ''">
4712                    <li class="mb-3"><p class="text-xs md:text-base flex gap-2 items-center">
4713                        <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>
4714                    <li class="mb-3"><p class="text-xs md:text-base flex gap-2 items-center">
4715                        <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>
4716                    <li class="mb-3"><p class="text-xs md:text-base flex gap-2 items-center">
4717                        <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>
4718                    <li><p class="text-xs md:text-base flex gap-2 items-center">
4719                        <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>
4720                </ul>
4721            </div>
4722
4723            <div class="overflow-hidden md:w-40">
4724                <h5 class="font-bold md:pb-4 pb-3 pt-3 md:pt-0 md:pb-3 font-baloo-bhaina">
4725                    Pagamenti Veloci & Sicuri
4726                </h5>
4727
4728                <div class="mb-4 flex gap-1.5 md:gap-2 flex-wrap">
4729                    <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"/>
4730                    <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"/>
4731                    <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"/>
4732                    <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"/>
4733                    <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"/>
4734                    <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"/>
4735                    <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/klarna.svg" alt="Klarna"/>
4736                    <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"/>
4737                    <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"/>
4738                    <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"/>
4739                    <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"/>
4740                    <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"/>
4741                </div>
4742            </div>
4743
4744            <div class="overflow-hidden md:w-40">
4745                <h5 class="font-bold md:pb-4 pb-3 pt-3 md:pt-0 font-baloo-bhaina">Consegna Gratuita in 24/72h</h5>
4746
4747                <div class="mb-4 flex gap-1.5 md:gap-2 flex-wrap">
4748                    <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"/>
4749                    <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"/>
4750<!-- <img title="Liccardi" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/media/wysiwyg/liccardi_orlandi.svg" alt="Liccardi"/> -->
4751<img title="InPost" class='w-auto h-7 md:h8' loading="lazy" src="https://www.farma.it/media/wysiwyg/inpost_orlandi.svg" alt="InPost"/>
4752<!-- <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"/> -->
4753                </div>
4754            </div>
4755        </div>
4756
4757        <div class="col-span-3">
4758            <div>
4759                <div>
4760                    <h5 class="font-bold md:pb-4 pb-3 pt-3 md:pt-0 md:pb-3 font-baloo-bhaina">Sito sicuro</h5>
4761                </div>
4762
4763                <div class="gap-4 mb-4 md:mb-9 md:flex">
4764<div style="display:flex;flex-direction:column;gap:8px;margin-bottom:8px">
4765<div class="feedaty_widget" data-ver="2021" data-id="66ab4361b28b3" data-type="merchant" data-variant="200x150-4" data-lang="all" data-gui="all"></div>
4766<a target="_blank" rel="noopener" href="https://www.farma.it/garanzia-legale">                                                                                                                                           
4767                              <picture class="rounded-lg md:mb-4 !block"><source type="image/webp" srcset="https://www.farma.it/media/wysiwyg/footer/badge/GARAN_Label_colour-968cd542.webp"><img loading="lazy" class="rounded-lg md:mb-4 !block" src="https://www.farma.it/media/wysiwyg/footer/badge/GARAN_Label_colour.jpg" alt="Garanzia Legale" style="width:140px;height:auto" loading="lazy"></picture>                                       
4768                          </a>
4769</div>
4770                    <div>
4771                        <a target="_blank" href="https://www.trovaprezzi.it/negozi/farmait">
4772                            <picture class="rounded-lg mb-2 md:mb-4 !block !visible"><source type="image/webp" srcset="https://www.farma.it/media/wysiwyg/footer/badge/trovaprezzi-418bf217.webp"><img loading="lazy" class="rounded-lg mb-2 md:mb-4 !block !visible" src="https://www.farma.it/media/wysiwyg/footer/badge/trovaprezzi.jpg" alt="Trovaprezzi" loading="lazy"></picture>
4773                        </a>
4774                        <a target="_blank" href="https://www.prezzifarmaco.it/scheda-negozio/farmait-by-antica-farmacia-orlandi-501">
4775                            <picture class="rounded-lg md:mb-4 !block !visible"><source type="image/webp" srcset="https://www.farma.it/media/wysiwyg/footer/badge/prezzifarmaco-5edf662d.webp"><img loading="lazy" class="rounded-lg md:mb-4 !block !visible" src="https://www.farma.it/media/wysiwyg/footer/badge/prezzifarmaco.jpg" alt="Prezzi Farmaco" loading="lazy"></picture>
4776                        </a>
4777<a href="https://www.farma.it/farmacia-antifumo">
4778                     <picture><source type="image/webp" srcset="https://www.farma.it/media/wysiwyg/footer/bollino_rettangolare_OK_1-ce63bed2.webp"><img src="https://www.farma.it/media/wysiwyg/footer/bollino_rettangolare_OK_1.png" alt="SITAB" loading="lazy" /></picture>
4779</a>
4780                    </div>
4781                </div>
4782            </div>
4783
4784            <div class="mb-8">
4785                <p class="text-xs mb-2 md:mb-4">Cliccando il badge, puoi verificare che Farma.it è un'entità regolarmente autorizzata dal Ministero della Salute a effettuare la vendita online di medicinali.</p>
4786
4787                <div class="flex gap-2 mb-6 md:mb-8">
4788                    <a target="_blank" href="https://www.salute.gov.it/LogoCommercioElettronico/CercaSitoEComm?useMode=getDettaglio&amp;VOLID=C016715">
4789                        <picture class="rounded-lg !block !visible"><source type="image/webp" srcset="https://www.farma.it/media/wysiwyg/footer/badge/farmacia-d29fbe1b.webp"><img loading="lazy" class="rounded-lg !block !visible" src="https://www.farma.it/media/wysiwyg/footer/badge/farmacia.jpg" alt="farmacia" loading="lazy"></picture>
4790                    </a>
4791                    <a target="_blank" href="https://www.salute.gov.it/LogoCommercioElettronicoVET/CercaSitoEComm?useMode=getDettaglio&VOLID=C016715&area=veterinari&id=5907&lingua=italiano&menu=vendite">
4792                        <picture class="rounded-lg !block !visible"><source type="image/webp" srcset="https://www.farma.it/media/wysiwyg/footer/badge/VET-fdaf9e0c.webp"><img loading="lazy" class="rounded-lg !block !visible" src="https://www.farma.it/media/wysiwyg/footer/badge/VET.jpg" alt="VET" loading="lazy"></picture>
4793                    </a>
4794                </div>
4795<div class="mb-2 md:mb-4 flex gap-2">
4796<a href="https://apps.apple.com/it/app/farma-it/id6740766576" target="_blank">
4797<svg id="livetype" xmlns="http://www.w3.org/2000/svg" width="135" viewB
4797ox="0 0 119.66407 40">
4798  <title>Download_on_the_App_Store_Badge_IT_RGB_blk_100317</title>
4799  <g>
4800    <g>
4801      <g>
4802        <path d="M110.13477,0H9.53468c-.3667,0-.729,0-1.09473.002-.30615.002-.60986.00781-.91895.0127A13.21476,13.21476,0,0,0,5.5171.19141a6.66509,6.66509,0,0,0-1.90088.627A6.43779,6.43779,0,0,0,1.99757,1.99707,6.25844,6.25844,0,0,0,.81935,3.61816a6.60119,6.60119,0,0,0-.625,1.90332,12.993,12.993,0,0,0-.1792,2.002C.00587,7.83008.00489,8.1377,0,8.44434V31.5586c.00489.3105.00587.6113.01515.9219a12.99232,12.99232,0,0,0,.1792,2.0019,6.58756,6.58756,0,0,0,.625,1.9043A6.20778,6.20778,0,0,0,1.99757,38.001a6.27445,6.27445,0,0,0,1.61865,1.1787,6.70082,6.70082,0,0,0,1.90088.6308,13.45514,13.45514,0,0,0,2.0039.1768c.30909.0068.6128.0107.91895.0107C8.80567,40,9.168,40,9.53468,40H110.13477c.3594,0,.7246,0,1.084-.002.3047,0,.6172-.0039.9219-.0107a13.279,13.279,0,0,0,2-.1768,6.80432,6.80432,0,0,0,1.9082-.6308,6.27742,6.27742,0,0,0,1.6172-1.1787,6.39482,6.39482,0,0,0,1.1816-1.6143,6.60413,6.60413,0,0,0,.6191-1.9043,13.50643,13.50643,0,0,0,.1856-2.0019c.0039-.3106.0039-.6114.0039-.9219.0078-.3633.0078-.7246.0078-1.0938V9.53613c0-.36621,0-.72949-.0078-1.09179,0-.30664,0-.61426-.0039-.9209a13.5071,13.5071,0,0,0-.1856-2.002,6.6177,6.6177,0,0,0-.6191-1.90332,6.46619,6.46619,0,0,0-2.7988-2.7998,6.76754,6.76754,0,0,0-1.9082-.627,13.04394,13.04394,0,0,0-2-.17676c-.3047-.00488-.6172-.01074-.9219-.01269-.3594-.002-.7246-.002-1.084-.002Z" style="fill: #a6a6a6"></path>
4803        <path d="M8.44483,39.125c-.30468,0-.602-.0039-.90429-.0107a12.68714,12.68714,0,0,1-1.86914-.1631,5.88381,5.88381,0,0,1-1.65674-.5479,5.40573,5.40573,0,0,1-1.397-1.0166,5.32082,5.32082,0,0,1-1.02051-1.3965,5.72186,5.72186,0,0,1-.543-1.6572,12.41351,12.41351,0,0,1-.1665-1.875c-.00634-.2109-.01464-.9131-.01464-.9131V8.44434S.88185,7.75293.8877,7.5498a12.37039,12.37039,0,0,1,.16553-1.87207,5.7555,5.7555,0,0,1,.54346-1.6621A5.37349,5.37349,0,0,1,2.61183,2.61768,5.56543,5.56543,0,0,1,4.01417,1.59521a5.82309,5.82309,0,0,1,1.65332-.54394A12.58589,12.58589,0,0,1,7.543.88721L8.44532.875H111.21387l.9131.0127a12.38493,12.38493,0,0,1,1.8584.16259,5.93833,5.93833,0,0,1,1.6709.54785,5.59374,5.59374,0,0,1,2.415,2.41993,5.76267,5.76267,0,0,1,.5352,1.64892,12.995,12.995,0,0,1,.1738,1.88721c.0029.2832.0029.5874.0029.89014.0079.375.0079.73193.0079,1.09179V30.4648c0,.3633,0,.7178-.0079,1.0752,0,.3252,0,.6231-.0039.9297a12.73126,12.73126,0,0,1-.1709,1.8535,5.739,5.739,0,0,1-.54,1.67,5.48029,5.48029,0,0,1-1.0156,1.3857,5.4129,5.4129,0,0,1-1.3994,1.0225,5.86168,5.86168,0,0,1-1.668.5498,12.54218,12.54218,0,0,1-1.8692.1631c-.2929.0068-.5996.0107-.8974.0107l-1.084.002Z"></path>
4804      </g>
4805      <g id="_Group_" data-name="&lt;Group&gt;">
4806        <g id="_Group_2" data-name="&lt;Group&gt;">
4807          <g id="_Group_3" data-name="&lt;Group&gt;">
4808            <path id="_Path_" data-name="&lt;Path&gt;" d="M24.76888,20.30068a4.94881,4.94881,0,0,1,2.35656-4.15206,5.06566,5.06566,0,0,0-3.99116-2.15768c-1.67924-.17626-3.30719,1.00483-4.1629,1.00483-.87227,0-2.18977-.98733-3.6085-.95814a5.31529,5.31529,0,0,0-4.47292,2.72787c-1.934,3.34842-.49141,8.26947,1.3612,10.97608.9269,1.32535,2.01018,2.8058,3.42763,2.7533,1.38706-.05753,1.9051-.88448,3.5794-.88448,1.65876,0,2.14479.88448,3.591.8511,1.48838-.02416,2.42613-1.33124,3.32051-2.66914a10.962,10.962,0,0,0,1.51842-3.09251A4.78205,4.78205,0,0,1,24.76888,20.30068Z" style="fill: #fff"></path>
4809            <path id="_Path_2" data-name="&lt;Path&gt;" d="M22.03725,12.21089a4.87248,4.87248,0,0,0,1.11452-3.49062,4.95746,4.95746,0,0,0-3.20758,1.65961,4.63634,4.63634,0,0,0-1.14371,3.36139A4.09905,4.09905,0,0,0,22.03725,12.21089Z" style="fill: #fff"></path>
4810          </g>
4811        </g>
4812        <g>
4813          <path d="M42.30227,27.13965h-4.7334l-1.13672,3.35645H34.42727l4.4834-12.418h2.083l4.4834,12.418H43.438ZM38.0591,25.59082h3.752l-1.84961-5.44727h-.05176Z" style="fill: #fff"></path>
4814          <path d="M55.15969,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H48.4302v1.50586h.03418a3.21162,3.21162,0,0,1,2.88281-1.60059C53.645,21.34766,55.15969,23.16406,55.15969,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C52.30227,29.01563,53.24953,27.81934,53.24953,25.96973Z" style="fill: #fff"></path>
4815          <path d="M65.12453,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H58.395v1.50586h.03418A3.21162,3.21162,0,0,1,61.312,21.34766C63.60988,21.34766,65.12453,23.16406,65.12453,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C62.26711,29.01563,63.21438,27.81934,63.21438,25.96973Z" style="fill: #fff"></path>
4816          <path d="M71.71047,27.03613c.1377,1.23145,1.334,2.04,2.96875,2.04,1.56641,0,2.69336-.80859,2.69336-1.9
48161895,0-.96387-.67969-1.541-2.28906-1.93652l-1.60937-.3877c-2.28027-.55078-3.33887-1.61719-3.33887-3.34766,0-2.14258,1.86719-3.61426,4.51855-3.61426,2.624,0,4.42285,1.47168,4.4834,3.61426h-1.876c-.1123-1.23926-1.13672-1.9873-2.63379-1.9873s-2.52148.75684-2.52148,1.8584c0,.87793.6543,1.39453,2.25488,1.79l1.36816.33594c2.54785.60254,3.60645,1.626,3.60645,3.44238,0,2.32324-1.85059,3.77832-4.79395,3.77832-2.75391,0-4.61328-1.4209-4.7334-3.667Z" style="fill: #fff"></path>
4817          <path d="M83.34621,19.2998v2.14258h1.72168v1.47168H83.34621v4.99121c0,.77539.34473,1.13672,1.10156,1.13672a5.80752,5.80752,0,0,0,.61133-.043v1.46289a5.10351,5.10351,0,0,1-1.03223.08594c-1.833,0-2.54785-.68848-2.54785-2.44434V22.91406H80.16262V21.44238H81.479V19.2998Z" style="fill: #fff"></path>
4818          <path d="M86.065,25.96973c0-2.84863,1.67773-4.63867,4.29395-4.63867,2.625,0,4.29492,1.79,4.29492,4.63867,0,2.85645-1.66113,4.63867-4.29492,4.63867C87.72609,30.6084,86.065,28.82617,86.065,25.96973Zm6.69531,0c0-1.9541-.89551-3.10742-2.40137-3.10742s-2.40039,1.16211-2.40039,3.10742c0,1.96191.89453,3.10645,2.40039,3.10645S92.76027,27.93164,92.76027,25.96973Z" style="fill: #fff"></path>
4819          <path d="M96.18606,21.44238h1.77246v1.541h.043a2.1594,2.1594,0,0,1,2.17773-1.63574,2.86616,2.86616,0,0,1,.63672.06934v1.73828a2.59794,2.59794,0,0,0-.835-.1123,1.87264,1.87264,0,0,0-1.93652,2.083v5.37012h-1.8584Z" style="fill: #fff"></path>
4820          <path d="M109.3843,27.83691c-.25,1.64355-1.85059,2.77148-3.89844,2.77148-2.63379,0-4.26855-1.76465-4.26855-4.5957,0-2.83984,1.64355-4.68164,4.19043-4.68164,2.50488,0,4.08008,1.7207,4.08008,4.46582v.63672h-6.39453v.1123a2.358,2.358,0,0,0,2.43555,2.56445,2.04834,2.04834,0,0,0,2.09082-1.27344Zm-6.28223-2.70215h4.52637a2.1773,2.1773,0,0,0-2.2207-2.29785A2.292,2.292,0,0,0,103.10207,25.13477Z" style="fill: #fff"></path>
4821        </g>
4822      </g>
4823    </g>
4824    <g id="_Group_4" data-name="&lt;Group&gt;">
4825      <g>
4826        <path d="M36.30861,13.09326c.07813.56641.63184.92627,1.43066.92627.74414,0,1.29-.38428,1.29-.91357,0-.45508-.34766-.728-1.1377-.91406l-.76855-.186c-1.0791-.25244-1.57129-.77344-1.57129-1.6499,0-1.063.86816-1.77,2.1709-1.77a1.94737,1.94737,0,0,1,2.15039,1.71191h-.90234A1.13875,1.13875,0,0,0,37.71,9.40479c-.73242,0-1.21973.35156-1.21973.88916,0,.42578.31445.66992,1.0918.85156l.65723.16162c1.22363.28516,1.72852.78125,1.72852,1.67871,0,1.14111-.88477,1.85645-2.29883,1.85645-1.32324,0-2.21289-.68213-2.2793-1.749Z" style="fill: #fff"></path>
4827        <path d="M44.15432,11.6665a1.00546,1.00546,0,0,0-1.06348-.76465c-.74414,0-1.19922.57031-1.19922,1.52979,0,.97607.459,1.55908,1.19922,1.55908a.97873.97873,0,0,0,1.06348-.74023h.86426a1.762,1.762,0,0,1-1.92285,1.53418,2.06791,2.06791,0,0,1-2.11328-2.353,2.05305,2.05305,0,0,1,2.1084-2.32373,1.77731,1.77731,0,0,1,1.92773,1.55859Z" style="fill: #fff"></path>
4828        <path d="M45.90041,13.42432c0-.81055.60352-1.27783,1.6748-1.34424l1.21973-.07031v-.38867c0-.47559-.31445-.74414-.92187-.74414-.49609,0-.83984.18213-.93848.50049h-.86035c.09082-.77344.81836-1.26953,1.83984-1.26953,1.12891,0,1.76563.562,1.76563,1.51318v3.07666h-.85547v-.63281h-.07031a1.515,1.515,0,0,1-1.35254.707A1.36026,1.36026,0,0,1,45.90041,13.42432Zm2.89453-.38477v-.37646l-1.09961.07031c-.62012.0415-.90137.25244-.90137.64941,0,.40527.35156.64111.835.64111A1.0615,1.0615,0,0,0,48.79494,13.03955Z" style="fill: #fff"></path>
4829        <path d="M51.07131,10.19482h.85547v.69043h.06641a1.22092,1.22092,0,0,1,1.21582-.76514,1.86836,1.86836,0,0,1,.39648.03711v.877a2.43442,2.43442,0,0,0-.49609-.05371A1.05507,1.05507,0,0,0,51.96,12.03906v2.65869h-.88867Z" style="fill: #fff"></path>
4830        <path d="M54.53811,8.86328a.57572.57572,0,1,1,.5752.5415A.54735.54735,0,0,1,54.53811,8.86328Zm.13184,1.33154h.88574v4.50293h-.88574Z" style="fill: #fff"></path>
4831        <path d="M59.93752,11.6665a1.00546,1.00546,0,0,0-1.06348-.76465c-.74414,0-1.19922.57031-1.19922,1.52979,0,.97607.459,1.55908,1.19922,1.55908a.97873.97873,0,0,0,1.06348-.74023h.86426a1.762,1.762,0,0,1-1.92285,1.53418,2.06791,2.06791,0,0,1-2.11328-2.353,2.05305,2.05305,0,0,1,2.1084-2.32373,1.77731,1.77731,0,0,1,1.92773,1.55859Z" style="fill: #fff"></path>
4832        <path d="M61.68361,13.42432c0-.81055.60352-1.27783,1.6748-1.34424l1.21973-.07031v-.38867c0-.47559-.31445-.74414-.92187-.74414-.49609,0-.83984.18213-.93848.50049h-.86035c.09082-.77344.81836-1.26953,1.83984-1.26953,1.12891,0,1.76611.562,1.76611,1.51318v3.07666h-.856v-.63281h-.07031a1.515,1.515,0,0,1-1.35254.707A1.36026,1.36026,0,0,1,61.68361,13.42432Zm2.89453-.38477v-.37646l-1.09961.07031c-.62012.0415-.90137.25244-.90137.64941,0,.40527.35156.64111.835.64111A1.0615,1.0615,0,0,0,64.57815,13.03955Z" style="fill: #fff"></path>
4833        <path d="M70.94289,10.10791c1.0127,0,1.6748.47119,1.76172,1.26514h-.85254c-.082-.33057-.40527-.5415-.90918-.5415-.49609,0-.873.23535-.873.58691,0,.269.22754.43848.71582.55029l.748.17334c.85645.19873,1.25781.56689,1.25781,1.22852,0,.84766-.79,1.41406-1.86523,1.41406-1.07129,0-1.76953-.48389-1.84863-1.28174h.88965a.91365.91365,0,0,0,.97949.562c.55371,0,.94727-.248.94727-.60791,0-.26855-.21094-.44238-.66211-.5498l-.78516-.18213c-.85645-.20264-1.25293-.58691-1.25293-1.25684C69.19387,10.66992,69.92531,10.10791,70.94289,10.10791Z" style="fill: #fff"></path>
4834        <path d="M77.78469,14.69775h-.85645v-.71533h-.07031a1.35022,1.35022,0,0,1-1.36035.80225,1.4622,1.4622,0,0,1-1.55078-1.6665V10.19482h.88965v2.69189c0,.72754.293,1.0752.94629,1.0752a1.02228,1.02228,0,0,0,1.1123-1.1333V10.19482h.88965Z" style="fill: #fff"></path>
4835      </g>
4836    </g>
4837  </g>
4838</svg>
4839
4840
4841</a>
4842<a href="https://play.google.com/store/apps/details?id=com.developer.farmait" target="_blank">
4843<svg version="1.1" id="svg1372" width="150" viewBox="0 0 861.33331 255.2092" sodipodi:docname="google-play-badge-it.eps" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
4844  <defs id="defs1376">
4845    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1390">
4846      <path d="M 0,2207.03 H 6460 V 292.961 H 0 Z" id="path1388"></path>
4847    </clipPath>
4848    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1412">
4849      <path d="M 0,2207.04 H 6460 V 292.961 H 0 Z" id="path1410"></path>
4850    </clipPath>
4851  </defs>
4852  <sodipodi:namedview id="namedview1374" pagecolor="#ffffff" bordercolor="#000000" borderopacity="0.25" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" showgrid="false"></sodipodi:namedview>
4853  <g id="g1380" inkscape:groupmode="layer" inkscape:label="Page 1" transform="matrix(1.3333333,0,0,-1.3333333,-5.5867668e-7,294.27066)">
4854    <g id="g1382" transform="scale(0.1)">
4855      <g id="g1384">
4856        <g id="g1386" clip-path="url(#clipPath1390)">
4857          <path d="M 6220.74,292.969 H 239.262 C 107.668,292.969 0,400.629 0,532.23 v 1435.55 c 0,131.6 107.668,239.26 239.262,239.26 H 6220.74 c 131.59,0 239.26,-107.66 239.26,-239.26 V 532.23 c 0,-131.601 -107.67,-239.261 -239.26,-239.261" style="fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1392"></path>
4858          <path d="M 6220.74,2207.03 H 239.262 C 107.668,2207.03 0,2099.36 0,1967.77 V 532.219 C 0,400.621 107.668,292.961 239.262,292.961 H 6220.74 c 131.59,0 239.26,107.66 239.26,239.258 V 1967.77 c 0,131.59 -107.67,239.26 -239.26,239.26 m 0,-38.28 c 110.83,0 200.98,-90.15 200.98,-200.98 V 532.219 c 0,-110.828 -90.15,-200.981 -200.98,-200.981 H 239.262 c -110.828,0 -200.9807,90.153 -200.9807,200.981 V 1967.77 c 0,110.83 90.1527,200.98 200.9807,200.98 H 6220.74" style="fill:#a2a2a1;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1394"></path>
4859          <path d="m 5117.09,771.48 h 89.29 v 598.19 h -89.29 z m 804.24,382.72 -102.35,-259.36 h -3.06 L 5709.68,1154.2 H 5613.5 L 5772.8,791.719 5681.98,590.07 h 93.12 l 245.53,564.13 z M 5414.96,839.43 c -29.28,0 -70.05,14.64 -70.05,50.808 0,46.184 50.77,63.844 94.65,63.844 39.24,0 57.71,-8.473 81.59,-20 -6.94,-55.422 -54.65,-94.652 -106.19,-94.652 m 10.77,327.83 c -64.65,0 -131.64,-28.47 -159.35,-91.54 l 79.29,-33.12 c 16.95,33.12 48.48,43.89 81.59,43.89 46.18,0 93.12,-27.71 93.89,-76.95 v -6.17 c -16.18,9.23 -50.82,23.06 -93.12,23.06 -85.42,0 -172.41,-46.942 -172.41,-134.649 0,-80.062 70.05,-131.601 148.53,-131.601 60.05,0 93.12,26.898 113.94,58.48 h 3.06 v -46.18 h 86.18 v 229.36 c 0,106.18 -79.24,165.42 -181.6,165.42 m -551.83,-85.89 h -127 v 205.09 h 127 c 66.76,0 104.65,-55.32 104.65,-102.55 0,-46.37 -37.89,-102.54 -104.65,-102.54 m -2.29,288.3 H 4657.66 V 771.48 h 89.24 v 226.622 h 124.71 c 98.95,0 196.24,71.688 196.24,185.808 0,114.13 -97.29,185.76 -196.24,185.76 M 3704.93,839.328 c -61.68,0 -113.31,51.633 -113.31,122.551 0,71.681 51.63,124.131 113.31,124.131 60.91,0 108.67,-52.45 108.67,-124.131 0,-70.918 -47.76,-122.551 -108.67,-122.551 m 102.5,281.372 h -3.06 c -20.05,23.88 -58.57,45.51 -107.14,45.51 -101.79,0 -195.05,-89.44 -195.05,-204.331 0,-114.078 93.26,-202.75 195.05,-202.75 48.57,0 87.09,21.582 107.14,46.269 h 3.06 v -29.277 c 0,-77.902 -41.59,-119.492 -108.67,-119.492 -54.75,0 -88.67,39.293 -102.55,72.453 l -77.85,-32.402 c 22.34,-53.969 81.73,-120.25 180.4,-120.25 104.84,0 193.51,61.679 193.51,211.992 v 365.438 h -84.84 z M 3953.9,771.48 h 89.44 v 598.24 h -89.44 z m 221.27,197.34 c -2.3,78.67 60.92,118.72 106.38,118.72 35.5,0 65.55,-17.71 75.55,-43.16 z m 277.54,67.85 c -16.99,45.51 -68.62,129.54 -174.23,129.54 -104.84,0 -191.93,-82.5 -191.93,-203.569 0,-114.071 86.32,-203.512 201.93,-203.512 93.31,0 147.24,57.043 169.64,90.199 l -69.39,46.274 c -23.16,-33.922 -54.74,-56.274 -100.25,-56.274 -45.45,0 -77.85,20.82 -98.67,61.633 l 272.14,112.599 z m -2168.07,67.04 v -86.32 h 206.58 c -6.18,-48.57 
4859-22.35,-84.031 -46.99,-108.671 -30.1,-30.098 -77.14,-63.219 -159.59,-63.219 -127.24,0 -226.67,102.5 -226.67,229.74 0,127.19 99.43,229.69 226.67,229.69 68.62,0 118.72,-26.94 155.71,-61.63 l 60.91,60.86 c -51.67,49.34 -120.25,87.14 -216.62,87.14 -174.23,0 -320.7,-141.88 -320.7,-316.06 0,-174.279 146.47,-316.111 320.7,-316.111 94.03,0 164.95,30.871 220.45,88.672 57.04,57.039 74.8,137.187 74.8,201.979 0,20.05 -1.54,38.52 -4.65,53.93 z m 530.1,-264.382 c -61.63,0 -114.84,50.871 -114.84,123.313 0,73.269 53.21,123.369 114.84,123.369 61.68,0 114.89,-50.1 114.89,-123.369 0,-72.442 -53.21,-123.313 -114.89,-123.313 m 0,326.882 c -112.55,0 -204.28,-85.61 -204.28,-203.569 0,-117.141 91.73,-203.512 204.28,-203.512 112.55,0 204.33,86.371 204.33,203.512 0,117.959 -91.78,203.569 -204.33,203.569 m 445.69,-326.882 c -61.68,0 -114.89,50.871 -114.89,123.313 0,73.269 53.21,123.369 114.89,123.369 61.69,0 114.85,-50.1 114.85,-123.369 0,-72.442 -53.16,-123.313 -114.85,-123.313 m 0,326.882 c -112.54,0 -204.28,-85.61 -204.28,-203.569 0,-117.141 91.74,-203.512 204.28,-203.512 112.55,0 204.28,86.371 204.28,203.512 0,117.959 -91.73,203.569 -204.28,203.569" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1396"></path>
4860          <path d="M 991.355,1277.56 481.879,736.828 c 0.047,-0.09 0.047,-0.238 0.098,-0.328 15.644,-58.719 69.238,-101.93 132.882,-101.93 25.457,0 49.336,6.891 69.817,18.95 l 1.625,0.96 573.459,330.891 -268.405,292.189" style="fill:#eb3131;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1398"></path>
4861          <path d="m 1506.77,1369.63 -0.48,0.34 -247.59,143.51 -278.927,-248.21 279.927,-279.84 246.25,142.07 c 43.16,23.36 72.5,68.86 72.5,121.31 0,52.16 -28.91,97.42 -71.68,120.82" style="fill:#f6b60b;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1400"></path>
4862          <path d="m 481.867,1763.11 c -3.062,-11.29 -4.687,-23.16 -4.687,-35.41 V 772.191 c 0,-12.25 1.625,-24.113 4.738,-35.363 l 526.942,526.902 -526.993,499.38" style="fill:#5778c5;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1402"></path>
4863          <path d="m 995.117,1249.95 263.663,263.62 -572.784,332.09 c -20.816,12.49 -45.125,19.67 -71.109,19.67 -63.641,0 -117.332,-43.31 -132.981,-102.07 0,-0.05 -0.047,-0.1 -0.047,-0.15 l 513.258,-513.16" style="fill:#3bad49;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1404"></path>
4864        </g>
4865      </g>
4866      <g id="g1406">
4867        <g id="g1408" clip-path="url(#clipPath1412)">
4868          <path d="m 2093.53,1621.88 c 33.87,0 60.16,9.36 78.89,28.09 18.73,18.74 28.1,44.61 28.1,77.64 0,33.03 -9.37,58.92 -28.1,77.65 -18.73,18.73 -45.02,28.1 -78.89,28.1 h -48.29 v -211.48 z m -94.08,254.78 h 95.33 c 30.81,0 57.66,-6.25 80.55,-18.74 22.9,-12.49 40.52,-30.04 52.88,-52.66 12.35,-22.63 18.52,-48.5 18.52,-77.65 0,-29.14 -6.17,-55.02 -18.52,-77.64 -12.36,-22.62 -29.98,-40.17 -52.88,-52.66 -22.89,-12.49 -49.74,-18.73 -80.55,-18.73 h -95.33 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1414"></path>
4869          <path d="m 2306.26,1876.66 h 45.79 v -298.08 h -45.79 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1416"></path>
4870          <path d="m 2447.81,1593.56 c -19.71,14.43 -33.45,34.69 -41.22,60.78 l 43.3,17.49 c 4.44,-16.65 12.35,-30.26 23.73,-40.8 11.37,-10.55 25.11,-15.82 41.22,-15.82 14.98,0 27.68,3.88 38.08,11.66 10.41,7.77 15.62,18.45 15.62,32.05 0,12.49 -4.58,22.83 -13.74,31.02 -9.16,8.19 -24.98,16.17 -47.46,23.94 l -18.73,6.66 c -20.27,7.21 -37.12,17.28 -50.59,30.18 -13.46,12.91 -20.19,30.04 -20.19,51.42 0,14.7 3.96,28.31 11.87,40.79 7.91,12.49 19,22.34 33.3,29.56 14.3,7.22 30.46,10.83 48.51,10.83 25.81,0 46.48,-6.32 62.03,-18.94 15.53,-12.64 26.08,-26.86 31.64,-42.68 l -41.22,-17.49 c -2.78,10 -8.61,18.6 -17.48,25.82 -8.89,7.21 -20.4,10.82 -34.56,10.82 -13.6,0 -25.12,-3.61 -34.55,-10.82 -9.44,-7.22 -14.15,-16.38 -14.15,-27.48 0,-10.27 4.22,-18.8 12.69,-25.6 8.46,-6.81 21.57,-13.25 39.34,-19.36 l 19.15,-6.66 c 25.53,-8.89 45.23,-20.4 59.12,-34.55 13.88,-14.16 20.81,-33.04 20.81,-56.62 0,-19.43 -4.92,-35.74 -14.78,-48.92 -9.85,-13.19 -22.48,-22.96 
4870-37.88,-29.35 -15.41,-6.38 -31.16,-9.57 -47.25,-9.57 -24.71,0 -46.91,7.21 -66.61,21.64" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1418"></path>
4871          <path d="m 2777.94,1737.61 c 15.27,0 27.54,4.78 36.85,14.36 9.29,9.58 13.94,20.74 13.94,33.51 0,12.77 -4.65,23.94 -13.94,33.52 -9.31,9.57 -21.58,14.36 -36.85,14.36 h -57.87 v -95.75 z m -103.66,139.05 h 102.41 c 17.77,0 34.06,-3.89 48.92,-11.66 14.84,-7.78 26.64,-18.6 35.39,-32.47 8.74,-13.89 13.11,-29.57 13.11,-47.05 0,-17.48 -4.37,-33.16 -13.11,-47.04 -8.75,-13.88 -20.55,-24.71 -35.39,-32.47 -14.86,-7.77 -31.15,-11.66 -48.92,-11.66 h -56.62 v -115.73 h -45.79 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1420"></path>
4872          <path d="m 3122.01,1629.57 c 16.52,9.58 29.56,22.9 39.14,39.97 9.58,17.07 14.36,36.43 14.36,58.07 0,21.66 -4.78,41.01 -14.36,58.08 -9.58,17.07 -22.62,30.39 -39.14,39.97 -16.51,9.57 -34.76,14.36 -54.74,14.36 -19.98,0 -38.23,-4.79 -54.75,-14.36 -16.51,-9.58 -29.55,-22.9 -39.13,-39.97 -9.57,-17.07 -14.36,-36.42 -14.36,-58.08 0,-21.64 4.79,-41 14.36,-58.07 9.58,-17.07 22.62,-30.39 39.13,-39.97 16.52,-9.57 34.77,-14.36 54.75,-14.36 19.98,0 38.23,4.79 54.74,14.36 z m -133.42,-36.84 c -23.6,13.88 -42.12,32.68 -55.58,56.41 -13.47,23.74 -20.19,49.89 -20.19,78.47 0,28.59 6.72,54.75 20.19,78.48 13.46,23.73 31.98,42.53 55.58,56.41 23.58,13.88 49.81,20.82 78.68,20.82 28.87,0 55.02,-6.94 78.47,-20.82 23.45,-13.88 41.91,-32.68 55.38,-56.41 13.45,-23.73 20.18,-49.89 20.18,-78.48 0,-28.58 -6.73,-54.73 -20.18,-78.47 -13.47,-23.73 -31.93,-42.53 -55.38,-56.41 -23.45,-13.88 -49.6,-20.81 -78.47,-20.81 -28.87,0 -55.1,6.93 -78.68,20.81" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1422"></path>
4873          <path d="m 3280.41,1876.66 h 54.12 l 134.89,-218.99 h 2.5 l -2.5,57.46 v 161.53 h 45.38 v -298.08 h -47.46 l -141.55,230.22 h -2.5 l 2.5,-57.46 v -172.76 h -45.38 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1424"></path>
4874          <path d="m 3590.15,1876.66 h 45.79 v -298.08 h -45.79 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1426"></path>
4875          <path d="m 3827.45,1621.04 c 14.43,0 26.02,4.37 34.76,13.11 8.74,8.75 13.11,19.22 13.11,31.43 0,12.22 -4.51,22.76 -13.52,31.64 -9.02,8.89 -21.03,13.33 -36.02,13.33 h -69.11 v -89.51 z m -7.08,130.3 c 13.88,0 24.98,4.23 33.3,12.71 8.33,8.46 12.49,18.24 12.49,29.34 0,11.1 -4.1,20.75 -12.27,28.94 -8.19,8.18 -18.81,12.28 -31.86,12.28 h -65.36 v -83.27 z m -109.49,125.32 h 111.57 c 15.82,0 30.53,-3.48 44.13,-10.41 13.6,-6.94 24.36,-16.45 32.27,-28.52 7.91,-12.07 11.87,-25.47 11.87,-40.18 0,-14.71 -3.69,-27.54 -11.04,-38.5 -7.35,-10.97 -17.14,-19.36 -29.36,-25.19 v -2.08 c 15.55,-5.28 27.91,-14.02 37.07,-26.23 9.15,-12.21 13.73,-26.64 13.73,-43.3 0,-16.37 -4.23,-30.87 -12.7,-43.5 -8.47,-12.63 -19.84,-22.48 -34.14,-29.56 -14.3,-7.07 -29.9,-10.61 -46.83,-10.61 h -116.57 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1428"></path>
4876          <path d="m 3981.48,1876.66 h 45.79 v -298.08 h -45.79 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1430"></path>
4877          <path d="m 4102.63,1876.66 h 45.79 v -254.78 h 128.22 v -43.3 h -174.01 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1432"></path>
4878          <path d="m 4324.93,1876.66 h 180.69 v -43.3 h -134.89 v -84.09 h 121.56 v -43.3 h -121.56 v -84.09 h 134.89 v -43.3 h -180.69 v 298.08" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1434"></path>
4879          <path d="m 4680.03,1593.56 c -19.71,14.43 -33.45,34.69 -41.21,60.78 l 43.29,17.49 c 4.45,-16.65 12.36,-30.26 23.73,-40.8 11.38,-10.55 25.12,-15.82 41.22,-15.82 14.98,0 27.69,3.88 38.09,11.66 10.41,7.77 15.61,18.45 15.61,32.05 0,12.49 -4.58,22.83 -13.74,31.02 -9.16,8.19 -24.98,16.17 -47.46,23.94 l -18.73,6.66 c -20.26,7.21 -37.12,17.28 -50.58,30.18 -13.46,12.91 -20.19,30.04 -20.19,51.42 0,14.7 3.96,28.31 11.87,40.79 7.91,12.49 19,22.34 33.3,29.56 14.29,7.22 30.46,10.83 48.5,10.83 25.81,0 46.49,-6.32 62.03,-18.94 15.54,-12.64 26.09,-26.86 31.64,-42.68 l -41.22,-17.49 c -2.77,10 -8.6,18.6 -17.48,25.82 -8.88,7.21 -20.4,10.82 -34.56,10.82 -13.59,0 -25.11,-3.61 -34.55,-10.82 -9.43,-7.22 -14.15,-16.38 -14.15,-27.48 0,-10.27 4.23,-18.8 12.7,-25.6 8.45,-6.81 21.57,-13.25 39.33,-19.36 l 19.15,-6.66 c 25.54,-8.89 45.24,-20.4 59.12,-34.55 13.88,-14.16 20.82,-33.04 20.82,-56.62 0,-19.43 -4.93,-35.74 -14.78,-48.92 -9.85,-13.19 -22.48,-22.96 
4879-37.88,-29.35 -15.41,-6.38 -31.16,-9.57 -47.26,-9.57 -24.7,0 -46.9,7.21 -66.61,21.64" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1436"></path>
4880          <path d="m 4952.93,1586.9 c -17.07,9.99 -30.25,24.15 -39.55,42.47 -9.31,18.31 -13.94,39.55 -13.94,63.69 v 183.6 h 45.37 v -186.1 c 0,-22.48 5.83,-40.65 17.49,-54.53 11.65,-13.89 28.16,-20.82 49.54,-20.82 21.65,0 38.3,6.93 49.95,20.82 11.66,13.88 17.49,32.05 17.49,54.53 v 186.1 h 45.38 v -183.6 c 0,-23.87 -4.58,-44.96 -13.74,-63.28 -9.16,-18.31 -22.21,-32.54 -39.13,-42.67 -16.93,-10.13 -36.92,-15.19 -59.95,-15.19 -22.21,0 -41.85,4.99 -58.91,14.98" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path1438"></path>
4881        </g>
4882      </g>
4883    </g>
4884  </g>
4885</svg>
4886
4887</a></div>
4888            </div>
4889        </div>
4890    </div>
4891</div>
4892
4893<script>
4894if(typeof FeedatyWidget !== 'undefined') {
4895FeedatyWidget.init();
4896}
4897</script>
4897</div>                     </div>
4898                             </template>
4899            </div>
4900                <div class="footer content">
4900<script>
4901  addEventListener('DOMContentLoaded', () => {
4902      for (const [selector, label] of Object.entries({"aside.sidebar-main":"Sidebar Main","aside.sidebar-additional":"Sidebar Additional"})) {
4903          const target = document.querySelector(selector);
4904          target && target.setAttribute('aria-label', label);
4905      }
4906  }, {once: true})
4907</script>
vendor: 1 bytes, line 4907
4907
4908<script>
4909    'use strict';
4910
4911    function amBrandsPopup() {
4912        let cached = false;
4913
4914        const displayError = (error) => {
4915            console.error(error);
4916            typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
4917                [{
4918                    type: "error",
4919                    text: "Qualcosa\u0020\u00E8\u0020andato\u0020storto.\u0020Riprova\u0020di\u0020nuovo."
4920                }], 10000
4921            );
4922        };
4923
4924        let letters = [
4925            "A","B","C","D",
4926            "E","F","G","H","I","J","K","L","M",
4927            "N","O","P","Q","R","S","T","U","V","W","X","Y","Z","#"
4928        ];
4929
4930        return {
4931            hoverPanelActiveId: null,
4932            selectedLetter: null,
4933            items: [],
4934            letters: [],
4935            showCount: null,
4936            showFilter: null,
4937            showImages: true,
4938            showSearch: null,
4939            loading: false,
4940            label: 'Brands',
4941            isPopupEnabled: false,
4942            isTopMenuItemEnabled: false,
4943            cache: false,
4944            isMobile: false,
4945
4946            initErrorMessages(errors) {
4947                const messages = [];
4948                for (let error in Object.keys(errors)) {
4949                    messages.push({type: 'error', text: errors[error].message});
4950                }
4951                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(messages, 10000);
4952            },
4953
4954            chooseLetter(letter) {
4955                this.selectedLetter = this.selectedLetter === letter ? null : letter;
4956            },
4957
4958            getQuery() {
4959                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                  } }"            },
4960
4961            /**
4962             * Retrieve media url for given path
4963             *
4964             * @param path
4965             * @returns {string}
4966             */
4967            getMediaUrl(path) {
4968                const baseUrl = BASE_URL.replace('index.php/', '');
4969                if (path.includes('://')) {
4970                    return path;
4971                }
4972
4973                let productImageUrl = `${baseUrl}${path}`;
4974                const regexDuplicateDomain = new RegExp(`^(https?:\/\/[^/]+).*\\1`);
4975                productImageUrl = productImageUrl.replace(regexDuplicateDomain, '$1');
4976
4977                return productImageUrl.includes('/product/placeholder/')
4978                    ? productImageUrl.replace(/\/media(?=\/static)/, '')
4979                    : productImageUrl;
4980            },
4981
4982            checkIsMobileResolution() {
4983                this.isMobile = window.matchMedia('(max-width: 1023px)').matches;
4984            },
4985
4986            getBrandUrl(url){
4987                return BASE_URL + url;
4988            },
4989
4990            init() {
4991                this.checkIsMobileResolution();
4992
4993                                    this.$watch('hoverPanelActiveId', (value) => {
4994                        if (value === 'am-brand') {
4995                            this.sendRequest();
4996                        }
4997                    });
4998                            },
4999
5000            /**
5001             * Get brands by letter
5002             *
5003             * @param result
5004             * @returns {{imageWidth: *, isTopMenuItemEnabled: *, showCount: *, displayAll: *, showFilter: *, showImages: *, isPopupEnabled: *, label: *, imageHeight: *, filterDisplayAll: *, brandsPage: *}}
5005             */
5006            settingsMapper(result) {
5007                const config = result.data.storeConfig?.amshopby_brand_general_brands_popup_config;
5008                return {
5009                    showImages: config.show_images,
5010                    showCount: config.show_count,
5011                    showFilter: config.show_filter,
5012                    imageWidth: config.image_width,
5013                    imageHeight: config.image_height,
5014                    filterDisplayAll: config.filter_display_all,
5015                    displayAll: config.display_zero,
5016                    isPopupEnabled: result.data.storeConfig?.amshopby_brand_general_brands_brands_popup,
5017                    label: result.data.storeConfig?.amshopby_brand_general_menu_item_label,
5018                    isTopMenuItemEnabled: result.data.storeConfig?.amshopby_brand_general_topmenu_enabled,
5019                    brandsPage: result.data.storeConfig?.amshopby_brand_general_brands_page,
5020                }
5021            },
5022
5023            /**
5024             * Send request to graphql
5025             *
5026             * @returns {Promise<any>}
5027             */
5028            async sendRequest() {
5029                if (this.isMobile) {
5030                    return false;
5031                }
5032
5033                this.loading = true;
5034
5035                try {
5036                    if (cached) {
5037                        this.loading = false;
5038                        return false;
5039                    }
5040
5041                    const response = await fetch('https://www.farma.it/graphql', {
5042                        method: 'POST',
5043                        headers: {
5044                            'Content-Type': 'application/json',
5045                            'Store': 'default'
5046                        },
5047                        credentials: 'include',
5048                        body: JSON.stringify({query: this.getQuery(), variables: {}})
5049                    });
5050
5051                    const result = await response.json();
5052
5053                    if (result?.errors) {
5054                        this.initErrorMessages(result.errors);
5055                        return;
5056                    }
5057
5058                    const data = result.data?.ambrandlist;
5059                    const mapper = this.settingsMapper(result);
5060
5061                    // Update component settings
5062                    Object.keys(mapper).forEach(config => {
5063                        this[config] = mapper[config];
5064                    });
5065
5066                    if (!this.filterDisplayAll) {
5067                        letters = data.all_letters.split(',');
5068                    }
5069
5070                    const items = data.items.map(brand => {
5071                        brand.image = brand.img
5072                            ? this.getMediaUrl(brand.img) : (brand.image ? this.getMediaUrl(brand.image) : null);
5073                        return brand;
5074                    });
5075
5076                    this.letters = letters.map(letter => ({
5077                        letter,
5078                        brands: this.getLetterItems(items, letter),
5079                    }));
5080
5081                    this.items = this.letters.filter(row => row.brands?.length > 0);
5082
5083                    cached = true;
5084                } catch (error) {
5085                    displayError(error);
5086                } finally {
5087                    this.loading = false;
5088                }
5089            },
5090
5091            /**
5092             * Get brands by letter
5093             *
5094             * @param items
5095             * @param letter
5096             * @returns {*}
5097             */
5098            getLetterItems(items, letter) {
5099                return items.filter(row => row.letter === letter);
5100            },
5101
5102            convertHtml(text) {
5103                let textField = document.createElement("textarea");
5104                textField.innerHTML = text;
5105                return textField.value;
5106            }
5107        }
5108    }
5109    
5110    function amBrandsPopupData() {
5111        return Object.assign(
5112            amBrandsPopup(),
5113            {
5114                brandPopupClass() {
5115                    return {
5116                        'hover:border-primary data-[active]:border-primary': !this.isPopupEnabled
5117                    }
5118                },
5119                labelPopupClass() {
5120                    return {'w-14 opacity-0': this.label === ''}
5121                },
5122                popupcontentClass() {
5123                    return {
5124                        'hidden' : this.hoverPanelActiveId !== 'am-brand',
5125                        'left-0' : `${this.$el.dataset.first}`,
5126                        'right-0' : `${this.$el.dataset.last}`
5127                    }
5128                },
5129                panelActiveMouseenterEvent() {
5130                    return this.hoverPanelActiveId = 'am-brand'
5131                },
5132                panelActiveMouseleaveEvent() {
5133                    return this.hoverPanelActiveId = null
5134                },
5135                isPopupShow() {
5136                    return this.hoverPanelActiveId === 'am-brand'
5137                },
5138                labelText(){
5139                    return this.label
5140                },
5141                isEnabledPopup(){
5142                    return this.isPopupEnabled
5143                },
5144                showExtMessage(){
5145                    return false
5146                },
5147                notLoading() {
5148                    return !this.loading
5149                },
5150                brandLabel() {
5151                    return this.brand.label
5152                },
5153                letterClass() {
5154                    return {
5155                        'border-blue-400 text-blue-400 bg-blue-100': this.selectedLetter === this.letter.letter,
5156                        'bg-gray-200 text-gray-700 cursor-default pointer-events-none': !this.letter.brands || this.letter.brands.length === 0
5157                    }
5158                },
5159                letterClickEvent(event) {
5160                    return this.chooseLetter(this.letter.letter)
5161                },
5162                letterBrands() {
5163                    return this.letter.brands
5164                },
5165                brandUrl() {
5166                    return this.getBrandUrl(this.brand.url)
5167                },
5168                brandImage() {
5169                    return this.brand.image
5170                },
5171                notBrandImage() {
5172                    return !this.brand.image
5173                },
5174                letterLetter() {
5175                    return this.letter.letter
5176                },
5177                brandBrandId() {
5178                    return this.brand.brandId
5179                },
5180                isLetterShow() {
5181                    return !this.selectedLetter || this.selectedLetter === this.letter.letter
5182                },
5183                brandImageMediaUrl() {
5184                    return this.getMediaUrl(this.brand.image)
5185                },
5186                brandImageStyle() {
5187                    return `max-width: ${this.imageWidth ? this.imageWidth + 'px' : '100px' };max-height: ${this.imageHeight ? this.imageHeight + 'px' : 'inherit'}`
5188                },
5189                brandsLabelStyle() {
5190                    return `min-width: ${this.imageWidth}px`
5191                },
5192                brandLabelFilter() {
5193                    return this.brand.label.charAt(0)
5194                },
5195                brandCnt() {
5196                    return '(' + this.brand.cnt + ')'
5197                }
5198            }
5199        )
5200    }
5201    window.addEventListener('alpine:init', () => Alpine.data('amBrandsPopupData', amBrandsPopupData), {once: true});
5202</script>
5202
5203</div><div class="after-footer footer content">
5204                                    <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">
5205                 <template x-if="show">
5206                                 <div class="dna-footer-item-content">
5207                         <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">
5208    <div class="md:flex justify-between text-white container lg:grid grid-cols-8">
5209        <div class="flex items-center order-2 col-span-2 mb-4 md:mb-0 w-60 socials">
5210            <h5 class="font-bold font-baloo-bhaina text-white">Seguici su</h5>
5211            <a target="_blank" href="https://www.instagram.com/farma.it/" class="ml-4">
5212                <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" />
5213            </a>
5214            <a target="_blank" href="https://www.facebook.com/farmapuntoit" class="ml-4">
5215                <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" />
5216            </a>
5217        </div>
5218        <div class="col-span-6">
5219            <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">
5220                <span class="flex gap-1.5"><span class="hidden md:block">&nbsp;&nbsp;-</span>CREDITS &nbsp;
5221                 <a href="https://www.dnafactory.it/" target="_blank" title="DNA Factory">
5222                    <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" />
5223                 </a>
5224                </span>
5225            </p>
5226
5227            <p class="text-xxs md:text-xs">Sede legale Via delle Repubbliche Marinare 128, 80147 Napoli </br>
5228Vendita online di medicinali senza obbligo di prescrizione effettuata tramite esercizio autorizzato dal Ministero della Salute – Codice identificativo n. 016715</p>
5229        </div>
5230    </div>
5231</div></div>                     </div>
5232                             </template>
5233            </div>
5234                </div></footer>
5235<script>
5236    function amBannerInjectorResolver () {
5237        const injectors = Object.values({"products.among.injector":{"position":14,"name":"amBannerAmongCategoryInjector"},"products.belowcart.injector":{"position":15,"name":"amBannerBelowCartInjector"}});
5238
5239        return {
5240            amBannerAmongCategoryInjector: function (sectionId, injectorParams) {
5241                const container = document.querySelector('[data-role="amasty-banner-container"][data-position="' + sectionId + '"]');
5242
5243                Object.keys(injectorParams.banners).map((id) => {
5244                    const params = injectorParams.banners[id];
5245                    const element = container.querySelector('[data-banner-id="' + id + '"]');
5246                    insertBannerAmongCategoryByConfig({
5247                        containerSelector: injectorParams.containerSelector,
5248                        itemSelector: injectorParams.itemSelector,
5249                        afterProductRow: params.afterProductRow,
5250                        afterProductNum: params.afterProductNum,
5251                        span: params.width
5252                    }, element);
5253                });
5254
5255                function insertBannerAmongCategoryByConfig (injectorConfig, element) {
5256                    const options = {
5257                        injectorConfig: {},
5258                        container: null,
5259                        after: null,
5260                        wrapper: null,
5261                        initialized: false,
5262                        gridSizes: ['sm', 'xl'],
5263                        bannerWidthClass: 'col-span',
5264                        ...injectorConfig
5265                    }
5266
5267                    insertBanner(element);
5268
5269                    function insertBanner(element) {
5270                        const initialized = setOptions();
5271
5272                        if (!initialized) {
5273                            return;
5274                        }
5275
5276                        element.classList.add('ambanners-injected-banner');
5277                        const wrapper = options.wrapper.cloneNode(true);
5278
5279                        wrapper.classList.remove('card', 'card-interactive');
5280                        addStylesForDifferentSizes(wrapper);
5281
5282                        insertWrapper(wrapper);
5283                        wrapper.append(element);
5284                    }
5285
5286                    function setOptions () {
5287                        const initialized = document.querySelector(options.containerSelector) !== null;
5288
5289                        if (!initialized) {
5290                            console.warn(
5291                                'Failed to initialize banner: Can\'t find an element with selector "' + options.containerSelector + '"'
5292                            );
5293
5294                            return;
5295                        }
5296
5297                        options.container = document.querySelector(options.containerSelector);
5298
5299                        setLineToInject();
5300
5301                        if (!options.after) {
5302                            return;
5303                        }
5304
5305                        setWrapper();
5306
5307                        return true;
5308                    }
5309
5310                    function setLineToInject() {
5311                        if (options.afterProductNum === -1) {
5312                            setFirstLineToInject();
5313                        } else {
5314                            setLineByPositionToInject();
5315                        }
5316                    }
5317
5318                    function setWrapper() {
5319                        if (options.after) {
5320                            options.wrapper = options.after.cloneNode();
5321                        }
5322                    }
5323
5324                    function setFirstLineToInject() {
5325                        options.after = document.querySelector(options.itemSelector);
5326                    }
5327
5328                    function setLineByPositionToInject() {
5329                        // calc banner insert offset
5330                        const offset = calculateOffsetBasedOnPreviousBanners();
5331
5332                        options.after = document.querySelectorAll(options.itemSelector)[options.afterProductNum - offset];
5333                    }
5334
5335                    function calculateOffsetBasedOnPreviousBanners () {
5336                        return [...document.querySelectorAll(`${options.itemSelector}`)]
5337                            ?.reduce((accumulator, amInjectedBannerWrapper) => {
5338                                const widthAttributeValue = Number(amInjectedBannerWrapper?.getAttribute('am-banner-span'))
5339
5340                                if (widthAttributeValue > 1) {
5341                                    accumulator += (widthAttributeValue - 1);
5342                                }
5343
5344                                return accumulator;
5345                            }, 0);
5346                    }
5347
5348                    function insertWrapper(insert) {
5349                        if (options.after) {
5350                            insertWrapperAfterFoundProduct(insert);
5351                        } else if (options.container) {
5352                            insertWrapperInProductListContainer(insert);
5353                        }
5354                    }
5355
5356                    function insertWrapperAfterFoundProduct(insert) {
5357                        if (options.afterProductNum === -1) {
5358                            options.after.parentNode.insertBefore(insert, options.after);
5359                        } else {
5360                            options.after.parentNode.insertBefore(insert, options.after.nextSibling);
5361                        }
5362                    }
5363
5364                    function insertWrapperInProductListContainer(insert) {
5365                        if (parseInt(options.afterProductRow) > 1) {
5366                            options.container.innerHTML += insert.innerHTML;
5367                        } else {
5368                            options.container.innerHTML = insert.innerHTML + options.container.innerHTML;
5369                        }
5370                    }
5371
5372                    function addStylesForDifferentSizes (wrapper) {
5373                        options.gridSizes?.forEach((size, index) => {
5374                            const widthValue = options.span > index + 1 ? index + 2 : options.span;
5375                            wrapper?.classList.add(`${size}:${options.bannerWidthClass}-${widthValue}`);
5376                            wrapper?.setAttribute('am-banner-span', widthValue);
5377                        });
5378                    }
5379                }
5380            },
5381
5382            amBannerBelowCartInjector: function (sectionId) {
5383                const belowProductAddToCartBanner = document.querySelector('.ambanners.ambanner-' + sectionId);
5384                belowProductAddToCartBanner.style.display = 'block';
5385                document.querySelectorAll('.product-item')?.forEach(product => {
5386                    product?.append(belowProductAddToCartBanner.cloneNode(true));
5387                });
5388                belowProductAddToCartBanner.style.display = 'none';
5389            },
5390
5391            resolve: function (position, injectorParams) {
5392                const injector = injectors.find((injector) => {
5393                    return injector.position === Number(position);
5394                });
5395
5396                return this[injector?.name]?.(position, injectorParams);
5397            }
5398        }
5399    }
5400</script>
5400
5401    <span class="data-fbq-success" data-fbq-success="true"></span>
5402
5403<div x-data="{...hyva.modal(), ...initAmGdprPolicyPopup()}" x-init="initGdprPopup()"
5404     x-spread="eventListeners" x-bind="eventListeners">
5405    <div x-cloak x-spread="overlay('amgdpr-policy-popup')" x-bind="overlay('amgdpr-policy-popup')"
5406         class="fixed inset-0 flex items-center justify-center text-left bg-black bg-opacity-50 z-40">
5407        <div x-ref="amgdpr-policy-popup" role="dialog" aria-labelledby="amgdpr-policy-content"
5408             class="flex flex-col  bg-white shadow-xl rounded-lg p-10 max-h-[95vh] max-w-6xl relative">
5409            <button @click="$dispatch('amgdpr-close-policy')" aria-label="Chiudi"
5410                    class="absolute right-4 top-4 text-gray-300 transition
5411                    hover:text-black focus:drop-shadow-md hover:drop-shadow-md">
5412                <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">
5413  <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"/>
5414<title>x</title></svg>
5415            </button>
5416            <div class="flex w-full">
5417                <p class="w-full text-3xl mb-5" x-text="title"></p>
5418            </div>
5419            <div x-show="notificationText && policyData.versionChanged" class="flex w-full">
5420                <p class="mb-4 p-4 bg-yellow-100 w-full" x-text="notificationText"></p>
5421            </div>
5422            <div id="amgdpr-policy-content" class="max-h-[500px] overflow-auto first:mx-0 child:mx-0"
5423                 x-html="policyText"></div>
5424            <div class="mt-8 flex w-full justify-center">
5425                <button x-focus-first @click="$dispatch('amgdpr-accept-policy')" type="button"
5426                        class="btn btn-primary font-bold"
5427                        aria-label="Ho&#x20;letto&#x20;e&#x20;Acconsento">
5428                    Ho letto e Acconsento                </button>
5429            </div>
5430        </div>
5431
5432    </div>
5433</div>
5434
5435<script>
5436    'use strict';
5437
5438    function initAmGdprPolicyPopup() {
5439        return {
5440            /**
5441             * @typedef PolicyData
5442             * @property {string} policyVersion
5443             * @property {boolean} show
5444             * @property {string} title
5445             * @property{boolean} versionChanged
5446             * @property {boolean} hideClose
5447             * @property {boolean} action
5448             */
5449
5450            eventListeners: {
5451                ['@amgdpr-accept-policy']() {
5452                    if (this.consentId) {
5453                        window.dispatchEvent(new CustomEvent('amgdpr-consent-accepted', {detail: this.consentId}));
5454                        this.consentId = undefined;
5455                        this.hide('amgdpr-policy-popup');
5456                    } else {
5457                        this.acceptPolicy();
5458                    }
5459                },
5460                ['@amgdpr-show-policy.window'](event) {
5461                    this.consentId = event.detail;
5462                    this.fetchPolicyContent().then(() => {
5463                        this.$nextTick(() => {
5464                            this.show('amgdpr-policy-popup');
5465                        });
5466                    });
5467                },
5468                ['@amgdpr-close-policy']() {
5469                    this.hide('amgdpr-policy-popup');
5470                }
5471            },
5472            textUrl: `${BASE_URL}gdpr/policy/policytext`,
5473            acceptUrl: `${BASE_URL}gdpr/policy/accept`,
5474            popupDataUrl: `${BASE_URL}gdpr/policy/popupData`,
5475            notificationText: 'We would like to inform you that our Privacy Policy has been amended.Please, read and accept the new terms.',
5476            showOnPageLoad: '',
5477            /**
5478             * @type PolicyData
5479             */
5480            policyData: {
5481                policyVersion: '',
5482                show: false,
5483                title: '',
5484                versionChanged: false,
5485                hideClose: false,
5486                action: true
5487            },
5488            title: '',
5489            policyText: '',
5490            consentId: undefined,
5491            initGdprPopup: function () {
5492                this.fetchPolicyData().then(() => {
5493                    if ((this.showOnPageLoad && this.policyData.show) || this.policyData.versionChanged) {
5494                        this.fetchPolicyContent().then(() => {
5495                            this.$nextTick(() => {
5496                                this.show('amgdpr-policy-popup');
5497                            });
5498                        });
5499                    }
5500                });
5501            },
5502
5503            /**
5504             * @returns {Promise}
5505             */
5506            fetchPolicyData: function () {
5507                return fetch(this.popupDataUrl)
5508                    .then(response => response.json())
5509                    .then((data) => {
5510                        this.policyData = {...data}
5511                    })
5512                    .catch(error => this.dispatchErrorMessage(error));
5513            },
5514
5515            /**
5516             * @returns {Promise}
5517             */
5518            fetchPolicyContent: function () {
5519                this.title = '';
5520                this.policyText = '';
5521
5522                const params = !!this.consentId
5523                    ? '?' + new URLSearchParams({consent_id: this.consentId})
5524                    : ''
5525
5526                return fetch(this.textUrl + params)
5527                    .then(response => response.json())
5528                    .then(policyContent => {
5529                        this.title = policyContent.title;
5530                        this.policyText = policyContent.content;
5531                    }).catch(error => this.dispatchErrorMessage(error));
5532            },
5533
5534            /**
5535             * @returns {void}
5536             */
5537            acceptPolicy: function () {
5538                window.dispatchEvent(new Event('amgdpr-loading-start'));
5539
5540                const body = new URLSearchParams({form_key: hyva.getFormKey(), ...this.policyData});
5541                const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
5542
5543                fetch(this.acceptUrl, {method: 'POST', body, headers: {'Content-Type': contentType}})
5544                    .then(response => response.json())
5545                    .then(data => {
5546                        if (data.error) {
5547                            this.dispatchErrorMessage(data.message)
5548                        } else {
5549                            this.notificationText = '';
5550                            this.hide('amgdpr-policy-popup');
5551                        }
5552                    })
5553                    .catch(error => this.dispatchErrorMessage(error))
5554                    .finally(() => window.dispatchEvent(new Event('amgdpr-loading-stop')));
5555            },
5556
5557            /**
5558             * @param {string} message
5559             * @returns {void}
5560             */
5561            dispatchErrorMessage: function (message) {
5562                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
5563                    {
5564                        type: "error",
5565                        text: message
5566                    }
5567                ]);
5568            }
5569        }
5570    }
5571</script>
5571
5572
5573
5574
5575
5576<script>
5577    function initFakeBrothers() {
5578        return {
5579            selected: 0,
5580            productId: 0,
5581            data: [],
5582            skeletonCount: 0,
5583            fetched: false,
5584            ajaxUrl: 'https://www.farma.it/fakeconfigurable/product/getBrothers/',
5585            showAttribute: false,
5586            attributeLabel: 'Color',
5587            optionDisplay: null,
5588            responsive: false,
5589            responsiveData: {
5590                children: [],
5591                childrenLenght: 0,
5592                itemSize: 0,
5593                itemOffset: 0,
5594                childrenSize: 0,
5595                boxSize: 0,
5596                hiddenCount: 0
5597            },
5598            init() {
5599                // Skeleton init
5600                if (this.skeletonCount) {
5601                    this.data = Array.from({length: this.skeletonCount}, () => ({}));
5602                }
5603                // Responsive init
5604                this.$nextTick(() => {
5605                    if (this.responsive && this.data.length) {
5606                        this.initResponsive();
5607                    }
5608                });
5609                // Brothers init
5610                if (this.productId) {
5611                    fetch(this.ajaxUrl + '?productId=' + this.productId)
5612                        .then(response => {
5613                            if (! response.ok) console.warn('GET request failed');
5614                            return response.json()
5615                        })
5616                        .then(result => {
5617                            if (this.showAttribute) {
5618                                result.data.forEach(function (item, index) {
5619                                    if (item.attribute == false) {
5620                                        result.data[index].attribute = '';
5621                                    }
5622                                });
5623                            }
5624                            this.data = result.data;
5625                            this.fetched = true;
5626                            // Attribute init
5627                            this.$nextTick(() => {
5628                                if (this.showAttribute) {
5629                                    // Siccome "x-ref" non funziona dentro gli elementi "template" devo usare "querySelector"
5630                                    this.optionDisplay = document.querySelector('[x-ref="optionDisplay"]');
5631                                    this.optionDisplay.innerText = this.data[0].attribute;
5632                                }
5633                            })
5634                        })
5635                        .catch(result => {
5636                            console.error(result.error);
5637                        })
5638                }
5639            },
5640            initResponsive() {
5641                this.responsiveData.children = this.$el.querySelectorAll('.brother');
5642                this.responsiveData.itemSize = this.responsiveData.children[0].offsetWidth + this.responsiveData.itemOffset;
5643                this.responsiveData.childrenLenght = this.responsiveData.children.length;
5644                this.responsiveData.childrenSize = this.responsiveData.childrenLenght * this.responsiveData.itemSize;
5645                this.calculateHiddenCount();
5646            },
5647            calculateHiddenCount() {
5648                if (this.responsive) {
5649                    this.responsiveData.boxSize = this.$el.offsetWidth;
5650
5651                    if (this.responsiveData.childrenSize > this.responsiveData.boxSize) {
5652                        this.responsiveData.hiddenCount =
5653                            Math.ceil((this.responsiveData.childrenSize - this.responsiveData.boxSize) / this.responsiveData.itemSize) + 1;
5654                    } else {
5655                        this.responsiveData.hiddenCount = 0;
5656                    }
5657                }
5658            },
5659            eventListeners: {
5660                ['@resize.window.debounce.50ms']() {
5661                    this.calculateHiddenCount();
5662                }
5663            }
5664        }
5665
5666    }
5667</script>
5667
5668<!-- Start Google Analytics 4 for Google Tag Manager by MagePal -->
5669        
5669<script type="text/javascript">
5670             (function() {
5671                window.addEventListener("private-content-loaded", event => {
5672                    const dataObject = event.detail.data['magepal-eegtm-jsdatalayer'] || {};
5673                    pushAddRemoveItemDataLayer(dataObject)
5674                });
5675
5676                const isObject = x => x === Object(x);
5677                const has = (x, p) => isObject(x) && x.hasOwnProperty(p);
5678                var itemListName = null;
5679                var itemListId = null;
5680
5681                function isEmpty(obj){
5682                    return JSON.stringify(obj) === '{}';
5683                }
5684
5685                function addDynamicElements(storedData, item) {
5686
5687                    if (has(storedData, 'index')) {
5688                        item.index = storedData.index;
5689                    }
5690
5691                    if (has(storedData, 'item_list_id')) {
5692                        item.item_list_id = itemListId = storedData.item_list_id;
5693                    }
5694
5695                    if (has(storedData, 'item_list_name')) {
5696                        item.item_list_name = itemListName = storedData.item_list_name;
5697                    }
5698                }
5699                /**
5700                 * Add click position/index to data
5701                 * @param ecommerceData
5702                 * @return {*}
5703                 */
5704                function processData(ecommerceData) {
5705                    var storedData = JSON.parse(window.localStorage.getItem("product-click-ga4"));
5706
5707                    ecommerceData.forEach((data) => {
5708                        if (has(data, 'parent_sku')
5709                            && isObject(storedData)
5710                            && has(storedData, 'item_id')
5711                            && data.parent_sku === storedData.item_id
5712                        ) {
5713                            addDynamicElements(storedData, data);
5714                        } else if (has(data, 'parent_sku')) {
5715                            var product = getProductBySku(data.parent_sku);
5716
5717                            if (product) {
5718                                addDynamicElements(product, data);
5719                            }
5720                        }
5721                    });
5722
5723                    return ecommerceData;
5724                }
5725
5726                 function getProductBySku(sku) {
5727                     var dlItems = window.dataLayer.find((item) => item?.ecommerce?.items)
5728
5729                     if (dlItems !== 'undefined') {
5730                         var dlItem = dlItems?.ecommerce?.items.find((item) => item.item_id === sku)
5731                         if (dlItem !== undefined) {
5732                             return dlItem;
5733                         }
5734                     }
5735
5736                     return false;
5737                 }
5738
5739                function pushAddRemoveItemDataLayer(data) {
5740                    if (isObject(data) && has(data, 'cart_items')) {
5741                        var ts = window.localStorage.getItem("magepal-eegtm-jsdatalayer-ts");
5742
5743                        if (ts !== 'undefined' && parseInt(ts) === parseInt(data.data_id)) {
5744                            return false;
5745                        } else {
5746                            window.localStorage.setItem("magepal-eegtm-jsdatalayer-ts", parseInt(data.data_id));
5747                        }
5748
5749                        var cartGenericLayer = {};
5750                        var dataLayer = window.dataLayer;
5751                        var self = this;
5752
5753                        data.cart_items.forEach((cartItem) =>  {
5754                            if (has(cartItem, 'event')) {
5755                                if (has(cartItem,'ecommerce')) {
5756                                    cartItem.ecommerce.currency = 'EUR';
5757                                }
5758
5759                                if (cartItem.event === 'add_to_cart') {
5760                                    var itemsAdded = processData(cartItem.ecommerce.items);
5761
5762                                    //$("body").trigger("mpGa4ItemAddToCart", [itemsAdded, dataLayer]);
5763                                    cartGenericLayer.add = {
5764                                        'products': itemsAdded
5765                                    };
5766                                }
5767
5768                                if (cartItem.event === 'remove_from_cart') {
5769                                    var itemsRemoved = processData(cartItem.ecommerce.items);
5770
5771                                    //$("body").trigger("mpGa4ItemRemoveFromCart", [itemsRemoved, dataLayer]);
5772                                    cartGenericLayer.remove = {
5773                                        'products': itemsRemoved
5774                                    };
5775                                }
5776                            }
5777
5778                            if (!isEmpty(cartGenericLayer)) {
5779                                cartItem.cart = cartGenericLayer;
5780                            }
5781                            cartItem._clear = true;
5782                            dataLayer.push(cartItem);
5783                        });
5784                    }
5785                }
5786            })();
5787        </script>
5787
5788    <!-- End Google Analytics 4 for Google Tag Manager by MagePal -->
5789
5790<script>
5791    document.addEventListener("alpine:initialized", () => {
5792        Alpine.store('dnafactoryGA4Promotions', {
5793            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
5793i 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\"]"}],
5794            sentViewPromotions: [],
5795            sentClickPromotions: [],
5796
5797            init() {
5798                let self = this;
5799                self.promotions.forEach(function (promotion) {
5800                    var promotionElement = document.querySelector(promotion['css_selector']);
5801                    if (promotionElement) {
5802                        let aElement = promotionElement;
5803                        if (promotionElement.tagName !== 'A') {
5804                            aElement = promotionElement.closest('[data-content-type] a[href]');
5805                        }
5806
5807                        if (aElement) {
5808                            if (!self.sentViewPromotions.includes(promotion['promotion_id'])) {
5809                                self.sendView(promotion, aElement);
5810                            }
5811
5812                            aElement.addEventListener('click', function(e) {
5813                                if (!self.sentClickPromotions.includes(promotion['promotion_id'])) {
5814                                    self.sendClick(promotion, aElement);
5815                                }
5816                            });
5817                        }
5818                    }
5819                });
5820
5821                var additionalObserver = new MutationObserver(function(mutations) {
5822                    mutations.forEach(function(mutation) {
5823                        mutation.addedNodes.forEach(function(addedNode) {
5824                            if (addedNode.matches && addedNode.matches('.swiper-wrapper')) {
5825                                self.promotions.forEach(function (promotion) {
5826                                    var promotionElement = document.querySelector(promotion['css_selector']);
5827                                    if (promotionElement) {
5828                                        let aElement = promotionElement;
5829                                        if (promotionElement.tagName !== 'A') {
5830                                            aElement = promotionElement.closest('[data-content-type] a[href]');
5831                                        }
5832
5833                                        if (!self.sentViewPromotions.includes(promotion['promotion_id'])) {
5834                                            self.sendView(promotion, aElement);
5835                                        }
5836
5837                                        aElement.addEventListener('click', function(e) {
5838                                            if (!self.sentClickPromotions.includes(promotion['promotion_id'])) {
5839                                                self.sendClick(promotion, aElement);
5840                                            }
5841                                        });
5842                                    }
5843                                });
5844                            }
5845                        });
5846                    });
5847                });
5848
5849                document.querySelectorAll('[data-content-type="slider"], [data-role="amasty-banner-container"]').forEach(function (element) {
5850                    additionalObserver.observe(element, {childList: true, subtree: true});
5851                });
5852            },
5853
5854            sendView(promotionData, promotionElement = null) {
5855                this.sentViewPromotions.push(promotionData['promotion_id']);
5856                promotionData = this.normalizeData(promotionData, promotionElement);
5857                window.dataLayer.push({
5858                    event: 'view_promotion',
5859                    ecommerce: {
5860                        creative_name: promotionData['creative_name'],
5861                        creative_slot: promotionData['creative_slot'],
5862                        promotion_id: promotionData['promotion_id'],
5863                        promotion_name: promotionData['promotion_name'],
5864                    }
5865                })
5866            },
5867
5868            sendClick(promotionData, promotionElement = null) {
5869                this.sentClickPromotions.push(promotionData['promotion_id']);
5870                promotionData = this.normalizeData(promotionData, promotionElement);
5871                window.dataLayer.push({
5872                    event: 'select_promotion',
5873                    ecommerce: {
5874                        creative_name: promotionData['creative_name'],
5875                        creative_slot: promotionData['creative_slot'],
5876                        promotion_id: promotionData['promotion_id'],
5877                        promotion_name: promotionData['promotion_name'],
5878                    }
5879                })
5880            },
5881
5882            normalizeData(promotionData, promotionElement = null) {
5883                if (!promotionElement) {
5884                    return promotionData;
5885                }
5886
5887                var imgElement = promotionElement.querySelector('img');
5888                if (!imgElement) {
5889                    return promotionData;
5890                }
5891
5892                promotionData['creative_name'] = promotionData['creative_name'] ? promotionData['creative_name'] : imgElement.src.replace(BASE_URL, '');
5893                promotionData['creative_slot'] = promotionData['creative_slot'] ? promotionData['creative_slot'] : imgElement.alt;
5894                promotionData['promotion_name'] = promotionData['promotion_name'] ? promotionData['promotion_name'] : imgElement.title;
5895                return promotionData;
5896            }
5897        });
5898    });
5899</script>
5899
5900
5901<script>
5902    document.addEventListener("alpine:initialized", () => {
5903        Alpine.store('dnafactoryGA4Items', {
5904            itemsPushed: [],
5905            itemsSelected: [],
5906            itemsToPush: [],
5907
5908            sendItemListDebounced(...itemData) {
5909                let self = this;
5910                var itemDataToPush = itemData.filter(function (el) {
5911                    var itemList = el.item_list_id ?? 'default_list';
5912                    if (!(self.itemsPushed.hasOwnProperty(itemList) && self.itemsPushed[itemList].includes(el.item_id))) {
5913                        if (!self.itemsPushed.hasOwnProperty(itemList)) {
5914                            self.itemsPushed[itemList] = [];
5915                        }
5916                        self.itemsPushed[itemList].push(el.item_id);
5917                        return true;
5918                    }
5919
5920                    return false;
5921                });
5922
5923                this.itemsToPush.push(...itemDataToPush);
5924                Alpine.debounce(this.updateItemList.bind(this), 200)();
5925            },
5926
5927            sendItemList(itemsData, currency = "EUR", itemlistName = "Default List", itemlistId = "default_list") {
5928                window.dataLayer.push({
5929                    event: 'view_item_list',
5930                    ecommerce: {
5931                        items: this.normalizeData(itemsData)
5932                    },
5933                    currency: currency,
5934                    item_list_name: itemlistName,
5935                    item_list_id: itemlistId,
5936                    _clear: true
5937                })
5938            },
5939
5940            sendSelectItem(itemData, currency = "EUR", itemlistName = "Default List", itemlistId = "default_list") {
5941                if (this.itemsSelected.includes(itemData.item_id)) {
5942                    return;
5943                }
5944                this.itemsSelected.push(itemData.item_id);
5945
5946                window.dataLayer.push({
5947                    event: 'select_item',
5948                    ecommerce: {
5949                        items: this.normalizeData([itemData])
5950                    },
5951                    currency: currency,
5952                    item_list_name: itemlistName,
5953                    item_list_id: itemlistId,
5954                    _clear: true
5955                })
5956            },
5957
5958            updateItemList() {
5959                var items = this.itemsToPush;
5960                this.itemsToPush = [];
5961
5962                if (items.length > 0) {
5963                    var firstItem = items[0];
5964                    var [currency, itemListName, itemListId] = [firstItem.currency, firstItem.item_list_name, firstItem.item_list_id];
5965                    this.sendItemList(items, currency, itemListName, itemListId);
5966                }
5967            },
5968
5969            normalizeData(itemData) {
5970                itemData.forEach(function (el) {
5971                    var vatDivider = 1;
5972                    if (el.hasOwnProperty('vat_divider')) {
5973                        vatDivider = (parseFloat(el['vat_divider']) + 100)/100;
5974                        if (vatDivider <= 0) {
5975                            vatDivider = 1;
5976                        }
5977                    }
5978
5979                    if (el.hasOwnProperty('price')) {
5980                        el['price'] = parseFloat((el['price']/vatDivider).toFixed(2));
5981                    }
5982
5983                    if (el.hasOwnProperty('discount')) {
5984                        el['discount'] = parseFloat((el['discount']/vatDivider).toFixed(2));
5985                    }
5986
5987                    if (el.hasOwnProperty('item_category')) {
5988                        var categories = el['item_category'].split(/[>\/]+/);
5989                        if (categories.length > 0) {
5990                            var indexCategory = 1;
5991                            categories.forEach(function (category) {
5992                                var categoryKey = (indexCategory > 1) ? 'item_category' + indexCategory : 'item_category';
5993                                el[categoryKey] = category.trim();
5994                                indexCategory++;
5995                            });
5996                        }
5997                    }
5998                });
5999
6000                return itemData;
6001            }
6002        });
6003    });
6004</script>
6004
6005
6006<script>
6007    window.DNAFACTORY_GA4_SHOW_PRICE_TAX = 0;
6008    if (!window.dataLayer) {
6009        window.dataLayer = [];
6010    }
6011</script>
6011
6012
6013<script>
6014    let SnapSlider = class {
6015        constructor(el, {
6016            labelSepparator = 'di',
6017            autoPager,
6018            groupPager,
6019            loop
6020        } = {}) {
6021            this.el = el;
6022            this.track = this.el.querySelector("[data-track]");
6023            if (!this.track) {
6024                console.warn(
6025                    "No Slider track defined, reverting back to CSS slider.\nPlease create a wrapper for your slides with the attribute data-track",
6026                    this.el
6027                );
6028                return;
6029            }
6030            this.initialLoad = true;
6031            this.slides = [];
6032            this.inViewObserver;
6033            this.mutationObserver;
6034            this.resizeObserver;
6035            this.pager = this.el.querySelector("[data-pager]");
6036            this.navBtns = Array.from(
6037                this.el.querySelectorAll("[data-next], [data-prev]")
6038            );
6039            this.slideLabelSepparator = this.el.dataset.slideLabelSepparator || labelSepparator;
6040            this.useAutoPager = autoPager || this.el.hasAttribute("data-auto-pager") || false;
6041            this.useGroupPager = groupPager || this.el.hasAttribute("data-group-pager") || false;
6042            this.useLoop = loop || this.el.hasAttribute("data-loop") || false;
6043            this.sliderLabel = this.el.hasAttribute("aria-label") && this.el.getAttribute("aria-label").toLowerCase().trim().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
6044            this.sliderId = this.el.id || this.sliderLabel || "slider";
6045            this.markerIdName = "data-target-id";
6046            this.pagerClasses = this.el.dataset.pagerClass || "snap-pager";
6047            this.markerClasses = this.el.dataset.markerClass || "snap-marker";
6048            this.init();
6049        }
6050        init() {
6051            this.setupSlides();
6052            this.setupNav();
6053            if (this.useAutoPager) {
6054                this.createPager();
6055            } else {
6056                this.setupPager();
6057            }
6058            this.setupObservers();
6059            this.setupMutationObserver();
6060            this.setupResizeObserver();
6061            this.el.addEventListener("click", this.eventHandler.bind(this));
6062            this.el.addEventListener("keydown", this.eventHandler.bind(this));
6063            if ("onscrollend" in window) {
6064                this.track.addEventListener("scrollend", () => {
6065                    this.isNavigating = false;
6066                });
6067            } else {
6068                this.track.addEventListener("scroll", () => {
6069                    clearTimeout(this.scrollEndTimer);
6070                    this.scrollEndTimer = setTimeout(() => {
6071                        this.isNavigating = false;
6072                    }, 100);
6073                });
6074            }
6075        }
6076        destroy() {
6077            this.inViewObserver?.disconnect();
6078            this.mutationObserver?.disconnect();
6079            this.resizeObserver?.disconnect();
6080            this.el.removeEventListener("click", this.eventHandler.bind(this));
6081            this.el.removeEventListener("keydown", this.eventHandler.bind(this));
6082        }
6083        roundUpIfGreaterThan(number, min = 8) {
6084            const decimalPart = number - Math.floor(number);
6085            return decimalPart >= min ? Math.ceil(number) : Math.floor(number);
6086        }
6087        getInViewItems() {
6088            const inViewSlides = Array.from(this.track.querySelectorAll("[data-in-view]")).filter((el) => this.slides.includes(el));
6089            const firstInViewSlide = inViewSlides[0] || null;
6090            const lastInViewSlide = inViewSlides[inViewSlides.length - 1] || null;
6091            const isAtStart = firstInViewSlide === this.slides[0];
6092            const isAtEnd = lastInViewSlide === this.slides[this.slides.length - 1];
6093            return {
6094                inViewSlides,
6095                totalInViewSlides: inViewSlides.length,
6096                firstInViewSlide,
6097                lastInViewSlide,
6098                isAtStart,
6099                isAtEnd,
6100                hasNoOverflow: isAtStart && isAtEnd
6101            };
6102        }
6103        groupPagerMarkers() {
6104            if (this.slides.length === 0 || !this.pager || !this.useGroupPager) return;
6105            const totalVisibleSlides = this.roundUpIfGreaterThan(
6106                this.track.offsetWidth / this.slides[0].offsetWidth
6107            );
6108            const markers = Array.from(this.pager.querySelectorAll("a, button"));
6109            markers.forEach((marker, index) => {
6110                marker.style.display = index % totalVisibleSlides === 0 ? null : "none";
6111            });
6112        }
6113        handleInView(entries) {
6114            entries.forEach((entry) => {
6115                const marker = this.pager && (this.pager.querySelector(`[href="#${entry.target.id}"]`) || this.pager.querySelector(
6116                    `[${this.markerIdName}="${entry.target.id}"]`
6117                ));
6118                entry.target.toggleAttribute("data-in-view", entry.isIntersecting);
6119                entry.target.toggleAttribute("inert", !entry.isIntersecting);
6120                marker?.setAttribute("aria-current", entry.isIntersecting);
6121                marker?.setAttribute("tabindex", entry.isIntersecting ? "0" : "-1");
6122            });
6123            const { isAtStart, isAtEnd, hasNoOverflow } = this.getInViewItems();
6124            this.navBtns.forEach((btn) => {
6125                if (btn.hasAttribute("data-next")) {
6126                    btn.style.visibility = hasNoOverflow ? "hidden" : null;
6127                    isAtEnd && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
6128                }
6129                if (btn.hasAttribute("data-prev")) {
6130                    btn.style.visibility = hasNoOverflow ? "hidden" : null;
6131                    isAtStart && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
6132                }
6133            });
6134            if (this.pager) {
6135                this.pager.style.visibility = hasNoOverflow ? "hidden" : null;
6136                this.pager.toggleAttribute("inert", hasNoOverflow);
6137            }
6138            if (!this.initialLoad) {
6139                this.el.dispatchEvent(
6140                    new CustomEvent("slideChange", {
6141                        detail: this.getInViewItems()
6142                    })
6143                );
6144            } else {
6145                this.initialLoad = false;
6146            }
6147            if (document.activeElement.parentElement.hasAttribute("data-pager")) {
6148                const activeItems = this.pager.querySelectorAll('[tabindex="0"]');
6149                if (activeItems.length) {
6150                    activeItems[0].focus({ preventScroll: true });
6151                }
6152            }
6153        }
6154        getSlides() {
6155            if (!this.track) return [];
6156            return Array.from(this.track.children).filter(
6157                (child) => child.tagName.toLowerCase() !== "template" && child.tagName.toLowerCase() !== "style" && child.tagName.toLowerCase() !== "script" && child.style.display !== "none"
6158            );
6159        }
6160        refreshSlides() {
6161            this.initialLoad = true;
6162            this.slides = this.getSlides();
6163            this.setupSlides();
6164            if (this.useAutoPager) {
6165                this.createPager();
6166            } else {
6167                this.setupPager();
6168            }
6169            this.groupPagerMarkers();
6170            this.setupObservers();
6171        }
6172        setupSlides() {
6173            this.slides = this.getSlides();
6174            this.slides.forEach((slide, index) => {
6175                const totalSlides = this.slides.length;
6176                const currentSlide = index + 1;
6177                const existingLabel = slide.getAttribute("aria-label") || "";
6178                const isImage = slide.tagName.toLowerCase() === "img" || slide.tagName.toLowerCase() === "picture";
6179                const slideLabelTag = isImage ? "alt" : "aria-label";
6180                const hasAutoLabel = existingLabel.startsWith(
6181                    `${currentSlide} ${this.slideLabelSepparator} `
6182                );
6183                if (!slide.hasAttribute("id")) {
6184                    slide.setAttribute(
6185                        "id",
6186                        `${this.sliderId}-item-${currentSlide}`
6187                    );
6188                }
6189                if (!slide.hasAttribute(slideLabelTag) || slide.getAttribute(slideLabelTag) === "" || hasAutoLabel) {
6190                    slide.setAttribute(
6191                        slideLabelTag,
6192                        `${currentSlide} ${this.slideLabelSepparator} ${totalSlides}`
6193                    );
6194                }
6195                if (slide.tagName.toLowerCase() === "div" && !slide.hasAttribute("role")) {
6196                    slide.setAttribute("role", "group");
6197                }
6198                if (this.pager && !isImage) {
6199                    slide.setAttribute("role", "tabpanel");
6200                }
6201                if (slide.getAttribute("role") === "group") {
6202                    slide.setAttribute("aria-roledescription", "item");
6203                }
6204            });
6205            if (!this.el.hasAttribute("role") && this.el.tagName !== "SECTION") {
6206                this.el.setAttribute("role", "region");
6207            }
6208            if (!this.el.hasAttribute("aria-roledescription")) {
6209                this.el.setAttribute("aria-roledescription", "carousel");
6210            }
6211            if (!this.track.hasAttribute("tabindex")) {
6212                this.track.setAttribute("tabindex", 0);
6213            }
6214            this.track.setAttribute("aria-live", "polite");
6215        }
6216        setupNav() {
6217            this.navBtns.forEach((btn) => {
6218                btn.setAttribute("disabled", "");
6219                btn.removeAttribute("hidden");
6220                btn.classList.remove("invisible");
6221                btn.style.visibility = null;
6222            });
6223        }
6224        createPager() {
6225            const newPager = document.createElement("nav");
6226            newPager.setAttribute("data-pager", "");
6227            newPager.setAttribute("role", "tablist");
6228            newPager.classList.add(...this.pagerClasses.split(" "));
6229            this.slides.forEach((slide, index) => {
6230                const marker = document.createElement("button");
6231                const slideId = slide.id || `${this.sliderId}-item-${index + 1}`;
6232                marker.setAttribute(this.markerIdName, slideId);
6233                marker.classList.add(...this.markerClasses.split(" "));
6234                this.setupPagerMarker(marker, index);
6235                newPager.appendChild(marker);
6236                if (slide.tagName.toLowerCase() !== "img" && slide.tagName.toLowerCase() !== "picture") {
6237                    slide.removeAttribute("aria-roledescription");
6238                    slide.setAttribute("role", "tabpanel");
6239                }
6240            });
6241            if (this.pager) {
6242                this.pager.setAttribute("role", "tablist");
6243                this.pager.replaceChildren(...newPager.children);
6244            } else {
6245                this.track.after(newPager);
6246                this.pager = this.el.querySelector("[data-pager]");
6247            }
6248        }
6249        setupPager() {
6250            if (!this.pager) return;
6251            this.pager.setAttribute("role", "tablist");
6252            const items = Array.from(this.pager.querySelectorAll("a, button"));
6253            items.forEach((marker, index) => this.setupPagerMarker(marker, index));
6254        }
6255        setupPagerMarker(marker, index) {
6256            const markerId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
6257            const slideId = markerId || `${this.sliderId}-item-${index + 1}`;
6258            if (!markerId) {
6259                marker.setAttribute(this.markerIdName, slideId);
6260            }
6261            marker.setAttribute("role", "tab");
6262            marker.setAttribute("aria-controls", slideId);
6263            marker.setAttribute("aria-posinset", index + 1);
6264            marker.setAttribute("aria-setsize", this.slides.length);
6265            marker.setAttribute("tabindex", "-1");
6266            if (!marker.hasAttribute("aria-label")) {
6267                marker.setAttribute("aria-label", `Slide ${index + 1}`);
6268            }
6269        }
6270        setupObservers() {
6271            if (this.inViewObserver) {
6272                this.inViewObserver.disconnect();
6273            }
6274            this.inViewObserver = new IntersectionObserver(
6275                this.handleInView.bind(this), {
6276                    root: this.track,
6277                    threshold: 0.8
6278                }
6279            );
6280            this.slides.forEach((slide) => this.inViewObserver.observe(slide));
6281        }
6282        setupMutationObserver() {
6283            this.mutationObserver = new MutationObserver((mutations) => {
6284                if (mutations.some((m) => m.type === "childList" || m.target.parentElement === this.track)) {
6285                    this.refreshSlides();
6286                }
6287            });
6288            this.mutationObserver.observe(this.track, {
6289                childList: true,
6290                subtree: true,
6291                attributeFilter: ["style"]
6292            });
6293        }
6294        setupResizeObserver() {
6295            this.resizeObserver = new ResizeObserver(
6296                this.groupPagerMarkers.bind(this)
6297            );
6298            this.resizeObserver.observe(this.el);
6299        }
6300        goToSlideDir(dir = "next") {
6301            if (this.isNavigating) return;
6302            const { firstInViewSlide, lastInViewSlide } = this.getInViewItems();
6303            const isPrev = dir === "prev";
6304            const referenceSlide = isPrev ? firstInViewSlide : lastInViewSlide;
6305            const currentIndex = this.slides.indexOf(referenceSlide);
6306            let targetIndex = isPrev ? currentIndex - 1 : currentIndex + 1;
6307            if (targetIndex < 0 || targetIndex >= this.slides.length) {
6308                if (!this.useLoop) return;
6309                targetIndex = isPrev ? this.slides.length - 1 : 0;
6310            }
6311            const targetSlide = this.slides[targetIndex];
6312            if (!targetSlide) return;
6313            this.isNavigating = true;
6314            targetSlide.scrollIntoView({
6315                block: "nearest",
6316                inline: isPrev ? "end" : "start"
6317            });
6318        }
6319        pagerToSlide(event) {
6320            if (!event.target.closest("[data-pager]")) return;
6321            const marker = event.target.closest("a, button");
6322            if (!marker) return;
6323            event.preventDefault();
6324            const slideId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
6325            const targetSlide = this.track.querySelector(`#${slideId}`);
6326            targetSlide?.scrollIntoView({ block: "nearest", inline: "start" });
6327        }
6328        eventHandler(event) {
6329            const target = event.target.closest(
6330                "[data-next], [data-prev], [data-pager]"
6331            );
6332            if (!target) return;
6333            if (event.type === "click") {
6334                if (target.hasAttribute("data-next")) {
6335                    this.goToSlideDir("next");
6336                } else if (target.hasAttribute("data-prev")) {
6337                    this.goToSlideDir("prev");
6338                } else if (target.closest("[data-pager]")) {
6339                    this.pagerToSlide(event);
6340                }
6341            }
6342            if (event.type === "keydown" && target.closest("[data-pager]")) {
6343                if (event.key === "ArrowRight" || event.key === "ArrowDown") {
6344                    event.preventDefault();
6345                    this.goToSlideDir("next");
6346                } else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
6347                    event.preventDefault();
6348                    this.goToSlideDir("prev");
6349                }
6350            }
6351        }
6352    };
6353
6354    (() => {
6355        function alpineSnapSlider(Alpine) {
6356            Alpine.directive("snap-slider", (el, {
6357                modifiers
6358            }, {
6359                cleanup
6360            }) => {
6361                const slider = new SnapSlider(el, {
6362                    autoPager: modifiers.includes("auto-pager"),
6363                    groupPager: modifiers.includes("group-pager"),
6364                    loop: modifiers.includes("loop")
6365                });
6366                cleanup(() => {
6367                    slider.destroy();
6368                });
6369            });
6370        }
6371
6372        document.addEventListener("alpine:init", () => {
6373            window.Alpine.plugin(alpineSnapSlider);
6374        });
6375    })();
6376    //# sourceURL=alpine-snap-slider.js
6377</script>
vendor: 1 bytes, line 6377
6377
6378<script>
6379    (() => {
6380        // src/dialog.js
6381        function dialog_default(Alpine) {
6382            Alpine.directive("htmldialog", fylgjaAlpineDialog);
6383            function fylgjaAlpineDialog(el, { expression, modifiers }, { evaluateLater, cleanup }) {
6384            const evaluate = expression.length ? evaluateLater(expression) : () => {};
6385            const lockPageScroll = modifiers.includes("noscroll");
6386            const isModeless = modifiers.includes("modeless");
6387            const closeBy = el.getAttribute("closeby") || modifierValue(modifiers, "closeby", "closerequest");
6388            el.style.display = null;
6389            el.style.length === 0 && el.removeAttribute("style");
6390            if (el._x_isShown) {
6391                open();
6392            }
6393            const closeBySupported = (() => {
6394                return "closedBy" in HTMLDialogElement.prototype;
6395            })();
6396            function scrollLock(use = true) {
6397                document.body.style.overflow = use ? "hidden" : "";
6398            }
6399            function dialogSubmit(event) {
6400                if (event.target.getAttribute("method") === "dialog" || event.submitter?.getAttribute("formmethod") === "dialog") {
6401                event.preventDefault();
6402                evaluate();
6403                }
6404            }
6405            function escapeDialog(event) {
6406                if (event.key !== "Escape") return;
6407                event.preventDefault();
6408                if (closeBy === "none") return;
6409                evaluate();
6410            }
6411            function handleCloseByEvent(event) {
6412                if (event.target !== el) return;
6413                const rect = el.getBoundingClientRect();
6414                const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;
6415                if (!isInDialog) {
6416                if (closeBy === "any") {
6417                    if (closeBySupported) {
6418                    event.preventDefault();
6419                    }
6420                    evaluate();
6421                }
6422                }
6423            }
6424            function handleCloseEvent() {
6425                evaluate();
6426            }
6427            function open() {
6428                if (el.hasAttribute("open")) return;
6429                isModeless ? el.show() : el.showModal();
6430                scrollLock(lockPageScroll);
6431            }
6432            function close() {
6433                if (!el.hasAttribute("open")) return;
6434                el.close();
6435                scrollLock(false);
6436            }
6437            el._x_doShow = () => open();
6438            el._x_doHide = () => close();
6439            el.addEventListener("keydown", escapeDialog);
6440            el.addEventListener("submit", dialogSubmit);
6441            el.addEventListener("click", handleCloseByEvent);
6442            el.addEventListener("cancel", handleCloseEvent);
6443            cleanup(() => {
6444                el.removeEventListener("keydown", escapeDialog);
6445                el.removeEventListener("submit", dialogSubmit);
6446                el.removeEventListener("click", handleCloseByEvent);
6447                el.removeEventListener("cancel", handleCloseEvent);
6448                scrollLock(false);
6449            });
6450            }
6451        }
6452        function modifierValue(modifiers, key, fallback) {
6453            if (modifiers.indexOf(key) === -1) return fallback;
6454            const rawValue = modifiers[modifiers.indexOf(key) + 1];
6455            if (!rawValue) return fallback;
6456            if (key === "closeby") {
6457            const allowedValues = ["auto", "none", "closerequest", "any"];
6458            const options = allowedValues.join(", ");
6459            if (!allowedValues.includes(rawValue)) {
6460                console.warn(
6461                `"${rawValue}" is not one of the allowed values for closeby: ${options}`
6462                );
6463                return fallback;
6464            }
6465            }
6466            return rawValue;
6467        }
6468
6469        // src/cdn.js
6470        document.addEventListener("alpine:init", () => {
6471            window.Alpine.plugin(dialog_default);
6472        });
6473    })();
6474    //# sourceURL=alpine-htmldialog.js
6475</script>
vendor: 1 bytes, line 6475
6475
6476<script>
6477    (() => {
6478        function src_default(Alpine) {
6479            Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {
6480                let evaluate = evaluateLater(expression);
6481                let options = {
6482                    rootMargin: getRootMargin(modifiers),
6483                    threshold: getThreshold(modifiers)
6484                };
6485                let observer = new IntersectionObserver((entries) => {
6486                    entries.forEach((entry) => {
6487                        if (entry.isIntersecting === (value === "leave"))
6488                            return;
6489                        evaluate();
6490                        modifiers.includes("once") && observer.disconnect();
6491                    });
6492                }, options);
6493                observer.observe(el);
6494                cleanup(() => {
6495                    observer.disconnect();
6496                });
6497            }));
6498        }
6499        function getThreshold(modifiers) {
6500            if (modifiers.includes("full"))
6501                return 0.99;
6502            if (modifiers.includes("half"))
6503                return 0.5;
6504            if (!modifiers.includes("threshold"))
6505                return 0;
6506            let threshold = modifiers[modifiers.indexOf("threshold") + 1];
6507            if (threshold === "100")
6508                return 1;
6509            if (threshold === "0")
6510                return 0;
6511            return Number(`.${threshold}`);
6512        }
6513        function getLengthValue(rawValue) {
6514            let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);
6515            return match ? match[1] + (match[2] || "px") : void 0;
6516        }
6517        function getRootMargin(modifiers) {
6518            const key = "margin";
6519            const fallback = "0px 0px 0px 0px";
6520            const index = modifiers.indexOf(key);
6521            if (index === -1)
6522                return fallback;
6523            let values = [];
6524            for (let i = 1; i < 5; i++) {
6525                values.push(getLengthValue(modifiers[index + i] || ""));
6526            }
6527            values = values.filter((v) => v !== void 0);
6528            return values.length ? values.join(" ").trim() : fallback;
6529        }
6530
6531        document.addEventListener("alpine:init", () => {
6532            window.Alpine.plugin(src_default);
6533        });
6534    })();
6535    //# sourceURL=alpine-intersect.js
6536</script>
6536
6537
6538<script>
6539    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"})) {
6540        document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`));
6541    }
6542    //# sourceURL=alpine-defer-rules.js
6543</script>
vendor: 1 bytes, line 6543
6543
6544<script>
6545    (() => {
6546        const hasAlpine = new Promise(resolve => {
6547            window.addEventListener('alpine:initialized', resolve, {once: true, passive: true});
6548        });
6549
6550        const hasInteract = new Promise(resolve => {
6551            (events => {
6552                const onInteract = () => {
6553                    resolve();
6554                    events.forEach(type => window.removeEventListener(type, onInteract));
6555                }
6556                events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true}))
6557            })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])
6558        });
6559
6560        const onIntersect = (el) => {
6561            return new Promise(resolve => {
6562                const observer = new IntersectionObserver(entries => {
6563                    for (const entry of entries) {
6564                        if (entry.isIntersecting) {
6565                            observer.disconnect()
6566                            resolve();
6567                        }
6568                    }
6569                }, {});
6570                observer.observe(el);
6571            });
6572        }
6573
6574        function runComponent(el) {
6575            hasAlpine.then(() => {
6576                el.removeAttribute('x-ignore');
6577                queueMicrotask(() => Alpine.initTree(el));
6578            });
6579        }
6580
6581        function initDeferredComponents() {
6582            document.querySelectorAll('[x-data][x-defer]').forEach(el => {
6583                el.setAttribute('x-ignore', '');
6584                const deferUntil = (el.getAttribute('x-defer') || '').trim();
6585                switch (deferUntil) {
6586                    case 'interact':
6587                        hasInteract.then(() => runComponent(el));
6588                        break;
6589                    case 'intersect':
6590                        onIntersect(el).then(() => runComponent(el))
6591                        break;
6592                    case 'idle':
6593                        window.requestIdleCallback
6594                            ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000})
6595                            : setTimeout(() => runComponent(el), 4000);
6596                        break;
6597                    case 'eager':
6598                        runComponent(el);
6599                        break;
6600                    default:
6601                        if (deferUntil.startsWith('event:') && deferUntil.length > 6) {
6602                            window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true});
6603                        }
6604                }
6605            });
6606        }
6607
6608        window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true});
6609    })();
6610    //# sourceURL=alpine-defer.js
6611</script>
6611
6612
6613<script>
6614// x-teleport implementation
6615(_ => {
6616    document.addEventListener('DOMContentLoaded', event => {
6617        // x-teleport available only for template
6618        if (!Alpine.version.startsWith('2')) {
6619            return;
6620        }
6621
6622        const teleportDirective = (el, expression) => {
6623            let target = document.querySelector(expression)
6624            let clone = el.content.cloneNode(true).firstElementChild;
6625
6626            target.appendChild(clone);
6627            setTimeout(() => {
6628                target.querySelectorAll('[x-data]')
6629                    .forEach(el => Alpine.initializeComponent(el));
6630            }, 0)
6631        };
6632
6633        document.querySelectorAll('template').forEach(el => {
6634            if (!el.hasAttribute('x-teleport')) {
6635                return;
6636            }
6637
6638            teleportDirective(el, el.getAttribute('x-teleport'));
6639        });
6640
6641        document.querySelectorAll('[x-data]').forEach(el => {
6642            if (el.hasAttribute('x-init')) {
6643                return;
6644            }
6645
6646            setTimeout(() => {
6647                Alpine.initializeComponent(el);
6648            }, 0);
6649        });
6650    });
6651})()
6652</script>
6652
6653
6654<script type="module"
6655        src="https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Hyva_Theme/js/alpine3.min.js"
6656        defer
6657        crossorigin
6658></script>
vendor: 1 bytes, line 6658
6658
6659<script>
6660    function dispatchMessages(messages, hideAfter) {
6661        const messagesEvent = new CustomEvent("messages-loaded", {
6662            detail: {
6663                messages: messages,
6664                hideAfter: hideAfter
6665            }
6666        });
6667        window.dispatchEvent(messagesEvent);
6668    }
6669
6670        if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
6671        console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
6672    }
6673
6674    (function( hyva, undefined ) {
6675
6676        hyva.initFormKey = () => {
6677            if (typeof hyva.getFormKey !== 'function') return;
6678
6679            const formKey = hyva.getFormKey();
6680            if (!formKey) return;
6681
6682            document.querySelectorAll('input[name="form_key"]').forEach((input) => {
6683                input.value = formKey;
6684            });
6685        }
6686
6687        hyva.initMessages = () => {
6688            try {
6689                const messages = hyva.getCookie('mage-messages');
6690                window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
6691
6692                dispatchMessages(window.mageMessages);
6693
6694                                // empty `mage-messages` cookie
6695                const skipSetDomain = true;
6696                hyva.setCookie('mage-messages','', -1, skipSetDomain);
6697
6698            } catch (error) {
6699                console.warn('Error parsing Cookie Messages:', error);
6700            }
6701        }
6702
6703        window.addEventListener('DOMContentLoaded', hyva.initFormKey);
6704
6705        window.addEventListener('pageshow', (event) => {
6706            if (event.persisted) {
6707                hyva.initFormKey();
6708            }
6709        });
6710
6711        hyva.alpineInitialized(hyva.initMessages)
6712    }( window.hyva = window.hyva || {} ));
6713    //# sourceURL=hyva-cookies.js
6714</script>
vendor: 1 bytes, line 6714
6714
6715<script>
6716    (() => {
6717        const private_content_key = 'mage-cache-storage';
6718        const private_content_expire_key = 'mage-cache-timeout';
6719        const private_content_version_key = 'private_content_version';
6720        const section_data_ids_key = 'section_data_ids';
6721        const mage_cache_session_id_key = 'mage-cache-sessid';
6722        const last_visited_store_key = 'last_visited_store';
6723
6724        const ttl = 7200;
6725
6726                if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
6727            console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
6728        }
6729
6730        function loadSectionData () {
6731            const browserStorage = hyva.getBrowserStorage();
6732            if (!browserStorage) {
6733                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
6734                    [{
6735                        type: "warning",
6736                        text: "Please enable LocalStorage in your browser."
6737                    }]
6738                );
6739                return;
6740            }
6741            try {
6742                let isInvalid = false;
6743
6744                                if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) {
6745                    isInvalid = true;
6746                }
6747                hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false);
6748
6749                                if (!hyva.getCookie(mage_cache_session_id_key)) {
6750                    isInvalid = true;
6751                    browserStorage.removeItem(private_content_key);
6752                    const skipSetDomain = true;
6753                    const days = false;
6754                    hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain)
6755                }
6756
6757                const cookieVersion = hyva.getCookie(private_content_version_key);
6758                const storageVersion = browserStorage.getItem(private_content_version_key);
6759
6760                if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) {
6761                    isInvalid = true;
6762                }
6763
6764                const privateContentExpires = browserStorage.getItem(private_content_expire_key);
6765                if (privateContentExpires && new Date(privateContentExpires) < new Date()) {
6766                    browserStorage.removeItem(private_content_key);
6767                }
6768
6769                if (isInvalid && cookieVersion) {
6770                    fetchPrivateContent([]);
6771                } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) {
6772                    const privateContent = JSON.parse(browserStorage.getItem(private_content_key));
6773                    if (
6774                        privateContent &&
6775                        privateContentExpires &&
6776                        privateContent.cart &&
6777                        privateContent.customer
6778                    ) {
6779                        dispatchPrivateContent(privateContent);
6780                    } else {
6781                        fetchPrivateContent([]);
6782                    }
6783                } else {
6784                    if (document.getElementById('default-section-data')) {
6785                        const privateContent = JSON.parse(document.getElementById('default-section-data').textContent.trim());
6786                        dispatchPrivateContent(privateContent);
6787                    } else {
6788                        dispatchPrivateContent({});
6789                    }
6790                }
6791
6792            } catch (error) {
6793                console.warn('Error retrieving Private Content:', error);
6794            }
6795        }
6796
6797        hyva.alpineInitialized(loadSectionData)
6798        window.addEventListener('reload-customer-section-data', loadSectionData);
6799
6800                window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data);
6801
6802        function dispatchPrivateContent(data) {
6803
6804            const privateContentEvent = new CustomEvent("private-content-loaded", {
6805                detail: {
6806                    data: window.processSectionDataBeforeDispatch(data)
6807                }
6808            });
6809            window.dispatchEvent(privateContentEvent);
6810        }
6811
6812                function fetchPrivateContent(sections) {
6813            fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, {
6814                method: 'GET',
6815                headers: {
6816                    'Content-Type': 'application/json',
6817                    'X-Requested-With': 'XMLHttpRequest'
6818                }
6819            })
6820                .then(response => response.ok && response.json())
6821                .then(
6822                    data => {
6823                        if (data) {
6824                            try {
6825                                const browserStorage = hyva.getBrowserStorage();
6826
6827                                // merge new data preserving non-invalidated sections
6828                                const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {};
6829
6830                                                                if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) {
6831                                    delete oldSectionData['checkout-data'];
6832                                }
6833                                const newSectionData = Object.assign(oldSectionData, data);
6834
6835                                dispatchPrivateContent(newSectionData);
6836
6837                                // don't persist messages, they've been dispatched already
6838                                if (newSectionData.messages && newSectionData.messages.messages ) {
6839                                    newSectionData.messages.messages = [];
6840                                }
6841
6842                                browserStorage.setItem(private_content_key, JSON.stringify(newSectionData));
6843
6844                                const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString();
6845                                browserStorage.setItem(private_content_expire_key, expiresAt);
6846
6847                                const newCookieVersion = hyva.getCookie(private_content_version_key);
6848                                browserStorage.setItem(private_content_version_key, newCookieVersion);
6849
6850                                // We don't need the section_data_ids in Hyvä, but we store them for compatibility
6851                                // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout
6852                                hyva.setCookie(
6853                                    section_data_ids_key,
6854                                    JSON.stringify(
6855                                        Object.keys(data).reduce((sectionDataIds, sectionKey) => {
6856                                            sectionDataIds[sectionKey] = data[sectionKey]['data_id'];
6857                                            return sectionDataIds;
6858                                        }, {})
6859                                    ),
6860                                    false,
6861                                    true
6862                                );
6863                            } catch (error) {
6864                                console.warn("Couldn't store privateContent", error);
6865                            }
6866                        }
6867                    }
6868                )
6869                .catch(error => {
6870                    console.warn("Couldn't fetch privateContent", error);
6871                });
6872        }
6873    })();
6874    //# sourceURL=hyva-private-content.js
6875</script>
vendor: 1 bytes, line 6875
6875
6876<script>
6877    (() => {
6878        document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc()));
6879    })()
6880</script>
vendor: 1 bytes, line 6880
6880
6881<script>
6882    (events => {
6883        const addListeners = () => {
6884            var init = false;
6885            const dispatchUserInteractionEvent = Alpine.throttle(() => {
6886                if(!init){
6887                    init=true;
6888                    return false;
6889                }
6890                events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent))
6891                window.dispatchEvent(new Event('init-external-scripts'))
6892            }, 30);
6893            document.removeEventListener('alpine:initialized', addListeners)
6894            events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, { passive: true}))
6895        }
6896        document.addEventListener('alpine:initialized', addListeners, { once: true });
6897    })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])
6898</script>
vendor: 1 bytes, line 6898
6898
6899<script>
6900    'use strict';
6901
6902    (() => {
6903        const initCarousels = (elements) => {
6904            if (!Swiper) {
6905                return;
6906            }
6907
6908            const initProductCarousel = (carousel, additionalOptions) => {
6909                carousel.classList.add("swiper");
6910                if (!carousel.querySelectorAll(".swiper-wrapper").length) {
6911                    carousel.innerHTML = `<div class="swiper-wrapper">${carousel.innerHTML}</div>`;
6912                }
6913                carousel.querySelectorAll(".swiper-wrapper > *").forEach(function (el) {
6914                    el.classList.add("swiper-slide");
6915                });
6916
6917                let swiperElement = carousel.querySelector('.swiper');
6918                if (!swiperElement) {
6919                    swiperElement = carousel;
6920                }
6921
6922                if ((carousel.dataset.showArrows === 'true' || carousel.dataset.showDots === 'true') && !carousel.querySelectorAll(".swiper-pagination").length) {
6923                    swiperElement.insertAdjacentHTML(
6924                        'beforeend',
6925                        '\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
6925003D\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
6925003D\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'
6926                    );
6927                }
6928
6929                let autoplayOptions = {autoplay: false};
6930                if (carousel.dataset.autoplay === 'true') {
6931                    autoplayOptions = {
6932                        autoplay: {
6933                            delay: carousel.dataset.autoplaySpeed
6934                        },
6935                        plugins: [ SwiperPluginPagination, SwiperPluginAutoPlay, SwiperPluginNavigation ]
6936                    };
6937                }
6938
6939                let dotsOptions = {pagination: false};
6940                if (carousel.dataset.showDots === 'true') {
6941                    dotsOptions = {
6942                        pagination: {
6943                            el: '.swiper-pagination',
6944                            type: 'bullets',
6945                            clickable: true
6946                        }
6947                    };
6948                }
6949
6950                let arrowsOptions = {navigation: false};
6951                if (carousel.dataset.showArrows === 'true') {
6952                    arrowsOptions = {
6953                        navigation: {
6954                            nextEl: '.swiper-button-next',
6955                            prevEl: '.swiper-button-prev',
6956                        },
6957                    };
6958                }
6959
6960                let options = Object.assign({
6961                    slidesPerView: 'auto',
6962                    loop: carousel.dataset.infiniteLoop?.toLowerCase?.() === 'true'
6963                }, additionalOptions, dotsOptions, arrowsOptions, autoplayOptions);
6964
6965                initCarousel(swiperElement, options);
6966            };
6967
6968            elements.forEach(element => {
6969                if (element.dataset.contentType === 'slider') {
6970                    initProductCarousel(element, {slidesPerView: 1});
6971                } else {
6972                    initProductCarousel(element);
6973                }
6974            });
6975        };
6976
6977        window.addEventListener('init-external-scripts', () => {
6978            const carouselElements = document.querySelectorAll(
6979                `[data-content-type="products"][data-appearance="carousel"],
6980                [data-content-type="slider"], .clerk-product-async, .swiper.products-widget, .swiper, .async-carousel, .clerk`
6981            );
6982
6983            window.carouselInitialized = false;
6984
6985            // Autoplay Plugin
6986            const scriptAutoplay = document.createElement('script');
6987            scriptAutoplay.type = 'text/javascript';
6988            scriptAutoplay.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002FautoPlay.min.js';
6989            document.head.appendChild(scriptAutoplay);
6990
6991            // Pagination Plugin
6992            const scriptPagination = document.createElement('script');
6993            scriptPagination.type = 'text/javascript';
6994            scriptPagination.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002Fpagination.min.js';
6995            document.head.appendChild(scriptPagination);
6996
6997            // Navigation Plugin
6998            const scriptNavigation = document.createElement('script');
6999            scriptNavigation.type = 'text/javascript';
7000            scriptNavigation.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002Fnavigation.min.js';
7001            document.head.appendChild(scriptNavigation);
7002
7003            // Swiper
7004            const script = document.createElement('script');
7005            script.type = 'text/javascript';
7006
7007            script.addEventListener('load', () => {
7008                if (window.carouselInitialized) {
7009                    return;
7010                }
7011
7012                const carouselElementsToInitialize = document.querySelectorAll(
7013                    `[data-content-type="products"][data-appearance="carousel"],
7014                      [data-content-type="slider"], .swiper.products-widget`
7015                );
7016                initCarousels(carouselElementsToInitialize);
7017
7018                window.carouselInitialized = true;
7019                const carouselInitializedEvent = new Event("carousel-initialized");
7020                document.dispatchEvent(carouselInitializedEvent);
7021            });
7022
7023            script.src = 'https\u003A\u002F\u002Fwww.farma.it\u002Fstatic\u002Fversion1789421831\u002Ffrontend\u002FDNAFactory\u002Forlandi_hyva\u002Fit_IT\u002FMagento_PageBuilder\u002Fjs\u002Ftinyswiper\u002Dfull.min.js';
7024            document.head.appendChild(script);
7025        }, { once: true, passive: true });
7026    })();
7027
7028    function initCarousel(element = "", options = {}) {
7029        var defaultOptions = {
7030            slidesPerView: 'auto',
7031            navigation: {
7032                nextEl: '.swiper-button-next',
7033                prevEl: '.swiper-button-prev',
7034            },
7035            pagination: {
7036                el: '.swiper-pagination',
7037                type: 'bullets',
7038                clickable: true
7039            },
7040            fadingSlideSelector: ''
7041        };
7042        options = Object.assign(defaultOptions, options);
7043
7044        if (typeof element === 'string' || element instanceof String) {
7045            element = document.querySelector(element);
7046        }
7047
7048        if (!element) {
7049            return false;
7050        }
7051
7052        let paginationElement = element.querySelector(defaultOptions.pagination.el)
7053        if (paginationElement && defaultOptions.pagination) {
7054            defaultOptions.pagination.el = paginationElement;
7055        } else {
7056            defaultOptions.pagination = false
7057        }
7058
7059        let nextElement = element.querySelector(defaultOptions.navigation.nextEl)
7060        if (nextElement && defaultOptions.navigation) {
7061            defaultOptions.navigation.nextEl = nextElement;
7062        } else {
7063            defaultOptions.navigation = false;
7064        }
7065
7066        let prevElement = element.querySelector(defaultOptions.navigation.prevEl)
7067        if (prevElement && defaultOptions.navigation) {
7068            defaultOptions.navigation.prevEl = prevElement;
7069        } else {
7070            defaultOptions.navigation = false;
7071        }
7072
7073        if (options.slidesPerView == 'auto') {
7074            let wrapperWidth = element.clientWidth,
7075                slideWidth = element.querySelector('.swiper-slide').clientWidth;
7076
7077            options.slidesPerView = Math.round(wrapperWidth / slideWidth);
7078        }
7079
7080        if (!options.navigation) {
7081            element.querySelectorAll('.swiper-button-prev, .swiper-button-next')
7082                .forEach((element) => element.remove());
7083        }
7084
7085        if (options.slidesPerView > element.querySelectorAll('.swiper-slide').length) {
7086            element.querySelectorAll('.swiper-button-prev, .swiper-button-next, .swiper-pagination')
7087                .forEach((element) => element.remove());
7088            return;
7089        }
7090
7091        if (typeof Swiper != "undefined") {
7092            let carousel = new Swiper(element, options);
7093            attachCustomBehaviours(carousel, element, options);
7094            return;
7095        }
7096
7097        document.addEventListener("carousel-initialized", function () {
7098            let carousel = new Swiper(element, options);
7099            carousel.slideTo(0); // Fix per disabilitare navigazione quando non c'è overflow degli elementi
7100            attachCustomBehaviours(carousel, element, options);
7101        });
7102
7103    }
7104
7105    function attachCustomBehaviours(carousel, element, options) {
7106        // Fading selected slide behaviour
7107        let fadingSlide;
7108        try {
7109            if (options.fadingSlideSelector) {
7110                fadingSlide = document.querySelector(options.fadingSlideSelector)
7111            } else {
7112                fadingSlide = element.closest('.fading-slide-container').querySelector('.fading-slide');
7113            }
7114        } catch (e) {
7115            fadingSlide = null;
7116        }
7117
7118        if (fadingSlide) {
7119            fadingSlide.classList.add('transition-all');
7120
7121            carousel.on('before-slide', function(currentIndex, state, newIndex) {
7122                if (newIndex > 0) {
7123                    fadingSlide.classList.add('md:opacity-0');
7124                } else if (newIndex == 0) {
7125                    fadingSlide.classList.remove('md:opacity-0');
7126                }
7127            });
7128        }
7129    }
7130</script>
vendor: 1 bytes, line 7130
7130
7131<script>
7132    'use strict';
7133
7134    (() => {
7135        const applyShowOnHover = (element) => {
7136            const showOverlayOnHover = (element) => {
7137                const overlay = element.querySelector('.pagebuilder-overlay');
7138                const color = overlay.dataset.overlayColor;
7139
7140                element.addEventListener('mouseover', () => {
7141                    overlay.style.backgroundColor = color;
7142                });
7143                element.addEventListener('mouseout', () => {
7144                    overlay.style.backgroundColor = 'transparent';
7145                });
7146            };
7147
7148            const showButtonOnHover = (element) => {
7149                const button = element.querySelector('.pagebuilder-banner-button');
7150
7151                element.addEventListener('mouseover', () => {
7152                    button.style.opacity = '1';
7153                    button.style.visibility = 'visible';
7154                });
7155                element.addEventListener('mouseout', () => {
7156                    button.style.opacity = '0';
7157                    button.style.visibility = 'hidden';
7158                });
7159            };
7160
7161            if (element.dataset.showOverlay === 'hover') {
7162                showOverlayOnHover(element);
7163            }
7164            if (element.dataset.showButton === 'hover') {
7165                showButtonOnHover(element);
7166            }
7167        };
7168
7169        window.addEventListener('DOMContentLoaded', () => {
7170            document.querySelectorAll('[data-content-type="banner"],[data-content-type="slider"]').forEach(element => {
7171                applyShowOnHover(element);
7172            });
7173        });
7174    })();
7175</script>
7175
7176 
7176<script>
7177        function amastyRewardsCatalog() {
7178            return {
7179                productId: this.$el.dataset.productId,
7180                formSelector: 'product_addtocart_form',
7181                refreshUrl: this.$el.dataset.refreshUrl,
7182                loader: false,
7183                isFetching: false,
7184                abortFetchController: false,
7185                highlight: {
7186                    caption_color: '',
7187                    caption_text: '',
7188                    visible: false
7189                },
7190
7191                init() {
7192                    this.formObserver();
7193                    document.addEventListener(`update-qty-${this.productId}`, () => {
7194                        this.updateData();
7195                    });
7196                    this.$nextTick(() => this.updateData());
7197                },
7198
7199                hideBlock() {
7200                    this.highlight.visible = false;
7201                    this.loader = true;
7202                },
7203
7204                dispatchStatus(type, message) {
7205                    window.dispatchMessages([{
7206                        type: type,
7207                        text: message
7208                    }], 5000);
7209                },
7210
7211                formObserver() {
7212                    const product = document.querySelector(`input[name="product"][value="${this.productId}"]`);
7213
7214                    if (product) {
7215                        const productForm = product.form;
7216                        if (productForm) {
7217                            productForm.addEventListener('change', () => {
7218                                this.updateData();
7219                            });
7220                        }
7221                    }
7222                },
7223
7224                updateData() {
7225                    if (!this.refreshUrl || this.isFetching) return false;
7226                    this.hideBlock();
7227
7228                    if (this.abortFetchController) {
7229                        this.abortFetchController.abort();
7230                    }
7231                    this.abortFetchController = new AbortController();
7232
7233                    const product = document.querySelector(`input[name='product'][value='${this.productId}']`);
7234                    if (!product) return false;
7235
7236                    const form = product.form;
7237                    const formData = new FormData(form);
7238                    const formParams = new URLSearchParams(formData).toString();
7239                    const formJson = JSON.stringify({
7240                        productId: this.productId,
7241                        attributes: formParams
7242                    });
7243
7244                    const requestOptions = {
7245                        method: 'POST',
7246                        body: formJson,
7247                        headers: {
7248                            'Content-Type': 'application/json',
7249                            'x-requested-with': 'XMLHttpRequest',
7250                        },
7251                        signal: this.abortFetchController.signal
7252                    };
7253
7254                    this.isFetching = true;
7255                    fetch(this.refreshUrl, requestOptions).then(response => {
7256                        if (!response.ok) {
7257                            return Promise.reject(`${response.status} ${response.statusText}`);
7258                        }
7259                        return response.json();
7260                    }).then(data => {
7261                        this.highlight.visible = data.visible;
7262                        this.highlight.caption_text = data.caption_text;
7263                        this.highlight.caption_color = data.caption_color;
7264                    }).catch(error => {
7265                        if (error.name !== 'AbortError'
7266                                && typeof error === 'string'
7267                                && error.match(/'401'/g) !== null
7268                            ) {
7269                            this.dispatchStatus('error', error);
7270                        }
7271                    }).finally(() => {
7272                        this.loader = false;
7273                        this.abortFetchController = false;
7274                        this.isFetching = false;
7275                    });
7276                },
7277
7278                highlightVisible() {
7279                    return this.highlight.visible && !this.loader;
7280                },
7281
7282                highlightStyle() {
7283                    return `color: ${this.highlight.caption_color}`;
7284                },
7285            }
7286        }
7287
7288        window.addEventListener(
7289            'alpine:init',
7290            () => Alpine.data('amastyRewardsCatalog', amastyRewardsCatalog),
7291            { once: true }
7292        );
7293 </script>
7293
7294 
7294<script>
7295    'use strict';
7296
7297    const grecaptchaV2LoadCallbacks = [];
7298
7299    function executeRecaptchaLoadCallbacks () {
7300        while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) {
7301            const callback = grecaptchaV2LoadCallbacks.pop();
7302            typeof callback === 'string' ? window[callback]() : callback();
7303        }
7304    }
7305
7306    (function() {
7307        const loadRecaptchaScript = (event) => {
7308
7309            if (window.grecaptcha || !event.target.form) {
7310                return;
7311            }
7312
7313            const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks';
7314            const siteKey = '6LdDii8sAAAAAF1j_v4WIzmCV2phMFuJKWeFtEhJ';
7315            const script = document.createElement('script');
7316            script.type = 'text/javascript';
7317            script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`;
7318            script.async = true;
7319            document.head.appendChild(script);
7320
7321            script.addEventListener('load', () => {
7322                Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled'));
7323            });
7324        }
7325
7326        window.forceLoadRecaptchaScript = (form) => {
7327            loadRecaptchaScript({target: {form: form || 'dummy'}});
7328            executeRecaptchaLoadCallbacks();
7329        };
7330
7331        document.body.addEventListener('input', loadRecaptchaScript, { once: true });
7332        document.body.addEventListener('focus', loadRecaptchaScript, { once: true });
7333
7334    }());
7335
7336</script>
vendor: 1 bytes, line 7336
7336
7337<script>
7338    function selectManager() {
7339        return {
7340            value: '',
7341
7342            input: {
7343                ['x-model']: "value",
7344                [':class']: "{ 'invalid-placeholder': !value || value == \"\" }",
7345                ['x-init']() {
7346                    this.value = this.$el.options[this.$el.selectedIndex || 0].value
7347                }
7348            }
7349        }
7350    }
7351
7352    function qtyManager() {
7353        return {
7354            inputElement: null,
7355            value: 0,
7356            step: 1,
7357            min: null,
7358            max: null,
7359
7360            input: {
7361                ["x-model"]: "value",
7362                ['x-init']() {
7363                    this.inputElement = this.$el;
7364                    this.value = parseInt(this.$el.value);
7365                },
7366                ['x-on:input'] ($event) {
7367                    let inputValue = parseInt($event.target.value.replace(/\D/g, ''));
7368                    if (!this.checkMin(inputValue)) {
7369                        this.value = this.min;
7370                    } else if (!this.checkMax(inputValue)) {
7371                        this.value = this.max;
7372                    } else {
7373                        this.value = inputValue;
7374                    }
7375                }
7376            },
7377            plus: {
7378                ['@click']() {
7379                    if (this.checkMax(this.value, this.step)) {
7380                        this.value += this.step;
7381                    }
7382                    this.inputElement.dispatchEvent(new Event('changed'));
7383                }
7384            },
7385            minus: {
7386                ['@click']() {
7387                    if (this.checkMin(this.value, this.step)) {
7388                        this.value -= this.step;
7389                    }
7390                    this.inputElement.dispatchEvent(new Event('changed'));
7391                }
7392            },
7393            checkMin(value, step = null) {
7394                if (this.min) {
7395                    if (step) {
7396                        return value - step >= this.min;
7397                    }
7398                    return value >= this.min;
7399                }
7400                return true;
7401            },
7402            checkMax(value, step = null) {
7403                if (this.max) {
7404                    if (step) {
7405                        return value + step <= this.max;
7406                    }
7407                    return value <= this.max;
7408                }
7409                return true;
7410            }
7411        }
7412    }
7413
7414    /** Questo potrebbe convenire aggiungerlo solamente dove usiamo quell'input **/
7415    function dateInputManager() {
7416        return {
7417            value: '',
7418
7419            input: {
7420                ["x-model"]: "value",
7421                ['x-init']() {
7422                    this.value = this.$el.value
7423                },
7424
7425                ['x-on:input'](e) {
7426                    let date = e.target.value.replace(/\D/g, '');
7427                    let formattedDate = '';
7428
7429                    if (date.length >= 2) {
7430                        let value = date.substring(0, 2);
7431                        if (value > 31) {
7432                            value = 31;
7433                        }
7434                        formattedDate = value + '/';
7435                    } else {
7436                        this.value = date;
7437                        return;
7438                    }
7439
7440                    if (date.length >= 4) {
7441                        let value = date.substring(2, 4);
7442                        if (value > 12) {
7443                            value = 12;
7444                        }
7445                        formattedDate += value + '/';
7446                    } else {
7447                        this.value = formattedDate + date.substring(2, date.length);
7448                        return;
7449                    }
7450
7451                    if (date.length > 4) {
7452                        formattedDate += date.substring(4, 8);
7453                    } else {
7454                        this.value = formattedDate + date.substring(4, date.length);
7455                        return;
7456                    }
7457
7458                    this.value = formattedDate;
7459                }
7460            }
7461        }
7462    }
7463</script>
vendor: 1 bytes, line 7463
7463
7464<script>
7465    (function (w,d){
7466        function setScrollbarWidthCssVar() {
7467            let newSize = (w.innerWidth - d.body.clientWidth) + "px",
7468                oldSize = d.documentElement.style.getPropertyValue('--scrollbar-width');
7469            if (newSize !== oldSize){
7470                d.documentElement.style.setProperty('--scrollbar-width', newSize);
7471            }
7472        }
7473        d.addEventListener('alpine:init', () => {
7474            new ResizeObserver(Alpine.debounce(setScrollbarWidthCssVar, 300)).observe(d.documentElement);
7475        }, { once: true });
7476        setScrollbarWidthCssVar();
7477    }) (window, document);
7478    /** Effettua il lock della viewport quando necessario (es. all'apertura del menu o del minicart) */
7479    window.addEventListener('screen-lock', (event) => {
7480        document.body.classList.toggle('max-h-screen', event.detail);
7481        document.body.classList.toggle('lock-screen', event.detail);
7482        document.body.classList.toggle('overflow-hidden', event.detail);
7483    });
7484
7485    function initCustomerMenuMobile() {
7486        return {
7487            open: false,
7488            customer: {},
7489            getData(data) {
7490                if (data.customer) { this.customer = data.customer }
7491            },
7492            isLoggedIn(){
7493                return !!(this.customer.firstname);
7494            }
7495        }
7496    }
7497</script>
7497
7498
7499<!-- Wrapping template -->
7500<script type="text/template" id="instant_wrapper_template">
7501    {{#findAutocomplete}}
7502    <div id="algolia-autocomplete-container"></div>
7503    {{/findAutocomplete}}
7504
7505    <div id="algolia_instant_selector"
7506         class=" with-facets"
7507    >
7508        <div class="columns">
7509            <aside class="sidebar sidebar-main relative" id="algolia-left-container">
7510                <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()">
7511                    <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">
7512                        <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>
7513                        <title>adjustments</title>
7514                    </svg>
7515                    <span class="ml-1.5 font-baloo-bhaina">
7516                          Filtri                    </span>
7517                </button>
7518                <div class="mb-4 hidden lg:block" id="facets">
7519                    <div class="aa-mobile-header flex px-layoutGutter py-3 border-b mb-2 justify-between items-center lg:hidden shadow-md">
7520                        <span class="text-primary text-lg font-bold mx-auto pl-6">
7521                            Filtri                        </span>
7522                        <span id="aa-mobile-toggler" class="cursor-pointer" onclick="toggleAaFilters()">
7523                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img">
7524                                <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>
7525                                <title>x</title>
7526                            </svg>
7527                        </span>
7528                    </div>
7529                    <div class="pt-[50px] px-layoutGutter lg:px-0 lg:pt-0" id="instant-search-facets-container">
7530                        <div class="hidden lg:block text-primary text-md text-xl lg:text-2xl font-semibold h-10 mt-2.5">
7531                            Filtri                        </div>
7532                        <div class="w-full flex flex-col bg-white shadow hidden lg:mt-4 py-3" id="instant-search-active-filters">
7533                            <span class="title text-base font-bold font-baloo-bhaina hidden" id="instant-search-active-filters-label">
7534                                Filtri attivi                            </span>
7535                            <div class="order-2" id="clear-refinements"></div>
7536                            <div id="current-refinements"></div>
7537                        </div>
7538                    </div>
7539                </div>
7540            </aside>
7541            <div class="column main" id="algolia-right-container">
7542                <div class="hidden">
7543                    <div class="pb-3.5">
7544                        <div class="px-2.5">
7545                            {{#second_bar}}
7546                            <div id="instant-search-bar"></div>
7547                            {{/second_bar}}
7548                        </div>
7549                    </div>
7550                </div>
7551                <div class="relative">
7552                    <div itemscope itemtype="http://schema.org/ItemList" class="w-full">
7553                        <div id="algolia-toolbar" class="toolbar toolbar-products items-center flex justify-between">
7554                            <div class="left flex items-center">
7555                                <div id="algolia-stats"></div>
7556                            </div>
7557                            <div class="right flex items-center">
7558                                <span class="mr-2 inline-block">
7558Ordina per</span>
7559                                <div id="algolia-sorts"></div>
7560                            </div>
7561                        </div>
7562                        <div id="algolia-banner"></div>
7563                        <div id="instant-empty-results-container"></div>
7564                        <div class="py-6" id="instant-search-results-container"></div>
7565                    </div>
7566                </div>
7567                <div>
7568                    <div id="algolia-stats-range" class="mb-2"></div>
7569                    <div id="instant-search-pagination-container"></div>
7570                </div>
7571            </div>
7572        </div>
7573    </div>
7574</script>
7574
7575
7576<script>
7577    function toggleAaFilters() {
7578        try {
7579            var facets = document.getElementById('facets');
7580            if (!facets) return;
7581
7582            // Toggle visibility of facets (mobile overlay)
7583            facets.classList.toggle('hidden');
7584
7585            var isOpen = !facets.classList.contains('hidden');
7586            var body = document.body;
7587            var lockClasses = ['max-h-screen', 'lock-screen', 'overflow-hidden', 'instant-lock'];
7588            lockClasses.forEach(function (cls) {
7589                if (isOpen) {
7590                    body.classList.add(cls);
7591                } else {
7592                    body.classList.remove(cls);
7593                }
7594            });
7595
7596            // Apply or remove mobile collapsible bindings only when toggler is used
7597            try {
7598                if (window.AISFacetsCollapsible) {
7599                    if (isOpen) {
7600                        window.AISFacetsCollapsible.enable();
7601                    }
7602                }
7603            } catch (e2) { /* noop */ }
7604        } catch (e) {
7605            // Fail-safe: do nothing on error
7606            console.error('toggleAaFilters error', e);
7607        }
7608    }
7609</script>
7609
7610
7611<script>
7612    // Mobile-only: make Algolia facets panels (.ais-Panel) collapsible after they are rendered
7613    (function() {
7614        'use strict';
7615        var MOBILE_MQL = window.matchMedia('(max-width: 1023px)'); // Tailwind lg breakpoint
7616
7617        function applyCollapsible(root) {
7618            if (!root) return;
7619            var panels = root.querySelectorAll('.ais-Panel');
7620            panels.forEach(function(panel) {
7621                if (!panel || panel.dataset.collapsibleApplied === '1') return;
7622                var header = panel.querySelector('.ais-Panel-header');
7623                var body = panel.querySelector('.ais-Panel-body');
7624                if (!header || !body) return;
7625
7626                // Mark as processed
7627                panel.dataset.collapsibleApplied = '1';
7628
7629                // Ensure default open state
7630                panel.classList.remove('is-collapsed');
7631                header.setAttribute('aria-expanded', 'true');
7632
7633                // Make header interactive
7634                header.setAttribute('role', 'button');
7635                header.setAttribute('tabindex', '0');
7636
7637                // Inject chevron-down if not present
7638                if (!header.querySelector('.ais-Panel-chevron')) {
7639                    var chev = document.createElement('span');
7640                    chev.className = 'ais-Panel-chevron chevron';
7641                    chev.setAttribute('aria-hidden', 'true');
7642                    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>';
7643                    header.appendChild(chev);
7644                }
7645
7646                var toggle = function() {
7647                    var collapsed = panel.classList.toggle('is-collapsed');
7648                    header.setAttribute('aria-expanded', String(!collapsed));
7649                };
7650
7651                header.addEventListener('click', toggle);
7652                header.addEventListener('keydown', function(e) {
7653                    if (e.key === 'Enter' || e.key === ' ') {
7654                        e.preventDefault();
7655                        toggle();
7656                    }
7657                });
7658            });
7659        }
7660
7661        function enableMobileCollapsible() {
7662            if (!MOBILE_MQL.matches) return;
7663            var container = document.getElementById('instant-search-facets-container');
7664            if (!container) return;
7665            applyCollapsible(container);
7666
7667            // Observe for dynamic facet (re)renders
7668            if (!container._aisCollapsibleObserver) {
7669                var obs = new MutationObserver(function() {
7670                    applyCollapsible(container);
7671                });
7672                obs.observe(container, { childList: true, subtree: true });
7673                container._aisCollapsibleObserver = obs;
7674            }
7675        }
7676
7677        function disableMobileCollapsible() {
7678            var container = document.getElementById('instant-search-facets-container');
7679            if (!container) return;
7680            // Ensure all panels are open on desktop
7681            container.querySelectorAll('.ais-Panel').forEach(function(panel) {
7682                panel.classList.remove('is-collapsed');
7683                var header = panel.querySelector('.ais-Panel-header');
7684                if (header) {
7685                    header.setAttribute('aria-expanded', 'true');
7686                }
7687            });
7688            if (container._aisCollapsibleObserver) {
7689                try { container._aisCollapsibleObserver.disconnect(); } catch (e) {}
7690                container._aisCollapsibleObserver = null;
7691            }
7692        }
7693
7694        // Expose API to be triggered explicitly by the mobile toggler
7695        window.AISFacetsCollapsible = {
7696            enable: enableMobileCollapsible,
7697            disable: disableMobileCollapsible,
7698            _mql: MOBILE_MQL
7699        };
7700    })();
7701</script>
7701
7702
7703<style>
7704    .ais-ClearRefinements-button span {
7705        display: none;
7706    }
7707
7708    .ais-ClearRefinements-button::after {
7709        content: 'Cancella tutto';
7710    }
7711</style>
7712<script type="text/template" id="instant-hit-template">
7713    <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"
7714         x-data="initInsight()"
7715         x-init="bindClickEvent($el, 'Product Clicked', '{{objectID}}', '{{__indexName}}', '{{__position}}', '{{__queryID}}')"
7716    >
7717        <meta itemprop="position" content="{{__position}}"/>
7718        <div class="relative flex flex-col flex-grow" itemprop="item" itemscope itemtype="http://schema.org/Product">
7719            <meta itemprop="url"
7720                  {{^__queryID}} content="{{url}}" {{/__queryID}}
7721                  {{#__queryID}} content="{{urlForInsights}}" {{/__queryID}}
7722            />
7723
7724            <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')">
7725                <template x-for="badge in $store.badges.getBadgesHtml({{objectID}}, 'card_top_left')">
7726                    <span x-html="badge"></span>
7727                </template>
7728            </span>
7729
7730            <a class="product photo product-item-photo block mx-auto mb-4 result flex items-center justify-center max-w-[142px] max-h-[142px]"
7731               tabindex="-1"
7732               {{^__queryID}} href="{{url}}" {{/__queryID}}
7733               {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}}
7734            >
7735                {{#image_url}}<img itemprop="image" src="{{{image_url}}}" alt="{{{name}}}" class="max-w-full max-h-full object-contain"/>{{/image_url}}
7736                {{^image_url}}<span class="no-image block max-w-[142px] max-h-[142px] bg-gray-3"></span>{{/image_url}}
7737            </a>
7738
7739            <div class="product-info flex flex-col grow justify-start">
7740                <div class="items-center justify-center">
7741                    <a class="product-item-link result"
7742                       {{^__queryID}} href="{{url}}" {{/__queryID}}
7743                       {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}}>
7744                        <h2 class="text-primary text-xs line-clamp-3 font-normal">
7745                            {{{ _highlightResult.name.value }}}
7746                        </h2>
7747                    </a>
7748                </div>
7749                <div class="mt-1 mb-1">
7750                    {{#rating_count}}
7751                    <div class="rating-summary" title="{{rating_summary}}%" role="group" aria-label="{{rating_summary}}%">
7752                        <div class="inline-flex align-middle" style="line-height: 0;">
7753                            <div class="relative">
7754                                <div class="flex">
7755                                    <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>
7756                                    <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>
7757                                    <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"/>
7757</svg>
7758                                    <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>
7759                                    <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>
7760                                </div>
7761                                <div class="absolute top-0 left-0 overflow-hidden" style="width: {{rating_summary}}%">
7762                                    <div class="flex w-fit">
7763                                        <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>
7764                                        <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>
7765                                        <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>
7766                                        <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>
7767                                        <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>
7768                                    </div>
7769                                </div>
7770                            </div>
7771                            <span class="ml-1 text-xs relative top-[-1px]">({{rating_count}})</span>
7772                        </div>
7773                    </div>
7774                    {{/rating_count}}
7775                </div>
7776
7777                <div class="flex flex-nowrap justify-between items-center mt-auto items-end leading-none">
7778                    <span class="ajax-price-container block flex-grow font-baloo-bhaina hide-price-labels">
7779                        <template x-if="active = true">
7780                            <div x-defer="intersect" x-intersect.once="$store.ajaxPrices.addNode({{objectID}})">
7781                                <template x-if="!$store.ajaxPrices.hasPrice({{objectID}})">
7782                                    <div class="skeleton w-16 lg:w-full h-6">
7783                                        Caricamento...                                    </div>
7784                                </template>
7785                                <template x-if="$store.ajaxPrices.hasPrice({{objectID}})">
7786                                    <span x-html="$store.ajaxPrices.getPriceHtml({{objectID}})"></span>
7787                                </template>
7788                            </div>
7789                        </template>
7790                    </span>
7791
7792                    {{#isAddToCartEnabled}}
7793                    {{#in_stock}}
7794                        <form class="flex-grow-0 product_addtocart_form" data-role="tocart-form" action="{{ addToCart.action }}" method="post">
7795                            <input type="hidden" name="product" value="{{objectID}}">
7796                            <input type="hidden" name="uenc" value="{{ addToCart.uenc }}">
7797                            <input name="form_key" type="hidden" value="{{ addToCart.formKey }}">
7798                            <button type="submit" title="Aggiungi al Carrello"
7799                                    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"
7800                            >
7801                                <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>
7802                            </button>
7803                        </form>
7804                    {{/in_stock}}
7805                    {{^in_stock}}
7806                        <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"
7807                           {{^__queryID}} href="{{url}}" {{/__queryID}}
7808                           {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}}
7809                    >
7810                            <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">
7811                                <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.
7811058 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>
7812                            </svg>
7813                        </a>
7814                    {{/in_stock}}
7815
7816                    {{/isAddToCartEnabled}}
7817                </div>
7818            </div>
7819        </div>
7820    </div>
7821</script>
vendor: 1 bytes, line 7821
7821
7822<script>
7823    'use strict';
7824
7825    function initInsight() {
7826        return {
7827            bindClickEvent(element, eventName, objectID, indexName, position, queryID) {
7828                element.querySelector(algoliaConfig.ccAnalytics.ISSelector).addEventListener("click", function () {
7829                    buildInsightsEventData(eventName, objectID, indexName, position, queryID);
7830                });
7831            }
7832        }
7833    }
7834</script>
vendor: 1 bytes, line 7834
7834
7835<script type="text/template" id="instant-stats-total-template">
7836    <div class="font-body-sm text-gray-1 hidden lg:block">
7837        <span itemprop="numberOfItems">{{nbHits}}</span>
7838        <span>prodotti</span>
7839    </div>
7840</script>
7840
7841
7842<script type="text/template" id="instant-stats-range-template">
7843    <div class="toolbar-amount font-body-sm text-gray-1 pb-4 text-center">
7844        <span itemprop="numberOfItems">{{first}}-{{last}}</span>
7845        <span>di</span>
7846        <span itemprop="numberOfItems">{{nbHits}}</span>
7847    </div>
7848</script>
vendor: 1 bytes, line 7848
7848
7849<script type="text/template" id="refinements-lists-item-template">
7850    <label class="{{cssClasses.label}} {{#isRefined}}checked{{/isRefined}} flex items-center mb-1">
7851        <input class="{{cssClasses.checkbox}}" {{#isRefined}}checked{{/isRefined}} type="checkbox" value="{{value}}" />
7852        <span class="pl-2">{{value}}</span>
7853        <span class="{{cssClasses.count}} flex-grow text-right">{{count}}</span>
7854    </label>
7855</script>
vendor: 1 bytes, line 7855
7855
7856<script type="text/template" id="current-refinements-template">
7857    <div class="cross-wrapper">
7858        <span class="clear-cross clear-refinement"></span>
7859    </div>
7860    <div class="current-refinement-wrapper">
7861        {{#label}}
7862        <span class="current-refinement-label">{{label}}{{^operator}}:{{/operator}}</span>
7863        {{/label}}
7864        {{#operator}}
7865        {{{displayOperator}}}
7866        {{/operator}}
7867        {{#exclude}}-{{/exclude}}
7868        <span class="current-refinement-name">{{name}}</span>
7869    </div>
7870</script>
vendor: 1 bytes, line 7870
7870
7871<script>
7872    (function () {
7873        const modals = [];
7874                let lastHide = 0;
7875
7876                function resolveElement($refs, value) {
7877            if (!value) return null;
7878                        if (value instanceof Element) return value;
7879                        if (typeof value === 'string') {
7880                try {
7881                    return ($refs && $refs[value]) || document.querySelector(value) || null;
7882                } catch (e) {}
7883            }
7884            return null;
7885        }
7886
7887                function determineTrigger($refs, dialog, trigger) {
7888                        if (!trigger && dialog?.target instanceof HTMLElement) {
7889                return dialog.target;
7890            }
7891
7892                        if (typeof dialog === 'string' && trigger?.target instanceof HTMLElement) {
7893                return trigger.target;
7894            }
7895
7896            return resolveElement($refs, trigger);
7897        }
7898
7899                function setFocusFirstElement(dialogElement) {
7900            if (!dialogElement) return;
7901
7902            window.setTimeout(() => {
7903                const candidates = dialogElement.querySelectorAll('[x-focus-first]');
7904                for (const candidate of candidates) {
7905                    if (candidate.closest('dialog') === dialogElement) {
7906                        candidate.focus();
7907                        return;
7908                    }
7909                }
7910            }, 50);
7911        }
7912
7913        window.hyva.modal = function(options = {}) {
7914                        if (this.$el && this.$el.dataset && this.$el.dataset.options) {
7915                try {
7916                    options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}'));
7917                } catch (e) {
7918                    throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON');
7919                }
7920            }
7921
7922            const config = Object.assign({
7923                dialog: 'dialog',                 duration: 300,                 transitionEnter: 'transition ease-out duration-300',
7924                transitionEnterStart: 'opacity-0',
7925                transitionEnterEnd: 'opacity-100',
7926                transitionLeave: 'transition ease-in duration-300',
7927                transitionLeaveStart: 'opacity-100',
7928                transitionLeaveEnd: 'opacity-0',
7929            }, options);
7930
7931            return {
7932                opened: {},
7933                show(dialog, trigger) {
7934                    const name = typeof dialog === 'string' ? dialog : config.dialog;
7935                    if (!name || this.opened[name]) return;
7936
7937                    this.opened[name] = true;
7938                    const focusTarget = determineTrigger(this.$refs, dialog, trigger);
7939                    const dialogEl = this.$refs && this.$refs[name];
7940                    const frame = { name, instance: this, focusTarget, time: Date.now() };
7941                    modals.push(frame);
7942                    setFocusFirstElement(dialogEl);
7943                    return new Promise(resolve => { frame.resolve = resolve; });
7944                },
7945                cancel() {
7946                    this.hide(false);
7947                },
7948                ok() {
7949                    this.hide(true);
7950                },
7951                hide(value) {
7952                                        if (Date.now() - lastHide < config.duration) return;
7953                    lastHide = Date.now();
7954
7955                                        const modal = modals.pop();
7956                    if (!modal) return;
7957
7958                    modal.instance.opened[modal.name] = false;
7959
7960                                        const focusTarget = modal.focusTarget;
7961                    focusTarget && window.setTimeout(() => focusTarget.focus(), config.duration + 50);
7962                    modal.resolve && modal.resolve(value);
7963                },
7964                /**
7965                 * @deprecated Use dialogConfig() instead, which is used by the default modal-container.phtml template.
7966                 * This method is kept for backwards compatibility with custom container templates.
7967                 */
7968                overlay(dialog) {
7969                    dialog = this.$el.dataset.dialogRefName || dialog;
7970                    const name = typeof dialog === 'string' ? dialog : config.dialog;
7971                    if (this.$el.tagName !== 'DIALOG' && ! window.hyva.modal.legacyModalCompatibility) {
7972                        console.warn(
7973                            '[hyva] Deprecated modal markup detected (x-bind="overlay" on a non-dialog element' +
7974                            (name ? ` for "${name}"` : '') + ').\n' +
7975                            'Escape and click-outside closing are not available for such dialogs anymore.\n' +
7976                            'Install hyva-themes/magento2-legacy-modal-compatibility or migrate to the native <dialog> markup.'
7977                        );
7978                    }
7979                    return Object.assign({}, this.dialogConfig(name), {
7980                        ['@hyva-modal-show.window'](event) {
7981                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide)
7982                        }
7983                    });
7984                },
7985                dialogConfig(name) {
7986                    name = name || this.$el.dataset.dialogRefName || config.dialog;
7987                    return {
7988                        ['x-show']: () => name ? this.opened[name] : false,
7989                        ['x-transition:enter']: config.transitionEnter,
7990                        ['x-transition:enter-start']: config.transitionEnterStart,
7991                        ['x-transition:enter-end']: config.transitionEnterEnd,
7992                        ['x-transition:leave']: config.transitionLeave,
7993                        ['x-transition:leave-start']: config.transitionLeaveStart,
7994                        ['x-transition:leave-end']: config.transitionLeaveEnd,
7995                        ['@hyva-modal-show.window'](event) {
7996                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide);
7997                        },
7998                    };
7999                },
8000                showDialogOnInit() {
8001                    const name = this.$el.dataset.dialogRefName;
8002                    if (name) {
8003                        this.show(name);
8004                    }
8005                }
8006            };
8007        }
8008
8009        window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length - 1]
8010
8011        window.hyva.modal.pop = function () {
8012            if (modals.length > 0) {
8013                modals[modals.length - 1].instance.hide();
8014            }
8015        }
8016
8017        /**
8018         * @deprecated Native <dialog> handles focus trapping automatically.
8019         * Calling this function has no effect. Kept for backwards compatibility.
8020         */
8021        window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) {}
8022
8023        /**
8024         * @deprecated Native <dialog> with x-htmldialog handles ESC key and click-outside events.
8025         * These functions have no effect. Kept for backwards compatibility.
8026         */
8027        window.hyva.modal.eventListeners = {
8028            keydown: event => {},
8029            click: event => {}
8030        };
8031    })();
8032
8033    window.addEventListener('alpine:init', () => {
8034        Alpine.data('hyvaModal', window.hyva.modal);
8035    }, {once: true});
8036</script>
8036
8037
8038<section x-data="initAmGdprLoader"
8039         @amgdpr-loading-start.window="showLoader"
8040         @amgdpr-loading-stop.window="hideLoader"
8041>
8042    
8043<div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50"
8044     style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgb(255 255 255/0.60);"
8045     x-show="isLoading"
8046     x-transition:enter="ease-out duration-200"
8047     x-transition:enter-start="opacity-0"
8048     x-transition:enter-end="opacity-100"
8049     x-transition:leave="ease-in duration-200"
8050     x-transition:leave-start="opacity-100"
8051     x-transition:leave-end="opacity-0">
8052    <svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 38 38" stroke="#ffb590" class="text-primary" role="img">
8053    <g fill="none" fill-rule="evenodd">
8054        <g transform="translate(1 1)" stroke-width="2">
8055            <circle stroke="#ff6801" cx="18" cy="18" r="18"/>
8056            <path d="M36 18c0-9.94-8.06-18-18-18">
8057                <animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"/>
8058            </path>
8059        </g>
8060    </g>
8061<title>loader</title></svg>
8062</div>
8063</section>
8064
8065<script data-cfasync="false">
8066    'use strict';
8067
8068    function initAmGdprLoader() {
8069        return {
8070            isLoading: false,
8071
8072            /**
8073             * @returns {void}
8074             */
8075            showLoader: function () {
8076                this.isLoading = true;
8077            },
8078
8079            /**
8080             * @returns {void}
8081             */
8082            hideLoader: function () {
8083                this.isLoading = false;
8084            }
8085        }
8086    }
8087
8088    window.addEventListener(
8089        'alpine:init',
8090        () => Alpine.data('initAmGdprLoader', initAmGdprLoader),
8091        { once: true }
8092    );
8093</script>
8093
8094
8095
8096<script data-cfasync="false">
8097    'use strict';
8098
8099    /**
8100     * @typedef {Object} CookieGroupData
8101     * @prop {Boolean} checked
8102     * @prop {[{description: string, lifetime: number|null, name: string, provider: string, type: string}]} cookies
8103     * @prop {String} description
8104     * @prop {string|null} groupId
8105     * @prop {Boolean} isEssential
8106     * @prop {String} name
8107     */
8108
8109    function initAmastyCookieGroupsStorage() {
8110        return {
8111            /**
8112             * @type {[CookieGroupData]}
8113             */
8114            groupData: [],
8115            cookiePolicy: undefined,
8116            lastUpdate: undefined,
8117
8118            /**
8119             * @returns {string|number[]}
8120             */
8121            getEssentialGroupIds: function () {
8122                return this.groupData.reduce(function (essentialGroupIds, group) {
8123                    if (group.isEssential) {
8124                        essentialGroupIds.push(group.groupId)
8125                    }
8126
8127                    return essentialGroupIds;
8128                }, []);
8129            },
8130
8131            /**
8132             * @returns {string|number[]}
8133             */
8134            getCheckedGroupIds: function () {
8135                return this.groupData.reduce(function (checkedGroupIds, group) {
8136                    if (group.checked) {
8137                        checkedGroupIds.push(group.groupId);
8138                    }
8139
8140                    return checkedGroupIds;
8141                }, []);
8142            },
8143
8144            /**
8145             * @param {string} cookieName
8146             * @returns {boolean}
8147             */
8148            isCookieEssential: function (cookieName) {
8149                const allEssentialCookies = this.getEssentialCookies();
8150
8151                return !!allEssentialCookies.find(cookie => cookie.name === cookieName);
8152            },
8153
8154            /**
8155             * @returns {array}
8156             */
8157            getEssentialCookies: function () {
8158                return this.groupData
8159                    .filter(group => group.isEssential)
8160                    .map(group => group.cookies)
8161                    .flat();
8162            },
8163
8164            /**
8165             * @returns {boolean}
8166             */
8167            hasGroupData: function () {
8168                return !!this.groupData.length;
8169            },
8170
8171            /**
8172             * @param {string} cookieName
8173             * @param {string} pattern
8174             * @returns {boolean}
8175             */
8176            isEssentialByPattern: function (cookieName, pattern) {
8177                const essentialCookiePatterns = this.getEssentialCookiesPattern(pattern);
8178
8179                return essentialCookiePatterns.some((pattern) => !!cookieName.match(this.getCookiePattern(pattern)));
8180            },
8181
8182            /**
8183             * @param {string} pattern
8184             * @return {Array}
8185             */
8186            getEssentialCookiesPattern: function (pattern) {
8187                return this.getCookiesByPattern(pattern, this.getEssentialCookies());
8188            },
8189
8190            /**
8191             * @param {string} pattern
8192             * @param {Array|undefined} cookies
8193             * @return {Array}
8194             */
8195            getCookiesByPattern: function (pattern, cookies) {
8196                if (typeof cookie === 'undefined') {
8197                    cookies = this.getAllCookies();
8198                }
8199
8200                return cookies
8201                    .map((cookie) => typeof cookie === 'object' ? cookie.name : cookie.split('=')[0].trim())
8202                    .filter((cookie) => cookie.match(pattern) !== null);
8203            },
8204
8205            /**
8206             * @returns {array}
8207             */
8208            getDisallowedCookies: function () {
8209                const disallowedCookie = decodeURIComponent(hyva.getCookie('amcookie_disallowed') ?? '');
8210                if (!disallowedCookie) {
8211                    return [];
8212                }
8213
8214                return disallowedCookie.split(',');
8215            },
8216
8217            /**
8218             * @returns {string}
8219             */
8220            getCookiePattern: function (pattern) {
8221                return `^${pattern.replaceAll('*', '.*')}$`;
8222            },
8223
8224            /**
8225             * @returns {array}
8226             */
8227            getAllCookies: function () {
8228                return document.cookie.split(';');
8229            },
8230
8231            /**
8232             * @param {boolean} setAcceptance
8233             * @returns {Promise}
8234             */
8235            updateGroupData: function (setAcceptance = false) {
8236                const cookieFetchUrl = `${BASE_URL}amcookie/cookie/cookies`;
8237                return fetch(cookieFetchUrl, {
8238                    method: "POST",
8239                    headers: {
8240                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
8241                        'X-Requested-With': 'XMLHttpRequest'
8242                    },
8243                    body: new URLSearchParams({
8244                        allowed: hyva.getCookie('amcookie_allowed'),
8245                        restriction: hyva.getCookie('amcookie_policy_restriction')
8246                    })
8247                }).then(response => {
8248                    if (response.ok) {
8249                        return response.json();
8250                    }
8251
8252                    return Promise.reject(`${response.status} ${response.statusText}`);
8253                }).then(data => {
8254                    this.cookiePolicy = data.cookiePolicy ?? 'allowed';
8255                    this.lastUpdate = data.lastUpdate ?? 0;
8256                    this.groupData = [...data.groupData];
8257
8258                    hyva.setCookie('amcookie_policy_restriction', this.cookiePolicy, 10);
8259                    if (setAcceptance) {
8260                        amastyCookieManager.setLastCookieAcceptance(this.lastUpdate);
8261                    }
8262
8263                    return data;
8264                }).catch(error => {
8265                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
8266                        {
8267                            type: "error",
8268                            text: error
8269                        }
8270                    ]);
8271                }).finally(() => window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated')));
8272            }
8273        }
8274    }
8275
8276    window.addEventListener(
8277        'alpine:init',
8278        () => Alpine.store('AmastyCookieGroups', initAmastyCookieGroupsStorage()),
8279        { once: true }
8280    );
8281</script>
8281
8282
8283<script data-cfasync="false">
8284    (function (amastyCookieManager) {
8285        'use strict';
8286
8287        amastyCookieManager.pattern = '{(?<cookiePattern>.*)}';
8288
8289        amastyCookieManager.getAmastyCookieGroupStorage = function () {
8290            return Alpine.store('AmastyCookieGroups') ?? {};
8291        };
8292
8293        amastyCookieManager.deleteDisallowedCookie = function () {
8294            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
8295            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
8296
8297            disallowedCookies.forEach((name) => {
8298                const pattern = name.match(this.pattern);
8299                if (!!pattern && !!amastyCookieGroupStorage) {
8300                    const cookiePattern = amastyCookieGroupStorage.getCookiePattern(pattern.groups.cookiePattern) ?? '';
8301
8302                    amastyCookieGroupStorage.getCookiesByPattern(cookiePattern).forEach((cookieName) => {
8303                        this.deleteNotEssentialCookie(cookieName);
8304                    });
8305                } else {
8306                    this.deleteNotEssentialCookie(name);
8307                }
8308            });
8309        };
8310
8311        amastyCookieManager.isCookieAllowed = function (cookieName) {
8312            const allowedGroups = hyva.getCookie('amcookie_allowed');
8313            const disallowedCookie = this.getAmastyCookieGroupStorage()?.getDisallowedCookies() ?? [];
8314            const isCookiePolicyAllowed = hyva.getCookie('amcookie_policy_restriction') === 'allowed';
8315            const isCookieEssential = this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName);
8316            const isCookieEssentialByPattern = this.getAmastyCookieGroupStorage()?.isEssentialByPattern(cookieName, this.pattern);
8317
8318            if (!isCookiePolicyAllowed || isCookieEssential || isCookieEssentialByPattern) {
8319                return true;
8320            }
8321
8322            return !((!allowedGroups && !disallowedCookie) || this.isCookieDisallowed(cookieName));
8323        };
8324
8325        amastyCookieManager.isCookieDisallowed = function (cookieName) {
8326            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
8327            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
8328
8329            return disallowedCookies.some((cookie) => {
8330                const pattern = cookie.match(this.pattern);
8331
8332                return !!pattern && !!cookieName.match(amastyCookieGroupStorage?.getCookiePattern(pattern.groups.cookiePattern));
8333            }) || disallowedCookies.indexOf(cookieName) !== -1;
8334        };
8335
8336        amastyCookieManager.processManageableCookies = function () {
8337            let cookieScripts = document.querySelectorAll('script[data-amcookie-groupid][type="text/plain"]');
8338
8339            cookieScripts.forEach((elem) => {
8340                if (this.isChecked(elem.dataset['amcookie-groupid'])) {
8341                    let elClone = elem.cloneNode(true).setAttribute('type', 'text/javascript');
8342
8343                    elem.remove();
8344                    document.body.appendChild(elClone);
8345                }
8346            });
8347        };
8348
8349        amastyCookieManager.deleteNotEssentialCookie = function (cookieName) {
8350            if (!this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName)) {
8351                hyva.setCookie(cookieName, '', -1, true);
8352            }
8353        };
8354
8355        amastyCookieManager.setLastCookieAcceptance = function (lastUpdate) {
8356            localStorage.setItem('am-last-cookie-acceptance', lastUpdate);
8357        };
8358
8359        window.addEventListener('amasty-cookie-group-updated', () => {
8360            amastyCookieManager.deleteDisallowedCookie();
8361        });
8362
8363        window.addEventListener('private-content-loaded', () => {
8364            amastyCookieManager.getAmastyCookieGroupStorage()?.hasGroupData() && amastyCookieManager.deleteDisallowedCookie();
8365        });
8366    }(window.amastyCookieManager = window.amastyCookieManager || {}));
8367</script>
8367
8368
8369<script data-cfasync="false">
8370    (function () {
8371        'use strict';
8372
8373        window.addEventListener('cookiebar-action-accept', (event) => {
8374            const groups = event.detail?.include_checked_groups ? Alpine.store('AmastyCookieGroups').getCheckedGroupIds() : [];
8375            const url = `${BASE_URL}amcookie/cookie/savegroups`;
8376            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
8377            const body = new URLSearchParams({
8378                form_key: hyva.getFormKey()
8379            });
8380            groups.length && groups.map(groupId => body.append('groups[]', groupId));
8381
8382            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
8383                .then(response => {
8384                    if (response.ok) {
8385                        return response.json();
8386                    }
8387
8388                    return Promise.reject(`${response.status} ${response.statusText}`);
8389                })
8390                .then(data => {
8391                    !!data.success && Alpine.store('AmastyCookieGroups').updateGroupData(true);
8392                })
8393                .catch(error => {
8394                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
8395                        {
8396                            type: "error",
8397                            text: error
8398                        }
8399                    ]);
8400                })
8401                .finally(() => {
8402                    amastyCookieManager.processManageableCookies();
8403                    window.dispatchEvent(new CustomEvent('cookiebar-action-accept-finish'));
8404                    window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated'));
8405                    // Wait cookiebar close animation
8406                    setTimeout(() => {
8407                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
8408                    }, 100);
8409                });
8410        });
8411    })();
8412</script>
8412
8413
8414<script data-cfasync="false">
8415    (function () {
8416        'use strict';
8417
8418        window.addEventListener('cookiebar-action-allow', () => {
8419            const url = `${BASE_URL}amcookie/cookie/allow`;
8420            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
8421            const body = new URLSearchParams({
8422                form_key: hyva.getFormKey()
8423            });
8424            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
8425                .then(response => {
8426                    if (response.ok) {
8427                        return response;
8428                    }
8429
8430                    return Promise.reject(`${response.status} ${response.statusText}`);
8431                })
8432                .then(() => {
8433                    Alpine.store('AmastyCookieGroups').updateGroupData(true);
8434                })
8435                .catch(error => {
8436                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
8437                        {
8438                            type: "error",
8439                            text: error
8440                        }
8441                    ]);
8442                })
8443                .finally(() => {
8444                    amastyCookieManager.processManageableCookies();
8445                    window.dispatchEvent(new CustomEvent('cookiebar-action-allow-finish'));
8446                    // Wait cookiebar close animation
8447                    setTimeout(() => {
8448                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
8449                    }, 100);
8450                });
8451        });
8452    })();
8453</script>
8453
8454
8455<style>
8456    :root {
8457        /* Bar Color Settings */
8458        --ambar-background: #fff;
8459        --ambar-links-color: #326ed1;
8460        --ambar-policy-text: #374151;
8461        --ambar-toggle-active-color: #2563eb;
8462        --ambar-toggle-inactive-color: #fff;
8463
8464        /* Buttons Color Settings */
8465        --ambar-button-accept-color: #337ab7;
8466        --ambar-button-accept-hover-color: #337ab7;
8467        --ambar-button-accept-text: #fff;
8468        --ambar-button-accept-hover-text: #fff;
8469
8470        --ambar-button-allow-color: #337ab7;
8471        --ambar-button-allow-hover-color: #337ab7;
8472        --ambar-button-allow-text: #fff;
8473        --ambar-button-allow-hover-text: #fff;
8474
8475        --ambar-button-decline-color: #337ab7;
8476        --ambar-button-decline-hover-color: #337ab7;
8477        --ambar-button-decline-text: #fff;
8478        --ambar-button-decline-hover-text: #fff;
8479
8480        --ambar-button-settings-color: #337ab7;
8481        --ambar-button-settings-hover-color: #337ab7;
8482        --ambar-button-settings-text: #fff;
8483        --ambar-button-settings-hover-text: #fff;
8484
8485        /* Buttons Order Settings */
8486        --ambar-button-accept-order: 0;
8487        --ambar-button-allow-order: 0;
8488        --ambar-button-settings-order: 0;
8489        --ambar-button-decline-order: 0;
8490
8491        /* Cookie Information Bar Color Settings */
8492        --ambar-information-background: #fff;
8493        --ambar-information-title: #374151;
8494        --ambar-information-description: #374151;
8495        --ambar-information-table-header: #374151;
8496        --ambar-information-table-content: #374151;
8497
8498        /* Cookie Information Bar Done Button Settings */
8499        --ambar-information-button-color: #1d4ed8;
8500        --ambar-information-button-hover-color: #1d4ed8;
8501        --ambar-information-button-text: #fff;
8502        --ambar-information-button-hover-text: #fff;
8503
8504        /* Settings Bar Done Button Settings */
8505        --ambar-setting-button-color: #1d4ed8;
8506        --ambar-setting-button-hover-color: #1d4ed8;
8507        --ambar-setting-button-text: #fff;
8508        --ambar-setting-button-hover-text: #fff;
8509    }
8510</style>
8511
8512<script data-cfasync="false">
8513    'use strict';
8514
8515    function initAmCookieActionDispatcherBtn() {
8516        return {
8517            actiondispatchHandler: function (event) {
8518                const { dispatchAction, dispatchPayload } = event.currentTarget.dataset;
8519                this.$dispatch(dispatchAction, this.parsePayload(dispatchPayload));
8520            },
8521            parsePayload: function (payload) {
8522                try {
8523                    return JSON.parse(payload);
8524                } catch (e) {
8525                    return null;
8526                }
8527            }
8528        };
8529    }
8530
8531    window.addEventListener(
8532        'alpine:init',
8533        () => Alpine.data('initAmCookieActionDispatcherBtn', initAmCookieActionDispatcherBtn),
8534        { once: true }
8535    );
8536</script>
8536
8537
8538<script data-cfasync="false">
8539    'use strict';
8540
8541    function initAmCookieGroups() {
8542        return {
8543            /**
8544             * @withContext x-for: $store.AmastyCookieGroups.groupData
8545             * @returns {string}
8546             */
8547            getInputGroupId: function () {
8548                return `amcookie-${this.$el.dataset.groupPrefix}group-${this.group.groupId}`
8549            },
8550
8551            /**
8552             * @withContext x-for: $store.AmastyCookieGroups.groupData
8553             * @returns {{"!bg-gray-400": boolean}}
8554             */
8555            getInputStyles: function () {
8556                return {
8557                    '!bg-gray-400': this.group.isEssential
8558                }
8559            },
8560
8561            /**
8562             * @withContext x-for: $store.AmastyCookieGroups.groupData
8563             * @returns {void}
8564             */
8565            toggleGroup: function () {
8566                this.group.checked = !this.group.checked;
8567            },
8568
8569            /**
8570             * @withContext x-for: $store.AmastyCookieGroups.groupData
8571             * @returns {void}
8572             */
8573            moreInfoClickHandler: function () {
8574                this.$dispatch(this.$el.dataset.dispatchAction, this.group);
8575            },
8576
8577            moreInformationAboutCookieGroup: function () {
8578                return hyva.str('About\u0020\u0022\u00251\u0022\u0020Cookie\u0020Group', this.group.name);
8579            }
8580        }
8581    }
8582
8583    window.addEventListener(
8584        'alpine:init',
8585        () => Alpine.data('initAmCookieGroups', initAmCookieGroups),
8586        {once: true}
8587    );
8588</script>
8588
8589<style>
8590    .is-loading > :not(.loader) {
8591        visibility: hidden;
8592    }
8593</style>
8594
8595<script>
8596    function connectifGetURLParameters(form) {
8597        let url = form.querySelector('.connectif-url').getAttribute('href');
8598        const parsedUrl = new URL(url);
8599
8600        const params = new URLSearchParams(parsedUrl.search);
8601
8602        const paramsObject = {};
8603        params.forEach((value, key) => {
8604            paramsObject[key] = decodeURIComponent(value);
8605        });
8606
8607        return paramsObject;
8608    }
8609
8610    var addToCartAjaxEvent = function (e) {
8611        let form = this;
8612        let delay = parseInt('1000', 10);
8613
8614        e.preventDefault();
8615
8616        const data = new URLSearchParams(new FormData(form)),
8617            button = form.querySelector('button') ?
8618                form.querySelector('button') :
8619                document.getElementById('product-addtocart-button'),
8620            loader = document.createElement('div'),
8621            initialText = button.innerHTML;
8622
8623        loader.className = 'absolute inset-0 flex justify-center items-center loader';
8624        loader.innerHTML = `
8625                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" xml:space="preserve" width="32" height="32">
8626                    <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">
8627                        <animateTransform attributeName="transform" attributeType="XML" type="rotate" dur="1s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/>
8628                    </path>
8629                </svg>
8630                `;
8631
8632        button.prepend(loader);
8633        button.classList.add('relative', 'is-loading', 'text-[0]');
8634        button.disabled = true;
8635
8636        var product_id = data.get('product');
8637
8638        fetch(e.currentTarget.action, {
8639            method: 'POST',
8640            body: data,
8641            headers: {
8642                'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
8643                'X-Requested-With': 'XMLHttpRequest'
8644            }
8645        })
8646            .then(res => {
8647                if (!res.ok) {
8648                    return form.submit();
8649                }
8650
8651                if (res.redirected) {
8652                    return [];
8653                }
8654
8655                return res.json();
8656            })
8657            .then(data => {
8658                if (form.classList.contains('connectif-product')) {
8659                    let jsonDecodedVAR = JSON.parse(connectifGetURLParameters(form)['cnWebLinkClicked']);
8660                    jsonDecodedVAR.type = "web-link-clicked";
8661
8662                    window.connectif.managed.sendEvents([jsonDecodedVAR], []).finally(() => submitCallback());
8663                } else {
8664                    submitCallback();
8665                }
8666
8667                function submitCallback() {
8668                    if (data.backUrl && data.backUrl !== window.location.href) {
8669                        form.submit();
8670                    } else {
8671                        button.classList.add('bg-success-darker', 'hover:bg-success-darker');
8672                        loader.remove();
8673
8674                        let defaultChild = button.querySelector('.check');
8675                        if (!defaultChild) {
8676                            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">
8677        <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"/>
8678    <title>check</title></svg>
8679    `;
8680                        } else {
8681                            defaultChild.classList.add('hidden');
8682                            let addingChild = button.querySelector('.added');
8683                            if (addingChild) {
8684                                addingChild.classList.remove('hidden');
8685                            }
8686                        }
8687
8688                        button.classList.remove('is-loading', 'text-[0]');
8689                    }
8690
8691                    window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
8692                }
8693            })
8694            .catch(err => {
8695                window.dispatchEvent(new CustomEvent('product-addtocart-error'));
8696
8697                setMessage({
8698                    text:'There was a problem adding your item to the cart.',
8699                    type: 'error'
8700                });
8701            })
8702            .finally(() => {
8703                try {
8704                    var messages = hyva.getCookie('mage-messages');
8705                    messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
8706                    document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
8707
8708                } catch (error) {
8709                    console.warn('Error parsing Cookie Messages:', error);
8710                    return;
8711                }
8712
8713                setTimeout(() => {
8714                    button.disabled = false;
8715                    button.classList.remove('bg-success-darker', 'hover:bg-success-darker');
8716                    button.classList.remove('text-[0]');
8717
8718                    let defaultChild = button.querySelector('.default');
8719                    if (!defaultChild) {
8720                        button.innerHTML = button.getAttribute("aria-label");
8721                    } else {
8722                        defaultChild.classList.remove('hidden');
8723                        let addingChild = button.querySelector('.added');
8724                        if (addingChild) {
8725                            addingChild.classList.add('hidden');
8726                        }
8727                    }
8728
8729                    button.innerHTML = initialText;
8730
8731                    window.dispatchEvent(new CustomEvent('product-addtocart-success', {
8732                        detail: {
8733                            product_id: product_id,
8734                            form_data: Object.fromEntries(new FormData(form))
8735                        }
8736                    }));
8737
8738                    messages.forEach(message => {
8739                        setMessage(message);
8740                    });
8741                }, delay);
8742            });
8743    };
8744
8745    window.setAjaxCart = (selectors = '.product_addtocart_form:not(.no-ajax), #product_addtocart_form:not(.no-ajax)') => {
8746        const addToCartForms = document.querySelectorAll(selectors);
8747
8748        addToCartForms.forEach(form => {
8749            form.removeEventListener('submit', addToCartAjaxEvent);
8750            form.addEventListener('submit', addToCartAjaxEvent);
8751        });
8752    }
8753
8754    /**
8755     * Set Message
8756     */
8757    function setMessage(message) {
8758        typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
8759            [message], 5000
8760        );
8761    }
8762
8763    /** Init on pageload */
8764    window.setAjaxCart();
8765</script>
8765
8766    
8766<script>
8767    function initAlgoliaInsights(partial) {
8768        window.algoliaAnalytics = AlgoliaAnalytics.default;
8769        window.hasAddedParameters = false;
8770        window.useCookie = algoliaConfig.cookieConfiguration.cookieRestrictionModeEnabled ? !!hyva.getCookie(algoliaConfig.cookieConfiguration.consentCookieName) : true;
8771
8772        if (!canTrack()) {
8773            return;
8774        }
8775
8776        initializeAnalytics(partial);
8777        addSearchParameters();
8778        bindEvents();
8779
8780        // Although events can accept both auth and anon tokens, queries can only accept a single token
8781        function determineUserToken() {
8782            return window.algoliaAnalytics.getAuthenticatedUserToken() ?? algoliaAnalytics.getUserToken();
8783        }
8784
8785        function initializeAnalytics(partial = false) {
8786            if (partial) {
8787                algoliaAnalytics.init({
8788                    appId: algoliaConfig.applicationId,
8789                    apiKey: algoliaConfig.apiKey,
8790                    partial: true,
8791                    useCookie: true,
8792                    cookieDuration: Number(algoliaConfig.cookieConfiguration.cookieDuration)
8793                });
8794            } else {
8795                algoliaAnalytics.init({
8796                    appId: algoliaConfig.applicationId,
8797                    apiKey: algoliaConfig.apiKey,
8798                    useCookie: true,
8799                    cookieDuration: Number(algoliaConfig.cookieConfiguration.cookieDuration)
8800                });
8801            }
8802            let userAgent = 'insights-js-in-magento (' + algoliaConfig.extensionVersion + ')';
8803            window.algoliaAnalytics.addAlgoliaAgent(userAgent);
8804
8805            let unsetAuthenticationToken = hyva.getCookie('unset_authentication_token');
8806            if (hyva.getCookie('aa-search') && hyva.getCookie('aa-search') !== '') {
8807                window.algoliaAnalytics.setUserToken(hyva.getCookie('aa-search'));
8808            } else if (hyva.getCookie('_ALGOLIA') && hyva.getCookie('_ALGOLIA') !== '') {
8809                window.algoliaAnalytics.setUserToken(hyva.getCookie('_ALGOLIA'));
8810            } else if (unsetAuthenticationToken && unsetAuthenticationToken !== '') {
8811                window.algoliaAnalytics.setUserToken('undefined');
8812                hyva.setCookie('unset_authentication_token', '', -1);
8813            }
8814        }
8815
8816        function applyInsightsToSearchParams(params = {}) {
8817            if (algoliaConfig.ccAnalytics.enabled) {
8818                params.clickAnalytics = true;
8819            }
8820
8821            if (algoliaConfig.personalization.enabled) {
8822                params.enablePersonalization = true;
8823                params.userToken = determineUserToken();
8824            }
8825
8826            return params;
8827        }
8828
8829        function addSearchParameters() {
8830            if (window.hasAddedParameters) {
8831                return;
8832            }
8833            algolia.registerHook('beforeWidgetInitialization', function (allWidgetConfiguration) {
8834                allWidgetConfiguration.configure = applyInsightsToSearchParams(
8835                    allWidgetConfiguration.configure
8836                );
8837                return allWidgetConfiguration;
8838            });
8839
8840            algolia.registerHook('afterAutocompleteProductSourceOptions', (options) => {
8841                return applyInsightsToSearchParams(options);
8842            });
8843
8844            window.hasAddedParameters = true;
8845        }
8846
8847
8848        function bindEvents() {
8849            bindClickedEvents();
8850            bindViewedEvents();
8851
8852            algolia.triggerHooks('afterInsightsBindEvents', this);
8853        }
8854
8855        function bindClickedEvents() {
8856            // Filter Clicked
8857            if (algoliaConfig.personalization.filterClicked.enabled) {
8858                const facets = algoliaConfig.facets;
8859                let containers = [];
8860                for (let i = 0; i < facets.length; i++) {
8861                    let elem = createISWidgetContainer(facets[i].attribute);
8862                    containers.push('.' + elem.className);
8863                }
8864
8865                algolia.registerHook('afterInstantsearchStart', function (search) {
8866                    const selectors = document.querySelectorAll(containers.join(', '));
8867                    selectors.forEach(function (e) {
8868                        e.addEventListener('click', function (event) {
8869                            const attribute = this.dataset.attr;
8870                            const elem = event.target;
8871                            if (elem.type === "checkbox" && elem.checked) {
8872                                var filter = attribute + ':' + elem.value;
8873                                trackFilterClick([filter]);
8874                            }
8875                        });
8876                    });
8877
8878                    return search;
8879                });
8880            }
8881        }
8882
8883        function bindViewedEvents() {
8884            // viewed event is exclusive to personalization
8885            if (!algoliaConfig.personalization.enabled) {
8886                return;
8887            }
8888
8889            const viewConfig = algoliaConfig.personalization.viewedEvents.viewProduct;
8890            if (viewConfig.enabled) {
8891                if (document.body.classList.contains('catalog-product-view')) {
8892                    const objectId = document.querySelector('#product_addtocart_form')?.querySelector('input[name="product"]').value;
8893                    if (objectId) {
8894                        const viewData = buildEventData(viewConfig.eventName, objectId, algoliaConfig.indexName + '_products');
8895                        trackView(viewData);
8896                    }
8897                }
8898
8899            }
8900        }
8901
8902        function buildEventData(eventName, objectId, indexName, position = null, queryId = null) {
8903            const eventData = {
8904                eventName: eventName,
8905                objectIDs: [objectId + ''],
8906                index: indexName
8907            };
8908
8909            if (position) {
8910                eventData.positions = [parseInt(position)];
8911            }
8912
8913            if (queryId) {
8914                eventData.queryID = queryId;
8915            }
8916
8917            return eventData;
8918        }
8919
8920        function trackClick(eventData) {
8921            if (eventData.queryID) {
8922                window.algoliaAnalytics.clickedObjectIDsAfterSearch(eventData);
8923            } else {
8924                window.algoliaAnalytics.clickedObjectIDs(eventData);
8925            }
8926        }
8927
8928        function trackFilterClick(filters) {
8929            const eventData = {
8930                index: algoliaConfig.indexName + '_products',
8931                eventName: algoliaConfig.personalization.filterClicked.eventName,
8932                filters: filters
8933            };
8934
8935            window.algoliaAnalytics.clickedFilters(eventData);
8936        }
8937
8938        function trackView(eventData) {
8939            window.algoliaAnalytics.viewedObjectIDs(eventData);
8940        }
8941    }
8942
8943    function canTrack() {
8944        return ((algoliaConfig.ccAnalytics.enabled
8945            || algoliaConfig.personalization.enabled) && window.useCookie);
8946    }
8947
8948    function buildInsightsEventData(eventName, objectId, indexName, position = null, queryId = null) {
8949        if (!canTrack()) {
8950            return;
8951        }
8952
8953        const eventData = {
8954            eventName: eventName,
8955            objectIDs: [objectId + ''],
8956            index: indexName
8957        };
8958        if (position) {
8959            eventData.positions = [parseInt(position)];
8960        }
8961        if (queryId) {
8962            eventData.queryID = queryId;
8963        }
8964        trackClick(eventData);
8965    }
8966
8967    function trackClick(eventData) {
8968        if (eventData.queryID) {
8969            window.algoliaAnalytics.clickedObjectIDsAfterSearch(eventData);
8970        } else {
8971            window.algoliaAnalytics.clickedObjectIDs(eventData);
8972        }
8973    }
8974</script>
8974
8975    
8975<script>
8976        window.algoliaConfig = {"instant":{"enabled":true,"selector":".columns","isAddToCartEnabled":true,"addToCartParams":{"action":"https:\/\/www.farma.it\/checkout\/cart\/add\/","formKey":"uky45cJBt3wJBuSu","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":200,"minimumCharacters":0},"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":"uky45cJBt3wJBuSu","redirectUrlParam":"uenc"},"isLookingSimilarEnabledInPDP":0,"isLookingSimilarEnabledInCartPage":0,"lookingSimilarTitle":"Prodotti simili"},"extensionVersion":"3.15.3","applicationId":"ZMUZFC3VV1","indexName":"magento2_default","apiKey":"MGRiMjI4ZTg0ODAzNjU4YzY5MTc3YTJhMjVjOGJjODc2NmNkYTFjOWE1NjlmOWIwODdlYjcwODcwNWM1Nzg1N3RhZ0ZpbHRlcnM9JnZhbGlkVW50aWw9MTc5MTYzMjA4MQ==","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\/blog\/home\/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"}};
8977
8978        let autocompleteInitialized = false;
8979        let commonInitialized = false;
8980        let insightsInitialized = false;
8981
8982        async function initAutocomplete() {
8983            if (autocompleteInitialized) {
8984                return
8985            }
8986
8987            autocompleteInitialized = true;
8988            Promise.all([
8989                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/common.js"),
8990                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/base64.js"),
8991                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-instantsearch.min.js"),
8992                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/search-insights.min.js"),
8993                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-search.min.js"),
8994                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-autocomplete.min.js"),
8995                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/query-suggestions-plugin.min.js"),
8996                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/autocomplete.js"),
8997                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/additional-section.js"),
8998                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/categories.js"),
8999                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/pages.js"),
9000                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/products.js"),
9001                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/autocomplete/suggestions.js"),
9002                ]
9003            ).then(data => {
9004                initCommon();
9005                initAlgoliaInsights();
9006                initAlgoliaAutocomplete();
9007            });
9008        }
9009
9010        function initInstantSearch() {
9011            Promise.all([
9012                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/common.js"),
9013                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/base64.js"),
9014                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-instantsearch.min.js"),
9015                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/search-insights.min.js"),
9016                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/hogan.min.js"),
9017                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/mustache.min.js"),
9018                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/template-engine.js"),
9019                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/instantsearch.js"),
9020                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-search.min.js"),
9021                ]
9022            ).then(data => {
9023                initCommon();
9024                initAlgoliaInsights();
9025                initAlgoliaInstantSearch();
9026            });
9027        }
9028
9029        function initRecommended(objectIds) {
9030            Promise.all([
9031                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/common.js"),
9032                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/internals/base64.js"),
9033                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/algolia-instantsearch.min.js"),
9034                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/search-insights.min.js"),
9035                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/recommend.min.js"),
9036                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Algolia_AlgoliaSearch/js/lib/recommend-js.min.js"),
9037                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/recommend.js"),
9038                                blackbird.loadExternalResource("https://www.farma.it/static/version1789421831/frontend/DNAFactory/orlandi_hyva/it_IT/Blackbird_HyvaAlgoliaSearch/js/template/recommend/products.js"),
9039                ]
9040            ).then(data => {
9041                initCommon();
9042                initBase64();
9043                initAlgoliaInsights();
9044                initAlgoliaRecommended('blog_home_index', objectIds);
9045            });
9046        }
9047
9048        function initCommon() {
9049            if (commonInitialized) {
9050                return
9051            }
9052
9053            commonInitialized = true
9054            initAlgoliaCommon();
9055            initBase64();
9056            window.dispatchEvent(new CustomEvent('algolia-loaded'));
9057        }
9058
9059        if (algoliaConfig.instant.enabled && (algoliaConfig.isCategoryPage || algoliaConfig.isSearchPage)) {
9060            initInstantSearch();
9061        }
9062
9063        
9064        
9065
9066        let objectIds = [""];
9067        
9068        if (algoliaConfig.autocomplete.enabled) {
9069            document.getElementById('menu-search-icon').addEventListener('click', async () => {
9070                await initAutocomplete();
9071            },{once: true});
9072        }
9073
9074        window.addEventListener('init-algolia-trends', function () {
9075            initCommon();
9076            initAlgoliaInsights();
9077            window.dispatchEvent(new CustomEvent('init-algolia-trends-done'));
9078        });
9079
9080        window.addEventListener('init-algolia-LS', function () {
9081            initCommon();
9082            initAlgoliaInsights();
9083            window.dispatchEvent(new CustomEvent('init-algolia-LS-done'));
9084        });
9085
9086        window.addEventListener('user-allowed-save-cookie', function () {
9087            initAlgoliaInsights(true);
9088        });
9089    </script>
9089
9090
9091<style>
9092    .algolia-ac-product-row .badge-container .badge {
9093        max-height: fit-content;
9094        margin: auto 0;
9095    }
9096
9097    @media (max-width: 768px) {
9098        .catalogsearch-result-index {
9099            #algolia-left-container {
9100                width: calc(100vw - 15px);
9101                left: -15px;
9102                padding-left: 15px;
9103            }
9104
9105            #algolia-left-container .filters {
9106                width: calc(50% - 15px);
9107                margin-top: 30px;
9108            }
9109
9110            #algolia-toolbar {
9111                top: -76px;
9112                width: calc(50% - 15px);
9113            }
9114
9115            #algolia-toolbar .flex.right {
9116                flex-direction: column;
9117                align-items: flex-end;
9118                width: 100%;
9119                font-weight: bold;
9120            }
9121
9122            #algolia-toolbar .flex.left {
9123                position: absolute;
9124                width: calc(93vw - var(--scrollbar-width));
9125                top: -5px;
9126                left: calc((0% - 100vw + var(--scrollbar-width)) / 2);
9127                right: auto;
9128            }
9129
9130            #algolia-toolbar #algolia-sorts {
9131                width: 100%;
9132            }
9133
9134            #algolia-toolbar .ais-SortBy-select {
9135                background-color: white;
9136                font-weight: bold;
9137                padding-top: 0.375rem;
9138                padding-bottom: 0.375rem;
9139                padding-left: 0.75rem;
9140                padding-right: 1rem;
9141                width: 100%;
9142                border: 2px solid #6328e0;
9143            }
9144
9145            .ais-Stats-text > div {
9146                font-size: 16px;
9147                display: block;
9148            }
9149        }
9150    }
9151
9152    input[type="search"]::-webkit-search-decoration,
9153    input[type="search"]::-webkit-search-cancel-button,
9154    input[type="search"]::-webkit-search-results-button,
9155    input[type="search"]::-webkit-search-results-decoration {
9156        -webkit-appearance:none!important;
9157    }
9158
9159    .ais-Hits-banner-image {
9160        margin: auto!important;
9161        margin-bottom: 20px!important;
9162    }
9163</style>
9164<script>
9165    function initWishlist() {
9166        return {
9167            addToWishlist(productId) {
9168                const formKey = hyva.getFormKey();
9169                const postUrl = BASE_URL + 'wishlist/index/add/';
9170
9171                const params = new URLSearchParams({
9172                    form_key: formKey,
9173                    product: productId,
9174                    uenc: hyva.getUenc()
9175                });
9176
9177                const form = document.getElementById(`product_addtocart_form_${productId}`);
9178                if (form) {
9179                    new FormData(form).forEach((value, key) => params.set(key, value));
9180                }
9181
9182                fetch(postUrl, {
9183                    "headers": {
9184                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
9185                    },
9186                    "body": params.toString(),
9187                    "method": "POST",
9188                    "mode": "cors",
9189                    "credentials": "include"
9190                }).then(function (response) {
9191                    if (response.redirected) {
9192                        window.location.href = response.url;
9193                    } else if (response.ok) {
9194                        return response.json();
9195                    } else {
9196                        typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
9197                            [{
9198                                type: "warning",
9199                                text: "Could\u0020not\u0020add\u0020item\u0020to\u0020wishlist."
9200                            }], 5000
9201                        );
9202                    }
9203                }).then(function (response) {
9204                    if (!response) { return }
9205                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
9206                        [{
9207                            type: (response.success) ? "success" : "error",
9208                            text: (response.success)
9209                                ? "Prodotto\u0020\u00E8\u0020stato\u0020aggiunto\u0020nella\u0020tua\u0020lista\u0020desideri."
9210                                : response.error_message
9211                        }], 5000
9212                    );
9213                    const reloadCustomerDataEvent = new CustomEvent("reload-customer-section-data");
9214                    window.dispatchEvent(reloadCustomerDataEvent);
9215                }).catch(function (error) {
9216                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
9217                        [{
9218                            type: "error",
9219                            text: error
9220                        }], 5000
9221                    );
9222                });
9223            }
9224        }
9225    }
9226</script>
vendor: 1 bytes, line 9226
9226
9227<script>
9228    window.addEventListener('algolia-loaded', () => {
9229        algolia.registerHook('afterAutocompleteStart', () => {
9230            document.querySelector('#algoliaAutocomplete input')?.focus();
9231        });
9232    },{ once: true})
9233</script>
9233
9234    
9234<script>
9235        window.addEventListener('algolia-loaded', () => {
9236            algolia.registerHook('beforeWidgetInitialization', (allWidgetConfiguration) => {
9237                const {currentRefinements} = allWidgetConfiguration;
9238                const originalTransformItems = currentRefinements.transformItems.bind(currentRefinements);
9239                currentRefinements.transformItems = (items) => {
9240                    if (items.length !== 0) {
9241                        document.getElementById('instant-search-active-filters').classList.remove('hidden');
9242                        document.getElementById('instant-search-active-filters-label').classList.remove('hidden');
9243                    } else {
9244                        document.getElementById('instant-search-active-filters').classList.add('hidden');
9245                        document.getElementById('instant-search-active-filters-label').classList.add('hidden');
9246                    }
9247                    return originalTransformItems(items);
9248                }
9249                return allWidgetConfiguration;
9250            });
9251        },{ once: true})
9252    </script>
9252
9253<div x-cloak x-data="{...initAmBanners()}" x-init="initBanners()">
9254    
9255<div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50"
9256     style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgb(255 255 255/0.60);"
9257     x-show="isLoading"
9258     x-transition:enter="ease-out duration-200"
9259     x-transition:enter-start="opacity-0"
9260     x-transition:enter-end="opacity-100"
9261     x-transition:leave="ease-in duration-200"
9262     x-transition:leave-start="opacity-100"
9263     x-transition:leave-end="opacity-0">
9264    <svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 38 38" stroke="#ffb590" class="text-primary" role="img">
9265    <g fill="none" fill-rule="evenodd">
9266        <g transform="translate(1 1)" stroke-width="2">
9267            <circle stroke="#ff6801" cx="18" cy="18" r="18"/>
9268            <path d="M36 18c0-9.94-8.06-18-18-18">
9269                <animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"/>
9270            </path>
9271        </g>
9272    </g>
9273<title>loader</title></svg>
9274</div>
9275</div>
9276<script>
9277    'use strict';
9278
9279    function initAmBanners() {
9280        return {
9281            options: {
9282                sections: [],
9283                content: [],
9284                banners: [],
9285                injectorSectionId: null,
9286                injectorParams: {}
9287            },
9288            isLoading: true,
9289            injectorResolver: {},
9290
9291            initBanners: function () {
9292                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
9292<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};
9293                this.injectorResolver = amBannerInjectorResolver?.();
9294
9295                this.insertBanners();
9296                this.isLoading = false;
9297            },
9298
9299            insertBanners: function () {
9300                document.querySelectorAll('[data-role="amasty-banner-container"]').forEach((container) => {
9301                    const sectionId = container.getAttribute('data-position');
9302
9303                    if (sectionId) {
9304                        this.loadBannerBySection(sectionId, container);
9305                    } else {
9306                        this.loadBannerByBannerId(container);
9307                    }
9308                });
9309            },
9310
9311            getBanners: function (bannerId) {
9312                if (this.options.banners.indexOf(bannerId) === -1) {
9313                    return [];
9314                }
9315                const insertedBanner = this.banners.find((element) => {
9316                    return element === bannerId;
9317                });
9318
9319                return content[insertedBanner];
9320            },
9321
9322            getSectionBanners: function (section) {
9323                if (!(section in this.options.sections)) {
9324                    return [];
9325                }
9326
9327                return this.options.sections[section].map((id) => {
9328                    return this.options.content[id];
9329                });
9330            },
9331
9332            loadBannerBySection: function (sectionId, container) {
9333                container.innerHTML = this.getSectionBanners(sectionId).join('');
9334                this.injectorResolver?.resolve(sectionId, this.options.injectorParams);
9335                this.updateSection(`[data-role="amasty-banner-container"][data-position="${sectionId}"]`, container);
9336            },
9337
9338            loadBannerByBannerId: function (container) {
9339                const bannerId = container.getAttribute('data-bannerid');
9340                container.innerHTML = (this.getBanners(bannerId));
9341                this.updateSection(`[data-role="amasty-banner-container"][data-bannerid="${bannerId}"]`, container);
9342            },
9343
9344            updateSection: function(containerSelector, container) {
9345                hyva.replaceDomElement(
9346                    containerSelector,
9347                    container.innerHTML
9348                );
9349            }
9350        }
9351    }
9352</script>
vendor: 1 bytes, line 9352
9352
9353<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/www.farma.it\/","name":"Home"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/www.farma.it\/blog.html","name":"I nostri consigli"}}]}</script>
9353<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>
9353<script type="application/ld+json">{"sameAs":["https:\/\/www.facebook.com\/farmapuntoit","https:\/\/www.instagram.com\/farma.it\/"]}</script>
9353<script type="text/json" id="default-section-data">
9354    {"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"}
9354,"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"}
9354,"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"}
9354,"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"}
9354,"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"}
9354,"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"}
9354,"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":1791545681},"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>
9354
9355
9356</div></body>
9357</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.