{"id":16266,"date":"2026-08-20T12:17:26","date_gmt":"2026-08-20T15:17:26","guid":{"rendered":"https:\/\/www.sabra.org.br\/site\/?page_id=16266"},"modified":"2026-08-20T18:36:03","modified_gmt":"2026-08-20T21:36:03","slug":"campanha-reforma-2026-doe","status":"publish","type":"page","link":"https:\/\/www.sabra.org.br\/site\/campanha-reforma-2026-doe\/","title":{"rendered":"Campanha Reforma 2026 &#8211; Doe"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"16266\" class=\"elementor elementor-16266\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ded0c2c e-flex e-con-boxed e-con e-parent\" data-id=\"ded0c2c\" 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-db6167e elementor-widget elementor-widget-html\" data-id=\"db6167e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"pt-br\">\r\n<head>\r\n    <meta charset=\"UTF-8\" \/>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n    <title>Doe agora \u2013 Reforma SABRA 2026<\/title>\r\n    <style>\r\n        \/* ---------- RESET & GLOBAIS ---------- *\/\r\n        * { margin: 0; padding: 0; box-sizing: border-box; }\r\n        body {\r\n            font-family: 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\r\n            background-color: #f5f2eb; color: #2c2b28;\r\n            line-height: 1.6; padding: 2rem 1rem;\r\n        }\r\n        .sabra-container { max-width: 1200px; margin: 0 auto; padding: 0 1.5rem; }\r\n        \/* ---------- CABE\u00c7ALHO ---------- *\/\r\n        .sabra-header { text-align: center; margin-bottom: 2.5rem; }\r\n        .sabra-logo { font-size: 1.8rem; font-weight: 700; color: #1a4d2e; }\r\n        .sabra-logo span { font-weight: 300; color: #3a6b47; }\r\n        .sabra-tagline {\r\n            font-size: 1rem; color: #5e5b55;\r\n            border-top: 1px solid #ddd6cb; border-bottom: 1px solid #ddd6cb;\r\n            display: inline-block; padding: 0.4rem 1.2rem; margin-top: 0.3rem;\r\n        }\r\n        .badge-meta {\r\n            display: inline-block; background: #1a4d2e; color: #fff;\r\n            font-weight: 700; padding: 0.6rem 2rem; border-radius: 60px;\r\n            font-size: 1.4rem; margin-top: 1.8rem; letter-spacing: 0.5px;\r\n            box-shadow: 0 6px 14px rgba(26,77,46,0.25);\r\n        }\r\n        #total-arrecadado {\r\n            margin-top: 12px; font-size: 1.2rem; font-weight: 600; color: #1a4d2e;\r\n        }\r\n        #total-arrecadado span {\r\n            background: #e8efe4; padding: 0.2rem 1rem; border-radius: 40px;\r\n        }\r\n        \/* ---------- \u00c1REA DE DOA\u00c7\u00c3O ---------- *\/\r\n        .donation-area {\r\n            background: #ffffff; border-radius: 28px; padding: 2rem;\r\n            margin-bottom: 2rem; box-shadow: 0 6px 14px rgba(0,0,0,0.03);\r\n        }\r\n        .donation-area h2 {\r\n            font-size: 2rem; color: #1a4d2e;\r\n            border-left: 5px solid #1a4d2e; padding-left: 1.2rem;\r\n            margin-bottom: 1.5rem;\r\n        }\r\n        .values-grid {\r\n            display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;\r\n            margin-bottom: 20px;\r\n        }\r\n        .btn-value {\r\n            background: #f3f6fa; border: 2px solid transparent; padding: 14px 8px;\r\n            border-radius: 12px; font-family: inherit; font-weight: 600;\r\n            font-size: 1rem; color: #1a2634; cursor: pointer;\r\n            transition: all 0.2s; text-align: center;\r\n        }\r\n        .btn-value:hover { background: #e2e9f2; border-color: #b0c4d9; }\r\n        .btn-value.active {\r\n            background: #1a4d2e; color: #ffffff; border-color: #0f3a22;\r\n            box-shadow: 0 4px 8px rgba(26,77,46,0.25);\r\n        }\r\n        .custom-value-container { margin: 8px 0 18px; }\r\n        .input-custom {\r\n            width: 100%; padding: 14px; border: 2px solid #dce2ea;\r\n            border-radius: 12px; font-family: inherit; font-size: 1rem;\r\n            text-align: center; background: #fafcfe; transition: border 0.2s;\r\n        }\r\n        .input-custom:focus { border-color: #1a4d2e; outline: none; background: #ffffff; }\r\n        .form-group { margin-bottom: 18px; text-align: left; }\r\n        .form-group label {\r\n            display: block; font-weight: 600; font-size: 0.95rem;\r\n            color: #1a2634; margin-bottom: 5px;\r\n        }\r\n        .form-group label .required { color: #d32f2f; margin-left: 2px; }\r\n        .form-group input {\r\n            width: 100%; padding: 14px 16px; border: 2px solid #dce2ea;\r\n            border-radius: 12px; font-family: inherit; font-size: 1rem;\r\n            background: #fafcfe; transition: border 0.2s;\r\n        }\r\n        .form-group input:focus { border-color: #1a4d2e; outline: none; background: #ffffff; }\r\n        .form-group input.error { border-color: #d32f2f; background: #fff5f5; }\r\n        .error-message {\r\n            color: #d32f2f; font-size: 0.85rem; margin-top: 4px; display: none;\r\n        }\r\n        .error-message.visible { display: block; }\r\n        .btn-primary {\r\n            width: 100%; background: #1a4d2e; color: #ffffff; border: none;\r\n            padding: 16px; border-radius: 12px; font-family: inherit;\r\n            font-weight: 700; font-size: 1.1rem; cursor: pointer;\r\n            transition: background 0.2s, transform 0.1s; margin-top: 8px;\r\n        }\r\n        .btn-primary:hover { background: #0f3a22; }\r\n        .btn-primary:active { transform: scale(0.98); }\r\n        .btn-primary:disabled { background: #8aa89b; cursor: not-allowed; }\r\n        .qrcode-box {\r\n            margin: 24px 0 12px; display: flex; flex-direction: column;\r\n            align-items: center; justify-content: center;\r\n        }\r\n        #qrcode {\r\n            background: #ffffff; padding: 12px; border-radius: 16px;\r\n            border: 4px solid #1a4d2e; display: inline-block;\r\n            min-height: 180px; min-width: 180px;\r\n        }\r\n        #qrcode canvas { display: none !important; }\r\n        #qrcode img { display: block !important; margin: 0 auto; }\r\n        .copia-cola-box { margin-top: 16px; }\r\n        .input-code {\r\n            width: 100%; padding: 12px; background: #f2f5f8;\r\n            border: 1px dashed #b0c4d9; border-radius: 8px; font-size: 0.9rem;\r\n            font-family: 'Courier New', monospace; word-break: break-all;\r\n            resize: none; box-sizing: border-box; color: #1a2634;\r\n        }\r\n        .btn-copy {\r\n            width: 100%; background: #1a4d2e; color: #ffffff; border: none;\r\n            padding: 14px; border-radius: 10px; font-family: inherit;\r\n            font-weight: 600; font-size: 1rem; cursor: pointer;\r\n            transition: background 0.2s; margin-top: 10px;\r\n        }\r\n        .btn-copy:hover { background: #0f3a22; }\r\n        .status-message {\r\n            text-align: center; margin-top: 16px; font-size: 1rem;\r\n            font-weight: 500; color: #2c3e50;\r\n        }\r\n        .status-message.success { color: #1a4d2e; }\r\n        .status-message.error { color: #c62828; }\r\n        .status-message.loading { color: #0f3a22; font-weight: 600; }\r\n        .hidden { display: none !important; }\r\n        \/* ---------- RODAP\u00c9 ---------- *\/\r\n        .sabra-footer {\r\n            text-align: center; font-size: 0.85rem; color: #6f6b64;\r\n            margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid #ddd6cb;\r\n        }\r\n        .sabra-footer .heart { color: #b91c1c; }\r\n        \/* ---------- RESPONSIVO ---------- *\/\r\n        @media (max-width: 768px) {\r\n            .sabra-container { padding: 0 1rem; }\r\n            .donation-area h2 { font-size: 1.6rem; padding-left: 1rem; }\r\n            .donation-area { padding: 1.5rem; }\r\n            .values-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; }\r\n            .btn-value { font-size: 0.9rem; padding: 12px 4px; }\r\n            .badge-meta { font-size: 1.1rem; padding: 0.4rem 1.4rem; }\r\n        }\r\n        @media (max-width: 480px) {\r\n            .values-grid { grid-template-columns: repeat(3, 1fr); }\r\n            .btn-copy, .btn-primary { width: 100%; }\r\n            .sabra-logo { font-size: 1.4rem; }\r\n            #qrcode canvas, #qrcode img { width: 150px !important; height: 150px !important; }\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n    <header class=\"sabra-header sabra-container\">\r\n        <div class=\"sabra-logo\">SABRA <span>\u00b7 Doe Agora<\/span><\/div>\r\n        <div class=\"sabra-tagline\">Reforma 2026 \u2013 Sua doa\u00e7\u00e3o faz a diferen\u00e7a<\/div>\r\n        <div class=\"badge-meta\">\ud83c\udfaf Meta: R$ 60.000,00<\/div>\r\n        <div id=\"total-arrecadado\">\ud83d\udcca Arrecadado: <span id=\"total-value\">R$ 0,00<\/span><\/div>\r\n    <\/header>\r\n\r\n    <main class=\"sabra-container\">\r\n        <section class=\"donation-area\">\r\n            <h2>\u2728 Doe agora via Pix<\/h2>\r\n            <p style=\"margin-bottom:1.5rem; color:#5e5b55;\">\r\n                Escolha o valor, preencha seus dados e gere o QR Code para pagamento.\r\n                Sua contribui\u00e7\u00e3o \u00e9 fundamental para alcan\u00e7armos a meta.\r\n            <\/p>\r\n\r\n            <div class=\"values-grid\">\r\n                <button class=\"btn-value\" data-amount=\"15\">R$ 15<\/button>\r\n                <button class=\"btn-value\" data-amount=\"40\">R$ 40<\/button>\r\n                <button class=\"btn-value\" data-amount=\"80\">R$ 80<\/button>\r\n                <button class=\"btn-value\" data-amount=\"100\">R$ 100<\/button>\r\n                <button class=\"btn-value\" data-amount=\"200\">R$ 200<\/button>\r\n                <button class=\"btn-value\" id=\"btn-outro\">Outro<\/button>\r\n            <\/div>\r\n\r\n            <div class=\"custom-value-container hidden\" id=\"custom-box\">\r\n                <input type=\"number\" class=\"input-custom\" id=\"custom-amount\"\r\n                       placeholder=\"Digite o valor R$\" min=\"1\" step=\"0.01\">\r\n            <\/div>\r\n\r\n            <form id=\"donation-form\" novalidate>\r\n                <div class=\"form-group\">\r\n                    <label for=\"fullname\">Nome Completo <span class=\"required\">*<\/span><\/label>\r\n                    <input type=\"text\" id=\"fullname\" placeholder=\"Ex: Maria Silva\" required>\r\n                    <div class=\"error-message\" id=\"fullname-error\">Por favor, informe seu nome completo.<\/div>\r\n                <\/div>\r\n                <div class=\"form-group\">\r\n                    <label for=\"cellphone\">Celular <span class=\"required\">*<\/span><\/label>\r\n                    <input type=\"tel\" id=\"cellphone\" placeholder=\"Ex: (31) 98765-4321\" required>\r\n                    <div class=\"error-message\" id=\"cellphone-error\">Informe seu celular com DDD.<\/div>\r\n                <\/div>\r\n                <div class=\"form-group\">\r\n                    <label for=\"email\">E-mail <span class=\"required\">*<\/span><\/label>\r\n                    <input type=\"email\" id=\"email\" placeholder=\"Ex: nome@email.com\" required>\r\n                    <div class=\"error-message\" id=\"email-error\">Informe um e-mail v\u00e1lido.<\/div>\r\n                <\/div>\r\n                <button type=\"submit\" class=\"btn-primary\" id=\"btn-generate\">Gerar PIX<\/button>\r\n            <\/form>\r\n\r\n            <div id=\"pix-response-area\" class=\"hidden\">\r\n                <div class=\"qrcode-box\">\r\n                    <p style=\"font-size:0.95rem; color:#2c3e50; margin-bottom:10px; font-weight:600;\">\r\n                        Abra o app do seu banco e escaneie o c\u00f3digo:\r\n                    <\/p>\r\n                    <div id=\"qrcode\"><\/div>\r\n                <\/div>\r\n                <div class=\"copia-cola-box\">\r\n                    <textarea class=\"input-code\" id=\"pix-payload\" readonly rows=\"3\"><\/textarea>\r\n                    <button class=\"btn-copy\" id=\"btn-copy-action\">\ud83d\udccb Copiar c\u00f3digo Pix<\/button>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div id=\"status-message\" class=\"status-message\"><\/div>\r\n        <\/section>\r\n    <\/main>\r\n\r\n    <footer class=\"sabra-footer sabra-container\">\r\n        <p>Compartilhe esta campanha! Quanto mais pessoas souberem, mais r\u00e1pido transformaremos esse sonho em realidade.<\/p>\r\n        <p style=\"margin-top:0.4rem;\">Juntos, vamos construir o palco e o espa\u00e7o que a nossa m\u00fasica merece! <span class=\"heart\">\u2665<\/span><\/p>\r\n        <p style=\"margin-top:0.8rem; font-size:0.75rem;\">Sociedade Art\u00edstica Brasileira \u2013 SABRA \u00b7 CNPJ 19.442.344\/0001-89 \u00b7 Betim\/MG<\/p>\r\n    <\/footer>\r\n\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/qrcodejs@1.0.0\/qrcode.min.js\"><\/script>\r\n\r\n    <script>\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        \/\/ ========== CONFIGURA\u00c7\u00d5ES ==========\r\n        const PIX_KEY = \"19442344000189\";\r\n        const MERCH_NAME = \"ESCOLA DE MUSICA SABRA\";\r\n        const MERCH_CITY = \"BETIM\";\r\n\r\n        \/\/ ========== URL DO WEBHOOK ==========\r\n        const SHEETS_WEBHOOK_URL = \"https:\/\/script.google.com\/macros\/s\/AKfycbwK2mh_lubGHWRqXh_7BbYSi_wQdf3TcSgX4h44WAQu05Of1WkSJXYYXa_5GROKZkXjSQ\/exec\";\r\n\r\n        let selectedAmount = 0;\r\n        let isSubmitting = false;\r\n\r\n        \/\/ Elementos\r\n        const btnValues = document.querySelectorAll(\".btn-value:not(#btn-outro)\");\r\n        const btnOutro = document.getElementById(\"btn-outro\");\r\n        const customBox = document.getElementById(\"custom-box\");\r\n        const customAmountInput = document.getElementById(\"custom-amount\");\r\n        const pixResponseArea = document.getElementById(\"pix-response-area\");\r\n        const qrContainer = document.getElementById(\"qrcode\");\r\n        const pixPayloadTextarea = document.getElementById(\"pix-payload\");\r\n        const btnCopy = document.getElementById(\"btn-copy-action\");\r\n        const form = document.getElementById(\"donation-form\");\r\n        const btnGenerate = document.getElementById(\"btn-generate\");\r\n        const statusMsg = document.getElementById(\"status-message\");\r\n\r\n        \/\/ Campos\r\n        const fullnameInput = document.getElementById(\"fullname\");\r\n        const cellphoneInput = document.getElementById(\"cellphone\");\r\n        const emailInput = document.getElementById(\"email\");\r\n        const fullnameError = document.getElementById(\"fullname-error\");\r\n        const cellphoneError = document.getElementById(\"cellphone-error\");\r\n        const emailError = document.getElementById(\"email-error\");\r\n\r\n        \/\/ ---------- FUN\u00c7\u00c3O PARA ATUALIZAR TOTAL ----------\r\n        function formatCurrency(value) {\r\n            return 'R$ ' + value.toFixed(2).replace('.', ',');\r\n        }\r\n\r\n        async function fetchTotal() {\r\n            try {\r\n                const response = await fetch(SHEETS_WEBHOOK_URL, {\r\n                    method: 'GET',\r\n                    headers: { 'Accept': 'application\/json' }\r\n                });\r\n                if (!response.ok) throw new Error('HTTP ' + response.status);\r\n                const data = await response.json();\r\n                if (data.total !== undefined) {\r\n                    document.getElementById('total-value').textContent = formatCurrency(data.total);\r\n                }\r\n            } catch (error) {\r\n                console.error('Erro ao buscar total:', error);\r\n                \/\/ Mant\u00e9m o valor atual ou R$ 0,00\r\n            }\r\n        }\r\n\r\n        \/\/ ---------- AUXILIARES ----------\r\n        function resetActiveButtons() {\r\n            document.querySelectorAll(\".btn-value\").forEach(btn => btn.classList.remove(\"active\"));\r\n        }\r\n\r\n        function hidePixAreas() {\r\n            pixResponseArea.classList.add(\"hidden\");\r\n            \/\/ Limpeza total do container do QR Code\r\n            qrContainer.innerHTML = '';\r\n        }\r\n\r\n        function setSelectedAmount(value) {\r\n            selectedAmount = value;\r\n            statusMsg.textContent = \"\";\r\n            statusMsg.className = \"status-message\";\r\n            hidePixAreas();\r\n        }\r\n\r\n        \/\/ ---------- SELE\u00c7\u00c3O DE VALOR ----------\r\n        btnValues.forEach(btn => {\r\n            btn.addEventListener(\"click\", function() {\r\n                resetActiveButtons();\r\n                this.classList.add(\"active\");\r\n                customBox.classList.add(\"hidden\");\r\n                const val = parseFloat(this.getAttribute(\"data-amount\"));\r\n                setSelectedAmount(val);\r\n            });\r\n        });\r\n\r\n        btnOutro.addEventListener(\"click\", function() {\r\n            resetActiveButtons();\r\n            this.classList.add(\"active\");\r\n            customBox.classList.remove(\"hidden\");\r\n            customAmountInput.value = \"\";\r\n            setSelectedAmount(0);\r\n            customAmountInput.focus();\r\n        });\r\n\r\n        customAmountInput.addEventListener(\"input\", function() {\r\n            const val = parseFloat(this.value);\r\n            if (val > 0) {\r\n                setSelectedAmount(val);\r\n            } else {\r\n                setSelectedAmount(0);\r\n                hidePixAreas();\r\n            }\r\n        });\r\n\r\n        \/\/ ---------- VALIDA\u00c7\u00c3O ----------\r\n        function validateField(input, errorEl, validator) {\r\n            const value = input.value.trim();\r\n            if (!validator(value)) {\r\n                input.classList.add(\"error\");\r\n                errorEl.classList.add(\"visible\");\r\n                return false;\r\n            } else {\r\n                input.classList.remove(\"error\");\r\n                errorEl.classList.remove(\"visible\");\r\n                return true;\r\n            }\r\n        }\r\n\r\n        function isNonEmpty(str) { return str.length > 0; }\r\n\r\n        function isValidCellphone(str) {\r\n            const cleaned = str.replace(\/\\D\/g, '');\r\n            return cleaned.length >= 10 && cleaned.length <= 11;\r\n        }\r\n\r\n        function isValidEmail(str) {\r\n            const re = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n            return re.test(str);\r\n        }\r\n\r\n        fullnameInput.addEventListener(\"blur\", function() {\r\n            validateField(this, fullnameError, isNonEmpty);\r\n        });\r\n        cellphoneInput.addEventListener(\"blur\", function() {\r\n            validateField(this, cellphoneError, isValidCellphone);\r\n        });\r\n        emailInput.addEventListener(\"blur\", function() {\r\n            validateField(this, emailError, isValidEmail);\r\n        });\r\n\r\n        \/\/ ---------- GERA\u00c7\u00c3O PIX ----------\r\n        function generatePixPayload(key, name, city, amount) {\r\n            function emvSlot(id, value) {\r\n                const len = String(value).length.toString().padStart(2, '0');\r\n                return id + len + value;\r\n            }\r\n            const formattedAmount = amount.toFixed(2);\r\n            let payload = emvSlot(\"00\", \"01\");\r\n            payload += emvSlot(\"26\", emvSlot(\"00\", \"br.gov.bcb.pix\") + emvSlot(\"01\", key));\r\n            payload += emvSlot(\"52\", \"0000\");\r\n            payload += emvSlot(\"53\", \"986\");\r\n            payload += emvSlot(\"54\", formattedAmount);\r\n            payload += emvSlot(\"58\", \"BR\");\r\n            payload += emvSlot(\"59\", name.substring(0, 25));\r\n            payload += emvSlot(\"60\", city.substring(0, 15));\r\n            payload += emvSlot(\"62\", emvSlot(\"05\", \"***\"));\r\n            payload += \"6304\";\r\n\r\n            let crc = 0xFFFF;\r\n            for (let i = 0; i < payload.length; i++) {\r\n                let byte = payload.charCodeAt(i);\r\n                crc ^= (byte << 8);\r\n                for (let j = 0; j < 8; j++) {\r\n                    if (crc & 0x8000) crc = (crc << 1) ^ 0x1021;\r\n                    else crc <<= 1;\r\n                    crc &= 0xFFFF;\r\n                }\r\n            }\r\n            return payload + crc.toString(16).toUpperCase().padStart(4, '0');\r\n        }\r\n\r\n        function generateQRCode(payload) {\r\n            \/\/ Limpeza completa antes de gerar\r\n            qrContainer.innerHTML = '';\r\n            if (typeof QRCode === \"undefined\") {\r\n                console.error(\"QRCode library not loaded.\");\r\n                return;\r\n            }\r\n            try {\r\n                new QRCode(qrContainer, {\r\n                    text: payload,\r\n                    width: 180,\r\n                    height: 180,\r\n                    colorDark: \"#000000\",\r\n                    colorLight: \"#ffffff\",\r\n                    correctLevel: QRCode.CorrectLevel.M\r\n                });\r\n            } catch (e) {\r\n                console.error(\"Erro ao gerar QR Code:\", e);\r\n            }\r\n        }\r\n\r\n        \/\/ ---------- ENVIO PARA A PLANILHA (com no-cors) ----------\r\n        async function sendToSheet(data) {\r\n            try {\r\n                console.log(\"\ud83d\udce4 Enviando dados:\", data);\r\n                const response = await fetch(SHEETS_WEBHOOK_URL, {\r\n                    method: \"POST\",\r\n                    mode: \"no-cors\",\r\n                    headers: { \"Content-Type\": \"application\/json\" },\r\n                    body: JSON.stringify(data)\r\n                });\r\n                console.log(\"\u2705 Requisi\u00e7\u00e3o enviada (no-cors).\");\r\n                return true;\r\n            } catch (error) {\r\n                console.error(\"\u274c Erro no envio:\", error);\r\n                return false;\r\n            }\r\n        }\r\n\r\n        \/\/ ---------- SUBMISS\u00c3O ----------\r\n        form.addEventListener(\"submit\", async function(e) {\r\n            e.preventDefault();\r\n            if (isSubmitting) return;\r\n\r\n            \/\/ Valida todos os campos\r\n            const isNameValid = validateField(fullnameInput, fullnameError, isNonEmpty);\r\n            const isCellValid = validateField(cellphoneInput, cellphoneError, isValidCellphone);\r\n            const isEmailValid = validateField(emailInput, emailError, isValidEmail);\r\n\r\n            if (!isNameValid || !isCellValid || !isEmailValid) {\r\n                statusMsg.textContent = \"Preencha todos os campos obrigat\u00f3rios corretamente.\";\r\n                statusMsg.className = \"status-message error\";\r\n                return;\r\n            }\r\n\r\n            if (selectedAmount <= 0) {\r\n                statusMsg.textContent = \"Escolha um valor de doa\u00e7\u00e3o.\";\r\n                statusMsg.className = \"status-message error\";\r\n                return;\r\n            }\r\n\r\n            const donorData = {\r\n                nome: fullnameInput.value.trim(),\r\n                celular: cellphoneInput.value.trim(),\r\n                email: emailInput.value.trim(),\r\n                valor: selectedAmount,\r\n                data: new Date().toISOString()\r\n            };\r\n\r\n            isSubmitting = true;\r\n            btnGenerate.disabled = true;\r\n            btnGenerate.textContent = \"Enviando...\";\r\n            statusMsg.textContent = \"Enviando dados...\";\r\n            statusMsg.className = \"status-message loading\";\r\n\r\n            const sent = await sendToSheet(donorData);\r\n\r\n            if (!sent) {\r\n                statusMsg.textContent = \"Erro ao enviar seus dados. Tente novamente.\";\r\n                statusMsg.className = \"status-message error\";\r\n                btnGenerate.disabled = false;\r\n                btnGenerate.textContent = \"Gerar PIX\";\r\n                isSubmitting = false;\r\n                return;\r\n            }\r\n\r\n            \/\/ Gera QR Code\r\n            const payload = generatePixPayload(PIX_KEY, MERCH_NAME, MERCH_CITY, selectedAmount);\r\n            pixPayloadTextarea.value = payload;\r\n            generateQRCode(payload);\r\n\r\n            pixResponseArea.classList.remove(\"hidden\");\r\n\r\n            statusMsg.textContent = \"\u2705 Doa\u00e7\u00e3o registrada! Escaneie o QR Code ou copie o c\u00f3digo. O recibo da doa\u00e7\u00e3o \u00e9 o Comprovante Pix emitido pela sua Institui\u00e7\u00e3o banc\u00e1ria.\";\r\n            statusMsg.className = \"status-message success\";\r\n\r\n            btnGenerate.disabled = false;\r\n            btnGenerate.textContent = \"Gerar PIX\";\r\n            isSubmitting = false;\r\n\r\n            \/\/ Atualiza o total ap\u00f3s a doa\u00e7\u00e3o\r\n            fetchTotal();\r\n            pixResponseArea.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n        });\r\n\r\n        \/\/ ---------- COPIAR ----------\r\n        btnCopy.addEventListener(\"click\", function() {\r\n            pixPayloadTextarea.select();\r\n            pixPayloadTextarea.setSelectionRange(0, 99999);\r\n            navigator.clipboard.writeText(pixPayloadTextarea.value)\r\n                .then(() => alert(\"C\u00f3digo Pix copiado!\"))\r\n                .catch(() => {\r\n                    document.execCommand(\"copy\");\r\n                    alert(\"C\u00f3digo Pix copiado!\");\r\n                });\r\n        });\r\n\r\n        \/\/ ---------- INICIALIZA\u00c7\u00c3O ----------\r\n        customBox.classList.add(\"hidden\");\r\n        hidePixAreas();\r\n        fetchTotal();\r\n        setInterval(fetchTotal, 30000);\r\n    });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\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":"<p>Doe agora \u2013 Reforma SABRA 2026 SABRA \u00b7 Doe Agora Reforma 2026 \u2013 Sua doa\u00e7\u00e3o faz a diferen\u00e7a \ud83c\udfaf Meta: R$ 60.000,00 \ud83d\udcca Arrecadado: R$&hellip;<\/p>\n","protected":false},"author":39,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_customify_content_layout":"","_customify_sidebar":"","_customify_page_header_display":"","_customify_disable_header":"","_customify_disable_header_top":"","_customify_disable_header_main":"","_customify_disable_header_bottom":"","_customify_disable_page_title":"","_customify_disable_content_vertical_padding":"","_customify_disable_footer_top":"","_customify_disable_footer_main":"","_customify_disable_footer_bottom":"","_customify_breadcrumb_display":"","_customify_header_transparent_display":"","footnotes":""},"class_list":["post-16266","page","type-page","status-publish","hentry"],"jetpack_shortlink":"https:\/\/wp.me\/P95j2Z-4em","jetpack-related-posts":[{"id":16258,"url":"https:\/\/www.sabra.org.br\/site\/campanha-reforma-2026\/","url_meta":{"origin":16266,"position":0},"title":"Campanha Reforma 2026","author":"M\u00e1rcio Miranda Pontes","date":"20 de agosto de 2026","format":false,"excerpt":"Campanha Reforma SABRA 2026 | Apresenta\u00e7\u00e3o SABRA \u00b7 Sociedade Art\u00edstica Brasileira Fundada em 2013 \u00b7 Betim\/MG \u00b7 Certifica\u00e7\u00e3o CEBAS \ud83c\udfaf Meta: R$ 60.000,00 \ud83d\udcca Arrecadado: R$ 0,00 Reforma SABRA 2026 A m\u00fasica transforma vidas, mas o espa\u00e7o onde ela acontece precisa acompanhar essa transforma\u00e7\u00e3o. A Escola de M\u00fasica SABRA \u00e9\u2026","rel":"","context":"Post similar","block_context":{"text":"Post similar","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":15569,"url":"https:\/\/www.sabra.org.br\/site\/mural-de-doadores\/","url_meta":{"origin":16266,"position":1},"title":"Mural de Doadores","author":"M\u00e1rcio Miranda Pontes","date":"30 de abril de 2026","format":false,"excerpt":"SABRA - Mural de Doadores | Clube Aluno Nota 10 SABRA \u00b7 M\u00fasica e Cidadania Clube Aluno Nota 10 \u00b7 Transpar\u00eancia e Gratid\u00e3o \ud83c\udf1f Mural de Doadores 2026 Pessoas e empresas que acreditam no poder transformador da m\u00fasica Carregando... \ud83d\udc9a Compartilhe este mural Mostre ao mundo que voc\u00ea faz parte\u2026","rel":"","context":"Post similar","block_context":{"text":"Post similar","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26,"url":"https:\/\/www.sabra.org.br\/site\/transparencia\/","url_meta":{"origin":16266,"position":2},"title":"Transpar\u00eancia","author":"M\u00e1rcio Miranda Pontes","date":"24 de maio de 2016","format":false,"excerpt":"SABRA - Transpar\u00eancia SABRA \u00b7 Sociedade Art\u00edstica Brasileira Fundada em 2013 \u00b7 Betim\/MG \u00b7 Certifica\u00e7\u00e3o CEBAS Transpar\u00eancia \ud83d\udccb T\u00edtulos e registros CEBAS - Certifica\u00e7\u00e3o de Entidade Beneficente de Assist\u00eancia Social CNEAS - Cadastro Nacional de Entidades de Assist\u00eancia Social CMDCA - Conselho Municipal da Crian\u00e7a e do Adolescente de Betim\u2026","rel":"","context":"Post similar","block_context":{"text":"Post similar","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16181,"url":"https:\/\/www.sabra.org.br\/site\/campanha-quintal\/","url_meta":{"origin":16266,"position":3},"title":"Campanha Quintal","author":"M\u00e1rcio Miranda Pontes","date":"7 de agosto de 2026","format":false,"excerpt":"Campanha Reforma SABRA 2026 | Doe Agora SABRA \u00b7 Sociedade Art\u00edstica Brasileira Fundada em 2013 \u00b7 Betim\/MG \u00b7 Certifica\u00e7\u00e3o CEBAS \ud83c\udfaf Meta: R$ 50.000,00 Reforma SABRA 2026 A m\u00fasica transforma vidas, mas o espa\u00e7o onde ela acontece precisa acompanhar essa transforma\u00e7\u00e3o. A Escola de M\u00fasica SABRA \u00e9 um polo de\u2026","rel":"","context":"Post similar","block_context":{"text":"Post similar","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16,"url":"https:\/\/www.sabra.org.br\/site\/sabra\/","url_meta":{"origin":16266,"position":4},"title":"SABRA","author":"M\u00e1rcio Miranda Pontes","date":"24 de maio de 2016","format":false,"excerpt":"SABRA - Miss\u00e3o, Vis\u00e3o e Valores SABRA \u00b7 Sociedade Art\u00edstica Brasileira Fundada em 2013 \u00b7 Betim\/MG \u00b7 Certifica\u00e7\u00e3o CEBAS Nossa Identidade Somos uma associa\u00e7\u00e3o civil sem fins lucrativos que atua na Regi\u00e3o Metropolitana de Belo Horizonte para levar educa\u00e7\u00e3o musical gratuita, inclusiva e transformadora. Miss\u00e3o Promover a transforma\u00e7\u00e3o social por\u2026","rel":"","context":"Post similar","block_context":{"text":"Post similar","link":""},"img":{"alt_text":"Sabra - Miss\u00e3o, Vis\u00e3o e Valores","src":"https:\/\/i0.wp.com\/www.sabra.org.br\/site\/wp-content\/uploads\/2016\/08\/foto-pagInterna-01-300x150.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":13,"url":"https:\/\/www.sabra.org.br\/site\/","url_meta":{"origin":16266,"position":5},"title":"Sociedade Art\u00edstica Brasileira &#8211; SABRA","author":"M\u00e1rcio Miranda Pontes","date":"23 de maio de 2016","format":false,"excerpt":"Promover a inclus\u00e3o e integra\u00e7\u00e3o social e a preserva\u00e7\u00e3o do patrim\u00f4nio cultural brasileiro de forma gratuita e continuada.","rel":"","context":"Post similar","block_context":{"text":"Post similar","link":""},"img":{"alt_text":"escola-m\u00fasica-sabra-audi\u00e7\u00e3o-irpf","src":"https:\/\/i0.wp.com\/www.sabra.org.br\/site\/wp-content\/uploads\/2024\/12\/audicao-alunos.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.sabra.org.br\/site\/wp-content\/uploads\/2024\/12\/audicao-alunos.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.sabra.org.br\/site\/wp-content\/uploads\/2024\/12\/audicao-alunos.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.sabra.org.br\/site\/wp-content\/uploads\/2024\/12\/audicao-alunos.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/pages\/16266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/comments?post=16266"}],"version-history":[{"count":25,"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/pages\/16266\/revisions"}],"predecessor-version":[{"id":16311,"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/pages\/16266\/revisions\/16311"}],"wp:attachment":[{"href":"https:\/\/www.sabra.org.br\/site\/wp-json\/wp\/v2\/media?parent=16266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}