<?php
require_once __DIR__ . '/includes/detect-lang.php';
$page_title       = $lang === 'en' ? 'Strategic Technology Consulting' : 'Consultoría Tecnológica Estratégica';
$page_description = $lang === 'en'
    ? 'AP Interactive — high-level technology consulting with our own AS215691 infrastructure. Cybersecurity, AI, development and bare metal for organisations that cannot afford failure.'
    : 'AP Interactive — Consultoría tecnológica de alto nivel con infraestructura propia AS215691. Ciberseguridad, IA, desarrollo y bare metal para organizaciones que no admiten fallos.';
$page_og_image    = '/images/og/og-home.jpg';
$page_type        = 'website';
include('includes/header.php');
?>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://apinteractive.es/#website",
      "url": "https://apinteractive.es",
      "name": "AP Interactive Solutions",
      "publisher": { "@id": "https://apinteractive.es/#organization" },
      "inLanguage": ["es", "en"]
    },
    {
      "@type": "WebPage",
      "@id": "https://apinteractive.es/#webpage",
      "url": "https://apinteractive.es/",
      "name": "AP Interactive Solutions — Consultoría Tecnológica Estratégica",
      "isPartOf": { "@id": "https://apinteractive.es/#website" },
      "about": { "@id": "https://apinteractive.es/#organization" },
      "description": "Consultoría tecnológica de alto nivel con infraestructura propia AS215691. Ciberseguridad, IA, desarrollo y bare metal."
    }
  ]
}
</script>

<style>
:root {
    --bg: #0d1121;
    --bg-2: #131a2a;
    --bg-3: #1a2133;
    --text: #eef0f6;
    --text-2: #8892a4;
    --text-3: #4e566a;
    --accent: #4686dd;
    --accent-dim: rgba(70,134,221,0.10);
    --accent-border: rgba(70,134,221,0.22);
    --line: rgba(255,255,255,0.07);
}
body { background: var(--bg); color: var(--text); }

.grain::before {
    content: '';
    position: fixed; inset: 0;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
    pointer-events: none; z-index: 9999; opacity: 0.4;
}
.grid-bg {
    background-image:
        linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
    background-size: 80px 80px;
}
.display { font-family: 'Barlow Condensed', sans-serif; text-transform: uppercase; letter-spacing: -0.01em; }
.mono { font-family: 'IBM Plex Mono', monospace; }
.section-label { font-family: 'IBM Plex Mono', monospace; font-size: 0.68rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent); }

.btn-primary {
    display: inline-flex; align-items: center; gap: 0.6rem;
    padding: 0.9rem 2rem;
    background: var(--accent); color: #fff;
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700; font-size: 0.9rem; letter-spacing: 0.08em; text-transform: uppercase;
    transition: opacity 0.2s;
}
.btn-primary:hover { opacity: 0.85; }
.btn-primary:disabled, .btn-primary[disabled] { opacity: 0.4; cursor: not-allowed; pointer-events: none; }
.btn-ghost {
    display: inline-flex; align-items: center; gap: 0.6rem;
    padding: 0.9rem 2rem;
    background: transparent; color: var(--text-2);
    border: 1px solid var(--line);
    font-family: 'Barlow Condensed', sans-serif;
    font-size: 0.9rem; letter-spacing: 0.08em; text-transform: uppercase;
    transition: border-color 0.2s, color 0.2s;
}
.btn-ghost:hover { border-color: var(--accent-border); color: var(--text); }

.service-row {
    display: flex; align-items: center; gap: 1.5rem;
    border-top: 1px solid var(--line);
    padding: 1.6rem 0;
    text-decoration: none; color: inherit;
    transition: padding-left 0.22s, border-color 0.22s;
}
.service-row:last-child { border-bottom: 1px solid var(--line); }
.service-row:hover { padding-left: 0.8rem; border-top-color: var(--accent-border); }
.svc-num { font-family: 'IBM Plex Mono', monospace; font-size: 0.63rem; letter-spacing: 0.15em; color: var(--text-3); width: 2.4rem; flex-shrink: 0; }
.svc-name { font-family: 'Barlow Condensed', sans-serif; font-size: clamp(1.5rem, 2.6vw, 2.3rem); font-weight: 800; text-transform: uppercase; letter-spacing: -0.01em; color: var(--text); transition: color 0.2s; flex-shrink: 0; }
.service-row:hover .svc-name { color: var(--accent); }
.svc-tags { font-family: 'IBM Plex Mono', monospace; font-size: 0.63rem; color: var(--text-3); letter-spacing: 0.1em; flex: 1; }
.svc-arrow { font-family: 'IBM Plex Mono', monospace; font-size: 0.65rem; letter-spacing: 0.1em; color: var(--text-3); transition: color 0.2s, transform 0.2s; flex-shrink: 0; }
.service-row:hover .svc-arrow { color: var(--accent); transform: translateX(6px); }

.form-field { background: var(--bg-2); border: 1px solid var(--line); color: var(--text); font-family: 'IBM Plex Sans', sans-serif; transition: border-color 0.2s; }
.form-field::placeholder { color: var(--text-3); }
.form-field:focus { outline: none; border-color: var(--accent-border); }
.form-lbl { font-family: 'IBM Plex Mono', monospace; font-size: 0.65rem; letter-spacing: 0.15em; text-transform: uppercase; color: var(--text-3); }
.form-check { appearance: none; -webkit-appearance: none; width: 1rem; height: 1rem; background: var(--bg-2); border: 1px solid var(--line); border-radius: 2px; cursor: pointer; position: relative; transition: border-color 0.2s, background 0.2s; }
.form-check:hover { border-color: var(--accent-border); }
.form-check:checked { background: var(--accent); border-color: var(--accent); }
.form-check:checked::after { content: ''; position: absolute; left: 4px; top: 1px; width: 5px; height: 9px; border: solid var(--bg); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.form-check:focus-visible { outline: 2px solid var(--accent-border); outline-offset: 2px; }

@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.marquee-track { animation: marquee 40s linear infinite; }

.hero-line { display: block; }
@media (min-width: 640px) { .hero-line { white-space: nowrap; } }

@keyframes glow-a {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(1.18); }
}
@keyframes glow-b {
    0%, 100% { opacity: 0.6; transform: scale(1); }
    50% { opacity: 1; transform: scale(1.25); }
}
</style>

<div class="grain"></div>

<!-- ══════════ HERO ══════════ -->
<section id="hero-section" class="relative min-h-screen flex flex-col overflow-hidden" style="background: var(--bg);">

    <!-- COBE globe — right side -->
    <div style="position:absolute; right:3%; top:50%; transform:translateY(-50%);
                width:clamp(360px,58vw,800px); height:clamp(360px,58vw,800px);
                pointer-events:none; z-index:1; opacity:0.95;">
        <canvas id="globe" width="1000" height="1000"
                style="width:100%; height:100%; display:block;"></canvas>
    </div>

    <!-- Static left glow -->
    <div class="absolute inset-0 pointer-events-none" style="z-index:2; background: radial-gradient(ellipse 70% 60% at 15% 50%, rgba(70,134,221,0.06) 0%, transparent 65%);"></div>
    <!-- Pulsing top-right orb -->
    <div class="absolute pointer-events-none" style="z-index:2; top:-8%; right:-4%; width:640px; height:640px; background:radial-gradient(circle, rgba(70,134,221,0.07) 0%, transparent 68%); animation: glow-a 9s ease-in-out infinite;"></div>
    <!-- Pulsing bottom-center orb -->
    <div class="absolute pointer-events-none" style="z-index:2; bottom:-15%; left:35%; width:500px; height:500px; background:radial-gradient(circle, rgba(70,134,221,0.045) 0%, transparent 70%); animation: glow-b 13s ease-in-out infinite 2s;"></div>

    <div class="flex-1 flex items-center relative" style="z-index:3;">
        <div class="w-full px-6 md:px-12 lg:px-16 xl:px-24 py-28 lg:py-44">

            <div class="mono text-xs mb-6" style="color: var(--text-3); letter-spacing: 0.15em;" data-i18n="hero-label">AP Interactive · Strategic Technology Consulting</div>

            <h1 class="display font-black leading-none mb-8"
                style="font-size: clamp(2.2rem, 5.5vw, 5.5rem); color: var(--text);">
                <?php if ($lang === 'en'): ?>
                <span class="hero-line">WHERE <span style="color: var(--accent);">TECHNOLOGY</span></span>
                <span class="hero-line">BECOMES YOUR</span>
                <span class="hero-line">ADVANTAGE.</span>
                <?php else: ?>
                <span class="hero-line">DONDE LA <span style="color: var(--accent);">TECNOLOGÍA</span></span>
                <span class="hero-line">SE CONVIERTE EN</span>
                <span class="hero-line">VENTAJA.</span>
                <?php endif; ?>
            </h1>

            <div style="height: 1px; background: linear-gradient(90deg, var(--accent-border), transparent); max-width: 20rem; margin-bottom: 2rem;"></div>

            <p class="font-light leading-relaxed mb-8" style="color: var(--text-2); max-width: 520px; font-size: clamp(0.95rem, 1.5vw, 1.1rem);" data-i18n="hero-sub">
                Technology consulting for organizations operating in critical environments. Own infrastructure, digital intelligence and teams that have worked with the most demanding institutions in the country.
            </p>

            <div class="flex flex-wrap gap-3">
                <a href="#capacidades" class="btn-primary">
                    <span data-i18n="hero-btn-caps">View Capabilities</span>
                    <svg width="13" height="13" viewBox="0 0 13 13" fill="none"><path d="M1 6.5h11M8 2l4.5 4.5L8 11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
                </a>
                <a href="#contacto" class="btn-ghost" data-i18n="hero-btn-contact">Talk to a Consultant</a>
            </div>

        </div>
    </div>

</section>

<!-- ══════════ CLIENTES ══════════ -->
<section class="overflow-hidden" style="background: var(--bg); border-bottom: 1px solid var(--line);">
    <div class="border-t" style="border-color: var(--line);">
        <div class="px-6 lg:px-16 xl:px-24 pt-10 pb-6">
            <span class="mono text-xs" style="color: var(--text-3); letter-spacing: 0.15em;" data-i18n="idx-trusted">TRUSTED BY</span>
        </div>
        <div class="overflow-hidden pb-12">
            <div class="flex items-center gap-16" style="width: max-content; animation: marquee 50s linear infinite;">
                <?php foreach(array_merge(
                    [['images/armora.png','Armora'],['images/dltcode.png','DLTCode'],['images/correcta.png','Correcta'],['images/aesyc.png','AESyC'],['images/petec.png','PETEC'],['images/abacus.png','Abacus Consulting'],['images/incibe.png','INCIBE'],['images/guardiacivil.png','Guardia Civil'],['images/universidadmalaga.png','Universidad de Málaga'],['images/iberosec.png','Iberosec Investments'],['images/airbus.png','Airbus']],
                    [['images/armora.png','Armora'],['images/dltcode.png','DLTCode'],['images/correcta.png','Correcta'],['images/aesyc.png','AESyC'],['images/petec.png','PETEC'],['images/abacus.png','Abacus Consulting'],['images/incibe.png','INCIBE'],['images/guardiacivil.png','Guardia Civil'],['images/universidadmalaga.png','Universidad de Málaga'],['images/iberosec.png','Iberosec Investments'],['images/airbus.png','Airbus']]
                ) as $c): ?>
                <div class="flex-shrink-0 h-10 w-40 flex items-center justify-center"
                     style="filter: brightness(0.45) saturate(0); transition: filter 0.3s;"
                     onmouseover="this.style.filter='brightness(1) saturate(1)'"
                     onmouseout="this.style.filter='brightness(0.45) saturate(0)'">
                    <img src="<?= $c[0] ?>" alt="<?= $c[1] ?>" class="max-h-9 max-w-full object-contain" loading="lazy" decoding="async">
                </div>
                <?php endforeach; ?>
            </div>
        </div>
        <div class="border-t px-6 lg:px-16 xl:px-24 py-4" style="border-color: var(--line);">
            <div class="flex flex-wrap items-center gap-x-6 gap-y-2">
                <span class="mono text-xs" style="color: var(--text-3); letter-spacing: 0.15em; flex-shrink:0;" data-i18n="idx-collabs">COLLABORATIONS</span>
                <?php foreach($lang === 'en'
                    ? ['Civil Guard','INCIBE','Defence Sector','Critical Infrastructure','Public Admin.']
                    : ['Guardia Civil','INCIBE','Sector Defensa','Infraestructuras Críticas','Adm. Pública']
                    as $col): ?>
                <span class="mono text-xs" style="color: var(--text-2);"><?= $col ?></span>
                <?php endforeach; ?>
            </div>
        </div>
    </div>
</section>

<!-- ══════════ DIFERENCIADOR ══════════ -->
<section style="background: var(--bg-2); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);">
    <div class="container mx-auto px-6 lg:px-12">

        <div class="py-16 lg:py-20 border-b" style="border-color: var(--line);">
            <div class="grid lg:grid-cols-2 gap-12 lg:gap-24 items-center">

                <div>
                    <h2 class="display font-black leading-tight mb-8"
                        style="font-size: clamp(2.2rem, 4.5vw, 4rem); color: var(--text);">
                        <?php if ($lang === 'en'): ?>
                        THE ONLY CONSULTANCY<br>
                        RUNNING ITS<br>
                        <span style="color: var(--accent);">OWN NETWORK.</span>
                        <?php else: ?>
                        LA ÚNICA CONSULTORA<br>
                        QUE OPERA SU<br>
                        <span style="color: var(--accent);">PROPIA RED.</span>
                        <?php endif; ?>
                    </h2>
                    <p class="text-base font-light leading-relaxed mb-6" style="color: var(--text-2);" data-i18n="diff-p1">
                        Other consultancies outsource their infrastructure to AWS, Azure or Google. We operate our own autonomous network — more control, fewer middlemen, and real accountability behind every SLA we sign.
                    </p>
                    <p class="text-sm leading-relaxed" style="color: var(--text-3);" data-i18n="diff-p2">
                        When we deploy an AI model, we do it on hardware we control. When we audit your security, we bring the perspective of someone who also runs critical infrastructure. Not theory. Real operations.
                    </p>
                </div>

                <div>
                    <div class="mono text-xs p-6 border" style="background: var(--bg); border-color: var(--line); color: var(--text-3); line-height: 1.9;">
<pre style="font-size: 0.68rem; overflow-x: auto;">
AP INTERACTIVE — RED AUTÓNOMA
────────────────────────────────────
ASN        AS215691
UBICACIÓN  Madrid · España
CAPACIDAD  +180 Gbps
PEERS      Cogent · Equinix · Sky-Link
           PletX · EGC
REGISTRO   Miembro RIPE NCC · AS215691
UPTIME     99.9% SLA Garantizado
TIER       Datacenter Tier III
CERT       ISO 27001
────────────────────────────────────
STATUS     <span style="color:#4ade80;">●</span> OPERATIONAL
</pre>
                    </div>
                    <div class="grid grid-cols-2 gap-px mt-px" style="background: var(--line);">
                        <?php foreach([['HQ / Cogent','Madrid, España'],['Sky-Link','Eygelshoven, NL'],['EGC','Mainhausen, DE'],['Equinix','Nueva York, US']] as $n): ?>
                        <div class="px-4 py-3" style="background: var(--bg);">
                            <div class="mono text-xs mb-0.5" style="color: var(--text-3);"><?= $n[0] ?></div>
                            <div class="text-sm font-medium" style="color: var(--text-2);"><?= $n[1] ?></div>
                        </div>
                        <?php endforeach; ?>
                    </div>
                </div>

            </div>
        </div>

        <div class="grid grid-cols-2 lg:grid-cols-4">
            <?php foreach($lang === 'en' ? [
                ['AS215691','Own Autonomous Network','Madrid · Spain'],
                ['+180G','Gbps Capacity','No middlemen'],
                ['99.9%','Uptime SLA','Critical infrastructure'],
                ['24/7','Operations','Continuous monitoring'],
            ] : [
                ['AS215691','Red Autónoma Propia','Madrid · España'],
                ['+180G','Gbps de Capacidad','Sin intermediarios'],
                ['99.9%','Uptime SLA','Infraestructura crítica'],
                ['24/7','Operaciones','Monitorización continua'],
            ] as $i => $s): ?>
            <div class="py-10 px-8 <?= $i > 0 ? 'border-l' : '' ?>" style="border-color: var(--line);">
                <div class="display font-black mb-1" style="font-size: 2.4rem; color: var(--accent);"><?= $s[0] ?></div>
                <div class="font-semibold text-sm mb-1" style="color: var(--text);"><?= $s[1] ?></div>
                <div class="mono text-xs" style="color: var(--text-3);"><?= $s[2] ?></div>
            </div>
            <?php endforeach; ?>
        </div>

    </div>
</section>

<!-- ══════════ PARTNERS ══════════ -->
<section class="py-14 overflow-hidden" style="background: var(--bg); border-bottom: 1px solid var(--line);">
    <div class="container mx-auto px-6 lg:px-12 mb-8">
        <div class="section-label" data-i18n="partners-label">Infrastructure Partners</div>
    </div>
    <div class="overflow-hidden">
        <div class="flex marquee-track items-center gap-16" style="width: max-content;">
            <?php foreach(array_merge(
                [['images/cogent.png','Cogent'],['images/ripe.png','RIPE NCC'],['images/equinixnew.png','Equinix'],['images/skylink.png','Skylink'],['images/pletxnew.png','PletX'],['images/egcnew.png','EGC'],['images/solusvmnew.png','SolusVM'],['images/wdshield_logo.png','WD Shield'],['images/neoprotectnew.png','NeoProtect']],
                [['images/cogent.png','Cogent'],['images/ripe.png','RIPE NCC'],['images/equinixnew.png','Equinix'],['images/skylink.png','Skylink'],['images/pletxnew.png','PletX'],['images/egcnew.png','EGC'],['images/solusvmnew.png','SolusVM'],['images/wdshield_logo.png','WD Shield'],['images/neoprotectnew.png','NeoProtect']]
            ) as $p): ?>
            <div class="flex-shrink-0 h-10 w-36 flex items-center justify-center"
                 style="filter: brightness(0.45) saturate(0); transition: filter 0.3s;"
                 onmouseover="this.style.filter='brightness(1) saturate(1)'"
                 onmouseout="this.style.filter='brightness(0.45) saturate(0)'">
                <img src="<?= $p[0] ?>" alt="<?= $p[1] ?>" class="h-8 object-contain" loading="lazy" decoding="async">
            </div>
            <?php endforeach; ?>
        </div>
    </div>
</section>

<!-- ══════════ CAPACIDADES ══════════ -->
<section class="py-24" style="background: var(--bg);" id="capacidades">
    <div class="container mx-auto px-6 lg:px-12">

        <div class="grid lg:grid-cols-2 gap-8 items-end mb-14">
            <div>
                <div class="section-label mb-5" data-i18n="caps-label">Capabilities</div>
                <h2 class="display font-black leading-tight" style="font-size: clamp(2.5rem,5vw,4.5rem); color: var(--text);">
                    <?php if ($lang === 'en'): ?>
                    THE COMPLETE STACK.<br>
                    <span style="color: var(--accent);">UNDER ONE ROOF.</span>
                    <?php else: ?>
                    EL STACK COMPLETO.<br>
                    <span style="color: var(--accent);">BAJO UN MISMO TECHO.</span>
                    <?php endif; ?>
                </h2>
            </div>
            <div class="flex items-end">
                <p class="text-base font-light leading-relaxed" style="color: var(--text-2);" data-i18n="caps-sub">
                    Strategy, development, cybersecurity, AI and own infrastructure. One point of contact, full accountability.
                </p>
            </div>
        </div>

        <?php foreach($lang === 'en' ? [
            ['01','STRATEGIC CONSULTING','Strategy · CIO as a Service · IT Governance','/managed-services'],
            ['02','DIGITAL TRANSFORMATION','Modernisation · Legacy · Change Management','/managed-services'],
            ['03','CYBERSECURITY','Audit · Pentesting · SOC · Forensics','/cybersecurity'],
            ['04','ARTIFICIAL INTELLIGENCE','Private LLM · Automation · Analytics','/ai-services'],
            ['05','OWN INFRASTRUCTURE','Cloud · Bare Metal · Colocation · AS215691','/cloud-compute'],
            ['06','CUSTOM DEVELOPMENT','Enterprise Software · APIs · Platforms','/development'],
        ] : [
            ['01','CONSULTORÍA ESTRATÉGICA','Estrategia · CIO as a Service · Gobierno TI','/managed-services'],
            ['02','TRANSFORMACIÓN DIGITAL','Modernización · Legacy · Gestión del cambio','/managed-services'],
            ['03','CIBERSEGURIDAD','Auditoría · Pentesting · SOC · Forense','/cybersecurity'],
            ['04','INTELIGENCIA ARTIFICIAL','LLM Privado · Automatización · Analítica','/ai-services'],
            ['05','INFRAESTRUCTURA PROPIA','Cloud · Bare Metal · Colocation · AS215691','/cloud-compute'],
            ['06','DESARROLLO A MEDIDA','Software Enterprise · APIs · Plataformas','/development'],
        ] as $s): ?>
        <a href="<?= $s[3] ?>" class="service-row">
            <span class="svc-num"><?= $s[0] ?></span>
            <div style="flex:1; display:flex; flex-wrap:wrap; align-items:baseline; gap:1rem; min-width:0;">
                <span class="svc-name"><?= $s[1] ?></span>
                <span class="svc-tags hidden md:inline"><?= $s[2] ?></span>
            </div>
            <span class="svc-arrow"><?= $lang === 'en' ? 'VIEW →' : 'VER →' ?></span>
        </a>
        <?php endforeach; ?>

    </div>
</section>

<!-- ══════════ TRAYECTORIA ══════════ -->
<section class="py-24 border-t border-b" style="background: var(--bg-2); border-color: var(--line);">
    <div class="container mx-auto px-6 lg:px-12">

        <div class="grid lg:grid-cols-2 gap-12 items-end mb-14">
            <div>
                <div class="section-label mb-5" data-i18n="track-label">Track Record</div>
                <h2 class="display font-black leading-tight" style="font-size: clamp(2.5rem,5vw,4.5rem); color: var(--text);">
                    <?php if ($lang === 'en'): ?>
                    WE DON'T TALK<br>
                    ABOUT WHAT WE CAN<br>
                    <span style="color: var(--accent);">DO. WE DO IT.</span>
                    <?php else: ?>
                    NO HABLAMOS<br>
                    DE LO QUE PODEMOS<br>
                    <span style="color: var(--accent);">HACER. LO HACEMOS.</span>
                    <?php endif; ?>
                </h2>
            </div>
            <div class="flex items-end">
                <p class="text-base font-light leading-relaxed" style="color: var(--text-2);" data-i18n="track-sub">
                    We've worked on projects that allowed no margin for error: national security, critical infrastructure, public administration.
                </p>
            </div>
        </div>

        <div class="grid grid-cols-2 lg:grid-cols-4 gap-px mb-14" style="background: var(--line);">
            <?php foreach($lang === 'en'
                ? [['+80','Completed projects'],['+50','Security audits'],['4','Countries of operation'],['+12','Years of experience']]
                : [['+80','Proyectos completados'],['+50','Auditorías de seguridad'],['4','Países de operación'],['+12','Años de experiencia']]
            as $t): ?>
            <div class="py-8 px-8" style="background: var(--bg-2);">
                <div class="display font-black" style="font-size: clamp(3rem,6vw,5rem); color: var(--accent); line-height:1;"><?= $t[0] ?></div>
                <div class="mono text-xs" style="color: var(--text-3); letter-spacing: 0.15em; text-transform: uppercase; margin-top: 0.4rem;"><?= $t[1] ?></div>
            </div>
            <?php endforeach; ?>
        </div>

        <div class="grid grid-cols-1 md:grid-cols-2 gap-px" style="background: var(--line);">
            <?php foreach($lang === 'en' ? [
                ['NATIONAL SECURITY','Guardia Civil','Digital capability support and cybersecurity for state security operational units.'],
                ['NATIONAL CYBERSECURITY','INCIBE','Technical partner for audit, specialised training, and incident response at national level.'],
                ['STRATEGIC SECTORS','Critical Infrastructure','Perimeter security, business continuity and resilience for critical sector operators.'],
                ['PUBLIC SECTOR','Public Administration','Digital transformation and platform modernisation for government bodies.'],
            ] : [
                ['SEGURIDAD NACIONAL','Guardia Civil','Apoyo en capacidades digitales y ciberseguridad para unidades operativas de seguridad del estado.'],
                ['CIBERSEGURIDAD NACIONAL','INCIBE','Partner técnico en auditoría, formación especializada y respuesta a incidentes a nivel nacional.'],
                ['SECTORES ESTRATÉGICOS','Infraestructuras Críticas','Seguridad perimetral, continuidad de negocio y resiliencia para operadores de sectores críticos.'],
                ['SECTOR PÚBLICO','Administración Pública','Transformación digital y modernización de plataformas en organismos de la administración.'],
            ] as $r): ?>
            <div class="p-8" style="background: var(--bg);">
                <div class="mono text-xs mb-2" style="color: var(--accent); letter-spacing: 0.15em;"><?= $r[0] ?></div>
                <div class="display font-bold text-2xl mb-3" style="color: var(--text);"><?= $r[1] ?></div>
                <p class="text-sm leading-relaxed" style="color: var(--text-2);"><?= $r[2] ?></p>
            </div>
            <?php endforeach; ?>
        </div>

    </div>
</section>

<!-- ══════════ CASOS DE ÉXITO ══════════ -->
<section class="py-24 border-t" style="background: var(--bg); border-color: var(--line);">
    <div class="container mx-auto px-6 lg:px-12">

        <div class="flex flex-wrap items-end justify-between gap-6 mb-14">
            <div>
                <div class="section-label mb-5"><?= $lang === 'es' ? 'Casos de Éxito' : 'Case Studies' ?></div>
                <h2 class="display font-black leading-tight" style="font-size: clamp(2.5rem,5vw,4.5rem); color: var(--text);">
                    <?php if ($lang === 'en'): ?>
                    REAL RESULTS.<br>
                    <span style="color: var(--accent);">REAL PLATFORMS.</span>
                    <?php else: ?>
                    RESULTADOS REALES.<br>
                    <span style="color: var(--accent);">PLATAFORMAS REALES.</span>
                    <?php endif; ?>
                </h2>
            </div>
            <a href="<?= ap_url('/casos-de-exito') ?>"
               style="display:inline-flex; align-items:center; gap:0.5rem; padding:0.85rem 1.75rem; background:transparent; color:var(--text-2); border:1px solid var(--line); font-family:'Barlow Condensed',sans-serif; font-size:0.9rem; letter-spacing:0.08em; text-transform:uppercase; text-decoration:none; transition:border-color 0.2s, color 0.2s; flex-shrink:0;"
               onmouseover="this.style.borderColor='var(--accent-border)';this.style.color='var(--text)'"
               onmouseout="this.style.borderColor='var(--line)';this.style.color='var(--text-2)'">
                <?= $lang === 'es' ? 'Ver todos los casos →' : 'View all cases →' ?>
            </a>
        </div>

        <?php
        $casesData = require __DIR__ . '/casos-de-exito/_data.php';
        $featured  = array_values(array_filter($casesData, fn($c) => !empty($c['featured'])));
        foreach ($featured as $case):
            $caseTitle   = $case['title'][$lang]   ?? $case['title']['es'];
            $caseExcerpt = $case['excerpt'][$lang]  ?? $case['excerpt']['es'];
            $caseSector  = $case['sector'][$lang]   ?? $case['sector']['es'];
        ?>
        <a href="/casos-de-exito/<?= htmlspecialchars($case['slug']) ?>"
           class="block group" style="text-decoration:none;">
            <div class="grid lg:grid-cols-2 gap-px" style="background: var(--line);">

                <!-- Screenshot -->
                <div style="background:var(--bg-2); overflow:hidden; position:relative;"
                     class="order-1">
                    <div style="aspect-ratio:16/10; overflow:hidden;">
                        <img src="<?= htmlspecialchars($case['image']) ?>"
                             alt="<?= htmlspecialchars($caseTitle) ?>"
                             style="width:100%; height:100%; object-fit:cover; transition:transform 0.5s;"
                             onmouseover="this.style.transform='scale(1.04)'"
                             onmouseout="this.style.transform='scale(1)'"
                             loading="lazy" decoding="async">
                    </div>
                    <!-- Logo badge -->
                    <div style="position:absolute; top:1.25rem; left:1.25rem; background:rgba(13,17,33,0.88); backdrop-filter:blur(8px); padding:0.55rem 1rem; border:1px solid var(--line);">
                        <img src="<?= htmlspecialchars($case['logo']) ?>"
                             alt="<?= htmlspecialchars($case['client']) ?>"
                             style="height:1.75rem; width:auto; object-fit:contain; filter:brightness(0) invert(1);"
                             loading="lazy" decoding="async">
                    </div>
                </div>

                <!-- Content -->
                <div class="p-10 flex flex-col justify-between order-2" style="background:var(--bg-2);">
                    <div>
                        <div class="mono text-xs mb-4" style="color:var(--accent); letter-spacing:0.15em;">
                            <?= htmlspecialchars($caseSector) ?> · <?= htmlspecialchars($case['year']) ?>
                        </div>
                        <div class="display font-black mb-4"
                             style="font-size:clamp(1.8rem,3vw,2.8rem); color:var(--text); line-height:1.1;">
                            <?= htmlspecialchars($caseTitle) ?>
                        </div>
                        <p class="text-base font-light leading-relaxed mb-6" style="color:var(--text-2);">
                            <?= htmlspecialchars($caseExcerpt) ?>
                        </p>
                        <div class="flex flex-wrap gap-2">
                            <?php foreach ($case['tags'] as $tag): ?>
                            <span class="mono text-xs px-3 py-1"
                                  style="background:var(--accent-dim); color:var(--accent); border:1px solid var(--accent-border);">
                                <?= htmlspecialchars($tag) ?>
                            </span>
                            <?php endforeach; ?>
                        </div>
                    </div>
                    <div class="mt-8 flex items-center gap-2 transition-opacity group-hover:opacity-70" style="color:var(--accent);">
                        <span class="mono text-xs font-semibold" style="letter-spacing:0.12em;">
                            <?= $lang === 'es' ? 'VER CASO COMPLETO →' : 'VIEW FULL CASE →' ?>
                        </span>
                    </div>
                </div>

            </div>
        </a>
        <?php endforeach; ?>

    </div>
</section>

<!-- ══════════ CONTACTO ══════════ -->
<section class="py-24" style="background: var(--bg);" id="contacto">
    <div class="container mx-auto px-6 lg:px-12">
        <div class="grid lg:grid-cols-2 gap-16 lg:gap-24">

            <div>
                <div class="section-label mb-8" data-i18n="contact-label">Direct Contact</div>
                <h2 class="display font-black leading-tight mb-8"
                    style="font-size: clamp(2.5rem,4.5vw,4rem); color: var(--text);">
                    <?php if ($lang === 'en'): ?>
                    HAVE A CHALLENGE<br>TO SOLVE?
                    <?php else: ?>
                    ¿TIENES UN RETO<br>QUE RESOLVER?
                    <?php endif; ?>
                </h2>
                <p class="text-base font-light leading-relaxed mb-10" style="color: var(--text-2);" data-i18n="contact-sub">
                    No empty sales pitches here. If you have a real project, a problem others couldn't solve, or need a trusted technology partner — write to us. We respond in under 24 hours.
                </p>
                <div style="height: 1px; background: linear-gradient(90deg, var(--accent-border), transparent); margin-bottom: 2.5rem;"></div>
                <div class="space-y-5">
                    <div class="flex items-start gap-4">
                        <div class="mono text-xs mt-0.5" style="color: var(--text-3); width: 3.5rem; flex-shrink: 0;">EMAIL</div>
                        <a href="mailto:contacto@apinteractive.es" class="font-medium hover:opacity-75 transition-opacity" style="color: var(--text);">contacto@apinteractive.es</a>
                    </div>
                    <div class="flex items-start gap-4">
                        <div class="mono text-xs mt-0.5" style="color: var(--text-3); width: 3.5rem; flex-shrink: 0;">TEL</div>
                        <a href="tel:+34900433337" class="font-medium hover:opacity-75 transition-opacity" style="color: var(--text);">+34 900 433 337</a>
                    </div>
                    <div class="flex items-start gap-4">
                        <div class="mono text-xs mt-0.5" style="color: var(--text-3); width: 3.5rem; flex-shrink: 0;">HQ</div>
                        <span style="color: var(--text-2);">C/ Esteban Salazar Chapela 115<br>29004 Málaga, España</span>
                    </div>
                    <div class="flex items-start gap-4">
                        <div class="mono text-xs mt-0.5" style="color: var(--text-3); width: 3.5rem; flex-shrink: 0;">HRS</div>
                        <div>
                            <span style="color: var(--text-2);" data-i18n="contact-hours"><?= $lang === 'en' ? 'Mon–Fri 9:00–21:00' : 'Lun–Vie 9:00–21:00' ?></span><br>
                            <span class="mono text-xs" style="color: var(--text-3);" data-i18n="contact-support">24/7 technical support for active clients</span>
                        </div>
                    </div>
                </div>
            </div>

            <div>
                <?php
                if(!empty($_POST['contact'])){
                    $name    = htmlspecialchars($_POST['fullName']);
                    $email   = htmlspecialchars($_POST['email']);
                    $subject = htmlspecialchars($_POST['subject']);
                    $message = htmlspecialchars($_POST['message']);
                    $privacy = !empty($_POST['privacy']);
                    $marketing = !empty($_POST['marketing']);
                    if(empty($name) || empty($email) || empty($message)) {
                        echo '<div class="p-4 border mb-6" style="background:rgba(239,68,68,0.1);border-color:rgba(239,68,68,0.3);"><p class="text-sm" style="color:#f87171;">' . ($lang === 'en' ? 'Please fill in all required fields.' : 'Por favor rellena todos los campos obligatorios.') . '</p></div>';
                    } elseif(!$privacy) {
                        echo '<div class="p-4 border mb-6" style="background:rgba(239,68,68,0.1);border-color:rgba(239,68,68,0.3);"><p class="text-sm" style="color:#f87171;">' . ($lang === 'en' ? 'You must accept the privacy policy, legal notice and terms of service to continue.' : 'Debes aceptar la política de privacidad, el aviso legal y los términos para continuar.') . '</p></div>';
                    } else {
                        $text  = "📬 *AP Formulario Contacto*\n\n";
                        $text .= "*Name:* $name\n*Email:* $email\n*Subject:* $subject\n*Message:* $message\n";
                        $text .= "*Privacy:* ✅ aceptada\n";
                        $text .= "*Marketing:* " . ($marketing ? '✅ acepta comunicaciones comerciales' : '❌ no acepta') . "\n";
                        $botToken = '6924322770:AAFi_Z-cHX3WQFSqTFxlRgI0qmUEk2SCVEY';
                        $chatId   = '-4727746429';
                        $payload  = http_build_query(['chat_id'=>$chatId,'text'=>$text,'parse_mode'=>'Markdown']);
                        $url = "https://api.telegram.org/bot$botToken/sendMessage";
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, $url);
                        curl_setopt($ch, CURLOPT_POST, 1);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        curl_exec($ch); curl_close($ch);
                        echo '<div class="p-4 border mb-6" style="background:rgba(70,134,221,0.08);border-color:rgba(70,134,221,0.3);"><p class="text-sm" style="color:var(--accent);">' . ($lang === 'en' ? 'Message sent. We will contact you shortly.' : 'Mensaje enviado. Te contactaremos en breve.') . '</p></div>';
                    }
                }
                ?>
                <form method="post" class="space-y-5">
                    <div class="grid md:grid-cols-2 gap-5">
                        <div>
                            <label class="form-lbl block mb-2" data-i18n="form-name"><?= $lang === 'en' ? 'Name *' : 'Nombre *' ?></label>
                            <input type="text" name="fullName" required placeholder="<?= $lang === 'en' ? 'John Smith' : 'Juan García' ?>" class="form-field w-full px-4 py-3">
                        </div>
                        <div>
                            <label class="form-lbl block mb-2">Email *</label>
                            <input type="email" name="email" required placeholder="<?= $lang === 'en' ? 'john@company.com' : 'juan@empresa.es' ?>" class="form-field w-full px-4 py-3">
                        </div>
                    </div>
                    <div>
                        <label class="form-lbl block mb-2" data-i18n="form-area"><?= $lang === 'en' ? 'Area of Interest' : 'Área de interés' ?></label>
                        <select name="subject" id="contact-subject" aria-label="<?= $lang === 'en' ? 'Area of interest' : 'Área de interés' ?>" class="form-field w-full px-4 py-3">
                            <?php if ($lang === 'en'): ?>
                            <option value="" style="background:#131a2a">Select an option</option>
                            <option value="consultoria" style="background:#131a2a">Strategic consulting</option>
                            <option value="transformacion" style="background:#131a2a">Digital transformation</option>
                            <option value="ciberseguridad" style="background:#131a2a">Cybersecurity</option>
                            <option value="ia" style="background:#131a2a">AI &amp; Data</option>
                            <option value="infraestructura" style="background:#131a2a">Infrastructure</option>
                            <option value="desarrollo" style="background:#131a2a">Custom development</option>
                            <option value="otro" style="background:#131a2a">Other</option>
                            <?php else: ?>
                            <option value="" style="background:#131a2a">Selecciona una opción</option>
                            <option value="consultoria" style="background:#131a2a">Consultoría estratégica</option>
                            <option value="transformacion" style="background:#131a2a">Transformación digital</option>
                            <option value="ciberseguridad" style="background:#131a2a">Ciberseguridad</option>
                            <option value="ia" style="background:#131a2a">IA &amp; Datos</option>
                            <option value="infraestructura" style="background:#131a2a">Infraestructura</option>
                            <option value="desarrollo" style="background:#131a2a">Desarrollo a medida</option>
                            <option value="otro" style="background:#131a2a">Otro</option>
                            <?php endif; ?>
                        </select>
                    </div>
                    <div>
                        <label class="form-lbl block mb-2" data-i18n="form-msg"><?= $lang === 'en' ? 'Message *' : 'Mensaje *' ?></label>
                        <textarea name="message" rows="6" required placeholder="<?= $lang === 'en' ? 'Tell us about the challenge or project you have in mind...' : 'Cuéntanos el reto o proyecto que tienes en mente...' ?>" class="form-field w-full px-4 py-3 resize-none"></textarea>
                    </div>
                    <div class="space-y-3 pt-1">
                        <label class="flex items-start gap-3 cursor-pointer group">
                            <input type="checkbox" name="privacy" value="1" required id="contact-privacy" class="form-check mt-0.5 shrink-0">
                            <span class="text-xs leading-relaxed" style="color: var(--text-2);">
                                <?php if ($lang === 'en'): ?>
                                I have read and accept the <a href="<?= ap_url('/privacy-policy') ?>" target="_blank" rel="noopener" class="underline hover:opacity-80" style="color: var(--accent);">privacy policy</a>, the <a href="<?= ap_url('/legal-notice') ?>" target="_blank" rel="noopener" class="underline hover:opacity-80" style="color: var(--accent);">legal notice</a> and the <a href="<?= ap_url('/terms-of-service') ?>" target="_blank" rel="noopener" class="underline hover:opacity-80" style="color: var(--accent);">terms of service</a>. *
                                <?php else: ?>
                                He leído y acepto la <a href="<?= ap_url('/privacy-policy') ?>" target="_blank" rel="noopener" class="underline hover:opacity-80" style="color: var(--accent);">política de privacidad</a>, el <a href="<?= ap_url('/legal-notice') ?>" target="_blank" rel="noopener" class="underline hover:opacity-80" style="color: var(--accent);">aviso legal</a> y los <a href="<?= ap_url('/terms-of-service') ?>" target="_blank" rel="noopener" class="underline hover:opacity-80" style="color: var(--accent);">términos del servicio</a>. *
                                <?php endif; ?>
                            </span>
                        </label>
                        <label class="flex items-start gap-3 cursor-pointer group">
                            <input type="checkbox" name="marketing" value="1" class="form-check mt-0.5 shrink-0">
                            <span class="text-xs leading-relaxed" style="color: var(--text-2);">
                                <?= $lang === 'en'
                                    ? 'I agree to receive commercial communications and news about AP Interactive services. (optional)'
                                    : 'Acepto recibir comunicaciones comerciales y novedades sobre los servicios de AP Interactive. (opcional)' ?>
                            </span>
                        </label>
                    </div>
                    <button type="submit" name="contact" value="1" id="contact-submit" disabled
                            class="btn-primary w-full py-4 inline-flex items-center justify-center gap-3">
                        <span data-i18n="form-submit"><?= $lang === 'en' ? 'SEND MESSAGE' : 'ENVIAR MENSAJE' ?></span>
                        <svg width="13" height="13" viewBox="0 0 13 13" fill="none"><path d="M1 6.5h11M8 2l4.5 4.5L8 11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
                    </button>
                </form>
                <script>
                (function(){
                    var cb = document.getElementById('contact-privacy');
                    var btn = document.getElementById('contact-submit');
                    if (!cb || !btn) return;
                    var sync = function(){ btn.disabled = !cb.checked; };
                    cb.addEventListener('change', sync);
                    sync();
                })();
                </script>
            </div>

        </div>
    </div>
</section>


<script type="module">
import createGlobe from 'https://esm.sh/cobe@0.6.1';

const canvas = document.getElementById('globe');
if (canvas) {
    let phi = 4;

    function setup() {
        const rect = canvas.getBoundingClientRect();
        const dpr  = Math.min(window.devicePixelRatio, 2);
        canvas.width  = Math.round(rect.width  * dpr);
        canvas.height = Math.round(rect.height * dpr);

        return createGlobe(canvas, {
            devicePixelRatio: dpr,
            width:  canvas.width,
            height: canvas.height,
            phi: 4,
            theta: 0.3,
            dark: 1,
            diffuse: 1.2,
            scale: 1,
            mapSamples: 16000,
            mapBrightness: 6,
            baseColor:   [0.3, 0.3, 0.3],
            markerColor: [0.1, 0.9, 0.5],
            glowColor:   [0.27, 0.52, 0.87],
            offset: [0, 0],
            markers: [
                { location: [40.4,  -3.7], size: 0.09  },
                { location: [52.1,   5.3], size: 0.08  },
                { location: [51.2,  10.4], size: 0.08  },
                { location: [40.7, -74.0], size: 0.09  },
            ],
            onRender: (state) => {
                state.phi = phi;
                phi += 0.0015;
                const t = Date.now() * 0.002;
                state.markers = [
                    { location: [40.4,  -3.7], size: 0.06 + Math.abs(Math.sin(t))        * 0.06 },
                    { location: [52.1,   5.3], size: 0.06 + Math.abs(Math.sin(t + 1.2))  * 0.05 },
                    { location: [51.2,  10.4], size: 0.06 + Math.abs(Math.sin(t + 2.1))  * 0.05 },
                    { location: [40.7, -74.0], size: 0.06 + Math.abs(Math.sin(t + 3.0))  * 0.06 },
                ];
            },
        });
    }

    // Efficiency only (no visual change): init on idle, pause when off-screen, debounce resize.
    let globe = null, resizeTimer;
    const startGlobe = () => {
        if (globe) return;
        ('requestIdleCallback' in window)
            ? requestIdleCallback(() => { if (!globe) globe = setup(); }, { timeout: 2500 })
            : setTimeout(() => { if (!globe) globe = setup(); }, 1200);
    };
    const io = new IntersectionObserver((entries) => {
        if (entries[0].isIntersecting) { startGlobe(); }
        else if (globe) { globe.destroy(); globe = null; }
    }, { threshold: 0 });
    io.observe(canvas);
    window.addEventListener('resize', () => {
        clearTimeout(resizeTimer);
        resizeTimer = setTimeout(() => { if (globe) { globe.destroy(); globe = setup(); } }, 200);
    });
}
</script>


<?php include('includes/footer.php'); ?>
