{"id":2581,"date":"2026-06-15T17:35:07","date_gmt":"2026-06-15T17:35:07","guid":{"rendered":"https:\/\/app.digitalfreelancer.org\/?page_id=2581"},"modified":"2026-07-23T15:19:10","modified_gmt":"2026-07-23T15:19:10","slug":"dashboard-tarot","status":"publish","type":"page","link":"https:\/\/app.digitalfreelancer.org\/index.php\/dashboard-tarot\/","title":{"rendered":"Dashboard Tarot"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2581\" class=\"elementor elementor-2581\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3c81a5b elementor-hidden-mobile e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"3c81a5b\" 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-b4fe4d1 elementor-widget elementor-widget-spacer\" data-id=\"b4fe4d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-53668a6 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"53668a6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-e6e2f09 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"e6e2f09\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-76c9d27 elementor-widget elementor-widget-shortcode\" data-id=\"76c9d27\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">            <style>\n            .tarot-wrapper {\n                --bg:#100a18;\n                --bg-radial: radial-gradient(circle at 20% 15%, rgba(155,110,220,0.18), transparent 45%),\n                             radial-gradient(circle at 85% 85%, rgba(214,168,92,0.12), transparent 40%);\n                --panel:#1c1428;\n                --panel-2:#221933;\n                --gold:#d6a85c;\n                --gold-soft:#e9dcc3;\n                --violet:#8b5fc9;\n                --text:#f3eef7;\n                --muted:#d1c4e9;\n                --danger:#c96a6a;\n                font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;\n                background: var(--bg-radial), var(--bg);\n                color: var(--text);\n                padding: 26px;\n                border-radius: 16px;\n                position: relative;\n                box-shadow: 0 20px 60px rgba(0,0,0,0.45);\n                overflow: hidden;\n            }\n\n            .tarot-wrapper::before {\n                content:\"\";\n                position:absolute;\n                inset:0;\n                background-image:\n                    radial-gradient(1px 1px at 10% 20%, rgba(255,255,255,0.5) 50%, transparent 100%),\n                    radial-gradient(1px 1px at 80% 10%, rgba(255,255,255,0.4) 50%, transparent 100%),\n                    radial-gradient(1px 1px at 60% 70%, rgba(255,255,255,0.3) 50%, transparent 100%),\n                    radial-gradient(1px 1px at 30% 85%, rgba(255,255,255,0.35) 50%, transparent 100%);\n                pointer-events:none;\n                opacity:0.6;\n            }\n\n            .tarot-wrapper * { box-sizing: border-box; }\n\n            .tarot-header { position:relative; z-index:1; }\n\n            .tarot-header h1 {\n                margin:0;\n                font-size:28px;\n                color: var(--gold);\n                letter-spacing:1px;\n                font-family: Georgia, 'Times New Roman', serif;\n            }\n\n            .tarot-sub {\n                color: var(--muted);\n                margin-top:6px;\n                font-size:14.5px;\n            }\n\n            .tarot-daily {\n                margin-top:16px;\n                padding:12px 16px;\n                background: linear-gradient(90deg, rgba(214,168,92,0.12), rgba(139,95,201,0.10));\n                border:1px solid rgba(214,168,92,0.3);\n                border-radius:10px;\n                font-size:13.5px;\n                color: var(--gold-soft);\n                position:relative;\n                z-index:1;\n            }\n\n            .tarot-grid {\n                display:grid;\n                grid-template-columns: 1fr 320px;\n                gap:20px;\n                margin-top:22px;\n                position:relative;\n                z-index:1;\n            }\n\n            .tarot-card {\n                background: var(--panel);\n                border:1px solid rgba(214,168,92,0.25);\n                border-radius:14px;\n                padding:20px;\n                text-align:center;\n                position:relative;\n                overflow:hidden;\n                transition: border-color 0.25s ease, transform 0.25s ease;\n            }\n\n            .tarot-card:hover {\n                border-color: rgba(214,168,92,0.5);\n                transform: translateY(-2px);\n            }\n\n            .tarot-card h3 {\n                margin:0 0 4px;\n                font-size:17px;\n                color: var(--text);\n            }\n\n            .tarot-card p {\n                margin:0;\n                color: var(--muted);\n                font-size:13.5px;\n            }\n\n            .tarot-decks {\n                display:flex;\n                flex-wrap:wrap;\n                justify-content:center;\n                gap:10px;\n                margin:18px 0;\n                min-height:56px;\n            }\n\n            .tarot-item {\n                width:32px;\n                height:48px;\n                border-radius:6px;\n                background: linear-gradient(160deg,#2a1f47,#150e24);\n                border:1px solid var(--gold);\n                box-shadow:0 4px 10px rgba(0,0,0,0.4);\n                transition: transform 0.4s ease, background 0.4s ease, border-color 0.4s ease;\n            }\n\n            .tarot-item.tarot-revealed {\n                background: linear-gradient(160deg,#e9dcc3,#c9b389);\n                border:1px solid #8a6a3a;\n            }\n\n            .tarot-item.tarot-casting {\n                animation: tarot-shake 0.09s linear infinite;\n            }\n\n            @keyframes tarot-shake {\n                0%   { transform: translateY(0); }\n                25%  { transform: translateY(-3px); }\n                50%  { transform: translateY(2px); }\n                75%  { transform: translateY(-2px); }\n                100% { transform: translateY(0); }\n            }\n\n            .tarot-btn {\n                background: linear-gradient(135deg,#6b3fa0,#4a2a78);\n                border:none;\n                color:#fff;\n                padding:11px 18px;\n                border-radius:10px;\n                cursor:pointer;\n                font-weight:600;\n                font-size:14px;\n                transition: transform 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;\n                box-shadow: 0 6px 16px rgba(107,63,160,0.35);\n            }\n\n            .tarot-btn:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(107,63,160,0.5); }\n            .tarot-btn:disabled { opacity:0.55; cursor:not-allowed; transform:none; }\n\n            .tarot-btn.tarot-ghost {\n                background: transparent;\n                border:1px solid rgba(214,168,92,0.4);\n                color: var(--gold-soft);\n                box-shadow:none;\n            }\n\n            .tarot-btn.tarot-danger {\n                background: transparent;\n                border:1px solid rgba(201,106,106,0.5);\n                color: var(--danger);\n                box-shadow:none;\n            }\n\n            .tarot-sidebar {\n                background: var(--panel);\n                border:1px solid rgba(214,168,92,0.25);\n                border-radius:14px;\n                padding:18px;\n                display:flex;\n                flex-direction:column;\n            }\n\n            .tarot-sidebar h3 {\n                margin:0 0 4px;\n                font-size:16px;\n                color: var(--gold-soft);\n            }\n\n            .tarot-sidebar-note {\n                color: var(--muted);\n                font-size:12px;\n                margin-bottom:10px;\n            }\n\n            .tarot-history-list {\n                flex:1;\n                max-height:340px;\n                overflow-y:auto;\n                margin-bottom:10px;\n            }\n\n            .tarot-history-item {\n                padding:10px 0;\n                border-bottom:1px solid rgba(255,255,255,0.08);\n            }\n\n            .tarot-history-item:last-child { border-bottom:none; }\n\n            .tarot-history-item strong { display:block; font-size:14px; color: var(--text); }\n            .tarot-history-item small { color: var(--muted); font-size:11.5px; }\n\n            .tarot-empty {\n                color: var(--muted);\n                font-size:13px;\n                text-align:center;\n                padding:20px 6px;\n            }\n\n            .tarot-modal {\n                position:fixed;\n                inset:0;\n                background:rgba(10,6,18,0.92);\n                display:flex;\n                align-items:center;\n                justify-content:center;\n                z-index:99999;\n                padding:16px;\n                animation: tarot-fade-in 0.2s ease;\n            }\n\n            @keyframes tarot-fade-in { from { opacity:0; } to { opacity:1; } }\n\n            .tarot-box {\n                background: #171022 !important;\n                border:2px solid rgba(214,168,92,0.5);\n                padding:28px;\n                border-radius:16px;\n                max-width:460px;\n                width:100%;\n                text-align:center;\n                animation: tarot-pop 0.25s ease;\n                max-height: 88vh;\n                overflow-y:auto;\n                color: #f3eef7 !important;\n                box-shadow: 0 25px 50px rgba(0,0,0,0.8);\n            }\n\n            @keyframes tarot-pop {\n                from { transform: scale(0.92); opacity:0; }\n                to   { transform: scale(1); opacity:1; }\n            }\n\n            .tarot-glow {\n                font-size:12px;\n                letter-spacing:2px;\n                text-transform:uppercase;\n                color: var(--gold);\n                margin-bottom:8px;\n                font-weight: 700;\n            }\n\n            .tarot-tier-label {\n                font-size:26px;\n                font-family: Georgia, serif;\n                margin:6px 0 8px;\n                color: #d6a85c !important;\n                text-shadow: 0 2px 4px rgba(0,0,0,0.4);\n            }\n\n            .tarot-tier-desc {\n                color: #f3eef7 !important;\n                font-size:15px;\n                margin-bottom:16px;\n                line-height: 1.6;\n            }\n\n            .tarot-count {\n                font-size:13px;\n                color: #d1c4e9 !important;\n                margin-bottom:18px;\n            }\n\n            .tarot-sign-box {\n                background: rgba(255,255,255,0.06);\n                border:1px solid rgba(214,168,92,0.35);\n                border-radius:10px;\n                padding:14px 16px;\n                margin-bottom:20px;\n                text-align:left;\n            }\n\n            .tarot-sign-box strong {\n                color: #d6a85c !important;\n                display:block;\n                margin-bottom:4px;\n                font-size:15px;\n            }\n\n            .tarot-sign-box span {\n                color: #f3eef7 !important;\n                font-size:14px;\n                line-height: 1.5;\n            }\n\n            .tarot-actions {\n                display:flex;\n                flex-wrap:wrap;\n                gap:10px;\n                justify-content:center;\n            }\n\n            .tarot-toast {\n                position:fixed;\n                bottom:22px;\n                left:50%;\n                transform:translateX(-50%);\n                background: var(--violet);\n                color:#fff;\n                padding:9px 16px;\n                border-radius:8px;\n                font-size:13px;\n                z-index:100000;\n                opacity:0;\n                transition: opacity 0.25s ease;\n                pointer-events:none;\n            }\n\n            .tarot-toast.tarot-show { opacity:1; }\n\n            @media (max-width: 780px) {\n                .tarot-grid { grid-template-columns: 1fr; }\n            }\n            <\/style>\n            \n        <div class=\"tarot-wrapper\" id=\"tarot-4a003123-3d35-446f-9855-ee1071a56945\" data-logged-in=\"0\">\n\n            <div class=\"tarot-header\">\n                <h1>\ud83c\udccf Or\u00e1culo de Tarot<\/h1>\n                <div class=\"tarot-sub\">Bem-vindo, Buscador \u2014 17 de September de 2026. Descubra as mensagens dos Arcanos.<\/div>\n                <div class=\"tarot-daily\" data-tarot-daily>A carregar a carta do dia\u2026<\/div>\n            <\/div>\n\n            <div class=\"tarot-grid\">\n\n                <div>\n                    <div class=\"tarot-card\">\n                        <h3>Carta do Dia (1 Arcano)<\/h3>\n                        <p>Uma orienta\u00e7\u00e3o direta para o seu momento atual.<\/p>\n                        <div class=\"tarot-decks\" data-deck-container><\/div>\n                        <button class=\"tarot-btn\" type=\"button\" data-tarot=\"1\">Tirar 1 Carta<\/button>\n                    <\/div>\n\n                    <div class=\"tarot-card\" style=\"margin-top:16px;\">\n                        <h3>Tiragem de Decis\u00e3o (3 Arcanos)<\/h3>\n                        <p>Passado, Presente e Futuro para clarear escolhas.<\/p>\n                        <div class=\"tarot-decks\" data-deck-container><\/div>\n                        <button class=\"tarot-btn\" type=\"button\" data-tarot=\"3\">Tirar 3 Cartas<\/button>\n                    <\/div>\n\n                    <div class=\"tarot-card\" style=\"margin-top:16px;\">\n                        <h3>Cruz M\u00edstica (5 Arcanos)<\/h3>\n                        <p>Uma vis\u00e3o abrangente sobre os seus caminhos espirituais.<\/p>\n                        <div class=\"tarot-decks\" data-deck-container><\/div>\n                        <button class=\"tarot-btn\" type=\"button\" data-tarot=\"5\">Tirar 5 Cartas<\/button>\n                    <\/div>\n                <\/div>\n\n                <aside class=\"tarot-sidebar\">\n                    <h3>Hist\u00f3rico de Leituras<\/h3>\n                    <div class=\"tarot-sidebar-note\">\n                        Guardado apenas neste dispositivo.                    <\/div>\n                    <div class=\"tarot-history-list\" data-history-list aria-live=\"polite\"><\/div>\n                    <button class=\"tarot-btn tarot-danger\" type=\"button\" data-reset-history>Limpar Hist\u00f3rico<\/button>\n                <\/aside>\n\n            <\/div>\n        <\/div>\n\n        <div class=\"tarot-toast\" data-tarot-toast role=\"status\"><\/div>\n\n        <script>\n        (function(){\n\n            const wrapper   = document.getElementById(\"tarot-4a003123-3d35-446f-9855-ee1071a56945\");\n            if (!wrapper) return;\n\n            const tiers      = {\"o_louco\":{\"label\":\"O Louco\",\"desc\":\"Novos come\\u00e7os, espontaneidade e um salto de f\\u00e9 rumo ao desconhecido.\",\"color\":\"#f3eef7\"},\"o_mago\":{\"label\":\"O Mago\",\"desc\":\"Manifesta\\u00e7\\u00e3o, poder pessoal e recursos necess\\u00e1rios para realizar objetivos.\",\"color\":\"#f3eef7\"},\"a_sacerdotisa\":{\"label\":\"A Sacerdotisa\",\"desc\":\"Intui\\u00e7\\u00e3o profunda, mist\\u00e9rios ocultos e sabedoria interior.\",\"color\":\"#f3eef7\"},\"a_imperatriz\":{\"label\":\"A Imperatriz\",\"desc\":\"Abund\\u00e2ncia, fertilidade, criatividade e conex\\u00e3o com a natureza.\",\"color\":\"#f3eef7\"},\"o_imperador\":{\"label\":\"O Imperador\",\"desc\":\"Estrutura, autoridade, estabilidade e lideran\\u00e7a firme.\",\"color\":\"#f3eef7\"},\"os_amantes\":{\"label\":\"Os Amantes\",\"desc\":\"Escolhas cruciais do cora\\u00e7\\u00e3o, uni\\u00f5es significativas e alinhamento de valores.\",\"color\":\"#f3eef7\"},\"a_roda_da_fortuna\":{\"label\":\"A Roda da Fortuna\",\"desc\":\"Ciclos de mudan\\u00e7a, destino em movimento e reviravoltas positivas.\",\"color\":\"#f3eef7\"},\"a_morte\":{\"label\":\"A Morte\",\"desc\":\"Transforma\\u00e7\\u00e3o profunda, fim de um ciclo e renascimento inevit\\u00e1vel.\",\"color\":\"#f3eef7\"},\"o_sol\":{\"label\":\"O Sol\",\"desc\":\"Alegria radiante, clareza absoluta, sucesso e vitalidade transbordante.\",\"color\":\"#f3eef7\"},\"o_mundo\":{\"label\":\"O Mundo\",\"desc\":\"Realiza\\u00e7\\u00e3o plena, conclus\\u00e3o bem-sucedida de uma jornada e integra\\u00e7\\u00e3o.\",\"color\":\"#f3eef7\"}};\n            const signs      = {\"Foco no Autoconhecimento\":\"Momento de olhar para dentro e alinhar a sua verdade essencial.\",\"Caminho de Oportunidades\":\"Portas abertas para o crescimento profissional e pessoal.\",\"Energia de Cura\":\"Liberta\\u00e7\\u00e3o de pesos emocionais do passado.\",\"Prote\\u00e7\\u00e3o Superior\":\"Guias espirituais a atuar diretamente no seu campo energ\\u00e9tico.\",\"Expans\\u00e3o Material\":\"B\\u00ean\\u00e7\\u00e3os financeiras e concretiza\\u00e7\\u00e3o de projetos.\",\"Renova\\u00e7\\u00e3o Afetiva\":\"Harmonia nas rela\\u00e7\\u00f5es ou novos la\\u00e7os significativos.\",\"Sabedoria e Calma\":\"Paci\\u00eancia necess\\u00e1ria para colher os frutos no tempo certo.\"};\n            const isLoggedIn = wrapper.getAttribute('data-logged-in') === '1';\n            const ajaxUrl    = \"https:\\\/\\\/app.digitalfreelancer.org\\\/wp-admin\\\/admin-ajax.php\";\n            const nonce      = \"250b999ab8\";\n            const serverHistory = [];\n            const LOCAL_KEY  = 'tarot_dashboard_history_local';\n\n            const toastEl    = document.querySelector('[data-tarot-toast]');\n            const dailyEl    = wrapper.querySelector('[data-tarot-daily]');\n            const historyEl  = wrapper.querySelector('[data-history-list]');\n\n            const tierKeys = Object.keys(tiers);\n            const signKeys = Object.keys(signs);\n\n            \/* ---------- Carta do dia (determin\u00edstica por data) ---------- *\/\n            function seededIndex(seedStr, max){\n                let hash = 0;\n                for (let i = 0; i < seedStr.length; i++){\n                    hash = (hash * 31 + seedStr.charCodeAt(i)) >>> 0;\n                }\n                return hash % max;\n            }\n            (function renderDaily(){\n                const today = new Date();\n                const seed = today.toISOString().slice(0,10);\n                const tierKey = tierKeys[seededIndex(seed, tierKeys.length)];\n                const tier = tiers[tierKey];\n                dailyEl.innerHTML = '<strong style=\"color:var(--gold)\">Arcano do dia \u2014 ' + tier.label + ':<\/strong> ' + tier.desc;\n            })();\n\n            \/* ---------- Toast ---------- *\/\n            let toastTimer = null;\n            function showToast(msg){\n                toastEl.textContent = msg;\n                toastEl.classList.add('tarot-show');\n                clearTimeout(toastTimer);\n                toastTimer = setTimeout(()=> toastEl.classList.remove('tarot-show'), 2200);\n            }\n\n            \/* ---------- Hist\u00f3rico ---------- *\/\n            function loadLocalHistory(){\n                try {\n                    const raw = localStorage.getItem(LOCAL_KEY);\n                    return raw ? JSON.parse(raw) : [];\n                } catch(e){ return []; }\n            }\n            function saveLocalHistory(list){\n                try { localStorage.setItem(LOCAL_KEY, JSON.stringify(list)); } catch(e){}\n            }\n\n            let currentHistory = isLoggedIn ? (serverHistory || []) : loadLocalHistory();\n\n            function renderHistory(){\n                if (!currentHistory || currentHistory.length === 0){\n                    historyEl.innerHTML = '<div class=\"tarot-empty\">Ainda n\u00e3o h\u00e1 leituras registadas. Fa\u00e7a a sua primeira tiragem.<\/div>';\n                    return;\n                }\n                historyEl.innerHTML = currentHistory.map(function(item){\n                    const tierColor = '#e9dcc3';\n                    return '<div class=\"tarot-history-item\">' +\n                        '<strong style=\"color:' + tierColor + '\">' + item.tier + '<\/strong>' +\n                        '<small>' + item.sign + ' &middot; ' + item.cards + ' carta(s) &middot; ' + item.date + '<\/small>' +\n                        '<\/div>';\n                }).join('');\n            }\n            renderHistory();\n\n            function pushHistory(entry){\n                currentHistory.unshift(entry);\n                currentHistory = currentHistory.slice(0, 20);\n                renderHistory();\n\n                if (isLoggedIn){\n                    const body = new URLSearchParams();\n                    body.set('action', 'tarot_save_reading');\n                    body.set('nonce', nonce);\n                    body.set('tier', entry.tier_key);\n                    body.set('sign', entry.sign);\n                    body.set('cards', entry.cards);\n\n                    fetch(ajaxUrl, { method:'POST', credentials:'same-origin', body: body })\n                        .then(r => r.json())\n                        .then(res => {\n                            if (res && res.success && res.data && res.data.history){\n                                currentHistory = res.data.history;\n                                renderHistory();\n                            }\n                        })\n                        .catch(()=>{});\n                } else {\n                    saveLocalHistory(currentHistory);\n                }\n            }\n\n            wrapper.querySelector('[data-reset-history]').addEventListener('click', function(){\n                if (!confirm('Tem a certeza que deseja limpar o seu hist\u00f3rico de leituras?')) return;\n\n                currentHistory = [];\n                renderHistory();\n\n                if (isLoggedIn){\n                    const body = new URLSearchParams();\n                    body.set('action', 'tarot_reset_history');\n                    body.set('nonce', nonce);\n                    fetch(ajaxUrl, { method:'POST', credentials:'same-origin', body: body }).catch(()=>{});\n                } else {\n                    saveLocalHistory([]);\n                }\n                showToast('Hist\u00f3rico limpo.');\n            });\n\n            \/* ---------- Tiragem de Cartas ---------- *\/\n\n            function buildDeckNodes(container, count){\n                container.innerHTML = '';\n                const nodes = [];\n                for (let i = 0; i < count; i++){\n                    const el = document.createElement('div');\n                    el.className = 'tarot-item';\n                    container.appendChild(el);\n                    nodes.push(el);\n                }\n                return nodes;\n            }\n\n            function drawCards(count){\n                const tierKey = tierKeys[Math.floor(Math.random() * tierKeys.length)];\n                const sign = signKeys[Math.floor(Math.random() * signKeys.length)];\n                return { tierKey, sign, cards: count };\n            }\n\n            function openModal(result){\n                const tier = tiers[result.tierKey];\n\n                const modal = document.createElement('div');\n                modal.className = 'tarot-modal';\n                modal.setAttribute('role', 'dialog');\n                modal.setAttribute('aria-modal', 'true');\n\n                const shareText = 'Or\u00e1culo de Tarot \u2014 Arcano: ' + tier.label + ' (' + result.cards + ' carta(s)). ' +\n                    tier.desc + ' Foco: ' + result.sign + ' \u2014 ' + signs[result.sign];\n\n                modal.innerHTML =\n                    '<div class=\"tarot-box\" tabindex=\"-1\">' +\n                        '<div class=\"tarot-glow\">Revela\u00e7\u00e3o do Tarot<\/div>' +\n                        '<div class=\"tarot-tier-label\">' + tier.label + '<\/div>' +\n                        '<div class=\"tarot-tier-desc\">' + tier.desc + '<\/div>' +\n                        '<div class=\"tarot-count\">Tiragem de ' + result.cards + ' carta(s)<\/div>' +\n                        '<div class=\"tarot-sign-box\">' +\n                            '<strong>' + result.sign + '<\/strong>' +\n                            '<span>' + signs[result.sign] + '<\/span>' +\n                        '<\/div>' +\n                        '<div class=\"tarot-actions\">' +\n                            '<button class=\"tarot-btn tarot-ghost\" type=\"button\" data-copy>Copiar Leitura<\/button>' +\n                            '<a class=\"tarot-btn tarot-ghost\" data-share target=\"_blank\" rel=\"noopener\">Partilhar no WhatsApp<\/a>' +\n                            '<button class=\"tarot-btn\" type=\"button\" data-close>Fechar<\/button>' +\n                        '<\/div>' +\n                    '<\/div>';\n\n                document.body.appendChild(modal);\n\n                const shareLink = modal.querySelector('[data-share]');\n                shareLink.href = 'https:\/\/wa.me\/?text=' + encodeURIComponent(shareText);\n\n                modal.querySelector('[data-copy]').addEventListener('click', function(){\n                    if (navigator.clipboard && navigator.clipboard.writeText){\n                        navigator.clipboard.writeText(shareText).then(function(){\n                            showToast('Leitura copiada!');\n                        }).catch(function(){\n                            showToast('N\u00e3o foi poss\u00edvel copiar.');\n                        });\n                    } else {\n                        showToast('N\u00e3o foi poss\u00edvel copiar.');\n                    }\n                });\n\n                function closeModal(){\n                    modal.remove();\n                    document.removeEventListener('keydown', onKeydown);\n                }\n                function onKeydown(e){\n                    if (e.key === 'Escape') closeModal();\n                }\n                document.addEventListener('keydown', onKeydown);\n\n                modal.addEventListener('click', function(ev){\n                    if (ev.target === modal || ev.target.hasAttribute('data-close')){\n                        closeModal();\n                    }\n                });\n\n                modal.querySelector('.tarot-box').focus();\n            }\n\n            wrapper.querySelector('[data-tarot]').addEventListener('click', function(){\n                \/\/ Delega\u00e7\u00e3o ou clique direto tratado abaixo\n            });\n\n            wrapper.addEventListener('click', function(e){\n                const btn = e.target.closest('[data-tarot]');\n                if (!btn || btn.disabled) return;\n\n                const count = parseInt(btn.getAttribute('data-tarot'), 10);\n                const card = btn.closest('.tarot-card');\n                const container = card.querySelector('[data-deck-container]');\n                const nodes = buildDeckNodes(container, count);\n\n                btn.disabled = true;\n                const originalLabel = btn.textContent;\n                btn.textContent = 'A baralhar e tirar\u2026';\n\n                nodes.forEach(n => n.classList.add('tarot-casting'));\n\n                setTimeout(function(){\n                    const result = drawCards(count);\n\n                    nodes.forEach(function(node){\n                        node.classList.remove('tarot-casting');\n                        node.classList.add('tarot-revealed');\n                    });\n\n                    openModal(result);\n\n                    pushHistory({\n                        tier_key: result.tierKey,\n                        tier: tiers[result.tierKey].label,\n                        sign: result.sign,\n                        cards: result.cards,\n                        date: new Date().toLocaleString('pt-PT', { day:'2-digit', month:'2-digit', year:'numeric', hour:'2-digit', minute:'2-digit' })\n                    });\n\n                    btn.disabled = false;\n                    btn.textContent = originalLabel;\n                }, 900);\n            });\n\n        })();\n        <\/script>\n\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eeafcb6 elementor-hidden-mobile e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"eeafcb6\" 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-0e629fa elementor-widget elementor-widget-spacer\" data-id=\"0e629fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-2581","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/pages\/2581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/comments?post=2581"}],"version-history":[{"count":25,"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/pages\/2581\/revisions"}],"predecessor-version":[{"id":3282,"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/pages\/2581\/revisions\/3282"}],"wp:attachment":[{"href":"https:\/\/app.digitalfreelancer.org\/index.php\/wp-json\/wp\/v2\/media?parent=2581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}