{"id":662,"date":"2026-09-25T22:40:45","date_gmt":"2026-09-26T01:40:45","guid":{"rendered":"https:\/\/uniqon.com.br\/?page_id=662"},"modified":"2026-09-25T22:44:54","modified_gmt":"2026-09-26T01:44:54","slug":"cha-do-joaquim","status":"publish","type":"page","link":"https:\/\/uniqon.com.br\/index.php\/cha-do-joaquim\/","title":{"rendered":"Cha do joaquim"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"662\" class=\"elementor elementor-662\">\n\t\t\t\t<div class=\"elementor-element elementor-element-036c0ed e-flex e-con-boxed e-con e-parent\" data-id=\"036c0ed\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-41212b2 elementor-widget elementor-widget-html\" data-id=\"41212b2\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!doctype html>\n<html lang=\"pt-BR\">\n<head>\n<meta charset=\"utf-8\">\n\n<meta name=\"viewport\"\n      content=\"width=device-width,initial-scale=1,viewport-fit=cover,user-scalable=no\">\n\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\">\n<meta name=\"theme-color\" content=\"#03245f\">\n\n<title>Bingo do Joaquim<\/title>\n\n<style>\n* {\n    box-sizing: border-box;\n    -webkit-tap-highlight-color: transparent;\n}\n\nhtml, body {\n    margin: 0;\n    min-height: 100%;\n    font-family:\n        -apple-system,\n        BlinkMacSystemFont,\n        \"Segoe UI\",\n        Arial,\n        sans-serif;\n\n    background:\n        linear-gradient(\n            160deg,\n            #073f98,\n            #021b4d\n        );\n\n    color: white;\n}\n\nbody {\n    padding:\n        max(14px, env(safe-area-inset-top))\n        14px\n        max(18px, env(safe-area-inset-bottom));\n}\n\n.app {\n    max-width: 760px;\n    margin: auto;\n}\n\n\n\/* CABE\u00c7ALHO *\/\n\nheader {\n    text-align: center;\n    padding: 6px 0 14px;\n}\n\n.stars {\n    color: #ffd447;\n    letter-spacing: .28em;\n    font-size: 1.25rem;\n}\n\n.kicker {\n    font-size: .78rem;\n    font-weight: 900;\n    letter-spacing: .18em;\n    margin-top: 5px;\n}\n\nh1 {\n    font-size: clamp(2.4rem, 12vw, 4.8rem);\n    line-height: .92;\n    margin: 5px 0 0;\n\n    text-shadow:\n        0 4px 0 #00133c;\n}\n\n\n\/* PAIN\u00c9IS *\/\n\n.panel {\n    background: rgba(255,255,255,.98);\n\n    color: #03245f;\n\n    border:\n        4px solid #d5e8ff;\n\n    border-radius: 26px;\n\n    box-shadow:\n        0 12px 28px\n        rgba(0,19,60,.40);\n}\n\n\n\/* SORTEIO *\/\n\n.draw {\n    min-height: 42vh;\n\n    padding: 22px 16px;\n\n    display: flex;\n    flex-direction: column;\n\n    justify-content: center;\n    align-items: center;\n\n    text-align: center;\n}\n\n.fox {\n    font-size: 4.8rem;\n}\n\n.status {\n    font-weight: 800;\n    color: #607ca8;\n\n    margin-top: 8px;\n}\n\n.current {\n    font-size:\n        clamp(\n            2.3rem,\n            11vw,\n            5rem\n        );\n\n    font-weight: 1000;\n\n    text-transform: uppercase;\n\n    overflow-wrap: anywhere;\n\n    margin: 18px 0;\n}\n\n\n\/* BOT\u00d5ES *\/\n\n.buttons {\n    display: grid;\n\n    grid-template-columns:\n        2fr 1fr;\n\n    gap: 10px;\n\n    margin-top: 12px;\n}\n\nbutton {\n    appearance: none;\n\n    border:\n        3px solid #d8eaff;\n\n    border-radius: 22px;\n\n    padding:\n        18px 12px;\n\n    font-size: 1.15rem;\n\n    font-weight: 1000;\n\n    color: white;\n\n    background:\n        linear-gradient(\n            #1769d2,\n            #073e9a\n        );\n\n    box-shadow:\n        0 6px 0 #001a4d;\n\n    touch-action: manipulation;\n\n    cursor: pointer;\n}\n\nbutton:active {\n    transform:\n        translateY(4px);\n\n    box-shadow:\n        0 2px 0 #001a4d;\n}\n\nbutton.secondary {\n    background:\n        linear-gradient(\n            #49b3f8,\n            #1682d6\n        );\n}\n\nbutton:disabled {\n    opacity: .45;\n}\n\n\n\/* HIST\u00d3RICO *\/\n\n.history {\n    margin-top: 12px;\n\n    padding: 14px;\n\n    max-height: 28vh;\n\n    overflow: auto;\n\n    -webkit-overflow-scrolling: touch;\n}\n\n.history h2 {\n    font-size: .95rem;\n\n    margin:\n        0 0 10px;\n\n    text-align: center;\n}\n\n.chips {\n    display: flex;\n\n    flex-wrap: wrap;\n\n    gap: 7px;\n\n    justify-content: center;\n}\n\n.chip {\n    background:\n        #eaf4ff;\n\n    border:\n        1px solid #c4ddfb;\n\n    border-radius:\n        999px;\n\n    padding:\n        7px 10px;\n\n    font-size:\n        .8rem;\n\n    font-weight:\n        800;\n}\n\n.empty {\n    text-align: center;\n\n    color:\n        #7186a8;\n\n    font-size:\n        .9rem;\n}\n\n\n\/* RODAP\u00c9 *\/\n\n.tip {\n    text-align:\n        center;\n\n    font-size:\n        .78rem;\n\n    opacity:\n        .88;\n\n    margin:\n        12px 10px 0;\n}\n\n\n\/* IPHONE *\/\n\n@media(max-width:480px) {\n\n    .buttons {\n        grid-template-columns:\n            1fr;\n    }\n\n    .draw {\n        min-height:\n            40vh;\n    }\n}\n\n<\/style>\n<\/head>\n\n\n<body>\n\n<div class=\"app\">\n\n<header>\n\n    <div class=\"stars\">\n        \u2605 \u2605 \u2605 \u2605 \u2605\n    <\/div>\n\n    <div class=\"kicker\">\n        CH\u00c1 DE BEB\u00ca\n    <\/div>\n\n    <h1>\n        BINGO DO JOAQUIM\n    <\/h1>\n\n<\/header>\n\n\n<section class=\"panel draw\">\n\n    <div class=\"fox\">\n        \ud83e\udd8a\u26bd\n    <\/div>\n\n    <div\n        id=\"status\"\n        class=\"status\">\n\n        Pronto para come\u00e7ar\n\n    <\/div>\n\n\n    <div\n        id=\"current\"\n        class=\"current\">\n\n        CLIQUE EM SORTEAR\n\n    <\/div>\n\n\n    <div class=\"stars\">\n        \u2605 \u2605 \u2605\n    <\/div>\n\n<\/section>\n\n\n<div class=\"buttons\">\n\n    <button id=\"draw\">\n        \ud83d\udd00 SORTEAR\n    <\/button>\n\n    <button\n        class=\"secondary\"\n        id=\"reset\">\n\n        \u21bb REINICIAR\n\n    <\/button>\n\n<\/div>\n\n\n<section class=\"panel history\">\n\n    <h2>\n        J\u00c1 SORTEADAS\n    <\/h2>\n\n    <div\n        id=\"chips\"\n        class=\"chips\">\n\n        <div class=\"empty\">\n            Nenhuma palavra sorteada ainda.\n        <\/div>\n\n    <\/div>\n\n<\/section>\n\n\n<div class=\"tip\">\n\n    Continue o mesmo sorteio\n    para distribuir v\u00e1rios pr\u00eamios.\n\n<\/div>\n\n<\/div>\n\n\n<script>\n\n\/* ==========================\n   PALAVRAS DO BINGO\n   ========================== *\/\n\nconst all = [\n\n    \"Fralda\",\n    \"Mamadeira\",\n    \"Chupeta\",\n    \"Ber\u00e7o\",\n\n    \"Body\",\n    \"Babador\",\n    \"Carrinho\",\n    \"Manta\",\n\n    \"Ursinho\",\n    \"Banheira\",\n    \"Meia\",\n    \"Sapatinho\",\n\n    \"Shampoo\",\n    \"Toalha\",\n    \"Mordedor\",\n    \"Naninha\",\n\n    \"Pomada\",\n    \"Talco\",\n    \"Len\u00e7o\",\n    \"Trocador\",\n\n    \"Macac\u00e3o\",\n    \"Touca\",\n    \"Luva\",\n    \"Cueiro\",\n\n    \"Term\u00f4metro\",\n    \"Escova\",\n    \"Pente\",\n    \"Sabonete\",\n\n    \"Col\u00f4nia\",\n    \"Almofada\",\n    \"M\u00f3bile\",\n    \"Cadeirinha\",\n\n    \"Bolsa\",\n    \"Prendedor\",\n    \"Fraldinha\",\n    \"Cobertor\",\n\n    \"Travesseiro\",\n    \"Kit Higiene\",\n    \"Chocalho\",\n    \"Sling\",\n\n    \"Protetor\",\n    \"Mosquiteiro\",\n    \"\u00c1lcool Gel\",\n    \"Algod\u00e3o\",\n\n    \"Cotonete\",\n    \"Aspirador Nasal\",\n    \"Pratinho\",\n    \"Colherzinha\",\n\n    \"Copinho\",\n    \"Bico\",\n    \"Pel\u00facia\",\n    \"Livro\",\n\n    \"Brinquedo\",\n    \"Tapete\",\n    \"Sa\u00edda Maternidade\",\n    \"Casaquinho\",\n\n    \"Cal\u00e7a\",\n    \"Camiseta\",\n    \"Jardineira\",\n    \"Toalha Fralda\",\n\n    \"Sab\u00e3o L\u00edquido\",\n    \"Amaciante\",\n    \"Frasqueira\",\n    \"Porta-Chupeta\"\n\n];\n\n\n\/* ==========================\n   VARI\u00c1VEIS\n   ========================== *\/\n\nlet remaining = [...all];\n\nlet drawn = [];\n\n\nconst current =\n    document.getElementById(\n        \"current\"\n    );\n\nconst status =\n    document.getElementById(\n        \"status\"\n    );\n\nconst chips =\n    document.getElementById(\n        \"chips\"\n    );\n\nconst drawButton =\n    document.getElementById(\n        \"draw\"\n    );\n\nconst resetButton =\n    document.getElementById(\n        \"reset\"\n    );\n\n\n\/* ==========================\n   HIST\u00d3RICO\n   ========================== *\/\n\nfunction renderHistory() {\n\n    if (\n        drawn.length === 0\n    ) {\n\n        chips.innerHTML =\n            '<div class=\"empty\">' +\n            'Nenhuma palavra sorteada ainda.' +\n            '<\/div>';\n\n        return;\n\n    }\n\n\n    chips.innerHTML =\n        drawn\n        .map(\n            (word, index) =>\n\n            '<span class=\"chip\">' +\n\n            (index + 1) +\n\n            '. ' +\n\n            word +\n\n            '<\/span>'\n        )\n        .join(\"\");\n\n}\n\n\n\/* ==========================\n   SORTEAR\n   ========================== *\/\n\nfunction sortear() {\n\n    if (\n        remaining.length === 0\n    ) {\n\n        return;\n\n    }\n\n\n    drawButton.disabled =\n        true;\n\n\n    current.textContent =\n        \"SORTEANDO...\";\n\n\n    let animationCount =\n        0;\n\n\n    const animation =\n        setInterval(\n\n        function() {\n\n            const randomPreview =\n                Math.floor(\n                    Math.random() *\n                    remaining.length\n                );\n\n\n            current.textContent =\n                remaining[\n                    randomPreview\n                ].toUpperCase();\n\n\n            animationCount++;\n\n\n            if (\n                animationCount >= 10\n            ) {\n\n                clearInterval(\n                    animation\n                );\n\n\n                finalizarSorteio();\n\n            }\n\n        },\n\n        70\n\n    );\n\n}\n\n\n\/* ==========================\n   RESULTADO\n   ========================== *\/\n\nfunction finalizarSorteio() {\n\n    const randomIndex =\n        Math.floor(\n            Math.random() *\n            remaining.length\n        );\n\n\n    const selected =\n        remaining.splice(\n            randomIndex,\n            1\n        )[0];\n\n\n    drawn.push(\n        selected\n    );\n\n\n    current.textContent =\n        selected.toUpperCase();\n\n\n    if (\n        drawn.length === 1\n    ) {\n\n        status.textContent =\n            \"1 palavra sorteada\";\n\n    }\n\n    else {\n\n        status.textContent =\n            drawn.length +\n            \" palavras sorteadas\";\n\n    }\n\n\n    renderHistory();\n\n\n    if (\n        remaining.length === 0\n    ) {\n\n        drawButton.disabled =\n            true;\n\n        status.textContent =\n            \"Todas as palavras foram sorteadas!\";\n\n    }\n\n    else {\n\n        drawButton.disabled =\n            false;\n\n    }\n\n}\n\n\n\/* ==========================\n   REINICIAR\n   ========================== *\/\n\nfunction reiniciar() {\n\n    if (\n        drawn.length > 0\n    ) {\n\n        const confirmar =\n            confirm(\n                \"Deseja come\u00e7ar um bingo novo \" +\n                \"e apagar todas as palavras sorteadas?\"\n            );\n\n\n        if (\n            !confirmar\n        ) {\n\n            return;\n\n        }\n\n    }\n\n\n    remaining =\n        [...all];\n\n\n    drawn =\n        [];\n\n\n    current.textContent =\n        \"CLIQUE EM SORTEAR\";\n\n\n    status.textContent =\n        \"Pronto para come\u00e7ar\";\n\n\n    drawButton.disabled =\n        false;\n\n\n    renderHistory();\n\n}\n\n\n\/* ==========================\n   BOT\u00d5ES\n   ========================== *\/\n\ndrawButton.addEventListener(\n    \"click\",\n    sortear\n);\n\n\nresetButton.addEventListener(\n    \"click\",\n    reiniciar\n);\n\n\nrenderHistory();\n\n<\/script>\n\n<\/body>\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>Bingo do Joaquim \u2605 \u2605 \u2605 \u2605 \u2605 CH\u00c1 DE BEB\u00ca BINGO DO JOAQUIM \ud83e\udd8a\u26bd Pronto para come\u00e7ar CLIQUE EM SORTEAR \u2605 \u2605 \u2605 \ud83d\udd00 SORTEAR \u21bb REINICIAR J\u00c1 SORTEADAS Nenhuma palavra sorteada ainda. Continue o mesmo sorteio para distribuir v\u00e1rios pr\u00eamios.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-662","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/pages\/662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=662"}],"version-history":[{"count":4,"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/pages\/662\/revisions"}],"predecessor-version":[{"id":666,"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/pages\/662\/revisions\/666"}],"wp:attachment":[{"href":"https:\/\/uniqon.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}