// dr-shell.jsx — BrandMark, Nav, Hero, Footer (DATOS Y REDES)

// ------------------------------------------------------------------
// BrandMark — node glyph + wordmark
// ------------------------------------------------------------------
function BrandMark({ size = 'md' }) {
  const sizes = {
    sm: { glyph: 30, name: 14, sub: 9, gap: 11 },
    md: { glyph: 38, name: 16, sub: 10, gap: 13 },
    lg: { glyph: 54, name: 22, sub: 13, gap: 16 },
  };
  const s = sizes[size];
  // Node glyph: three connected dots (network)
  const glyph = (
    <svg width={s.glyph} height={s.glyph} viewBox="0 0 40 40" fill="none">
      <rect width="40" height="40" rx="6" fill="var(--panel)" stroke="var(--line)" />
      <line x1="12" y1="13" x2="27" y2="20" stroke="var(--signal)" strokeWidth="1.2" opacity="0.7" strokeDasharray="17" strokeDashoffset="17" style={{animation:'dr-draw-line 0.7s ease forwards 0.1s'}} />
      <line x1="27" y1="20" x2="14" y2="29" stroke="var(--signal)" strokeWidth="1.2" opacity="0.7" strokeDasharray="16" strokeDashoffset="16" style={{animation:'dr-draw-line 0.7s ease forwards 0.4s'}} />
      <line x1="12" y1="13" x2="14" y2="29" stroke="var(--signal)" strokeWidth="1.2" opacity="0.35" strokeDasharray="17" strokeDashoffset="17" style={{animation:'dr-draw-line 0.7s ease forwards 0.7s'}} />
      <circle cx="12" cy="13" r="3" fill="var(--signal)" />
      <circle cx="27" cy="20" r="3.6" fill="var(--pulse)" />
      <circle cx="14" cy="29" r="2.6" fill="var(--signal)" />
    </svg>
  );
  return (
    <div style={{ display: 'flex', alignItems: 'center', gap: s.gap }}>
      {glyph}
      <div style={{ lineHeight: 1.05 }}>
        <div style={{
          fontFamily: "'Space Grotesk', sans-serif", fontWeight: 600,
          fontSize: s.name, letterSpacing: '0.02em', color: 'var(--text)',
        }}>
          DATOS <span style={{ color: 'var(--signal)' }}>&amp;</span> REDES
        </div>
        <div style={{
          fontFamily: "'JetBrains Mono', monospace", fontSize: s.sub,
          color: 'var(--muted)', marginTop: 3, letterSpacing: '0.16em',
        }}>
          SISTEMA ACOSTA
        </div>
      </div>
    </div>
  );
}

// ------------------------------------------------------------------
// Nav — with mobile hamburger
// ------------------------------------------------------------------
function Nav() {
  const [scrolled, setScrolled] = React.useState(false);
  const [menuOpen, setMenuOpen] = React.useState(false);

  React.useEffect(() => {
    const fn = () => setScrolled(window.scrollY > 20);
    fn();
    window.addEventListener('scroll', fn, { passive: true });
    return () => window.removeEventListener('scroll', fn);
  }, []);

  React.useEffect(() => {
    document.body.style.overflow = menuOpen ? 'hidden' : '';
    return () => { document.body.style.overflow = ''; };
  }, [menuOpen]);

  const close = () => setMenuOpen(false);

  const NAV_LINKS = [
    { href: '#capacidades', label: 'Capacidades' },
    { href: '#stack',       label: 'Stack' },
    { href: '#proceso',     label: 'Proceso' },
    { href: '#seguridad',   label: 'Seguridad' },
    { href: '#casos',       label: 'Casos' },
    { href: '#faq',         label: 'FAQ' },
    { href: '#contacto',    label: 'Contacto' },
  ];

  const navWrap = {
    position: 'sticky', top: 0, zIndex: 50,
    background: scrolled ? 'rgba(8,12,17,0.88)' : 'transparent',
    backdropFilter: scrolled ? 'blur(16px) saturate(160%)' : 'none',
    WebkitBackdropFilter: scrolled ? 'blur(16px) saturate(160%)' : 'none',
    borderBottom: scrolled ? '1px solid var(--line)' : '1px solid transparent',
    transition: 'all 0.3s ease',
  };
  const inner = { display: 'grid', gridTemplateColumns: '1fr auto 1fr', alignItems: 'center', padding: '6px 0' };
  const link  = { color: 'var(--muted)', cursor: 'pointer', transition: 'color 0.2s', fontSize: 14, fontFamily: "'IBM Plex Sans', sans-serif" };

  const bar = (i) => {
    const base = { display: 'block', width: 22, height: 1.5, background: 'var(--text)', borderRadius: 2, transition: 'transform 0.3s ease, opacity 0.3s ease' };
    if (menuOpen) {
      if (i === 0) return { ...base, transform: 'translateY(7px) rotate(45deg)' };
      if (i === 1) return { ...base, opacity: 0, transform: 'scaleX(0)' };
      if (i === 2) return { ...base, transform: 'translateY(-7px) rotate(-45deg)' };
    }
    return base;
  };

  return (
    <>
      <nav style={navWrap}>
        <div className="container" style={inner}>
          <div className="dr-nav-left" style={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-end', gap: 24, paddingRight: 28 }}>
            {NAV_LINKS.slice(0, 4).map(l => <a key={l.href} href={l.href} style={link} className="dr-navlink">{l.label}</a>)}
          </div>
          <a href="#top" onClick={close} style={{ display: 'flex', alignItems: 'center', justifySelf: 'center', gridColumn: '2', transform: 'scale(1.1)', transformOrigin: 'center' }}>
            <img src="logo-acosta.png" alt="Datos y Redes de Sistema Acosta" height="84" style={{ display: 'block', objectFit: 'contain', maxWidth: 360 }} />
          </a>
          <div className="dr-nav-right" style={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start', gap: 24, paddingLeft: 28, gridColumn: '3' }}>
            <div style={{ display: 'flex', alignItems: 'center', gap: 24 }} className="dr-nav-links">
              {NAV_LINKS.slice(4).map(l => <a key={l.href} href={l.href} style={link} className="dr-navlink">{l.label}</a>)}
            </div>
            <a href="#diagnostico" className="dr-btn dr-btn-primary dr-nav-cta" style={{ marginLeft: 18, padding: '10px 16px', fontSize: 13 }}>
              <span className="dr-nav-cta-label">Solicitar diagnóstico</span><span className="dr-arrow">→</span>
            </a>
            <button
              className="dr-burger" onClick={() => setMenuOpen(o => !o)} aria-label="Menú"
              style={{ display: 'none', width: 40, height: 40, background: 'transparent', border: '1px solid var(--line)', borderRadius: 8, cursor: 'pointer', padding: 0 }}
            >
              <span style={bar(0)}></span>
              <span style={bar(1)}></span>
              <span style={bar(2)}></span>
            </button>
          </div>
        </div>
      </nav>

      {/* Mobile menu overlay */}
      <div style={{
        position: 'fixed', inset: 0, zIndex: 49,
        background: 'rgba(8,12,17,0.97)',
        backdropFilter: 'blur(24px)', WebkitBackdropFilter: 'blur(24px)',
        display: 'flex', flexDirection: 'column', padding: '88px 32px 48px',
        transform: menuOpen ? 'translateX(0)' : 'translateX(100%)',
        transition: 'transform 0.4s cubic-bezier(0.22,0.61,0.36,1)',
        overflowY: 'auto',
      }}>
        <div style={{ display: 'flex', flexDirection: 'column' }}>
          {NAV_LINKS.map((l, i) => (
            <a key={l.href} href={l.href} onClick={close} className="dr-mobile-link"
              style={{
                fontFamily: "'Space Grotesk', sans-serif",
                fontSize: 'clamp(26px,7vw,40px)', fontWeight: 500,
                color: 'var(--text)', letterSpacing: '-0.02em',
                padding: '15px 0', borderBottom: '1px solid var(--line)',
                transform: menuOpen ? 'translateX(0)' : 'translateX(28px)',
                opacity: menuOpen ? 1 : 0,
                transition: `transform 0.45s cubic-bezier(0.22,0.61,0.36,1) ${i * 0.06}s, opacity 0.4s ease ${i * 0.06}s`,
              }}>
              {l.label}
            </a>
          ))}
        </div>
        <a href="#diagnostico" onClick={close} className="dr-btn dr-btn-primary"
          style={{ marginTop: 36, alignSelf: 'flex-start', transform: menuOpen ? 'translateX(0)' : 'translateX(28px)', opacity: menuOpen ? 1 : 0, transition: `transform 0.45s cubic-bezier(0.22,0.61,0.36,1) ${NAV_LINKS.length * 0.06}s, opacity 0.4s ease ${NAV_LINKS.length * 0.06}s` }}>
          Solicitar diagnóstico<span className="dr-arrow">→</span>
        </a>
        <div style={{ marginTop: 'auto', paddingTop: 40, fontFamily: "'JetBrains Mono', monospace", fontSize: 11, color: 'var(--muted)', letterSpacing: '0.07em', lineHeight: 2 }}>
          datosyredesacosta@outlook.com<br />Hamburgo 182, Col. Juárez, CDMX
        </div>
      </div>

      <style>{`
        .dr-navlink:hover { color: var(--text) !important; }
        .dr-mobile-link:hover { color: var(--signal) !important; }
        .dr-nav-cta { overflow: hidden; }
        .dr-nav-cta-label { display: inline-block; transition: transform 0.22s cubic-bezier(0.22,0.61,0.36,1); }
        .dr-nav-cta:hover .dr-nav-cta-label { transform: translateX(4px); }
        .dr-nav-cta:hover .dr-arrow { transform: translateX(8px); }
        .dr-burger { flex-direction: column; justify-content: center; align-items: center; gap: 5px; }
        @media (max-width: 1120px) {
          .dr-nav-left, .dr-nav-links { display: none !important; }
          .dr-nav-cta   { display: none !important; }
          .dr-burger    { display: flex !important; }
        }
      `}</style>
    </>
  );
}

// ------------------------------------------------------------------
// HeroCommitmentCard — lo que incluye cada proyecto (sin datos ficticios)
// ------------------------------------------------------------------
function HeroOpsPanel() {
  const checks = [
    { t: 'Diagnóstico técnico inicial',     d: 'Sin costo · revisamos su operación antes de proponer nada' },
    { t: 'Arquitectura documentada',        d: 'Alcance, tecnología e integraciones definidos y aprobados' },
    { t: 'Desarrollo por fases',            d: 'Entregas iterativas revisadas con el cliente antes de avanzar' },
    { t: 'Pruebas antes de producción',     d: 'Staging y QA antes de cualquier despliegue en vivo' },
    { t: 'SLA por escrito',                 d: 'Tiempos de respuesta y resolución comprometidos en contrato' },
    { t: 'Código entregado y documentado',  d: 'Es suyo — sin dependencia de nuestra firma para operar' },
  ];
  return (
    <div style={{ background:'var(--panel)', border:'1px solid var(--line)', borderRadius:10, overflow:'hidden', boxShadow:'0 30px 80px -40px rgba(0,0,0,0.8)' }}>
      <div style={{ display:'flex', alignItems:'center', justifyContent:'space-between', padding:'13px 18px', borderBottom:'1px solid var(--line)', background:'var(--void-2)' }}>
        <div style={{ display:'flex', gap:7 }}>
          {['#FF5F57','#FEBC2E','#28C840'].map(c => <span key={c} style={{ width:10, height:10, borderRadius:'50%', background:c, display:'inline-block' }}></span>)}
        </div>
        <span style={{ fontFamily:"'JetBrains Mono', monospace", fontSize:11, color:'var(--muted)', letterSpacing:'0.1em' }}>compromiso técnico</span>
        <span style={{ fontFamily:"'JetBrains Mono', monospace", fontSize:9, color:'#2A9D8F', border:'1px solid rgba(42,157,143,0.55)', background:'rgba(42,157,143,0.08)', padding:'3px 8px', borderRadius:3, letterSpacing:'0.08em' }}>6 PUNTOS</span>
      </div>
      <div style={{ padding:'20px 22px' }}>
        <div style={{ fontFamily:"'Space Grotesk', sans-serif", fontWeight:500, fontSize:15, color:'var(--text)', marginBottom:14, letterSpacing:'-0.01em' }}>
          Lo que incluye cada proyecto
        </div>
        {checks.map((c, i) => (
          <div key={i} style={{ display:'flex', gap:12, padding:'10px 0', borderBottom: i < checks.length-1 ? '1px solid var(--line)' : 'none' }}>
            <span style={{ color:'var(--signal)', fontFamily:"'JetBrains Mono', monospace", fontSize:11, flexShrink:0, marginTop:2 }}>✓</span>
            <div>
              <div style={{ fontFamily:"'Space Grotesk', sans-serif", fontSize:13, color:'var(--text)', fontWeight:500, marginBottom:2 }}>{c.t}</div>
              <div style={{ fontFamily:"'IBM Plex Sans', sans-serif", fontSize:12, color:'var(--muted)', lineHeight:1.45 }}>{c.d}</div>
            </div>
          </div>
        ))}
        <div style={{ marginTop:14, paddingTop:14, borderTop:'1px solid var(--line)', fontFamily:"'JetBrains Mono', monospace", fontSize:10, color:'rgba(133,147,163,0.55)', letterSpacing:'0.06em' }}>
          Sin letra chica · Sin dependencia de un proveedor
        </div>
      </div>
    </div>
  );
}

// ------------------------------------------------------------------
// Hero
// ------------------------------------------------------------------
function Hero() {
  const wrap = { position: 'relative', paddingTop: 72, paddingBottom: 90, overflow: 'hidden' };
  const grid = { display: 'grid', gridTemplateColumns: '1.25fr 0.95fr', gap: 56, alignItems: 'center' };
  const eyebrowRow = { display: 'flex', alignItems: 'baseline', gap: 14, marginBottom: 40 };
  const rule = { flex: 1, height: 1, background: 'var(--line)', maxWidth: 90 };
  const h1 = {
    fontFamily: "'Space Grotesk', sans-serif", fontWeight: 500,
    fontSize: 'clamp(44px, 6.6vw, 92px)', lineHeight: 1.0,
    letterSpacing: '-0.03em', color: 'var(--text)', maxWidth: '15ch',
  };
  const lede = { fontSize: 18, lineHeight: 1.6, color: 'rgba(226,232,240,0.75)', maxWidth: 520, marginTop: 30, textShadow: '0 1px 6px rgba(0,0,0,0.7)' };
  const ctaRow = { display: 'flex', gap: 14, marginTop: 36, flexWrap: 'wrap' };


  return (
    <section id="top" style={wrap}>
      <div style={{ position: 'absolute', inset: 0, overflow: 'hidden' }}>
        <img src="hero-bg.jpg" alt="" aria-hidden="true" loading="eager"
          style={{ width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center',
            filter: 'grayscale(100%) brightness(0.65) contrast(1.1)', opacity: 0.55 }} />
      </div>
      <div style={{ position: 'absolute', inset: 0, opacity: 0.85 }}>
        <window.NetworkCanvas density={1} opacity={1} />
      </div>
      <div style={{
        position: 'absolute', inset: 0,
        background: 'linear-gradient(to right, rgba(8,12,17,0.82) 0%, rgba(8,12,17,0.58) 48%, rgba(8,12,17,0.18) 100%)',
        pointerEvents: 'none',
      }}></div>
      <div style={{
        position: 'absolute', inset: 0,
        background: 'radial-gradient(ellipse 70% 60% at 30% 30%, rgba(52,224,196,0.05), transparent 60%)',
        pointerEvents: 'none',
      }}></div>

      <div className="container" style={{ position: 'relative' }}>
        <div style={grid} className="dr-hero-grid">
          <div data-reveal>
            <div style={eyebrowRow}>
              <span className="dr-eyebrow">CDMX · Col. Juárez</span>
              <span style={rule}></span>
              <span className="dr-eyebrow" style={{ color: 'var(--muted)' }}>EST. 2023</span>
            </div>
            <h1 style={h1} data-word-reveal>
              Infraestructura<br />
              que <span style={{ color: 'var(--signal)' }}>conecta</span><br />
              su operación.
            </h1>
            <p style={lede}>
              Desarrollo, implementación y administración de sistemas en red —
              del diseño al despliegue, con monitoreo continuo. Software, redes y
              equipo de cómputo bajo una sola firma técnica.
            </p>
            <div style={ctaRow}>
              <a href="#diagnostico" className="dr-btn dr-btn-primary">
                Solicitar diagnóstico técnico
                <span className="dr-arrow">→</span>
              </a>
              <a href="#capacidades" className="dr-btn dr-btn-ghost" style={{ background: 'rgba(8,12,17,0.55)', borderColor: 'rgba(226,232,240,0.3)', color: 'var(--text)' }}>Ver capacidades</a>
            </div>
          </div>

          <div data-reveal><HeroOpsPanel /></div>
        </div>
      </div>
      <style>{`
        @media (max-width: 920px) {
          .dr-hero-grid { grid-template-columns: 1fr !important; gap: 40px !important; }
        }
      `}</style>
    </section>
  );
}

// ------------------------------------------------------------------
// Preloader — 1.8s branded loading screen
// ------------------------------------------------------------------
function Preloader() {
  const [phase, setPhase] = React.useState('in');
  React.useEffect(() => {
    const t1 = setTimeout(() => setPhase('out'),  1600);
    const t2 = setTimeout(() => setPhase('done'), 2100);
    return () => { clearTimeout(t1); clearTimeout(t2); };
  }, []);
  if (phase === 'done') return null;
  return (
    <div style={{
      position: 'fixed', inset: 0, zIndex: 8000,
      background: 'var(--void)',
      display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: 0,
      opacity: phase === 'out' ? 0 : 1, transition: 'opacity 0.5s ease',
      pointerEvents: phase === 'out' ? 'none' : 'all',
    }}>
      <img
        src="logo-acosta.png"
        alt="Datos y Redes de Sistema Acosta"
        style={{ height: 220, objectFit: 'contain', maxWidth: 550, opacity: 0, animation: 'dr-logo-in 0.7s ease forwards 0.25s' }}
      />
      <div style={{ position: 'absolute', bottom: 0, left: 0, height: 1, background: 'var(--signal)', animation: 'dr-load-bar 1.6s ease-out forwards' }}></div>
    </div>
  );
}

// ------------------------------------------------------------------
// BackToTop — appears after 600px scroll
// ------------------------------------------------------------------
function BackToTop() {
  const [vis, setVis] = React.useState(false);
  React.useEffect(() => {
    const fn = () => setVis(window.scrollY > 600);
    window.addEventListener('scroll', fn, { passive: true });
    return () => window.removeEventListener('scroll', fn);
  }, []);
  return (
    <button
      onClick={() => window.scrollTo({ top: 0, behavior: 'smooth' })}
      aria-label="Volver al inicio"
      className="dr-totop"
      style={{
        position: 'fixed', bottom: 86, right: 28, width: 46, height: 46, borderRadius: '50%',
        background: 'var(--panel)', border: '1px solid var(--line)',
        color: 'var(--muted)', cursor: 'pointer',
        display: 'flex', alignItems: 'center', justifyContent: 'center',
        opacity: vis ? 1 : 0, transform: vis ? 'translateY(0)' : 'translateY(8px)',
        transition: 'opacity 0.3s, transform 0.3s, color 0.2s, border-color 0.2s',
        pointerEvents: vis ? 'auto' : 'none', zIndex: 200,
      }}
    >
      <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round">
        <path d="M12 19V5M5 12l7-7 7 7" />
      </svg>
    </button>
  );
}

// ------------------------------------------------------------------
// WhatsApp — floating CTA button
// ------------------------------------------------------------------
function WhatsApp() {
  // Actualizar con número real: https://wa.me/521XXXXXXXXXX
  const url = 'https://wa.me/5215599999999?text=' + encodeURIComponent('Hola, me interesa el diagnóstico técnico gratuito de Datos y Redes de Sistema Acosta.');
  return (
    <a
      href={url} target="_blank" rel="noopener noreferrer"
      aria-label="Contactar por WhatsApp"
      className="dr-wa"
      style={{
        position: 'fixed', bottom: 28, right: 28, width: 46, height: 46, borderRadius: '50%',
        background: '#22C55E', color: '#fff',
        display: 'flex', alignItems: 'center', justifyContent: 'center',
        boxShadow: '0 4px 20px rgba(34,197,94,0.22)',
        zIndex: 200, transition: 'transform 0.2s ease, box-shadow 0.2s ease',
      }}
    >
      <svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
        <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z" />
      </svg>
    </a>
  );
}

// ------------------------------------------------------------------
// Footer — Vercel/Linear style with status bar
// ------------------------------------------------------------------
function Footer() {
  const colT = { fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 14, fontWeight: 600, letterSpacing: '0.06em', color: 'var(--signal)', textTransform: 'uppercase', marginBottom: 18 };
  const colI = { fontSize: 14.5, color: 'var(--muted)', lineHeight: 1.85, display: 'block', transition: 'color 0.15s' };

  return (
    <footer style={{ background: 'var(--void)', borderTop: '1px solid var(--line)' }} id="contacto">
      {/* Main */}
      <div className="container" style={{ paddingTop: '52px', paddingBottom: '36px' }}>
        <div style={{ display: 'grid', gridTemplateColumns: '1.6fr 1fr 1fr 1fr', gap: 44 }} className="dr-footer-grid">
          <div>
            <img src="logo-acosta.png" alt="Datos y Redes de Sistema Acosta" style={{ display: 'block', height: 115, objectFit: 'contain', maxWidth: 480 }} />
            <p style={{ fontSize: 15, lineHeight: 1.7, color: 'var(--muted)', marginTop: 20, maxWidth: 340 }}>
              Sistemas computacionales en red — programación, implementación, redes y equipo de cómputo.{' '}
              <span style={{ color: 'var(--signal)' }}>Desde 2023.</span>
            </p>
            <div style={{ marginTop: 20, fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 13, color: 'var(--muted)', lineHeight: 1.8, letterSpacing: '0.02em' }}>
              Hamburgo 182, Piso 4, Int. 400<br />
              Col. Juárez · CDMX 06600<br />
              datosyredesacosta@outlook.com
            </div>
          </div>
          <div>
            <div style={colT}>Servicios</div>
            <a href="#capacidades" style={colI} className="dr-flink">Desarrollo de software</a>
            <a href="#capacidades" style={colI} className="dr-flink">Diseño y consultoría</a>
            <a href="#capacidades" style={colI} className="dr-flink">Redes y sistemas</a>
            <a href="#capacidades" style={colI} className="dr-flink">Administración TI</a>
            <a href="#capacidades" style={colI} className="dr-flink">Equipo de cómputo</a>
          </div>
          <div>
            <div style={colT}>Empresa</div>
            <a href="#stack" style={colI} className="dr-flink">Stack tecnológico</a>
            <a href="#proceso" style={colI} className="dr-flink">Proceso</a>
            <a href="#seguridad" style={colI} className="dr-flink">Seguridad</a>
            <a href="#casos" style={colI} className="dr-flink">Casos de uso</a>
            <a href="#diagnostico" style={colI} className="dr-flink">Diagnóstico</a>
          </div>
          <div>
            <div style={colT}>Legal</div>
            <span style={{ ...colI }}>Aviso de privacidad</span>
            <span style={{ ...colI }}>Términos de servicio</span>
            <span style={{ ...colI }}>S. DE R.L. DE C.V.</span>
            <div style={{ marginTop: 16 }}>
              <a href="mailto:datosyredesacosta@outlook.com" style={{ fontFamily: "'JetBrains Mono', monospace", fontSize: 11, color: 'var(--signal)', letterSpacing: '0.06em' }}>Escribir un correo →</a>
            </div>
          </div>
        </div>
        <div style={{ marginTop: 48, paddingTop: 20, borderTop: '1px solid var(--line)', display: 'flex', justifyContent: 'flex-start', flexWrap: 'wrap', gap: 14, fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 12, letterSpacing: '0.035em', color: 'rgba(133,147,163,0.62)' }}>
          <span>© 2023–2026 · DATOS Y REDES DE SISTEMA ACOSTA S. DE R.L. DE C.V.</span>
        </div>
      </div>
      <style>{`
        .dr-flink:hover { color: var(--text) !important; }
        @media (max-width: 880px) { .dr-footer-grid { grid-template-columns: 1fr 1fr !important; } }
        @media (max-width: 560px) { .dr-footer-grid { grid-template-columns: 1fr !important; } }
      `}</style>
    </footer>
  );
}

Object.assign(window, { BrandMark, Nav, Hero, Footer, Preloader, BackToTop, WhatsApp });

