{"id":1973,"date":"2025-10-21T15:51:16","date_gmt":"2025-10-21T18:51:16","guid":{"rendered":"https:\/\/soudelos.com.br\/site\/?page_id=1973"},"modified":"2026-02-25T14:11:20","modified_gmt":"2026-02-25T17:11:20","slug":"publicacoes","status":"publish","type":"page","link":"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/","title":{"rendered":"Publica\u00e7\u00f5es"},"content":{"rendered":"<div id=\"pl-1973\"  class=\"panel-layout\" ><div id=\"pg-1973-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-1973-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-1973-0-0-0\" class=\"widget_text so-panel widget widget_custom_html panel-first-child\" data-index=\"0\" ><div class=\"textwidget custom-html-widget\"><!DOCTYPE html>\n<html lang=\"pt-br\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u00daltimos Im\u00f3veis - Delos Imobili\u00e1ria<\/title>\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n    <style>\n        \/* ESTILOS OTIMIZADOS - Carregamento cr\u00edtico primeiro *\/\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            background: #f8f9fa;\n            font-family: 'Segoe UI', system-ui, sans-serif;\n            line-height: 1.5;\n        }\n\n        .delos-recent-properties {\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 40px 20px;\n        }\n\n        .section-header {\n            text-align: center;\n            margin-bottom: 50px;\n        }\n\n        .section-title {\n            font-size: 2.5rem;\n            font-weight: 700;\n            color: #0c3168;\n            margin-bottom: 15px;\n        }\n\n        .section-subtitle {\n            color: #6b7280;\n            font-size: 1.3rem;\n            max-width: 600px;\n            margin: 0 auto;\n        }\n\n        \/* Grid otimizado para carregamento *\/\n        .properties-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));\n            gap: 30px;\n        }\n\n        .property-card {\n            background: white;\n            border-radius: 16px;\n            overflow: hidden;\n            box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);\n            transition: transform 0.3s ease;\n            border: 1px solid #f1f5f9;\n            height: 400px;\n            position: relative;\n        }\n\n        .property-card:hover {\n            transform: translateY(-5px);\n        }\n\n        .property-image-container {\n            height: 100%;\n            position: relative;\n            overflow: hidden;\n        }\n\n        .property-image {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n            opacity: 0;\n            transition: opacity 0.3s ease, transform 0.5s ease;\n        }\n\n        .property-image.loaded {\n            opacity: 1;\n        }\n\n        .property-card:hover .property-image {\n            transform: scale(1.03);\n        }\n\n        .image-overlay {\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            bottom: 0;\n            background: linear-gradient(to bottom, transparent 40%, rgba(0,0,0,0.85) 100%);\n            display: flex;\n            flex-direction: column;\n            justify-content: flex-end;\n            padding: 30px;\n            color: white;\n        }\n\n        .property-badge {\n            position: absolute;\n            top: 20px;\n            left: 20px;\n            background: #0c3168;\n            color: white;\n            padding: 8px 16px;\n            border-radius: 20px;\n            font-size: 0.8rem;\n            font-weight: 700;\n            z-index: 2;\n        }\n\n        .property-content {\n            position: relative;\n            z-index: 2;\n        }\n\n        .property-title {\n            font-size: 1.8rem;\n            font-weight: 700;\n            color: white;\n            margin-bottom: 12px;\n            line-height: 1.3;\n        }\n\n        .property-excerpt {\n            color: rgba(255, 255, 255, 0.9);\n            font-size: 1.1rem;\n            line-height: 1.5;\n            margin-bottom: 20px;\n            display: -webkit-box;\n            -webkit-line-clamp: 2;\n            -webkit-box-orient: vertical;\n            overflow: hidden;\n        }\n\n        .read-more {\n            background: rgba(255, 255, 255, 0.9);\n            color: #0c3168;\n            padding: 10px 20px;\n            border-radius: 8px;\n            text-decoration: none;\n            font-weight: 600;\n            transition: all 0.3s ease;\n            display: inline-flex;\n            align-items: center;\n            gap: 8px;\n            font-size: 0.9rem;\n        }\n\n        .read-more:hover {\n            background: white;\n            transform: translateY(-2px);\n        }\n\n        \/* Estados de carregamento otimizados *\/\n        .loading-skeleton {\n            background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n            background-size: 200% 100%;\n            animation: loading 1.5s infinite;\n        }\n\n        @keyframes loading {\n            0% { background-position: 200% 0; }\n            100% { background-position: -200% 0; }\n        }\n\n        .skeleton-card {\n            height: 400px;\n            border-radius: 16px;\n        }\n\n        .skeleton-text {\n            height: 24px;\n            width: 70%;\n            margin-bottom: 10px;\n            border-radius: 4px;\n        }\n\n        .skeleton-text-small {\n            height: 18px;\n            width: 90%;\n            border-radius: 4px;\n        }\n\n        .image-placeholder {\n            background: linear-gradient(45deg, #f0f0f0 25%, #e8e8e8 25%, #e8e8e8 50%, #f0f0f0 50%, #f0f0f0 75%, #e8e8e8 75%);\n            background-size: 20px 20px;\n            height: 100%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: #6b7280;\n        }\n\n        \/* Responsividade *\/\n        @media (max-width: 768px) {\n            .properties-grid {\n                grid-template-columns: 1fr;\n                gap: 25px;\n            }\n            \n            .property-card, .skeleton-card {\n                height: 350px;\n            }\n            \n            .section-title {\n                font-size: 2rem;\n            }\n        }\n\n        @media (max-width: 480px) {\n            .delos-recent-properties {\n                padding: 20px 15px;\n            }\n            \n            .property-card, .skeleton-card {\n                height: 300px;\n            }\n            \n            .image-overlay {\n                padding: 20px;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"delos-recent-properties\">\n        <div class=\"section-header\">\n            <h2 class=\"section-title\">PUBLICA\u00c7\u00d5ES<\/h2>\n            <p class=\"section-subtitle\">Confira nossas \u00faltimas publica\u00e7\u00f5es e fique por dentro das novidades.<\/p>\n        <\/div>\n\n        <!-- Skeleton loading para melhor UX -->\n        <div class=\"properties-grid\" id=\"propertiesGrid\">\n            <div class=\"property-card skeleton-card loading-skeleton\"><\/div>\n            <div class=\"property-card skeleton-card loading-skeleton\"><\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    \/\/ C\u00d3DIGO OTIMIZADO PARA CARREGAMENTO R\u00c1PIDO\n    (function() {\n        'use strict';\n        \n        const CONFIG = {\n            apiUrl: 'https:\/\/soudelos.com.br\/site\/wp-json\/wp\/v2',\n            categoryId: 44,\n            postsPerPage: 4, \/\/ Aumentei para 4 para melhor UX\n            cacheKey: 'delos_posts_cache',\n            cacheDuration: 10 * 60 * 1000 \/\/ 10 minutos de cache\n        };\n        \n        \/\/ Cache simples\n        const cache = {\n            get() {\n                try {\n                    const cached = localStorage.getItem(CONFIG.cacheKey);\n                    if (!cached) return null;\n                    \n                    const { data, timestamp } = JSON.parse(cached);\n                    if (Date.now() - timestamp > CONFIG.cacheDuration) {\n                        this.clear();\n                        return null;\n                    }\n                    return data;\n                } catch {\n                    return null;\n                }\n            },\n            \n            set(data) {\n                try {\n                    const cacheData = {\n                        data: data,\n                        timestamp: Date.now()\n                    };\n                    localStorage.setItem(CONFIG.cacheKey, JSON.stringify(cacheData));\n                } catch (e) {\n                    console.warn('N\u00e3o foi poss\u00edvel salvar no cache:', e);\n                }\n            },\n            \n            clear() {\n                localStorage.removeItem(CONFIG.cacheKey);\n            }\n        };\n        \n        const propertiesGrid = document.getElementById('propertiesGrid');\n        \n        \/\/ Iniciar carregamento imediatamente\n        init();\n        \n        async function init() {\n            \/\/ Mostrar skeleton imediatamente\n            showSkeletonLoading();\n            \n            \/\/ Carregar dados\n            await loadRecentProperties();\n            \n            \/\/ Pr\u00e9-carregar outras coisas se necess\u00e1rio\n            preloadAdditionalResources();\n        }\n        \n        async function loadRecentProperties() {\n            try {\n                \/\/ Tentar cache primeiro\n                const cachedData = cache.get();\n                if (cachedData) {\n                    console.log('\ud83d\udce6 Usando cache');\n                    renderProperties(cachedData);\n                    \n                    \/\/ Atualizar em background\n                    setTimeout(fetchFreshData, 1000);\n                    return;\n                }\n                \n                \/\/ Buscar dados novos com timeout\n                await fetchFreshData();\n                \n            } catch (error) {\n                console.error('Erro ao carregar:', error);\n                showErrorState();\n            }\n        }\n        \n        async function fetchFreshData() {\n            try {\n                \/\/ Usar AbortController para timeout\n                const controller = new AbortController();\n                const timeoutId = setTimeout(() => controller.abort(), 8000); \/\/ 8 segundos timeout\n                \n                const response = await fetch(\n                    `${CONFIG.apiUrl}\/posts?per_page=${CONFIG.postsPerPage}&categories=${CONFIG.categoryId}&_embed`,\n                    { signal: controller.signal }\n                );\n                \n                clearTimeout(timeoutId);\n                \n                if (!response.ok) throw new Error(`HTTP ${response.status}`);\n                \n                const posts = await response.json();\n                \n                if (!posts || posts.length === 0) {\n                    showNoProperties();\n                    return;\n                }\n                \n                \/\/ Processar posts de forma otimizada\n                const processedPosts = await Promise.all(\n                    posts.map(processPost)\n                );\n                \n                \/\/ Salvar no cache\n                cache.set(processedPosts);\n                \n                \/\/ Renderizar\n                renderProperties(processedPosts);\n                \n            } catch (error) {\n                if (error.name === 'AbortError') {\n                    console.warn('Timeout na requisi\u00e7\u00e3o');\n                    showTimeoutMessage();\n                }\n                throw error;\n            }\n        }\n        \n        async function processPost(post) {\n            \/\/ Processamento paralelo para imagens\n            const imagePromise = getPostImage(post);\n            \n            \/\/ Processar outros dados em paralelo\n            const [imageUrl] = await Promise.all([imagePromise]);\n            \n            return {\n                id: post.id,\n                title: post.title?.rendered?.replace(\/<\\\/?[^>]+(>|$)\/g, '') || 'Publica\u00e7\u00e3o',\n                excerpt: cleanExcerpt(post.excerpt?.rendered || post.content?.rendered || ''),\n                image: imageUrl,\n                link: post.link,\n                date: post.date\n            };\n        }\n        \n        async function getPostImage(post) {\n            \/\/ 1. Tentar imagem destacada\n            if (post._embedded?.['wp:featuredmedia']?.[0]?.source_url) {\n                return post._embedded['wp:featuredmedia'][0].source_url;\n            }\n            \n            \/\/ 2. Extrair do conte\u00fado de forma otimizada\n            if (post.content?.rendered) {\n                const match = post.content.rendered.match(\/<img[^>]+src=\"([^\">]+)\"\/);\n                if (match?.[1]) {\n                    return match[1];\n                }\n            }\n            \n            \/\/ 3. Placeholder otimizado\n            return `data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='400' height='300' viewBox='0 0 400 300'%3E%3Crect width='400' height='300' fill='%23f0f0f0'\/%3E%3Ctext x='50%25' y='50%25' font-family='Arial' font-size='16' text-anchor='middle' fill='%236b7280'%3EDelos Im\u00f3veis%3C\/text%3E%3C\/svg%3E`;\n        }\n        \n        function cleanExcerpt(html) {\n            const text = html.replace(\/<[^>]+>\/g, '');\n            return text.length > 100 ? text.substring(0, 100) + '...' : text;\n        }\n        \n        function renderProperties(properties) {\n            if (!properties || properties.length === 0) {\n                showNoProperties();\n                return;\n            }\n            \n            \/\/ Usar DocumentFragment para melhor performance\n            const fragment = document.createDocumentFragment();\n            const grid = document.createElement('div');\n            grid.className = 'properties-grid';\n            \n            properties.forEach((property, index) => {\n                const card = createPropertyCard(property, index);\n                grid.appendChild(card);\n            });\n            \n            fragment.appendChild(grid);\n            \n            \/\/ Substituir conte\u00fado de uma vez\n            propertiesGrid.innerHTML = '';\n            propertiesGrid.appendChild(fragment);\n            \n            \/\/ Carregar imagens com lazy loading otimizado\n            lazyLoadImages();\n        }\n        \n        function createPropertyCard(property, index) {\n            const card = document.createElement('article');\n            card.className = 'property-card';\n            card.style.animationDelay = `${index * 100}ms`;\n            \n            const imageSrc = property.image;\n            const isDataUri = imageSrc.startsWith('data:');\n            \n            card.innerHTML = `\n                <div class=\"property-image-container\">\n                    ${!isDataUri ? `\n                        <img data-src=\"${imageSrc}\" \n                             alt=\"${property.title}\"\n                             class=\"property-image\"\n                             loading=\"lazy\">\n                    ` : `\n                        <img decoding=\"async\" src=\"${imageSrc}\" \n                             alt=\"${property.title}\"\n                             class=\"property-image loaded\">\n                    `}\n                    <div class=\"image-overlay\">\n                        <div class=\"property-content\">\n                            <h3 class=\"property-title\">${property.title}<\/h3>\n                            <p class=\"property-excerpt\">${property.excerpt}<\/p>\n                            <a href=\"${property.link}\" class=\"read-more\" target=\"_blank\" rel=\"noopener\">\n                                <i class=\"fas fa-arrow-right\"><\/i> Ver Detalhes\n                            <\/a>\n                        <\/div>\n                    <\/div>\n                    <div class=\"property-badge\">Novo<\/div>\n                <\/div>\n            `;\n            \n            return card;\n        }\n        \n        function lazyLoadImages() {\n            const images = document.querySelectorAll('img[data-src]');\n            \n            if ('IntersectionObserver' in window) {\n                const imageObserver = new IntersectionObserver((entries) => {\n                    entries.forEach(entry => {\n                        if (entry.isIntersecting) {\n                            const img = entry.target;\n                            img.src = img.dataset.src;\n                            img.classList.add('loaded');\n                            img.removeAttribute('data-src');\n                            imageObserver.unobserve(img);\n                        }\n                    });\n                }, {\n                    rootMargin: '50px 0px',\n                    threshold: 0.1\n                });\n                \n                images.forEach(img => imageObserver.observe(img));\n            } else {\n                \/\/ Fallback para navegadores antigos\n                images.forEach(img => {\n                    img.src = img.dataset.src;\n                    img.classList.add('loaded');\n                });\n            }\n        }\n        \n        function showSkeletonLoading() {\n            propertiesGrid.innerHTML = `\n                <div class=\"property-card skeleton-card loading-skeleton\"><\/div>\n                <div class=\"property-card skeleton-card loading-skeleton\"><\/div>\n            `;\n        }\n        \n        function showNoProperties() {\n            propertiesGrid.innerHTML = `\n                <div class=\"no-properties\" style=\"text-align: center; padding: 40px; grid-column: 1\/-1;\">\n                    <i class=\"fas fa-newspaper\" style=\"font-size: 3rem; color: #cbd5e1; margin-bottom: 20px;\"><\/i>\n                    <h3 style=\"color: #0c3168; margin-bottom: 10px;\">Nenhuma publica\u00e7\u00e3o encontrada<\/h3>\n                    <p style=\"color: #6b7280;\">Volte em breve para novas atualiza\u00e7\u00f5es.<\/p>\n                <\/div>\n            `;\n        }\n        \n        function showErrorState() {\n            propertiesGrid.innerHTML = `\n                <div class=\"no-properties\" style=\"text-align: center; padding: 40px; grid-column: 1\/-1;\">\n                    <i class=\"fas fa-exclamation-triangle\" style=\"font-size: 3rem; color: #f59e0b; margin-bottom: 20px;\"><\/i>\n                    <h3 style=\"color: #0c3168; margin-bottom: 10px;\">Erro ao carregar<\/h3>\n                    <p style=\"color: #6b7280; margin-bottom: 20px;\">Tente recarregar a p\u00e1gina.<\/p>\n                    <button onclick=\"window.location.reload()\" style=\"background: #0c3168; color: white; border: none; padding: 10px 20px; border-radius: 8px; cursor: pointer; font-weight: 600;\">\n                        <i class=\"fas fa-redo\"><\/i> Recarregar\n                    <\/button>\n                <\/div>\n            `;\n        }\n        \n        function showTimeoutMessage() {\n            const existingError = document.querySelector('.no-properties');\n            if (!existingError) {\n                propertiesGrid.innerHTML += `\n                    <div style=\"grid-column: 1\/-1; text-align: center; color: #6b7280; font-size: 0.9rem; padding: 10px;\">\n                        <i class=\"fas fa-info-circle\"><\/i> Carregando conte\u00fado adicional em segundo plano...\n                    <\/div>\n                `;\n            }\n        }\n        \n        function preloadAdditionalResources() {\n            \/\/ Pr\u00e9-carregar \u00edcones do FontAwesome se necess\u00e1rio\n            if (!document.querySelector('link[href*=\"font-awesome\"]')) {\n                const link = document.createElement('link');\n                link.rel = 'preload';\n                link.as = 'style';\n                link.href = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css';\n                link.onload = () => link.rel = 'stylesheet';\n                document.head.appendChild(link);\n            }\n        }\n        \n        \/\/ Recarregar ao sair do modo suspenso\n        document.addEventListener('visibilitychange', () => {\n            if (!document.hidden) {\n                \/\/ Verificar se precisa atualizar (mais de 30 minutos)\n                const cachedData = cache.get();\n                if (!cachedData || Date.now() - cachedData.timestamp > 30 * 60 * 1000) {\n                    setTimeout(fetchFreshData, 1000);\n                }\n            }\n        });\n        \n    })();\n    <\/script>\n<\/body>\n<\/html><\/div><\/div><div id=\"panel-1973-0-0-1\" class=\"widget_text so-panel widget widget_custom_html panel-last-child\" data-index=\"1\" ><div class=\"textwidget custom-html-widget\"><html lang=\"pt-BR\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>WhatsApp Direto - Delos Im\u00f3veis<\/title>\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.0\/css\/all.min.css\">\n    <style>\n        \/* ==================== WHATSAPP CORRIGIDO ==================== *\/\n        .whatsapp-float {\n            position: fixed !important;\n            bottom: 30px !important;\n            right: 30px !important;\n            z-index: 999999 !important;\n        }\n\n        .whatsapp-button {\n            width: 70px !important;\n            height: 70px !important;\n            background: #25D366 !important;\n            border-radius: 50% !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            cursor: pointer !important;\n            box-shadow: 0 8px 30px rgba(37, 211, 102, 0.4) !important;\n            transition: all 0.3s ease !important;\n            text-decoration: none !important;\n            border: none !important;\n            padding: 0 !important;\n            margin: 0 !important;\n        }\n\n        \/* CORRE\u00c7\u00c3O DO \u00cdCONE FONT AWESOME *\/\n        .whatsapp-button i {\n            color: #ffffff !important;\n            font-size: 38px !important;\n            line-height: 1 !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            \/* SOBRESCREVER QUALQUER ESTILO GLOBAL *\/\n            font-family: \"Font Awesome 6 Brands\" !important;\n            font-weight: 400 !important;\n            font-style: normal !important;\n        }\n\n        .whatsapp-button:hover {\n            transform: scale(1.1) !important;\n            background: #128C7E !important;\n        }\n\n        .whatsapp-button:hover i {\n            color: #ffffff !important;\n        }\n\n        \/* Remover texto *\/\n        .whatsapp-tooltip {\n            display: none !important;\n        }\n\n        \/* Anima\u00e7\u00f5es *\/\n        @keyframes whatsappPulse {\n            0% { \n                box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.7) !important; \n            }\n            70% { \n                box-shadow: 0 0 0 15px rgba(37, 211, 102, 0) !important; \n            }\n            100% { \n                box-shadow: 0 0 0 0 rgba(37, 211, 102, 0) !important; \n            }\n        }\n\n        .whatsapp-pulse {\n            animation: whatsappPulse 2s infinite !important;\n        }\n\n        \/* Responsivo *\/\n        @media (max-width: 768px) {\n            .whatsapp-float {\n                bottom: 20px !important;\n                right: 20px !important;\n            }\n            \n            .whatsapp-button {\n                width: 60px !important;\n                height: 60px !important;\n            }\n            \n            .whatsapp-button i {\n                font-size: 32px !important;\n            }\n        }\n\n        @media (max-width: 480px) {\n            .whatsapp-float {\n                bottom: 15px !important;\n                right: 15px !important;\n            }\n            \n            .whatsapp-button {\n                width: 55px !important;\n                height: 55px !important;\n            }\n            \n            .whatsapp-button i {\n                font-size: 28px !important;\n            }\n        }\n\n        \/* ==================== CORRE\u00c7\u00c3O DE CONFLITOS ==================== *\/\n        \/* Garantir que nenhum estilo global afete o WhatsApp *\/\n        .whatsapp-float * {\n            box-sizing: border-box !important;\n        }\n\n        a.whatsapp-button {\n            font-family: inherit !important;\n            text-decoration: none !important;\n        }\n    <\/style>\n<\/head>\n<body>\n    <!-- Bot\u00e3o WhatsApp Direto -->\n    <div class=\"whatsapp-float\">\n        <a href=\"https:\/\/wa.me\/5583996431517?text=Ol\u00e1! Gostaria de mais informa\u00e7\u00f5es sobre os im\u00f3veis Delos\" \n           class=\"whatsapp-button whatsapp-pulse\" \n           target=\"_blank\"\n           id=\"whatsappButton\">\n            <i class=\"fab fa-whatsapp\"><\/i>\n        <\/a>\n    <\/div>\n\n    <script>\n        \/\/ Corre\u00e7\u00e3o IMEDIATA via JavaScript\n        document.addEventListener('DOMContentLoaded', function() {\n            const whatsappBtn = document.getElementById('whatsappButton');\n            const whatsappIcon = document.querySelector('.whatsapp-button i');\n            \n            \/\/ For\u00e7ar estilos CSS inline para garantir funcionamento\n            if (whatsappBtn) {\n                whatsappBtn.style.cssText = `\n                    width: 70px !important;\n                    height: 70px !important;\n                    background: #25D366 !important;\n                    border-radius: 50% !important;\n                    display: flex !important;\n                    align-items: center !important;\n                    justify-content: center !important;\n                    cursor: pointer !important;\n                    box-shadow: 0 8px 30px rgba(37, 211, 102, 0.4) !important;\n                    text-decoration: none !important;\n                    border: none !important;\n                    position: fixed !important;\n                    bottom: 30px !important;\n                    right: 30px !important;\n                    z-index: 999999 !important;\n                    padding: 0 !important;\n                    margin: 0 !important;\n                `;\n            }\n            \n            if (whatsappIcon) {\n                whatsappIcon.style.cssText = `\n                    color: white !important;\n                    font-size: 38px !important;\n                    font-family: \"Font Awesome 6 Brands\" !important;\n                    font-weight: 400 !important;\n                    font-style: normal !important;\n                    line-height: 1 !important;\n                    margin: 0 !important;\n                    padding: 0 !important;\n                `;\n            }\n            \n            console.log('\u2705 WhatsApp estilos aplicados!');\n        });\n\n        \/\/ Classe WhatsApp para funcionalidades extras\n        class WhatsAppDirect {\n            constructor() {\n                this.button = document.getElementById('whatsappButton');\n                this.isLoading = false;\n                \n                this.init();\n            }\n            \n            init() {\n                console.log('WhatsApp Direct - Inicializado');\n                \n                \/\/ Evento de clique no bot\u00e3o\n                if (this.button) {\n                    this.button.addEventListener('click', (e) => {\n                        this.handleClick(e);\n                    });\n                    \n                    \/\/ Adicionar efeitos de intera\u00e7\u00e3o\n                    this.addHoverEffects();\n                }\n            }\n            \n            handleClick(e) {\n                if (this.isLoading) {\n                    e.preventDefault();\n                    return;\n                }\n                \n                \/\/ Tracking de clique\n                this.trackClick();\n            }\n            \n            addHoverEffects() {\n                if (!this.button) return;\n                \n                \/\/ Efeito de respiro suave\n                let pulseInterval;\n                \n                this.button.addEventListener('mouseenter', () => {\n                    this.button.classList.remove('whatsapp-pulse');\n                    \n                    \/\/ Efeito de respiro cont\u00ednuo\n                    pulseInterval = setInterval(() => {\n                        this.button.style.transform = 'scale(1.05)';\n                        setTimeout(() => {\n                            if (this.button) {\n                                this.button.style.transform = 'scale(1.1)';\n                            }\n                        }, 150);\n                    }, 300);\n                });\n                \n                this.button.addEventListener('mouseleave', () => {\n                    this.button.classList.add('whatsapp-pulse');\n                    this.button.style.transform = '';\n                    \n                    if (pulseInterval) {\n                        clearInterval(pulseInterval);\n                    }\n                });\n            }\n            \n            trackClick() {\n                \/\/ Google Analytics (se estiver configurado)\n                if (typeof gtag !== 'undefined') {\n                    gtag('event', 'whatsapp_click', {\n                        'event_category': 'engagement',\n                        'event_label': 'whatsapp_float_button'\n                    });\n                }\n                \n                console.log('WhatsApp Click - N\u00famero: 83 99643-1517');\n            }\n            \n            \/\/ M\u00e9todo para atualizar o n\u00famero facilmente\n            updatePhoneNumber(newNumber) {\n                const cleanNumber = newNumber.replace(\/\\D\/g, '');\n                const whatsappUrl = `https:\/\/wa.me\/55${cleanNumber}?text=Ol\u00e1! Gostaria de mais informa\u00e7\u00f5es sobre os im\u00f3veis Delos`;\n                this.button.setAttribute('href', whatsappUrl);\n                \n                console.log('N\u00famero do WhatsApp atualizado para:', newNumber);\n            }\n            \n            \/\/ M\u00e9todo para atualizar a mensagem padr\u00e3o\n            updateMessage(newMessage) {\n                const currentHref = this.button.getAttribute('href');\n                const newHref = currentHref.replace(\/text=.*?(?=&|$)\/, `text=${encodeURIComponent(newMessage)}`);\n                this.button.setAttribute('href', newHref);\n            }\n        }\n        \n        \/\/ Inicializar quando o DOM estiver pronto\n        function initWhatsAppDirect() {\n            \/\/ Verificar se j\u00e1 existe uma inst\u00e2ncia\n            if (window.whatsAppDirectInstance) {\n                return window.whatsAppDirectInstance;\n            }\n            \n            const whatsappDirect = new WhatsAppDirect();\n            window.whatsAppDirectInstance = whatsappDirect;\n            return window.whatsAppDirectInstance;\n        }\n        \n        \/\/ Inicializa\u00e7\u00e3o\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initWhatsAppDirect);\n        } else {\n            initWhatsAppDirect();\n        }\n        \n        \/\/ Compatibilidade com jQuery\n        if (typeof jQuery !== 'undefined') {\n            jQuery(document).ready(function($) {\n                initWhatsAppDirect();\n            });\n        }\n    <\/script>\n<\/body>\n<\/html><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>\u00daltimos Im\u00f3veis &#8211; Delos Imobili\u00e1ria PUBLICA\u00c7\u00d5ES Confira nossas \u00faltimas publica\u00e7\u00f5es e fique por dentro das novidades. WhatsApp Direto &#8211; Delos [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1973","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Publica\u00e7\u00f5es - Delos Imobili\u00e1ria<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Publica\u00e7\u00f5es - Delos Imobili\u00e1ria\" \/>\n<meta property=\"og:description\" content=\"\u00daltimos Im\u00f3veis - Delos Imobili\u00e1ria PUBLICA\u00c7\u00d5ES Confira nossas \u00faltimas publica\u00e7\u00f5es e fique por dentro das novidades. WhatsApp Direto - Delos [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/\" \/>\n<meta property=\"og:site_name\" content=\"Delos Imobili\u00e1ria\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-25T17:11:20+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/\",\"url\":\"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/\",\"name\":\"Publica\u00e7\u00f5es - Delos Imobili\u00e1ria\",\"isPartOf\":{\"@id\":\"https:\/\/soudelos.com.br\/site\/#website\"},\"datePublished\":\"2025-10-21T18:51:16+00:00\",\"dateModified\":\"2026-02-25T17:11:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/soudelos.com.br\/site\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Publica\u00e7\u00f5es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/soudelos.com.br\/site\/#website\",\"url\":\"https:\/\/soudelos.com.br\/site\/\",\"name\":\"Delos Imobili\u00e1ria\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/soudelos.com.br\/site\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/soudelos.com.br\/site\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/soudelos.com.br\/site\/#organization\",\"name\":\"Delos Imobili\u00e1ria\",\"url\":\"https:\/\/soudelos.com.br\/site\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/soudelos.com.br\/site\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/soudelos.com.br\/site\/wp-content\/uploads\/2026\/02\/cropped-Screenshot-2025-05-21-at-14-29-51-Logo-Delos-Logo-Delos-Vetor.pdf2_-removebg-preview-1-1.png\",\"contentUrl\":\"https:\/\/soudelos.com.br\/site\/wp-content\/uploads\/2026\/02\/cropped-Screenshot-2025-05-21-at-14-29-51-Logo-Delos-Logo-Delos-Vetor.pdf2_-removebg-preview-1-1.png\",\"width\":150,\"height\":50,\"caption\":\"Delos Imobili\u00e1ria\"},\"image\":{\"@id\":\"https:\/\/soudelos.com.br\/site\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.instagram.com\/soudelos\/\",\"https:\/\/www.youtube.com\/@soudelos\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Publica\u00e7\u00f5es - Delos Imobili\u00e1ria","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/","og_locale":"pt_BR","og_type":"article","og_title":"Publica\u00e7\u00f5es - Delos Imobili\u00e1ria","og_description":"\u00daltimos Im\u00f3veis - Delos Imobili\u00e1ria PUBLICA\u00c7\u00d5ES Confira nossas \u00faltimas publica\u00e7\u00f5es e fique por dentro das novidades. WhatsApp Direto - Delos [&hellip;]","og_url":"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/","og_site_name":"Delos Imobili\u00e1ria","article_modified_time":"2026-02-25T17:11:20+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/","url":"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/","name":"Publica\u00e7\u00f5es - Delos Imobili\u00e1ria","isPartOf":{"@id":"https:\/\/soudelos.com.br\/site\/#website"},"datePublished":"2025-10-21T18:51:16+00:00","dateModified":"2026-02-25T17:11:20+00:00","breadcrumb":{"@id":"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/soudelos.com.br\/site\/index.php\/publicacoes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/soudelos.com.br\/site\/"},{"@type":"ListItem","position":2,"name":"Publica\u00e7\u00f5es"}]},{"@type":"WebSite","@id":"https:\/\/soudelos.com.br\/site\/#website","url":"https:\/\/soudelos.com.br\/site\/","name":"Delos Imobili\u00e1ria","description":"","publisher":{"@id":"https:\/\/soudelos.com.br\/site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/soudelos.com.br\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/soudelos.com.br\/site\/#organization","name":"Delos Imobili\u00e1ria","url":"https:\/\/soudelos.com.br\/site\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soudelos.com.br\/site\/#\/schema\/logo\/image\/","url":"https:\/\/soudelos.com.br\/site\/wp-content\/uploads\/2026\/02\/cropped-Screenshot-2025-05-21-at-14-29-51-Logo-Delos-Logo-Delos-Vetor.pdf2_-removebg-preview-1-1.png","contentUrl":"https:\/\/soudelos.com.br\/site\/wp-content\/uploads\/2026\/02\/cropped-Screenshot-2025-05-21-at-14-29-51-Logo-Delos-Logo-Delos-Vetor.pdf2_-removebg-preview-1-1.png","width":150,"height":50,"caption":"Delos Imobili\u00e1ria"},"image":{"@id":"https:\/\/soudelos.com.br\/site\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/soudelos\/","https:\/\/www.youtube.com\/@soudelos"]}]}},"_links":{"self":[{"href":"https:\/\/soudelos.com.br\/site\/index.php\/wp-json\/wp\/v2\/pages\/1973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soudelos.com.br\/site\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/soudelos.com.br\/site\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/soudelos.com.br\/site\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/soudelos.com.br\/site\/index.php\/wp-json\/wp\/v2\/comments?post=1973"}],"version-history":[{"count":0,"href":"https:\/\/soudelos.com.br\/site\/index.php\/wp-json\/wp\/v2\/pages\/1973\/revisions"}],"wp:attachment":[{"href":"https:\/\/soudelos.com.br\/site\/index.php\/wp-json\/wp\/v2\/media?parent=1973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}