{"id":5,"date":"2026-06-08T20:27:09","date_gmt":"2026-06-08T18:27:09","guid":{"rendered":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/"},"modified":"2026-06-15T19:06:09","modified_gmt":"2026-06-15T17:06:09","slug":"configuratore","status":"publish","type":"page","link":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/","title":{"rendered":"Configuratore AI"},"content":{"rendered":"<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garant:ital,wght@0,300;0,400;0,600;1,300;1,400&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500&display=swap\" rel=\"stylesheet\">\n<style>\n:root{\n  --cream:#faf7f2;--linen:#f2ede6;--linen-dk:#e0d8cc;\n  --bark:#2e2a24;--bark-mid:#7a7068;--bark-light:#a89e94;\n  --botanical:#3a6b3a;--botanical-mid:#5a8c5a;--sage:#a8c4a0;\n  --rose:#c0395a;--rose-pale:#faf0f3;--gd:#b8943a;\n}\n#fc-wrap{font-family:'DM Sans',sans-serif;color:var(--bark);background:var(--cream);max-width:1280px;margin:0 auto;line-height:1.6;position:relative;z-index:1}\n#fc-wrap div,#fc-wrap span,#fc-wrap p,#fc-wrap h1,#fc-wrap h2,#fc-wrap h3,#fc-wrap ul,#fc-wrap li,#fc-wrap button,#fc-wrap input,#fc-wrap select,#fc-wrap label{box-sizing:border-box}\n\/* \u2500\u2500 Barra step compatta \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#fc-header{background:transparent;border-bottom:none;height:auto;display:flex;align-items:center;justify-content:center;padding:10px 20px 6px;position:static;z-index:10;gap:0}\n#fc-logo{display:none}\n#fc-steps{display:inline-flex;align-items:center;gap:0;background:#fff;border-radius:40px;padding:6px 14px;box-shadow:0 1px 8px rgba(0,0,0,.08);border:1px solid #e8e3da;transition:opacity .4s ease}\n.fc-step-dot{display:flex;align-items:center;gap:7px;font-size:.75rem;font-weight:500;color:var(--bark-light);letter-spacing:.03em;text-transform:uppercase;padding:0 14px;cursor:pointer;transition:color .2s;user-select:none;white-space:nowrap}\n.fc-step-dot.active{color:var(--botanical)}\n.fc-step-dot.done{color:var(--botanical-mid);cursor:pointer}\n.fc-step-dot .sn{width:26px;height:26px;border-radius:50%;border:2px solid currentColor;display:flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:700;transition:all .2s;flex-shrink:0}\n.fc-step-dot.done .sn{background:var(--botanical);border-color:var(--botanical);color:#fff}\n.fc-step-dot.done .sn::before{content:'\u2713'}\n.fc-step-dot:not(.done):not(.active) .st{display:none}\n.fc-step-sep{width:28px;height:1.5px;background:var(--linen-dk);flex-shrink:0}\n#fc-totbadge{display:none}\n\/* \u2500\u2500 Layout shell \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#fc-shell{display:grid;grid-template-columns:1fr 300px;gap:24px;padding:8px 24px 20px;min-height:500px}\n#fc-main{min-width:0}\n#fc-preview{position:sticky;top:100px;height:fit-content;z-index:5}\n.fc-pane{display:none;animation:fcIn .3s ease}\n.fc-pane.active{display:block}\n@keyframes fcIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}\n\/* \u2500\u2500 Titolo step compatto \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.fc-step-head{display:flex;align-items:baseline;gap:8px;margin-bottom:10px;flex-wrap:wrap}\n.fc-section-title{font-family:'Cormorant Garant',serif;font-size:1.5rem;font-weight:400;color:var(--bark);margin:0;white-space:nowrap}\n.fc-section-title em{font-style:italic;color:var(--botanical)}\n.fc-section-sub{font-size:.75rem;color:var(--bark-mid);font-weight:300;line-height:1.4;margin:0 0 10px;max-width:500px}\n\/* \u2500\u2500 Nav step \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.fc-nav{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding-top:16px;border-top:1px solid var(--linen-dk)}\n\/* \u2500\u2500 Pulsante avanti nella sidebar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#fc-sidebar-nav{display:flex;gap:6px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--linen-dk)}\n.fc-sb-nav-btn{flex:1;padding:7px 10px;font-size:.72rem;font-weight:600;border-radius:8px;border:none;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .2s;text-align:center}\n.fc-sb-nav-btn.next{background:var(--botanical);color:#fff}\n.fc-sb-nav-btn.next:hover:not(:disabled){background:#286028}\n.fc-sb-nav-btn.next:disabled{opacity:.35;cursor:not-allowed}\n.fc-sb-nav-btn.back{background:transparent;color:var(--bark-mid);border:1px solid var(--linen-dk);flex:0 0 auto;padding:7px 12px}\n.fc-sb-nav-btn.back:hover{border-color:var(--bark-mid)}\n\/* \u2500\u2500 MOBILE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media(max-width:768px){\n  #fc-header{padding:8px 12px 4px}\n  #fc-steps .st{display:none!important}\n  .fc-step-dot{padding:0 8px}\n  .fc-step-sep{width:12px}\n  #fc-shell{display:flex;flex-direction:column;padding:12px;gap:0}\n  #fc-preview{order:2;position:static;margin-top:16px}\n  #fc-main{order:1;padding-bottom:16px}\n  .fc-nav{position:sticky;bottom:0;background:var(--cream);margin-top:12px;padding:10px 0 calc(env(safe-area-inset-bottom,0px) + 16px);border-top:1px solid var(--linen-dk);z-index:8;box-shadow:0 -8px 20px 8px var(--cream)}\n  #fc-sidebar-nav{display:none}\n  .fc-section-head{flex-direction:column;gap:4px}\n  #fc-pgrid{grid-template-columns:repeat(2,1fr)}\n  .fc-bgrid{grid-template-columns:1fr 1fr!important}\n  .fc-step-head{margin-bottom:8px}\n  .fc-section-sub{font-size:.72rem;line-height:1.4;margin-bottom:8px!important}\n  .fc-section-title{font-size:1.6rem!important}\n}\n\n.fc-pane{display:none;animation:fcIn .3s ease}\n.fc-pane.active{display:block}\n@keyframes fcIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}\n.fc-section-title{font-family:'Cormorant Garant',serif;font-size:2rem;font-weight:400;color:var(--bark);margin-bottom:2px}\n.fc-section-title em{font-style:italic;color:var(--botanical)}\n.fc-section-sub{font-size:.82rem;color:var(--bark-mid);margin-bottom:10px;font-weight:300;line-height:1.4;max-width:560px}\n.fc-label{font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--botanical-mid);font-weight:600;margin-bottom:10px;margin-top:24px;display:block}\n.fc-label:first-of-type{margin-top:0}\n#fc-pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:8px}\n.fc-pal{border:1.5px solid var(--linen-dk);border-radius:16px;overflow:hidden;cursor:pointer;transition:all .2s;background:#fff;position:relative;user-select:none}\n.fc-pal:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08)}\n.fc-pal.sel{border-color:var(--botanical);box-shadow:0 0 0 3px rgba(58,107,58,.12)}\n.fc-pal-swatches{display:flex;height:52px}\n.fc-pal-sw{flex:1}\n.fc-pal-info{padding:10px 12px;background:#fff}\n.fc-pal-name{font-size:.8rem;font-weight:600;color:var(--bark)}\n.fc-pal-sub{font-size:.68rem;color:var(--bark-mid);margin-top:1px}\n.fc-pal-ck{position:absolute;top:6px;right:6px;width:18px;height:18px;border-radius:50%;background:var(--botanical);color:#fff;font-size:.6rem;display:none;align-items:center;justify-content:center}\n.fc-pal.sel .fc-pal-ck{display:flex}\n.fc-fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;margin-bottom:8px}\n.fc-fcard{border:1.5px solid var(--linen-dk);border-radius:14px;overflow:hidden;cursor:pointer;transition:all .2s;background:#fff;position:relative;user-select:none}\n.fc-fcard.fn-sel{overflow:visible;border-color:var(--botanical)}\n.fc-fcard:hover:not(.disabled){box-shadow:0 6px 20px rgba(0,0,0,.08);transform:translateY(-2px)}\n.fc-fcard.sel{border-color:var(--botanical);background:rgba(58,107,58,.04)}\n.fc-fcard.disabled{opacity:.35;cursor:not-allowed}\n.fc-fcard img,.fc-fcard .fph{width:100%;height:84px;object-fit:cover;display:block;background:var(--linen)}\n.fc-fcard .fph{display:flex;align-items:center;justify-content:center;font-size:1.8rem}\n.fc-fcard .fph{display:flex;align-items:center;justify-content:center;font-size:1.8rem;color:var(--linen-dk)}\n.fc-fcard .fb{padding:8px 9px 7px}\n\/* Badge stagionale *\/\n.fc-stag-dot{position:absolute;bottom:30px;right:6px;width:9px;height:9px;border-radius:50%;background:#e88c00;box-shadow:0 1px 4px rgba(0,0,0,.3)}\n.fc-stag-dot-inline{display:inline-block;width:8px;height:8px;border-radius:50%;background:#e88c00;margin-left:5px;vertical-align:middle;flex-shrink:0}\n\/* Badge fuori stagione *\/\n.fc-fuori-dot{position:absolute;bottom:30px;right:6px;width:9px;height:9px;border-radius:50%;background:#c00;box-shadow:0 1px 4px rgba(0,0,0,.3)}\n.fc-fuori-dot-inline{display:inline-block;width:8px;height:8px;border-radius:50%;background:#c00;margin-left:5px;vertical-align:middle;flex-shrink:0}\n\/* Avviso stagionale sidebar *\/\n.fc-stag-warn{background:#fff8e8;border:1px solid #e8c44a;border-radius:8px;padding:8px 10px;font-size:.68rem;color:#7a5a00;line-height:1.5;margin-top:8px}\n.fc-fcard .fn{font-size:.73rem;font-weight:500;color:var(--bark);line-height:1.3}\n\/* Fiori a Numero \u2014 spinner steli *\/\n.fc-steli-wrap{display:flex;align-items:center;justify-content:center;gap:2px;padding:5px 6px 7px;border-top:1px solid var(--linen);background:rgba(58,107,58,.03)}\n.fc-steli-btn{width:22px;height:22px;border:1px solid var(--linen-dk);background:#fff;border-radius:5px;font-size:.82rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;color:var(--bark-mid);transition:all .15s;flex-shrink:0;padding:0}\n.fc-steli-btn:hover{border-color:var(--botanical);color:var(--botanical)}\n.fc-steli-inp{width:34px;text-align:center;border:1px solid var(--linen-dk);border-radius:5px;font-size:.76rem;font-weight:700;padding:2px 2px;color:var(--bark);font-family:'DM Sans',sans-serif;margin:0 2px;background:#fff;-moz-appearance:textfield}\n.fc-steli-inp::-webkit-inner-spin-button,.fc-steli-inp::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}\n.fc-steli-inp:focus{outline:none;border-color:var(--botanical)}\n.fc-steli-lbl{font-size:.55rem;color:var(--bark-light);margin-left:1px}\n.fc-fcard .fck{position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;background:var(--botanical);color:#fff;font-size:.65rem;display:none;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.2)}\n.fc-fcard.sel .fck{display:flex}\n.fc-empty{color:var(--bark-light);font-size:.8rem;padding:12px 0;font-style:italic}\n.fc-bgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}\n.fc-bcard{border:1.5px solid var(--linen-dk);border-radius:16px;padding:18px 12px;cursor:pointer;transition:all .2s;background:#fff;text-align:center;position:relative}\n.fc-bcard:hover{box-shadow:0 6px 20px rgba(0,0,0,.07);transform:translateY(-1px)}\n.fc-bcard.sel{border-color:var(--botanical);background:rgba(58,107,58,.04)}\n.fc-bcard .bs{display:inline-flex;width:28px;height:28px;border-radius:50%;background:var(--linen);color:var(--bark-mid);font-size:.7rem;font-weight:700;align-items:center;justify-content:center;margin-bottom:8px}\n.fc-bcard.sel .bs{background:var(--botanical);color:#fff}\n.fc-bcard .bv{font-family:'Cormorant Garant',serif;font-size:1.7rem;font-weight:600;color:var(--bark);margin-bottom:2px}\n.fc-bcard .bd{font-size:.68rem;color:var(--bark-mid)}\n.fc-bcard .bck{position:absolute;top:7px;right:7px;width:16px;height:16px;border-radius:50%;background:var(--botanical);color:#fff;font-size:.55rem;display:none;align-items:center;justify-content:center}\n.fc-bcard.sel .bck{display:flex}\n.fc-compbox{background:#fff;border:1.5px solid var(--linen-dk);border-radius:18px;padding:20px 22px;margin-bottom:20px;box-shadow:0 2px 16px rgba(0,0,0,.04)}\n.fc-compbox-t{font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--botanical-mid);font-weight:600;margin-bottom:14px}\n.fc-crow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--linen)}\n.fc-crow:last-child{border-bottom:none}\n.fc-crow img,.fc-crow .cph{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid var(--linen-dk);flex-shrink:0}\n.fc-crow .cph{display:flex;align-items:center;justify-content:center;font-size:1rem;background:var(--linen)}\n.fc-crow .ci{flex:1}\n.fc-crow .cn{font-size:.8rem;font-weight:500}\n.fc-crow .cq{font-size:.7rem;color:var(--bark-mid);margin-top:1px}\n.fc-cont-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:4px}\n.fc-cont-card{border:2px solid var(--linen-dk);border-radius:12px;padding:16px 10px;text-align:center;cursor:pointer;background:#fff;transition:all .2s}\n.fc-cont-card:hover{border-color:var(--botanical);background:rgba(168,196,160,.08)}\n.fc-cont-card.sel{border-color:var(--botanical);background:rgba(168,196,160,.12)}\n.fc-cont-icon{width:64px;height:64px;margin:0 auto 8px;display:flex;align-items:center;justify-content:center}\n.fc-cont-icon img{width:100%;height:100%;object-fit:contain;filter:invert(35%) sepia(20%) saturate(600%) hue-rotate(90deg) brightness(85%)}\n.fc-cont-card.sel .fc-cont-icon img{filter:invert(30%) sepia(30%) saturate(800%) hue-rotate(90deg) brightness(80%)}\n.fc-cont-nome{font-size:.82rem;font-weight:600;color:var(--bark)}\n.fc-cont-sub{font-size:.66rem;color:var(--bark-mid);margin-top:3px;line-height:1.3}\n.fc-aibox{border:1.5px solid var(--linen-dk);border-radius:20px;overflow:visible;background:#fff;margin-bottom:12px;box-shadow:0 2px 24px rgba(0,0,0,.05)}\n.fc-aih{padding:14px 18px;border-bottom:1px solid var(--linen);display:flex;align-items:center;justify-content:space-between}\n.fc-aih-t{font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--botanical-mid);font-weight:600}\n.fc-ain{font-size:.65rem;color:var(--bark-light);max-width:160px;text-align:right;line-height:1.6}\n\/* \u2500\u2500 Share button sull'immagine AI \u2500\u2500\u2500 *\/\n.fc-aiimg-wrap{position:relative;line-height:0;overflow:visible;display:flex;align-items:flex-start;justify-content:center}\n.fc-share-trigger{position:absolute;bottom:10px;right:10px;background:rgba(0,0,0,.40);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:none;border-radius:50px;color:#fff;font-size:.72rem;font-weight:600;cursor:pointer;padding:7px 14px;display:flex;align-items:center;gap:6px;font-family:'DM Sans',sans-serif;transition:background .2s;letter-spacing:.02em;line-height:1;user-select:none}\n.fc-share-trigger:hover{background:rgba(0,0,0,.60)}\n.fc-share-trigger svg{width:13px;height:13px;flex-shrink:0}\n\/* No tasto destro sull'immagine *\/\n.fc-aiimg-wrap img{pointer-events:none;-webkit-user-drag:none;user-select:none}\n\/* \u2500\u2500 Modale condivisione \u2500\u2500\u2500 *\/\n.fc-sm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:99999999;opacity:0;visibility:hidden;transition:.35s ease}\n.fc-sm-overlay.open{opacity:1;visibility:visible}\n.fc-sm{background:#fff;position:fixed;bottom:0;left:0;right:0;border-radius:20px 20px 0 0;padding:0;z-index:9999999;transform:translateY(100%);transition:.4s cubic-bezier(.25,.8,.25,1);box-shadow:0 -8px 40px rgba(0,0,0,.18);overflow:hidden}\n.fc-sm-overlay.open .fc-sm{transform:translateY(0)}\n@media(min-width:600px){\n  .fc-sm{width:26em;left:50%;right:auto;transform:translateX(-50%) scale(.96);border-radius:18px;bottom:auto;top:50%;margin-top:-13em}\n  .fc-sm-overlay.open .fc-sm{transform:translateX(-50%) scale(1)}\n}\n.fc-sm-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px 10px}\n.fc-sm-head span{font-size:1.05rem;font-weight:700;color:var(--bark);letter-spacing:.01em}\n.fc-sm-close{background:none;border:none;cursor:pointer;color:var(--bark-mid);font-size:1.3rem;line-height:1;padding:4px;border-radius:50%;transition:background .2s}\n.fc-sm-close:hover{background:var(--linen)}\n.fc-sm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 4px;padding:10px 16px 16px}\n.fc-sm-item{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;padding:10px 6px;border-radius:14px;transition:background .18s;text-decoration:none;color:var(--bark);border:none;background:none;font-family:'DM Sans',sans-serif}\n.fc-sm-item:hover{background:var(--linen)}\n.fc-sm-ico{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}\n.fc-sm-ico svg,.fc-sm-ico img{width:26px;height:26px}\n.fc-sm-item span{font-size:.65rem;font-weight:500;color:var(--bark-mid);text-transform:capitalize;text-align:center;line-height:1.3}\n.fc-sm-divider{height:1px;background:var(--linen-dk);margin:0 20px 0}\n.fc-sm-link{padding:16px 22px 22px;display:flex;flex-direction:column;gap:8px}\n.fc-sm-link-lbl{font-size:.72rem;font-weight:600;color:var(--bark-mid);text-transform:uppercase;letter-spacing:.08em}\n.fc-sm-link-row{display:flex;align-items:center;gap:8px;background:var(--linen);border-radius:10px;padding:10px 14px}\n.fc-sm-link-url{flex:1;font-size:.72rem;color:var(--bark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:monospace}\n.fc-sm-copy{background:var(--botanical);color:#fff;border:none;border-radius:8px;padding:6px 14px;font-size:.68rem;font-weight:600;cursor:pointer;font-family:'DM Sans',sans-serif;white-space:nowrap;transition:background .2s}\n.fc-sm-copy:hover{background:#286028}\n.fc-aiimg img{width:auto;height:auto;max-width:420px;display:block}\n@media(max-width:480px){.fc-aiimg img{max-width:100%}}\n.fc-aiph{text-align:center;color:var(--bark-light);padding:32px 24px}\n.fc-aiph .icon{font-size:2.8rem;opacity:.4;display:block;margin-bottom:10px}\n.fc-aiph p{font-size:.8rem;line-height:1.7}\n\/* \u2500\u2500 LOADING AI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.fc-loading{background:rgba(250,247,242,.97);width:100%;padding:28px 20px;box-sizing:border-box}\n.fc-load-inner{max-width:300px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:0}\n\/* Fiore animato *\/\n.fc-load-preview{position:relative;width:90px;height:90px;margin-bottom:16px;flex-shrink:0}\n.fc-load-flower{font-size:2.8rem;position:absolute;inset:0;display:flex;align-items:center;justify-content:center;filter:grayscale(1);opacity:.4;animation:fcbloom 2s ease-in-out infinite}\n.fc-load-blur-ring{position:absolute;inset:-8px;border-radius:50%;border:3px solid var(--botanical);opacity:.3;animation:fcring 2s ease-in-out infinite}\n\/* Titolo e provider *\/\n.fc-load-title{font-family:'Cormorant Garant',serif;font-size:1.05rem;font-weight:600;color:var(--bark);text-align:center;margin-bottom:2px;line-height:1.3}\n.fc-load-sub{font-size:.7rem;color:var(--bark-mid);text-align:center;margin-bottom:14px;line-height:1.4}\n\/* Fasi \u2014 blocco separato *\/\n.fc-load-phases{width:100%;margin-bottom:14px;display:flex;flex-direction:column;gap:5px}\n.fc-load-phase{display:flex;align-items:center;gap:8px;font-size:.74rem;color:var(--bark-mid);line-height:1.2;padding:2px 0}\n.fc-load-phase.active{color:var(--botanical);font-weight:600}\n.fc-load-phase.done{color:var(--botanical-mid)}\n.fc-load-phase .ph-icon{width:16px;height:16px;border-radius:50%;border:1.5px solid currentColor;display:flex;align-items:center;justify-content:center;font-size:.5rem;flex-shrink:0;line-height:1}\n.fc-load-phase.active .ph-icon{animation:fcpulse 1s ease-in-out infinite}\n.fc-load-phase.done .ph-icon{background:var(--botanical);border-color:var(--botanical);color:#fff}\n.fc-load-phase.done .ph-icon::before{content:'\u2713'}\n\/* Tip \u2014 blocco separato con altezza fissa *\/\n.fc-load-tip-wrap{width:100%;background:rgba(58,107,58,.06);border-radius:10px;padding:10px 14px;margin-bottom:10px;min-height:54px;display:flex;align-items:center;justify-content:center;box-sizing:border-box}\n.fc-load-tip{font-size:.78rem;color:var(--botanical);font-style:italic;font-weight:500;text-align:center;line-height:1.5;transition:opacity .4s;margin:0}\n\/* Timer *\/\n.fc-load-timer{font-size:.66rem;color:var(--bark-light);font-variant-numeric:tabular-nums;text-align:center}\n@keyframes fcbloom{0%,100%{transform:scale(1);opacity:.3}50%{transform:scale(1.1);opacity:.6}}\n@keyframes fcring{0%,100%{transform:scale(1);opacity:.2}50%{transform:scale(1.15);opacity:.5}}\n@keyframes fcpulse{0%,100%{opacity:1}50%{opacity:.4}}\n\/* Query AI \u2014 details nativo HTML *\/\ndetails.fc-aidbg{border-top:1px solid var(--linen)}\ndetails.fc-aidbg summary{padding:10px 16px;font-size:.7rem;color:var(--bark-light);cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;user-select:none}\ndetails.fc-aidbg summary::-webkit-details-marker{display:none}\ndetails.fc-aidbg summary::after{content:'\u25be';margin-left:auto;transition:transform .25s;display:inline-block}\ndetails.fc-aidbg[open] summary::after{transform:rotate(180deg)}\ndetails.fc-aidbg summary:hover{color:var(--botanical)}\n.fc-aidbg-body{padding:0 14px 12px}\n.fc-aidbg-i{background:#1a1e26;color:#d4f0e8;border-radius:10px;padding:10px 13px;font-family:monospace;font-size:.67rem;line-height:1.7;word-break:break-all}\n.fc-aiact{padding:14px;display:flex;flex-direction:column;gap:9px}\n.fc-tok{font-size:.65rem;color:var(--bark-light);text-align:center;display:flex;align-items:center;justify-content:center;gap:5px}\n.fc-tok-d{width:6px;height:6px;border-radius:50%;background:var(--botanical-mid);flex-shrink:0}\n.fc-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:13px 26px;border-radius:40px;font-family:'DM Sans',sans-serif;font-size:.78rem;font-weight:500;letter-spacing:.04em;cursor:pointer;border:none;transition:all .22s;width:100%;text-transform:uppercase}\n.fc-btn-bot{background:var(--bark);color:#fff}\n.fc-btn-bot:hover:not(:disabled){background:var(--botanical);transform:translateY(-1px);box-shadow:0 6px 18px rgba(58,107,58,.3)}\n.fc-btn-bot:disabled{background:var(--linen-dk);color:var(--bark-light);cursor:not-allowed;transform:none}\n.fc-btn-out{background:transparent;color:var(--bark);border:1.5px solid var(--linen-dk);width:auto;padding:10px 22px}\n.fc-btn-out:hover{border-color:var(--bark)}\n.fc-btn-ai{background:linear-gradient(135deg,var(--botanical),#286028);color:#fff}\n.fc-btn-ai:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}\n.fc-btn-ai:disabled{opacity:.45;cursor:not-allowed;transform:none}\n.fc-btn-rose{background:var(--rose);color:#fff}\n.fc-btn-rose:hover:not(:disabled){background:#a82e4e;transform:translateY(-1px);box-shadow:0 6px 18px rgba(192,57,90,.3)}\n.fc-btn-rose:disabled{opacity:.5;cursor:not-allowed;transform:none}\n.fc-nav{display:flex;justify-content:space-between;align-items:center;margin-top:28px;padding-top:20px;border-top:1px solid var(--linen-dk)}\n#fc-preview{background:#fff;border-radius:24px;box-shadow:0 2px 32px rgba(46,42,36,.06);padding:22px;display:flex;flex-direction:column;gap:16px}\n.fc-prev-section{border-bottom:1px solid var(--linen);padding-bottom:14px}\n.fc-prev-section:last-child{border-bottom:none;padding-bottom:0}\n.fc-prev-label{font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:var(--botanical-mid);font-weight:600;margin-bottom:8px}\n.fc-prev-pal{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}\n.fc-prev-sw{width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.15)}\n.fc-prev-palname{font-size:.78rem;font-weight:600;color:var(--bark)}\n.fc-prev-palsub{font-size:.68rem;color:var(--bark-mid)}\n.fc-prev-tags{display:flex;flex-wrap:wrap;gap:5px}\n.fc-tag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:.68rem;font-weight:500;border:1px solid var(--linen-dk);background:var(--linen);color:var(--bark)}\n.fc-tag.verde{background:rgba(58,107,58,.07);border-color:rgba(58,107,58,.2);color:var(--botanical)}\n.fc-tag.riemp{background:rgba(168,196,160,.2);border-color:var(--sage);color:var(--botanical)}\n.fc-budget-badge{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:12px;background:rgba(58,107,58,.06);border:1.5px solid rgba(58,107,58,.15)}\n.fc-budget-badge .bba{font-family:'Cormorant Garant',serif;font-size:1.5rem;font-weight:600;color:var(--botanical)}\n.fc-budget-badge .bbl{font-size:.7rem;color:var(--botanical-mid)}\n.fc-prev-aiimg{width:100%;aspect-ratio:4\/3;border-radius:12px;object-fit:cover;border:1px solid var(--linen-dk)}\n.fc-prev-empty{color:var(--bark-light);font-size:.78rem;font-style:italic}\n#fc-toast{position:fixed;bottom:24px;right:24px;background:var(--bark);color:#fff;padding:12px 18px;border-radius:12px;font-family:'DM Sans',sans-serif;font-size:.78rem;z-index:99999;transform:translateY(80px);opacity:0;transition:all .3s cubic-bezier(.175,.885,.32,1.275);max-width:280px;line-height:1.6;box-shadow:0 8px 24px rgba(0,0,0,.2)}\n#fc-toast.show{transform:translateY(0);opacity:1}\n#fc-toast.ok{background:var(--botanical)}\n#fc-toast.err{background:#8b2020}\n@media(max-width:1000px){#fc-shell{grid-template-columns:1fr;gap:20px;padding:16px}#fc-preview{order:2;position:static}#fc-pgrid{grid-template-columns:repeat(2,1fr)}.fc-bgrid{grid-template-columns:repeat(2,1fr)}}\n@media(max-width:700px){.fc-fgrid{grid-template-columns:repeat(auto-fill,minmax(85px,1fr))}}\n@media(max-width:480px){.fc-fgrid{grid-template-columns:repeat(3,1fr)}}\n\/* \u2500\u2500 Step nella sidebar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#fc-sidebar-steps{border-bottom:1px solid var(--linen-dk);padding-bottom:14px;margin-bottom:4px}\n.fc-sb-step{display:flex;align-items:center;gap:10px;padding:6px 0;cursor:pointer;opacity:.45;transition:opacity .2s}\n.fc-sb-step.active{opacity:1}\n.fc-sb-step.done{opacity:.75;cursor:pointer}\n.fc-sb-step-num{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--botanical);display:flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;color:var(--botanical);flex-shrink:0;transition:all .2s}\n.fc-sb-step.done .fc-sb-step-num{background:var(--botanical);color:#fff;border-color:var(--botanical)}\n.fc-sb-step.done .fc-sb-step-num::before{content:'\u2713';font-size:.65rem}\n.fc-sb-step.active .fc-sb-step-num{background:var(--botanical);color:#fff;border-color:var(--botanical)}\n.fc-sb-step-info{flex:1;min-width:0}\n.fc-sb-step-label{font-size:.72rem;font-weight:600;color:var(--bark);letter-spacing:.03em;text-transform:uppercase}\n.fc-sb-step.active .fc-sb-step-label{color:var(--botanical)}\n.fc-sb-step-desc{font-size:.65rem;color:var(--bark-light);line-height:1.3;margin-top:1px}\n\/* Icone PNG nella sidebar presentazione *\/\n.fp-cont-icon{width:28px;height:28px;object-fit:contain;vertical-align:middle;margin-right:4px;filter:invert(35%) sepia(20%) saturate(600%) hue-rotate(90deg) brightness(85%)}\n\/* \u2500\u2500 Ispirazione \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#fc-insp{padding:0 24px 24px}\n@media(max-width:768px){#fc-insp{padding:0 12px 20px}}\n.fci-title{font-family:'Cormorant Garant',serif;font-size:1.1rem;font-weight:400;color:var(--bark);margin:0 0 3px}\n.fci-title em{font-style:italic;color:var(--botanical)}\n.fci-sub{font-size:.72rem;color:var(--bark-mid);margin:0 0 14px}\n.fci-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:12px}\n@media(max-width:600px){.fci-grid{grid-template-columns:repeat(2,1fr)}}\n.fci-card{border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.07);transition:transform .25s,box-shadow .25s;position:relative}\n.fci-card:hover{transform:translateY(-3px);box-shadow:0 8px 22px rgba(0,0,0,.13)}\n.fci-card img{width:100%;aspect-ratio:4\/3;object-fit:cover;display:block}\n.fci-info{padding:8px 10px 4px}\n.fci-fiori{font-size:.68rem;font-weight:600;color:var(--bark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.fci-match{font-size:.62rem;color:var(--botanical);margin-top:2px}\n.fci-badge{position:absolute;top:7px;right:7px;background:var(--botanical);color:#fff;border-radius:20px;font-size:.58rem;font-weight:700;padding:2px 7px;line-height:1.4}\n.fci-badge.partial{background:var(--botanical-mid)}\n.fci-btn{display:block;width:100%;padding:7px;background:var(--botanical);color:#fff;border:none;font-size:.65rem;font-weight:500;cursor:pointer;font-family:'DM Sans',sans-serif;transition:background .2s;text-align:center;margin-top:6px;border-radius:0 0 12px 12px}\n.fci-btn:hover{background:#286028}\n.fci-btn:disabled{opacity:.6;cursor:wait}\n\/* shimmer *\/\n.fci-shimmer{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:12px}\n.fci-sh{border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.06)}\n.fci-sh-img{width:100%;aspect-ratio:4\/3;background:linear-gradient(90deg,#f0ede8 25%,#e4e0da 50%,#f0ede8 75%);background-size:200% 100%;animation:fciShim 1.4s infinite}\n.fci-sh-ln{height:9px;margin:8px 10px 4px;border-radius:4px;background:linear-gradient(90deg,#f0ede8 25%,#e4e0da 50%,#f0ede8 75%);background-size:200% 100%;animation:fciShim 1.4s infinite}\n<\/style>\n\n<div id=\"fc-wrap\">\n<div id=\"fc-header\">\n  <div id=\"fc-steps\">\n    <div class=\"fc-step-dot active\" id=\"fsd1\"><span class=\"sn\">1<\/span><span class=\"st\">Palette<\/span><\/div>\n    <div class=\"fc-step-sep\"><\/div>\n    <div class=\"fc-step-dot\" id=\"fsd2\"><span class=\"sn\">2<\/span><span class=\"st\">Fiori<\/span><\/div>\n    <div class=\"fc-step-sep\"><\/div>\n    <div class=\"fc-step-dot\" id=\"fsd3\"><span class=\"sn\">3<\/span><span class=\"st\">Budget<\/span><\/div>\n    <div class=\"fc-step-sep\"><\/div>\n    <div class=\"fc-step-dot\" id=\"fsd4\"><span class=\"sn\">4<\/span><span class=\"st\">Anteprima<\/span><\/div>\n  <\/div>\n<\/div>\n<div id=\"fc-shell\">\n<div id=\"fc-main\">\n\n  <div class=\"fc-pane active\" id=\"fcp1\">\n    <div class=\"fc-step-head\">\n      <div class=\"fc-section-title\">Scegli il tuo <em>umore<\/em><\/div>\n      <div class=\"fc-section-sub\">La palette cromatica racconta l'emozione \u2014 filtrer\u00e0 i fiori disponibili<\/div>\n    <\/div>\n    <div id=\"fc-pgrid\"><\/div>\n    <div class=\"fc-nav\"><div><\/div>\n      <button class=\"fc-btn fc-btn-bot\" id=\"fc-b1\" disabled style=\"width:auto;padding:13px 32px\">Scegli i fiori \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"fc-pane\" id=\"fcp2\">\n    <div class=\"fc-step-head\">\n      <div class=\"fc-section-title\">Componi la <em>composizione<\/em><\/div>\n      <div class=\"fc-section-sub\">Scegli protagonisti, verde decorativo e riempitivi<\/div>\n    <\/div>\n    <span class=\"fc-label\">Fiori protagonisti <span id=\"fc-cnt-p\" style=\"background:var(--botanical);color:#fff;border-radius:9px;padding:1px 7px;font-size:.65rem;margin-left:4px\">0<\/span> <span id=\"fc-prot-limits\" style=\"font-size:.62rem;color:var(--bark-light);font-weight:400\">(min 2, max 5)<\/span><\/span>\n    <div class=\"fc-fgrid\" id=\"fc-grid-prot\"><\/div>\n    <span class=\"fc-label\" style=\"margin-top:20px\">Verde decorativo &amp; Riempitivi <span style=\"font-size:.7rem;font-weight:300;text-transform:none;letter-spacing:0;color:var(--bark-mid)\">(opzionali)<\/span><\/span>\n    <div class=\"fc-fgrid\" id=\"fc-grid-verd-riemp\"><\/div>\n    <div class=\"fc-nav\">\n      <button class=\"fc-btn fc-btn-out\" id=\"fc-prev2\">\u2190 Indietro<\/button>\n      <button class=\"fc-btn fc-btn-bot\" id=\"fc-b2\" disabled style=\"width:auto;padding:13px 32px\">Budget \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"fc-pane\" id=\"fcp3\">\n    <div class=\"fc-step-head\">\n      <div class=\"fc-section-title\">Quanto vuoi <em>spendere?<\/em><\/div>\n      <div class=\"fc-section-sub\">Il budget determina la generosit\u00e0 \u2014 include fiori, verde e lavorazione<\/div>\n    <\/div>\n    <span class=\"fc-label\" style=\"margin-bottom:10px\">Tipo di composizione<\/span>\n    <div class=\"fc-cont-grid\" id=\"fc-cont-grid\">\n      <div class=\"fc-cont-card sel\" data-cont=\"bouquet\" id=\"fcc-bouquet\"><div class=\"fc-cont-icon\"><img decoding=\"async\" src=\"https:\/\/www.cammarotafiori.com\/wp-content\/uploads\/2026\/05\/bouquet.png\" alt=\"Bouquet\"><\/div><div class=\"fc-cont-nome\">Bouquet<\/div><div class=\"fc-cont-sub\">Composizione legata a mano<\/div><\/div>\n      <div class=\"fc-cont-card\" data-cont=\"cesto\" id=\"fcc-cesto\"><div class=\"fc-cont-icon\"><img decoding=\"async\" src=\"https:\/\/www.cammarotafiori.com\/wp-content\/uploads\/2026\/05\/cestino.png\" alt=\"Cesto\"><\/div><div class=\"fc-cont-nome\">Cesto<\/div><div class=\"fc-cont-sub\">Cesto di vimini bianco<\/div><\/div>\n      <div class=\"fc-cont-card\" data-cont=\"cilindro\" id=\"fcc-cilindro\"><div class=\"fc-cont-icon\"><img decoding=\"async\" src=\"https:\/\/www.cammarotafiori.com\/wp-content\/uploads\/2026\/05\/scatola.png\" alt=\"Cilindro\"><\/div><div class=\"fc-cont-nome\">Cilindro \/ Cappelliera<\/div><div class=\"fc-cont-sub\">Scatola cartone, fiori in fuoriuscita<\/div><\/div>\n    <\/div>\n    <span class=\"fc-label\" style=\"margin-top:20px\">Scegli la fascia di budget<\/span>\n    <div class=\"fc-bgrid\" id=\"fc-bgrid\"><\/div>\n    <div class=\"fc-compbox\" id=\"fc-cbox\" style=\"display:none\">\n      <div class=\"fc-compbox-t\">La tua composizione stimata<\/div>\n      <div id=\"fc-crows\"><\/div>\n    <\/div>\n    <div class=\"fc-nav\">\n      <button class=\"fc-btn fc-btn-out\" id=\"fc-prev3\">\u2190 Indietro<\/button>\n      <button class=\"fc-btn fc-btn-ai\" id=\"fc-b3\" disabled style=\"width:auto;padding:13px 32px\">\u2726 Genera Anteprima \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"fc-pane\" id=\"fcp4\">\n    <div class=\"fc-step-head\">\n      <div class=\"fc-section-title\">La tua <em>anteprima<\/em><\/div>\n      <div class=\"fc-section-sub\">Generata da AI \u2014 la composizione reale sar\u00e0 realizzata dal tuo fiorista<\/div>\n    <\/div>\n    <div class=\"fc-aibox\">\n      <div class=\"fc-aih\">\n        <div class=\"fc-aih-t\">\u2726 Anteprima AI<\/div>\n        <div class=\"fc-ain\" id=\"fc-ain-txt\">Immagine indicativa, non contrattuale<\/div>\n      <\/div>\n      <div style=\"position:relative;line-height:0\">\n        <div class=\"fc-aiimg-wrap fc-aiimg\" id=\"fc-aiimg\">\n          <div class=\"fc-aiph\"><span class=\"icon\">\ud83c\udf38<\/span><p>Generazione in corso\u2026<\/p><\/div>\n        <\/div>\n        <button class=\"fc-share-trigger\" id=\"fc-share-trigger-btn\" style=\"display:none\" onclick=\"fcOpenShareModal()\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"18\" cy=\"5\" r=\"3\"\/><circle cx=\"6\" cy=\"12\" r=\"3\"\/><circle cx=\"18\" cy=\"19\" r=\"3\"\/><line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"\/><line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"\/><\/svg> Condividi\n        <\/button>\n      <\/div>\n      <details class=\"fc-aidbg\" id=\"fc-aidbg\" style=\"display:none\">\n        <summary id=\"fc-aidbg-btn\">\ud83c\udf3f Cosa abbiamo chiesto alla AI<\/summary>\n        <div class=\"fc-aidbg-body\"><div class=\"fc-aidbg-i\" id=\"fc-aidbg-t\"><\/div><\/div>\n      <\/details>\n      <div class=\"fc-aiact\">\n        <button class=\"fc-btn fc-btn-ai\" id=\"fc-btn-regen\">\u21ba Rigenera Anteprima<\/button>\n        <button class=\"fc-btn fc-btn-rose\" id=\"fc-btn-cart\" disabled>Aggiungi al Carrello<\/button>\n        <div class=\"fc-tok\"><span class=\"fc-tok-d\"><\/span><span id=\"fc-toklbl\">caricamento\u2026<\/span><\/div>\n      <\/div>\n    <\/div>\n    <!-- Riepilogo SEMPRE sotto l'immagine -->\n    <div class=\"fc-compbox\" id=\"fc-cbox4\" style=\"display:none;margin-top:16px\">\n      <div class=\"fc-compbox-t\">La tua composizione<\/div>\n      <div id=\"fc-crows4\"><\/div>\n    <\/div>\n    <div class=\"fc-nav\">\n      <button class=\"fc-btn fc-btn-out\" id=\"fc-prev4\">\u2190 Modifica<\/button>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<div id=\"fc-preview\">\n  <!-- Nav compatta in cima -->\n  <div id=\"fc-sidebar-nav\">\n    <button class=\"fc-sb-nav-btn back\" id=\"fc-sb-prev\" style=\"display:none\" onclick=\"fcSbNav(-1)\">\u2190<\/button>\n    <button class=\"fc-sb-nav-btn next\" id=\"fc-sb-next\" disabled onclick=\"fcSbNav(1)\">Avanti \u2192<\/button>\n    <button class=\"fc-btn fc-btn-rose\" id=\"fc-btn-cart-side\" style=\"display:none;flex:1;padding:7px 10px;font-size:.72rem\" onclick=\"document.getElementById('fc-btn-cart').click()\">\ud83d\uded2 Carrello<\/button>\n  <\/div>\n  <!-- Sezioni riepilogo -->\n  <div class=\"fc-prev-section\" id=\"fp-pal-sec\" style=\"display:none\">\n    <div class=\"fc-prev-label\">Palette<\/div>\n    <div class=\"fc-prev-pal\" id=\"fp-swatches\"><\/div>\n    <div class=\"fc-prev-palname\" id=\"fp-palname\">\u2014<\/div>\n    <div class=\"fc-prev-palsub\" id=\"fp-palsub\"><\/div>\n  <\/div>\n  <div class=\"fc-prev-section\" id=\"fp-fiori-sec\" style=\"display:none\">\n    <div class=\"fc-prev-label\">Protagonisti<\/div>\n    <div class=\"fc-prev-tags\" id=\"fp-prot-tags\"><\/div>\n    <div class=\"fc-prev-label\" style=\"margin-top:10px\">Verde &amp; Riempitivi<\/div>\n    <div class=\"fc-prev-tags\" id=\"fp-verde-tags\"><\/div>\n  <\/div>\n  <div class=\"fc-prev-section\" id=\"fp-cont-sec\" style=\"display:none\">\n    <div class=\"fc-prev-label\">Presentazione<\/div>\n    <div style=\"font-size:.82rem;font-weight:500;color:var(--bark);display:flex;align-items:center;gap:6px\" id=\"fp-cont-name\">\u2014<\/div>\n  <\/div>\n  <div class=\"fc-prev-section\" id=\"fp-budget-sec\" style=\"display:none\">\n    <div class=\"fc-prev-label\">Budget<\/div>\n    <div class=\"fc-budget-badge\"><span class=\"bba\" id=\"fp-bv\">\u2014<\/span><span class=\"bbl\" id=\"fp-bl\"><\/span><\/div>\n  <\/div>\n  <div id=\"fp-empty\" class=\"fc-prev-empty\">Inizia scegliendo una palette \ud83c\udf38<\/div>\n  <div id=\"fc-stag-legend\" style=\"display:none;margin-top:8px;font-size:.63rem;color:var(--bark-light)\">\n    <span style=\"display:inline-block;width:8px;height:8px;border-radius:50%;background:#e88c00;margin-right:4px;vertical-align:middle\"><\/span>Fiore stagionale \u2014 non sempre disponibile in giornata\n  <\/div>\n<\/div>\n\n<\/div><!-- fine fc-shell -->\n\n<!-- Galleria ispirazione \u2014 sempre in fondo su mobile e desktop -->\n<div id=\"fc-insp\" style=\"display:none\"><\/div>\n\n<!-- Lightbox ispirazione configuratore -->\n\n\n<div id=\"fc-toast\"><\/div>\n\n<!-- Lightbox ispirazione \u2014 FUORI da fc-wrap per evitare stacking context -->\n<div id=\"fci-lb\" onclick=\"if(event.target===this)fciCloseLb()\" style=\"display:none;position:fixed;inset:0;background:rgba(245,240,232,.96);z-index:9999999;flex-direction:column;align-items:center;justify-content:center\">\n  <button onclick=\"fciCloseLb()\" style=\"position:absolute;top:14px;right:18px;background:none;border:none;color:#2e2a24;font-size:2rem;cursor:pointer;line-height:1;opacity:.6\">\u2715<\/button>\n  <button onclick=\"fciNavLb(-1)\" style=\"position:absolute;left:14px;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.08);border:none;color:#2e2a24;font-size:1.6rem;cursor:pointer;border-radius:8px;width:48px;height:64px;display:flex;align-items:center;justify-content:center\">\u2039<\/button>\n  <div style=\"position:relative;line-height:0\">\n    <img decoding=\"async\" id=\"fci-lb-img\" src=\"\" alt=\"\" style=\"max-height:78vh;max-width:82vw;object-fit:contain;border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.15)\">\n    <button id=\"fci-lb-share\" onclick=\"fciOpenShare()\" class=\"fc-share-trigger\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"18\" cy=\"5\" r=\"3\"\/><circle cx=\"6\" cy=\"12\" r=\"3\"\/><circle cx=\"18\" cy=\"19\" r=\"3\"\/><line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"\/><line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"\/><\/svg> Condividi\n    <\/button>\n  <\/div>\n  <div id=\"fci-lb-cap\" style=\"color:#5a5248;font-size:.82rem;margin-top:14px;text-align:center;max-width:500px;padding:0 20px;line-height:1.7\"><\/div>\n  <div id=\"fci-lb-num\" style=\"color:#9a8e80;font-size:.68rem;margin-top:4px\"><\/div>\n  <button id=\"fci-lb-btn\" style=\"margin-top:16px;padding:11px 32px;background:#3a6b3a;color:#fff;border:none;border-radius:28px;font-size:.82rem;font-weight:600;cursor:pointer;font-family:inherit\">\ud83d\uded2 Ordina composizione simile<\/button>\n  <button onclick=\"fciNavLb(1)\" style=\"position:absolute;right:14px;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.08);border:none;color:#2e2a24;font-size:1.6rem;cursor:pointer;border-radius:8px;width:48px;height:64px;display:flex;align-items:center;justify-content:center\">\u203a<\/button>\n<\/div>\n\n<script>\n(function(){\nvar AJAX=\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/wp-admin\\\/admin-ajax.php\",NONCE=\"08a9ded01b\";\nvar HOME_URL=\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/\";\nvar MAG={\"solidago\":{\"nome\":\"Solidago\",\"categoria\":\"riempitivo\",\"colori\":[\"solare\",\"mix\"],\"steli\":110,\"prezzo_stelo\":2,\"colore_ai\":\"#ffe957\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/14-12.png\",\"foto_ai\":\"\",\"default_sel\":false},\"statice_glicine\":{\"nome\":\"Statice glicine\",\"categoria\":\"riempitivo\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":122,\"prezzo_stelo\":1,\"colore_ai\":\"#b6a4f9\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4-13.png\",\"foto_ai\":\"\",\"default_sel\":false},\"statice_fucsia\":{\"nome\":\"Statice fucsia\",\"categoria\":\"riempitivo\",\"colori\":[\"romantico\",\"fresco\",\"mix\"],\"steli\":100,\"prezzo_stelo\":1,\"colore_ai\":\"#e12ff9\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/13-13.png\",\"foto_ai\":\"\",\"default_sel\":false},\"lstroemerie_1\":{\"nome\":\"Alstroemeria rossa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"rosso\",\"mix\"],\"steli\":125,\"prezzo_stelo\":3,\"colore_ai\":\"#dc1e1e\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/13-1.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"lstroemerie_10\":{\"nome\":\"Alstroemeria arancione\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"fresco\",\"mix\"],\"steli\":128,\"prezzo_stelo\":3,\"colore_ai\":\"#fd902b\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/10-1.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"lstroemerie_11\":{\"nome\":\"Alstroemeria rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":125,\"prezzo_stelo\":3,\"colore_ai\":\"#ffbde3\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/11-1.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"arofani_13\":{\"nome\":\"Garofano arancio\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":10,\"prezzo_stelo\":2,\"colore_ai\":\"#fd953f\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/13-15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"arofani_14\":{\"nome\":\"Garofano fucsia\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"mix\"],\"steli\":10,\"prezzo_stelo\":2,\"colore_ai\":\"#dd5fc2\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/14-15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"arofani_2\":{\"nome\":\"Garofano bianco\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"fresco\",\"bianco\",\"mix\"],\"steli\":10,\"prezzo_stelo\":2,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"arofani_3\":{\"nome\":\"Garofano giallo\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":10,\"prezzo_stelo\":2,\"colore_ai\":\"#f0f787\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/3-15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"arofani_4\":{\"nome\":\"Garofano rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":10,\"prezzo_stelo\":2,\"colore_ai\":\"#f599ab\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4-15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"arofani_8\":{\"nome\":\"Garofano pesca\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"delicato\",\"mix\"],\"steli\":10,\"prezzo_stelo\":2,\"colore_ai\":\"#e9cf95\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/8-15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"0\":{\"nome\":\"Gerbera arancione\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":12,\"prezzo_stelo\":2,\"colore_ai\":\"#ff9500\",\"desc_ai\":\"Orange Gerbera daisies (no black centers)\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/13-3.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"gerbera_gialla\":{\"nome\":\"Gerbera gialla\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":10,\"prezzo_stelo\":1.5,\"colore_ai\":\"#ffe438\",\"desc_ai\":\"yellow Gerbera daisies (no black centers)\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-3.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"gerbera_rossa\":{\"nome\":\"Gerbera rossa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"rosso\",\"mix\"],\"steli\":110,\"prezzo_stelo\":2,\"colore_ai\":\"#e40707\",\"desc_ai\":\"red Gerbera daisies (no black centers)\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-3.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"gerbera_rosa\":{\"nome\":\"Gerbera rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":100,\"prezzo_stelo\":2,\"colore_ai\":\"#fdc4c4\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/5-3.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"gerbera_rossa_copia\":{\"nome\":\"Gerbera bianca\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"bianco\",\"mix\"],\"steli\":110,\"prezzo_stelo\":2,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/6-3.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ortensia_bianca\":{\"nome\":\"Ortensia bianca\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"bianco\"],\"steli\":34,\"prezzo_stelo\":7,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/13.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ortensia_rosa\":{\"nome\":\"Ortensia Rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\"],\"steli\":100,\"prezzo_stelo\":7,\"colore_ai\":\"#ec8eaf\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"rtensie_15\":{\"nome\":\"Ortensia verde\",\"categoria\":\"protagonista\",\"colori\":[\"mix\"],\"steli\":5,\"prezzo_stelo\":7,\"colore_ai\":\"#7ec360\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"rtensie_6\":{\"nome\":\"Ortensia azzurra\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":5,\"prezzo_stelo\":7,\"colore_ai\":\"#98cdd7\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/6.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"anuncoli_4\":{\"nome\":\"Ranuncolo rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":0,\"prezzo_stelo\":2.5,\"colore_ai\":\"#f9bebe\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4-5.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":true},\"rose_white\":{\"nome\":\"Rosa Bianca\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"bianco\",\"mix\"],\"steli\":120,\"prezzo_stelo\":2.5,\"colore_ai\":\"#fafbee\",\"desc_ai\":\"avalanche variety\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/5-4.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ose_10\":{\"nome\":\"Rosa pesca\",\"categoria\":\"protagonista\",\"colori\":[],\"steli\":24,\"prezzo_stelo\":2,\"colore_ai\":\"#ffe09e\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/10-4.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ose_2\":{\"nome\":\"Rosa gialla\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":42,\"prezzo_stelo\":2,\"colore_ai\":\"#f7f022\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-4.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ose_3\":{\"nome\":\"Rosa arancione\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":45,\"prezzo_stelo\":2,\"colore_ai\":\"#f98315\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/3-4.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ose_4\":{\"nome\":\"Rosa rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":38,\"prezzo_stelo\":2,\"colore_ai\":\"#f2b5b5\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4-4.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ose_7\":{\"nome\":\"Rosa fucsia\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"fresco\",\"mix\"],\"steli\":120,\"prezzo_stelo\":2,\"colore_ai\":\"#e82c99\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/7-4.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ose_1\":{\"nome\":\"Rosa rossa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"rosso\",\"mix\"],\"steli\":45,\"prezzo_stelo\":3,\"colore_ai\":\"#c62424\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-4.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"santini_froggy\":{\"nome\":\"Santino froggy\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"mix\"],\"steli\":110,\"prezzo_stelo\":2,\"colore_ai\":\"#10bc33\",\"desc_ai\":\"Petite green Santini chrysanthemums (button-sized)\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/8-12.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"antini_2\":{\"nome\":\"Santino bianco\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"fresco\",\"delicato\",\"bianco\",\"mix\"],\"steli\":50,\"prezzo_stelo\":3,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"tiny Daisy Spray flowers with flat disc center, densely clustered on branching stems\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-2.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"antini_rosa\":{\"nome\":\"Santino rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"fresco\",\"delicato\",\"mix\"],\"steli\":27,\"prezzo_stelo\":3,\"colore_ai\":\"#fb7ea4\",\"desc_ai\":\"tiny Daisy Spray flowers with flat disc center, densely clustered on branching stems\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/9-2.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"4_copia\":{\"nome\":\"Tulipano bianco\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"bianco\",\"mix\"],\"steli\":0,\"prezzo_stelo\":2.2,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-14.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":true},\"4_copia2\":{\"nome\":\"Tulipano rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":0,\"prezzo_stelo\":2.2,\"colore_ai\":\"#ffbdbd\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4-14.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":true},\"4_copia4\":{\"nome\":\"Tulipano arancione\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":0,\"prezzo_stelo\":2.2,\"colore_ai\":\"#e96949\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-14.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":true},\"4_copia5\":{\"nome\":\"Tulipano fucsia\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"mix\"],\"steli\":0,\"prezzo_stelo\":2.2,\"colore_ai\":\"#d86fac\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/14-14.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":true},\"4_copia7\":{\"nome\":\"Tulipano rosa\\\/verde\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"fresco\",\"mix\"],\"steli\":0,\"prezzo_stelo\":2.2,\"colore_ai\":\"#ff9500\",\"desc_ai\":\"Tulipan- Green Wave pink and green\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/7-14.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":true},\"4_copia8\":{\"nome\":\"Tulipano Giallo\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":0,\"prezzo_stelo\":2.2,\"colore_ai\":\"#f5ed05\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/3-14.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":true},\"tatice_1\":{\"nome\":\"Statice viola\",\"categoria\":\"riempitivo\",\"colori\":[\"fresco\",\"mix\"],\"steli\":110,\"prezzo_stelo\":1,\"colore_ai\":\"#6765d2\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-13.png\",\"foto_ai\":\"\",\"default_sel\":false},\"tatice_2\":{\"nome\":\"Statice bianco\",\"categoria\":\"riempitivo\",\"colori\":[\"fresco\",\"delicato\",\"bianco\"],\"steli\":110,\"prezzo_stelo\":1,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-13.png\",\"foto_ai\":\"\",\"default_sel\":false},\"osellina_1\":{\"nome\":\"Rosellina rosso scuro\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"rosso\",\"mix\"],\"steli\":17,\"prezzo_stelo\":4,\"colore_ai\":\"#a32424\",\"desc_ai\":\"Spray Roses\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":true,\"fuori_stagione\":false},\"osellina_2\":{\"nome\":\"Rosellina pesca\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":19,\"prezzo_stelo\":4,\"colore_ai\":\"#fdcc86\",\"desc_ai\":\"Spray Roses\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"osellina_4\":{\"nome\":\"Rosellina rosa\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":19,\"prezzo_stelo\":4,\"colore_ai\":\"#f7caca\",\"desc_ai\":\"Spray Roses\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4-11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"osellina_6\":{\"nome\":\"Rosellina rossa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"solare\",\"rosso\",\"mix\"],\"steli\":17,\"prezzo_stelo\":4,\"colore_ai\":\"#ff3333\",\"desc_ai\":\"Spray Roses\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/6-11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"osellina_7\":{\"nome\":\"Rosellina bianca\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"bianco\",\"mix\"],\"steli\":18,\"prezzo_stelo\":4,\"colore_ai\":\"#f3fff0\",\"desc_ai\":\"Spray Roses\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/7-11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"osellina_8\":{\"nome\":\"Rosellina fucsia\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"mix\"],\"steli\":18,\"prezzo_stelo\":4,\"colore_ai\":\"#f542bc\",\"desc_ai\":\"Spray Roses\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/8-11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"osellina_9\":{\"nome\":\"Rosellina gialla\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":29,\"prezzo_stelo\":5,\"colore_ai\":\"#ffd561\",\"desc_ai\":\"Spray Roses\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/9-11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"eonia_1\":{\"nome\":\"Peonia burgundy\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"rosso\",\"mix\"],\"steli\":32,\"prezzo_stelo\":8,\"colore_ai\":\"#7c2727\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-9.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"eonia_10\":{\"nome\":\"Peonia rosa\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":110,\"prezzo_stelo\":8,\"colore_ai\":\"#ffc2c2\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/10-9.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"eonia_13\":{\"nome\":\"Peonia fucsia\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"mix\"],\"steli\":110,\"prezzo_stelo\":8,\"colore_ai\":\"#d684e1\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/13-9.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":true,\"fuori_stagione\":false},\"eonia_2\":{\"nome\":\"Peonia bianca\",\"categoria\":\"protagonista\",\"colori\":[\"bianco\",\"mix\"],\"steli\":110,\"prezzo_stelo\":8,\"colore_ai\":\"#fcfcfc\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-9.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"eonia_9\":{\"nome\":\"Peonia corallo\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"rosso\"],\"steli\":120,\"prezzo_stelo\":8,\"colore_ai\":\"#ff6b6b\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/9-9.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":true,\"fuori_stagione\":false},\"ix_1\":{\"nome\":\"Iperico rosso\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"solare\",\"rosso\"],\"steli\":23,\"prezzo_stelo\":5,\"colore_ai\":\"#941810\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-12.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_13\":{\"nome\":\"Eryngium\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"mix\"],\"steli\":110,\"prezzo_stelo\":5,\"colore_ai\":\"#555ae2\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/13-10.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":true,\"fuori_stagione\":false},\"ix_13_2\":{\"nome\":\"Iris blu\",\"categoria\":\"protagonista\",\"colori\":[\"mix\"],\"steli\":0,\"prezzo_stelo\":2,\"colore_ai\":\"#513fd9\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/5-12.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":true,\"fuori_stagione\":true},\"ix_14\":{\"nome\":\"wax flower rosa\",\"categoria\":\"riempitivo\",\"colori\":[\"romantico\",\"delicato\"],\"steli\":115,\"prezzo_stelo\":5,\"colore_ai\":\"#eec3c3\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/14-10.png\",\"foto_ai\":\"\",\"default_sel\":false},\"ix_15\":{\"nome\":\"Iperico rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\"],\"steli\":110,\"prezzo_stelo\":5,\"colore_ai\":\"#fbbcbc\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/15-12.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_3\":{\"nome\":\"wax flower bianco\",\"categoria\":\"riempitivo\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":110,\"prezzo_stelo\":5,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/3-10.png\",\"foto_ai\":\"\",\"default_sel\":false},\"ix_3_2\":{\"nome\":\"Girasole grande\",\"categoria\":\"protagonista\",\"colori\":[\"solare\",\"mix\"],\"steli\":110,\"prezzo_stelo\":4,\"colore_ai\":\"#ffdd00\",\"desc_ai\":\"big sunflower dark center\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/3-12.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_8_2\":{\"nome\":\"Margherita bianca\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"fresco\",\"mix\"],\"steli\":110,\"prezzo_stelo\":2,\"colore_ai\":\"#f7f7f7\",\"desc_ai\":\"Spray Daisy Chrysanthemum\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/8-10.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_10_2\":{\"nome\":\"Lilium Rosa\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":20,\"prezzo_stelo\":8,\"colore_ai\":\"#f4bdcb\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/10-10.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_2_2\":{\"nome\":\"Lilium Bianco\",\"categoria\":\"protagonista\",\"colori\":[\"delicato\",\"bianco\",\"mix\"],\"steli\":20,\"prezzo_stelo\":8,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2-12.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_7_2\":{\"nome\":\"Lilium aracione\",\"categoria\":\"protagonista\",\"colori\":[],\"steli\":0,\"prezzo_stelo\":8,\"colore_ai\":\"#fa8500\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/7-10.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":true,\"fuori_stagione\":false},\"arofano_1\":{\"nome\":\"Garofano Rosso\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"rosso\",\"mix\"],\"steli\":120,\"prezzo_stelo\":2,\"colore_ai\":\"#cf0c0c\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/1-15.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"nthurium_1\":{\"nome\":\"Anthurium Midori\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\"],\"steli\":10,\"prezzo_stelo\":5,\"colore_ai\":\"#aad963\",\"desc_ai\":\"light green\\\/apple green spathe with a pink spadix fading towards the base\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/1-2.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"nthurium_13\":{\"nome\":\"Anthurium Pistache\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":10,\"prezzo_stelo\":5,\"colore_ai\":\"#afd742\",\"desc_ai\":\"lime\\\/acid green spathe with a pale yellow spadix.\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/13-1.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"nthurium_15\":{\"nome\":\"Anthurium Rosso\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"solare\",\"rosso\"],\"steli\":10,\"prezzo_stelo\":5,\"colore_ai\":\"#d60000\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/15-1.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"nthurium_3\":{\"nome\":\"Anthurium Rosa\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"delicato\",\"mix\"],\"steli\":10,\"prezzo_stelo\":5,\"colore_ai\":\"#f4bebe\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/3-2.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"isianthus_11\":{\"nome\":\"Lisianthus Rosa\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"delicato\",\"mix\"],\"steli\":10,\"prezzo_stelo\":3,\"colore_ai\":\"#fbc6c6\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/11.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"isianthus_2\":{\"nome\":\"Lisianthus Bianco\",\"categoria\":\"protagonista\",\"colori\":[\"delicato\",\"bianco\",\"mix\"],\"steli\":10,\"prezzo_stelo\":3,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/2.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"isianthus_7\":{\"nome\":\"Lisianthus Glicine\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"mix\"],\"steli\":10,\"prezzo_stelo\":3,\"colore_ai\":\"#dbd0fb\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/7.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_1_2\":{\"nome\":\"Aspedistria\",\"categoria\":\"verde\",\"colori\":[\"tutti\"],\"steli\":110,\"prezzo_stelo\":2,\"colore_ai\":\"#497033\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/1-1.png\",\"foto_ai\":\"\",\"default_sel\":false},\"ix_3_3\":{\"nome\":\"Ruscus\",\"categoria\":\"verde\",\"colori\":[\"tutti\"],\"steli\":110,\"prezzo_stelo\":2,\"colore_ai\":\"#1b4d00\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/3-1.png\",\"foto_ai\":\"\",\"default_sel\":false},\"ix_4\":{\"nome\":\"Eucalipto\",\"categoria\":\"verde\",\"colori\":[\"tutti\"],\"steli\":230,\"prezzo_stelo\":2,\"colore_ai\":\"#b9dac3\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/4-1.png\",\"foto_ai\":\"\",\"default_sel\":false},\"ix_6_2\":{\"nome\":\"Gypsophila\",\"categoria\":\"riempitivo\",\"colori\":[\"tutti\"],\"steli\":220,\"prezzo_stelo\":3,\"colore_ai\":\"#ffffff\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/6-1.png\",\"foto_ai\":\"\",\"default_sel\":false},\"ix_elce_cuir\":{\"nome\":\"Felce Cuir\",\"categoria\":\"verde\",\"colori\":[\"tutti\"],\"steli\":1220,\"prezzo_stelo\":2,\"colore_ai\":\"#4d853d\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Felce-cuir_1_250x250.jpg\",\"foto_ai\":\"\",\"default_sel\":true},\"ix_11_2\":{\"nome\":\"Girasole\",\"categoria\":\"protagonista\",\"colori\":[\"romantico\",\"solare\",\"mix\"],\"steli\":120,\"prezzo_stelo\":3,\"colore_ai\":\"#ffe01a\",\"desc_ai\":\"medium sunflowers dark center\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/11-12.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false},\"ix_6_3\":{\"nome\":\"Iperico verde\",\"categoria\":\"protagonista\",\"colori\":[\"fresco\",\"mix\"],\"steli\":120,\"prezzo_stelo\":4,\"colore_ai\":\"#497a00\",\"desc_ai\":\"\",\"foto\":\"https:\\\/\\\/www.domyflor.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/6-10.png\",\"foto_ai\":\"\",\"default_sel\":false,\"altezza_cm\":0,\"stagionale\":false,\"fuori_stagione\":false}};\nvar CONF_PCTS={\"bouquet\":0.1,\"cesto\":0.15,\"cilindro\":0.12};\nvar TOKENS=3;\nvar AI_PROVIDER=\"google\";\nvar AI_EXTRA_POS=\"\";\nvar AI_EXTRA_NEG=\"\";\nvar WM_LINE1=\"\";\nvar WM_LINE2=\"\";\nvar PREZZI_BASE={bouquet:30, cesto:45, cilindro:40};\n\nvar PAL=[{\"id\":\"romantico\",\"nome\":\"Romantico\",\"sub\":\"Passione e tenerezza\",\"swatches\":[\"#B5284A\",\"#E8708A\",\"#F2C4CE\",\"#7A1535\"],\"en\":\"romantic blush, deep rose, crimson and dusty pink\",\"fiori_numero\":false},{\"id\":\"solare\",\"nome\":\"Solare\",\"sub\":\"Energia e gioia\",\"swatches\":[\"#F5A623\",\"#F07B27\",\"#FBD88B\",\"#E85D20\"],\"en\":\"warm golden yellow, amber, burnt orange and saffron\",\"fiori_numero\":false},{\"id\":\"fresco\",\"nome\":\"Fresco\",\"sub\":\"Eleganza e leggerezza\",\"swatches\":[\"#8B9ED6\",\"#C5B8E8\",\"#D8E4F2\",\"#5B6DB8\"],\"en\":\"soft blue, periwinkle, ice lavender and sky\",\"fiori_numero\":false},{\"id\":\"delicato\",\"nome\":\"Delicato\",\"sub\":\"Dolcezza e grazia\",\"swatches\":[\"#F2B5C0\",\"#EED5E0\",\"#C8E8D8\",\"#F5DEB3\"],\"en\":\"pastel blush, soft mint, peachy cream and baby pink\",\"fiori_numero\":false},{\"id\":\"bianco\",\"nome\":\"Bianco Puro\",\"sub\":\"Purezza e semplicit\u00e0\",\"swatches\":[\"#FDFAF5\",\"#F5EFE3\",\"#EDE3D0\",\"#DDD0B8\"],\"en\":\"pure white, ivory, warm cream and soft champagne\",\"fiori_numero\":false},{\"id\":\"rosso\",\"nome\":\"Rosso Passione\",\"sub\":\"Intensit\u00e0 e forza\",\"swatches\":[\"#C0000A\",\"#E8001A\",\"#8B0010\",\"#3A0008\"],\"en\":\"intense crimson, scarlet red, deep burgundy and ruby\",\"fiori_numero\":false},{\"id\":\"mix\",\"nome\":\"Mix di Colori\",\"sub\":\"Tutti i fiori disponibili\",\"swatches\":[\"#E8708A\",\"#F5A623\",\"#8B9ED6\",\"#4a7a4a\"],\"en\":\"vibrant multicolor mix, all colors combined\",\"fiori_numero\":false}];\nvar PREZZI_BASE={bouquet:30, cesto:45, cilindro:40};\n\nfunction getBudgets(){\n  var base=PREZZI_BASE[S.contenitore]||30;\n  var premium=Math.ceil((base*1.5)\/5)*5;\n  var deluxe=Math.ceil((base*2.5)\/5)*5;\n  return[\n    {v:base,    s:'S', l:'Composizione Standard'},\n    {v:premium, s:'M', l:'Composizione Premium'},\n    {v:deluxe,  s:'L', l:'Composizione Deluxe'},\n    {v:0,       s:'\u270e', l:'Importo personalizzato'},\n  ];\n}\n\/\/ BUDGETS inizializzato dopo S (vedi sotto)\nvar MAX={protagonista:5,verde:3,riempitivo:2};\nvar MIN_PROT=2; \/\/ minimo protagonisti per procedere\nfunction getMaxProt(){return S.fioriNumero?3:MAX.protagonista;}\nfunction getMinProt(){return S.fioriNumero?1:MIN_PROT;}\nvar TRAD={\n  'santin':   'santini chrysanthemums (small button-like flowers, flat disc center, short rounded petals radiating outward, clustered blooms)',\n  'crisante': 'chrysanthemums (full rounded blooms, dense layered petals)',\n  'ortensi':  'hydrangeas (large rounded clusters of tiny four-petaled florets, soft pom-pom shape)',\n  'rose':     'roses (classic layered spiral petals, high-centered bloom)',\n  'peoni':    'peonies (extremely full, many-petaled, lush rounded blooms)',\n  'tulipan':  'tulips (smooth cup-shaped bloom, six broad petals, upright stem)',\n  'girasol':  'sunflowers (large flat disc center, long broad yellow ray petals)',\n  'gerber':   'gerbera daisies (large single flower, long flat petals radiating from round center disc)',\n  'ranuncol': 'ranunculus (tightly layered tissue-paper-thin petals, perfectly rounded bloom)',\n  'lisianthus':'lisianthus (ruffled cup-shaped petals, resembles a rose)',\n  'garofan':  'carnations (fringed ruffled petals, dense layered clove-scented bloom)',\n  'margherit':'daisies (simple white ray petals, yellow button center)',\n  'iris':     'iris (distinctive falls and standards, bearded or smooth)',\n  'lilium':   'oriental lilies (large trumpet-shaped, six prominent petals with visible stamens)',\n  'orchid':   'orchids (delicate bilateral symmetry, prominent lip petal)',\n  'fresi':    'freesias (small funnel-shaped fragrant flowers on arching stems)',\n  'solidago': 'solidago goldenrod (tiny yellow florets on arching sprays)',\n  'felce':    'leatherleaf fern (dark green, feathery fronds)',\n  'eucalipto':'eucalyptus (silvery-green round leaves on long stems)',\n  'ruscus':   'ruscus (small dark oval leaf-like cladodes)',\n  'pittosporo':'pittosporum (small dark green waxy oval leaves)',\n  'nebbiolina':\"gypsophila baby's breath (tiny white star-shaped delicate florets)\",\n  'mimosa':   'mimosa (tiny fluffy bright yellow pompom florets on feathery branches)',\n};\nfunction tradEN(nome,mag_entry){\n  \/\/ Prima cerca nel dizionario il nome botanico base\n  var base=nome;\n  var n=nome.toLowerCase();\n  for(var k in TRAD){if(n.indexOf(k)!=-1){base=TRAD[k];break;}}\n  \/\/ desc_ai si AGGIUNGE come qualificatore (es. \"roses, avalanche variety white\")\n  if(mag_entry&&mag_entry.desc_ai&&mag_entry.desc_ai.trim().length>3){\n    return base+', '+mag_entry.desc_ai.trim();\n  }\n  return base;\n}\nfunction getRefImages(){\n  \/\/ Solo per Nano Banana 2 \u2014 raccoglie foto_ai dei fiori selezionati (max 10)\n  var urls=[];\n  S.prot.forEach(function(id){\n    var f=MAG[id];\n    if(f&&f.foto_ai&&f.foto_ai.length>8&&urls.length<10) urls.push(f.foto_ai);\n  });\n  S.verde.forEach(function(id){\n    var v=MAG[id];\n    if(v&&v.foto_ai&&v.foto_ai.length>8&&urls.length<10) urls.push(v.foto_ai);\n  });\n  return urls;\n}\n\nvar S={step:1,pal:null,prot:[],verde:[],riemp:[],budget:null,contenitore:'bouquet',aiImg:null,aiImgId:0,fioriNumero:false,steliProt:{}};\nvar BUDGETS=getBudgets(); \/\/ inizializzato dopo S\nObject.entries(MAG).forEach(function(e){\n  var id=e[0],f=(typeof e[1]==='object')?e[1]:{};\n  if(f.categoria==='verde'&&f.default_sel) S.verde.push(id);\n});\nif(!S.verde.length){\n  var vkeys=Object.keys(MAG).filter(function(k){return MAG[k].categoria==='verde';});\n  if(vkeys.length) S.verde.push(vkeys[0]);\n}\n\nfunction goStep(n){\n  S.step=n;\n  document.querySelectorAll('.fc-pane').forEach(function(p,i){p.classList.toggle('active',i+1===n);});\n  [1,2,3,4].forEach(function(i){\n    var d=document.getElementById('fsd'+i);if(!d)return;\n    d.classList.remove('active','done');\n    if(i<n){d.classList.add('done');var nm=d.querySelector('.fc-sb-step-num');if(nm)nm.textContent='';}\n    else if(i===n){d.classList.add('active');var nm=d.querySelector('.fc-sb-step-num');if(nm)nm.textContent=i;}\n    else{var nm=d.querySelector('.fc-sb-step-num');if(nm)nm.textContent=i;}\n  });\n  var wrap=document.getElementById('fc-wrap');\n  if(wrap) wrap.scrollIntoView({behavior:'smooth',block:'start'});\n  updPreview();updBadge();\n}\nfunction renderPal(){\n  var g=document.getElementById('fc-pgrid');g.innerHTML='';\n  PAL.forEach(function(p){\n    var div=document.createElement('div');\n    div.className='fc-pal'+(S.pal===p.id?' sel':'');div.id='fpal-'+p.id;\n    var sw=p.swatches.map(function(c){return'<div class=\"fc-pal-sw\" style=\"background:'+c+'\"><\/div>';}).join('');\n    div.innerHTML='<div class=\"fc-pal-ck\">\u2713<\/div><div class=\"fc-pal-swatches\">'+sw+'<\/div>'\n      +'<div class=\"fc-pal-info\"><div class=\"fc-pal-name\">'+p.nome+'<\/div><div class=\"fc-pal-sub\">'+p.sub+'<\/div><\/div>';\n    div.addEventListener('click',function(){selPal(p.id);});\n    g.appendChild(div);\n  });\n}\nfunction selPal(id){\n  S.pal=id;S.prot=[];S.riemp=[];S.verde=S.verde||[];S.steliProt={};\n  var palObj=PAL.find(function(p){return p.id===id;});\n  S.fioriNumero=!!(palObj&&(palObj.fiori_numero||palObj['fiori_numero']));\n  document.querySelectorAll('.fc-pal').forEach(function(c){c.classList.remove('sel');});\n  var el=document.getElementById('fpal-'+id);if(el)el.classList.add('sel');\n  document.getElementById('fc-b1').disabled=false;\n  var b2=document.getElementById('fc-b2');if(b2) b2.disabled=true;\n  fciHide();\n  updPreview();updSbNav();updCounters();\n}\nfunction renderStep2(){\n  \/\/ Aggiorna label limiti in base alla modalit\u00e0\n  var lbl=document.getElementById('fc-prot-limits');\n  if(lbl) lbl.textContent=S.fioriNumero?'(min 1, max 3)':'(min 2, max 5)';\n  renderFlowerGrid('protagonista','fc-grid-prot');\n  renderVerdRiempGrid();\n  updCounters();\n}\nfunction renderFlowerGrid(cat,gridId){\n  var g=document.getElementById(gridId);if(!g)return;g.innerHTML='';\n  var isMix=(S.pal==='mix');\n  var isFN=(S.fioriNumero&&cat==='protagonista');\n  var items=Object.entries(MAG).filter(function(e){\n    var f=e[1];if(f.categoria!==cat)return false;\n    if(f.fuori_stagione) return false; \/\/ nascosto se fuori stagione\n    if(!f.steli||parseInt(f.steli)<=0)return false;\n    if(!f.colori||!f.colori.length)return false;\n    if(f.colori.includes('tutti'))return true;\n    if(isMix){\n      \/\/ Mix: mostra solo fiori con almeno una palette normale assegnata (non palette-ID speciali senza 'tutti')\n      var palIds=PAL.map(function(p){return p.id;});\n      return f.colori.some(function(c){return palIds.indexOf(c)!==-1;});\n    }\n    return f.colori.includes(S.pal);\n  });\n  if(!items.length){g.innerHTML='<div class=\"fc-empty\">Nessun elemento per questa palette<\/div>';return;}\n  var sel=cat==='protagonista'?S.prot:(cat==='verde'?S.verde:S.riemp);\n  var maxR=cat==='protagonista'?getMaxProt():MAX[cat];\n  items.forEach(function(e){\n    var id=e[0],f=e[1],isSel=sel.includes(id),atMax=sel.length>=maxR&&!isSel;\n    var div=document.createElement('div');\n    div.className='fc-fcard'+(isSel?' sel':'')+(atMax?' disabled':'')+(isFN&&isSel?' fn-sel':'');div.id='ffc-'+id;\n    var steli=S.steliProt[id]||1;\n    var spinnerHtml='';\n    if(isFN&&isSel){\n      spinnerHtml='<div class=\"fc-steli-wrap\">'\n        +'<button type=\"button\" class=\"fc-steli-btn fc-steli-dec\" data-id=\"'+id+'\">\u2212<\/button>'\n        +'<input type=\"number\" class=\"fc-steli-inp\" data-id=\"'+id+'\" value=\"'+steli+'\" min=\"1\" max=\"100\">'\n        +'<span class=\"fc-steli-lbl\">steli<\/span>'\n        +'<button type=\"button\" class=\"fc-steli-btn fc-steli-inc\" data-id=\"'+id+'\">+<\/button>'\n        +'<\/div>';\n    }\n    div.innerHTML='<div style=\"position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;background:var(--botanical);color:#fff;font-size:.65rem;'+(isSel?'display:flex':'display:none')+';align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.2)\">\u2713<\/div>'\n      +(f.stagionale?'<div class=\"fc-stag-dot\" title=\"Fiore stagionale\"><\/div>':'')\n      +(f.foto?'<img src=\"'+f.foto+'\" alt=\"'+f.nome+'\" loading=\"lazy\" decoding=\"async\" class=\"fc-fcard-img\" onerror=\"if(!this.dataset.retry){this.dataset.retry=1;var s=this.src;this.src=\\\"\\\";this.src=s;}else{this.style.display=\\\"none\\\";this.nextElementSibling.style.display=\\\"flex\\\";}\" style=\"width:100%;height:84px;object-fit:cover;display:block;background:var(--linen)\"><div class=\"fph\" style=\"display:none;align-items:center;justify-content:center;font-size:1.8rem\">&#127800;<\/div>':'<div style=\"width:100%;height:84px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;background:var(--linen)\">&#127800;<\/div>')\n      +'<div style=\"padding:8px 9px 7px\"><div style=\"font-size:.73rem;font-weight:500;color:var(--bark);line-height:1.3\">'+f.nome+'<\/div><\/div>'\n      +spinnerHtml;\n    \/\/ Un solo listener \u2014 gestisce sia toggle selezione che spinner\n    (function(divEl, fid, isSel_fn, atMax_fn){\n      divEl.addEventListener('click', function(ev){\n        \/\/ Spinner \u2212\/+ buttons\n        var btn=ev.target.closest('.fc-steli-btn');\n        if(btn){\n          ev.stopPropagation();\n          var cur=parseInt(S.steliProt[fid]||1);\n          if(btn.classList.contains('fc-steli-inc')) cur=Math.min(100,cur+1);\n          else cur=Math.max(1,cur-1);\n          S.steliProt[fid]=cur;\n          var inpEl=divEl.querySelector('.fc-steli-inp');\n          if(inpEl) inpEl.value=cur;\n          updSteliTot();updCbox();updPreview();\n          return;\n        }\n        \/\/ Input numerico diretto\n        var inp=ev.target.closest('.fc-steli-inp');\n        if(inp){\n          ev.stopPropagation();\n          return; \/\/ gestito da change\n        }\n        \/\/ Toggle selezione (solo se non al max)\n        if(!atMax_fn) togFlower(fid,cat);\n      });\n      \/\/ Input change separato\n      var inpEl=divEl.querySelector('.fc-steli-inp');\n      if(inpEl){\n        inpEl.addEventListener('change',function(){\n          var v=Math.max(1,Math.min(100,parseInt(this.value)||1));\n          this.value=v;\n          S.steliProt[fid]=v;\n          updSteliTot();updCbox();updPreview();\n        });\n        inpEl.addEventListener('click',function(ev){ev.stopPropagation();});\n      }\n    })(div, id, isSel, atMax);\n    g.appendChild(div);\n  });\n}\nfunction renderVerdRiempGrid(){\n  var g=document.getElementById('fc-grid-verd-riemp');if(!g)return;g.innerHTML='';\n  renderFlowerGridInto('verde',g);renderFlowerGridInto('riempitivo',g);\n  if(!g.children.length)g.innerHTML='<div class=\"fc-empty\">Nessun elemento per questa palette<\/div>';\n}\nfunction renderFlowerGridInto(cat,g){\n  var isMix=(S.pal==='mix');\n  var items=Object.entries(MAG).filter(function(e){\n    var f=e[1];if(f.categoria!==cat)return false;\n    if(f.fuori_stagione) return false; \/\/ nascosto se fuori stagione\n    if(!f.steli||parseInt(f.steli)<=0)return false;\n    if(!f.colori||!f.colori.length)return false;\n    if(f.colori.includes('tutti'))return true;\n    if(isMix){\n      var palIds=PAL.map(function(p){return p.id;});\n      return f.colori.some(function(c){return palIds.indexOf(c)!==-1;});\n    }\n    return f.colori.includes(S.pal);\n  });\n  var sel=cat==='verde'?S.verde:S.riemp,maxR=MAX[cat],isVerde=cat==='verde';\n  var accent=isVerde?'var(--botanical)':'#7a4a9a';\n  items.forEach(function(e){\n    var id=e[0],f=e[1],isSel=sel.includes(id),atMax=sel.length>=maxR&&!isSel;\n    var div=document.createElement('div');\n    div.className='fc-fcard'+(isSel?' sel':'')+(atMax?' disabled':'');\n    if(isSel)div.style.borderColor=accent;div.id='ffc-'+id;\n    div.innerHTML='<div style=\"position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;background:'+accent+';color:#fff;font-size:.65rem;'+(isSel?'display:flex':'display:none')+';align-items:center;justify-content:center\">\u2713<\/div>'\n      +(f.foto?'<img src=\"'+f.foto+'\" alt=\"'+f.nome+'\" loading=\"lazy\" decoding=\"async\" class=\"fc-fcard-img\" onerror=\"if(!this.dataset.retry){this.dataset.retry=1;var s=this.src;this.src=\\\"\\\";this.src=s;}else{this.style.display=\\\"none\\\";this.nextElementSibling.style.display=\\\"flex\\\";}\" style=\"width:100%;height:84px;object-fit:cover;display:block;background:var(--linen)\"><div class=\"fph\" style=\"display:none;align-items:center;justify-content:center;font-size:1.8rem\">&#127800;<\/div>':'<div style=\"width:100%;height:84px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;background:'+(isVerde?'#e8f0e0':'#f0e8f5')+'\">'+(isVerde?'&#127807;':'&#10022;')+'<\/div>')\n      +'<div style=\"padding:7px 9px 6px\"><div style=\"font-size:.73rem;font-weight:500;color:var(--bark);line-height:1.3\">'+f.nome+'<\/div>'\n      +'<div style=\"font-size:.6rem;color:'+accent+';margin-top:1px\">'+(isVerde?'verde':'riempitivo')+'<\/div><\/div>';\n    if(!atMax)div.addEventListener('click',function(){togFlower(id,cat);});\n    g.appendChild(div);\n  });\n}\nfunction togFlower(id,cat){\n  var arr=cat==='protagonista'?S.prot:(cat==='verde'?S.verde:S.riemp);\n  var maxR=cat==='protagonista'?getMaxProt():MAX[cat];\n  var i=arr.indexOf(id);\n  if(i>-1){\n    if(cat==='verde'&&arr.length<=1){toast('Tieni almeno un verde decorativo');return;}\n    arr.splice(i,1);\n    if(cat==='protagonista'&&S.fioriNumero) delete S.steliProt[id];\n  } else {\n    if(arr.length>=maxR){toast('Massimo '+maxR+' per questa categoria');return;}\n    arr.push(id);\n    if(cat==='protagonista'&&S.fioriNumero) S.steliProt[id]=S.steliProt[id]||1;\n  }\n  updSteliTot();updCounters();updBtn2();updPreview();updCbox();\n  if(cat==='protagonista')renderFlowerGrid('protagonista','fc-grid-prot');\n  else renderVerdRiempGrid();\n}\nfunction updCounters(){\n  var el=document.getElementById('fc-cnt-p');\n  if(el){\n    el.textContent=S.prot.length;\n    el.style.background=S.prot.length>=getMinProt()?'var(--botanical)':'#c44040';\n  }\n}\nfunction updSteliTot(){\n  \/\/ Controlla limite 150 steli in modalit\u00e0 fiori a numero\n  if(!S.fioriNumero) return;\n  var tot=0;\n  S.prot.forEach(function(id){tot+=parseInt(S.steliProt[id]||1);});\n  var warn=document.getElementById('fc-steli-warn');\n  if(tot>150){\n    if(!warn){\n      warn=document.createElement('div');warn.id='fc-steli-warn';\n      warn.style.cssText='background:#fff0f0;border:1px solid #e55;border-radius:8px;padding:9px 12px;font-size:.75rem;color:#c00;margin-top:8px;line-height:1.5';\n      warn.textContent='\u26a0\ufe0f Hai superato i 150 steli \u2014 contatta il fiorista per un preventivo personalizzato, il configuratore non pu\u00f2 gestire pi\u00f9 di 150 steli a composizione.';\n      var grid=document.getElementById('fc-grid-prot');\n      if(grid&&grid.parentNode) grid.parentNode.insertBefore(warn,grid.nextSibling);\n    }\n    document.getElementById('fc-b2').disabled=true;\n  } else {\n    if(warn) warn.remove();\n    updBtn2();\n  }\n}\nfunction updBtn2(){\n  var ok=S.prot.length>=getMinProt();\n  if(S.fioriNumero){\n    var tot=0;S.prot.forEach(function(id){tot+=parseInt(S.steliProt[id]||1);});\n    ok=ok&&tot<=150;\n  }\n  document.getElementById('fc-b2').disabled=!ok;\n  updSbNav();\n  fciUpdate();\n}\n\n\/\/ \u2500\u2500 Ispirazione \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar fciTimer=null;\nfunction fciUpdate(){\n  clearTimeout(fciTimer);\n  if(!S.prot||S.prot.length<1){\n    fciHide();return;\n  }\n  fciTimer=setTimeout(fciLoad,450);\n}\nfunction fciHide(){\n  var a=document.getElementById('fc-insp');\n  var b=document.getElementById('fc-insp');\n  if(a) a.style.display='none';\n  if(b) b.style.display='none';\n}\nfunction fciShimmer(){\n  var sh='<div style=\"padding-top:24px;border-top:2px dashed var(--linen-dk)\">'\n    +'<p class=\"fci-title\">Ispirati dalle nostre <em>creazioni<\/em><\/p>'\n    +'<p class=\"fci-sub\">Composizioni realizzate con fiori simili ai tuoi<\/p>'\n    +'<div class=\"fci-shimmer\">';\n  for(var i=0;i<4;i++){\n    sh+='<div class=\"fci-sh\">'\n      +'<div class=\"fci-sh-img\"><\/div>'\n      +'<div class=\"fci-sh-ln\"><\/div>'\n      +'<div class=\"fci-sh-ln s\"><\/div>'\n      +'<\/div>';\n  }\n  sh+='<\/div><\/div>';\n  return sh;\n}\nfunction fciLoad(){\n  var nomi=[];\n  for(var i=0;i<S.prot.length;i++){\n    var f=MAG[S.prot[i]];\n    nomi.push(f?f.nome:S.prot[i]);\n  }\n  \/\/ Un solo contenitore \u2014 lo stesso per step 2, 3 e 4\n  var a=document.getElementById('fc-insp');\n  var b=document.getElementById('fc-insp');\n  var shimHTML=fciShimmer();\n  if(a){a.style.display='block';a.innerHTML=shimHTML;}\n  if(b){b.style.display='block';b.innerHTML=shimHTML;}\n  var fd=new FormData();\n  fd.append('action','fc_galleria_simili');\n  fd.append('nonce',NONCE);\n  fd.append('protagonisti',JSON.stringify(nomi));\n  fd.append('palette',S.pal||'');\n  fd.append('limit','5');\n  fetch(AJAX,{method:'POST',body:fd})\n    .then(function(r){return r.json();})\n    .then(function(d){\n      if(d.success&&d.data.html){\n        if(a){a.innerHTML=d.data.html;fciBindBtns(a);}\n        if(b){b.innerHTML=d.data.html;fciBindBtns(b);}\n      } else {\n        fciHide();\n      }\n    })\n    .catch(function(){fciHide();});\n}\n\n\/\/ Lightbox ispirazione\n\/\/ \u2500\u2500 Lightbox ispirazione (logica identica alla galleria pubblica) \u2500\u2500\nvar _fciLbData=[];var _fciLbIdx=0;\n\/\/ \u2500\u2500 Funzione condivisione unificata per tutte le lightbox \u2500\u2500\nwindow.fcOpenUnifiedShare=function(slug){\n  var shopName='Cammarota Fiori';\n  if(!slug){\n    alert('Questa composizione non ha ancora una pagina di condivisione.');\n    return;\n  }\n  var landingUrl=HOME_URL+'composizioni-ai\/'+slug+'\/';\n  var shareText='Guarda questa composizione floreale'+(shopName?' di '+shopName:'')+' \ud83c\udf38';\n  var enc=encodeURIComponent(landingUrl);\n  var txt=encodeURIComponent(shareText+'\\n'+landingUrl);\n  var txtNoUrl=encodeURIComponent(shareText);\n  var oldOv=document.getElementById('fc-unified-share-overlay');\n  if(oldOv) oldOv.remove();\n  var overlay=document.createElement('div');\n  overlay.id='fc-unified-share-overlay';\n  overlay.className='fc-sm-overlay';\n  overlay.addEventListener('click',function(e){if(e.target===overlay)fcCloseUnifiedShare();});\n  var modal=document.createElement('div');\n  modal.className='fc-sm';\n  modal.innerHTML=\n    '<div class=\"fc-sm-head\"><span>Condividi questa composizione \ud83c\udf38<\/span><button class=\"fc-sm-close\" title=\"Chiudi\">\u2715<\/button><\/div>'\n   +'<div class=\"fc-sm-grid\">'\n   +'<a href=\"https:\/\/wa.me\/?text='+txt+'\" target=\"_blank\" rel=\"noopener\" class=\"fc-sm-item\"><div class=\"fc-sm-ico\" style=\"background:#e9fbf0\"><svg viewBox=\"0 0 448 512\" fill=\"#25D366\" width=\"26\" height=\"26\"><path d=\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27.1 106.2 27.1h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-117zm-157 338.1c-33.1 0-65.6-8.9-93.9-25.7l-6.7-4-69.8 18.3 18.6-68.1-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"\/><\/svg><\/div><span>WhatsApp<\/span><\/a>'\n   +'<a href=\"https:\/\/t.me\/share\/url?url='+enc+'&text='+txtNoUrl+'\" target=\"_blank\" rel=\"noopener\" class=\"fc-sm-item\"><div class=\"fc-sm-ico\" style=\"background:#e6f3fa\"><svg viewBox=\"0 0 24 24\" fill=\"#2CA5E0\" width=\"26\" height=\"26\"><path d=\"M12 0C5.37 0 0 5.37 0 12s5.37 12 12 12 12-5.37 12-12S18.63 0 12 0zm5.94 8.19l-2.03 9.56c-.15.68-.54.85-1.09.53l-3-2.21-1.45 1.39c-.16.16-.3.3-.61.3l.21-3.03 5.54-5.01c.24-.21-.05-.33-.37-.12L6.21 13.9l-2.97-.93c-.65-.2-.66-.65.13-.96l11.59-4.47c.54-.2 1.01.13.98.65z\"\/><\/svg><\/div><span>Telegram<\/span><\/a>'\n   +'<a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u='+enc+'\" target=\"_blank\" rel=\"noopener\" class=\"fc-sm-item\"><div class=\"fc-sm-ico\" style=\"background:#e8f1fe\"><svg viewBox=\"0 0 24 24\" fill=\"#1877F2\" width=\"26\" height=\"26\"><path d=\"M24 12.07C24 5.41 18.63 0 12 0S0 5.41 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.04V9.41c0-3.02 1.8-4.7 4.54-4.7 1.31 0 2.68.24 2.68.24v2.97h-1.51c-1.49 0-1.95.93-1.95 1.88v2.27h3.32l-.53 3.49h-2.79V24C19.61 23.1 24 18.1 24 12.07z\"\/><\/svg><\/div><span>Facebook<\/span><\/a>'\n   +'<a href=\"mailto:?subject='+encodeURIComponent('Una composizione floreale per te \ud83c\udf38')+'&body='+txt+'\" class=\"fc-sm-item\"><div class=\"fc-sm-ico\" style=\"background:#f0ede8\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#5a5248\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"26\" height=\"26\"><path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\/><polyline points=\"22,6 12,13 2,6\"\/><\/svg><\/div><span>Email<\/span><\/a>'\n   +'<\/div>'\n   +'<div class=\"fc-sm-divider\"><\/div>'\n   +'<div class=\"fc-sm-link\">'\n     +'<div class=\"fc-sm-link-lbl\">Link composizione<\/div>'\n     +'<div class=\"fc-sm-link-row\"><div class=\"fc-sm-link-url\" id=\"fc-unified-share-url\">'+landingUrl+'<\/div>'\n     +'<button class=\"fc-sm-copy\" id=\"fc-unified-share-copy\">Copia<\/button><\/div>'\n   +'<\/div>';\n  overlay.appendChild(modal);\n  document.body.appendChild(overlay);\n  modal.querySelector('.fc-sm-close').addEventListener('click',fcCloseUnifiedShare);\n  document.addEventListener('keydown',fcUnifiedShareEsc);\n  requestAnimationFrame(function(){overlay.classList.add('open');});\n  var copyBtn=document.getElementById('fc-unified-share-copy');\n  if(copyBtn) copyBtn.addEventListener('click',function(){\n    navigator.clipboard&&navigator.clipboard.writeText(landingUrl).then(function(){\n      copyBtn.textContent='\u2713 Copiato!';setTimeout(function(){copyBtn.textContent='Copia';},2000);\n    });\n  });\n};\nwindow.fcCloseUnifiedShare=function(){\n  var ov=document.getElementById('fc-unified-share-overlay');\n  if(ov){ov.classList.remove('open');setTimeout(function(){if(ov.parentNode)ov.remove();},400);}\n  document.removeEventListener('keydown',fcUnifiedShareEsc);\n};\nfunction fcUnifiedShareEsc(e){if(e.key==='Escape')fcCloseUnifiedShare();}\n\/\/ Galleria ispirazione: apre share con slug dal dato corrente\nwindow.fciOpenShare=function(){\n  var d=_fciLbData[_fciLbIdx];\n  \/\/ Se lo slug non c'\u00e8, non usare window.location.href (che \u00e8 il configuratore)\n  \/\/ ma passa comunque lo slug vuoto \u2014 fcOpenUnifiedShare mostrer\u00e0 solo il link corrente\n  \/\/ Le composizioni senza slug non hanno landing page \u2014 avvisiamo l'utente\n  if(!d.slug){\n    alert('Questa composizione non ha ancora una pagina di condivisione. Genera una nuova composizione per ottenere il link.');\n    return;\n  }\n  fcOpenUnifiedShare(d.slug);\n};\nwindow.fciCloseLb=function(){\n  var lb=document.getElementById('fci-lb');\n  if(lb) lb.style.display='none';\n  document.removeEventListener('keydown',_fciLbKey);\n};\nwindow.fciNavLb=function(dir){\n  _fciLbIdx=(_fciLbIdx+dir+_fciLbData.length)%_fciLbData.length;\n  _fciLbShow();\n};\nfunction _fciLbShow(){\n  var d=_fciLbData[_fciLbIdx];\n  var img=document.getElementById('fci-lb-img');\n  var cap=document.getElementById('fci-lb-cap');\n  var num=document.getElementById('fci-lb-num');\n  var btn=document.getElementById('fci-lb-btn');\n  if(img) img.src=d.url;\n  \/\/ Costruisci caption con pallini sui protagonisti\n  if(cap){\n    var capParts=d.cap?d.cap.split(' \u00b7 '):[];\n    \/\/ Il primo pezzo \u00e8 i protagonisti \u2014 aggiungi pallini\n    if(capParts.length&&d.fiori){\n      var fioriArr=d.fiori.split(',').map(function(s){return s.trim();});\n      var fioriConPallini=fioriArr.map(function(fn){\n        var ball='';\n        if(d.fuori_stagione&&d.fuori_stagione.indexOf(fn)!==-1) ball=' \ud83d\udd34';\n        else if(d.stagionale_nomi&&d.stagionale_nomi.indexOf(fn)!==-1) ball=' \ud83d\udfe0';\n        return fn+ball;\n      }).join(', ');\n      capParts[0]=fioriConPallini;\n    }\n    cap.textContent=capParts.join(' \u00b7 ');\n  }\n  if(num) num.textContent=(_fciLbIdx+1)+' \/ '+_fciLbData.length;\n  \/\/ Avviso stagionale \u2014 riga discreta sotto il numero\n  var oldFsI=document.getElementById('fci-lb-fs-warn');if(oldFsI)oldFsI.remove();\n  var fsText='';\n  if(d.fuori_stagione&&d.fuori_stagione.length) fsText='\ud83d\udd34 Fuori stagione \u2014 utilizzeremo fiori simili';\n  else if(d.stagionale_nomi&&d.stagionale_nomi.length) fsText='\ud83d\udfe0 Alcuni fiori non sempre disponibili per consegne in giornata';\n  if(fsText){\n    var fsWarn=document.createElement('div');\n    fsWarn.id='fci-lb-fs-warn';\n    fsWarn.style.cssText='font-size:.68rem;color:#7a5a00;margin-top:3px;text-align:center';\n    fsWarn.textContent=fsText;\n    if(num&&num.parentNode) num.parentNode.insertBefore(fsWarn,num.nextSibling);\n  }\n  if(btn){\n    btn.setAttribute('data-imgid',d.imgid||'');\n    btn.setAttribute('data-fiori',d.fiori||'');\n    btn.setAttribute('data-cont',d.cont||'bouquet');\n    btn.setAttribute('data-verdi',d.verdi||'');\n    btn.setAttribute('data-riemp',d.riemp||'');\n    btn.disabled=false;btn.textContent='\ud83d\uded2 Ordina composizione simile';\n  }\n}\nfunction _fciLbKey(e){\n  if(e.key==='ArrowLeft') window.fciNavLb(-1);\n  else if(e.key==='ArrowRight') window.fciNavLb(1);\n  else if(e.key==='Escape') window.fciCloseLb();\n}\nfunction fciOpenLb(data,idx){\n  _fciLbData=data;_fciLbIdx=idx;\n  _fciLbShow();\n  var lb=document.getElementById('fci-lb');\n  if(lb){\n    \/\/ Sposta al body se non \u00e8 gi\u00e0 figlio diretto \u2014 evita stacking context di fc-wrap\n    if(lb.parentNode!==document.body) document.body.appendChild(lb);\n    lb.style.display='flex';\n  }\n  document.addEventListener('keydown',_fciLbKey);\n  \/\/ Pulsante acquista \u2014 bind una volta sola\n  var btn=document.getElementById('fci-lb-btn');\n  if(btn&&!btn._fciBound){\n    btn._fciBound=true;\n    btn.addEventListener('click',function(){\n      var d=_fciLbData[_fciLbIdx];\n      btn.disabled=true;btn.textContent='\u23f3 Aggiunta\u2026';\n      var fd=new FormData();\n      fd.append('action','fc_gallery_add_cart');fd.append('nonce',NONCE);\n      fd.append('img_id',btn.getAttribute('data-imgid'));\n      fd.append('fiori',btn.getAttribute('data-fiori')||'');\n      fd.append('cont',btn.getAttribute('data-cont')||'bouquet');\n      fd.append('verdi',btn.getAttribute('data-verdi')||'');\n      fd.append('riempitivi',btn.getAttribute('data-riemp')||'');\n      fd.append('meta_verdi',btn.getAttribute('data-verdi')||'');\n      fd.append('meta_riempitivi',btn.getAttribute('data-riemp')||'');\n      fetch(AJAX,{method:'POST',body:fd})\n        .then(function(r){return r.json();})\n        .then(function(res){\n          if(res.success){window.location.href=res.data.product_url;}\n          else{btn.disabled=false;btn.textContent='\ud83d\uded2 Ordina composizione simile';}\n        })\n        .catch(function(){btn.disabled=false;btn.textContent='\ud83d\uded2 Ordina composizione simile';});\n    });\n  }\n}\nfunction fciBindBtns(container){\n  if(!container) return;\n  var cards=container.querySelectorAll('.fci-card');\n  var imgs=[];\n  cards.forEach(function(card){\n    var fsRaw=card.getAttribute('data-fuori-stagione')||'';\n    var fsArr=fsRaw?fsRaw.split(',').map(function(s){return s.trim();}).filter(Boolean):[];\n    var fsRawStag=card.getAttribute('data-stagionale-nomi')||'';\n    var stagArr=fsRawStag?fsRawStag.split(',').map(function(s){return s.trim();}).filter(Boolean):[];\n    imgs.push({\n      url:card.getAttribute('data-fullurl')||card.querySelector('img').src,\n      cap:card.getAttribute('data-cap')||'',\n      imgid:card.getAttribute('data-imgid')||'',\n      fiori:card.getAttribute('data-fiori')||'',\n      cont:card.getAttribute('data-cont')||'bouquet',\n      verdi:card.getAttribute('data-verdi')||'',\n      riemp:card.getAttribute('data-riemp')||'',\n      slug:card.getAttribute('data-slug')||'',\n      fuori_stagione:fsArr,\n      stagionale_nomi:stagArr\n    });\n  });\n  cards.forEach(function(card,idx){\n    var img=card.querySelector('img');\n    if(img){img.style.cursor='zoom-in';img.addEventListener('click',function(){fciOpenLb(imgs,idx);});}\n    var btn=card.querySelector('.fci-btn');\n    if(btn) btn.addEventListener('click',function(){fciOpenLb(imgs,idx);});\n  });\n}\n\n\nfunction renderBudget(){\n  \/\/ Modalit\u00e0 Fiori a Numero: mostra solo il prezzo calcolato, non le fasce\n  if(S.fioriNumero){\n    var g=document.getElementById('fc-bgrid');\n    if(g){\n      var comp=calcComp()||[];\n      var totFiori=comp.reduce(function(s,f){return s+f.costo;},0);\n      var pct=getPct();\n      var totLord=totFiori\/(1-pct);\n      var arrot=Math.ceil(totLord\/5)*5;\n      S.budget=arrot;\n      g.innerHTML='<div class=\"fc-bcard sel\" style=\"grid-column:1\/-1;cursor:default\">'\n        +'<div class=\"bv\" style=\"font-size:2rem\">\u20ac'+arrot+'<\/div>'\n        +'<div class=\"bd\">Prezzo calcolato sui tuoi steli<\/div>'\n        +'<div style=\"font-size:.7rem;color:var(--bark-mid);margin-top:6px\">'\n        +comp.map(function(f){return f.steli+' \u00d7 '+f.nome+' = \u20ac'+f.costo.toFixed(2);}).join(' &nbsp;|&nbsp; ')\n        +'<\/div><\/div>';\n      document.getElementById('fc-b3').disabled=false;\n      updPreview();updBadge();\n    }\n    return;\n  }\n  BUDGETS=getBudgets(); \/\/ ricalcola per tipo composizione corrente\n  var base=PREZZI_BASE[S.contenitore]||30;\n  var g=document.getElementById('fc-bgrid');g.innerHTML='';\n  var fixedVals=BUDGETS.slice(0,3).map(function(b){return b.v;});\n  BUDGETS.forEach(function(b){\n    var isCustom=(b.v===0);\n    var isSel=isCustom?(S.budget&&fixedVals.indexOf(S.budget)===-1):(S.budget===b.v);\n    var div=document.createElement('div');\n    div.className='fc-bcard'+(isSel?' sel':'');\n    div.id=isCustom?'fbc-custom':'fbc-'+b.v;\n    if(isCustom){\n      div.innerHTML='<div class=\"bck\" style=\"position:absolute;top:7px;right:7px;width:16px;height:16px;border-radius:50%;background:var(--botanical);color:#fff;font-size:.55rem;'+(isSel?'display:flex':'display:none')+';align-items:center;justify-content:center\">\u2713<\/div>'\n        +'<div class=\"bs\">'+b.s+'<\/div>'\n        +'<div style=\"margin:4px 0 2px\"><input type=\"number\" id=\"fc-custom-val\" min=\"'+base+'\" max=\"250\" placeholder=\"\u20ac\" '\n        +'style=\"width:70px;font-size:1.1rem;font-family:\\'Cormorant Garant\\',serif;font-weight:600;border:none;border-bottom:1.5px solid var(--linen-dk);text-align:center;background:transparent;outline:none;color:var(--bark)\" '\n        +'value=\"'+(isSel&&S.budget?S.budget:'')+'\"><\/div>'\n        +'<button id=\"fc-custom-ok\" type=\"button\" style=\"margin-top:4px;padding:3px 12px;border-radius:20px;border:none;background:var(--botanical);color:#fff;font-size:.65rem;cursor:pointer;font-family:\\'DM Sans\\',sans-serif\">Conferma<\/button>'\n        +'<div class=\"bd\" style=\"margin-top:4px\">'+b.l+'<\/div>'\n        +'<div style=\"font-size:.6rem;color:var(--bark-light);margin-top:2px\">min \u20ac'+base+' \u2014 max \u20ac250<\/div>';\n      div.addEventListener('click',function(e){\n        if(e.target.id!=='fc-custom-val'&&e.target.id!=='fc-custom-ok') document.getElementById('fc-custom-val').focus();\n      });\n      setTimeout(function(){\n        var inp=document.getElementById('fc-custom-val');\n        var btn=document.getElementById('fc-custom-ok');\n        if(!inp) return;\n        function applyCustom(){\n          var v=parseInt(inp.value)||0;\n          if(v>250){v=250;inp.value=250;}\n          if(v>=base) selBudget(v,true);\n        }\n        inp.addEventListener('keydown',function(e){if(e.key==='Enter')applyCustom();});\n        if(btn) btn.addEventListener('click',applyCustom);\n      },50);\n    } else {\n      div.innerHTML='<div class=\"bck\" style=\"position:absolute;top:7px;right:7px;width:16px;height:16px;border-radius:50%;background:var(--botanical);color:#fff;font-size:.55rem;'+(isSel?'display:flex':'display:none')+';align-items:center;justify-content:center\">\u2713<\/div>'\n        +'<div class=\"bs\">'+b.s+'<\/div><div class=\"bv\">\u20ac'+b.v+'<\/div><div class=\"bd\">'+b.l+'<\/div>';\n      div.addEventListener('click',function(){selBudget(b.v,false);});\n    }\n    g.appendChild(div);\n  });\n}\n\nfunction selBudget(v,isCustom){\n  S.budget=v;\n  document.querySelectorAll('.fc-bcard').forEach(function(c){\n    c.classList.remove('sel');var bck=c.querySelector('.bck');if(bck)bck.style.display='none';\n  });\n  var elId=isCustom?'fbc-custom':'fbc-'+v;\n  var el=document.getElementById(elId);\n  if(el){el.classList.add('sel');var bck=el.querySelector('.bck');if(bck)bck.style.display='flex';}\n  document.getElementById('fc-b3').disabled=false;\n  updCbox();updPreview();updBadge();\n}\nfunction getPct(){return(CONF_PCTS||{bouquet:0.10,cesto:0.15,cilindro:0.12})[S.contenitore]||0.10;}\n\nfunction calcBudgetFiori(){\n  \/\/ Nuova logica: (netto - (netto\/100 * somma_prezzi_unitari_accessori)) \/ n_protagonisti\n  if(!S.budget) return 0;\n  var netto = S.budget * (1 - getPct());\n  var somma_acc = 0;\n  S.verde.forEach(function(id){var v=MAG[id]||{};somma_acc+=parseFloat(v.prezzo_stelo||0);});\n  S.riemp.forEach(function(id){var r=MAG[id]||{};somma_acc+=parseFloat(r.prezzo_stelo||0);});\n  var quota_acc = (netto \/ 100) * somma_acc;\n  return Math.max(0, netto - quota_acc);\n}\n\nfunction calcCostoAccessori(){\n  if(!S.budget) return 0;\n  var netto = S.budget * (1 - getPct());\n  var somma_acc = 0;\n  S.verde.forEach(function(id){var v=MAG[id]||{};somma_acc+=parseFloat(v.prezzo_stelo||0);});\n  S.riemp.forEach(function(id){var r=MAG[id]||{};somma_acc+=parseFloat(r.prezzo_stelo||0);});\n  return (netto \/ 100) * somma_acc;\n}\n\nfunction calcComp(){\n  if(!S.prot.length) return null;\n  \/\/ Modalit\u00e0 Fiori a Numero: steli esatti da S.steliProt, nessun calcolo budget\n  if(S.fioriNumero){\n    return S.prot.map(function(id){\n      var f=MAG[id]||{}, ps=parseFloat(f.prezzo_stelo||1);\n      var st=parseInt(S.steliProt[id]||1);\n      return{id:id, nome:f.nome||id, foto:f.foto||'', ps:ps, steli:st, costo:parseFloat((st*ps).toFixed(2)), altezza:parseInt(f.altezza_cm||0)};\n    });\n  }\n  if(!S.budget) return null;\n  var bf = calcBudgetFiori();\n  var quotaPerFiore = bf \/ S.prot.length;\n  var result = S.prot.map(function(id){\n    var f=MAG[id]||{}, ps=parseFloat(f.prezzo_stelo||1);\n    var st = Math.max(1, Math.floor(quotaPerFiore \/ ps));\n    return{id:id, nome:f.nome||id, foto:f.foto||'', ps:ps, steli:st, costo:parseFloat((st*ps).toFixed(2))};\n  });\n  \/\/ Redistribuisce i centesimi rimasti dall'arrotondamento\n  \/\/ aggiungendo steli extra al protagonista col prezzo unitario pi\u00f9 basso\n  var speso = result.reduce(function(s,f){return s+f.costo;},0);\n  var residuo = bf - speso;\n  if(residuo > 0.01 && result.length > 0){\n    \/\/ Ordina per prezzo_stelo crescente \u2014 aggiunge steli dove costano meno\n    var sorted = result.slice().sort(function(a,b){return a.ps-b.ps;});\n    for(var i=0;i<sorted.length;i++){\n      var extra = Math.floor(residuo \/ sorted[i].ps);\n      if(extra > 0){\n        sorted[i].steli += extra;\n        sorted[i].costo = parseFloat((sorted[i].steli * sorted[i].ps).toFixed(2));\n        residuo -= extra * sorted[i].ps;\n      }\n      if(residuo < sorted[0].ps) break;\n    }\n  }\n  return result;\n}\n\n\/\/ Ricalcola prezzo composizione FN dai prezzi ATTUALI del magazzino\n\/\/ usata per gallerie\/condivisioni dove i prezzi salvati potrebbero essere obsoleti\n\/\/ Helper JS: costruisce stringa protagonisti con pallini e frasi stagionali\nfunction fcProtConAvvisi(ids){\n  var haFuori=false, haStag=false;\n  var nomi=ids.map(function(id){\n    var f=MAG[id];if(!f)return id;\n    var ball='';\n    if(f.fuori_stagione){ball=' \ud83d\udd34';haFuori=true;}\n    else if(f.stagionale){ball=' \ud83d\udfe0';haStag=true;}\n    return f.nome+ball;\n  }).join(', ');\n  return nomi;\n}\nfunction ricalcolaPrezzoFN(protagonisti_nomi_steli, pct){\n  \/\/ protagonisti_nomi_steli = [{nome:'Rosa rossa Red Naomi', steli:10}, ...]\n  if(!protagonisti_nomi_steli||!protagonisti_nomi_steli.length) return 0;\n  var tot=0;\n  protagonisti_nomi_steli.forEach(function(ps){\n    \/\/ Cerca nel MAG per nome\n    var found=Object.values(MAG).find(function(f){\n      return f.nome&&f.nome.toLowerCase()===ps.nome.toLowerCase();\n    });\n    var prezzo=found?parseFloat(found.prezzo_stelo||1):1;\n    tot+=prezzo*parseInt(ps.steli||1);\n  });\n  var p=pct||getPct();\n  return Math.ceil((tot\/(1-p))\/5)*5;\n}\n\/\/ Controlla se una composizione ha fiori fuori stagione\nfunction hasFuoriStagione(protagonisti_nomi){\n  if(!protagonisti_nomi||!protagonisti_nomi.length) return false;\n  return protagonisti_nomi.some(function(nome){\n    var found=Object.values(MAG).find(function(f){\n      return f.nome&&f.nome.toLowerCase()===nome.toLowerCase();\n    });\n    return found&&found.fuori_stagione;\n  });\n}\nfunction calcVerdeComp(){\n  \/\/ Verdi e riempitivi: sempre q.b. \u2014 nessun calcolo steli\n  \/\/ In modalit\u00e0 FN il budget pu\u00f2 essere null ma i verdi\/riemp ci sono lo stesso\n  if(!S.budget && !S.fioriNumero) return [];\n  var out = [];\n  S.verde.forEach(function(id){\n    var v=MAG[id]||{};\n    out.push({id:id, nome:v.nome||id, foto:v.foto||'', steli:0, costo:0, qb:true});\n  });\n  S.riemp.forEach(function(id){\n    var r=MAG[id]||{};\n    out.push({id:id, nome:r.nome||id, foto:r.foto||'', steli:0, costo:0, qb:true, isRiemp:true});\n  });\n  return out;\n}\nfunction updCbox(){\n  var box=document.getElementById('fc-cbox'),rows=document.getElementById('fc-crows');\n  if(!box||!rows) return;\n  var comp=calcComp(),vcomp=calcVerdeComp();\n  if(!comp){box.style.display='none';return;}\n  \/\/ In modalit\u00e0 FN senza budget ancora calcolato \u2014 mostra solo steli senza totali\n  if(S.fioriNumero&&!S.budget){\n    box.style.display='block';\n    var htmlFN='';\n    comp.forEach(function(f){\n      var mf=MAG[f.id]||{};\n      htmlFN+='<div class=\"fc-crow\">'\n        +(f.foto?'<img decoding=\"async\" src=\"'+f.foto+'\" alt=\"'+f.nome+'\" style=\"width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid var(--linen-dk);flex-shrink:0\">':'<div class=\"cph\">\ud83c\udf38<\/div>')\n        +'<div class=\"ci\"><div class=\"cn\">'+f.nome+(mf.fuori_stagione?' \ud83d\udd34':mf.stagionale?' \ud83d\udfe0':'')+'<\/div>'\n        +'<div class=\"cq\">'+f.steli+' steli \u00d7 \u20ac'+f.ps.toFixed(2)+' = \u20ac'+f.costo.toFixed(2)+'<\/div>'\n        +'<\/div><\/div>';\n    });\n    rows.innerHTML=htmlFN;\n    var box4=document.getElementById('fc-cbox4'),rows4=document.getElementById('fc-crows4');\n    if(box4&&rows4){box4.style.display='block';rows4.innerHTML=htmlFN;}\n    return;\n  }\n  box.style.display='block';\n  var html='';\n  var tot_prot=0;\n  var hasStagionale=false;\n  comp.forEach(function(f){\n    tot_prot+=f.costo;\n    var mag=MAG[f.id]||{};\n    if(mag.stagionale) hasStagionale=true;\n    \/\/ Steli: arrotonda per eccesso usando il budget disponibile per quel fiore\n    var prezzo=parseFloat(mag.prezzo_stelo||f.prezzo||1);\n    var steliEsatti=f.steli;\n    var steliArrot=prezzo>0?Math.ceil(f.costo\/prezzo):steliEsatti;\n    var steliLabel=steliArrot>steliEsatti?'circa '+steliArrot:steliEsatti+' ';\n    html+='<div class=\"fc-crow\">'\n      +(f.foto?'<img decoding=\"async\" src=\"'+f.foto+'\" alt=\"'+f.nome+'\" style=\"width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid var(--linen-dk);flex-shrink:0\">':'<div class=\"cph\">\ud83c\udf38<\/div>')\n      +'<div class=\"ci\"><div class=\"cn\">'+f.nome+(mag.fuori_stagione?' \ud83d\udd34':mag.stagionale?' \ud83d\udfe0':'')+'<\/div>'\n      +'<div class=\"cq\">'+steliLabel+' steli \u2014 \u20ac'+f.costo.toFixed(2)+'<\/div>'\n      +'<\/div><\/div>';\n  });\n  var tot_verde=0;\n  vcomp.forEach(function(v){\n    tot_verde+=v.costo||0;\n    var icon=v.isRiemp?'\u2726':'\ud83c\udf3f';\n    html+='<div class=\"fc-crow\">'+(v.foto?'<img decoding=\"async\" src=\"'+v.foto+'\" alt=\"'+v.nome+'\" style=\"width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid var(--linen-dk);flex-shrink:0\">':'<div class=\"cph\">'+icon+'<\/div>')\n      +'<div class=\"ci\"><div class=\"cn\" style=\"color:var(--botanical)\">'+v.nome+'<\/div><div class=\"cq\">q.b.<\/div><\/div><\/div>';\n  });\n  var lav=parseFloat((S.budget*getPct()).toFixed(2));\n  var resto=parseFloat((S.budget - tot_prot - lav).toFixed(2));\n  var legendaTot='';\n  html+='<div style=\"margin-top:10px;padding-top:10px;border-top:2px solid var(--linen-dk);font-size:.72rem;color:var(--bark-mid)\">'\n    +'<div style=\"display:flex;justify-content:space-between\"><span>Protagonisti<\/span><span>\u20ac'+tot_prot.toFixed(2)+'<\/span><\/div>'\n    +'<div style=\"display:flex;justify-content:space-between\"><span>Verde, riempitivi q.b. &amp; lavorazione<\/span><span>\u20ac'+(resto+lav).toFixed(2)+'<\/span><\/div>'\n    +'<div style=\"display:flex;justify-content:space-between;font-weight:600;color:var(--bark);margin-top:4px;padding-top:4px;border-top:1px solid var(--linen-dk)\"><span>Totale<\/span><span>\u20ac'+S.budget.toFixed(2)+'<\/span><\/div>'\n    +'<\/div>'\n    +legendaTot;\n  \/\/ Avviso stagionale in fondo al riepilogo\n  if(hasStagionale){\n    html+='<div style=\"margin-top:12px;background:#fff8e8;border:1px solid #e8c44a;border-radius:8px;padding:9px 11px;font-size:.7rem;color:#7a5a00;line-height:1.5\">'\n      +'<span style=\"display:inline-block;width:8px;height:8px;border-radius:50%;background:#e88c00;margin-right:5px;vertical-align:middle\"><\/span>'\n      +'Hai scelto fiori stagionali di grande bellezza. Per questa composizione la consegna in giornata non \u00e8 garantita \u2014 contattaci per disponibilit\u00e0 e tempi di approvvigionamento.'\n      +'<\/div>';\n  }\n  rows.innerHTML=html;\n  var box4=document.getElementById('fc-cbox4'),rows4=document.getElementById('fc-crows4');\n  if(box4&&rows4){box4.style.display='block';rows4.innerHTML=html;}\n}\nfunction buildPrompt(){\n  var comp=calcComp()||[],vcomp=calcVerdeComp()||[];\n\n  \/\/ Nome EN + colore HEX + desc_ai aggiuntiva\n  var protList=comp.map(function(f){\n    var mag=MAG[f.id]||{};\n    var base='';var n=(mag.nome||f.id).toLowerCase();\n    for(var k in TRAD){if(n.indexOf(k)!=-1){base=TRAD[k];break;}}\n    if(!base) base=mag.nome||f.id;\n    var hex=mag.colore_ai||'';\n    var desc=mag.desc_ai&&mag.desc_ai.trim().length>3?mag.desc_ai.trim():'';\n    var steliTxt='';\n    var altTxt='';\n    if(S.fioriNumero){\n      steliTxt='exactly '+f.steli+' stems';\n      if(f.altezza&&f.altezza>0&&S.contenitore==='bouquet') altTxt=f.altezza+'cm long-stemmed';\n    }\n    var parts=[steliTxt,altTxt,base,hex?hex:'',desc].filter(Boolean);\n    return parts.join(' ');\n  }).join('; ');\n\n  var greenList=vcomp.map(function(v){\n    var vmag=MAG[v.id]||{};\n    var base='';var n=(vmag.nome||v.id).toLowerCase();\n    for(var k in TRAD){if(n.indexOf(k)!=-1){base=TRAD[k];break;}}\n    if(!base) base=vmag.nome||v.id;\n    var hex=vmag.colore_ai||'';\n    var desc=vmag.desc_ai&&vmag.desc_ai.trim().length>3?vmag.desc_ai.trim():'';\n    return base+(hex?' '+hex:'')+(desc?', '+desc:'');\n  }).join('; ');\n\n  \/\/ \u2500\u2500 TAGLIA basata sul budget rispetto ai prezzi base del contenitore \u2500\u2500\n  var base=PREZZI_BASE[S.contenitore]||30;\n  var premium=Math.ceil((base*1.5)\/5)*5;\n  var deluxe=Math.ceil((base*2.5)\/5)*5;\n  var opulence=Math.ceil((base*4)\/5)*5; \/\/ soglia quarta taglia\n\n  var taglia;\n  if(!S.budget||S.budget<=base*1.2)       taglia='S';\n  else if(S.budget<=premium*1.2)           taglia='M';\n  else if(S.budget<=deluxe*1.2)            taglia='L';\n  else                                      taglia='XL';\n\n  \/\/ Parametri per contenitore e taglia\n  var params={\n    bouquet:{\n      S: {volume:'Light and cheerful',   density:'Naturally full, stems close together with soft organic flow',         size:'(20x14cm)'},\n      M: {volume:'Balanced and lush',    density:'Natural, generously filled',                                          size:'(28x16cm)'},\n      L: {volume:'Full and generous',    density:'High-volume, richly packed',                                          size:'(35x18cm)'},\n      XL:{volume:'Opulent and grand',    density:'Extremely high-volume, maximally lush',                               size:'(42x22cm)'},\n    },\n    cesto:{\n      S: {volume:'Light and cheerful',   density:'Naturally full, stems close together with soft organic flow',         size:'white wicker basket (22x16cm)'},\n      M: {volume:'Balanced and lush',    density:'Natural, generously filled',                                          size:'white wicker basket (30x22cm)'},\n      L: {volume:'Full and generous',    density:'High-volume, richly packed',                                          size:'white wicker basket (38x28cm)'},\n      XL:{volume:'Opulent and grand',    density:'Extremely high-volume, maximally lush',                               size:'white wicker basket (44x32cm)'},\n    },\n    cilindro:{\n      S: {volume:'Light and cheerful',   density:'Naturally full, stems close together with soft organic flow',         size:'(16cm height, 20cm diameter)'},\n      M: {volume:'Balanced and lush',    density:'Natural, generously filled',                                          size:'(16cm height, 24cm diameter)'},\n      L: {volume:'Full and generous',    density:'High-volume, richly packed',                                          size:'(16cm height, 30cm diameter)'},\n      XL:{volume:'Opulent and grand',    density:'Extremely high-volume, maximally lush',                               size:'(16cm height, 36cm diameter)'},\n    },\n  };\n\n  var cont=S.contenitore||'bouquet';\n  var p=params[cont]?params[cont][taglia]:params.bouquet[taglia];\n\n  \/\/ Specifica contenitore con misura dinamica\n  var contSpec;\n  if(cont==='cesto'){\n    contSpec='White wicker basket '+p.size+', no handle, hidden floral foam.';\n  } else if(cont==='cilindro'){\n    contSpec='White cylindrical cardboard box with matte texture '+p.size+'. The box sits upright with its matching lid fitted snugly underneath the base \u2014 the lid acts as a low pedestal, completely hidden under the box, as if the box is seated inside its own lid. No visible gap between box and lid. Flowers emerge densely from inside the open top.';\n  } else {\n    contSpec='Clear glass cylinder vase '+p.size+'.';\n  }\n\n  var extraPos=AI_EXTRA_POS?'\\n'+AI_EXTRA_POS:'';\n  var extraNeg=AI_EXTRA_NEG?', '+AI_EXTRA_NEG:'';\n\n  \/\/ \u2500\u2500 MODALIT\u00c0 FIORI A NUMERO \u2014 prompt preciso e geometrico \u2500\u2500\n  if(S.fioriNumero){\n    \/\/ Calcola totale steli\n    var totSteliStr=comp.reduce(function(s,f){return s+f.steli;},0);\n    \/\/ Lista protagonisti con numero esatto, ripetuto in lettere e cifre\n    var fnProtList=comp.map(function(f){\n      var mag=MAG[f.id]||{};\n      var base='';var n=(mag.nome||f.id).toLowerCase();\n      for(var k in TRAD){if(n.indexOf(k)!=-1){base=TRAD[k];break;}}\n      if(!base) base=mag.nome||f.id;\n      var hex=mag.colore_ai?(' '+mag.colore_ai):'';\n      var desc=mag.desc_ai&&mag.desc_ai.trim().length>3?(', '+mag.desc_ai.trim()):'';\n      var alt=(f.altezza&&f.altezza>0&&cont==='bouquet')?(f.altezza+'cm long-stemmed '):'';\n      var numWords=['zero','one','two','three','four','five','six','seven','eight','nine','ten',\n        'eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen','twenty'];\n      var nWord=f.steli<=20?numWords[f.steli]:(f.steli+' ');\n      return 'exactly '+f.steli+' stems ('+nWord+' total, no more no less) of '+alt+base+hex+desc\n        +'. Each of the '+f.steli+' individual flower heads is clearly visible and countable';\n    }).join('. ');\n    \/\/ Contenitore per FN\n    var fnContSpec;\n    if(cont==='cesto') fnContSpec='White wicker basket, no handle.';\n    else if(cont==='cilindro') fnContSpec='White cylindrical cardboard box, flowers emerging from open top.';\n    else fnContSpec='Clear glass cylinder vase proportioned to the stem length.';\n    var fnPrompt=\n      'Professional botanical photo. '\n     +'An arrangement composed of exactly '+totSteliStr+' stems in total, no more, no less. '\n     +fnProtList+'. '\n     +(greenList?'Greenery and fillers, evenly integrated: '+greenList+'. ':'')\n     +fnContSpec\n     +' Studio lighting, white marble surface, light grey background. Matte textures, no sheen, high resolution.'\n     +extraPos;\n    var fnNegative=\n      'extra flowers, additional stems, more than '+totSteliStr+' flowers, overcrowded arrangement, '\n     +'grouped flowers, color blocking, symmetrical arrangement, cake dome, '\n     +'illustration, painting, watermark, dark background'\n     +extraNeg;\n    return{prompt:fnPrompt, negative:fnNegative};\n  }\n\n  \/\/ \u2500\u2500 PROMPT STANDARD \u2500\u2500\n  var prompt=\n    'Professional botanical photo, '+p.volume+' garden-style arrangement. '\n   +'Every single stem is uniformly interspersed to create a natural organic mix. '\n   +p.density+' distribution. '\n   +'Flowers: '+protList+'. '\n   +(greenList?'Greenery and fillers, evenly integrated at every level: '+greenList+'. ':'')\n   +contSpec\n   +' Studio lighting, white marble surface, light grey background. Matte textures, no sheen, high resolution.'\n   +extraPos;\n\n  var negative=\n    'grouped flowers, color blocking, concentric patterns, symmetrical arrangement, cake dome, '\n   +'floating lids, duplicate lids, glossy surfaces, brown wicker, basket handles, '\n   +'illustration, painting, watermark, dark background, unspecified plants'\n   +extraNeg;\n\n  return{prompt:prompt, negative:negative};\n}\n\n\/\/ \u2500\u2500 AI GENERATE \u2014 multi-provider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _aiPhaseTimer=null;\nvar FLOWER_TIPS=[\n  'Taglia i gambi con un angolo di 45\u00b0 per aiutarli a bere meglio.',\n  \"Cambia l'acqua nel vaso ogni due giorni per mantenere i fiori freschi.\",\n  'Sapevi che i tulipani continuano a crescere in altezza anche dopo essere stati tagliati?',\n  \"Tieni i fiori lontani dalla frutta: l'etilene emesso dai frutti li fa appassire prima.\",\n  'Le ortensie amano l\\'acqua non solo nel gambo, ma anche sulle foglie: nebulizzale spesso.',\n  'Per far durare pi\u00f9 a lungo le rose, rimuovi le foglie che toccano l\\'acqua nel vaso.',\n  'Il periodo migliore per piantare i bulbi autunnali \u00e8 tra ottobre e novembre.',\n  'I girasoli seguono la luce del sole: un fenomeno chiamato eliotropismo.',\n  'Un pizzico di zucchero nell\\'acqua del vaso pu\u00f2 nutrire i tuoi fiori recisi.',\n  'Le peonie fioriscono solo per poche settimane tra maggio e giugno: goditele finch\u00e9 puoi!',\n  'Per rinvigorire i fiori appassiti, prova a immergere i gambi in acqua tiepida per 10 minuti.',\n  'I narcisi sono i primi messaggeri della primavera.',\n  'Non posizionare mai i fiori vicino a correnti d\\'aria o fonti di calore dirette.',\n  'Le orchidee amano la luce indiretta: non esporle mai al sole di mezzogiorno.',\n  'La lavanda \u00e8 profumata e aiuta anche a rilassare la mente.',\n  'Per far sbocciare pi\u00f9 velocemente un fiore chiuso, usa acqua leggermente tiepida.',\n  'Ogni fiore ha un significato: l\\'iris rappresenta la speranza.',\n  'Il garofano \u00e8 uno dei fiori recisi pi\u00f9 resistenti: pu\u00f2 durare fino a tre settimane.',\n  'In autunno, i crisantemi portano colore quando gli altri fiori riposano.',\n  'Un vaso pulito \u00e8 il segreto numero uno per la longevit\u00e0 di ogni bouquet.',\n];\n\n\nfunction genAI(){\n  var area=document.getElementById('fc-aiimg');\n  var dbg=document.getElementById('fc-aidbg'),dbgt=document.getElementById('fc-aidbg-t');\n  var btnRegen=document.getElementById('fc-btn-regen'),btnCart=document.getElementById('fc-btn-cart');\n  if(TOKENS<=0){\n    TOKENS=0; updTokLabel(); updSbNav();\n    area.innerHTML=\n      '<div style=\"display:flex;flex-direction:column;align-items:center;gap:12px;padding:36px 20px;text-align:center;min-height:180px;justify-content:center\">'\n      +'<div style=\"font-size:2.8rem;line-height:1\">\ud83d\udd12<\/div>'\n      +'<p style=\"font-weight:700;font-size:1rem;color:var(--bark);margin:0\">Anteprime terminate per oggi<\/p>'\n      +'<p style=\"font-size:.8rem;color:var(--bark-mid);margin:0;line-height:1.6;max-width:280px\">Hai usato tutte le anteprime gratuite di oggi.<br>Accedi o registrati per averne di pi\u00f9.<\/p>'\n      +'<a href=\"https:\/\/www.domyflor.com\/cammarotafiori\/mio-account\/\" style=\"display:inline-block;margin-top:4px;padding:9px 24px;background:var(--botanical);color:#fff;border-radius:20px;font-size:.78rem;font-weight:600;text-decoration:none\">Accedi al tuo account<\/a>'\n      +'<\/div>';\n    toast('Anteprime terminate per oggi \u2014 accedi per averne di pi\u00f9','err');return;\n  }\n  btnRegen.disabled=true;btnCart.disabled=true;\n\n  \/\/ Scegli un tip casuale di partenza\n  var tipIdx=Math.floor(Math.random()*FLOWER_TIPS.length);\n\n  var tempoStimato=AI_PROVIDER==='google'?'45':AI_PROVIDER==='nano-banana-2'?'35':'30';\n\n  area.innerHTML=\n    '<div class=\"fc-loading\">'\n   +'<div class=\"fc-load-inner\">'\n   +'<div class=\"fc-load-preview\"><div class=\"fc-load-flower\">\ud83c\udf38<\/div><div class=\"fc-load-blur-ring\"><\/div><\/div>'\n   +'<div class=\"fc-load-title\">Creazione composizione in corso\u2026<\/div>'\n   +'<div class=\"fc-load-sub\" id=\"fc-load-sub-txt\"><\/div>'\n   +'<div class=\"fc-load-phases\">'\n   +'<div class=\"fc-load-phase active\" id=\"flp1\"><div class=\"ph-icon\">\u25cf<\/div><span>Analisi palette e colori reali\u2026<\/span><\/div>'\n   +'<div class=\"fc-load-phase\" id=\"flp2\"><div class=\"ph-icon\">\u25cf<\/div><span>Composizione floreale\u2026<\/span><\/div>'\n   +'<div class=\"fc-load-phase\" id=\"flp3\"><div class=\"ph-icon\">\u25cf<\/div><span>Rendering dettagli botanici\u2026<\/span><\/div>'\n   +'<\/div>'\n   +'<div class=\"fc-load-tip-wrap\"><p class=\"fc-load-tip\" id=\"fc-load-tip\">\ud83c\udf3f '+FLOWER_TIPS[tipIdx]+'<\/p><\/div>'\n   +'<div class=\"fc-load-timer\" id=\"fc-load-timer\">0s<\/div>'\n   +'<\/div>'\n   +'<\/div>';\n\n  var subEl=document.getElementById('fc-load-sub-txt');\n  if(subEl) subEl.textContent=(AI_PROVIDER==='google'?'Gemini Flash Image':AI_PROVIDER==='nano-banana-2'?'Nano Banana 2':'FLUX Schnell')+' \u2014 circa '+tempoStimato+' secondi';\n\n  \/\/ Timer secondi\n  var _ts=Date.now();\n  var _ti=setInterval(function(){\n    var el=document.getElementById('fc-load-timer');if(el)el.textContent=Math.round((Date.now()-_ts)\/1000)+'s';\n  },500);\n\n  var _tipInt=setInterval(function(){\n    var tipEl=document.getElementById('fc-load-tip');\n    if(!tipEl) return;\n    tipIdx=(tipIdx+1)%FLOWER_TIPS.length;\n    tipEl.style.opacity='0';\n    setTimeout(function(){\n      if(tipEl){tipEl.textContent='\ud83c\udf3f '+FLOWER_TIPS[tipIdx];tipEl.style.opacity='1';}\n    },400);\n  },5000);\n\n  function advPhase(f,t){\n    var pf=document.getElementById('flp'+f),pt=document.getElementById('flp'+t);\n    if(pf){pf.classList.remove('active');pf.classList.add('done');}if(pt)pt.classList.add('active');\n  }\n  _aiPhaseTimer=setTimeout(function(){advPhase(1,2);},5000);\n  var t2=setTimeout(function(){advPhase(2,3);},12000);\n  function cleanup(){clearTimeout(_aiPhaseTimer);clearTimeout(t2);clearInterval(_ti);clearInterval(_tipInt);}\n\n  function onError(msg){\n    cleanup();\n    if(S.aiImg){\n      area.innerHTML='<div style=\"position:relative;line-height:0\"><img decoding=\"async\" src=\"'+S.aiImg+'\" alt=\"Bouquet AI\" style=\"width:100%;height:auto;display:block\"><\/div>';\n      btnCart.disabled=false;\n    } else {\n      var isTokenErr=msg.indexOf('anteprime')!==-1||msg.indexOf('terminate')!==-1||msg.indexOf('esaurite')!==-1;\n      if(isTokenErr){\n        TOKENS=0; updTokLabel(); updSbNav();\n        area.innerHTML='<div style=\"display:flex;flex-direction:column;align-items:center;gap:12px;padding:36px 20px;text-align:center;min-height:180px;justify-content:center\">'\n          +'<div style=\"font-size:2.8rem;line-height:1\">\ud83d\udd12<\/div>'\n          +'<p style=\"font-weight:700;font-size:1rem;color:var(--bark);margin:0\">Anteprime terminate per oggi<\/p>'\n          +'<p style=\"font-size:.8rem;color:var(--bark-mid);margin:0;line-height:1.6;max-width:280px\">'+msg+'<\/p>'\n          +'<a href=\"https:\/\/www.domyflor.com\/cammarotafiori\/mio-account\/\" style=\"display:inline-block;margin-top:4px;padding:9px 24px;background:var(--botanical);color:#fff;border-radius:20px;font-size:.78rem;font-weight:600;text-decoration:none\">Accedi al tuo account<\/a>'\n          +'<\/div>';\n      } else {\n        area.innerHTML='<div style=\"display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 20px;text-align:center;min-height:180px;justify-content:center\">'\n          +'<div style=\"font-size:2rem;line-height:1\">\u26a0\ufe0f<\/div>'\n          +'<p style=\"font-weight:600;color:var(--bark);margin:0\">Errore generazione<\/p>'\n          +'<p style=\"font-size:.78rem;color:var(--bark-mid);margin:0\">'+msg+'<\/p>'\n          +'<button onclick=\"genAI()\" style=\"margin-top:4px;padding:8px 20px;border-radius:20px;border:none;background:var(--botanical);color:#fff;cursor:pointer;font-size:.75rem;font-weight:600\">\u21ba Riprova<\/button>'\n          +'<\/div>';\n      }\n    }\n    btnRegen.disabled=false;\n    toast('Errore: '+msg,'err');\n  }\n\n  var pdata=buildPrompt();\n  \/\/ Aggiorna accordion con il prompt \u2014 visibile solo agli admin\n  if(dbg&&dbgt){\n    if(TOKENS>=999){\n      dbg.style.display='block';\n      dbgt.innerHTML='<b>Provider:<\/b> '+AI_PROVIDER+'<br><b>Prompt:<\/b> '+pdata.prompt;\n      dbg.removeAttribute('open');\n    } else {\n      dbg.style.display='none';\n    }\n  }\n\n  var fd=new FormData();\n  fd.append('action','fioreria_generate_ai');\n  fd.append('nonce',NONCE);\n  fd.append('prompt',pdata.prompt);\n  fd.append('negative',pdata.negative);\n  fetch(AJAX,{method:'POST',body:fd})\n    .then(function(r){return r.json();})\n    .then(function(d){\n      if(!d.success) throw new Error(d.data||'Errore server');\n      var provider=d.data.provider;\n      var nonceKey=d.data.nonce_key;\n\n      \/\/ \u2500\u2500 GOOGLE AI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      if(provider==='google'){\n        var googleKey=d.data.google_key;\n        var promptFinal=d.data.prompt;\n        var googleUrl='https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/gemini-3.1-flash-image-preview:generateContent?key='+encodeURIComponent(googleKey);\n        var ctrl=new AbortController();\n        var gtout=setTimeout(function(){ctrl.abort();},120000);\n        return fetch(googleUrl,{\n          method:'POST',\n          signal:ctrl.signal,\n          headers:{'Content-Type':'application\/json'},\n          body:JSON.stringify({contents:[{parts:[{text:promptFinal}]}],generationConfig:{responseModalities:['TEXT','IMAGE']}})\n        })\n        .then(function(r){clearTimeout(gtout);return r.json();})\n        .then(function(gr){\n          if(gr.error) throw new Error(gr.error.message||'Errore Google AI');\n          var parts=(gr.candidates&&gr.candidates[0]&&gr.candidates[0].content&&gr.candidates[0].content.parts)||[];\n          var b64=null;\n          for(var i=0;i<parts.length;i++){if(parts[i].inlineData&&parts[i].inlineData.data){b64=parts[i].inlineData.data;break;}}\n          if(!b64) throw new Error('Nessuna immagine nella risposta Google');\n          \/\/ Salva base64 su WP\n          var fd2=new FormData();\n          fd2.append('action','fioreria_ai_save');fd2.append('nonce',NONCE);\n          fd2.append('image_b64',b64);fd2.append('nonce_key',nonceKey);\n          var _comp=calcComp()||[];var _pal=PAL.find(function(p){return p.id===S.pal;});\n          var _vcomp=calcVerdeComp()||[];\n          fd2.append('meta_protagonisti',_comp.map(function(f){return f.nome;}).join(', '));\n          fd2.append('meta_palette',_pal?_pal.nome:'');\n          fd2.append('meta_budget',S.budget||'');\n          fd2.append('meta_contenitore',S.contenitore||'bouquet');\n          fd2.append('meta_verdi',_vcomp.filter(function(v){return!v.isRiemp;}).map(function(v){return v.nome;}).join(', '));\n          fd2.append('meta_riempitivi',_vcomp.filter(function(v){return v.isRiemp;}).map(function(v){return v.nome;}).join(', '));\n          return fetch(AJAX,{method:'POST',body:fd2}).then(function(r){return r.json();}).then(function(sr){\n            if(!sr.success) throw new Error(sr.data||'Errore salvataggio');\n            cleanup();\n            area.innerHTML='<div style=\"position:relative;line-height:0\"><img decoding=\"async\" src=\"'+sr.data.image_url+'\" alt=\"Bouquet AI\" style=\"width:100%;height:auto;display:block\"><\/div>';\n            if(TOKENS<999)TOKENS=Math.max(0,sr.data.tokens_rimasti);\n            S.aiImg=sr.data.image_url;S.aiImgId=sr.data.wp_img_id||0;S.aiSlug=sr.data.slug||'';\n            btnCart.disabled=false;btnRegen.disabled=false;\n            updTokLabel();updPreview();updSbNav();fcShowShareBtn();toast('Anteprima generata! \ud83c\udf38','ok');\n            checkFuoriStagioneUI();\n            \/\/ In modalit\u00e0 FN mostra disclaimer steli\n            if(S.fioriNumero){\n              var ainEl=document.getElementById('fc-ain-txt');\n              if(ainEl) ainEl.textContent='Riferimento visivo approssimativo \u2014 l\\'ordine far\u00e0 fede al numero di steli in descrizione';\n              var oldDiscl=document.getElementById('fc-fn-disclaimer');\n              if(!oldDiscl){\n                var discl=document.createElement('div');\n                discl.id='fc-fn-disclaimer';\n                discl.style.cssText='background:#fff8e8;border:1px solid #e8c44a;border-radius:10px;padding:10px 14px;font-size:.72rem;color:#7a5a00;line-height:1.6;margin:10px 14px 0';\n                discl.textContent='\u26a0\ufe0f L\\'immagine \u00e8 generata dall\\'intelligenza artificiale che non sempre riesce ad essere precisa nel conteggio dei fiori \u2014 \u00e8 solo un riferimento visivo approssimativo. L\\'ordine far\u00e0 fede al numero di steli indicato in descrizione.';\n                var aibox=document.querySelector('.fc-aibox');\n                if(aibox) aibox.appendChild(discl);\n              }\n            }\n          });\n        });\n      }\n\n      \/\/ \u2500\u2500 FAL.AI (Nano Banana 2 o FLUX Schnell) \u2014 polling browser \u2500\u2500\n      var requestId=d.data.request_id;\n      var falKey=d.data.fal_key;\n      var model=d.data.fal_model; \/\/ 'nano-banana-2' o 'flux\/schnell'\n      var statusUrl='https:\/\/queue.fal.run\/fal-ai\/'+model+'\/requests\/'+requestId+'\/status?logs=0';\n      var attempts=0,maxAttempts=90;\n      function poll(){\n        if(attempts>=maxAttempts){onError('Timeout \u2014 il server AI non ha risposto in tempo');return;}\n        attempts++;\n        fetch(statusUrl,{headers:{'Authorization':'Key '+falKey}})\n          .then(function(r){return r.json();})\n          .then(function(st){\n            var status=st.status||'';\n            if(status==='COMPLETED'){\n              var resultUrl='https:\/\/queue.fal.run\/fal-ai\/'+model+'\/requests\/'+requestId;\n              fetch(resultUrl,{headers:{'Authorization':'Key '+falKey}})\n                .then(function(r){return r.json();})\n                .then(function(res){\n                  var imgUrl=res.images&&res.images[0]?res.images[0].url:null;\n                  if(!imgUrl){onError('Nessuna immagine nel risultato');return;}\n                  \/\/ Salva URL immagine su WP\n                  var fd3=new FormData();\n                  fd3.append('action','fioreria_ai_save_url');fd3.append('nonce',NONCE);\n                  fd3.append('image_url',imgUrl);fd3.append('nonce_key',nonceKey);\n                  var _comp2=calcComp()||[];var _pal2=PAL.find(function(p){return p.id===S.pal;});\n                  var _vcomp2=calcVerdeComp()||[];\n                  fd3.append('meta_protagonisti',_comp2.map(function(f){return f.nome;}).join(', '));\n                  fd3.append('meta_palette',_pal2?_pal2.nome:'');\n                  fd3.append('meta_budget',S.budget||'');\n                  fd3.append('meta_contenitore',S.contenitore||'bouquet');\n                  fd3.append('meta_verdi',_vcomp2.filter(function(v){return!v.isRiemp;}).map(function(v){return v.nome;}).join(', '));\n                  fd3.append('meta_riempitivi',_vcomp2.filter(function(v){return v.isRiemp;}).map(function(v){return v.nome;}).join(', '));\n                  fd3.append('meta_fiori_numero',S.fioriNumero?'1':'');\n                  fd3.append('meta_steli_detail',S.fioriNumero?_comp2.map(function(f){return f.nome+': '+f.steli+' steli';}).join(', '):'');\n                  fd3.append('meta_prezzo_reale',S.fioriNumero&&S.budget?S.budget:'');\n                  fetch(AJAX,{method:'POST',body:fd3}).then(function(r){return r.json();}).then(function(sr){\n                    if(!sr.success) throw new Error(sr.data||'Errore salvataggio');\n                    cleanup();\n                    area.innerHTML='<div style=\"position:relative;line-height:0\"><img decoding=\"async\" src=\"'+sr.data.image_url+'\" alt=\"Bouquet AI\" style=\"width:100%;height:auto;display:block\"><\/div>';\n                    if(TOKENS<999)TOKENS=Math.max(0,sr.data.tokens_rimasti);\n                    S.aiImg=sr.data.image_url;S.aiImgId=sr.data.wp_img_id||0;S.aiSlug=sr.data.slug||'';\n                    btnCart.disabled=false;btnRegen.disabled=false;\n                    updTokLabel();updPreview();updSbNav();fcShowShareBtn();toast('Anteprima generata! \ud83c\udf38','ok');\n                    checkFuoriStagioneUI();\n                  }).catch(function(e){onError(e.message);});\n                }).catch(function(e){onError('Errore recupero risultato: '+e.message);});\n            } else if(status==='FAILED'||status==='CANCELLED'){\n              onError('Generazione fallita (status: '+status+')');\n            } else {\n              setTimeout(poll,1000);\n            }\n          }).catch(function(e){onError('Errore polling: '+e.message);});\n      }\n      setTimeout(poll,1000);\n    })\n    .catch(function(e){onError(e.message);});\n}\n\nfunction addCart(){\n  if(!S.budget){toast('Seleziona un budget','err');return;}\n  var btn=document.getElementById('fc-btn-cart');\n  btn.disabled=true;btn.textContent='Aggiunta\u2026';\n  var pal=PAL.find(function(p){return p.id===S.pal;});\n  var comp=calcComp()||[],vcomp=calcVerdeComp()||[];\n  var pct=getPct(),lav=parseFloat((S.budget*pct).toFixed(2)),bf=parseFloat((S.budget*(1-pct)).toFixed(2));\n  var fd=new FormData();\n  fd.append('action','fioreria_add_to_cart');fd.append('nonce',NONCE);\n  fd.append('order_data',JSON.stringify({\n    palette:pal?pal.nome:'',palette_id:S.pal,budget:S.budget,\n    costo_fiori:bf,costo_lav:lav,\n    protagonisti:comp.map(function(f){return{nome:f.nome,steli:f.steli,costo:f.costo};}),\n    verde:vcomp.filter(function(v){return!v.isRiemp;}).map(function(v){return{nome:v.nome,steli:v.steli,costo:v.costo};}),\n    riempitivi:vcomp.filter(function(v){return v.isRiemp;}).map(function(v){return{nome:v.nome,steli:v.steli,costo:v.costo};}),\n    contenitore:S.contenitore||'bouquet',\n    ai_image:S.aiImg||'',ai_image_id:S.aiImgId||0,ai_prompt:buildPrompt().prompt,\n    fiori_numero:S.fioriNumero?true:false,\n  }));\n  fetch(AJAX,{method:'POST',body:fd})\n    .then(function(r){return r.json();})\n    .then(function(d){if(!d.success)throw new Error(d.data||'Errore');window.location.href=d.data.cart_url;})\n    .catch(function(e){toast('Errore: '+e.message,'err');btn.disabled=false;btn.textContent='Aggiungi al Carrello';});\n}\n\nfunction updPreview(){\n  var pal=PAL.find(function(p){return p.id===S.pal;});\n  var empty=document.getElementById('fp-empty');\n  var hasAnything=S.pal||S.prot.length||S.budget||S.aiImg;\n  if(empty)empty.style.display=hasAnything?'none':'block';\n  var psec=document.getElementById('fp-pal-sec');if(psec)psec.style.display=S.pal?'block':'none';\n  if(pal){\n    var sw=document.getElementById('fp-swatches');if(sw)sw.innerHTML=pal.swatches.map(function(c){return'<div class=\"fc-prev-sw\" style=\"background:'+c+'\"><\/div>';}).join('');\n    var pn=document.getElementById('fp-palname');if(pn)pn.textContent=pal.nome;\n    var ps2=document.getElementById('fp-palsub');if(ps2)ps2.textContent=pal.sub;\n  }\n  var fsec=document.getElementById('fp-fiori-sec');\n  if(fsec) fsec.style.display=S.step>=2?'block':'none';\n  var ptags=document.getElementById('fp-prot-tags');\n  if(ptags){\n    if(S.prot.length){\n      ptags.innerHTML=S.prot.map(function(id){\n        var f=MAG[id];if(!f)return'<span class=\"fc-tag\">'+id+'<\/span>';\n        var ball=f.fuori_stagione?'<span style=\"font-size:.55rem;vertical-align:middle\"> \ud83d\udd34<\/span>':f.stagionale?'<span style=\"font-size:.55rem;vertical-align:middle\"> \ud83d\udfe0<\/span>':'';\n        return'<span class=\"fc-tag\">'+f.nome+ball+'<\/span>';\n      }).join('');\n    } else {\n      ptags.innerHTML='<span style=\"color:var(--bark-light);font-size:.68rem;font-style:italic\">Nessun fiore selezionato<\/span>';\n    }\n  }\n  var vtags=document.getElementById('fp-verde-tags');\n  if(vtags){\n    var verdeHtml=S.verde.map(function(id){var f=MAG[id];return'<span class=\"fc-tag verde\">\ud83c\udf3f '+(f?f.nome:id)+'<\/span>';}).join('');\n    var riempHtml=S.riemp.map(function(id){var f=MAG[id];return'<span class=\"fc-tag riemp\">\u2726 '+(f?f.nome:id)+'<\/span>';}).join('');\n    var combined=verdeHtml+riempHtml;\n    vtags.innerHTML=combined||'<span style=\"color:var(--bark-light);font-size:.68rem;font-style:italic\">Nessuno aggiunto<\/span>';\n  }\n  var contIcons={\n    'bouquet':'https:\/\/www.cammarotafiori.com\/wp-content\/uploads\/2026\/05\/bouquet.png',\n    'cesto':'https:\/\/www.cammarotafiori.com\/wp-content\/uploads\/2026\/05\/cestino.png',\n    'cilindro':'https:\/\/www.cammarotafiori.com\/wp-content\/uploads\/2026\/05\/scatola.png'\n  };\n  var contNames={'bouquet':'Bouquet legato','cesto':'Cesto di vimini','cilindro':'Cilindro\/Cappelliera'};\n  var csec=document.getElementById('fp-cont-sec');\n  if(csec) csec.style.display=(S.step>=3&&S.contenitore)?'block':'none';\n  var cnEl=document.getElementById('fp-cont-name');\n  if(cnEl&&S.contenitore){\n    var icon=contIcons[S.contenitore]?'<img decoding=\"async\" src=\"'+contIcons[S.contenitore]+'\" class=\"fp-cont-icon\" alt=\"\">':'';\n    cnEl.innerHTML=icon+(contNames[S.contenitore]||'');\n  }\n  var bsec=document.getElementById('fp-budget-sec');if(bsec)bsec.style.display=S.budget?'block':'none';\n  var bud=BUDGETS.find(function(b){return b.v===S.budget;});\n  \/\/ Sync bottone carrello laterale\n  \/\/ Legenda stagionale: visibile solo in step 2 (mentre scegli i fiori)\n  var hasStagionale=S.prot.some(function(id){return MAG[id]&&MAG[id].stagionale;});\n  var legenda=document.getElementById('fc-stag-legend');\n  if(legenda) legenda.style.display=(hasStagionale&&S.step===2)?'block':'none';\n  var bv=document.getElementById('fp-bv');if(bv)bv.textContent=S.budget?'\u20ac'+S.budget:'\u2014';\n  var bl=document.getElementById('fp-bl');\n  if(bl){\n    var budLabel=BUDGETS.find(function(b){return b.v===S.budget&&b.v!==0;});\n    bl.textContent=budLabel?budLabel.l:(S.budget?'Importo personalizzato':'');\n  }\n}\nfunction updBadge(){\n  var badge=document.getElementById('fc-totbadge'),hp=document.getElementById('fc-price');\n  if(badge&&hp){if(S.budget){hp.textContent='\u20ac'+S.budget;badge.classList.add('on');}else{hp.textContent='\u2014';badge.classList.remove('on');}}\n  updSbNav();\n}\nfunction updSbNav(){\n  var sbPrev=document.getElementById('fc-sb-prev');\n  var sbNext=document.getElementById('fc-sb-next');\n  var cartSide=document.getElementById('fc-btn-cart-side');\n  if(!sbPrev||!sbNext) return;\n  var showCart=(S.step===4&&S.aiImg);\n  \/\/ Carrello visibile \u2192 mostra \u2190 e \ud83d\uded2, nascondi Avanti\n  if(cartSide) cartSide.style.display=showCart?'block':'none';\n  sbNext.style.display=showCart?'none':'block';\n  sbPrev.style.display=S.step>1?'block':'none';\n  if(!showCart){\n    var mainNext={1:'fc-b1',2:'fc-b2',3:'fc-b3'};\n    var mainBtn=mainNext[S.step]?document.getElementById(mainNext[S.step]):null;\n    if(S.step===4){sbNext.style.display='none';}\n    else{\n      sbNext.disabled=mainBtn?mainBtn.disabled:true;\n      var labels={1:'Scegli i fiori \u2192',2:'Scegli il budget \u2192',3:'\u2726 Genera Anteprima \u2192'};\n      sbNext.textContent=labels[S.step]||'Avanti \u2192';\n    }\n  }\n}\nwindow.fcSbNav=function(dir){\n  var navIds={1:{next:'fc-b1',prev:null},2:{next:'fc-b2',prev:'fc-prev2'},3:{next:'fc-b3',prev:'fc-prev3'},4:{next:null,prev:'fc-prev4'}};\n  var ids=navIds[S.step]||{};\n  var bid=dir===1?ids.next:ids.prev;\n  var btn=bid?document.getElementById(bid):null;\n  if(btn&&!btn.disabled) btn.click();\n};\n\n\/\/ \u2500\u2500 Share panel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction fcShowShareBtn(){\n  if(!S.aiImg) return;\n  \/\/ Blocco tasto destro sull'immagine\n  var wrap=document.getElementById('fc-aiimg');\n  if(wrap){var img=wrap.querySelector('img');if(img)img.addEventListener('contextmenu',function(e){e.preventDefault();});}\n  \/\/ Mostra il pulsante statico\n  var btn=document.getElementById('fc-share-trigger-btn');\n  if(btn) btn.style.display='flex';\n}\n\nwindow.fcOpenShareModal=function fcOpenShareModal(){\n  if(!S.aiImg) return;\n  \/\/ Prepara watermark URL via AJAX \u2014 poi apre la modale\n  var wm1=WM_LINE1||''; var wm2=WM_LINE2||'';\n  var shopName=wm1||wm2||'';\n  var shareText='Ho creato questa composizione floreale'+(shopName?' con il configuratore AI di '+shopName:'')+' \ud83c\udf38';\n  \/\/ URL landing page (se disponibile) o fallback configuratore\n  var landingUrl=S.aiSlug\n    ?HOME_URL+'composizioni-ai\/'+S.aiSlug+'\/'\n    :window.location.href;\n  \/\/ Rimuovi modale precedente\n  var oldOv=document.getElementById('fc-sm-overlay');\n  if(oldOv) oldOv.remove();\n  \/\/ Overlay\n  var overlay=document.createElement('div');\n  overlay.id='fc-sm-overlay';\n  overlay.className='fc-sm-overlay';\n  overlay.addEventListener('click',function(e){if(e.target===overlay)fcCloseShareModal();});\n  \/\/ Modale\n  var modal=document.createElement('div');\n  modal.className='fc-sm';\n  modal.innerHTML=\n    '<div class=\"fc-sm-head\"><span>Condividi il tuo bouquet \ud83c\udf38<\/span><button class=\"fc-sm-close\" title=\"Chiudi\">\u2715<\/button><\/div>'\n   +'<div class=\"fc-sm-grid\" id=\"fc-sm-grid\">'+fcSmItem('','<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#a89e94\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"26\" height=\"26\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"\/><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"\/><\/svg>','#f0ede8','Caricamento\u2026','','')+'<\/div>'\n   +'<div class=\"fc-sm-divider\"><\/div>'\n   +'<div class=\"fc-sm-link\">'\n     +'<div class=\"fc-sm-link-lbl\">Link immagine<\/div>'\n     +'<div class=\"fc-sm-link-row\"><div class=\"fc-sm-link-url\" id=\"fc-sm-url\">\u23f3 preparazione\u2026<\/div><button class=\"fc-sm-copy\" id=\"fc-sm-copy-btn\">Copia<\/button><\/div>'\n   +'<\/div>';\n  overlay.appendChild(modal);\n  document.body.appendChild(overlay);\n  modal.querySelector('.fc-sm-close').addEventListener('click',fcCloseShareModal);\n  document.addEventListener('keydown',fcSmEsc);\n  \/\/ Apri con animazione\n  requestAnimationFrame(function(){overlay.classList.add('open');});\n  \/\/ Genera watermark AJAX\n  var fd=new FormData();\n  fd.append('action','fc_watermark_image');fd.append('nonce',NONCE);\n  fd.append('img_url',S.aiImg);fd.append('line1',wm1);fd.append('line2',wm2);\n  fetch(AJAX,{method:'POST',body:fd})\n    .then(function(r){return r.json();})\n    .then(function(d){\n      var imgUrl=(d.success&&d.data.url)?d.data.url:S.aiImg;\n      var enc=encodeURIComponent(landingUrl);\n      var txt=encodeURIComponent(shareText+'\\n'+landingUrl);\n      var txtNoUrl=encodeURIComponent(shareText);\n      \/\/ Aggiorna URL mostrato (landing page)\n      var urlEl=document.getElementById('fc-sm-url');\n      if(urlEl) urlEl.textContent=landingUrl;\n      var copyBtn=document.getElementById('fc-sm-copy-btn');\n      if(copyBtn) copyBtn.addEventListener('click',function(){\n        navigator.clipboard&&navigator.clipboard.writeText(landingUrl).then(function(){\n          copyBtn.textContent='\u2713 Copiato!';setTimeout(function(){copyBtn.textContent='Copia';},2000);\n        });\n      });\n      \/\/ Popola griglia social\n      var grid=document.getElementById('fc-sm-grid');\n      if(!grid) return;\n      grid.innerHTML='';\n      var socials=[\n        {url:'https:\/\/wa.me\/?text='+txt, ico:'<svg viewBox=\"0 0 448 512\" fill=\"#25D366\" width=\"26\" height=\"26\"><path d=\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27.1 106.2 27.1h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-117zm-157 338.1c-33.1 0-65.6-8.9-93.9-25.7l-6.7-4-69.8 18.3 18.6-68.1-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"\/><\/svg>', bg:'#e9fbf0', label:'WhatsApp', target:'_blank'},\n        {url:'https:\/\/t.me\/share\/url?url='+enc+'&text='+txtNoUrl, ico:'<svg viewBox=\"0 0 24 24\" fill=\"#2CA5E0\" width=\"26\" height=\"26\"><path d=\"M12 0C5.37 0 0 5.37 0 12s5.37 12 12 12 12-5.37 12-12S18.63 0 12 0zm5.94 8.19l-2.03 9.56c-.15.68-.54.85-1.09.53l-3-2.21-1.45 1.39c-.16.16-.3.3-.61.3l.21-3.03 5.54-5.01c.24-.21-.05-.33-.37-.12L6.21 13.9l-2.97-.93c-.65-.2-.66-.65.13-.96l11.59-4.47c.54-.2 1.01.13.98.65z\"\/><\/svg>', bg:'#e6f3fa', label:'Telegram', target:'_blank'},\n        {url:'https:\/\/www.facebook.com\/sharer\/sharer.php?u='+enc, ico:'<svg viewBox=\"0 0 24 24\" fill=\"#1877F2\" width=\"26\" height=\"26\"><path d=\"M24 12.07C24 5.41 18.63 0 12 0S0 5.41 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.04V9.41c0-3.02 1.8-4.7 4.54-4.7 1.31 0 2.68.24 2.68.24v2.97h-1.51c-1.49 0-1.95.93-1.95 1.88v2.27h3.32l-.53 3.49h-2.79V24C19.61 23.1 24 18.1 24 12.07z\"\/><\/svg>', bg:'#e8f1fe', label:'Facebook', target:'_blank'},\n        {url:'mailto:?subject='+encodeURIComponent('Il mio Bouquet AI!')+'&body='+txt, ico:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#5a5248\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"26\" height=\"26\"><path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\/><polyline points=\"22,6 12,13 2,6\"\/><\/svg>', bg:'#f0ede8', label:'Email', target:'_self'},\n      ];\n      socials.forEach(function(s){\n        var el=fcSmItem(s.url,s.ico,s.bg,s.label,s.target||'_blank',s.download||'');\n        var div=document.createElement('div');div.innerHTML=el;\n        var a=div.firstChild;\n        if(s.note){var sm=document.createElement('span');sm.style.cssText='font-size:.55rem;color:#aaa;margin-top:-4px';sm.textContent=s.note;a.querySelector('span').insertAdjacentElement('afterend',sm);}\n        grid.appendChild(a);\n      });\n    })\n    .catch(function(){\n      \/\/ Fallback: usa img originale\n      var urlEl=document.getElementById('fc-sm-url');\n      if(urlEl) urlEl.textContent=S.aiImg;\n    });\n}\n\nfunction fcSmItem(url,ico,bg,label,target,dl){\n  var tag=url?'a':'div';\n  var attrs=url?'href=\"'+url+'\" target=\"'+(target||'_blank')+'\" rel=\"noopener\"'+(dl?' download=\"'+dl+'\"':''):'';\n  return '<'+tag+' '+attrs+' class=\"fc-sm-item\"><div class=\"fc-sm-ico\" style=\"background:'+bg+'\">'+ico+'<\/div><span>'+label+'<\/span><\/'+tag+'>';\n}\n\nfunction fcCloseShareModal(){\n  var ov=document.getElementById('fc-sm-overlay');\n  if(ov){ov.classList.remove('open');setTimeout(function(){if(ov.parentNode)ov.remove();},400);}\n  document.removeEventListener('keydown',fcSmEsc);\n}\nfunction fcSmEsc(e){if(e.key==='Escape')fcCloseShareModal();}\n\nfunction updTokLabel(){\n  var tl=document.getElementById('fc-toklbl');if(!tl)return;\n  var dot=document.querySelector('.fc-tok-d');\n  if(TOKENS>=999){\n    tl.textContent='Anteprime illimitate \ud83d\udc51';\n    if(dot) dot.style.background='var(--botanical)';\n  } else if(TOKENS>0){\n    var msg=TOKENS===1?'Ti rimane 1 anteprima gratuita oggi':'Ti rimangono '+TOKENS+' anteprime gratuite oggi';\n    tl.textContent=msg;\n    if(dot) dot.style.background=TOKENS<=1?'#c44040':'var(--botanical-mid)';\n  } else {\n    tl.textContent='Anteprime esaurite per oggi';\n    if(dot) dot.style.background='#c44040';\n  }\n}\nfunction toast(msg,type){\n  var t=document.getElementById('fc-toast');\n  if(!t) return;\n  t.textContent=msg;t.className='show'+(type?' '+type:'');\n  clearTimeout(t._t);t._t=setTimeout(function(){t.className='';},3500);\n}\ndocument.addEventListener('DOMContentLoaded',function(){\n  try{\n    renderPal();renderBudget();updCounters();updTokLabel();updPreview();\n    \/\/ Solo mobile: header absolute + scroll 85px al caricamento, ri-scrolla se torna a 0\n      \/\/ Mobile: scrolla al configuratore dopo il caricamento\n    if(window.innerWidth<=768){\n      setTimeout(function(){\n        var fcw=document.getElementById('fc-wrap');\n        if(fcw) fcw.scrollIntoView({behavior:'smooth',block:'start'});\n      },600);\n    }\n        function on(id,ev,fn){var el=document.getElementById(id);if(el)el.addEventListener(ev,fn);}\n    on('fsd1','click',function(){if(S.step>1)goStep(1);});\n    on('fsd2','click',function(){if(S.step>2)goStep(2);});\n    on('fsd3','click',function(){if(S.step>3)goStep(3);});\n    on('fc-b1','click',function(){if(!S.pal)return;renderStep2();goStep(2);});\n    on('fc-prev2','click',function(){fciHide();goStep(1);});\n    on('fc-b2','click',function(){\n      if(!S.prot.length)return;\n      if(S.fioriNumero){\n        \/\/ Calcola prezzo automatico: steli*prezzo + lavorazione, arrotonda a 5\u20ac\n        var comp=calcComp()||[];\n        var totFiori=comp.reduce(function(s,f){return s+f.costo;},0);\n        var pct=getPct();\n        var totLord=totFiori\/(1-pct);\n        var arrot=Math.ceil(totLord\/5)*5;\n        S.budget=arrot;\n      }\n      renderBudget();goStep(3);fciUpdate();\n    });\n    document.querySelectorAll('.fc-cont-card').forEach(function(card){\n      card.addEventListener('click',function(){\n        document.querySelectorAll('.fc-cont-card').forEach(function(c2){c2.classList.remove('sel');});\n        this.classList.add('sel');\n        S.contenitore=this.dataset.cont;\n        \/\/ Reset budget \u2014 va scelto di nuovo per la nuova tipologia\n        S.budget=null;\n        document.getElementById('fc-b3').disabled=true;\n        renderBudget();\n        updCbox();\n        updPreview();\n        updBadge();\n      });\n    });\n    on('fc-prev3','click',function(){goStep(2);});\n    on('fc-b3','click',function(){if(!S.budget)return;goStep(4);updCbox();genAI();});\n    on('fc-prev4','click',function(){goStep(3);});\n    on('fc-btn-regen','click',genAI);\n    on('fc-btn-cart','click',addCart);\n\n    \/\/ checkFuoriStagioneUI: gli avvisi sono ora inline nel riepilogo \u2014 questa funzione \u00e8 un no-op\n    function checkFuoriStagioneUI(){\n      var old=document.getElementById('fc-fuori-banner');\n      if(old) old.remove();\n    }\n  }catch(e){console.error('[Fioreria]',e);}\n});\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-5","page","type-page","status-publish"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Configuratore AI - Cammarota Fiori<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configuratore AI - Cammarota Fiori\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/\" \/>\n<meta property=\"og:site_name\" content=\"Cammarota Fiori\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-15T17:06:09+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/configuratore\\\/\",\"url\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/configuratore\\\/\",\"name\":\"Configuratore AI - Cammarota Fiori\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/#website\"},\"datePublished\":\"2026-06-08T18:27:09+00:00\",\"dateModified\":\"2026-06-15T17:06:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/configuratore\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/configuratore\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/configuratore\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuratore AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/#website\",\"url\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/\",\"name\":\"Cammarota Fiori\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.domyflor.com\\\/cammarotafiori\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Configuratore AI - Cammarota Fiori","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/","og_locale":"it_IT","og_type":"article","og_title":"Configuratore AI - Cammarota Fiori","og_url":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/","og_site_name":"Cammarota Fiori","article_modified_time":"2026-06-15T17:06:09+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tempo di lettura stimato":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/","url":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/","name":"Configuratore AI - Cammarota Fiori","isPartOf":{"@id":"https:\/\/www.domyflor.com\/cammarotafiori\/#website"},"datePublished":"2026-06-08T18:27:09+00:00","dateModified":"2026-06-15T17:06:09+00:00","breadcrumb":{"@id":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.domyflor.com\/cammarotafiori\/configuratore\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.domyflor.com\/cammarotafiori\/"},{"@type":"ListItem","position":2,"name":"Configuratore AI"}]},{"@type":"WebSite","@id":"https:\/\/www.domyflor.com\/cammarotafiori\/#website","url":"https:\/\/www.domyflor.com\/cammarotafiori\/","name":"Cammarota Fiori","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.domyflor.com\/cammarotafiori\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"}]}},"_links":{"self":[{"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/pages\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":1,"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/pages\/5\/revisions"}],"predecessor-version":[{"id":88,"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/pages\/5\/revisions\/88"}],"wp:attachment":[{"href":"https:\/\/www.domyflor.com\/cammarotafiori\/wp-json\/wp\/v2\/media?parent=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}