{"id":7880,"date":"2026-06-22T13:35:14","date_gmt":"2026-06-22T17:35:14","guid":{"rendered":"https:\/\/flakybakery.ca\/?page_id=7880"},"modified":"2026-06-30T00:30:34","modified_gmt":"2026-06-30T04:30:34","slug":"festivalfatias","status":"publish","type":"page","link":"https:\/\/flakybakery.ca\/en\/festivalfatias\/","title":{"rendered":"Festival de Fatias Flaky"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7880\" class=\"elementor elementor-7880\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ae63082 e-flex e-con-boxed e-con e-parent\" data-id=\"ae63082\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-154e02b elementor-widget elementor-widget-image\" data-id=\"154e02b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/flakybakery.ca\/wp-content\/uploads\/elementor\/thumbs\/1dd1a15a-41b0-407b-8b81-c1d2b1604a08-rrif1lpc1omy562al4m6yyr7dntytf2g12efjttka0.webp\" title=\"1dd1a15a-41b0-407b-8b81-c1d2b1604a08\" alt=\"1dd1a15a-41b0-407b-8b81-c1d2b1604a08\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0d83679 e-flex e-con-boxed e-con e-parent\" data-id=\"0d83679\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b5300da elementor-widget elementor-widget-html\" data-id=\"b5300da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>.flaky-ff{max-width:560px;margin:0 auto;padding:0 14px 28px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;color:#222}\n.flaky-ff *{box-sizing:border-box}\n.flaky-ff .ff-hero{position:relative;text-align:center;padding:18px 6px 8px}\n.flaky-ff .ff-hero h1{font-size:26px;font-weight:900;margin:0 0 6px;color:var(--ff-accent)}\n.flaky-ff .ff-hero p{margin:0;color:#666;font-size:14px;line-height:1.4}\n\/* ----- Marketing ----- *\/\n.flaky-ff .ff-badge-limited{display:inline-block;background:var(--ff-accent);color:#fff;font-size:12px;font-weight:900;letter-spacing:.3px;text-transform:uppercase;border-radius:999px;padding:5px 14px;margin-bottom:10px;box-shadow:0 3px 10px rgba(214,51,108,.35);transform:rotate(-2deg);animation:ffpulse 1.8s ease-in-out infinite}\n@keyframes ffpulse{0%,100%{transform:rotate(-2deg) scale(1)}50%{transform:rotate(-2deg) scale(1.05)}}\n.flaky-ff .ff-promo-gift{display:flex;align-items:center;gap:8px;justify-content:center;text-align:center;background:#2b1a0f;color:#ffe9b8;font-size:13.5px;font-weight:800;line-height:1.35;border-radius:14px;padding:11px 14px;margin:6px 0 2px}\n.flaky-ff .ff-promo-giant{position:relative;overflow:hidden;text-align:center;background:linear-gradient(135deg,var(--ff-accent),#a01548);color:#fff;border-radius:16px;padding:16px 16px 18px;margin:14px 0 2px;box-shadow:0 6px 18px rgba(214,51,108,.28)}\n.flaky-ff .ff-promo-giant-title{font-size:20px;font-weight:900;letter-spacing:.4px;text-transform:uppercase;margin-bottom:4px}\n.flaky-ff .ff-promo-giant-text{font-size:13px;font-weight:600;opacity:.95;line-height:1.4;max-width:420px;margin:0 auto}\n.flaky-ff .ff-step{display:flex;align-items:center;gap:8px;font-weight:800;font-size:16px;margin:20px 2px 10px}\n.flaky-ff .ff-step-n{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--ff-accent);color:#fff;font-size:13px;font-weight:800}\n.flaky-ff .ff-counter{margin-left:auto;font-size:13px;font-weight:800;color:var(--ff-accent);background:#fff;border:1.5px solid var(--ff-accent);border-radius:999px;padding:2px 10px}\n.flaky-ff .ff-deli{background:#fff;border:1.5px solid #eee;border-radius:14px;padding:12px 14px;margin:8px 0 4px}\n.flaky-ff .ff-deli-need{border-color:var(--ff-accent);background:#fff5f8}\n.flaky-ff .ff-deli-title{font-weight:800;font-size:15px}\n.flaky-ff .ff-deli-hint{font-size:12px;color:#888;margin-top:2px}\n.flaky-ff .ff-deli-cur{font-size:14px}\n.flaky-ff .ff-deli-cur strong{color:var(--ff-accent)}\n.flaky-ff .ff-deli-rules{margin-top:10px;background:#fff5f8;border:1px dashed var(--ff-accent);border-radius:10px;padding:8px 12px}\n.flaky-ff .ff-deli-rules-tag{font-size:12px;font-weight:900;color:var(--ff-accent);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px}\n.flaky-ff .ff-deli-rule{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:14px;padding:2px 0}\n.flaky-ff .ff-deli-rule>span:first-child{color:#666}\n.flaky-ff .ff-deli-rule strong{color:#222;font-weight:900}\n.flaky-ff .ff-deli-rule s{color:#aaa;font-size:12px;margin-left:4px}\n.flaky-ff .ff-loc-change{margin-left:8px;background:none;border:0;color:var(--ff-accent);font-weight:800;font-size:13px;cursor:pointer;text-decoration:underline}\n.flaky-ff .ff-loc-select{width:100%;padding:11px;border:1.5px solid var(--ff-accent);border-radius:10px;font-size:15px;background:#fff;margin-top:6px}\n.flaky-ff .ff-deli-flash{animation:ffflash .9s ease}\n@keyframes ffflash{0%,100%{box-shadow:none}40%{box-shadow:0 0 0 4px rgba(0,0,0,.12)}}\n.flaky-ff .ff-tiers{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n.flaky-ff .ff-tier{position:relative;display:flex;flex-direction:column;gap:2px;align-items:flex-start;background:#fff;border:2px solid #eee;border-radius:14px;padding:12px 12px 14px;cursor:pointer;text-align:left;transition:all .12s}\n.flaky-ff .ff-tier:active{transform:scale(.98)}\n.flaky-ff .ff-tier.ff-on{border-color:var(--ff-accent);box-shadow:0 4px 14px rgba(0,0,0,.08)}\n.flaky-ff .ff-tier-count{font-size:13px;font-weight:700;color:#888}\n.flaky-ff .ff-tier-price{font-size:22px;font-weight:900;color:#222}\n.flaky-ff .ff-tier-per{font-size:12px;color:#666}\n.flaky-ff .ff-tier-save{margin-top:6px;font-size:11px;font-weight:800;color:#fff;background:var(--ff-accent);border-radius:999px;padding:2px 8px}\n.flaky-ff .ff-tier-best{background:#e8a317;color:#2b1a0f}\n.flaky-ff .ff-flavors{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n.flaky-ff .ff-flavor{position:relative;background:#fff;border:1.5px solid #eee;border-radius:14px;overflow:hidden;display:flex;flex-direction:column}\n.flaky-ff .ff-flavor.ff-sold .ff-flavor-img::before{content:\"\";position:absolute;inset:0;background:rgba(245,245,245,.6);z-index:1}\n.flaky-ff .ff-flavor.ff-sold .ff-flavor-name{color:#999}\n.flaky-ff .ff-flavor.ff-sold .ff-stepper{opacity:.4;pointer-events:none}\n.flaky-ff .ff-flavor-stamp{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-14deg);background:rgba(214,51,108,.95);color:#fff;font-weight:900;font-size:15px;letter-spacing:1.5px;text-transform:uppercase;border:2.5px solid #fff;border-radius:8px;padding:5px 14px;box-shadow:0 2px 10px rgba(0,0,0,.35);pointer-events:none;z-index:2;white-space:nowrap}\n.flaky-ff .ff-flavor.ff-picked{border-color:var(--ff-accent)}\n.flaky-ff .ff-flavor-img{position:relative;width:100%;aspect-ratio:1\/1;background:#f3f3f3 center\/cover no-repeat}\n.flaky-ff .ff-flavor-name{font-size:13px;font-weight:700;padding:8px 8px 4px;line-height:1.2;flex:1}\n.flaky-ff .ff-flavor-left{display:inline-block;margin-top:3px;font-size:10px;font-weight:800;color:#b32d2e;background:#fff0f0;border:1px solid #f3c0c0;border-radius:999px;padding:1px 7px}\n.flaky-ff .ff-step-caldas[hidden]{display:none}\n.flaky-ff .ff-caldas{display:flex;flex-direction:column;gap:8px}\n.flaky-ff .ff-caldas[hidden]{display:none}\n.flaky-ff .ff-calda-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1.5px solid #eee;border-radius:12px;padding:10px 12px}\n.flaky-ff .ff-calda-flavor{font-size:14px;font-weight:800}\n.flaky-ff .ff-calda-flavor .ff-calda-n{color:#aaa;font-weight:700;margin-right:4px}\n.flaky-ff .ff-calda-sel{flex:0 0 auto;max-width:55%;padding:8px 10px;border:1.5px solid var(--ff-accent);border-radius:9px;font-size:14px;background:#fff;color:#222}\n.flaky-ff .ff-stepper{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 10px}\n.flaky-ff .ff-stepper button{width:34px;height:34px;border-radius:9px;border:1.5px solid var(--ff-accent);background:#fff;color:var(--ff-accent);font-size:20px;font-weight:800;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}\n.flaky-ff .ff-stepper button:disabled{opacity:.3;cursor:not-allowed}\n.flaky-ff .ff-plus{background:var(--ff-accent)!important;color:#fff!important}\n.flaky-ff .ff-qty{font-size:17px;font-weight:900;min-width:24px;text-align:center}\n.flaky-ff .ff-spacer{height:10px}\n.flaky-ff.ff-disabled-flavors .ff-flavors{opacity:.45;pointer-events:none}\n.flaky-ff .ff-bar{display:flex;align-items:center;gap:12px;background:#fff;border:1.5px solid #eee;border-radius:16px;box-shadow:0 4px 14px rgba(0,0,0,.06);padding:14px;margin:18px 0 6px}\n.flaky-ff .ff-bar-info{display:flex;flex-direction:column;line-height:1.1;min-width:90px}\n.flaky-ff .ff-bar-total{font-size:18px;font-weight:900}\n.flaky-ff .ff-bar-sub{font-size:12px;color:#666}\n.flaky-ff .ff-cta{flex:1;background:var(--ff-accent);color:#fff;border:0;border-radius:12px;padding:14px;font-size:16px;font-weight:800;cursor:pointer}\n.flaky-ff .ff-cta:disabled{opacity:.4;cursor:not-allowed}\n.flaky-ff .ff-cta.ff-loading{opacity:.7;pointer-events:none}\n\/* ----- Upsell modal ----- *\/\n.flaky-ff .ff-up-overlay{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center}\n.flaky-ff .ff-up-overlay[hidden]{display:none}\n.flaky-ff .ff-up-sheet{position:relative;width:100%;max-width:560px;background:#fff;border-radius:18px 18px 0 0;padding:18px 16px calc(16px + env(safe-area-inset-bottom));max-height:88vh;overflow:auto;box-shadow:0 -8px 30px rgba(0,0,0,.2);animation:ffup .25s ease}\n@keyframes ffup{from{transform:translateY(40px);opacity:.6}to{transform:translateY(0);opacity:1}}\n.flaky-ff .ff-up-close{position:absolute;top:10px;right:12px;width:34px;height:34px;border-radius:50%;border:0;background:#f3f3f3;font-size:20px;line-height:1;cursor:pointer;color:#444}\n.flaky-ff .ff-up-added{display:inline-block;font-size:12px;font-weight:800;color:#137a3f;background:#eafaf0;border:1px solid #bfe8cf;border-radius:999px;padding:4px 10px;margin-bottom:10px}\n\/* Pedido m\u00ednimo dentro da oferta: o aviso e a solu\u00e7\u00e3o na mesma tela. *\/\n.flaky-ff .ff-up-min{font-size:13px;font-weight:700;line-height:1.35;border-radius:10px;padding:9px 12px;margin-bottom:10px}\n.flaky-ff .ff-up-min[hidden]{display:none}\n.flaky-ff .ff-up-min.ff-falta{color:#b32d2e;background:#fdecea;border:1px solid #f5c2c0}\n.flaky-ff .ff-up-min.ff-ok{color:#137a3f;background:#eafaf0;border:1px solid #bfe8cf}\n.flaky-ff .ff-up-head h2{font-size:21px;font-weight:900;margin:0 0 4px;color:var(--ff-accent)}\n.flaky-ff .ff-up-head p{margin:0 0 12px;color:#666;font-size:14px;line-height:1.4}\n.flaky-ff .ff-up-list{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}\n.flaky-ff .ff-up-card{display:flex;gap:12px;border:1.5px solid #eee;border-radius:14px;padding:10px;align-items:center}\n.flaky-ff .ff-up-card-added{border-color:#bfe8cf;background:#f6fef9}\n.flaky-ff .ff-up-incart{display:inline-block;margin-top:4px;font-size:11px;font-weight:800;color:#137a3f;background:#eafaf0;border:1px solid #bfe8cf;border-radius:999px;padding:2px 8px}\n.flaky-ff .ff-up-img{position:relative;flex:0 0 84px;width:84px;height:84px;border-radius:10px;background:#f3f3f3 center\/cover no-repeat}\n.flaky-ff .ff-up-badge{position:absolute;top:5px;left:5px;background:var(--ff-accent);color:#fff;font-size:10px;font-weight:800;border-radius:999px;padding:2px 7px}\n.flaky-ff .ff-up-body{flex:1;min-width:0}\n.flaky-ff .ff-up-name{font-size:15px;font-weight:800;line-height:1.2}\n.flaky-ff .ff-up-desc{font-size:12px;color:#777;line-height:1.3;margin:2px 0 6px}\n.flaky-ff .ff-up-price{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}\n.flaky-ff .ff-up-was{font-size:13px;color:#aaa;text-decoration:line-through}\n.flaky-ff .ff-up-now{font-size:17px;font-weight:900;color:var(--ff-accent)}\n.flaky-ff .ff-up-add{background:var(--ff-accent);color:#fff;border:0;border-radius:10px;padding:9px 16px;font-size:14px;font-weight:800;cursor:pointer}\n.flaky-ff .ff-up-add:disabled{opacity:.6;cursor:not-allowed}\n.flaky-ff .ff-up-skip{width:100%;background:none;border:0;color:#666;font-size:14px;font-weight:700;padding:10px;cursor:pointer;text-decoration:underline}\n\/* ----- Upsell: etapa de op\u00e7\u00f5es do produto ----- *\/\n.flaky-ff .ff-up-detail[hidden]{display:none}\n.flaky-ff .ff-up-back{background:none;border:0;color:var(--ff-accent);font-size:14px;font-weight:800;padding:2px 0 8px;cursor:pointer}\n.flaky-ff .ff-up-detail-name{font-size:19px;font-weight:900;margin:0 0 12px;color:#222}\n.flaky-ff .ff-up-opts[hidden]{display:none}\n.flaky-ff .ff-opt-group{border:1.5px solid #eee;border-radius:14px;padding:12px;margin-bottom:12px}\n.flaky-ff .ff-opt-gname{font-size:15px;font-weight:800;margin-bottom:8px}\n.flaky-ff .ff-opt-req{font-size:10px;font-weight:800;color:#fff;background:var(--ff-accent);border-radius:999px;padding:2px 7px;vertical-align:middle}\n.flaky-ff .ff-opt-bar{font-size:12px;font-weight:700;color:var(--ff-accent);background:#fff5f8;border-radius:8px;padding:5px 10px;margin-bottom:8px;display:inline-block}\n.flaky-ff .ff-opt-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid #f1f1f1}\n.flaky-ff .ff-opt-row:first-of-type{border-top:0}\n.flaky-ff .ff-opt-oname{font-size:14px;font-weight:600}\n.flaky-ff .ff-opt-oname small{color:#888;font-weight:700}\n.flaky-ff .ff-opt-stepper{display:flex;align-items:center;gap:10px}\n.flaky-ff .ff-opt-stepper button{width:32px;height:32px;border-radius:8px;border:1.5px solid var(--ff-accent);background:#fff;color:var(--ff-accent);font-size:18px;font-weight:800;line-height:1;cursor:pointer}\n.flaky-ff .ff-opt-stepper button:disabled{opacity:.3;cursor:not-allowed}\n.flaky-ff .ff-opt-q{width:48px;text-align:center;font-size:16px;font-weight:900;color:#222;background:#fff;border:1.5px solid #ddd;border-radius:8px;padding:6px 2px;-moz-appearance:textfield;appearance:textfield}\n.flaky-ff .ff-opt-q:focus{outline:none;border-color:var(--ff-accent)}\n.flaky-ff .ff-opt-q::-webkit-outer-spin-button,.flaky-ff .ff-opt-q::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n.flaky-ff .ff-opt-choice{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:14px;font-weight:600;cursor:pointer}\n.flaky-ff .ff-opt-choice small{color:#888;font-weight:700}\n.flaky-ff .ff-opt-text{width:100%;border:1.5px solid #ddd;border-radius:10px;padding:9px;font-size:14px}\n.flaky-ff .ff-up-detail-err{background:#fdecec;color:#b71c1c;border:1px solid #f5c2c2;border-radius:10px;padding:9px 12px;font-size:13px;font-weight:700;margin-bottom:10px}\n.flaky-ff .ff-up-detail-err[hidden]{display:none}\n.flaky-ff .ff-up-confirm{width:100%;background:var(--ff-accent);color:#fff;border:0;border-radius:12px;padding:14px;font-size:16px;font-weight:800;cursor:pointer}\n.flaky-ff .ff-up-confirm:disabled{opacity:.6;cursor:not-allowed}\n.flaky-ff .ff-up-detail-price{display:flex;align-items:baseline;gap:8px;justify-content:flex-end;margin:6px 0 10px}\n.flaky-ff .ff-up-dp-label{font-size:12px;font-weight:700;color:#888}\n.flaky-ff .ff-up-dp-was{font-size:14px;color:#aaa;text-decoration:line-through}\n.flaky-ff .ff-up-dp-now{font-size:22px;font-weight:900;color:var(--ff-accent)}\n\/* ----- Tabs de m\u00e9todo (Entrega \/ Retirada) ----- *\/\n.flaky-ff .ff-method-tabs{display:flex;gap:8px;margin-bottom:10px}\n.flaky-ff .ff-method-tab{flex:1;background:#fff;border:1.5px solid #eee;border-radius:10px;padding:9px;font-size:14px;font-weight:800;color:#666;cursor:pointer}\n.flaky-ff .ff-method-tab.ff-on{border-color:var(--ff-accent);color:var(--ff-accent);background:#fff5f8}\n\/* Esconde o ticker de cashback (fidelidade) nesta p\u00e1gina \u2014 atrapalha o modal\/barra. *\/\n#wl-cashback-ticker{display:none!important}\n\n\/* Bloco de fam\u00edlia extra (morangos do amor) e o rodap\u00e9 \u00fanico de pagamento. *\/\n.flaky-ff.ff-bloco-extra{margin-top:8px;padding-top:18px;border-top:2px dashed #f1d6e1}\n.flaky-ff .ff-bloco-titulo{font-size:20px;font-weight:900;color:var(--ff-accent);text-align:center;margin:0 0 12px}\n\/* `hidden` \u00e9 atributo, e `display:flex` aqui embaixo venceria a regra do navegador \u2014\n   era por isso que a barra de pagamento aparecia com a p\u00e1gina ainda vazia. *\/\n.ff-rodape[hidden]{display:none!important}\n.ff-rodape{position:sticky;bottom:0;z-index:20;max-width:560px;margin:0 auto;display:flex;align-items:center;gap:12px;\n  background:#fff;border:1.5px solid #eee;border-top:2px solid var(--ff-accent,#d6336c);border-radius:16px 16px 0 0;\n  box-shadow:0 -6px 20px rgba(0,0,0,.10);padding:12px 14px;\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}\n.ff-rodape-itens{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}\n.ff-rodape-linha{display:flex;align-items:baseline;gap:10px}\n.ff-rodape-resumo{font-size:14px;font-weight:800;color:#222;line-height:1.25;\n  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.ff-rodape-total{font-size:17px;font-weight:900;color:#111;margin-left:auto;white-space:nowrap}\n.ff-rodape-falta{font-size:12px;font-weight:700;color:#8a5a00}\n.ff-rodape-minimo{font-size:12.5px;font-weight:800;color:#b32d2e;background:#fdecea;\n  border-radius:8px;padding:4px 9px;align-self:flex-start}\n.ff-rodape-brinde{font-size:12.5px;font-weight:800;color:#8a5a00;background:#fff6e0;\n  border-radius:8px;padding:4px 9px;align-self:flex-start}\n.ff-rodape-brinde.ff-ganhou{color:#1b5e20;background:#e8f5e9}\n.ff-rodape-pagar:disabled{opacity:.45;cursor:not-allowed}\n.flaky-ff .ff-limpar{background:none;border:1.5px solid #ddd;border-radius:10px;color:#777;\n  font-size:13px;font-weight:700;padding:10px 12px;cursor:pointer;white-space:nowrap}\n.flaky-ff .ff-limpar:hover{border-color:#b32d2e;color:#b32d2e}\n\/* Telas estreitas: o resumo pode quebrar, o bot\u00e3o nunca encolhe abaixo do leg\u00edvel. *\/\n@media (max-width:380px){\n  .ff-rodape{gap:8px;padding:10px 12px}\n  .ff-rodape-resumo{font-size:13px}\n  .ff-rodape-pagar{padding:12px 14px;font-size:14px}\n}\n.ff-rodape-vazio{max-width:560px;margin:0 auto 18px;padding:14px;text-align:center;font-size:13px;\n  color:#888;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}\n.ff-rodape-pagar{background:var(--ff-accent,#d6336c);color:#fff;border:0;border-radius:12px;padding:14px 18px;\n  font-size:15px;font-weight:800;cursor:pointer;white-space:nowrap}<\/style>\t\t<div class=\"flaky-ff\" style=\"--ff-accent: #d6336c;\">\n\t\t\t<div class=\"ff-hero\">\n\t\t\t\t<div class=\"ff-badge-limited\">\ud83d\udd25 Quantidades limitadas!<\/div>\t\t\t\t<h1>Festival de Fatias + Morango<\/h1>\n\t\t\t\t<p>Monte sua caixa: escolha o tamanho e os sabores.<\/p>\n\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"ff-promo-gift\">\ud83c\udf81 Pedidos acima de $50 ganham 15 mini salgados congelados sortidos de brinde!<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"ff-deli ff-deli-need\">\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-method-tabs\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-method-tab ff-on\" data-ff-method=\"delivery\">\ud83d\udef5 Entrega<\/button>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-method-tab \" data-ff-method=\"takeaway\">\ud83c\udfec Retirada<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-deli-title\">\ud83d\udccd Escolha sua regi\u00e3o de entrega<\/div>\n\t\t\t\t\t\t\t<div class=\"ff-deli-hint\">Precisamos da regi\u00e3o pra calcular a entrega.<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<select class=\"ff-loc-select\">\n\t\t\t\t\t\t\t<option value=\"\">Selecione a regi\u00e3o...<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"gta\" >Toronto \/ York Region<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"mississauga\" >Mississauga<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"whitchurch-stouffville\" >Whitchurch-Stouffville<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"scarborough\" >Scarborough<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/select>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"ff-step\"><span class=\"ff-step-n\">1<\/span> Fatias<\/div>\n\t\t\t<div class=\"ff-tiers\">\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"1\" data-price=\"14\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">1 fatia<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$14.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"2\" data-price=\"28\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">2 fatias<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$28.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"4\" data-price=\"56\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">4 fatias<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$56.00<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-save ff-tier-best\">Mais vendido!<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"6\" data-price=\"78\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">6 fatias<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$78.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"12\" data-price=\"156\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">12 fatias<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$156.00<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-save\">Economize $12.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t<div class=\"ff-step ff-step-flavors\"><span class=\"ff-step-n\">2<\/span> Monte os sabores <span class=\"ff-counter\">0\/0<\/span><\/div>\n\t\t\t<div class=\"ff-flavors\">\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor ff-sold\" data-idx=\"0\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/Screenshot_1.png.webp')\">\n\t\t\t\t\t\t\t<span class=\"ff-flavor-stamp\">Sold Out<\/span>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Bombom de Morango\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\" disabled>&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\" disabled>+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor\" data-idx=\"1\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/pudim.jpeg.webp')\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Pudim\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor ff-sold\" data-idx=\"2\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/Screenshot_4.png.webp')\">\n\t\t\t\t\t\t\t<span class=\"ff-flavor-stamp\">Sold Out<\/span>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Maracuja\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\" disabled>&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\" disabled>+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor ff-sold\" data-idx=\"3\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/bolo-de-chocolate-dois-amores-BslpJSzS-rotated.jpg.webp')\">\n\t\t\t\t\t\t\t<span class=\"ff-flavor-stamp\">Sold Out<\/span>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Dois Amores\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\" disabled>&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\" disabled>+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor ff-sold\" data-idx=\"4\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/ninho-com-morango.jpeg.webp')\">\n\t\t\t\t\t\t\t<span class=\"ff-flavor-stamp\">Sold Out<\/span>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Ninho com Morango\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\" disabled>&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\" disabled>+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor\" data-idx=\"5\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-30-at-3.04.15-PM.jpeg')\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Prestigio\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"ff-step ff-step-caldas\" hidden><span class=\"ff-step-n\">3<\/span> Escolha a calda de cada fatia<\/div>\n\t\t\t\t<div class=\"ff-caldas\" hidden><\/div>\n\t\t\t\n\t\t\t\n\t\t\t<div class=\"ff-spacer\"><\/div>\n\t\t\t<div class=\"ff-bar\">\n\t\t\t\t<div class=\"ff-bar-info\">\n\t\t\t\t\t<span class=\"ff-bar-total\">Selecione a quantidade de fatias<\/span>\n\t\t\t\t\t<span class=\"ff-bar-sub\"><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<button type=\"button\" class=\"ff-limpar\" hidden>Remover<\/button>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<div class=\"ff-up-overlay\" hidden>\n\t\t\t\t<div class=\"ff-up-sheet\" role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t\t<button type=\"button\" class=\"ff-up-close\" aria-label=\"Fechar\">&times;<\/button>\n\n\t\t\t\t\t<!-- Etapa 1: lista de ofertas -->\n\t\t\t\t\t<div class=\"ff-up-main\">\n\t\t\t\t\t\t<div class=\"ff-up-added\">\u2713 Caixa adicionada ao carrinho<\/div>\n\t\t\t\t\t\t<!-- Pedido m\u00ednimo: cobrado AQUI, n\u00e3o na montagem. Aqui a oferta\n\t\t\t\t\t\t     abaixo \u00e9 a resposta imediata; l\u00e1 atr\u00e1s seria s\u00f3 um susto. -->\n\t\t\t\t\t\t<div class=\"ff-up-min\" hidden aria-live=\"polite\"><\/div>\n\t\t\t\t\t\t<div class=\"ff-up-head\">\n\t\t\t\t\t\t\t<h2>Que tal aproveitar a entrega?<\/h2>\n\t\t\t\t\t\t\t<p>Aproveite um desconto exclusivo s\u00f3 agora, antes de pagar.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-up-list\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-card\">\n\t\t\t\t\t\t\t\t\t<div class=\"ff-up-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/03\/047a264619cbe1ced0a701247531ecae-1.png.webp')\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-badge\">10% OFF<\/span>\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-up-body\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-name\">15 Doces Gourmet<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-desc\">Fa\u00e7a sua sele\u00e7\u00e3o de 15 doce Gourmet<\/div>\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-price\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-was\">$18.00<\/span>\t\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-now\">$16.20<\/span>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-up-add\" data-pid=\"7066\" data-has-opts=\"1\">Escolher<\/button>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-card\">\n\t\t\t\t\t\t\t\t\t<div class=\"ff-up-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/04\/maxresdefault-300x300.png.webp')\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-badge\">10% OFF<\/span>\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-up-body\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-name\">Empad\u00e3o<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-desc\">Uma receita cl\u00e1ssica e reconfortante, preparada com uma massa amanteigada, leve e delicada, que&hellip;<\/div>\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-price\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-was\">$59.00<\/span>\t\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-now\">$53.10<\/span>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-up-add\" data-pid=\"7122\" data-has-opts=\"1\">Escolher<\/button>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-card\">\n\t\t\t\t\t\t\t\t\t<div class=\"ff-up-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2025\/08\/risole-mobile-300x300.png.webp')\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-badge\">10% OFF<\/span>\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-up-body\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-name\">25 Salgados Festa<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-desc\">Fa\u00e7a sua sele\u00e7\u00e3o de 25 salgados<\/div>\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-price\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-was\">$27.50<\/span>\t\t\t\t\t\t\t\t\t\t\t<span class=\"ff-up-now\">$24.75<\/span>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-up-add\" data-pid=\"7060\" data-has-opts=\"1\">Escolher<\/button>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<button type=\"button\" class=\"ff-up-skip\">N\u00e3o, obrigado \u2014 ir para o pagamento<\/button>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<!-- Etapa 2: op\u00e7\u00f5es do produto escolhido (uma por produto, escondidas) -->\n\t\t\t\t\t<div class=\"ff-up-detail\" hidden>\n\t\t\t\t\t\t<button type=\"button\" class=\"ff-up-back\">\u2190 Voltar<\/button>\n\t\t\t\t\t\t<div class=\"ff-up-detail-name\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-opts\" data-pid=\"7066\" data-base=\"18\" data-disc-type=\"percent\" data-disc-value=\"10\" hidden>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-group\" data-gi=\"0\" data-kind=\"qty\" data-name=\"Fa\u00e7a sua sele\u00e7\u00e3o\" data-required=\"1\" data-min=\"15\" data-max=\"15\">\n\t\t\t\t<div class=\"ff-opt-gname\">Fa\u00e7a sua sele\u00e7\u00e3o <span class=\"ff-opt-req\">obrigat\u00f3rio<\/span><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-bar\"><span class=\"ff-opt-count\">0<\/span>\/15 selecionados \u00b7 m\u00edn 15<\/div>\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Brigadeiro Belga<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Brigadeiro Belga\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Brigadeiro Belga Meio Amargo<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Brigadeiro Belga Meio Amargo\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Brigadeiro Branco<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Brigadeiro Branco\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Beijinho<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Beijinho\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Bicho de P\u00e9<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Bicho de P\u00e9\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Churros<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Churros\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Ninho com Nutella<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Ninho com Nutella\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Surpresa de Uva<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Surpresa de Uva\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Cajuzinho<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Cajuzinho\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Confete<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Confete\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Ferrero<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Ferrero\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Cr\u00e8me Brul\u00e9e<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Cr\u00e8me Brul\u00e9e\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Biscoff<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Biscoff\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Kinder<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Kinder\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Casadinho<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Casadinho\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-opt-group\" data-gi=\"1\" data-kind=\"radio\" data-name=\"Forminha P\u00e9tala Para Doces\" data-required=\"1\" data-min=\"0\" data-max=\"0\">\n\t\t\t\t<div class=\"ff-opt-gname\">Forminha P\u00e9tala Para Doces <span class=\"ff-opt-req\">obrigat\u00f3rio<\/span><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"radio\" name=\"ffopt_7066_1\" value=\"Sim\" data-price=\"2.25\">\n\t\t\t\t\t\t\t<span>Sim <small>+$2.25<\/small><\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"radio\" name=\"ffopt_7066_1\" value=\"N\u00e3o\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>N\u00e3o<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-opt-group\" data-gi=\"2\" data-kind=\"check\" data-name=\"Cor da Forminha dos Doces\" data-required=\"0\" data-min=\"0\" data-max=\"0\">\n\t\t\t\t<div class=\"ff-opt-gname\">Cor da Forminha dos Doces<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Qualquer cor\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Qualquer cor<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Branco\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Branco<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Preto\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Preto<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Azul Marinho\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Azul Marinho<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Azul Bebe\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Azul Bebe<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Verde\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Verde<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Laranja\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Laranja<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Cinza\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Cinza<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Dourado\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Dourado<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Vermelho\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Vermelho<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Rosa Escuro\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Rosa Escuro<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Rosa Bebe\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Rosa Bebe<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" name=\"ffopt_7066_2\" value=\"Amarelo\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Amarelo<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-opts\" data-pid=\"7122\" data-base=\"59\" data-disc-type=\"percent\" data-disc-value=\"10\" hidden>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-group\" data-gi=\"0\" data-kind=\"radio\" data-name=\"Sabor\" data-required=\"1\" data-min=\"0\" data-max=\"0\">\n\t\t\t\t<div class=\"ff-opt-gname\">Sabor <span class=\"ff-opt-req\">obrigat\u00f3rio<\/span><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"radio\" name=\"ffopt_7122_0\" value=\"Empad\u00e3o de Frango com Catupiry\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Empad\u00e3o de Frango com Catupiry<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"radio\" name=\"ffopt_7122_0\" value=\"Empad\u00e3o de Calabresa com Catupiry\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Empad\u00e3o de Calabresa com Catupiry<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-opt-group\" data-gi=\"1\" data-kind=\"radio\" data-name=\"Formato\" data-required=\"1\" data-min=\"0\" data-max=\"0\">\n\t\t\t\t<div class=\"ff-opt-gname\">Formato <span class=\"ff-opt-req\">obrigat\u00f3rio<\/span><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"radio\" name=\"ffopt_7122_1\" value=\"Congelado\" data-price=\"0\">\n\t\t\t\t\t\t\t<span>Congelado<\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t<label class=\"ff-opt-choice\">\n\t\t\t\t\t\t\t<input type=\"radio\" name=\"ffopt_7122_1\" value=\"Quente\" data-price=\"6\">\n\t\t\t\t\t\t\t<span>Quente <small>+$6.00<\/small><\/span>\n\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-opts\" data-pid=\"7060\" data-base=\"27.5\" data-disc-type=\"percent\" data-disc-value=\"10\" hidden>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-group\" data-gi=\"0\" data-kind=\"qty\" data-name=\"Fa\u00e7a sua sele\u00e7\u00e3o\" data-required=\"1\" data-min=\"25\" data-max=\"25\">\n\t\t\t\t<div class=\"ff-opt-gname\">Fa\u00e7a sua sele\u00e7\u00e3o <span class=\"ff-opt-req\">obrigat\u00f3rio<\/span><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-bar\"><span class=\"ff-opt-count\">0<\/span>\/25 selecionados \u00b7 m\u00edn 25<\/div>\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Coxinha<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Coxinha\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Bolinha de Queijo<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Bolinha de Queijo\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Risoles de Presunto e Queijo<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Risoles de Presunto e Queijo\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Kibe<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Kibe\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Casulo de Milho com Queijo<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Casulo de Milho com Queijo\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Croquete de Carne com Azeitona<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Croquete de Carne com Azeitona\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Risoles de Calabresa com Queijo<\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Risoles de Calabresa com Queijo\" data-price=\"0\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Coxinha com Catupiry <small>+$0.35<\/small><\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Coxinha com Catupiry\" data-price=\"0.35\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Empadinha de Frango <small>+$0.35<\/small><\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Empadinha de Frango\" data-price=\"0.35\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">Enroladinho de Salsicha <small>+$0.35<\/small><\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"Enroladinho de Salsicha\" data-price=\"0.35\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-opt-row\">\n\t\t\t\t\t\t\t<span class=\"ff-opt-oname\">P\u00e3o de Queijo <small>+$0.35<\/small><\/span>\n\t\t\t\t\t\t\t<span class=\"ff-opt-stepper\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t\t<input type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"ff-opt-q\" data-name=\"P\u00e3o de Queijo\" data-price=\"0.35\" value=\"0\">\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-opt-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ff-up-detail-price\" aria-live=\"polite\"><\/div>\n\t\t\t\t\t\t<div class=\"ff-up-detail-err\" hidden><\/div>\n\t\t\t\t\t\t<button type=\"button\" class=\"ff-up-confirm\" data-pid=\"\">Adicionar ao carrinho<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<script type=\"application\/json\" class=\"flaky-ff-config\">{\"ajaxUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_add\",\"addAllUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_add_all\",\"regiaoUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_regiao\",\"minEntrega\":20,\"outrosCarrinho\":0,\"upsellUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_upsell_add\",\"skipUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_skip\",\"nonce\":\"e44bdfc354\",\"sym\":\"$\",\"tiers\":[{\"count\":1,\"price\":14},{\"count\":2,\"price\":28},{\"count\":4,\"price\":56},{\"count\":6,\"price\":78},{\"count\":12,\"price\":156}],\"flavors\":[{\"name\":\"Bombom de Morango\",\"sold_out\":true,\"remaining\":0},{\"name\":\"Pudim\",\"sold_out\":false,\"remaining\":8},{\"name\":\"Maracuja\",\"sold_out\":true,\"remaining\":0},{\"name\":\"Dois Amores\",\"sold_out\":true,\"remaining\":0},{\"name\":\"Ninho com Morango\",\"sold_out\":true,\"remaining\":0},{\"name\":\"Prestigio\",\"sold_out\":false,\"remaining\":6}],\"caldas\":[\"Chocolate\",\"Ninho\"],\"needLocation\":true,\"loc\":\"\",\"methodSet\":false,\"upsell\":true,\"familia\":\"fatias\",\"plural\":\"fatias\",\"singular\":\"fatia\",\"icone\":\"\\ud83c\\udf70\",\"giftOn\":true,\"giftMin\":50,\"giftQty\":15,\"giftNoun\":\"Salgados fritos congelados sortidos\",\"multi\":true}<\/script>\n\t\t<\/div>\n\t\t\t\t<div class=\"flaky-ff ff-bloco-extra\" style=\"--ff-accent: #d6336c;\">\n\t\t\t<div class=\"ff-bloco-titulo\">\ud83c\udf53 Monte sua caixa de morangos<\/div>\n\n\t\t\t<div class=\"ff-step\"><span class=\"ff-step-n\">1<\/span> Morangos<\/div>\n\t\t\t<div class=\"ff-tiers\">\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"1\" data-price=\"6\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">1 morango<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$6.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"2\" data-price=\"12\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">2 morangos<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$12.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"4\" data-price=\"24\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">4 morangos<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$24.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"6\" data-price=\"36\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">6 morangos<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$36.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-tier\" data-count=\"12\" data-price=\"66\">\n\t\t\t\t\t\t<span class=\"ff-tier-count\">12 morangos<\/span>\n\t\t\t\t\t\t<span class=\"ff-tier-price\">$66.00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t<div class=\"ff-step ff-step-flavors\"><span class=\"ff-step-n\">2<\/span> Monte os sabores <span class=\"ff-counter\">0\/0<\/span><\/div>\n\t\t\t<div class=\"ff-flavors\">\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor\" data-idx=\"0\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/images-1-1.jpeg')\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Morango do Amor\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor\" data-idx=\"1\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/images-2.jpeg')\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Bombom de Morango\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ff-flavor\" data-idx=\"2\">\n\t\t\t\t\t\t<div class=\"ff-flavor-img\" style=\"background-image:url('https:\/\/flakybakery.ca\/wp-content\/uploads\/2026\/08\/images-1-2.jpeg')\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-flavor-name\">Morango Cravejado\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"ff-stepper\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-minus\" aria-label=\"menos\">&minus;<\/button>\n\t\t\t\t\t\t\t<span class=\"ff-qty\">0<\/span>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"ff-plus\" aria-label=\"mais\">+<\/button>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t<div class=\"ff-bar\">\n\t\t\t\t<div class=\"ff-bar-info\">\n\t\t\t\t\t<span class=\"ff-bar-total\">Selecione a quantidade de morangos<\/span>\n\t\t\t\t\t<span class=\"ff-bar-sub\"><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<button type=\"button\" class=\"ff-limpar\" hidden>Remover<\/button>\n\t\t\t<\/div>\n\n\t\t\t<script type=\"application\/json\" class=\"flaky-ff-config\">{\"ajaxUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_add\",\"addAllUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_add_all\",\"regiaoUrl\":\"https:\\\/\\\/flakybakery.ca\\\/en\\\/?wc-ajax=flaky_ff_regiao\",\"minEntrega\":20,\"outrosCarrinho\":0,\"nonce\":\"e44bdfc354\",\"sym\":\"$\",\"tiers\":[{\"count\":1,\"price\":6},{\"count\":2,\"price\":12},{\"count\":4,\"price\":24},{\"count\":6,\"price\":36},{\"count\":12,\"price\":66}],\"flavors\":[{\"name\":\"Morango do Amor\",\"sold_out\":false,\"remaining\":54},{\"name\":\"Bombom de Morango\",\"sold_out\":false,\"remaining\":61},{\"name\":\"Morango Cravejado\",\"sold_out\":false,\"remaining\":30}],\"caldas\":[],\"needLocation\":true,\"loc\":\"\",\"methodSet\":false,\"upsell\":false,\"familia\":\"morangos\",\"plural\":\"morangos\",\"singular\":\"morango\",\"icone\":\"\\ud83c\\udf53\",\"giftOn\":true,\"giftMin\":50,\"giftQty\":15,\"giftNoun\":\"Salgados fritos congelados sortidos\"}<\/script>\n\t\t<\/div>\n\t\t\t\t<div class=\"ff-rodape\" hidden>\n\t\t\t<div class=\"ff-rodape-itens\"><\/div>\n\t\t\t<button type=\"button\" class=\"ff-rodape-pagar\">Ir para o pagamento<\/button>\n\t\t<\/div>\n\t\t<div class=\"ff-rodape-vazio\">Monte sua caixa acima para continuar<\/div>\n\t\t<script>\/*\n * A p\u00e1gina pode ter MAIS DE UM montador (fatias, morangos do amor). Antes isto\n * era uma inst\u00e2ncia s\u00f3, presa ao primeiro `.flaky-ff` do documento e a um `id`\n * global de configura\u00e7\u00e3o \u2014 com dois blocos, o segundo ficaria morto e o primeiro\n * responderia por cliques que n\u00e3o eram dele.\n *\n * Agora cada bloco carrega a pr\u00f3pria configura\u00e7\u00e3o dentro de si e recebe a sua\n * inst\u00e2ncia. Tudo aqui dentro j\u00e1 era escopado em `root`; o que muda \u00e9 s\u00f3 quem\n * chama, e quantas vezes.\n *\/\n(function(){\n\t\/**\n\t * Manda o formul\u00e1rio inteiro para o servidor.\n\t *\n\t * O carrinho \u00e9 reconstru\u00eddo do zero a cada envio \u2014 por isso apertar duas vezes n\u00e3o\n\t * duplica caixa, e uma caixa que falha n\u00e3o deixa a outra pela metade.\n\t *\/\n\tfunction enviarCaixas(caixas, cb){\n\t\tvar primeira = (window.__ffBlocos && window.__ffBlocos[0]) ? window.__ffBlocos[0].cfg : null;\n        if(!primeira){ cb('P\u00e1gina n\u00e3o carregou direito. Recarregue.'); return; }\n\t\tvar body = new URLSearchParams();\n\t\tbody.set('nonce', primeira.nonce);\n\t\tbody.set('loc', primeira.loc || '');\n\t\tbody.set('caixas', JSON.stringify(caixas));\n\t\tfetch(primeira.addAllUrl, { method:'POST', credentials:'same-origin',\n\t\t\theaders:{'Content-Type':'application\/x-www-form-urlencoded'}, body: body.toString() })\n\t\t\t.then(function(r){ return r.json(); })\n\t\t\t.then(function(j){\n\t\t\t\tif(j && j.success && j.data && j.data.redirect) cb(null, j.data);\n\t\t\t\telse cb((j && j.data && j.data.message) || 'N\u00e3o foi poss\u00edvel continuar.');\n\t\t\t})\n\t\t\t.catch(function(){ cb('Erro de conex\u00e3o. Tente de novo.'); });\n\t}\n\n\tfunction iniciarBloco(root){\n\tvar cfg;\n\tvar elCfg = root.querySelector('.flaky-ff-config');\n\ttry { cfg = JSON.parse(elCfg.textContent); } catch(e){ return; }\n\n\tvar state = { count: 0, price: 0, qty: {}, caldas: [] };\n\tvar $ = function(s,c){ return (c||root).querySelector(s); };\n\tvar $$ = function(s,c){ return Array.prototype.slice.call((c||root).querySelectorAll(s)); };\n\tfunction escHtml(s){ return String(s==null?'':s).replace(\/[&<>\"]\/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n\n\t\/\/ Bot\u00e3o \"segurar pra repetir\": dispara fn() no toque e segue repetindo\n\t\/\/ enquanto o dedo\/mouse estiver pressionado \u2014 igual aos steppers do app.\n\tfunction holdRepeat(btn, fn){\n\t\tvar to, iv;\n\t\tfunction stop(){ clearTimeout(to); clearInterval(iv); to=null; iv=null; }\n\t\tfunction tick(){ if(btn.disabled){ stop(); return; } fn(); }\n\t\tfunction start(e){\n\t\t\tif(e.type==='mousedown' && e.button!==0) return;\n\t\t\te.preventDefault();              \/\/ evita o click sint\u00e9tico + scroll no touch\n\t\t\tif(btn.disabled) return;\n\t\t\tfn();                            \/\/ 1\u00aa a\u00e7\u00e3o imediata (1 toque = +1\/-1)\n\t\t\tto = setTimeout(function(){ iv = setInterval(tick, 90); }, 380); \/\/ segurou \u2192 repete\n\t\t}\n\t\tbtn.addEventListener('mousedown', start);\n\t\tbtn.addEventListener('touchstart', start, { passive:false });\n\t\t['mouseup','mouseleave','touchend','touchcancel'].forEach(function(ev){ btn.addEventListener(ev, stop); });\n\t}\n\n\t\/\/ Expande a sele\u00e7\u00e3o de sabores numa lista ordenada de fatias (1 nome por fatia).\n\tfunction expandedSlices(){\n\t\tvar slices = [];\n\t\t$$('.ff-flavor').forEach(function(card){\n\t\t\tvar idx = card.getAttribute('data-idx');\n\t\t\tvar q = state.qty[idx] || 0;\n\t\t\tvar nm = cfg.flavors[idx] ? cfg.flavors[idx].name : '';\n\t\t\tfor(var i=0;i<q;i++) slices.push(nm);\n\t\t});\n\t\treturn slices;\n\t}\n\n\t\/\/ ----- M\u00e9todo: Entrega x Retirada -----\n\t\/\/ Recarrega com ?change-method= pro WooFood aplicar o m\u00e9todo no reload. Ao ir pra\n\t\/\/ retirada (takeaway), remove ?loc= (n\u00e3o precisa de regi\u00e3o).\n\t$$('.ff-method-tab').forEach(function(btn){\n\t\tbtn.addEventListener('click', function(){\n\t\t\tif(btn.classList.contains('ff-on')) return; \/\/ j\u00e1 \u00e9 o m\u00e9todo atual\n\t\t\tvar m = btn.getAttribute('data-ff-method');\n\t\t\tvar u = new URL(window.location.href);\n\t\t\tu.searchParams.set('change-method', m);\n\t\t\tif(m!=='delivery') u.searchParams.delete('loc');\n\t\t\twindow.location = u.toString();\n\t\t});\n\t});\n\n\t\/\/ ----- Regi\u00e3o de entrega (regras WooFood) -----\n\tvar locSel = $('.ff-loc-select');\n\tif(locSel){\n\t\tlocSel.addEventListener('change', function(){\n\t\t\tif(!locSel.value) return;\n\t\t\t\/*\n\t\t\t * SEM RELOAD.\n\t\t\t *\n\t\t\t * Isto era `window.location = ...?loc=`, e o reload apagava a caixa que a\n\t\t\t * pessoa tinha acabado de montar \u2014 justamente ela, porque o aviso de regi\u00e3o\n\t\t\t * costuma aparecer s\u00f3 quando a pessoa tenta pagar.\n\t\t\t *\/\n\t\t\tvar alvo = locSel.value;\n\t\t\tlocSel.disabled = true;\n\t\t\tvar corpo = new URLSearchParams();\n\t\t\tcorpo.set('nonce', cfg.nonce);\n\t\t\tcorpo.set('loc', alvo);\n\t\t\tfetch(cfg.regiaoUrl, { method:'POST', credentials:'same-origin',\n\t\t\t\theaders:{'Content-Type':'application\/x-www-form-urlencoded'}, body: corpo.toString() })\n\t\t\t\t.then(function(r){ return r.json(); })\n\t\t\t\t.then(function(j){\n\t\t\t\t\tlocSel.disabled = false;\n\t\t\t\t\tif(!j || !j.success){ alert((j && j.data && j.data.message) || 'N\u00e3o consegui trocar a regi\u00e3o.'); return; }\n\t\t\t\t\t\/\/ Todos os blocos passam a saber que j\u00e1 h\u00e1 regi\u00e3o, e qual \u00e9 o m\u00ednimo.\n\t\t\t\t\t(window.__ffBlocos || []).forEach(function(b){\n\t\t\t\t\t\tb.cfg.needLocation = false;\n\t\t\t\t\t\tb.cfg.loc = j.data.slug;\n\t\t\t\t\t\tb.cfg.minEntrega = j.data.minimo;\n\t\t\t\t\t});\n\t\t\t\t\tvar atual = $('.ff-deli-cur');\n\t\t\t\t\tif(atual){\n\t\t\t\t\t\tvar forte = atual.querySelector('strong');\n\t\t\t\t\t\tif(forte) forte.textContent = j.data.nome;\n\t\t\t\t\t\tatual.hidden = false;\n\t\t\t\t\t\tatual.style.display = '';\n\t\t\t\t\t}\n\t\t\t\t\t\/\/ Troca as condi\u00e7\u00f5es (taxa, m\u00ednimo, entrega gr\u00e1tis) pelas da regi\u00e3o nova.\n\t\t\t\t\tvar regras = $('.ff-deli-rules');\n\t\t\t\t\tvar caixa = $('.ff-deli');\n\t\t\t\t\tif(j.data.regras){\n\t\t\t\t\t\tif(regras){ regras.outerHTML = j.data.regras; }\n\t\t\t\t\t\telse if(caixa){ caixa.insertAdjacentHTML('beforeend', j.data.regras); }\n\t\t\t\t\t} else if(regras){ regras.remove(); }\n\n\t\t\t\t\tvar precisa = $('.ff-deli-need');\n\t\t\t\t\tif(precisa) precisa.classList.remove('ff-deli-need');\n\t\t\t\t\tlocSel.style.display = 'none';\n\t\t\t\t\tdocument.dispatchEvent(new CustomEvent('flaky-ff:mudou'));\n\t\t\t\t})\n\t\t\t\t.catch(function(){ locSel.disabled = false; alert('Erro de conex\u00e3o. Tente de novo.'); });\n\t\t});\n\t}\n\tvar locChange = $('.ff-loc-change');\n\tif(locChange && locSel){\n\t\tlocChange.addEventListener('click', function(){ locSel.style.display=''; locSel.focus(); });\n\t}\n\tfunction promptLocation(){\n\t\tvar bar = $('.ff-deli');\n\t\tif(bar){ bar.scrollIntoView({behavior:'smooth', block:'center'}); bar.classList.remove('ff-deli-flash'); void bar.offsetWidth; bar.classList.add('ff-deli-flash'); }\n\t\tif(locSel) locSel.style.display='';\n\t}\n\n\tfunction sym(v){ return cfg.sym + (Math.round(v*100)\/100).toFixed(2); }\n\tfunction total(){ var n=0; for(var k in state.qty){ n+=state.qty[k]; } return n; }\n\n\tfunction render(){\n\t\tvar picked = total();\n\t\t$('.ff-counter').textContent = picked + '\/' + (state.count||0);\n\t\t\/\/ estado dos flavors\n\t\troot.classList.toggle('ff-disabled-flavors', state.count<=0);\n\t\t$$('.ff-flavor').forEach(function(card){\n\t\t\tvar idx = card.getAttribute('data-idx');\n\t\t\tvar sold = card.classList.contains('ff-sold');\n\t\t\tvar q = state.qty[idx] || 0;\n\t\t\t$('.ff-qty', card).textContent = q;\n\t\t\tcard.classList.toggle('ff-picked', q>0);\n\t\t\tvar plus = $('.ff-plus', card), minus = $('.ff-minus', card);\n\t\t\tvar rem = (cfg.flavors[idx] && cfg.flavors[idx].remaining!=null) ? cfg.flavors[idx].remaining : null;\n\t\t\tplus.disabled = sold || (state.count<=0) || (picked>=state.count) || (rem!=null && q>=rem); \/\/ esgotado\/limite do estoque nunca habilita\n\t\t\tminus.disabled = sold || q<=0;\n\t\t});\n\t\t\/\/ barra\n\t\t\/\/ O bot\u00e3o s\u00f3 existe no bloco quando ele \u00e9 o \u00fanico da p\u00e1gina; com fatias E\n\t\t\/\/ morangos quem paga \u00e9 o rodap\u00e9. Sem esta guarda, `cta.disabled` estourava na\n\t\t\/\/ PRIMEIRA renderiza\u00e7\u00e3o e matava o bloco inteiro \u2014 steppers inclusive.\n\t\tvar barTotal = $('.ff-bar-total'), barSub = $('.ff-bar-sub'), cta = $('.ff-cta');\n\t\tif(state.count<=0){\n\t\t\tif(barTotal) barTotal.textContent = 'Selecione a quantidade de ' + (cfg.plural||'itens');\n\t\t\tif(barSub) barSub.textContent = '';\n\t\t\tif(cta) cta.disabled = true;\n\t\t} else {\n\t\t\tif(barTotal) barTotal.textContent = sym(state.price);\n\t\t\tvar per = state.price\/state.count;\n\t\t\tif(barSub) barSub.textContent = state.count + ' ' + (cfg.plural||'itens') + ' \u00b7 ' + sym(per) + '\/' + (cfg.singular||'item');\n\t\t\tif(cta) cta.disabled = (picked !== state.count);\n\t\t}\n\t\t\/\/ \"Remover\" s\u00f3 existe quando h\u00e1 o que remover.\n\t\tvar lim = $('.ff-limpar');\n\t\tif(lim) lim.hidden = (state.count <= 0);\n\t\tbuildCaldas();\n\t}\n\n\t\/\/ ----- Passo intermedi\u00e1rio: calda por fatia -----\n\tvar caldaStep = $('.ff-step-caldas'), caldaWrap = $('.ff-caldas'), caldaSig = '';\n\tfunction buildCaldas(){\n\t\tif(!cfg.caldas || !cfg.caldas.length || !caldaWrap) return;\n\t\tvar picked = total();\n\t\t\/\/ S\u00f3 aparece quando a sele\u00e7\u00e3o de sabores est\u00e1 completa.\n\t\tif(state.count<=0 || picked!==state.count){\n\t\t\tif(caldaStep) caldaStep.hidden = true;\n\t\t\tcaldaWrap.hidden = true; caldaWrap.innerHTML=''; caldaSig=''; state.caldas=[];\n\t\t\treturn;\n\t\t}\n\t\tvar slices = expandedSlices();\n\t\tvar sig = JSON.stringify(slices);\n\t\tif(sig===caldaSig){ if(caldaStep) caldaStep.hidden=false; caldaWrap.hidden=false; return; }\n\t\tcaldaSig = sig;\n\t\tstate.caldas = slices.map(function(){ return ''; }); \/\/ default: sem calda\n\t\tvar opts = '<option value=\"\">Sem calda<\/option>' + cfg.caldas.map(function(c){\n\t\t\treturn '<option value=\"'+escHtml(c)+'\">Calda de '+escHtml(c)+'<\/option>';\n\t\t}).join('');\n\t\tcaldaWrap.innerHTML = slices.map(function(nm, i){\n\t\t\treturn '<div class=\"ff-calda-row\"><span class=\"ff-calda-flavor\"><span class=\"ff-calda-n\">'+(i+1)+'.<\/span>'+escHtml(nm)+'<\/span>'\n\t\t\t\t+ '<select class=\"ff-calda-sel\" data-i=\"'+i+'\">'+opts+'<\/select><\/div>';\n\t\t}).join('');\n\t\t$$('.ff-calda-sel', caldaWrap).forEach(function(sel){\n\t\t\tsel.addEventListener('change', function(){ state.caldas[parseInt(sel.getAttribute('data-i'),10)] = sel.value; });\n\t\t});\n\t\tif(caldaStep) caldaStep.hidden=false;\n\t\tcaldaWrap.hidden=false;\n\t}\n\n\t\/\/ selecionar tamanho\n\t$$('.ff-tier').forEach(function(btn){\n\t\tbtn.addEventListener('click', function(){\n\t\t\t$$('.ff-tier').forEach(function(b){ b.classList.remove('ff-on'); });\n\t\t\tbtn.classList.add('ff-on');\n\t\t\tstate.count = parseInt(btn.getAttribute('data-count'),10) || 0;\n\t\t\tstate.price = parseFloat(btn.getAttribute('data-price')) || 0;\n\t\t\tstate.qty = {}; \/\/ recome\u00e7a os sabores ao trocar o tamanho\n\t\t\trender();\n\t\t\t\/\/ rola at\u00e9 os sabores\n\t\t\tvar st = $('.ff-step-flavors'); if(st) st.scrollIntoView({behavior:'smooth', block:'start'});\n\t\t});\n\t});\n\n\t\/\/ steppers\n\t$$('.ff-flavor').forEach(function(card){\n\t\tvar idx = card.getAttribute('data-idx');\n\t\tvar sold = card.classList.contains('ff-sold'); \/\/ sabor esgotado: n\u00e3o soma\n\t\t$('.ff-plus', card).addEventListener('click', function(){\n\t\t\tif(sold) return;\n\t\t\tif(state.count<=0) return;\n\t\t\tif(total() >= state.count) return;\n\t\t\t\/\/ Estoque: n\u00e3o deixa p\u00f4r no mesmo carrinho mais fatias deste sabor do que h\u00e1 dispon\u00edvel.\n\t\t\tvar rem = (cfg.flavors[idx] && cfg.flavors[idx].remaining!=null) ? cfg.flavors[idx].remaining : null;\n\t\t\tif(rem!=null && (state.qty[idx]||0) >= rem){\n\t\t\t\talert(rem<=0 ? 'Esse sabor esgotou.' : ('Restam apenas ' + rem + ' ' + (rem>1?(cfg.plural||'itens'):(cfg.singular||'item')) + ' deste sabor.'));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tstate.qty[idx] = (state.qty[idx]||0) + 1;\n\t\t\trender();\n\t\t\t\/\/ Completou a sele\u00e7\u00e3o de sabores \u2192 rola pra pr\u00f3xima etapa (igual ao passo\n\t\t\t\/\/ do tamanho): a etapa de caldas, se houver; sen\u00e3o a barra de pagamento.\n\t\t\tif(state.count>0 && total()===state.count){\n\t\t\t\tvar next = (caldaStep && !caldaStep.hidden) ? caldaStep : $('.ff-bar');\n\t\t\t\tif(next) next.scrollIntoView({behavior:'smooth', block: next===caldaStep ? 'start' : 'center'});\n\t\t\t}\n\t\t});\n\t\t$('.ff-minus', card).addEventListener('click', function(){\n\t\t\tif(!state.qty[idx]) return;\n\t\t\tstate.qty[idx] -= 1;\n\t\t\tif(state.qty[idx]<=0) delete state.qty[idx];\n\t\t\trender();\n\t\t});\n\t});\n\n\t\/* ---------- Este bloco como parte do formul\u00e1rio \u00fanico ---------- *\/\n\n\t\/\/ O que este bloco tem montado agora \u2014 ou null se ainda n\u00e3o est\u00e1 completo.\n\tfunction caixaDoBloco(){\n\t\tif(state.count<=0 || total()!==state.count) return null;\n\t\treturn {\n\t\t\tfamilia: cfg.familia || 'fatias',\n\t\t\ttier: state.count,\n\t\t\tpreco: state.price,\n\t\t\tslices: expandedSlices().map(function(nm, i){\n\t\t\t\treturn { flavor: nm, calda: (state.caldas && state.caldas[i]) ? state.caldas[i] : '' };\n\t\t\t})\n\t\t};\n\t}\n\n\t\/*\n\t * O que este bloco tem escolhido, mesmo INCOMPLETO.\n\t *\n\t * O contador do brinde precisa disto: assim que a pessoa escolhe o tamanho j\u00e1 d\u00e1\n\t * para dizer quanto falta para os salgados, sem esperar ela terminar os sabores.\n\t * Esperar a caixa fechar mostraria o aviso tarde demais para influenciar a escolha.\n\t *\/\n\tfunction parcialDoBloco(){\n\t\tif(state.count <= 0) return null;\n\t\treturn {\n\t\t\tfamilia: cfg.familia || 'fatias',\n\t\t\ttier: state.count,\n\t\t\tpreco: state.price,\n\t\t\tcompleta: total() === state.count\n\t\t};\n\t}\n\n\t\/\/ O rodap\u00e9 precisa saber de todos os blocos; cada um se anuncia aqui.\n\twindow.__ffBlocos = window.__ffBlocos || [];\n\twindow.__ffBlocos.push({ caixa: caixaDoBloco, parcial: parcialDoBloco, cfg: cfg });\n\n\t\/\/ Toda mudan\u00e7a de sele\u00e7\u00e3o reavalia o rodap\u00e9 (habilita\/desabilita, conta o brinde).\n\tvar renderOriginal = render;\n\trender = function(){\n\t\trenderOriginal();\n\t\ttry { document.dispatchEvent(new CustomEvent('flaky-ff:mudou')); } catch(e){}\n\t};\n\n\t\/*\n\t * REMOVER a caixa deste bloco.\n\t *\n\t * Escolher o tamanho \u00e9 f\u00e1cil e desfazer n\u00e3o era poss\u00edvel: sem isto, quem clicava\n\t * em \"6 morangos\" por engano ficava com a barra cobrando sabores para sempre \u2014 e a\n\t * \u00fanica sa\u00edda era recarregar a p\u00e1gina, perdendo o resto.\n\t *\/\n\tvar btLimpar = $('.ff-limpar');\n\tfunction limpar(){\n\t\tstate.count = 0; state.price = 0; state.qty = {}; state.caldas = [];\n\t\t$$('.ff-tier').forEach(function(b){ b.classList.remove('ff-on'); });\n\t\trender();\n\t}\n\tif(btLimpar){\n\t\tbtLimpar.addEventListener('click', function(e){ e.preventDefault(); limpar(); });\n\t}\n\n\t\/\/ Bloco \u00fanico (sem morangos) mant\u00e9m o bot\u00e3o aqui.\n\tvar ctaLocal = $('.ff-cta');\n\tif(ctaLocal){\n\t\tctaLocal.addEventListener('click', function(){\n\t\t\tvar caixa = caixaDoBloco();\n\t\t\tif(!caixa) return;\n\t\t\tif(cfg.needLocation){ promptLocation(); return; }\n\t\t\tctaLocal.classList.add('ff-loading');\n\t\t\tctaLocal.textContent = 'Adicionando...';\n\t\t\tenviarCaixas([caixa], function(erro, dados){\n\t\t\t\tctaLocal.classList.remove('ff-loading');\n\t\t\t\tctaLocal.textContent = 'Ir para o pagamento';\n\t\t\t\tif(erro){ alert(erro); return; }\n\t\t\t\tif(cfg.upsell && overlay){ checkoutUrl = dados.redirect; openUpsell(); }\n\t\t\t\telse { window.location = dados.redirect; }\n\t\t\t});\n\t\t});\n\t}\n\n\t\/\/ O rodap\u00e9 pede o pagamento; o modal de upsell pertence a este bloco.\n\tdocument.addEventListener('flaky-ff:pagar', function(ev){\n\t\tif(!overlay) return;\n\t\tcheckoutUrl = (ev.detail && ev.detail.checkout) || checkoutUrl;\n\t\topenUpsell();\n\t\t\/\/ O que falta pro m\u00ednimo \u00e9 dito AQUI, junto das ofertas que resolvem.\n\t\tif(ev.detail) mostrarMin(ev.detail.min);\n\t});\n\n\t\/\/ O rodap\u00e9 pede a regi\u00e3o; o seletor tamb\u00e9m mora aqui (\u00e9 da p\u00e1gina, n\u00e3o do bloco).\n\tdocument.addEventListener('flaky-ff:regiao', function(){\n\t\ttry { promptLocation(); } catch(e){}\n\t});\n\n\t\/\/ ----- Upsell (oferta com desconto antes do checkout) -----\n\tvar overlay = $('.ff-up-overlay');\n\tvar checkoutUrl = '';\n\tvar resetUpsell = function(){}; \/\/ implementa\u00e7\u00e3o real definida no bloco if(overlay) abaixo\n\t\/\/ Reabrir o modal vem sempre de um novo ajax_add (que ESVAZIA o carrinho e re-adiciona s\u00f3\n\t\/\/ a caixa) \u2014 ent\u00e3o zeramos o estado \"no carrinho\" do upsell pra n\u00e3o ficar dessincronizado.\n\tfunction openUpsell(){ if(overlay){ resetUpsell(); overlay.hidden = false; document.body.style.overflow='hidden'; } }\n\tfunction goCheckout(){ if(checkoutUrl){ window.location = checkoutUrl; } }\n\n\t\/*\n\t * O pedido m\u00ednimo, dito na tela da oferta.\n\t *\n\t * Antes ele era cobrado no rodap\u00e9 da montagem: a pessoa fechava 6 morangos\n\t * ($36), lia \"faltam $4,00\" e conclu\u00eda que n\u00e3o dava pra comprar \u2014 sem saber que\n\t * a tela seguinte oferecia um empad\u00e3o de $53. Aqui o aviso e a sa\u00edda est\u00e3o\n\t * juntos, e ele some sozinho no instante em que a oferta entra no carrinho.\n\t *\n\t * `payload` vem do servidor (ff_min_payload): null = n\u00e3o se aplica (retirada,\n\t * regi\u00e3o sem m\u00ednimo). N\u00e3o inventamos a conta no cliente.\n\t *\/\n\tfunction mostrarMin(payload){\n\t\tif(!overlay) return;\n\t\tvar el = overlay.querySelector('.ff-up-min');\n\t\tif(!el) return;\n\t\tif(!payload){ el.hidden = true; return; }\n\t\tvar falta = Number(payload.falta || 0);\n\t\tif(payload.unmet && falta > 0){\n\t\t\tel.className = 'ff-up-min ff-falta';\n\t\t\tel.textContent = '\u26a0\ufe0f Faltam ' + moeda(falta) + ' para o pedido m\u00ednimo de entrega ('\n\t\t\t\t+ moeda(payload.min) + '). Uma das ofertas abaixo j\u00e1 resolve.';\n\t\t} else {\n\t\t\tel.className = 'ff-up-min ff-ok';\n\t\t\tel.textContent = '\u2713 Pedido m\u00ednimo de entrega atingido.';\n\t\t}\n\t\tel.hidden = false;\n\t}\n\n\t\/\/ Mesmo s\u00edmbolo de moeda do resto da p\u00e1gina (o rodap\u00e9 usa o sym() do bloco).\n\tfunction moeda(v){\n\t\tvar b = (window.__ffBlocos && window.__ffBlocos[0]) ? window.__ffBlocos[0].cfg : null;\n\t\tvar s = (b && b.sym) ? b.sym : '$';\n\t\treturn s + (Number(v) || 0).toFixed(2);\n\t}\n\n\tif(overlay){\n\t\tvar mainView = $('.ff-up-main', overlay);\n\t\tvar detail   = $('.ff-up-detail', overlay);\n\t\tvar detailNm = $('.ff-up-detail-name', overlay);\n\t\tvar detailErr= $('.ff-up-detail-err', overlay);\n\t\tvar confirmBtn = $('.ff-up-confirm', overlay);\n\n\t\tfunction showMain(){ if(detail) detail.hidden = true; if(mainView) mainView.hidden = false; }\n\t\tfunction clearErr(){ if(detailErr){ detailErr.hidden = true; detailErr.textContent=''; } }\n\t\tfunction showErr(msg){ if(detailErr){ detailErr.textContent = msg; detailErr.hidden = false; detailErr.scrollIntoView({behavior:'smooth',block:'center'}); } }\n\n\t\t\/\/ ----- Pre\u00e7o ao vivo na etapa de op\u00e7\u00f5es (ajuda a convers\u00e3o) -----\n\t\tvar priceEl = $('.ff-up-detail-price', overlay);\n\t\t\/\/ Desconto POR PRODUTO: l\u00ea o tipo\/valor do pr\u00f3prio painel de op\u00e7\u00f5es (data-disc-*).\n\t\tfunction applyUpDisc(p, panel){\n\t\t\tvar type = panel ? panel.getAttribute('data-disc-type') : 'none';\n\t\t\tvar v = panel ? (parseFloat(panel.getAttribute('data-disc-value'))||0) : 0;\n\t\t\tif(type==='percent') return Math.max(0, p - p*v\/100);\n\t\t\tif(type==='fixed_product') return Math.max(0, p - v);\n\t\t\treturn p;\n\t\t}\n\t\t\/\/ Soma os incrementos de pre\u00e7o das op\u00e7\u00f5es selecionadas no painel.\n\t\tfunction panelIncrement(panel){\n\t\t\tvar inc = 0;\n\t\t\t$$('.ff-opt-group', panel).forEach(function(g){\n\t\t\t\tvar kind = g.getAttribute('data-kind');\n\t\t\t\tif(kind==='qty'){ $$('.ff-opt-q', g).forEach(function(q){ inc += (parseInt(q.value,10)||0)*(parseFloat(q.getAttribute('data-price'))||0); }); }\n\t\t\t\telse if(kind==='radio'){ var s=g.querySelector('input:checked'); if(s) inc += parseFloat(s.getAttribute('data-price'))||0; }\n\t\t\t\telse if(kind==='check'){ $$('input:checked', g).forEach(function(i){ inc += parseFloat(i.getAttribute('data-price'))||0; }); }\n\t\t\t});\n\t\t\treturn inc;\n\t\t}\n\t\t\/\/ Atualiza o pre\u00e7o (com desconto) do produto aberto na etapa de op\u00e7\u00f5es.\n\t\tfunction updateDetailPrice(){\n\t\t\tif(!priceEl || !confirmBtn) return;\n\t\t\tvar pid = confirmBtn.getAttribute('data-pid');\n\t\t\tvar panel = pid ? $('.ff-up-opts[data-pid=\"'+pid+'\"]', overlay) : null;\n\t\t\tif(!panel){ priceEl.innerHTML=''; return; }\n\t\t\tvar gross = (parseFloat(panel.getAttribute('data-base'))||0) + panelIncrement(panel);\n\t\t\tvar net = applyUpDisc(gross, panel);\n\t\t\tvar hasDisc = net < gross - 0.001;\n\t\t\tpriceEl.innerHTML = '<span class=\"ff-up-dp-label\">Voc\u00ea paga<\/span> '\n\t\t\t\t+ (hasDisc ? '<span class=\"ff-up-dp-was\">'+sym(gross)+'<\/span> ' : '')\n\t\t\t\t+ '<span class=\"ff-up-dp-now\">'+sym(net)+'<\/span>';\n\t\t}\n\t\tif(detail) detail.addEventListener('change', updateDetailPrice);\n\n\t\t\/\/ Fecha o modal e VOLTA pra p\u00e1gina (n\u00e3o vai pro checkout) \u2014 a caixa j\u00e1 est\u00e1\n\t\t\/\/ no carrinho, ent\u00e3o a pessoa pode revisar\/mudar a sele\u00e7\u00e3o e clicar de novo\n\t\t\/\/ em \"Ir para o pagamento\" (o ajax_add reconstr\u00f3i o carrinho do zero).\n\t\tfunction closeUpsell(){\n\t\t\tif(overlay){ overlay.hidden = true; }\n\t\t\tdocument.body.style.overflow = '';\n\t\t\tclearErr(); showMain(); \/\/ reseta pra etapa 1 da pr\u00f3xima vez que abrir\n\t\t}\n\n\t\tvar closeBtn = $('.ff-up-close', overlay);\n\t\tvar skipBtn  = $('.ff-up-skip', overlay);\n\t\tvar backBtn  = $('.ff-up-back', overlay);\n\t\tif(closeBtn) closeBtn.addEventListener('click', closeUpsell);                 \/\/ X = volta pra p\u00e1gina\n\t\tif(skipBtn)  skipBtn.addEventListener('click', function(){ skipToCheckout(skipBtn); }); \/\/ valida o m\u00ednimo antes\n\t\tif(backBtn)  backBtn.addEventListener('click', function(){ clearErr(); showMain(); });\n\t\toverlay.addEventListener('click', function(e){ if(e.target===overlay) closeUpsell(); }); \/\/ toque no fundo = volta\n\n\t\t\/\/ \"N\u00e3o, obrigado\": valida o pedido m\u00ednimo no servidor antes de ir pro checkout.\n\t\t\/\/ Abaixo do m\u00ednimo \u2192 mostra a mensagem e mant\u00e9m o modal (a pessoa pode aceitar a\n\t\t\/\/ oferta pra atingir o m\u00ednimo, ou fechar e aumentar a caixa).\n\t\tfunction skipToCheckout(btn){\n\t\t\tvar orig = btn ? btn.textContent : '';\n\t\t\tif(btn){ btn.disabled = true; btn.textContent = 'Aguarde...'; }\n\t\t\tvar b = new URLSearchParams();\n\t\t\tb.set('nonce', cfg.nonce);\n\t\t\tb.set('loc', cfg.loc||'');\n\t\t\tfetch(cfg.skipUrl, { method:'POST', credentials:'same-origin', headers:{'Content-Type':'application\/x-www-form-urlencoded'}, body: b.toString() })\n\t\t\t\t.then(function(r){ return r.json(); })\n\t\t\t\t.then(function(j){\n\t\t\t\t\tif(j && j.success && j.data && j.data.redirect){ window.location = j.data.redirect; return; }\n\t\t\t\t\tif(btn){ btn.disabled=false; btn.textContent=orig; }\n\t\t\t\t\talert((j && j.data && j.data.message) || 'N\u00e3o foi poss\u00edvel continuar.');\n\t\t\t\t})\n\t\t\t\t.catch(function(){ if(btn){ btn.disabled=false; btn.textContent=orig; } alert('Erro de conex\u00e3o. Tente de novo.'); });\n\t\t}\n\n\t\t\/\/ Adiciona a oferta ao carrinho SEM ir pro checkout: o item entra no carrinho e o\n\t\t\/\/ cliente continua no modal, podendo adicionar outras ofertas. O checkout s\u00f3 acontece\n\t\t\/\/ no bot\u00e3o \"Ir para o pagamento\" (skipToCheckout, que valida o pedido m\u00ednimo).\n\t\tvar addedCount = 0;\n\t\tfunction addUpsell(pid, options, btn){\n\t\t\tvar orig = btn ? btn.textContent : '';\n\t\t\tif(btn){ btn.disabled = true; btn.textContent = 'Adicionando...'; }\n\t\t\tvar b2 = new URLSearchParams();\n\t\t\tb2.set('nonce', cfg.nonce);\n\t\t\tb2.set('product_id', pid);\n\t\t\tb2.set('loc', cfg.loc||'');\n\t\t\tif(options) b2.set('options', JSON.stringify(options));\n\t\t\tfetch(cfg.upsellUrl, { method:'POST', credentials:'same-origin', headers:{'Content-Type':'application\/x-www-form-urlencoded'}, body: b2.toString() })\n\t\t\t\t.then(function(r){ return r.json(); })\n\t\t\t\t.then(function(j){\n\t\t\t\t\tif(btn){ btn.disabled=false; btn.textContent=orig; }\n\t\t\t\t\tif(j && j.success){ onUpsellAdded(pid, j.data && j.data.min); return; }\n\t\t\t\t\tvar msg = (j && j.data && j.data.message) || 'N\u00e3o foi poss\u00edvel adicionar a oferta.';\n\t\t\t\t\tif(detail && !detail.hidden){ showErr(msg); } else { alert(msg); }\n\t\t\t\t})\n\t\t\t\t.catch(function(){ if(btn){ btn.disabled=false; btn.textContent=orig; } alert('Erro de conex\u00e3o. Tente de novo.'); });\n\t\t}\n\n\t\t\/\/ P\u00f3s-adi\u00e7\u00e3o: volta pra lista, marca o produto como \"no carrinho\" (permitindo\n\t\t\/\/ adicionar mais) e atualiza o aviso do topo + o bot\u00e3o de pagamento.\n\t\tfunction onUpsellAdded(pid, min){\n\t\t\taddedCount++;\n\t\t\tmostrarMin(min);   \/\/ a oferta acabou de entrar: o aviso do m\u00ednimo se atualiza (ou some)\n\t\t\tclearErr(); showMain();\n\t\t\tvar card = null;\n\t\t\t$$('.ff-up-add', overlay).forEach(function(b){ if(b.getAttribute('data-pid')===String(pid)) card = b.closest('.ff-up-card'); });\n\t\t\tif(card){\n\t\t\t\tcard.classList.add('ff-up-card-added');\n\t\t\t\tvar b = $('.ff-up-add', card);\n\t\t\t\tif(b) b.textContent = 'Adicionar mais';\n\t\t\t\tvar body = card.querySelector('.ff-up-body') || card;\n\t\t\t\tif(body && !body.querySelector('.ff-up-incart')){\n\t\t\t\t\tvar tag = document.createElement('div');\n\t\t\t\t\ttag.className = 'ff-up-incart';\n\t\t\t\t\ttag.textContent = '\u2713 No carrinho';\n\t\t\t\t\tbody.appendChild(tag);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar added = $('.ff-up-added', overlay);\n\t\t\tif(added) added.textContent = '\u2713 Caixa + ' + addedCount + ' item' + (addedCount>1?'s':'') + ' no carrinho';\n\t\t\tif(skipBtn) skipBtn.textContent = 'Ir para o pagamento';\n\t\t}\n\n\t\t\/\/ Reseta o estado visual do upsell (chamado ao reabrir o modal): zera o contador,\n\t\t\/\/ limpa as marcas \"no carrinho\" e restaura os textos dos bot\u00f5es\/aviso.\n\t\tresetUpsell = function(){\n\t\t\taddedCount = 0;\n\t\t\tclearErr(); showMain();\n\t\t\t$$('.ff-up-card', overlay).forEach(function(card){\n\t\t\t\tcard.classList.remove('ff-up-card-added');\n\t\t\t\tvar tag = card.querySelector('.ff-up-incart'); if(tag) tag.remove();\n\t\t\t\tvar b = $('.ff-up-add', card);\n\t\t\t\tif(b){ b.disabled = false; b.textContent = b.getAttribute('data-has-opts')==='1' ? 'Escolher' : 'Adicionar'; }\n\t\t\t});\n\t\t\tvar added = $('.ff-up-added', overlay);\n\t\t\tif(added) added.textContent = '\u2713 Caixa adicionada ao carrinho';\n\t\t\tif(skipBtn){ skipBtn.disabled = false; skipBtn.textContent = 'N\u00e3o, obrigado \u2014 ir para o pagamento'; }\n\t\t\tif(confirmBtn){ confirmBtn.disabled = false; confirmBtn.textContent = 'Adicionar ao carrinho'; }\n\t\t};\n\n\t\t\/\/ L\u00ea as sele\u00e7\u00f5es de um painel de op\u00e7\u00f5es \u2192 objeto indexado pelo grupo (gi).\n\t\t\/\/ Tamb\u00e9m valida no cliente (r\u00e1pido); o servidor revalida.\n\t\tfunction collectOptions(panel){\n\t\t\tvar out = {}, err = null;\n\t\t\t$$('.ff-opt-group', panel).forEach(function(g){\n\t\t\t\tif(err) return;\n\t\t\t\tvar gi = g.getAttribute('data-gi');\n\t\t\t\tvar kind = g.getAttribute('data-kind');\n\t\t\t\tvar name = g.getAttribute('data-name');\n\t\t\t\tvar req = g.getAttribute('data-required')==='1';\n\t\t\t\tvar min = parseInt(g.getAttribute('data-min'),10)||0;\n\t\t\t\tvar max = parseInt(g.getAttribute('data-max'),10)||0;\n\t\t\t\tif(kind==='qty'){\n\t\t\t\t\tvar counts = {}, total = 0;\n\t\t\t\t\t$$('.ff-opt-q', g).forEach(function(q){\n\t\t\t\t\t\tvar c = parseInt(q.value,10)||0;\n\t\t\t\t\t\tif(c>0){ counts[q.getAttribute('data-name')] = c; total += c; }\n\t\t\t\t\t});\n\t\t\t\t\tif(max>0 && total>max){ err = '\"'+name+'\": m\u00e1ximo '+max+'.'; return; }\n\t\t\t\t\tif((req||min>0) && total < Math.max(1,min)){ err = '\"'+name+'\": escolha '+Math.max(1,min)+'.'; return; }\n\t\t\t\t\tout[gi] = counts;\n\t\t\t\t} else if(kind==='text'){\n\t\t\t\t\tvar t = $('.ff-opt-text', g); var v = t ? t.value.trim() : '';\n\t\t\t\t\tif(req && !v){ err = '\"'+name+'\" \u00e9 obrigat\u00f3rio.'; return; }\n\t\t\t\t\tout[gi] = v;\n\t\t\t\t} else if(kind==='radio'){\n\t\t\t\t\tvar sel = g.querySelector('input:checked');\n\t\t\t\t\tif(req && !sel){ err = 'Escolha uma op\u00e7\u00e3o em \"'+name+'\".'; return; }\n\t\t\t\t\tout[gi] = sel ? sel.value : '';\n\t\t\t\t} else {\n\t\t\t\t\tvar names = $$('input:checked', g).map(function(i){ return i.value; });\n\t\t\t\t\tif(max>0 && names.length>max){ err = '\"'+name+'\": m\u00e1ximo '+max+'.'; return; }\n\t\t\t\t\tif(req && names.length===0){ err = 'Escolha ao menos uma op\u00e7\u00e3o em \"'+name+'\".'; return; }\n\t\t\t\t\tout[gi] = names;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn { options: out, error: err };\n\t\t}\n\n\t\t\/\/ Liga os controles de quantidade: digitar direto + segurar \u2212\/+ pra repetir.\n\t\tfunction bindQtyGroup(g){\n\t\t\tvar max = parseInt(g.getAttribute('data-max'),10)||0;\n\t\t\tvar countEl = $('.ff-opt-count', g);\n\t\t\tvar inputs  = $$('.ff-opt-q', g);\n\t\t\tfunction val(q){ var n=parseInt(q.value,10); return (isNaN(n)||n<0)?0:n; }\n\t\t\tfunction groupTotal(){ var n=0; inputs.forEach(function(q){ n+=val(q); }); return n; }\n\t\t\tfunction refresh(){\n\t\t\t\tvar t = groupTotal();\n\t\t\t\tif(countEl) countEl.textContent = t;\n\t\t\t\t$$('.ff-opt-plus', g).forEach(function(btn){ btn.disabled = (max>0 && t>=max); });\n\t\t\t\tupdateDetailPrice(); \/\/ mant\u00e9m o pre\u00e7o da etapa de op\u00e7\u00f5es em dia\n\t\t\t}\n\t\t\t\/\/ Define o valor de uma op\u00e7\u00e3o respeitando o limite total do grupo.\n\t\t\tfunction setVal(q, v){\n\t\t\t\tif(v<0) v=0;\n\t\t\t\tif(max>0){ var others = groupTotal() - val(q); if(v > max-others) v = max-others; }\n\t\t\t\tq.value = String(v); refresh();\n\t\t\t}\n\t\t\t$$('.ff-opt-row', g).forEach(function(row){\n\t\t\t\tvar q = $('.ff-opt-q', row);\n\t\t\t\tvar plus = $('.ff-opt-plus', row), minus = $('.ff-opt-minus', row);\n\t\t\t\tif(plus)  holdRepeat(plus,  function(){ if(max>0 && groupTotal()>=max) return; setVal(q, val(q)+1); });\n\t\t\t\tif(minus) holdRepeat(minus, function(){ if(val(q)<=0) return; setVal(q, val(q)-1); });\n\t\t\t\tif(q){\n\t\t\t\t\t\/\/ Digitar: mant\u00e9m s\u00f3 d\u00edgitos e corta o que estourar o limite do grupo.\n\t\t\t\t\tq.addEventListener('input', function(){\n\t\t\t\t\t\tvar clean = q.value.replace(\/[^0-9]\/g,'');\n\t\t\t\t\t\tif(clean !== q.value) q.value = clean;\n\t\t\t\t\t\tif(q.value===''){ refresh(); return; } \/\/ permite vazio enquanto digita\n\t\t\t\t\t\tvar over = groupTotal() - max;\n\t\t\t\t\t\tif(max>0 && over>0) setVal(q, val(q)-over); else refresh();\n\t\t\t\t\t});\n\t\t\t\t\tq.addEventListener('blur', function(){ if(q.value==='') q.value='0'; refresh(); });\n\t\t\t\t\tq.addEventListener('focus', function(){ q.select(); });\n\t\t\t\t}\n\t\t\t});\n\t\t\trefresh();\n\t\t}\n\t\t$$('.ff-up-opts', overlay).forEach(function(panel){\n\t\t\t$$('.ff-opt-group[data-kind=\"qty\"]', panel).forEach(bindQtyGroup);\n\t\t});\n\n\t\t\/\/ \"Escolher\/Adicionar\" em cada oferta.\n\t\t$$('.ff-up-add', overlay).forEach(function(btn){\n\t\t\tbtn.addEventListener('click', function(){\n\t\t\t\tvar pid = btn.getAttribute('data-pid');\n\t\t\t\tvar hasOpts = btn.getAttribute('data-has-opts')==='1';\n\t\t\t\tif(!hasOpts){ addUpsell(pid, null, btn); return; }\n\t\t\t\t\/\/ Abre a etapa de op\u00e7\u00f5es do produto.\n\t\t\t\tclearErr();\n\t\t\t\t$$('.ff-up-opts', overlay).forEach(function(p){ p.hidden = (p.getAttribute('data-pid')!==pid); });\n\t\t\t\tvar card = btn.closest('.ff-up-card');\n\t\t\t\tif(detailNm) detailNm.textContent = card ? (card.querySelector('.ff-up-name')||{}).textContent || '' : '';\n\t\t\t\tif(confirmBtn) confirmBtn.setAttribute('data-pid', pid);\n\t\t\t\tupdateDetailPrice(); \/\/ mostra o pre\u00e7o (com desconto) j\u00e1 ao abrir\n\t\t\t\tif(mainView) mainView.hidden = true;\n\t\t\t\tif(detail){ detail.hidden = false; detail.scrollTop = 0; }\n\t\t\t});\n\t\t});\n\n\t\tif(confirmBtn) confirmBtn.addEventListener('click', function(){\n\t\t\tclearErr();\n\t\t\tvar pid = confirmBtn.getAttribute('data-pid');\n\t\t\tvar panel = $('.ff-up-opts[data-pid=\"'+pid+'\"]', overlay);\n\t\t\tvar res = panel ? collectOptions(panel) : { options:{}, error:null };\n\t\t\tif(res.error){ showErr(res.error); return; }\n\t\t\taddUpsell(pid, res.options, confirmBtn);\n\t\t});\n\t}\n\n\trender();\n\n\t\/\/ Voltar do checkout (bfcache): a p\u00e1gina \u00e9 restaurada do cache do navegador com o modal\n\t\/\/ de upsell ainda ABERTO e os bot\u00f5es travados em \"Adicionando...\"\/\"Aguarde...\" \u2014 o que\n\t\/\/ cobria o CTA e travava o fluxo. No restore (e.persisted) fechamos o modal, restauramos\n\t\/\/ o scroll, reabilitamos os bot\u00f5es e re-renderizamos pra deixar o CTA utiliz\u00e1vel de novo.\n\twindow.addEventListener('pageshow', function(e){\n\t\tif(!e.persisted) return;\n\t\tif(overlay){ overlay.hidden = true; }\n\t\tdocument.body.style.overflow = '';\n\t\t$$('.ff-up-add, .ff-up-skip, .ff-up-confirm').forEach(function(b){ b.disabled = false; });\n\t\tvar cta = $('.ff-cta');\n\t\tif(cta){ cta.classList.remove('ff-loading'); }\n\t\trender();\n\t});\n\t}\n\n\t\/*\n\t * Um montador por bloco presente na p\u00e1gina.\n\t *\n\t * O try\/catch existe para um bloco com defeito n\u00e3o derrubar o outro \u2014 mas ele\n\t * ENGOLIA o erro em sil\u00eancio, e foi assim que um `cta.disabled` num elemento que\n\t * n\u00e3o existe mais deixou a p\u00e1gina inteira sem responder, sem uma linha no console.\n\t * Agora o erro aparece: quebrar em sil\u00eancio \u00e9 pior que quebrar.\n\t *\/\n\tArray.prototype.forEach.call(document.querySelectorAll('.flaky-ff'), function(el){\n\t\ttry { iniciarBloco(el); }\n\t\tcatch(e){ if(window.console && console.error) console.error('[festival] bloco n\u00e3o iniciou:', e); }\n\t});\n\n\t\/*\n\t * RODAP\u00c9 \u2014 o \u00fanico caminho para o pagamento quando h\u00e1 mais de uma fam\u00edlia.\n\t *\n\t * Ele s\u00f3 aparece depois que a primeira caixa entra: antes disso n\u00e3o h\u00e1 nada a\n\t * pagar, e um bot\u00e3o de pagamento numa p\u00e1gina vazia s\u00f3 confunde.\n\t *\/\n\t(function(){\n\t\tvar rodape = document.querySelector('.ff-rodape');\n\t\tif(!rodape) return;\n\t\tvar lista  = rodape.querySelector('.ff-rodape-itens');\n\t\tvar pagar  = rodape.querySelector('.ff-rodape-pagar');\n\t\tvar vazio  = document.querySelector('.ff-rodape-vazio');\n\t\tvar temUpsell = !!document.querySelector('.ff-up-overlay');\n\t\tvar cfg0 = (window.__ffBlocos && window.__ffBlocos[0]) ? window.__ffBlocos[0].cfg : {};\n\t\tvar sym = function(v){ return (cfg0.sym||'$') + Number(v||0).toFixed(2); };\n\n\t\t\/*\n\t\t * O rodap\u00e9 s\u00f3 existe quando h\u00e1 algo montado.\n\t\t *\n\t\t * No celular ele \u00e9 uma barra fixa: aparecer com a p\u00e1gina ainda vazia rouba a\n\t\t * altura \u00fatil e promete um pagamento que ainda n\u00e3o \u00e9 poss\u00edvel.\n\t\t *\/\n\t\tfunction atualizar(){\n\t\t\tvar parciais = [], completas = 0, total = 0;\n\t\t\t(window.__ffBlocos || []).forEach(function(b){\n\t\t\t\tvar p = b.parcial();\n\t\t\t\tif(!p) return;\n\t\t\t\tparciais.push(p);\n\t\t\t\ttotal += Number(p.preco || 0);\n\t\t\t\tif(p.completa) completas++;\n\t\t\t});\n\n\t\t\t\/\/ Nada escolhido ainda: a barra n\u00e3o existe. No celular ela \u00e9 fixa, e aparecer\n\t\t\t\/\/ com a p\u00e1gina vazia rouba altura e promete um pagamento imposs\u00edvel.\n\t\t\tif(!parciais.length){\n\t\t\t\trodape.hidden = true;\n\t\t\t\tif(vazio) vazio.hidden = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(vazio) vazio.hidden = true;\n\n\t\t\t\/*\n\t\t\t * Uma linha s\u00f3: o pedido em palavras e o valor.\n\t\t\t *\n\t\t\t *     \ud83c\udf70 2 fatias \u00b7 \ud83c\udf53 2 morangos                       $48,00\n\t\t\t *     \ud83c\udf81 Adicione mais $2,00 e garanta 15 salgados\n\t\t\t *\n\t\t\t * Etiquetas separadas por caixa ficavam altas demais no celular, onde esta\n\t\t\t * barra \u00e9 fixa e disputa espa\u00e7o com o teclado e a pr\u00f3pria p\u00e1gina.\n\t\t\t *\/\n\t\t\tlista.innerHTML = '';\n\n\t\t\tvar linha = document.createElement('div');\n\t\t\tlinha.className = 'ff-rodape-linha';\n\n\t\t\tvar resumo = document.createElement('span');\n\t\t\tresumo.className = 'ff-rodape-resumo';\n\t\t\tresumo.textContent = parciais.map(function(p){\n\t\t\t\tvar f = (window.__ffBlocos || []).filter(function(b){ return b.cfg.familia === p.familia; })[0];\n\t\t\t\tvar nome = f ? (p.tier > 1 ? f.cfg.plural : f.cfg.singular) : 'itens';\n\t\t\t\treturn (f && f.cfg.icone ? f.cfg.icone + ' ' : '') + p.tier + ' ' + nome;\n\t\t\t}).join(' \u00b7 ');\n\t\t\tlinha.appendChild(resumo);\n\n\t\t\tvar t = document.createElement('span');\n\t\t\tt.className = 'ff-rodape-total';\n\t\t\tt.textContent = sym(total);\n\t\t\tlinha.appendChild(t);\n\t\t\tlista.appendChild(linha);\n\n\t\t\t\/\/ O que ainda falta para poder pagar \u2014 dito uma vez, sem repetir por caixa.\n\t\t\tvar faltando = parciais.filter(function(p){ return !p.completa; });\n\t\t\tif(faltando.length){\n\t\t\t\tvar quais = faltando.map(function(p){\n\t\t\t\t\tvar f = (window.__ffBlocos || []).filter(function(b){ return b.cfg.familia === p.familia; })[0];\n\t\t\t\t\treturn f ? f.cfg.plural : 'caixa';\n\t\t\t\t}).join(' e ');\n\t\t\t\tvar av = document.createElement('span');\n\t\t\t\tav.className = 'ff-rodape-falta';\n\t\t\t\tav.textContent = '\u26a0\ufe0f Escolha os sabores d' + (faltando.length > 1 ? 'os ' : 'os ') + quais\n\t\t\t\t\t+ ' \u2014 ou remova a caixa';\n\t\t\t\tlista.appendChild(av);\n\t\t\t}\n\n\t\t\t\/*\n\t\t\t * PEDIDO M\u00cdNIMO \u2014 cobrado aqui, n\u00e3o s\u00f3 no checkout.\n\t\t\t *\n\t\t\t * Deixar a pessoa montar tudo, ir para o pagamento e s\u00f3 l\u00e1 descobrir que\n\t\t\t * n\u00e3o atingiu o m\u00ednimo \u00e9 faz\u00ea-la voltar e refazer. O valor \u00e9 o da REGI\u00c3O\n\t\t\t * escolhida, ent\u00e3o muda quando ela troca de regi\u00e3o.\n\t\t\t *\/\n\t\t\tvar minimo = Number(cfg0.minEntrega || 0);\n\t\t\t\/\/ O que j\u00e1 est\u00e1 no carrinho (salgado, empad\u00e3o, oferta) conta no m\u00ednimo\n\t\t\t\/\/ exatamente como a caixa \u2014 \u00e9 o mesmo pedido. Somar aqui \u00e9 o que faz o\n\t\t\t\/\/ aviso bater com o que o servidor decide na hora de pagar.\n\t\t\tvar jaNoCarrinho = Number(cfg0.outrosCarrinho || 0);\n\t\t\tvar faltaMin = minimo > 0 ? (minimo - total - jaNoCarrinho) : 0;\n\n\t\t\t\/*\n\t\t\t * COBRAR O M\u00cdNIMO AQUI S\u00d3 SE N\u00c3O HOUVER OFERTA DEPOIS.\n\t\t\t *\n\t\t\t * Com a oferta ligada, este rodap\u00e9 \u00e9 a tela errada: a pessoa fecha 6\n\t\t\t * morangos ($36), l\u00ea \"faltam $4,00\" e desiste \u2014 sem saber que o pr\u00f3ximo\n\t\t\t * toque abre um empad\u00e3o de $53 que resolve. O aviso passou para dentro da\n\t\t\t * oferta (mostrarMin), onde o problema e a sa\u00edda aparecem juntos.\n\t\t\t *\n\t\t\t * Sem oferta, o rodap\u00e9 volta a ser o \u00faltimo lugar poss\u00edvel \u2014 e a\u00ed ele fala.\n\t\t\t *\/\n\t\t\t\/\/ `temUpsell` e n\u00e3o cfg0.upsell: o que decide \u00e9 o modal EXISTIR na p\u00e1gina.\n\t\t\t\/\/ Se por algum motivo ele n\u00e3o foi renderizado, n\u00e3o h\u00e1 tela seguinte e o\n\t\t\t\/\/ aviso n\u00e3o pode sumir junto.\n\t\t\tif(faltaMin > 0 && !temUpsell){\n\t\t\t\tvar mm = document.createElement('span');\n\t\t\t\tmm.className = 'ff-rodape-minimo';\n\t\t\t\tmm.textContent = '\u26a0\ufe0f Pedido m\u00ednimo de entrega: ' + sym(minimo)\n\t\t\t\t\t+ ' \u2014 faltam ' + sym(faltaMin)\n\t\t\t\t\t+ (jaNoCarrinho > 0 ? ' (j\u00e1 contando ' + sym(jaNoCarrinho) + ' do carrinho)' : '')\n\t\t\t\t\t+ '. Vale completar com itens do card\u00e1pio.';\n\t\t\t\tlista.appendChild(mm);\n\t\t\t}\n\n\t\t\t\/\/ Contador do brinde \u2014 conta o escolhido, mesmo o que ainda falta montar.\n\t\t\tif(cfg0.giftOn && cfg0.giftMin > 0 && cfg0.giftQty > 0){\n\t\t\t\t\/\/ Mesma conta do servidor (gift_qualifying_subtotal): o carrinho inteiro\n\t\t\t\t\/\/ conta pro brinde, n\u00e3o s\u00f3 as caixas.\n\t\t\t\tvar falta = cfg0.giftMin - total - jaNoCarrinho;\n\t\t\t\tvar g = document.createElement('span');\n\t\t\t\tg.className = 'ff-rodape-brinde' + (falta > 0 ? '' : ' ff-ganhou');\n\t\t\t\tg.textContent = falta > 0\n\t\t\t\t\t? '\ud83c\udf81 Adicione mais ' + sym(falta) + ' e garanta ' + cfg0.giftQty + ' ' + cfg0.giftNoun\n\t\t\t\t\t: '\ud83c\udf81 ' + cfg0.giftQty + ' ' + cfg0.giftNoun + ' garantidos!';\n\t\t\t\tlista.appendChild(g);\n\t\t\t}\n\n\t\t\t\/*\n\t\t\t * NENHUMA caixa pela metade passa.\n\t\t\t *\n\t\t\t * Antes bastava UMA caixa fechada para liberar o pagamento \u2014 e a que estava\n\t\t\t * incompleta era descartada em sil\u00eancio no envio. Quem escolhia 6 morangos,\n\t\t\t * esquecia os sabores e completava as fatias pagava sem os morangos e s\u00f3\n\t\t\t * descobria na entrega. Escolher o tamanho \u00e9 uma declara\u00e7\u00e3o de inten\u00e7\u00e3o:\n\t\t\t * ou ela se completa, ou \u00e9 removida de prop\u00f3sito.\n\t\t\t *\n\t\t\t * O M\u00cdNIMO N\u00c3O TRAVA O BOT\u00c3O QUANDO H\u00c1 OFERTA DEPOIS \u2014 e isto \u00e9 a corre\u00e7\u00e3o\n\t\t\t * de uma decis\u00e3o anterior que dizia o contr\u00e1rio (\"a oferta \u00e9 uma sugest\u00e3o,\n\t\t\t * n\u00e3o um caminho obrigat\u00f3rio para comprar\").\n\t\t\t *\n\t\t\t * O racioc\u00ednio era defens\u00e1vel e o efeito era uma armadilha: 6 morangos d\u00e3o\n\t\t\t * $36 e o m\u00ednimo fora da GTA \u00e9 $40, ent\u00e3o o bot\u00e3o morria a $4 do alvo \u2014 e a\n\t\t\t * \u00fanica tela capaz de resolver (a oferta, com um empad\u00e3o de $53) estava\n\t\t\t * atr\u00e1s justamente desse bot\u00e3o. A cliente ficava sem sa\u00edda nenhuma.\n\t\t\t *\n\t\t\t * Nada passa abaixo do m\u00ednimo por causa disto: quem cobra \u00e9 o servidor, no\n\t\t\t * \"Ir para o pagamento\" da oferta (ajax_skip) e de novo no checkout\n\t\t\t * (enforce_ff_minimum_at_checkout). O que mudou \u00e9 que a pessoa agora\n\t\t\t * ALCAN\u00c7A a tela que resolve. Sem oferta, o bot\u00e3o volta a travar aqui.\n\t\t\t *\/\n\t\t\tvar travaMinimo = (faltaMin > 0) && !temUpsell;\n\t\t\tpagar.disabled = (completas === 0) || (faltando.length > 0) || travaMinimo;\n\t\t\tpagar.title = faltando.length ? 'Complete os sabores ou remova a caixa'\n\t\t\t\t: ( completas === 0 ? 'Monte uma caixa para continuar'\n\t\t\t\t: ( travaMinimo ? 'Falta ' + sym(faltaMin) + ' para o pedido m\u00ednimo de entrega' : '' ) );\n\n\t\t\trodape.hidden = false;\n\t\t}\n\n\t\tdocument.addEventListener('flaky-ff:mudou', atualizar);\n\t\tatualizar();\n\n\t\tpagar.addEventListener('click', function(){\n\t\t\tvar caixas = [];\n\t\t\t(window.__ffBlocos || []).forEach(function(b){ var c = b.caixa(); if(c) caixas.push(c); });\n\t\t\tif(!caixas.length) return;\n\t\t\tif(cfg0.needLocation){ document.dispatchEvent(new CustomEvent('flaky-ff:regiao')); return; }\n\n\t\t\tpagar.disabled = true;\n\t\t\tvar rotulo = pagar.textContent;\n\t\t\tpagar.textContent = 'S\u00f3 um instante...';\n\t\t\tenviarCaixas(caixas, function(erro, dados){\n\t\t\t\tpagar.disabled = false;\n\t\t\t\tpagar.textContent = rotulo;\n\t\t\t\tif(erro){ alert(erro); return; }\n\t\t\t\t\/\/ Havendo oferta, ela aparece agora \u2014 \u00e9 o \u00faltimo momento antes de pagar.\n\t\t\t\tif(temUpsell){\n\t\t\t\t\tdocument.dispatchEvent(new CustomEvent('flaky-ff:pagar', { detail: { checkout: dados.redirect, min: dados.min } }));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twindow.location = dados.redirect;\n\t\t\t});\n\t\t});\n\t})();\n})();<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c3e6b55 elementor-widget elementor-widget-html\" data-id=\"c3e6b55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"trp_language_switcher_shortcode\">\n<div class=\"trp-language-switcher trp-language-switcher-container\" data-no-translation >\n    <div class=\"trp-ls-shortcode-current-language\">\n        <a href=\"#\" class=\"trp-ls-shortcode-disabled-language trp-ls-disabled-language\" title=\"English\" onclick=\"event.preventDefault()\">\n\t\t\t<img decoding=\"async\" class=\"trp-flag-image\" src=\"https:\/\/flakybakery.ca\/wp-content\/plugins\/translatepress-multilingual\/assets\/images\/flags\/en_US.png\" width=\"18\" height=\"12\" alt=\"en_US\" title=\"English\"> English\t\t<\/a>\n    <\/div>\n    <div class=\"trp-ls-shortcode-language\">\n                <a href=\"#\" class=\"trp-ls-shortcode-disabled-language trp-ls-disabled-language\"  title=\"English\" onclick=\"event.preventDefault()\">\n\t\t\t<img decoding=\"async\" class=\"trp-flag-image\" src=\"https:\/\/flakybakery.ca\/wp-content\/plugins\/translatepress-multilingual\/assets\/images\/flags\/en_US.png\" width=\"18\" height=\"12\" alt=\"en_US\" title=\"English\"> English\t\t<\/a>\n                    <a href=\"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/pages\/7880#TRPLINKPROCESSED\" title=\"Portugu\u00eas do Brasil\">\n            <img decoding=\"async\" class=\"trp-flag-image\" src=\"https:\/\/flakybakery.ca\/wp-content\/plugins\/translatepress-multilingual\/assets\/images\/flags\/pt_BR.png\" width=\"18\" height=\"12\" alt=\"pt_BR\" title=\"Portugu\u00eas do Brasil\"> Portugu\u00eas do Brasil        <\/a>\n\n        <\/div>\n    <script type=\"application\/javascript\">\n        \/\/ need to have the same with set from JS on both divs. Otherwise it can push stuff around in HTML\n        var trp_ls_shortcodes = document.querySelectorAll('.trp_language_switcher_shortcode .trp-language-switcher');\n        if ( trp_ls_shortcodes.length > 0) {\n            \/\/ get the last language switcher added\n            var trp_el = trp_ls_shortcodes[trp_ls_shortcodes.length - 1];\n\n            var trp_shortcode_language_item = trp_el.querySelector( '.trp-ls-shortcode-language' )\n            \/\/ set width\n            var trp_ls_shortcode_width                                               = trp_shortcode_language_item.offsetWidth + 16;\n            trp_shortcode_language_item.style.width                                  = trp_ls_shortcode_width + 'px';\n            trp_el.querySelector( '.trp-ls-shortcode-current-language' ).style.width = trp_ls_shortcode_width + 'px';\n\n            \/\/ We're putting this on display: none after we have its width.\n            trp_shortcode_language_item.style.display = 'none';\n        }\n    <\/script>\n<\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-7880","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/pages\/7880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/comments?post=7880"}],"version-history":[{"count":7,"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/pages\/7880\/revisions"}],"predecessor-version":[{"id":7887,"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/pages\/7880\/revisions\/7887"}],"wp:attachment":[{"href":"https:\/\/flakybakery.ca\/en\/wp-json\/wp\/v2\/media?parent=7880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}