<div data-elementor-type="wp-post" data-elementor-id="926" class="elementor elementor-926" data-elementor-post-type="publicidad">
            <div class="wd-negative-gap elementor-element elementor-element-583686f wd-section-stretch-content e-flex e-con-boxed e-con e-parent" data-id="583686f" data-element_type="container">
                <div class="e-con-inner">
            <div class="elementor-element elementor-element-1aa5ba9 elementor-widget elementor-widget-html" data-id="1aa5ba9" data-element_type="widget" data-widget_type="html.default">
                <div class="olpa-product-detail-page">
Dominio Visual en Altura

SOBRETECHOS

Carteles en azoteas con gran visibilidad en circuitos estratégicos. Gestión integral de permisos y estructura.

Ubicaciones Habilitadas

Normativa & Seguridad

¿Qué son los Sobretechos?

Son dispositivos publicitarios instalados en azoteas privadas. Ofrecen una visibilidad privilegiada en avenidas, pero requieren un estricto cumplimiento de normativas municipales, cálculos de resistencia al viento y permisos del consorcio.

Especificaciones Técnicas

Formatos Monumental / Pantalla LED
Estructura Cálculo Sísmico/Viento
Habilitación Municipal (Obras Privadas)
Iluminación Frontlight / Backlight
Instalación Certificada por Profesionales

Gestión y Regulación

En Córdoba, estos carteles requieren autorización del "Órgano de Aplicación". Nos encargamos de todo: desde el acuerdo con el propietario hasta los planos técnicos firmados, asegurando que tu marca cumpla con las restricciones de zonificación (ej. Av. 9 de Julio, Santa Fe).

Gran Impacto

Dimensiones gigantes para máxima recordación de marca.

Seguridad Jurídica

Carteles 100% habilitados y con seguro de responsabilidad civil.

Ubicación Premium

Visibilidad limpia sin obstrucciones a nivel de calle.

Inventario limitado por regulaciones urbanas

Exposición de marca garantizada

+ 0

horas de visibilidad (con iluminación)

Cierre de disponibilidad para hoy:

00
:
00
:
00

Horas : Minutos : Segundos

Consultar Factibilidad

Gestión de permisos incluida • Asesoramiento técnico

document.addEventListener("DOMContentLoaded", function() { // 1. Scroll Reveal const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if(entry.isIntersecting) { entry.target.classList.add('visible'); if(entry.target.querySelector('.counter')) startCounters(entry.target); } }); }, { threshold: 0.1 }); document.querySelectorAll('.olpa-animate-up, .olpa-animate-left, .olpa-animate-right').forEach(el => observer.observe(el)); // 2. Counters function startCounters(container) { const counter = container.querySelector('.counter'); if(!counter || counter.classList.contains('done')) return; counter.classList.add('done'); const target = +counter.dataset.target; let current = 0; const inc = target / 50; const timer = setInterval(() => { current += inc; if(current >= target) { counter.innerText = target.toLocaleString(); clearInterval(timer); } else { counter.innerText = Math.floor(current).toLocaleString(); } }, 30); } // 3. Countdown Timer (Actualizado a fin del día) function updateTimer() { const now = new Date(); // Lógica: Tiempo restante hasta el final del día (23:59:59) let hours = 23 - now.getHours(); let minutes = 59 - now.getMinutes(); let seconds = 59 - now.getSeconds(); document.getElementById('hours').innerText = hours.toString().padStart(2, '0'); document.getElementById('minutes').innerText = minutes.toString().padStart(2, '0'); document.getElementById('seconds').innerText = seconds.toString().padStart(2, '0'); } // Iniciar timer updateTimer(); setInterval(updateTimer, 1000); // Actualizar cada segundo // 4. 3D Carousel Logic (Only Desktop) if (window.innerWidth > 768) { const items = document.querySelectorAll('.carousel-item'); let currentIndex = 0; // Start first item function updateCarousel() { items.forEach((item, index) => { item.className = 'carousel-item'; // Reset if(index === currentIndex) item.classList.add('active'); else if(index === currentIndex - 1 || (currentIndex === 0 && index === items.length - 1)) item.classList.add('prev'); else if(index === currentIndex + 1 || (currentIndex === items.length - 1 && index === 0)) item.classList.add('next'); else item.classList.add('hidden'); }); } document.getElementById('nextBtn')?.addEventListener('click', () => { currentIndex = (currentIndex + 1) % items.length; updateCarousel(); }); document.getElementById('prevBtn')?.addEventListener('click', () => { currentIndex = (currentIndex - 1 + items.length) % items.length; updateCarousel(); }); updateCarousel(); // Init } });