Massaggiatore occhi
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} :root{ --blue:#69AEEC; --blue-dark:#4d98dc; --blue-text:#12395f; --blue-light:#eef7ff; --text:#0f1923; --text-soft:#2 4384c; --muted:#5e6e7f; --border:#d5e7f9; --surface:#ffffff; --surface-soft:#eef7ff; --radius:14px; --font:"DM Sans",sans-serif; --title-weight:700; } body{ font-family:var(--font); color:var(--text); background:#f4f9fe; line-height:1.62; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; } a{color:inherit;text-decoration:none} img,video{max-width:100%;display:block} .page{max-width:720px;margin:0 auto;padding:24px 16px 60px} .page,.page *{font-family:var(--font)} .price-item--sale, .price__sale .price-item--sale, .price__sale .price-item--last, .price__regular .price-item, .price .price-item--regular:not(.price-item--last), .product__info-container .price-item:not(.price-item--compare), .product__info-wrapper .price-item:not(.price-item--compare), .product-info .price-item:not(.price-item--compare){ color:var(--blue-dark)!important; } .price__sale .price-item--regular, .price-item--compare, s.price-item{color:#8aa0b5!important} .product__title, .product__title h1, .product__info-container h1, .product__info-wrapper h1, .product-form__title, .product-single__title{margin-bottom:27px!important} .product__info-container .price, .product__info-container .price__container, .product__info-wrapper .price, .product__info-wrapper .price__container, .product-info .price, .product-info .price__container, .main-product .price, .main-product .price__container{ margin-top:0!important; margin-bottom:27px!important; } .product__info-container .price-item--sale, .product__info-wrapper .price-item--sale, .product-info .price-item--sale, .main-product .price-item--sale, .price__sale .price-item--last{ font-size:1.344em!important; color:var(--blue-dark)!important; font-weight:800!important; line-height:1!important; } .section,.steps-wrap,.sq-video-section,.sq-reviews-slider-section,.stats-section,.trust-section,.guarantee-box,.faq-section,.social-box,.sq-media-block{ margin:0 0 22px; } .section p,.accordion-body p,.faq-content{ font-size:14px; line-height:1.7; color:var(--text-soft); } .sq-media-block img, .sq-media-block video{ width:100%; height:auto; border-radius:18px; } .sq-media-block video{background:#000} .hero-banner{ background:linear-gradient(180deg,#12395f 0%,#69AEEC 100%); border-radius:20px; padding:26px 20px; margin:0 0 22px; position:relative; overflow:hidden; } .hero-badge{ display:inline-block; background:rgba(255,255,255,.16); color:#fff; font-size:12px; font-weight:600; padding:6px 12px; border-radius:999px; margin-bottom:14px; border:1px solid rgba(255,255,255,.2); } .hero-title{ font-size:30px; font-weight:var(--title-weight); color:#fff; line-height:1.12; margin-bottom:12px; } .hero-sub{ font-size:15px; color:rgba(255,255,255,.94)!important; line-height:1.68; max-width:560px; } .hero-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px} .hero-pill{ background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.2); color:#fff; font-size:12px; font-weight:500; padding:6px 14px; border-radius:999px; } .sq-points{ display:flex; flex-direction:column; gap:12px; padding:14px; border:1px solid var(--border); background:var(--surface-soft); border-radius:14px; } .sq-points-item{ display:flex; align-items:flex-start; gap:10px; font-size:15px; font-weight:700; color:var(--text); line-height:1.45; } .sq-points-icon{ width:18px; height:18px; border-radius:50%; background:var(--blue); color:#fff; display:inline-flex; align-items:center; justify-content:center; flex:0 0 18px; margin-top:2px; } .sq-points-icon svg{width:12px;height:12px} .sqb-wrap{font-family:var(--font);margin:0 0 18px;width:100%} .sqb-title-row{display:flex;align-items:center;gap:12px;margin-bottom:14px} .sqb-line{flex:1;height:1px;background:var(--border)} .sqb-title{ font-size:14px; font-weight:800; color:var(--text); white-space:nowrap; letter-spacing:.04em; text-transform:uppercase; } .sqb-options{display:flex;flex-direction:column;gap:10px} .sqb-option{position:relative;display:block;width:100%;cursor:pointer} .sqb-option input{position:absolute;opacity:0;width:0;height:0} .sqb-card{ display:block; width:100%; box-sizing:border-box; border:1.5px solid var(--border); border-radius:var(--radius); background:var(--blue-light); overflow:hidden; cursor:pointer; transition:all .2s ease; } .sqb-main{ display:flex; align-items:center; justify-content:space-between; gap:18px; padding:16px; } .sqb-left{ display:grid; grid-template-columns:18px minmax(0,1fr); align-items:center; column-gap:12px; min-width:0; } .sqb-radio{ display:block; width:18px; height:18px; border:2px solid #99c8f2; border-radius:50%; background:#fff; box-sizing:border-box; flex-shrink:0; position:relative; justify-self:center; align-self:center; transition:border-color .2s ease,background .2s ease; } .sqb-name{font-size:15px;font-weight:700;color:var(--text);line-height:1.22} .sqb-right{text-align:right;flex-shrink:0} .sqb-price{font-size:21px;font-weight:700;color:var(--text);line-height:1} .sqb-old{ margin-top:5px; font-size:13px; color:#8aa0b5; text-decoration:line-through; line-height:1; display:block; } .sqb-discount{ display:inline-flex; align-items:center; margin-left:10px; padding:5px 10px; border-radius:8px; background:var(--blue); color:#fff; font-size:12px; font-weight:900; line-height:1; border:1px solid var(--blue); box-shadow:0 6px 14px rgba(15,25,35,.08); } .sqb-option--featured .sqb-card{background:#f3f6f9} .sqb-popular{ position:absolute; top:-12px; right:14px; display:inline-flex; align-items:center; justify-content:center; padding:7px 12px; border-radius:10px 10px 10px 3px; background:var(--blue); color:#fff; font-size:12px; font-weight:800; line-height:1; box-shadow:0 10px 18px rgba(15,25,35,.12); } .sqb-popular::after{ content:""; position:absolute; left:10px; bottom:-7px; width:0; height:0; border-left:7px solid transparent; border-top:8px solid var(--blue); } .sqb-option.selected .sqb-card, .sqb-option input:checked + .sqb-card{ border:2px solid var(--blue); background:#fff; box-shadow:0 0 0 3px rgba(105,174,236,.20); } .sqb-option.selected .sqb-radio, .sqb-option input:checked + .sqb-card .sqb-radio{ border-color:var(--blue); background:var(--blue); } .sq-atc-wrap{margin:0 0 12px} .sq_info_box{ display:flex; gap:10px; padding:12px; border:1px solid var(--border); background:var(--blue-light); border-radius:14px; color:var(--text); margin-bottom:20px; } .sq_info_icon{ width:34px; height:34px; border-radius:10px; display:flex; align-items:center; justify-content:center; background:#fff; border:1px solid var(--border); color:var(--blue); flex:0 0 auto; } .sq_info_grid{display:grid;grid-template-columns:1fr;gap:10px;width:100%} .sq_label{font-size:12px;font-weight:700;color:var(--muted);line-height:1.2;margin-bottom:4px} .sq_value{font-size:14.25px;font-weight:800;line-height:1.25;color:var(--text)} .sq_compact{display:grid;grid-template-columns:1fr 1fr;gap:10px} .sq_line{display:flex;gap:8px;align-items:flex-start;min-width:0} .sq_tag{ font-size:11px; font-weight:600; line-height:1; padding:5px 8px; border-radius:999px; background:rgb(76,161,234); border:1px solid var(--border); white-space:nowrap; flex:0 0 auto; color:#fff; } .sq_txt{font-size:12px;line-height:1.25;color:var(--text);min-width:0} .sq{display:block;margin:0 0 18px} .sq-card{ background:#fff; border:1.5px solid var(--border); border-radius:12px; padding:9px 14px; } .sq-row1{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;gap:10px} .sq-bar-wrap{background:var(--blue-light);border-radius:99px;height:5px;margin-bottom:4px;overflow:hidden} .sq-bar{ height:100%; border-radius:99px; background:var(--blue); font-size:0; line-height:0; } .sq-badge{ background:#eef7ff; color:var(--blue-text); font-size:14px; font-weight:800; padding:5px 10px; border-radius:99px; } .sq-pezzi{font-size:13px;font-weight:700;color:var(--blue-dark)} .sq-row2{display:flex;align-items:center;gap:5px} .sq-eye-icon{ width:18px; height:18px; color:var(--blue-dark); flex:0 0 18px; transform-origin:center; animation:sqEyeBlink 5s infinite; } .sq-eye-icon svg{display:block;width:100%;height:100%} .sq-viewers{font-size:13px;line-height:1.2;color:#444} .sq-viewers b{color:var(--blue-dark)} @keyframes sqEyeBlink{ 0%,92%,100%{transform:scaleY(1)} 94%,96%{transform:scaleY(.12)} } .accordion-group{margin:0 0 22px;display:flex;flex-direction:column;gap:6px} .accordion-item{ border:1px solid var(--blue); border-radius:14px; background:#fff; overflow:hidden; } .accordion-trigger{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; background:none; border:0; text-align:left; cursor:pointer; color:var(--text); font-size:14px; font-weight:700; } .accordion-trigger-icon{ width:24px; height:24px; border-radius:50%; background:var(--blue); color:#fff; display:flex; align-items:center; justify-content:center; flex:0 0 auto; transition:transform .2s ease; } .accordion-item.open .accordion-trigger-icon{transform:rotate(180deg)} .accordion-body{display:none;padding:0 16px 16px} .accordion-item.open .accordion-body{display:block} .contact-card{ background:var(--surface-soft); border:1px solid var(--border); border-radius:12px; padding:14px; margin-top:12px; } .contact-actions{display:flex;flex-direction:column;gap:10px;margin-top:12px} .contact-btn{ display:flex; align-items:center; justify-content:center; width:100%; min-height:46px; padding:12px 16px; border-radius:12px; font-size:14px; font-weight:700; } .contact-btn-email{background:#dff0ff;color:var(--blue-text)} .contact-btn-wa{background:#16a34a;color:#fff} .steps-title,.compare-title,.faq-title,.sq-title,.sq-video-slider-title,.sq-reviews-slider-title,.trust-section-title,.guarantee-title{ font-size:24px; font-weight:var(--title-weight); line-height:1.18; color:var(--text); } .steps-title{margin-bottom:12px} .steps-grid{display:flex;flex-direction:column;gap:8px} .step-card{ display:flex; align-items:flex-start; gap:8px; background:var(--surface-soft); border:1px solid var(--border); border-radius:12px; padding:10px 12px; } .step-num{ width:22px; height:22px; border-radius:50%; background:#dff0ff; color:var(--blue-text); display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; flex:0 0 22px; } .step-content h4{font-size:14px;font-weight:700;color:var(--text);margin-bottom:2px;line-height:1.3} .step-content p{font-size:13px;color:#526476;line-height:1.58;margin:0} .sq-video-section{ border:1px solid var(--border); border-radius:20px; background:#fff; padding:24px 0 20px; margin:0 0 22px; overflow:hidden; } .sq-video-head{ padding:0 20px; text-align:center; margin-bottom:16px; } .sq-kicker{ display:inline-block; color:var(--blue-dark); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; margin-bottom:7px; } .sq-copy{font-size:14px;color:var(--muted);line-height:1.65} .sq-video-slider-shell{position:relative;padding:0 18px} .sq-video-slider-track{ display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; padding:4px 10%; scrollbar-width:none; -ms-overflow-style:none; } .sq-video-slider-track::-webkit-scrollbar{display:none} .sq-video-slide{ flex:0 0 80%; scroll-snap-align:center; border:1px solid var(--border); border-radius:18px; background:var(--surface-soft); padding:10px; } .sq-video-card{ border:1px solid var(--border); border-radius:16px; background:var(--surface-soft); padding:8px; } .sq-video-frame{ position:relative; overflow:hidden; border-radius:14px; background:#000; aspect-ratio:9/16; } .sq-video-frame video{ width:100%; height:100%; object-fit:cover; display:block; background:#000; } .sq-video-caption{ font-size:13px; font-weight:500; color:#334a60; line-height:1.55; margin-top:10px; text-align:center; } .sq-video-nav{ position:absolute; top:50%; transform:translateY(-50%); width:40px; height:40px; border-radius:50%; border:1px solid var(--border); background:#fff; color:var(--text); display:flex; align-items:center; justify-content:center; cursor:pointer; box-shadow:0 8px 20px rgba(105,174,236,.15); z-index:2; } .sq-video-nav.prev{left:10px} .sq-video-nav.next{right:10px} .sq-video-dots{display:flex;justify-content:center;gap:8px;margin-top:12px} .sq-video-dot{ width:8px; height:8px; border-radius:50%; background:#d4e9fa; transition:all .2s; cursor:pointer; } .sq-video-dot.active{width:26px;border-radius:999px;background:var(--blue)} .sq-reviews-slider-section{ background:#fff; border:1px solid var(--border); border-radius:20px; padding:24px 0 20px; overflow:hidden; } .sq-reviews-slider-head{ padding:0 20px; text-align:center; margin-bottom:16px; } .sq-reviews-slider-sub{font-size:14px;color:var(--muted);line-height:1.65} .sq-reviews-slider-shell{position:relative;padding:0 18px} .sq-reviews-slider-track{ display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; padding:4px 10%; scrollbar-width:none; -ms-overflow-style:none; } .sq-reviews-slider-track::-webkit-scrollbar{display:none} .sq-review-slide{ flex:0 0 80%; scroll-snap-align:center; background:var(--surface-soft); border:1px solid var(--border); border-radius:18px; padding:18px 16px; } .sq-review-top{display:flex;align-items:flex-start;gap:14px;margin-bottom:10px} .sq-review-meta{display:flex;flex-direction:column;gap:5px} .sq-review-name{font-size:15px;font-weight:700;color:var(--text);line-height:1.1} .sq-review-time{font-size:12px;color:var(--muted);line-height:1} .sq-review-rating-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .sq-review-stars{color:#ffa41c;font-size:15px;letter-spacing:.02em;line-height:1} .sq-review-verified{ display:inline-flex; align-items:center; gap:4px; width:max-content; font-size:12px; color:#007185; font-weight:600; line-height:1; } .sq-review-verified svg{width:14px;height:14px;display:block;flex:0 0 14px} .sq-review-quote{font-size:14px;line-height:1.7;color:var(--text-soft)} .sq-review-nav{ position:absolute; top:50%; transform:translateY(-50%); width:42px; height:42px; border-radius:50%; border:1px solid var(--border); background:#fff; color:var(--text); display:flex; align-items:center; justify-content:center; cursor:pointer; box-shadow:0 8px 20px rgba(105,174,236,.15); z-index:2; } .sq-review-nav.prev{left:10px} .sq-review-nav.next{right:10px} .sq-review-dots{display:flex;justify-content:center;gap:8px;margin-top:16px} .sq-review-dot{ width:8px; height:8px; border-radius:50%; background:#d4e9fa; transition:all .2s; cursor:pointer; } .sq-review-dot.active{width:26px;border-radius:999px;background:var(--blue)} .stats-section{ background:linear-gradient(135deg,#153a5b,#24679e); border-radius:20px; padding:26px 20px; display:grid; grid-template-columns:1fr 1fr; gap:16px; } .stats-header{grid-column:1/-1;text-align:center} .stats-header h2{font-size:24px;font-weight:var(--title-weight);color:#fff!important;margin-bottom:6px} .stats-header p{font-size:14px;color:rgba(255,255,255,.82)!important;line-height:1.65} .stats-source{grid-column:1/-1;text-align:center;font-size:12px;color:rgba(255,255,255,.72);line-height:1.5;margin-top:-8px} .stat-item{ background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.15); border-radius:14px; padding:16px 14px; text-align:center; } .stat-pct{font-size:22px;font-weight:700;color:#fff;line-height:1.1;margin-bottom:6px} .stat-bar{height:4px;background:rgba(255,255,255,.2);border-radius:999px;margin-bottom:10px;overflow:hidden} .stat-bar-fill{height:100%;background:#bfe2ff;border-radius:999px} .stat-desc{font-size:12px;color:rgba(255,255,255,.86);line-height:1.5} .compare-title{font-size:26px;margin-bottom:18px;color:var(--text)} .compare-wrap{overflow-x:auto} .compare-table{ width:100%; border-collapse:collapse; border-radius:16px; overflow:hidden; border:1px solid var(--border); } .compare-table th,.compare-table td{ padding:13px 14px; font-size:13px; text-align:left; border-bottom:1px solid var(--border); line-height:1.45; } .compare-table thead th{font-weight:800;font-size:14px;background:#f8fbff} .compare-table th.col-ours{background:var(--blue);color:#fff;text-align:center;font-size:14px} .compare-table th.col-other{text-align:center;color:var(--muted)} .compare-table td.col-ours{background:#edf7ff;text-align:center} .compare-table td.col-other{text-align:center;background:#fff} .compare-table tr:last-child td{border-bottom:0} .compare-table tr:nth-child(even) td:first-child{background:#fafcff} .icon-yes,.icon-no{width:20px;height:20px;display:inline-block;vertical-align:middle} .icon-yes{fill:var(--blue-text)} .icon-no{fill:#a8b4c1} .trust-section{ background:#fff; border:1.5px solid var(--border); border-radius:20px; padding:22px 18px; margin:0 0 24px; } .trust-section-title{font-size:22px;font-weight:var(--title-weight);line-height:1.2;color:var(--text);margin-bottom:6px} .trust-section-sub{font-size:14px;color:var(--muted);margin-bottom:16px;line-height:1.65} .trust-row{display:grid;grid-template-columns:1.2fr .8fr;gap:14px;align-items:center} .trust-items{display:grid;grid-template-columns:1fr 1fr;gap:8px} .trust-item{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--text-soft);line-height:1.56} .trust-badges{display:flex;justify-content:flex-end;align-items:center;align-self:center} .trust-help{margin-top:-2px;padding-top:0;border-top:0} .trust-help .contact-strip{margin:0;padding:0;background:transparent;border:0;border-radius:0} .trust-help .contact-strip-left{width:100%;align-items:center} .contact-strip{ display:flex; align-items:center; justify-content:flex-start; gap:14px; background:#fff; border:1px solid var(--border); border-radius:14px; padding:14px 16px; margin:0 0 28px; } .contact-strip-left{display:flex;align-items:center;gap:12px} .contact-strip-wa{ width:52px; height:52px; border-radius:14px; background:#25d366; color:#fff; display:inline-flex; align-items:center; justify-content:center; box-shadow:0 3px 14px rgba(37,211,102,.25); flex-shrink:0; } .contact-strip-wa svg{width:28px;height:28px} .contact-strip-wa-label{font-size:15px;font-weight:700;color:var(--text);line-height:1.2} .contact-strip-wa-sub{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.5} .social-box{ padding:16px 18px; border:1.5px solid var(--border); border-radius:14px; background:var(--surface-soft); } .social-title{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:12px} .social-links{display:flex;align-items:center;gap:10px} .social-link{ display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; border-radius:12px; background:#eef7ff; border:1px solid #e5eef6; box-shadow:0 1px 3px rgba(0,0,0,.06); transition:transform .18s ease, box-shadow .18s ease; flex:0 0 auto; } .social-link:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(0,0,0,.08)} .social-link.fb{color:#1877F2} .social-link.tt{color:#000} .social-link.ig svg{display:block} .guarantee-box{ background:var(--surface-soft); border:2px solid var(--border); border-radius:20px; padding:32px 24px; text-align:center; } .guarantee-icon{font-size:56px;margin-bottom:12px} .guarantee-desc{ font-size:15px; color:var(--text-soft); line-height:1.7; max-width:500px; margin:0 auto 18px; } .btn-primary,.btn-contrassegno{ display:inline-flex; align-items:center; justify-content:center; gap:8px; font-size:16px; font-weight:700; padding:17px 32px; border-radius:var(--radius); text-decoration:none; transition:background .2s,transform .2s; border:0; cursor:pointer; font-family:var(--font); width:100%; margin-bottom:10px; } .btn-primary{background:var(--blue);color:#fff} .btn-primary:hover{background:var(--blue-dark);transform:translateY(-1px)} .btn-contrassegno{background:#16a34a;color:#fff} .btn-contrassegno:hover{background:#15803d;transform:translateY(-1px)} .faq-title{text-align:center;margin-bottom:8px} .faq-sub{text-align:center;font-size:14px;color:var(--muted);margin-bottom:24px;line-height:1.65} .faq-item{border:0;margin:0 0 8px;background:transparent} .faq-item summary{ list-style:none; cursor:pointer; position:relative; background:#fff; color:var(--text); border:1px solid var(--blue); padding:14px 18px 14px 42px; border-radius:10px; font-size:14px; line-height:1.45; font-weight:600; transition:border-color .2s,background .2s; } .faq-item summary:hover{background:#fff;border-color:var(--blue)} .faq-item summary::-webkit-details-marker{display:none} .faq-item summary::before{ content:""; position:absolute; left:16px; top:50%; width:9px; height:9px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:translateY(-65%) rotate(45deg); transition:transform .2s; } .faq-item[open] summary::before{transform:translateY(-35%) rotate(225deg)} .faq-content{ padding:14px 14px 6px; font-size:14px; line-height:1.7; color:var(--text-soft); background:var(--surface-soft); border:1px solid var(--blue); border-top:0; border-radius:0 0 10px 10px; } .faq-wa-link{ display:inline-flex; align-items:center; gap:6px; color:#16a34a; font-weight:700; text-decoration:underline; text-underline-offset:3px; } .sq-native-controls{display:flex!important;flex-direction:column!important;gap:3px!important;margin:0!important} .sq-native-controls button, .sq-native-controls input, .sq-native-controls #_rsi-buy-now-button, .sq-native-controls .shopify-payment-button, .sq-native-controls .shopify-payment-button__button{ font-family:var(--font)!important; letter-spacing:0; } .quantity-selector-wrapper, .quantity, .quantity-selector, .product-form__quantity, .sq-extra-qty{display:none!important} .sq-native-controls .sq-native-controls-qty{ display:grid!important; grid-template-columns:minmax(118px,30%) minmax(0,1fr)!important; gap:8px!important; width:100%!important; max-width:100%!important; align-items:center!important; margin:0!important; } .sq-native-controls .sq-native-controls-qty > .quantity-selector-wrapper, .sq-native-controls .sq-native-controls-qty > .quantity, .sq-native-controls .sq-native-controls-qty > .quantity-selector{ display:grid!important; grid-template-columns:1fr 1fr 1fr!important; gap:6px!important; width:100%!important; max-width:100%!important; margin:0!important; align-self:center!important; justify-self:start!important; } .sq-native-controls .sq-native-controls-qty > .product-form__quantity{ display:block!important; width:100%!important; max-width:100%!important; margin:0!important; } .sq-native-controls .sq-native-controls-qty > .quantity-selector-wrapper > *, .sq-native-controls .sq-native-controls-qty > .quantity > *, .sq-native-controls .sq-native-controls-qty > .quantity-selector > *{width:100%!important} .sq-native-controls .sq-native-controls-qty button, .sq-native-controls .sq-native-controls-qty input{ min-height:38px!important; border-radius:12px!important; font-size:16px!important; font-weight:700!important; line-height:1!important; padding:0!important; text-align:center!important; } .sq-native-controls #_rsi-buy-now-button, .sq-native-controls .shopify-payment-button, .sq-native-controls .shopify-payment-button__button, .sq-native-controls shopify-accelerated-checkout, .sq-native-controls [data-shopify="dynamic-checkout"]{ width:100%!important; max-width:100%!important; } .sq-native-controls #_rsi-buy-now-button, .sq-native-controls .shopify-payment-button__button{ background:var(--blue)!important; color:#fff!important; } .sq-native-controls #_rsi-buy-now-button{ display:flex!important; align-items:center; justify-content:center; gap:4px!important; min-height:52px; border-radius:12px!important; } .sq-native-controls .shopify-payment-button, .sq-native-controls .shopify-payment-button__button, .sq-native-controls shopify-accelerated-checkout, .sq-native-controls [data-shopify="dynamic-checkout"]{ display:block!important; min-height:52px; border:0!important; } .sq-native-controls .shopify-payment-button{ background:transparent!important; margin:0!important; border-radius:12px!important; overflow:hidden; } .sq-native-controls .shopify-payment-button__button{ min-height:52px!important; border-radius:12px!important; font-size:15px!important; font-weight:700!important; } .sq-native-controls .shopify-payment-button__more-options{ background:transparent!important; color:var(--muted)!important; border:0!important; padding:10px 0 0!important; text-decoration:underline!important; text-underline-offset:2px; box-shadow:none!important; } .sq-native-controls-form{display:block!important;width:100%!important} .sq-native-controls-dynamic, .sq-native-controls-cod{display:block!important;width:100%!important;max-width:100%!important} .sq-native-controls-add{ display:block!important; width:100%!important; max-width:100%!important; min-width:0!important; } .sq-native-controls-add button[name="add"], .sq-native-controls-add .product-form__submit, .sq-native-controls-add [data-add-to-cart], .sq-native-controls-add [data-buy-button], .sq-native-controls-add [type="submit"]{ display:flex!important; align-items:center!important; justify-content:center!important; width:100%!important; min-width:0!important; max-width:100%!important; min-height:38px!important; padding:0 12px!important; border:1.5px solid var(--blue)!important; border-radius:12px!important; background:#fff!important; color:var(--blue-dark)!important; font-family:var(--font)!important; font-size:13px!important; font-weight:800!important; line-height:1.1!important; letter-spacing:0!important; text-align:center!important; text-decoration:none!important; box-shadow:none!important; cursor:pointer!important; white-space:normal!important; } .sq-native-controls-add button[name="add"]:hover, .sq-native-controls-add .product-form__submit:hover, .sq-native-controls-add [data-add-to-cart]:hover, .sq-native-controls-add [data-buy-button]:hover, .sq-native-controls-add [type="submit"]:hover{ background:var(--blue-light)!important; color:var(--blue-text)!important; } .sq-native-controls-add button[disabled], .sq-native-controls-add .product-form__submit[disabled], .sq-native-controls-add [data-add-to-cart][disabled], .sq-native-controls-add [data-buy-button][disabled], .sq-native-controls-add [type="submit"][disabled]{ opacity:.55!important; cursor:not-allowed!important; } .sq-cart-fly{ position:fixed; z-index:999999; display:flex; align-items:center; justify-content:center; width:30px; height:30px; padding:0; border-radius:999px; background:#111827; box-shadow:0 12px 28px rgba(15,25,35,.30); pointer-events:none; opacity:0; transform:translate3d(0,0,0) scale(.96); } .sq-cart-fly::before{ content:"+1"; color:#fff; font-family:var(--font); font-size:12px; font-weight:900; line-height:1; } .sq-cart-fly.run{ opacity:1; transition:transform .78s cubic-bezier(.2,.8,.2,1),opacity .22s ease .58s; } @keyframes sqCartPulse{ 0%{transform:scale(1)} 35%{transform:scale(1.18)} 70%{transform:scale(.96)} 100%{transform:scale(1)} } .sq-cart-pulse{animation:sqCartPulse .58s ease} @media (min-width:750px){ .sq-cart-fly{display:none!important} } .sq-hidden-native-submit{display:none!important} .sq-dynamic-source{ position:absolute!important; left:-99999px!important; top:auto!important; width:1px!important; height:1px!important; min-height:0!important; overflow:hidden!important; opacity:0!important; pointer-events:none!important; } .sq-payment-placeholder{ display:block; width:100%; text-align:center; line-height:1; margin:10px 0 18px; user-select:none; } .sq-payment-placeholder img{ width:100%; height:auto; display:block; border-radius:14px; } .sq-payment-placeholder-dot{display:inline-block;font-size:10px;color:#c8dced;margin-top:6px} .sq-payment-placeholder img + .sq-payment-placeholder-dot{display:none} @media (max-width:749px){ .sq_compact{grid-template-columns:1fr 1fr} } @media(max-width:620px){ .page{ max-width:none; width:calc(100% + 24px); margin-left:-12px; margin-right:-12px; padding:12px 8px 36px; } .hero-banner{padding:22px 14px;margin-bottom:20px} .hero-title{font-size:27px} .compare-wrap{margin-left:-8px;margin-right:-8px} .compare-table{width:calc(100% + 16px);border-radius:0} .compare-table th,.compare-table td{padding:10px 8px;font-size:12px} .sqb-name{font-size:15px} .sqb-price{font-size:19px} .steps-title,.compare-title,.faq-title{font-size:22px} .trust-items{grid-template-columns:1fr} .trust-row{grid-template-columns:1.2fr .8fr} .sq-video-slide,.sq-review-slide{flex:0 0 88%} .sq-video-slider-track,.sq-reviews-slider-track{padding:4px 5%} .sq-video-nav,.sq-review-nav{width:38px;height:38px} .btn-primary,.btn-contrassegno{font-size:16px;min-height:56px;padding:16px 18px} } Occhi stanchi dopo schermo e lavoro? Quando senti occhi pesanti o tempie tese, indossalo per pochi minuti: calore delicato, pressione e vibrazione aiutano a rilassare la zona occhi senza preparare nulla. Dopo PC, telefono, studio o guida Per occhi pesanti e tempie tese Per rilassare tempie e zona occhi Senza fili, ricaricabile USB e facile da usare Scegli la tua offerta 1 Massaggiatore occhi€44,90 Piu popolare2 Massaggiatori occhi RISPARMI €17,96€71,84€89,80 Consegna stimata Calcolo in corso GaranziaFino al Calcolo in corso ResoCalcolo in corso . Disponibilita limitata Solo 7 rimasti 11 persone stanno guardando questo prodotto ora Assistenza clienti Se hai dubbi prima o dopo l'ordine, puoi scriverci in modo semplice e diretto. Ti aiutiamo con prodotto, pagamento, spedizione e assistenza post vendita. Email: [email protected] WhatsApp: +39 351 497 2804 Scrivici via Email Scrivici su WhatsApp Spedizione e consegna Consegna stimata a 48 ore, con weekend esclusi dal calcolo. Se l'arrivo cade di sabato o domenica, la consegna viene spostata al primo giorno lavorativo utile. Se nella tua zona e disponibile, puoi scegliere anche il pagamento alla consegna. Specifiche prodotto Nome prodotto: Massaggiatore occhi. Tipologia: massaggiatore occhi ricaricabile per uso domestico. Funzioni principali: pressione/compressione ad aria, calore delicato e vibrazione. Alimentazione: ricaricabile tramite USB. Design: senza fili, fascia regolabile, pensato per l'uso a casa o in ufficio. Uso consigliato: sessioni brevi da circa 10-15 minuti, partendo dalla modalita piu morbida. Avvertenze semplici: togli le lenti a contatto prima dell'uso e chiedi consiglio al medico se hai patologie oculari o interventi recenti. Garanzia: 1 anno. 30 giorni soddisfatti o rimborsati Se il prodotto non ti convince, contattaci entro 30 giorni dalla ricezione. La nostra assistenza ti aiuta a gestire il reso nel modo piu semplice possibile. Calore - Compressione - Vibrazione - USB 10 minuti per alleggerire occhi e testa Lo indossi, scegli la modalita piu comoda e ti fermi pochi minuti. Nessuna preparazione: solo un gesto facile per toglierti di dosso schermo, tensione e giornata piena. Dopo il PC Dopo gli schermi In pausa 10-15 minuti Come si usa 1 Indossalo senza stringere troppo Regola la fascia finche lo senti stabile e comodo sulla zona occhi. 2 Accendilo e scegli la modalita Parti dalla modalita piu morbida, soprattutto le prime volte o se sei sensibile alla pressione. 3 Chiudi gli occhi per pochi minuti Usalo sul divano, alla scrivania o quando vuoi staccare dagli schermi. Video del prodotto Guarda come si usa Qui vedi il prodotto in azione e capisci subito forma, utilizzo e sensazione d'uso. Mostra bene come si indossa e come resta sul viso. Fa vedere il prodotto in una situazione d'uso reale. Seguici anche su: Recensioni Le parole che tornano piu spesso sono semplici: occhi meno pesanti, calore piacevole e una pausa facile da fare davvero. Martina 6 ore fa ★★★★★ Verificato "Sto al PC tutto il giorno. La sera sentivo gli occhi tirare e la testa ancora accesa. Con 10 minuti sul divano riesco finalmente a staccare." Luca Ieri ★★★☆☆ Verificato "Il prodotto e ottimo, il servizio un po' meno. Ho ricevuto il primo pacco non funzionante, ho parlato con l'assistenza e ho dovuto aspettare altri 4 giorni per la consegna." Elisa 1 giorno fa ★★★★★ Verificato "Lo uso soprattutto quando finisco di lavorare. Il calore e la pressione sono piacevoli e mi aiutano a fermarmi senza dover preparare nulla." Giulia 2 giorni fa ★★★★★ Verificato "Il calore e la parte che preferisco. Si sente bene, ma resta delicato. Lo metto, scelgo la modalita e mi rilasso." Davide 3 giorni fa ★★★★★ Verificato "Lo uso soprattutto dopo il lavoro. Non cerco miracoli, mi serve solo una pausa vera per occhi e tempie. Per quello funziona benissimo." Cosa apprezzano di piu Feedback semplici, raccolti da chi lo usa nella routine di tutti i giorni. Fonte: feedback raccolti tra i clienti di Sollievo Quotidiano. 78% dice che entra facilmente nella routine quotidiana 84% lo consiglierebbe a chi lavora molte ore al PC 81% apprezza soprattutto calore e compressione 87% lo riuserebbe dopo una giornata intensa Perche convince chi lo prova Perche e immediato, non sembra complicato e non richiede tempo. Lo indossi, premi un tasto e ti concedi una pausa breve, anche quando hai poca energia. Si indossa in pochi secondi e si usa subito Calore e pressione rendono la pausa concreta Sta bene nella routine quotidiana, in ufficio e dopo una giornata piena Massaggiatore occhi vs maschere normali Massaggiatore occhi Maschere normali Pronto in pochi secondi Calore e pressione nello stesso gesto Vibrazione integrata Senza fili e ricaricabile USB Ti aiuta a ritagliarti una pausa vera Protezione cliente Spedizione, garanzia, reso e assistenza devono essere chiari prima dell'acquisto. Consegna stimata visibile in pagina prima di confermare l'ordine. 1 anno di garanzia per acquistare con piu tranquillita. 30 giorni di reso se il prodotto non fa per te. Supporto via email e WhatsApp se hai dubbi prima di ordinare. Scrivici su WhatsApp Se vuoi chiarire un dubbio prima di ordinare 😌 Dai ai tuoi occhi una pausa che userai davvero Il Massaggiatore occhi e pensato per chi vive tra schermi, lavoro e giornate piene. Controlla disponibilita, consegna stimata e opzioni di pagamento prima di confermare l'ordine. Ordina ora Verifica pagamento alla consegna Domande frequenti Le domande piu comuni riguardano comfort, calore, durata, lenti a contatto, spedizione e semplicita d'uso. A cosa serve esattamente?Serve a creare una pausa breve quando senti occhi pesanti, zona tempie carica o testa ancora attiva dopo schermo, studio, guida o lavoro. E semplice da usare?Si. Lo indossi, regoli la fascia, scegli la modalita e resti fermo pochi minuti. Non devi preparare altro. Che funzioni ha?Combina calore delicato, pressione ad aria e vibrazione. E ricaricabile tramite USB e si usa senza fili durante la sessione. Quanto dura una sessione?Di solito bastano 10-15 minuti. L'obiettivo non e usarlo a lungo, ma renderlo una pausa facile da ripetere. Quando e meglio usarlo?Puoi usarlo dopo PC, telefono, studio, guida o quando senti occhi pesanti e tempie tese. Il calore e troppo forte?La sensazione deve restare piacevole e delicata. Le prime volte parti dalla modalita piu morbida, soprattutto se sei sensibile al calore. Posso usarlo con le lenti a contatto?Meglio toglierle prima dell'uso. Se hai fatto interventi agli occhi o hai patologie oculari, chiedi prima un parere medico. Si porta facilmente fuori casa?Si, e senza fili e ricaricabile USB. Per trasportarlo meglio, riponilo con attenzione in borsa o zaino. Quanto impiega la spedizione?La consegna stimata viene calcolata in pagina su 48 ore. Se l'arrivo cade nel weekend, viene spostato al primo giorno lavorativo utile. C'e una garanzia?Si, e prevista una garanzia di 1 anno. Come funziona il reso?Hai 30 giorni dalla ricezione per contattarci. Il nostro supporto ti aiuta a gestire la richiesta in modo semplice. Se vuoi chiarire un dubbio prima di acquistare, puoi scriverci su WhatsApp. Posso pagare alla consegna?Si, se il servizio e disponibile nella tua zona. Lo vedrai tra le opzioni prima di confermare l'ordine. (function () { const oraCutoff = 13; function prossimoMartedi(d) { const x = new Date(d); const giorno = x.getDay(); const giorniDaAggiungere = giorno === 5 ? 4 : giorno === 6 ? 3 : giorno === 0 ? 2 : 0; x.setDate(x.getDate() + giorniDaAggiungere); x.setHours(9, 0, 0, 0); return x; } function spostaDalWeekend(data) { const x = new Date(data); if (x.getDay() === 6) x.setDate(x.getDate() + 2); if (x.getDay() === 0) x.setDate(x.getDate() + 1); return x; } function formatta(data, conAnno) { if (!conAnno) { const testo = data.toLocaleDateString("it-IT", { weekday: "long", day: "numeric", month: "long" }); return testo.charAt(0).toUpperCase() + testo.slice(1); } const gg = String(data.getDate()).padStart(2, "0"); const mm = String(data.getMonth() + 1).padStart(2, "0"); const yyyy = data.getFullYear(); return `${gg}/${mm}/${yyyy}`; } function aggiornaSqWidget() { document.querySelectorAll("[data-sq-widget]").forEach((box) => { const ordine = new Date(); const giorno = ordine.getDay(); let arrivo; if ((giorno === 5 && ordine.getHours() >= oraCutoff) || giorno === 6 || giorno === 0) { arrivo = prossimoMartedi(ordine); } else { const giorniConsegna = ordine.getHours() >= oraCutoff ? 3 : 2; arrivo = new Date(ordine); arrivo.setDate(arrivo.getDate() + giorniConsegna); arrivo = spostaDalWeekend(arrivo); } const resoFino = new Date(arrivo); resoFino.setDate(resoFino.getDate() + 30); const garanziaFino = new Date(arrivo); garanziaFino.setFullYear(garanziaFino.getFullYear() + 1); const elDelivery = box.querySelector("[data-sq-delivery]"); const elReturn = box.querySelector("[data-sq-return]"); const elWarranty = box.querySelector("[data-sq-warranty]"); if (elDelivery) elDelivery.textContent = formatta(arrivo, false); if (elReturn) elReturn.textContent = formatta(resoFino, true); if (elWarranty) elWarranty.textContent = formatta(garanziaFino, true); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", aggiornaSqWidget); } else { aggiornaSqWidget(); } setTimeout(aggiornaSqWidget, 300); })(); var CHECKOUT_URL = window.location.origin + "/checkout"; function getSelectedQty() { var qty = parseInt(document.getElementById("sqSelectedQty")?.value || "1", 10); return isNaN(qty) || qty < 1 ? 1 : qty; } function syncQtyToTheme(qty) { var qtySelectors = [ 'form[action*="/cart/add"] input[name="quantity"]', 'form[action*="/cart/add"] input[type="number"]', 'input[name="quantity"]', ".quantity__input", ".qty-input__input", "[data-quantity-input]", ".quantity-selector-wrapper input" ]; qtySelectors.forEach(function(selector) { document.querySelectorAll(selector).forEach(function(el) { try { el.value = qty; el.setAttribute("value", qty); el.dispatchEvent(new Event("input", { bubbles: true })); el.dispatchEvent(new Event("change", { bubbles: true })); } catch (e) {} }); }); } var isSyncingQty = false; function normalizeQty(qty) { var parsed = parseInt(qty, 10); return isNaN(parsed) || parsed < 1 ? 1 : parsed; } function updateBundleVisual(qty) { var wanted = String(normalizeQty(qty)); bundleOptions.forEach(function(option) { var optionValue = option.getAttribute("data-value") || "1"; var isSelected = (wanted === "1" || wanted === "2") && optionValue === wanted; option.classList.toggle("selected", isSelected); var input = option.querySelector("input"); if (input) input.checked = isSelected; }); } function updateNativeQtyDisplay(qty) { var normalized = normalizeQty(qty); document.querySelectorAll(".quantity-selector-wrapper input").forEach(function(el) { try { el.value = normalized; el.setAttribute("value", normalized); } catch (e) {} }); } function syncQtyState(qty, syncBundleVisual) { if (isSyncingQty) return; isSyncingQty = true; var normalized = normalizeQty(qty); var selectedQtyInput = document.getElementById("sqSelectedQty"); if (selectedQtyInput) selectedQtyInput.value = normalized; syncQtyToTheme(normalized); updateNativeQtyDisplay(normalized); if (syncBundleVisual !== false) { updateBundleVisual(normalized); } isSyncingQty = false; } function getVariantId() { var form = document.querySelector('form[action*="/cart/add"]') || document.querySelector("form"); if (!form) return ""; var checkedVariant = form.querySelector('input[name="id"]:checked'); if (checkedVariant && checkedVariant.value) return checkedVariant.value; var hiddenVariant = form.querySelector('input[name="id"][type="hidden"]'); if (hiddenVariant && hiddenVariant.value) return hiddenVariant.value; var anyVariantInput = form.querySelector('input[name="id"]'); if (anyVariantInput && anyVariantInput.value) return anyVariantInput.value; var variantSelect = form.querySelector('select[name="id"]'); if (variantSelect && variantSelect.value) return variantSelect.value; var urlVariant = new URLSearchParams(window.location.search).get("variant"); if (urlVariant && /^\d+$/.test(urlVariant)) return urlVariant; if (window.ShopifyAnalytics && window.ShopifyAnalytics.meta) { var meta = window.ShopifyAnalytics.meta; if (meta.selectedVariantId && /^\d+$/.test(String(meta.selectedVariantId))) return String(meta.selectedVariantId); if (meta.variant && meta.variant.id && /^\d+$/.test(String(meta.variant.id))) return String(meta.variant.id); if (meta.product && Array.isArray(meta.product.variants) && meta.product.variants.length && meta.product.variants[0].id) { return String(meta.product.variants[0].id); } } if (window.meta && window.meta.product && Array.isArray(window.meta.product.variants) && window.meta.product.variants.length && window.meta.product.variants[0].id) { return String(window.meta.product.variants[0].id); } return ""; } function goToCheckout(e) { if (e) e.preventDefault(); var qty = getSelectedQty(); syncQtyToTheme(qty); var variantId = getVariantId(); if (variantId) { window.location.href = window.location.origin + "/cart/" + variantId + ":" + qty; return; } var atcSelectors = [ 'form[action*="/cart/add"] [type="submit"]', 'button[name="add"]', "button.product-form__submit", "[data-add-to-cart]", "[data-buy-button]" ]; for (var i = 0; i < atcSelectors.length; i++) { var btn = document.querySelector(atcSelectors[i]); if (btn) { btn.click(); return; } } window.location.href = CHECKOUT_URL; } var bundleOptions = document.querySelectorAll(".sqb-option"); function selectBundle(option) { var qty = option.getAttribute("data-value") || "1"; syncQtyState(qty, true); } bundleOptions.forEach(function(opt) { opt.addEventListener("click", function(e) { e.preventDefault(); selectBundle(this); }); var radio = opt.querySelector("input"); if (radio) { radio.addEventListener("change", function() { selectBundle(opt); }); } }); syncQtyState(document.getElementById("sqSelectedQty")?.value || "1", true); document.querySelectorAll(".sq-atc-btn, .btn-primary, .btn-contrassegno").forEach(function(btn) { btn.addEventListener("click", goToCheckout); }); (function() { var accordionItems = document.querySelectorAll("#mainAccordion .accordion-item"); accordionItems.forEach(function(item) { var trigger = item.querySelector(".accordion-trigger"); if (!trigger) return; trigger.addEventListener("click", function() { var isOpen = item.classList.contains("open"); accordionItems.forEach(function(current) { current.classList.remove("open"); }); if (!isOpen) item.classList.add("open"); }); }); })(); (function() { var faqItems = document.querySelectorAll(".faq-section .faq-item"); faqItems.forEach(function(item) { item.addEventListener("toggle", function() { if (!item.open) return; faqItems.forEach(function(current) { if (current !== item) current.open = false; }); }); }); })(); (function() { function findFirst(selectors) { for (var i = 0; i < selectors.length; i++) { var el = document.querySelector(selectors[i]); if (el) return el; } return null; } function ensureChild(parent, className) { var child = parent.querySelector("." + className); if (!child) { child = document.createElement("div"); child.className = className; parent.appendChild(child); } return child; } function moveIfNeeded(target, container) { if (target && container && target.parentNode !== container) { container.appendChild(target); } } function findDynamicButtons() { var el = findFirst([ ".shopify-payment-button", "shopify-accelerated-checkout", ".shopify-payment-button__button", '[data-shopify="dynamic-checkout"]' ]); if (!el) return null; return el.closest(".shopify-payment-button") || el; } function findNativeAddButton(form) { if (!form) return null; var selectors = [ 'button[name="add"]', "button.product-form__submit", "[data-add-to-cart]", "[data-buy-button]", '[type="submit"]' ]; for (var i = 0; i < selectors.length; i++) { var buttons = form.querySelectorAll(selectors[i]); for (var j = 0; j < buttons.length; j++) { var btn = buttons[j]; if (btn.closest && btn.closest("#_rsi-buy-now-button")) continue; if (btn.closest && btn.closest(".shopify-payment-button")) continue; if (btn.closest && btn.closest("shopify-accelerated-checkout")) continue; if (btn.closest && btn.closest('[data-shopify="dynamic-checkout"]')) continue; return btn; } } return null; } function findProductForm(dynamicButtons, qtyWrapper) { if (dynamicButtons && dynamicButtons.closest) { var dynamicForm = dynamicButtons.closest('form[action*="/cart/add"], form'); if (dynamicForm) return dynamicForm; } if (qtyWrapper && qtyWrapper.closest) { var qtyForm = qtyWrapper.closest('form[action*="/cart/add"], form'); if (qtyForm) return qtyForm; } return findFirst([ 'form[action*="/cart/add"]', "product-form form", ".product-form form", "form" ]); } function hideNativeSubmitButtons(form, dynamicButtons) { if (!form) return; form.querySelectorAll('button[name="add"], button.product-form__submit, [data-add-to-cart], [data-buy-button], [type="submit"]').forEach(function(btn) { if (dynamicButtons && (btn === dynamicButtons || dynamicButtons.contains(btn))) return; if (btn.closest && btn.closest("#_rsi-buy-now-button")) return; if (btn.closest && btn.closest(".sq-native-controls")) return; btn.classList.add("sq-hidden-native-submit"); }); } function getCartEndpoint(path) { var root = "/"; if (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) { root = window.Shopify.routes.root; } return root.replace(/\/?$/, "/") + path.replace(/^\//, ""); } function getCartSectionIds() { var ids = []; ["cart-icon-bubble", "cart-live-region-text", "cart-notification-button", "cart-drawer", "CartDrawer"].forEach(function(id) { if (ids.indexOf(id) === -1) ids.push(id); }); return ids.slice(0, 5); } function renderCartSections(sections) { if (!sections) return false; var rendered = false; Object.keys(sections).forEach(function(sectionId) { if (!sections[sectionId]) return; var doc = new DOMParser().parseFromString(sections[sectionId], "text/html"); if (sectionId === "cart-icon-bubble") { var currentIcon = document.getElementById("cart-icon-bubble"); var newIcon = doc.getElementById("cart-icon-bubble"); if (currentIcon && newIcon) { currentIcon.innerHTML = newIcon.innerHTML; rendered = true; return; } } var target = document.getElementById(sectionId); var fresh = doc.getElementById(sectionId); if (target && fresh) { target.innerHTML = fresh.innerHTML; rendered = true; } }); return rendered; } function notifyCartChange(cart, variantId, addedQty, sections) { var qty = parseInt(addedQty, 10); if (isNaN(qty) || qty < 1) qty = 1; document.dispatchEvent(new CustomEvent("cart:update", { bubbles: true, detail: { resource: cart || {}, sourceId: variantId || "sq-add-to-cart", data: { source: "product-form-component", itemCount: qty, variantId: variantId ? String(variantId) : "", sections: sections || {} } } })); } function findVariantIdForCart(form) { var selectors = [ 'input[name="id"]:checked', 'input[name="id"][type="hidden"]', 'input[name="id"]', 'select[name="id"]' ]; for (var i = 0; i < selectors.length; i++) { var field = (form && form.querySelector(selectors[i])) || document.querySelector(selectors[i]); if (field && field.value) return field.value; } return getVariantId(); } function findQtyForCart(form) { var input = (form && form.querySelector('input[name="quantity"], .quantity__input, [data-quantity-input]')) || document.querySelector('input[name="quantity"], .quantity__input, [data-quantity-input]'); var qty = input ? parseInt(input.value || input.getAttribute("value") || "1", 10) : getSelectedQty(); return isNaN(qty) || qty < 1 ? 1 : qty; } function updateCartIndicators(cart) { if (!cart || typeof cart.item_count === "undefined") return; var count = cart.item_count < 100 ? String(cart.item_count) : ""; var label = "Carrello: " + cart.item_count + (cart.item_count === 1 ? " articolo" : " articoli"); document.querySelectorAll("cart-icon").forEach(function(icon) { icon.classList.toggle("header-actions__cart-icon--has-cart", cart.item_count > 0); }); document.querySelectorAll('cart-icon [ref="cartBubble"], cart-icon .cart-bubble').forEach(function(bubble) { bubble.classList.toggle("visually-hidden", cart.item_count === 0); bubble.hidden = false; bubble.style.display = ""; bubble.style.visibility = "visible"; bubble.style.opacity = "1"; }); document.querySelectorAll('cart-icon [ref="cartBubbleCount"], cart-icon .cart-bubble__text-count').forEach(function(el) { el.classList.toggle("hidden", cart.item_count === 0); el.textContent = count; }); document.querySelectorAll("cart-icon .visually-hidden").forEach(function(el) { var text = (el.textContent || "").toLowerCase(); if (text.indexOf("carrello") !== -1 || text.indexOf("cart") !== -1) { el.textContent = label; } }); } function isMobileCartAnimation() { return window.matchMedia && window.matchMedia("(max-width: 749px)").matches; } function findCartVisualTarget() { return document.querySelector("#cart-icon-bubble, cart-icon, a[href='/cart'], a[href*='/cart']"); } function pulseCartIcon() { var icon = findCartVisualTarget(); if (!icon) return; icon.classList.remove("sq-cart-pulse"); void icon.offsetWidth; icon.classList.add("sq-cart-pulse"); setTimeout(function() { icon.classList.remove("sq-cart-pulse"); }, 700); } function runMobileFlyToCart(button) { if (!isMobileCartAnimation() || !button) return false; var target = findCartVisualTarget(); var start = button.getBoundingClientRect(); var end = target ? target.getBoundingClientRect() : { left: window.innerWidth - 38, top: 18, width: 28, height: 28 }; var fly = document.createElement("div"); fly.className = "sq-cart-fly"; fly.setAttribute("aria-hidden", "true"); document.body.appendChild(fly); var startX = start.left + start.width / 2 - 15; var startY = start.top + start.height / 2 - 15; var endX = end.left + end.width / 2 - 15; var endY = end.top + end.height / 2 - 15; fly.style.left = startX + "px"; fly.style.top = startY + "px"; fly.style.opacity = "1"; fly.style.transform = "translate3d(0,0,0) scale(.96)"; requestAnimationFrame(function() { fly.classList.add("run"); fly.style.transform = "translate3d(" + (endX - startX) + "px," + (endY - startY) + "px,0) scale(.46)"; fly.style.opacity = "0"; }); setTimeout(function() { if (fly && fly.parentNode) fly.parentNode.removeChild(fly); pulseCartIcon(); }, 820); return true; } function prepareAddToCartOnly(form, button) { if (!form || !button || button.dataset.sqCartOnlyBound === "1") return; button.dataset.sqCartOnlyBound = "1"; button.type = "button"; button.textContent = "Aggiungi al carrello"; button.setAttribute("aria-label", "Aggiungi al carrello"); button.addEventListener("click", function(event) { event.preventDefault(); event.stopPropagation(); if (button.dataset.sqBusy === "1") return; button.dataset.sqBusy = "1"; button.textContent = "Aggiungo..."; syncQtyState(getSelectedQty(), true); var returnTo = form.querySelector('input[name="return_to"]'); if (returnTo) returnTo.remove(); var formData = new FormData(form); if (formData.has("return_to")) formData.delete("return_to"); if (!formData.get("id")) { var variantId = findVariantIdForCart(form); if (variantId) formData.set("id", variantId); } if (!formData.get("quantity")) { formData.set("quantity", String(findQtyForCart(form))); } var variantIdForEvent = formData.get("id"); var addedQtyForEvent = parseInt(formData.get("quantity") || "1", 10); if (isNaN(addedQtyForEvent) || addedQtyForEvent < 1) addedQtyForEvent = 1; var sectionsForEvent = null; var sectionIds = getCartSectionIds(); if (sectionIds.length) { formData.set("sections", sectionIds.join(",")); formData.set("sections_url", window.location.pathname); } fetch(getCartEndpoint("cart/add.js"), { method: "POST", credentials: "same-origin", headers: { "Accept": "application/json", "X-Requested-With": "XMLHttpRequest" }, body: formData }) .then(function(response) { if (!response.ok) { return response.json().catch(function() { return {}; }).then(function(data) { throw data; }); } return response.json(); }) .then(function(addResponse) { var usedMobileAnimation = runMobileFlyToCart(button); if (!usedMobileAnimation) { button.textContent = "Aggiunto"; } if (addResponse && addResponse.sections) { sectionsForEvent = addResponse.sections; renderCartSections(addResponse.sections); } return fetch(getCartEndpoint("cart.js"), { credentials: "same-origin", headers: { "Accept": "application/json" } }); }) .then(function(response) { if (!response || !response.ok) return null; return response.json(); }) .then(function(cart) { if (cart) { if (isMobileCartAnimation()) { setTimeout(function() { notifyCartChange(cart, variantIdForEvent, addedQtyForEvent, sectionsForEvent); updateCartIndicators(cart); pulseCartIcon(); }, 760); } else { notifyCartChange(cart, variantIdForEvent, addedQtyForEvent, sectionsForEvent); updateCartIndicators(cart); } } }) .catch(function() { button.textContent = "Riprova"; }) .finally(function() { setTimeout(function() { button.dataset.sqBusy = "0"; button.textContent = "Aggiungi al carrello"; }, 1400); }); }); } function getQtyCandidates(root) { var scope = root || document; var found = []; scope.querySelectorAll('input[name="quantity"], .quantity__input, [data-quantity-input]').forEach(function(input) { var wrapper = input.closest(".quantity-selector-wrapper, .quantity, .quantity-selector") || input.closest(".product-form__quantity") || input; if (found.indexOf(wrapper) === -1) found.push(wrapper); }); return found; } function findQtyWrapper(root) { var candidates = getQtyCandidates(root); for (var i = 0; i < candidates.length; i++) { if (!candidates[i].classList.contains("sq-extra-qty")) return candidates[i]; } return candidates[0] || null; } function hideDuplicateQty(root, keeper) { getQtyCandidates(root || document).forEach(function(item) { if (!keeper || item === keeper) return; if (item.contains && item.contains(keeper)) return; if (keeper.contains && keeper.contains(item)) return; item.classList.add("sq-extra-qty"); }); } function bindQtySync(qtyWrapper) { if (!qtyWrapper || qtyWrapper.dataset.sqQtyBound === "1") return; qtyWrapper.dataset.sqQtyBound = "1"; function pullQtyFromControl() { if (isSyncingQty) return; var input = qtyWrapper.querySelector("input"); if (!input) return; syncQtyState(input.value || input.getAttribute("value") || "1", true); } var input = qtyWrapper.querySelector("input"); if (input) { input.addEventListener("input", pullQtyFromControl); input.addEventListener("change", pullQtyFromControl); } qtyWrapper.querySelectorAll("button").forEach(function(btn) { btn.addEventListener("click", function() { setTimeout(pullQtyFromControl, 50); }); }); } function mountNativeControls() { var anchor = document.getElementById("sqNativeButtonsAnchor"); var qty = findQtyWrapper(document); var contrassegno = document.getElementById("_rsi-buy-now-button"); var dynamicButtons = findDynamicButtons(); var productForm = findProductForm(dynamicButtons, qty); if (!anchor) return false; if (productForm && productForm.parentNode !== anchor) { anchor.appendChild(productForm); } if (productForm) { productForm.classList.add("sq-native-controls-form"); } var layoutRoot = productForm || anchor; var layout = layoutRoot.querySelector(".sq-native-controls"); if (!layout) { layout = document.createElement("div"); layout.className = "sq-native-controls"; layoutRoot.appendChild(layout); } var qtySlot = ensureChild(layout, "sq-native-controls-qty"); var codSlot = ensureChild(layout, "sq-native-controls-cod"); var dynamicSlot = ensureChild(layout, "sq-native-controls-dynamic"); var addButton = findNativeAddButton(productForm); qty = findQtyWrapper(productForm || document) || qty; if (qty) { moveIfNeeded(qty, qtySlot); bindQtySync(qty); } var addSlot = ensureChild(qtySlot, "sq-native-controls-add"); if (addButton) { moveIfNeeded(addButton, addSlot); addButton.classList.remove("sq-hidden-native-submit"); prepareAddToCartOnly(productForm, addButton); } hideDuplicateQty(productForm || document, qty); hideNativeSubmitButtons(productForm, dynamicButtons); if (contrassegno) { moveIfNeeded(contrassegno, codSlot); } if (dynamicButtons) { moveIfNeeded(dynamicButtons, dynamicSlot); dynamicButtons.classList.remove("sq-dynamic-source"); } syncQtyState(document.getElementById("sqSelectedQty")?.value || "1", true); return !!dynamicButtons; } function bootNativeControls(attempt) { if (mountNativeControls()) return; if (attempt >= 25) return; setTimeout(function() { bootNativeControls(attempt + 1); }, 300); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { bootNativeControls(0); }); } else { bootNativeControls(0); } })(); (function(){ var track=document.getElementById("sqVideoTrack"); var dots=document.querySelectorAll("#sqVideoDots .sq-video-dot"); var slides=track?track.querySelectorAll(".sq-video-slide"):[]; var current=0; function goVideo(idx){ if(!track||slides.length===0)return; current=Math.max(0,Math.min(idx,slides.length-1)); var slideW=slides[0].offsetWidth+14; track.scrollTo({left:current*slideW,behavior:"smooth"}); dots.forEach(function(dot,i){dot.classList.toggle("active",i===current)}); } var prev=document.getElementById("sqVideoPrev"); var next=document.getElementById("sqVideoNext"); if(prev)prev.addEventListener("click",function(){goVideo(current-1)}); if(next)next.addEventListener("click",function(){goVideo(current+1)}); dots.forEach(function(dot,i){dot.addEventListener("click",function(){goVideo(i)})}); })(); (function(){ document.querySelectorAll("[data-sq-video]").forEach(function(video){ video.addEventListener("play",function(){ document.querySelectorAll("[data-sq-video]").forEach(function(other){ if(other!==video){ try{other.pause();}catch(e){} } }); }); }); })(); (function() { var track = document.getElementById("sqReviewsTrack"); var dots = document.querySelectorAll("#sqReviewDots .sq-review-dot"); var slides = track ? track.querySelectorAll(".sq-review-slide") : []; var current = 0; function goTo(idx) { if (!track || slides.length === 0) return; current = Math.max(0, Math.min(idx, slides.length - 1)); var slideW = slides[0].offsetWidth + 14; track.scrollTo({ left: current * slideW, behavior: "smooth" }); dots.forEach(function(d, i) { d.classList.toggle("active", i === current); }); } var prev = document.getElementById("sqReviewPrev"); var next = document.getElementById("sqReviewNext"); if (prev) prev.addEventListener("click", function() { goTo(current - 1); }); if (next) next.addEventListener("click", function() { goTo(current + 1); }); dots.forEach(function(d, i) { d.addEventListener("click", function() { goTo(i); }); }); })(); (function() { function updateSqStock() { var stockEl = document.getElementById("sqPezziTop"); var barEl = document.getElementById("sqBar"); var viewersEl = document.getElementById("sqViewersTop"); var pezzi = Math.floor(Math.random() * 6) + 2; var viewers = Math.floor(Math.random() * 13) + 3; if (stockEl) stockEl.textContent = "Solo " + pezzi + " rimasti"; if (barEl) { var width = 18 + (pezzi * 10); barEl.style.width = width + "%"; } if (viewersEl) viewersEl.textContent = viewers; } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", updateSqStock); } else { updateSqStock(); } })();