{"id":61484,"date":"2025-08-27T11:13:43","date_gmt":"2025-08-27T11:13:43","guid":{"rendered":"https:\/\/blog.anagiovanna.com.br\/?p=61484"},"modified":"2025-08-27T14:25:38","modified_gmt":"2025-08-27T14:25:38","slug":"desenhos-lindos-para-colorir-online","status":"publish","type":"post","link":"https:\/\/anagiovanna.com.br\/blog\/desenhos-para-colorir\/desenhos-lindos-para-colorir-online\/","title":{"rendered":"Desenhos Lindos para Colorir Online"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Pinte o Desenho<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Passe o dedo (ou o mouse) sobre a imagem PB para revelar a vers\u00e3o colorida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea estiver no celular ou no tablet, \u00e9 s\u00f3 passar o dedo no desenho at\u00e9 ele ficar todo colorido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, se voc\u00ea estiver no computador, aperte e segure o bot\u00e3o de clique do mouse e ent\u00e3o \u00e9 s\u00f3 ir passando a seta do mouse em todo o desenho at\u00e9 ele ficar colorido.<\/p>\n\n\n\n<!-- SCRATCH-COLOR \u2014 Widget isolado -->\n<div id=\"ssc-root\">\n  <div class=\"ssc-wrap\">\n    <h1 class=\"ssc-title\">A Arca de No\u00e9<\/h1>\n\n    <div class=\"ssc-stage\">\n      <img decoding=\"async\" class=\"ssc-color-img\" src=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/colorida.png\" alt=\"Imagem colorida\">\n      <canvas class=\"ssc-canvas\" width=\"600\" height=\"800\"><\/canvas>\n    <\/div>\n\n    <div class=\"ssc-done\" aria-live=\"polite\">\n      <div class=\"ssc-offer\">\n        <div class=\"ssc-highlight\">? Oferta Exclusiva<\/div>\n        <h2>Desenhos Digitais para Colorir<\/h2>\n        <p class=\"ssc-tagline\">Transforme o momento de colorir em um aprendizado divertido.<\/p>\n        <a href=\"#\" class=\"ssc-btn\">SIM, QUERO MAIS DESENHOS<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <style>\n    \/* ----- ESTILOS ESCOPADOS AO #ssc-root ----- *\/\n    #ssc-root{ --bg:#fdfcf9; --card:#fff; --text:#1e293b; --muted:#475569;\n      --accent:#16a34a; --accent2:#13913f; --radius:16px; --shadow:0 10px 28px rgba(30,41,59,.15);\n      font-family: Poppins, system-ui, sans-serif;\n      max-width: 680px; margin: 24px auto; \n    }\n    #ssc-root .ssc-wrap{\n      background:var(--card); border-radius:var(--radius);\n      box-shadow:var(--shadow); padding:26px 22px;\n    }\n    #ssc-root .ssc-title{ margin:0 0 12px; font-size:1.4rem; text-align:center; color:var(--text) }\n    #ssc-root .ssc-stage{ position:relative; width:100%; border-radius:var(--radius); overflow:hidden; }\n    #ssc-root .ssc-stage img{ width:100%; display:block; }\n    #ssc-root .ssc-stage .ssc-canvas{\n      position:absolute; inset:0; width:100%; height:100%; cursor:crosshair; border-radius:var(--radius);\n      display:block;\n    }\n    #ssc-root .ssc-done{ display:none; margin-top:18px; }\n    #ssc-root .ssc-done.ssc-show{ display:block; animation:ssc-fade .35s ease-out both; }\n    @keyframes ssc-fade{ from{opacity:0; transform:translateY(5px)} to{opacity:1; transform:translateY(0)} }\n    #ssc-root .ssc-offer { text-align:center; padding:10px 0 }\n    #ssc-root .ssc-offer h2{ font-size:1.3rem; font-weight:800; color:#1e293b; margin-bottom:10px; }\n    #ssc-root .ssc-tagline{ color:#374151; font-size:1rem; margin-bottom:14px; }\n    #ssc-root .ssc-highlight{\n      background:#fef9c3; color:#78350f; font-weight:600; padding:6px 10px;\n      border-radius:8px; display:inline-block; margin-bottom:16px;\n    }\n    #ssc-root .ssc-btn{\n      display:inline-block; background:var(--accent); color:#fff; padding:14px 22px;\n      border-radius:999px; text-decoration:none; font-weight:700; box-shadow:0 8px 18px rgba(22,163,74,.25);\n      transition:.2s;\n    }\n    #ssc-root .ssc-btn:hover{ background:var(--accent2) }\n  <\/style>\n\n  <script>\n    (function(){\n      const root = document.getElementById('ssc-root');\n      const canvas = root.querySelector('.ssc-canvas');\n      const ctx = canvas.getContext('2d', { willReadFrequently: true });\n      const colorImg = root.querySelector('.ssc-color-img');\n      const doneBox = root.querySelector('.ssc-done');\n      const pbImg = new Image();\n      pbImg.src = 'https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/pb.png';\n\n      let drawing = false;\n      let last = null;\n      let completed = false;\n\n      function resizeCanvas() {\n        if (!colorImg.complete || colorImg.naturalWidth === 0) return;\n\n        const dpr = Math.max(1, window.devicePixelRatio || 1);\n        const rect = colorImg.getBoundingClientRect();\n\n        \/\/ Tamanho l\u00f3gico do canvas para ficar n\u00edtido em telas retina\n        canvas.style.width = rect.width + 'px';\n        canvas.style.height = rect.height + 'px';\n        canvas.width = Math.round(rect.width * dpr);\n        canvas.height = Math.round(rect.height * dpr);\n\n        ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n        ctx.globalCompositeOperation = 'source-over';\n        ctx.clearRect(0, 0, rect.width, rect.height);\n        ctx.drawImage(pbImg, 0, 0, rect.width, rect.height);\n        ctx.globalCompositeOperation = 'destination-out';\n      }\n\n      function ready(fn){\n        if (document.readyState !== 'loading') fn();\n        else document.addEventListener('DOMContentLoaded', fn);\n      }\n\n      function getPos(e) {\n        const rect = canvas.getBoundingClientRect();\n        const clientX = e.clientX ?? (e.touches && e.touches[0].clientX);\n        const clientY = e.clientY ?? (e.touches && e.touches[0].clientY);\n        return { x: clientX - rect.left, y: clientY - rect.top };\n      }\n      function dot(x, y, r = 20) {\n        ctx.beginPath(); ctx.arc(x, y, r, 0, 2 * Math.PI); ctx.fill();\n      }\n      function line(a, b, r = 20) {\n        ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.lineWidth = r * 2;\n        ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke();\n      }\n      function checkProgress() {\n        try{\n          const data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n          let cleared = 0;\n          for (let i = 3; i < data.length; i += 4) if (data[i] === 0) cleared++;\n          const percent = (cleared \/ (data.length \/ 4)) * 100;\n          if (percent >= 70 && !completed) {\n            completed = true;\n            doneBox.classList.add('ssc-show');\n            canvas.style.pointerEvents = 'none';\n          }\n        }catch(err){\n          \/\/ Em alguns navegadores, crossOrigin pode bloquear getImageData se imagens n\u00e3o forem do mesmo dom\u00ednio.\n          \/\/ Garanta que as imagens est\u00e3o no mesmo dom\u00ednio\/subdom\u00ednio do seu site ou sirva-as com CORS.\n          console.warn('N\u00e3o foi poss\u00edvel calcular progresso:', err);\n        }\n      }\n\n      \/\/ Eventos (sem sobrescrever handlers globais)\n      canvas.addEventListener('mousedown', (e) => { drawing = true; last = getPos(e); dot(last.x, last.y); });\n      canvas.addEventListener('mousemove', (e) => {\n        if (!drawing) return; const pt = getPos(e);\n        if (last) line(last, pt); else dot(pt.x, pt.y);\n        last = pt;\n      });\n      window.addEventListener('mouseup', () => { if (drawing){ drawing = false; last = null; checkProgress(); } });\n\n      canvas.addEventListener('touchstart', (e) => {\n        e.preventDefault(); drawing = true; const pos = getPos(e); last = pos; dot(pos.x, pos.y);\n      }, { passive: false });\n      canvas.addEventListener('touchmove', (e) => {\n        e.preventDefault(); if (!drawing) return; const pos = getPos(e);\n        if (last) line(last, pos); else dot(pos.x, pos.y); last = pos;\n      }, { passive: false });\n      canvas.addEventListener('touchend', (e) => {\n        e.preventDefault(); drawing = false; last = null; checkProgress();\n      }, { passive: false });\n\n      \/\/ Redimensiona sem sobrescrever outros scripts\n      window.addEventListener('resize', resizeCanvas);\n\n      \/\/ Aguarde ambas imagens\n      function waitImage(img){ return new Promise(res => img.complete ? res() : img.addEventListener('load', res, {once:true})); }\n      ready(async () => { await Promise.all([waitImage(colorImg), waitImage(pbImg)]); resizeCanvas(); });\n    })();\n  <\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, na pr\u00f3xima p\u00e1gina voc\u00ea pode revelar a cor do lindo peixinho que est\u00e1 alegre a nadar bem l\u00e1 no fundo do mar. <\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\/desenhos-lindos-para-colorir-online\/\" style=\"background-color:#00a8ff\"><strong>QUERO PINTAR O PEIXINHO \u2192<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<p class=\"wp-block-paragraph\">Toda crian\u00e7a fica feliz e at\u00e9 come\u00e7ar a cantar quando pinta o peixinho no fundo do mar! Pinte o desenho colorido e o peixinho vai ficar muito bonito!<\/p>\n\n\n\n<!-- SCRATCH-COLOR \u2014 Widget isolado -->\n<div id=\"ssc-root\">\n  <div class=\"ssc-wrap\">\n    <h1 class=\"ssc-title\">O Peixinho<\/h1>\n\n    <div class=\"ssc-stage\">\n      <img decoding=\"async\" class=\"ssc-color-img\" src=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/peixe-colorido.png\" alt=\"Imagem colorida\">\n      <canvas class=\"ssc-canvas\" width=\"600\" height=\"800\"><\/canvas>\n    <\/div>\n\n    <div class=\"ssc-done\" aria-live=\"polite\">\n      <div class=\"ssc-offer\">\n        <div class=\"ssc-highlight\">? Oferta Exclusiva<\/div>\n        <h2>Desenhos Digitais para Colorir<\/h2>\n        <p class=\"ssc-tagline\">Transforme o momento de colorir em um aprendizado divertido.<\/p>\n        <a href=\"#\" class=\"ssc-btn\">SIM, QUERO MAIS DESENHOS<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <style>\n    \/* ----- ESTILOS ESCOPADOS AO #ssc-root ----- *\/\n    #ssc-root{ --bg:#fdfcf9; --card:#fff; --text:#1e293b; --muted:#475569;\n      --accent:#16a34a; --accent2:#13913f; --radius:16px; --shadow:0 10px 28px rgba(30,41,59,.15);\n      font-family: Poppins, system-ui, sans-serif;\n      max-width: 680px; margin: 24px auto; \n    }\n    #ssc-root .ssc-wrap{\n      background:var(--card); border-radius:var(--radius);\n      box-shadow:var(--shadow); padding:26px 22px;\n    }\n    #ssc-root .ssc-title{ margin:0 0 12px; font-size:1.4rem; text-align:center; color:var(--text) }\n    #ssc-root .ssc-stage{ position:relative; width:100%; border-radius:var(--radius); overflow:hidden; }\n    #ssc-root .ssc-stage img{ width:100%; display:block; }\n    #ssc-root .ssc-stage .ssc-canvas{\n      position:absolute; inset:0; width:100%; height:100%; cursor:crosshair; border-radius:var(--radius);\n      display:block;\n    }\n    #ssc-root .ssc-done{ display:none; margin-top:18px; }\n    #ssc-root .ssc-done.ssc-show{ display:block; animation:ssc-fade .35s ease-out both; }\n    @keyframes ssc-fade{ from{opacity:0; transform:translateY(5px)} to{opacity:1; transform:translateY(0)} }\n    #ssc-root .ssc-offer { text-align:center; padding:10px 0 }\n    #ssc-root .ssc-offer h2{ font-size:1.3rem; font-weight:800; color:#1e293b; margin-bottom:10px; }\n    #ssc-root .ssc-tagline{ color:#374151; font-size:1rem; margin-bottom:14px; }\n    #ssc-root .ssc-highlight{\n      background:#fef9c3; color:#78350f; font-weight:600; padding:6px 10px;\n      border-radius:8px; display:inline-block; margin-bottom:16px;\n    }\n    #ssc-root .ssc-btn{\n      display:inline-block; background:var(--accent); color:#fff; padding:14px 22px;\n      border-radius:999px; text-decoration:none; font-weight:700; box-shadow:0 8px 18px rgba(22,163,74,.25);\n      transition:.2s;\n    }\n    #ssc-root .ssc-btn:hover{ background:var(--accent2) }\n  <\/style>\n\n  <script>\n    (function(){\n      const root = document.getElementById('ssc-root');\n      const canvas = root.querySelector('.ssc-canvas');\n      const ctx = canvas.getContext('2d', { willReadFrequently: true });\n      const colorImg = root.querySelector('.ssc-color-img');\n      const doneBox = root.querySelector('.ssc-done');\n      const pbImg = new Image();\n      pbImg.src = 'https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/peixe-pb.png';\n\n      let drawing = false;\n      let last = null;\n      let completed = false;\n\n      function resizeCanvas() {\n        if (!colorImg.complete || colorImg.naturalWidth === 0) return;\n\n        const dpr = Math.max(1, window.devicePixelRatio || 1);\n        const rect = colorImg.getBoundingClientRect();\n\n        \/\/ Tamanho l\u00f3gico do canvas para ficar n\u00edtido em telas retina\n        canvas.style.width = rect.width + 'px';\n        canvas.style.height = rect.height + 'px';\n        canvas.width = Math.round(rect.width * dpr);\n        canvas.height = Math.round(rect.height * dpr);\n\n        ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n        ctx.globalCompositeOperation = 'source-over';\n        ctx.clearRect(0, 0, rect.width, rect.height);\n        ctx.drawImage(pbImg, 0, 0, rect.width, rect.height);\n        ctx.globalCompositeOperation = 'destination-out';\n      }\n\n      function ready(fn){\n        if (document.readyState !== 'loading') fn();\n        else document.addEventListener('DOMContentLoaded', fn);\n      }\n\n      function getPos(e) {\n        const rect = canvas.getBoundingClientRect();\n        const clientX = e.clientX ?? (e.touches && e.touches[0].clientX);\n        const clientY = e.clientY ?? (e.touches && e.touches[0].clientY);\n        return { x: clientX - rect.left, y: clientY - rect.top };\n      }\n      function dot(x, y, r = 20) {\n        ctx.beginPath(); ctx.arc(x, y, r, 0, 2 * Math.PI); ctx.fill();\n      }\n      function line(a, b, r = 20) {\n        ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.lineWidth = r * 2;\n        ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke();\n      }\n      function checkProgress() {\n        try{\n          const data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n          let cleared = 0;\n          for (let i = 3; i < data.length; i += 4) if (data[i] === 0) cleared++;\n          const percent = (cleared \/ (data.length \/ 4)) * 100;\n          if (percent >= 70 && !completed) {\n            completed = true;\n            doneBox.classList.add('ssc-show');\n            canvas.style.pointerEvents = 'none';\n          }\n        }catch(err){\n          \/\/ Em alguns navegadores, crossOrigin pode bloquear getImageData se imagens n\u00e3o forem do mesmo dom\u00ednio.\n          \/\/ Garanta que as imagens est\u00e3o no mesmo dom\u00ednio\/subdom\u00ednio do seu site ou sirva-as com CORS.\n          console.warn('N\u00e3o foi poss\u00edvel calcular progresso:', err);\n        }\n      }\n\n      \/\/ Eventos (sem sobrescrever handlers globais)\n      canvas.addEventListener('mousedown', (e) => { drawing = true; last = getPos(e); dot(last.x, last.y); });\n      canvas.addEventListener('mousemove', (e) => {\n        if (!drawing) return; const pt = getPos(e);\n        if (last) line(last, pt); else dot(pt.x, pt.y);\n        last = pt;\n      });\n      window.addEventListener('mouseup', () => { if (drawing){ drawing = false; last = null; checkProgress(); } });\n\n      canvas.addEventListener('touchstart', (e) => {\n        e.preventDefault(); drawing = true; const pos = getPos(e); last = pos; dot(pos.x, pos.y);\n      }, { passive: false });\n      canvas.addEventListener('touchmove', (e) => {\n        e.preventDefault(); if (!drawing) return; const pos = getPos(e);\n        if (last) line(last, pos); else dot(pos.x, pos.y); last = pos;\n      }, { passive: false });\n      canvas.addEventListener('touchend', (e) => {\n        e.preventDefault(); drawing = false; last = null; checkProgress();\n      }, { passive: false });\n\n      \/\/ Redimensiona sem sobrescrever outros scripts\n      window.addEventListener('resize', resizeCanvas);\n\n      \/\/ Aguarde ambas imagens\n      function waitImage(img){ return new Promise(res => img.complete ? res() : img.addEventListener('load', res, {once:true})); }\n      ready(async () => { await Promise.all([waitImage(colorImg), waitImage(pbImg)]); resizeCanvas(); });\n    })();\n  <\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora vamos pintar outro desenho? Quem \u00e9 que faz <strong>co-c\u00f3-ri-c\u00f3<\/strong> e canta todo dias \u00e0s 5h da manh\u00e3 para acordar todo mundo bem cedinho? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos descobrir quem \u00e9 ele na pr\u00f3xima p\u00e1gina e pintar bem bonito!<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\/desenhos-lindos-para-colorir-online\/3\/\" style=\"background-color:#00a8ff\"><strong>QUERO PINTAR MAIS \u2192<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<p class=\"wp-block-paragraph\">Vamos pintar o galo bem bonito, todo colorido? O galo vai ficar muito colorido, cheio de cores bonitas e alegres para ele cantar bem alto!<\/p>\n\n\n\n<!-- SCRATCH-COLOR \u2014 Widget isolado -->\n<div id=\"ssc-root\">\n  <div class=\"ssc-wrap\">\n    <h1 class=\"ssc-title\">O Galo<\/h1>\n\n    <div class=\"ssc-stage\">\n      <img decoding=\"async\" class=\"ssc-color-img\" src=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/galo-colorido.png\" alt=\"Imagem colorida\">\n      <canvas class=\"ssc-canvas\" width=\"600\" height=\"800\"><\/canvas>\n    <\/div>\n\n    <div class=\"ssc-done\" aria-live=\"polite\">\n      <div class=\"ssc-offer\">\n        <div class=\"ssc-highlight\">? Oferta Exclusiva<\/div>\n        <h2>Desenhos Digitais para Colorir<\/h2>\n        <p class=\"ssc-tagline\">Transforme o momento de colorir em um aprendizado divertido.<\/p>\n        <a href=\"#\" class=\"ssc-btn\">SIM, QUERO MAIS DESENHOS<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <style>\n    \/* ----- ESTILOS ESCOPADOS AO #ssc-root ----- *\/\n    #ssc-root{ --bg:#fdfcf9; --card:#fff; --text:#1e293b; --muted:#475569;\n      --accent:#16a34a; --accent2:#13913f; --radius:16px; --shadow:0 10px 28px rgba(30,41,59,.15);\n      font-family: Poppins, system-ui, sans-serif;\n      max-width: 680px; margin: 24px auto; \n    }\n    #ssc-root .ssc-wrap{\n      background:var(--card); border-radius:var(--radius);\n      box-shadow:var(--shadow); padding:26px 22px;\n    }\n    #ssc-root .ssc-title{ margin:0 0 12px; font-size:1.4rem; text-align:center; color:var(--text) }\n    #ssc-root .ssc-stage{ position:relative; width:100%; border-radius:var(--radius); overflow:hidden; }\n    #ssc-root .ssc-stage img{ width:100%; display:block; }\n    #ssc-root .ssc-stage .ssc-canvas{\n      position:absolute; inset:0; width:100%; height:100%; cursor:crosshair; border-radius:var(--radius);\n      display:block;\n    }\n    #ssc-root .ssc-done{ display:none; margin-top:18px; }\n    #ssc-root .ssc-done.ssc-show{ display:block; animation:ssc-fade .35s ease-out both; }\n    @keyframes ssc-fade{ from{opacity:0; transform:translateY(5px)} to{opacity:1; transform:translateY(0)} }\n    #ssc-root .ssc-offer { text-align:center; padding:10px 0 }\n    #ssc-root .ssc-offer h2{ font-size:1.3rem; font-weight:800; color:#1e293b; margin-bottom:10px; }\n    #ssc-root .ssc-tagline{ color:#374151; font-size:1rem; margin-bottom:14px; }\n    #ssc-root .ssc-highlight{\n      background:#fef9c3; color:#78350f; font-weight:600; padding:6px 10px;\n      border-radius:8px; display:inline-block; margin-bottom:16px;\n    }\n    #ssc-root .ssc-btn{\n      display:inline-block; background:var(--accent); color:#fff; padding:14px 22px;\n      border-radius:999px; text-decoration:none; font-weight:700; box-shadow:0 8px 18px rgba(22,163,74,.25);\n      transition:.2s;\n    }\n    #ssc-root .ssc-btn:hover{ background:var(--accent2) }\n  <\/style>\n\n  <script>\n    (function(){\n      const root = document.getElementById('ssc-root');\n      const canvas = root.querySelector('.ssc-canvas');\n      const ctx = canvas.getContext('2d', { willReadFrequently: true });\n      const colorImg = root.querySelector('.ssc-color-img');\n      const doneBox = root.querySelector('.ssc-done');\n      const pbImg = new Image();\n      pbImg.src = 'https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/galo-pb.png';\n\n      let drawing = false;\n      let last = null;\n      let completed = false;\n\n      function resizeCanvas() {\n        if (!colorImg.complete || colorImg.naturalWidth === 0) return;\n\n        const dpr = Math.max(1, window.devicePixelRatio || 1);\n        const rect = colorImg.getBoundingClientRect();\n\n        \/\/ Tamanho l\u00f3gico do canvas para ficar n\u00edtido em telas retina\n        canvas.style.width = rect.width + 'px';\n        canvas.style.height = rect.height + 'px';\n        canvas.width = Math.round(rect.width * dpr);\n        canvas.height = Math.round(rect.height * dpr);\n\n        ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n        ctx.globalCompositeOperation = 'source-over';\n        ctx.clearRect(0, 0, rect.width, rect.height);\n        ctx.drawImage(pbImg, 0, 0, rect.width, rect.height);\n        ctx.globalCompositeOperation = 'destination-out';\n      }\n\n      function ready(fn){\n        if (document.readyState !== 'loading') fn();\n        else document.addEventListener('DOMContentLoaded', fn);\n      }\n\n      function getPos(e) {\n        const rect = canvas.getBoundingClientRect();\n        const clientX = e.clientX ?? (e.touches && e.touches[0].clientX);\n        const clientY = e.clientY ?? (e.touches && e.touches[0].clientY);\n        return { x: clientX - rect.left, y: clientY - rect.top };\n      }\n      function dot(x, y, r = 20) {\n        ctx.beginPath(); ctx.arc(x, y, r, 0, 2 * Math.PI); ctx.fill();\n      }\n      function line(a, b, r = 20) {\n        ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.lineWidth = r * 2;\n        ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke();\n      }\n      function checkProgress() {\n        try{\n          const data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n          let cleared = 0;\n          for (let i = 3; i < data.length; i += 4) if (data[i] === 0) cleared++;\n          const percent = (cleared \/ (data.length \/ 4)) * 100;\n          if (percent >= 70 && !completed) {\n            completed = true;\n            doneBox.classList.add('ssc-show');\n            canvas.style.pointerEvents = 'none';\n          }\n        }catch(err){\n          \/\/ Em alguns navegadores, crossOrigin pode bloquear getImageData se imagens n\u00e3o forem do mesmo dom\u00ednio.\n          \/\/ Garanta que as imagens est\u00e3o no mesmo dom\u00ednio\/subdom\u00ednio do seu site ou sirva-as com CORS.\n          console.warn('N\u00e3o foi poss\u00edvel calcular progresso:', err);\n        }\n      }\n\n      \/\/ Eventos (sem sobrescrever handlers globais)\n      canvas.addEventListener('mousedown', (e) => { drawing = true; last = getPos(e); dot(last.x, last.y); });\n      canvas.addEventListener('mousemove', (e) => {\n        if (!drawing) return; const pt = getPos(e);\n        if (last) line(last, pt); else dot(pt.x, pt.y);\n        last = pt;\n      });\n      window.addEventListener('mouseup', () => { if (drawing){ drawing = false; last = null; checkProgress(); } });\n\n      canvas.addEventListener('touchstart', (e) => {\n        e.preventDefault(); drawing = true; const pos = getPos(e); last = pos; dot(pos.x, pos.y);\n      }, { passive: false });\n      canvas.addEventListener('touchmove', (e) => {\n        e.preventDefault(); if (!drawing) return; const pos = getPos(e);\n        if (last) line(last, pos); else dot(pos.x, pos.y); last = pos;\n      }, { passive: false });\n      canvas.addEventListener('touchend', (e) => {\n        e.preventDefault(); drawing = false; last = null; checkProgress();\n      }, { passive: false });\n\n      \/\/ Redimensiona sem sobrescrever outros scripts\n      window.addEventListener('resize', resizeCanvas);\n\n      \/\/ Aguarde ambas imagens\n      function waitImage(img){ return new Promise(res => img.complete ? res() : img.addEventListener('load', res, {once:true})); }\n      ready(async () => { await Promise.all([waitImage(colorImg), waitImage(pbImg)]); resizeCanvas(); });\n    })();\n  <\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">T\u00eam mais desenhos para pintar aqui e voc\u00ea pode olhar l\u00e1 no final dessa p\u00e1gina. ?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea quiser tamb\u00e9m pode imprimir o desenho do galo e pintar com l\u00e1pis de cor e canetinha; \u00e9 s\u00f3 clicar no desenho abaixo e salvar no seu computador ou enviar direto para a impressora!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/Galo-para-colorir.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/Galo-para-colorir.png\" alt=\"\" class=\"wp-image-61511\" srcset=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/Galo-para-colorir.png 1024w, https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/Galo-para-colorir-300x300.png 300w, https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/Galo-para-colorir-150x150.png 150w, https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/Galo-para-colorir-768x768.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Agora vamos pintar um dos mais lindos bichinhos que existem em nossa natureza e tamb\u00e9m um dos mais coloridos que existem? Ele est\u00e1 na pr\u00f3xima p\u00e1gina!<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\/desenhos-lindos-para-colorir-online\/4\/\" style=\"background-color:#00a8ff\"><strong>QUERO PINTAR MAIS \u2192<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<p class=\"wp-block-paragraph\">A Borboleta \u00e9 um dos mais lindos insetos que voam cheias de cores lindas, gostam de ficar perto das margaridas e tornam a paisagem muito mais bonita!<\/p>\n\n\n\n<!-- SCRATCH-COLOR \u2014 Widget isolado -->\n<div id=\"ssc-root\">\n  <div class=\"ssc-wrap\">\n    <h1 class=\"ssc-title\">A Borboleta<\/h1>\n\n    <div class=\"ssc-stage\">\n      <img decoding=\"async\" class=\"ssc-color-img\" src=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/borboleta-colorido.png\" alt=\"Imagem colorida\">\n      <canvas class=\"ssc-canvas\" width=\"600\" height=\"800\"><\/canvas>\n    <\/div>\n\n    <div class=\"ssc-done\" aria-live=\"polite\">\n      <div class=\"ssc-offer\">\n        <div class=\"ssc-highlight\">? Oferta Exclusiva<\/div>\n        <h2>Desenhos Digitais para Colorir<\/h2>\n        <p class=\"ssc-tagline\">Transforme o momento de colorir em um aprendizado divertido.<\/p>\n        <a href=\"#\" class=\"ssc-btn\">SIM, QUERO MAIS DESENHOS<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <style>\n    \/* ----- ESTILOS ESCOPADOS AO #ssc-root ----- *\/\n    #ssc-root{ --bg:#fdfcf9; --card:#fff; --text:#1e293b; --muted:#475569;\n      --accent:#16a34a; --accent2:#13913f; --radius:16px; --shadow:0 10px 28px rgba(30,41,59,.15);\n      font-family: Poppins, system-ui, sans-serif;\n      max-width: 680px; margin: 24px auto; \n    }\n    #ssc-root .ssc-wrap{\n      background:var(--card); border-radius:var(--radius);\n      box-shadow:var(--shadow); padding:26px 22px;\n    }\n    #ssc-root .ssc-title{ margin:0 0 12px; font-size:1.4rem; text-align:center; color:var(--text) }\n    #ssc-root .ssc-stage{ position:relative; width:100%; border-radius:var(--radius); overflow:hidden; }\n    #ssc-root .ssc-stage img{ width:100%; display:block; }\n    #ssc-root .ssc-stage .ssc-canvas{\n      position:absolute; inset:0; width:100%; height:100%; cursor:crosshair; border-radius:var(--radius);\n      display:block;\n    }\n    #ssc-root .ssc-done{ display:none; margin-top:18px; }\n    #ssc-root .ssc-done.ssc-show{ display:block; animation:ssc-fade .35s ease-out both; }\n    @keyframes ssc-fade{ from{opacity:0; transform:translateY(5px)} to{opacity:1; transform:translateY(0)} }\n    #ssc-root .ssc-offer { text-align:center; padding:10px 0 }\n    #ssc-root .ssc-offer h2{ font-size:1.3rem; font-weight:800; color:#1e293b; margin-bottom:10px; }\n    #ssc-root .ssc-tagline{ color:#374151; font-size:1rem; margin-bottom:14px; }\n    #ssc-root .ssc-highlight{\n      background:#fef9c3; color:#78350f; font-weight:600; padding:6px 10px;\n      border-radius:8px; display:inline-block; margin-bottom:16px;\n    }\n    #ssc-root .ssc-btn{\n      display:inline-block; background:var(--accent); color:#fff; padding:14px 22px;\n      border-radius:999px; text-decoration:none; font-weight:700; box-shadow:0 8px 18px rgba(22,163,74,.25);\n      transition:.2s;\n    }\n    #ssc-root .ssc-btn:hover{ background:var(--accent2) }\n  <\/style>\n\n  <script>\n    (function(){\n      const root = document.getElementById('ssc-root');\n      const canvas = root.querySelector('.ssc-canvas');\n      const ctx = canvas.getContext('2d', { willReadFrequently: true });\n      const colorImg = root.querySelector('.ssc-color-img');\n      const doneBox = root.querySelector('.ssc-done');\n      const pbImg = new Image();\n      pbImg.src = 'https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/borboleta-pb.png';\n\n      let drawing = false;\n      let last = null;\n      let completed = false;\n\n      function resizeCanvas() {\n        if (!colorImg.complete || colorImg.naturalWidth === 0) return;\n\n        const dpr = Math.max(1, window.devicePixelRatio || 1);\n        const rect = colorImg.getBoundingClientRect();\n\n        \/\/ Tamanho l\u00f3gico do canvas para ficar n\u00edtido em telas retina\n        canvas.style.width = rect.width + 'px';\n        canvas.style.height = rect.height + 'px';\n        canvas.width = Math.round(rect.width * dpr);\n        canvas.height = Math.round(rect.height * dpr);\n\n        ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n        ctx.globalCompositeOperation = 'source-over';\n        ctx.clearRect(0, 0, rect.width, rect.height);\n        ctx.drawImage(pbImg, 0, 0, rect.width, rect.height);\n        ctx.globalCompositeOperation = 'destination-out';\n      }\n\n      function ready(fn){\n        if (document.readyState !== 'loading') fn();\n        else document.addEventListener('DOMContentLoaded', fn);\n      }\n\n      function getPos(e) {\n        const rect = canvas.getBoundingClientRect();\n        const clientX = e.clientX ?? (e.touches && e.touches[0].clientX);\n        const clientY = e.clientY ?? (e.touches && e.touches[0].clientY);\n        return { x: clientX - rect.left, y: clientY - rect.top };\n      }\n      function dot(x, y, r = 20) {\n        ctx.beginPath(); ctx.arc(x, y, r, 0, 2 * Math.PI); ctx.fill();\n      }\n      function line(a, b, r = 20) {\n        ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.lineWidth = r * 2;\n        ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke();\n      }\n      function checkProgress() {\n        try{\n          const data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n          let cleared = 0;\n          for (let i = 3; i < data.length; i += 4) if (data[i] === 0) cleared++;\n          const percent = (cleared \/ (data.length \/ 4)) * 100;\n          if (percent >= 70 && !completed) {\n            completed = true;\n            doneBox.classList.add('ssc-show');\n            canvas.style.pointerEvents = 'none';\n          }\n        }catch(err){\n          \/\/ Em alguns navegadores, crossOrigin pode bloquear getImageData se imagens n\u00e3o forem do mesmo dom\u00ednio.\n          \/\/ Garanta que as imagens est\u00e3o no mesmo dom\u00ednio\/subdom\u00ednio do seu site ou sirva-as com CORS.\n          console.warn('N\u00e3o foi poss\u00edvel calcular progresso:', err);\n        }\n      }\n\n      \/\/ Eventos (sem sobrescrever handlers globais)\n      canvas.addEventListener('mousedown', (e) => { drawing = true; last = getPos(e); dot(last.x, last.y); });\n      canvas.addEventListener('mousemove', (e) => {\n        if (!drawing) return; const pt = getPos(e);\n        if (last) line(last, pt); else dot(pt.x, pt.y);\n        last = pt;\n      });\n      window.addEventListener('mouseup', () => { if (drawing){ drawing = false; last = null; checkProgress(); } });\n\n      canvas.addEventListener('touchstart', (e) => {\n        e.preventDefault(); drawing = true; const pos = getPos(e); last = pos; dot(pos.x, pos.y);\n      }, { passive: false });\n      canvas.addEventListener('touchmove', (e) => {\n        e.preventDefault(); if (!drawing) return; const pos = getPos(e);\n        if (last) line(last, pos); else dot(pos.x, pos.y); last = pos;\n      }, { passive: false });\n      canvas.addEventListener('touchend', (e) => {\n        e.preventDefault(); drawing = false; last = null; checkProgress();\n      }, { passive: false });\n\n      \/\/ Redimensiona sem sobrescrever outros scripts\n      window.addEventListener('resize', resizeCanvas);\n\n      \/\/ Aguarde ambas imagens\n      function waitImage(img){ return new Promise(res => img.complete ? res() : img.addEventListener('load', res, {once:true})); }\n      ready(async () => { await Promise.all([waitImage(colorImg), waitImage(pbImg)]); resizeCanvas(); });\n    })();\n  <\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, se voc\u00ea quiser desenhos de borboletas para imprimir na sua impressora e pintar com canetinha ou l\u00e1pis de cor, \u00e9 s\u00f3 ver os lindos <a href=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\/desenhos-lindos-de-borboletas-para-colorir\/\" data-type=\"link\" data-id=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\/desenhos-lindos-de-borboletas-para-colorir\/\">desenhos de borboletas para colorir<\/a> que fizemos para voc\u00ea!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gostaria agora de pintar um desenho de carro bem bonito? Se quiser \u00e9 s\u00f3 clicar nesse bot\u00e3o abaixo!<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\/desenhos-lindos-para-colorir-online\/5\/\" style=\"background-color:#00a8ff\"><strong>QUERO PINTAR MAIS \u2192<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<p class=\"wp-block-paragraph\">Esse carro \u00e9 muito bonito mas ele fica ainda mais lindo se voc\u00ea pintar o carro inteiro at\u00e9 ele ficar todo colorido! Quer tentar para ver como ele fica?<\/p>\n\n\n\n<!-- SCRATCH-COLOR \u2014 Widget isolado (com bot\u00e3o Reiniciar) -->\n<div id=\"ssc-root\">\n  <div class=\"ssc-wrap\">\n    <h1 class=\"ssc-title\">Um carro<\/h1>\n\n    <div class=\"ssc-stage\">\n      <!-- A imagem colorida fica invis\u00edvel at\u00e9 a m\u00e1scara ficar pronta -->\n      <img decoding=\"async\" class=\"ssc-color-img\" src=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/carro-colorido.png\" alt=\"Imagem colorida\">\n      <canvas class=\"ssc-canvas\" width=\"600\" height=\"800\"><\/canvas>\n    <\/div>\n\n    <!-- Bot\u00f5es de a\u00e7\u00e3o -->\n    <div class=\"ssc-actions\">\n      <button type=\"button\" class=\"ssc-reset\" aria-label=\"Pintar novamente\">? Pintar novamente<\/button>\n    <\/div>\n\n    <div class=\"ssc-done\" aria-live=\"polite\">\n      <div class=\"ssc-offer\">\n        <div class=\"ssc-highlight\">? Oferta Exclusiva<\/div>\n        <h2>Desenhos Digitais para Colorir<\/h2>\n        <p class=\"ssc-tagline\">Transforme o momento de colorir em um aprendizado divertido.<\/p>\n        <a href=\"#\" class=\"ssc-btn\">SIM, QUERO MAIS DESENHOS<\/a>\n        <!-- Bot\u00e3o extra dentro da oferta, para reiniciar ap\u00f3s concluir -->\n        <div style=\"margin-top:12px\">\n          <button type=\"button\" class=\"ssc-reset ssc-reset-inline\" aria-label=\"Pintar novamente\">? Pintar novamente<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <style>\n    \/* ----- ESTILOS ESCOPADOS AO #ssc-root ----- *\/\n    #ssc-root{\n      --bg:#fdfcf9; --card:#fff; --text:#1e293b; --muted:#475569;\n      --accent:#16a34a; --accent2:#13913f; --radius:16px; --shadow:0 10px 28px rgba(30,41,59,.15);\n      font-family: Poppins, system-ui, sans-serif;\n      max-width: 680px; margin: 24px auto;\n    }\n    #ssc-root .ssc-wrap{\n      background:var(--card); border-radius:var(--radius);\n      box-shadow:var(--shadow); padding:26px 22px;\n    }\n    #ssc-root .ssc-title{\n      margin:0 0 12px; font-size:1.4rem; text-align:center; color:var(--text);\n    }\n\n    \/* Palco da raspadinha *\/\n    #ssc-root .ssc-stage{ position:relative; width:100%; border-radius:var(--radius); overflow:hidden; }\n    \/* Evita flash da imagem colorida: s\u00f3 libera no JS ap\u00f3s a m\u00e1scara ficar pronta *\/\n    #ssc-root .ssc-stage img.ssc-color-img{ width:100%; display:block; visibility:hidden; }\n    #ssc-root .ssc-stage .ssc-canvas{\n      position:absolute; inset:0; width:100%; height:100%;\n      cursor:crosshair; border-radius:var(--radius);\n      display:block; z-index:2; \/* garante que a m\u00e1scara fique acima da imagem *\/\n    }\n\n    \/* A\u00e7\u00f5es *\/\n    #ssc-root .ssc-actions{ text-align:center; margin-top:14px; }\n    #ssc-root .ssc-reset{\n      background:#0ea5e9; color:#fff; border:0; border-radius:999px;\n      padding:10px 16px; font-weight:700; cursor:pointer; box-shadow:0 6px 16px rgba(14,165,233,.25);\n      transition:.2s;\n    }\n    #ssc-root .ssc-reset:hover{ background:#0284c7; }\n    #ssc-root .ssc-reset-inline{ background:#16a34a; }\n    #ssc-root .ssc-reset-inline:hover{ background:#15803d; }\n\n    #ssc-root .ssc-done{ display:none; margin-top:18px; }\n    #ssc-root .ssc-done.ssc-show{ display:block; animation:ssc-fade .35s ease-out both; }\n    @keyframes ssc-fade{ from{opacity:0; transform:translateY(5px)} to{opacity:1; transform:translateY(0)} }\n\n    #ssc-root .ssc-offer { text-align:center; padding:10px 0 }\n    #ssc-root .ssc-offer h2{ font-size:1.3rem; font-weight:800; color:#1e293b; margin-bottom:10px; }\n    #ssc-root .ssc-tagline{ color:#374151; font-size:1rem; margin-bottom:14px; }\n    #ssc-root .ssc-highlight{\n      background:#fef9c3; color:#78350f; font-weight:600; padding:6px 10px;\n      border-radius:8px; display:inline-block; margin-bottom:16px;\n    }\n    #ssc-root .ssc-btn{\n      display:inline-block; background:var(--accent); color:#fff; padding:14px 22px;\n      border-radius:999px; text-decoration:none; font-weight:700; box-shadow:0 8px 18px rgba(22,163,74,.25);\n      transition:.2s;\n    }\n    #ssc-root .ssc-btn:hover{ background:var(--accent2) }\n  <\/style>\n\n  <script>\n    (function(){\n      const root = document.getElementById('ssc-root');\n      const canvas = root.querySelector('.ssc-canvas');\n      const ctx = canvas.getContext('2d', { willReadFrequently: true });\n      const colorImg = root.querySelector('.ssc-color-img');\n      const doneBox = root.querySelector('.ssc-done');\n      const resetButtons = root.querySelectorAll('.ssc-reset');\n\n      \/\/ Imagem PB (m\u00e1scara por cima da colorida)\n      const pbImg = new Image();\n      pbImg.src = 'https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/carro-pb.png';\n      pbImg.addEventListener('error', () => {\n        console.warn('Falha ao carregar a imagem PB. Verifique a URL\/caminho.');\n      });\n\n      let drawing = false;\n      let last = null;\n      let completed = false;\n\n      function buildMask() {\n        \/\/ Desenha base branca + PB por cima; ativa destination-out\n        const rect = colorImg.getBoundingClientRect();\n        ctx.globalCompositeOperation = 'source-over';\n        ctx.clearRect(0, 0, rect.width, rect.height);\n        ctx.fillStyle = '#fff';\n        ctx.fillRect(0, 0, rect.width, rect.height);\n        ctx.drawImage(pbImg, 0, 0, rect.width, rect.height);\n        ctx.globalCompositeOperation = 'destination-out';\n        \/\/ Torna a imagem colorida vis\u00edvel somente ap\u00f3s a m\u00e1scara estar pronta\n        colorImg.style.visibility = 'visible';\n      }\n\n      function resizeCanvas() {\n        if (!colorImg.complete || colorImg.naturalWidth === 0) return;\n\n        const dpr = Math.max(1, window.devicePixelRatio || 1);\n        const rect = colorImg.getBoundingClientRect();\n\n        \/\/ Ajuste visual + retina\n        canvas.style.width = rect.width + 'px';\n        canvas.style.height = rect.height + 'px';\n        canvas.width = Math.round(rect.width * dpr);\n        canvas.height = Math.round(rect.height * dpr);\n        ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n\n        buildMask();\n      }\n\n      function resetPainting() {\n        completed = false;\n        canvas.style.pointerEvents = 'auto';\n        doneBox.classList.remove('ssc-show');\n        \/\/ Refaz a m\u00e1scara e rola levemente at\u00e9 o topo do widget para UX\n        resizeCanvas();\n        root.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n      }\n\n      function ready(fn){\n        if (document.readyState !== 'loading') fn();\n        else document.addEventListener('DOMContentLoaded', fn);\n      }\n\n      function getPos(e) {\n        const rect = canvas.getBoundingClientRect();\n        const clientX = e.clientX ?? (e.touches && e.touches[0].clientX);\n        const clientY = e.clientY ?? (e.touches && e.touches[0].clientY);\n        return { x: clientX - rect.left, y: clientY - rect.top };\n      }\n      function dot(x, y, r = 20) {\n        ctx.beginPath(); ctx.arc(x, y, r, 0, 2 * Math.PI); ctx.fill();\n      }\n      function line(a, b, r = 20) {\n        ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.lineWidth = r * 2;\n        ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke();\n      }\n\n      function checkProgress() {\n        try{\n          const data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n          let cleared = 0;\n          for (let i = 3; i < data.length; i += 4) if (data[i] === 0) cleared++;\n          const percent = (cleared \/ (data.length \/ 4)) * 100;\n          if (percent >= 70 && !completed) {\n            completed = true;\n            doneBox.classList.add('ssc-show');\n            canvas.style.pointerEvents = 'none';\n          }\n        }catch(err){\n          \/\/ Se as imagens estiverem em dom\u00ednio diferente e sem CORS, getImageData pode falhar.\n          console.warn('N\u00e3o foi poss\u00edvel calcular progresso:', err);\n        }\n      }\n\n      \/\/ Intera\u00e7\u00f5es (sem sobrescrever handlers globais)\n      canvas.addEventListener('mousedown', (e) => { drawing = true; last = getPos(e); dot(last.x, last.y); });\n      canvas.addEventListener('mousemove', (e) => {\n        if (!drawing) return; const pt = getPos(e);\n        if (last) line(last, pt); else dot(pt.x, pt.y);\n        last = pt;\n      });\n      window.addEventListener('mouseup', () => { if (drawing){ drawing = false; last = null; checkProgress(); } });\n\n      canvas.addEventListener('touchstart', (e) => {\n        e.preventDefault(); drawing = true; const pos = getPos(e); last = pos; dot(pos.x, pos.y);\n      }, { passive: false });\n      canvas.addEventListener('touchmove', (e) => {\n        e.preventDefault(); if (!drawing) return; const pos = getPos(e);\n        if (last) line(last, pos); else dot(pos.x, pos.y); last = pos;\n      }, { passive: false });\n      canvas.addEventListener('touchend', (e) => {\n        e.preventDefault(); drawing = false; last = null; checkProgress();\n      }, { passive: false });\n\n      \/\/ Redimensiona sem sobrescrever outros scripts\n      window.addEventListener('resize', resizeCanvas);\n\n      \/\/ Bot\u00f5es \"Pintar novamente\"\n      resetButtons.forEach(btn => btn.addEventListener('click', resetPainting));\n\n      \/\/ Aguarda ambas as imagens e prepara tudo\n      function waitImage(img){ return new Promise(res => img.complete ? res() : img.addEventListener('load', res, {once:true})); }\n      ready(async () => {\n        await Promise.all([waitImage(colorImg), waitImage(pbImg)]);\n        resizeCanvas();\n      });\n    })();\n  <\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea j\u00e1 viu os desenhos para imprimir no papel e colorir com l\u00e1pis de cor? Se voc\u00ea quiser ver todos os desenhos para colorir aqui no site ent\u00e3o \u00e9 s\u00f3 <a href=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\">clicar aqui<\/a> para ver tudo!<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\" style=\"background-color:#00a8ff\"><strong>QUERO DESENHOS PARA COLORIR \u2192<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<div style=\"display: flex; justify-content: center;\">\n    <a href=\"whatsapp:\/\/send?text=*Olha que legal esse site que acabei de encontrar:*%0A%0A{Desenhos para pintar online}%0A%0A{https:\/\/blog.anagiovanna.com.br\/desenhos-para-colorir\/desenhos-lindos-para-colorir-online\/}\" style=\"text-decoration:none; border:0;\">\n        <img decoding=\"async\" src=\"https:\/\/blog.anagiovanna.com.br\/wp-content\/uploads\/2025\/08\/whatsapp.png\" alt=\"Compartilhar no WhatsApp\">\n    <\/a>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Compartilhe estes desenhos para colorir online com mais algu\u00e9m que voc\u00ea conhece e que tamb\u00e9m gostar de pintar lindos desenhos!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pinte o Desenho Passe o dedo (ou o mouse) sobre a imagem PB para revelar a vers\u00e3o colorida. Se voc\u00ea estiver no celular ou no tablet, \u00e9 s\u00f3 passar o dedo no desenho at\u00e9 ele ficar todo colorido. Agora, se voc\u00ea estiver no computador, aperte e segure o bot\u00e3o de clique do mouse e ent\u00e3o&#8230;<\/p>\n","protected":false},"author":3,"featured_media":61501,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"default","_kad_post_title":"default","_kad_post_layout":"default","_kad_post_sidebar_id":"","_kad_post_content_style":"default","_kad_post_vertical_padding":"default","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[383],"tags":[],"class_list":["post-61484","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenhos-para-colorir"],"_links":{"self":[{"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/posts\/61484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/comments?post=61484"}],"version-history":[{"count":21,"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/posts\/61484\/revisions"}],"predecessor-version":[{"id":61528,"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/posts\/61484\/revisions\/61528"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/media\/61501"}],"wp:attachment":[{"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/media?parent=61484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/categories?post=61484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anagiovanna.com.br\/blog\/wp-json\/wp\/v2\/tags?post=61484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}