:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*{box-sizing:border-box}body{background:#f2f2f2 url(https://fantasiastore.it/img/cms/sfondo-doodle-fantasiastore.jpg);background-size:cover;background-position:center;background-attachment:fixed;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.app{max-width:800px;margin:0 auto;padding:1rem;min-height:100vh}h1{text-align:center;color:#007bff;margin-bottom:1rem;font-size:1.5rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;text-shadow:none}.header{display:flex;flex-direction:column;align-items:center;gap:.75rem;margin-bottom:1rem}.header h1{margin-bottom:0;text-align:center}.back-button{padding:.5rem 1rem;font-size:.75rem;background:#6c757d;color:#fff;border:none;border-radius:6px;cursor:pointer;transition:all .3s;font-weight:600;white-space:nowrap;align-self:flex-start}.back-button:hover{background:#5a6268;transform:translate(-2px)}.shop-selection{background:#fff;border:2px solid #007bff;border-radius:12px;padding:2rem;box-shadow:0 4px 12px #00000026;margin-top:2rem}.shop-selection h2{text-align:center;color:#212529;margin-top:0;margin-bottom:1.5rem;font-size:1.25rem;font-weight:600}.shop-list{display:flex;flex-direction:column;gap:1rem}.shop-button{padding:1.5rem;font-size:1.125rem;background:#007bff;color:#fff;border:none;border-radius:8px;cursor:pointer;transition:all .3s;font-weight:600;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 2px 4px #00000026;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.shop-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.shop-button:hover:not(:disabled):before{left:100%}.shop-button:hover{background:#0056b3;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.shop-button:active{transform:translateY(0)}.search-container{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}@media(min-width:768px){.app{padding:2rem}h1{font-size:3rem;margin-bottom:2rem}.header{flex-direction:row;justify-content:center;position:relative;margin-bottom:2rem}.back-button{position:absolute;left:0;top:50%;transform:translateY(-50%);font-size:1rem;padding:.75rem 1.5rem;align-self:auto}.back-button:hover{transform:translateY(-50%) translate(-2px)}.search-container{gap:1rem;margin-bottom:2rem}.shop-selection{max-width:500px;margin:3rem auto;padding:3rem}.shop-selection h2{font-size:1.5rem;margin-bottom:2rem}.shop-list{gap:1.5rem}.shop-button{font-size:1.25rem;padding:2rem}}.ean-input{flex:1 1 100%;min-width:0;padding:1.25rem;font-size:1rem;border:2px solid #ced4da;border-radius:8px;background:#fff;color:#212529;transition:all .3s;box-shadow:0 2px 4px #0000001a;font-weight:400;-webkit-appearance:none;appearance:none}.ean-input:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff40;transform:translateY(-1px)}.scanner-button{flex:1;padding:1.25rem 1rem;font-size:.9rem;background:#007bff;color:#fff;border:none;border-radius:8px;cursor:pointer;transition:all .3s;font-weight:600;text-transform:uppercase;letter-spacing:.5px;min-height:56px;box-shadow:0 2px 4px #00000026;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.scanner-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.scanner-button:hover:not(:disabled):before{left:100%}.scanner-button:hover:not(:disabled){background:#0056b3;transform:translateY(-1px);box-shadow:0 4px 8px #0003}.scanner-button.active{background:#dc3545!important;animation:pulse 1.5s infinite}.scanner-button.active:hover{background:#c82333!important}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.scanner-button:disabled{opacity:.5;cursor:not-allowed}.search-button{flex:1;padding:1.25rem 1rem;font-size:.9rem;background:#28a745;color:#fff;border:none;border-radius:8px;cursor:pointer;transition:all .3s;font-weight:600;text-transform:uppercase;letter-spacing:.5px;min-height:56px;box-shadow:0 2px 4px #00000026;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.search-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.search-button:hover:not(:disabled):before{left:100%}.search-button:hover:not(:disabled){background:#218838;transform:translateY(-1px);box-shadow:0 4px 8px #0003}.search-button:disabled{opacity:.5;cursor:not-allowed}@media(min-width:768px){.ean-input{flex:1 1 auto;padding:.875rem}.scanner-button,.search-button{flex:0 0 auto;padding:.875rem 2rem;min-height:auto}}.scanner-container{margin-bottom:1rem;border:2px solid #007bff;border-radius:8px;overflow:hidden;background:#000;box-shadow:0 2px 6px #0003;position:relative;width:100%;max-width:100%}#scanner{width:100%;position:relative;max-height:60vh;overflow:hidden}#scanner video{width:100%;height:auto;max-height:60vh;display:block;object-fit:contain;background:#000}#scanner canvas{position:absolute;top:0;left:0;width:100%;height:100%}.scanner-overlay{position:absolute;inset:30% 10%;border:4px solid #28a745;border-radius:12px;pointer-events:none;z-index:10;box-shadow:0 0 0 9999px #000000b3;animation:scan-pulse 2s ease-in-out infinite}.help-button{position:absolute;bottom:20px;right:20px;width:32px;height:32px;border-radius:50%;background:#fff3;color:#fff;border:2px solid rgba(255,255,255,.3);font-size:1.25rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:25;box-shadow:0 2px 8px #0006;transition:all .2s ease;-webkit-tap-highlight-color:transparent;padding:0;line-height:1}.help-button:hover{background:#ffffff4d;transform:scale(1.1)}.help-button:active{transform:scale(.9);background:#fff6}.tutorial-overlay{position:absolute;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:30;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.tutorial-content{background:#fff;border-radius:16px;padding:1.5rem;max-width:85%;width:320px;max-height:70vh;overflow-y:auto;box-shadow:0 8px 32px #0000004d;animation:slideUp .4s cubic-bezier(.68,-.55,.265,1.55)}@keyframes slideUp{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.tutorial-icon{font-size:3rem;text-align:center;margin-bottom:.75rem}.tutorial-content h3{text-align:center;color:#212529;font-size:1.25rem;margin:0 0 1rem;font-weight:700}.tutorial-steps{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.tutorial-step{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem;background:#f8f9fa;border-radius:8px;border-left:3px solid #28a745}.step-icon{font-size:1rem;color:#28a745;font-weight:700;flex-shrink:0}.tutorial-step p{margin:0;color:#495057;font-size:.875rem;line-height:1.4}.tutorial-step strong{color:#007bff;font-weight:700}.tutorial-button{width:100%;padding:.875rem;background:linear-gradient(135deg,#007bff,#0056b3);color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:700;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 4px 12px #007bff4d;transition:all .3s ease}.tutorial-button:hover{background:linear-gradient(135deg,#0056b3,#003d82);transform:translateY(-2px);box-shadow:0 6px 16px #007bff66}.tutorial-button:active{transform:translateY(0)}.zoom-controls{position:absolute;top:16px;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center;gap:.75rem;background:#000000bf;padding:.75rem 1.25rem;border-radius:30px;z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 12px #0006;border:2px solid rgba(255,255,255,.2)}.zoom-btn{width:32px;height:32px;border-radius:50%;background:#fff3;color:#fff;border:2px solid rgba(255,255,255,.3);font-size:1.25rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;-webkit-tap-highlight-color:transparent;padding:0;line-height:1}.zoom-btn:hover{background:#ffffff4d;transform:scale(1.1)}.zoom-btn:active{transform:scale(.9);background:#fff6}.zoom-slider{-webkit-appearance:none;appearance:none;width:120px;height:4px;background:#ffffff4d;border-radius:10px;outline:none;cursor:pointer;margin:0;padding:0}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:none;cursor:pointer;box-shadow:0 2px 8px #0006;transition:all .2s ease;margin-top:-7px}.zoom-slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 4px 12px #00000080}.zoom-slider::-webkit-slider-thumb:active{transform:scale(.95);box-shadow:0 2px 6px #00000080}.zoom-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:none;cursor:pointer;box-shadow:0 2px 8px #0006;transition:all .2s ease}.zoom-slider::-moz-range-thumb:hover{transform:scale(1.2);box-shadow:0 4px 12px #00000080}.zoom-slider::-moz-range-thumb:active{transform:scale(.95);box-shadow:0 2px 6px #00000080}.zoom-slider::-webkit-slider-runnable-track{background:#ffffff4d;border-radius:10px;height:4px}.zoom-slider::-moz-range-track{background:#ffffff4d;border-radius:10px;height:4px}.zoom-label{color:#fff;font-size:.75rem;font-weight:700;text-align:center;text-shadow:0 2px 4px rgba(0,0,0,.5);letter-spacing:.5px;white-space:nowrap;min-width:35px}@keyframes scan-pulse{0%,to{border-color:#28a745;box-shadow:0 0 0 9999px #000000b3,0 0 20px #28a74580}50%{border-color:#34ce57;box-shadow:0 0 0 9999px #000000b3,0 0 30px #28a745cc}}.scanner-overlay:after{content:"Posiziona il codice a barre qui";position:absolute;bottom:-35px;left:50%;transform:translate(-50%);color:#fff;font-size:.75rem;font-weight:600;text-align:center;white-space:nowrap;text-shadow:0 2px 4px rgba(0,0,0,.8)}.error-message{padding:1rem;background:#f8d7da;border:2px solid #dc3545;border-radius:8px;color:#721c24;margin-bottom:1.5rem;font-weight:500;box-shadow:0 2px 4px #0000001a;text-align:center;font-size:1rem}.products-container{width:100%}.results-count{text-align:center;font-size:1rem;font-weight:600;color:#007bff;margin-bottom:1rem;padding:.75rem;background:#007bff1a;border-radius:6px}.product-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;padding:1rem;box-shadow:0 2px 6px #0000001a;position:relative;overflow:hidden;margin-bottom:1rem}.product-card:before{content:"";position:absolute;top:-50%;right:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(0,123,255,.05) 0%,transparent 70%);animation:rotate 20s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.product-image{text-align:center;margin-bottom:1.5rem;position:relative;z-index:1}.product-image img{max-width:100%;max-height:300px;object-fit:contain;border-radius:8px;border:2px solid #e9ecef;box-shadow:0 4px 8px #0000001a;background:#fff;padding:1rem}.price-star{position:absolute;top:5px;right:5px;width:100px;height:100px;background:#ffb84d;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;box-shadow:0 4px 16px #ffd70099;animation:star-pulse 3s ease-in-out infinite}.price-star:before,.price-star:after{content:"";position:absolute;top:0;left:0;width:100px;height:100px;background:#ffb84d;border-radius:8px;z-index:-1}.price-star:before{transform:rotate(30deg)}.price-star:after{transform:rotate(60deg)}@keyframes star-pulse{0%,to{transform:scale(1);box-shadow:0 4px 16px #ffd70099}50%{transform:scale(1.05);box-shadow:0 6px 20px #ffd700cc}}.star-promo-name{font-size:1rem;font-weight:800;color:#dc3545;font-style:normal;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1;margin-bottom:.3rem;text-shadow:0 1px 2px rgba(255,255,255,.8);text-transform:uppercase;letter-spacing:.5px}.star-price{font-size:1.5rem;font-weight:900;color:#1a1a1a;text-shadow:0 1px 2px rgba(255,255,255,.5);line-height:1;margin-top:0}.star-discount{background:#0003;color:#fff;padding:.2rem .5rem;border-radius:8px;font-size:.8rem;font-weight:700;margin-top:.35rem;text-shadow:0 1px 3px rgba(0,0,0,.5)}.product-card h2{margin-top:0;color:#212529;border-bottom:2px solid #e9ecef;padding-bottom:.75rem;font-size:1.25rem;line-height:1.3;font-weight:700;text-transform:none;letter-spacing:0;position:relative;z-index:1}.product-details{margin-top:1.5rem;position:relative;z-index:1}.detail-row{display:flex;flex-direction:column;padding:1rem;background:#f8f9fa;border-radius:8px;margin-bottom:.75rem;gap:.5rem;border:1px solid #e9ecef;box-shadow:0 1px 2px #0000000d}.detail-row:last-child{margin-bottom:0}.detail-row .label{font-weight:600;font-size:.875rem;color:#6c757d;text-transform:uppercase;letter-spacing:.5px}.detail-row .value{color:#212529;font-size:1.1rem;font-weight:600}.detail-row .value.price{font-size:2rem;font-weight:700;color:#28a745;text-shadow:none}.detail-row .value.price.promotional{font-size:2.2rem;color:#ff6b35;font-weight:800}.detail-row .value.strikethrough{text-decoration:line-through;color:#6c757d;font-size:1.25rem;font-weight:500}.detail-row .value.discount{color:#dc3545;font-size:2rem;font-weight:700;text-shadow:none}.discount-badge{background:#dc3545;color:#fff;padding:.5rem .75rem;border-radius:6px;font-size:1rem;margin-left:.5rem;display:inline-block;font-weight:600;text-transform:uppercase;box-shadow:0 2px 4px #00000026;letter-spacing:.5px}@media(min-width:768px){.product-card{padding:2rem}.product-image{margin-bottom:1.5rem}.product-image img{max-height:400px}.product-card h2{font-size:1.5rem;padding-bottom:.5rem}.product-details{margin-top:1.5rem}.detail-row{flex-direction:row;align-items:center;gap:0}.detail-row .label{width:140px;font-size:.875rem}.detail-row .value{flex:1}.detail-row .value.price,.detail-row .value.discount{font-size:1.5rem}.detail-row .value.strikethrough{font-size:1rem}.discount-badge{font-size:.875rem;padding:.25rem .5rem}}.description{margin-top:1.5rem;padding-top:1rem;border-top:2px solid #f0f0f0;color:#666;line-height:1.6}.focus-indicator{position:fixed;width:80px;height:80px;margin-left:-40px;margin-top:-40px;border:4px solid #28a745;border-radius:50%;pointer-events:none;z-index:99999;animation:focus-pulse .8s ease-out;box-shadow:0 0 20px #28a745cc;background:#28a7451a}@keyframes focus-pulse{0%{transform:scale(1.5);opacity:1}50%{transform:scale(1);opacity:1}to{transform:scale(1.2);opacity:0}}.loading-overlay{position:fixed;inset:0;width:100vw;height:100vh;min-height:100vh;background:#000000b3;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:99999;overflow:hidden;touch-action:none;margin:0;padding:0;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.spinner{width:80px;height:80px;border:8px solid rgba(255,255,255,.2);border-top:8px solid #007bff;border-right:8px solid #28a745;border-radius:50%;animation:spin 1s linear infinite;box-shadow:0 0 20px #007bff66}.loading-text{color:#fff;margin-top:2rem;font-size:1.25rem;font-weight:600;text-transform:none;letter-spacing:.5px;text-shadow:none;animation:pulse-text 1.5s ease-in-out infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-text{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}
