// guardCity, Landing page única. Mission-control SaaS, paleta DirectLuz blue, copy civil.
function GuardCityLanding() {
  const scrollerRef = React.useRef(null);
  const driverRef = React.useRef(null);
  const [progress, setProgress] = React.useState(0);
  const [time, setTime] = React.useState(() => new Date());

  React.useEffect(() => {
    const id = setInterval(() => setTime(new Date()), 1000);
    return () => clearInterval(id);
  }, []);

  React.useEffect(() => {
    const scroller = scrollerRef.current;
    const driver = driverRef.current;
    if (!scroller || !driver) return;
    let lastTop = -1;
    const compute = () => {
      const st = scroller.scrollTop;
      if (st === lastTop) return;
      lastTop = st;
      const pinH = driver.offsetHeight - scroller.clientHeight;
      const p = pinH > 0 ? Math.max(0, Math.min(1, st / pinH)) : 0;
      setProgress(p);
    };
    compute();
    const id2 = setInterval(compute, 32);
    scroller.addEventListener('scroll', compute, { passive: true });
    return () => { clearInterval(id2); scroller.removeEventListener('scroll', compute); };
  }, []);

  const pad = n => String(n).padStart(2, '0');
  const ts = `${pad(time.getUTCHours())}:${pad(time.getUTCMinutes())}:${pad(time.getUTCSeconds())} UTC`;

  // Compress the actual animation into the first ~80% of scroll, leaving the
  // last ~20% as a hold on the final logo state before exiting the pinned hero.
  const animProgress = Math.min(1, progress / 0.80);
  const heroFade = Math.max(0, 1 - animProgress * 1.5);
  const revealFade = Math.max(0, Math.min(1, (animProgress - 0.88) / 0.12));
  // Final crisp logo PNG fades in over the blade-assembled icon at the very end
  const fullLogoFade = Math.max(0, Math.min(1, (animProgress - 0.90) / 0.08));

  return (
    <div ref={scrollerRef} style={{
      width: '100%', height: '100%', overflowY: 'auto', overflowX: 'hidden',
      background: GC.midnight, color: GC.cloud,
      fontFamily: '"Inter", ui-sans-serif, system-ui, sans-serif',
    }}>
      <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
      <style>{`
        .gc-nav-links { display: flex; align-items: center; gap: 24px; }
        .gc-nav-links .gc-nav-time, .gc-nav-links .gc-nav-status { display: inline-flex; }
        .gc-stack-row { display: grid; grid-template-columns: 120px 1fr 220px; gap: 0; }
        .gc-mods-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; }
        .gc-dive-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
        .gc-hero-h1 { font-size: clamp(48px, 7.6vw, 112px); }
        .gc-section-h2 { font-size: clamp(40px, 5.5vw, 72px); }
        .gc-cta-h2 { font-size: clamp(40px, 5.8vw, 84px); }
        .gc-mod-logo-row { display: flex; align-items: center; gap: 16px; margin-bottom: 24px; flex-wrap: wrap; }
        .gc-mod-logo-row img { height: 44px; width: auto; object-fit: contain; }
        .gc-section-head { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; margin-bottom: 80px; align-items: end; }
        .gc-bottom-hud-state { display: inline; }
        @media (max-width: 768px) {
          .gc-nav-links { gap: 12px; }
          .gc-nav-links a:not(.gc-nav-cta) { display: none; }
          .gc-nav-links .gc-nav-time { display: none; }
          .gc-nav-tagline { display: none !important; }
          .gc-nav-tagline-sep { display: none !important; }
          .gc-nav-status { display: none !important; }
          .gc-stack-row { grid-template-columns: 48px 1fr !important; }
          .gc-stack-row > .gc-stack-meta { display: none; }
          .gc-mods-grid { grid-template-columns: 1fr !important; }
          .gc-dive-grid { grid-template-columns: 1fr; gap: 48px; }
          .gc-section-head-flex { flex-direction: column !important; align-items: flex-start !important; gap: 12px !important; margin-bottom: 32px !important; }
          .gc-section-head-flex > div, .gc-section-head-flex > span { text-align: left !important; }
          .gc-cta-em { white-space: normal !important; }
          .gc-hero-h1 { font-size: clamp(40px, 11vw, 64px) !important; }
          .gc-section-h2 { font-size: clamp(28px, 9vw, 44px) !important; }
          .gc-cta-h2 { font-size: clamp(32px, 9.5vw, 48px) !important; line-height: 1.05 !important; }
          .gc-section-head { grid-template-columns: 1fr !important; gap: 24px !important; margin-bottom: 48px !important; }
          .gc-section-pad { padding: 72px 20px !important; }
          .gc-cta-pad { padding: 80px 20px !important; }
          .gc-hero-pad { padding: 0 20px !important; }
          .gc-hero-p { font-size: 16px !important; }
          .gc-bottom-hud { left: 16px !important; right: 16px !important; bottom: 16px !important; }
          .gc-bottom-hud-state { display: none !important; }
          .gc-corner-bracket { width: 16px !important; height: 16px !important; }
          .gc-mod-card { padding: 24px 20px !important; }
          .gc-mod-card h3 { font-size: 24px !important; }
          .gc-mod-logo-row { gap: 12px !important; margin-bottom: 20px !important; }
          .gc-mod-logo-row img { height: 36px !important; }
          .gc-mod-badge { font-size: 9px !important; padding: 5px 10px !important; }
          .gc-mod-pitch { font-size: 14px !important; }
          .gc-mod-bullets { font-size: 10px !important; }
          .gc-stats-grid { grid-template-columns: 1fr 1fr !important; gap: 16px !important; }
          .gc-footer-stack { flex-direction: column; gap: 16px; align-items: flex-start !important; text-align: left !important; }
          .gc-cta-btn { padding: 16px 28px !important; font-size: 11px !important; letter-spacing: 2px !important; }
          .gc-cta-sub { font-size: 14px !important; line-height: 1.6 !important; }
        }
      `}</style>

      {/* PINNED HERO, city to real logo blades assembling */}
      <div ref={driverRef} style={{ height: '460vh', position: 'relative' }}>
        <div style={{ position: 'sticky', top: 0, height: '100vh', overflow: 'hidden' }}>

          {/* Top nav */}
          <header style={{
            position: 'absolute', top: 0, left: 0, right: 0, zIndex: 10,
            display: 'flex', justifyContent: 'space-between', alignItems: 'center',
            padding: '14px 32px',
            borderBottom: `1px solid ${GC.steel}`,
            background: 'rgba(7,8,9,0.88)',
            backdropFilter: 'blur(12px)',
            fontFamily: '"JetBrains Mono", ui-monospace, monospace',
          }}>
            <div style={{ display: 'flex', alignItems: 'center', gap: 20 }}>
              <img src="assets/guardcity-new-white.png" alt="guardCity" style={{ height: 22 }} />
              <div className="gc-nav-tagline-sep" style={{ height: 16, width: 1, background: GC.iron }} />
              <span className="gc-nav-tagline" style={{ fontSize: 10, letterSpacing: 2, color: GC.fog }}>PLATAFORMA · v3.4.1</span>
            </div>
            <nav className="gc-nav-links" style={{ display: 'flex', alignItems: 'center', gap: 24, fontSize: 11, letterSpacing: 1, color: GC.fog }}>
              <a href="#plataforma" style={{ color: 'inherit', textDecoration: 'none' }}>Plataforma</a>
              <a href="#modulos" style={{ color: 'inherit', textDecoration: 'none' }}>Módulos</a>
              <a href="#contato" style={{ color: 'inherit', textDecoration: 'none' }}>Contato</a>
              <span style={{ display: 'flex', alignItems: 'center', gap: 8, fontSize: 10, letterSpacing: 1.5 }}>
                <span style={{ width: 6, height: 6, borderRadius: '50%', background: '#22c55e', boxShadow: '0 0 8px #22c55e' }} />
                STATUS · ONLINE
              </span>
              <span className="gc-nav-time" style={{ fontSize: 10, color: GC.fog, opacity: 0.7 }}>{ts}</span>
              <a href="#contato" className="gc-nav-cta" style={{
                color: '#0C0D0F', background: '#FFFFFF', padding: '9px 16px',
                textDecoration: 'none', fontSize: 11, fontWeight: 700, letterSpacing: 1.5,
                borderRadius: 2,
              }}>AGENDAR DEMO →</a>
            </nav>
          </header>

          {/* Corner brackets */}
          {[
            { top: 70, left: 24, rot: 0 },
            { top: 70, right: 24, rot: 90 },
            { bottom: 60, left: 24, rot: 270 },
            { bottom: 60, right: 24, rot: 180 },
          ].map((c, i) => (
            <div key={i} className="gc-corner-bracket" style={{
              position: 'absolute', ...c, width: 24, height: 24, zIndex: 6,
              borderTop: `2px solid ${GC.blueLight}`,
              borderLeft: `2px solid ${GC.blueLight}`,
              transform: `rotate(${c.rot}deg)`,
            }} />
          ))}

          {/* Subtle grid overlay */}
          <div style={{
            position: 'absolute', inset: 0, pointerEvents: 'none', zIndex: 5,
            backgroundImage: `linear-gradient(${GC.steel} 1px, transparent 1px), linear-gradient(90deg, ${GC.steel} 1px, transparent 1px)`,
            backgroundSize: '80px 80px',
            opacity: 0.15,
          }} />

          {/* CITY SCENE, skyline to blades do logo */}
          <div style={{ position: 'absolute', inset: 0 }}>
            <CityScene progress={animProgress} />
          </div>

          {/* HERO COPY, fades out as you scroll */}
          <div style={{
            position: 'absolute', inset: 0,
            display: 'grid', placeItems: 'center',
            pointerEvents: 'none', zIndex: 7,
            opacity: heroFade,
          }}>
            <div style={{
              maxWidth: 920, padding: '0 32px',
              textAlign: 'left',
              fontFamily: '"JetBrains Mono", ui-monospace, monospace',
            }}>
              <div style={{ fontSize: 10, letterSpacing: 4, color: GC.blueLight, marginBottom: 20 }}>
                PLATAFORMA · CIDADE INTELIGENTE
              </div>
              <h1 className="gc-hero-h1" style={{
                fontFamily: '"Inter", sans-serif',
                fontSize: 'clamp(48px, 7.6vw, 112px)',
                fontWeight: 700,
                lineHeight: 0.95,
                letterSpacing: '-0.035em',
                margin: 0, color: GC.white,
                textWrap: 'balance',
              }}>
                A cidade,<br/>
                <span style={{ color: GC.fog }}>operada como </span>
                <em style={{ fontStyle: 'normal', color: GC.blueLight }}>plataforma</em>
                <span style={{ color: GC.fog }}>.</span>
              </h1>
              <p className="gc-hero-p" style={{
                fontFamily: '"Inter", sans-serif',
                fontSize: 19, lineHeight: 1.5,
                color: GC.cloud,
                maxWidth: 640,
                margin: '32px 0 0',
                textWrap: 'pretty',
              }}>
                Vídeo, inteligência artificial, operações e iluminação pública. Quatro módulos
                conectados em uma única infraestrutura para gestão urbana moderna.
              </p>
            </div>
          </div>

          {/* FINAL REVEAL, blades become the icon + wordmark to the right + tagline */}
          <div style={{
            position: 'absolute', inset: 0,
            display: 'grid', placeItems: 'center',
            pointerEvents: 'none', zIndex: 8,
            opacity: revealFade,
          }}>
            <div style={{
              textAlign: 'center', padding: '0 32px',
              transform: `translateY(${(1 - revealFade) * 24}px)`,
            }}>
              {/* Logo lockup: blade-icon (rendered in CityScene) + wordmark-only PNG. */}
              {/* The blades land at scene center; we place an empty placeholder there
                  and the wordmark immediately to the right, so visually it reads as
                  [icon] [guardCity]. */}
              <div style={{
                position: 'relative',
                display: 'flex', alignItems: 'center', justifyContent: 'center',
                gap: 'clamp(12px, 1.4vw, 22px)',
                ['--logo-h']: 'clamp(56px, 8vw, 104px)',
              }}>
                <div style={{
                  width: 'var(--logo-h)', height: 'var(--logo-h)',
                  flexShrink: 0,
                }} />
                {/* Wordmark only: PNG cropped to hide the (old) icon on its left.
                    PNG = 2253×410, icon ends at ~386 (17%). We hide left 17% via overflow.
                    Fades out as the full crisp logo PNG fades in. */}
                <div style={{
                  height: 'var(--logo-h)',
                  overflow: 'hidden',
                  display: 'flex', alignItems: 'center',
                  opacity: 1 - fullLogoFade,
                }}>
                  <img
                    src="assets/guardcity-new-white.png"
                    alt="guardCity"
                    style={{
                      height: 'var(--logo-h)',
                      width: 'auto',
                      display: 'block',
                      marginLeft: 'calc(var(--logo-h) * -0.93)', // shift left so wordmark starts at container left
                    }}
                  />
                </div>
                {/* Final clean state: full logo PNG (icon + wordmark) fades in on top
                    at the very end, replacing the blade-assembled version with the
                    perfect crisp lockup. */}
                <img
                  src="assets/guardcity-new-white.png"
                  alt="guardCity"
                  style={{
                    position: 'absolute',
                    top: '50%', left: '50%',
                    transform: 'translate(-50%, -50%)',
                    height: 'var(--logo-h)',
                    width: 'auto',
                    display: 'block',
                    opacity: fullLogoFade,
                    pointerEvents: 'none',
                  }}
                />
              </div>
              <div style={{
                marginTop: 32,
                fontFamily: '"JetBrains Mono", ui-monospace, monospace',
                fontSize: 'clamp(11px, 1vw, 13px)',
                letterSpacing: 6,
                color: GC.cloud,
                textTransform: 'uppercase',
              }}>
                A cidade operada como plataforma
              </div>
              <div style={{
                marginTop: 56,
                fontFamily: '"JetBrains Mono", ui-monospace, monospace',
                fontSize: 10, letterSpacing: 4, color: GC.fog,
              }}>
                ↓ CONTINUE PARA EXPLORAR OS MÓDULOS
              </div>
            </div>
          </div>

          {/* Bottom HUD, scroll progress */}
          <div className="gc-bottom-hud" style={{
            position: 'absolute', bottom: 24, left: 32, right: 32, zIndex: 9,
            display: 'flex', justifyContent: 'space-between', alignItems: 'center',
            fontFamily: '"JetBrains Mono", ui-monospace, monospace',
            fontSize: 10, letterSpacing: 2, color: GC.fog,
          }}>
            <div className="gc-bottom-hud-state" style={{ display: 'flex', gap: 24 }}>
              <span>{[
                'SKYLINE',
                'POSTES',
                'LUMINÁRIAS',
                'CÂMERAS',
                'REDE',
                'NÚCLEO',
              ][Math.min(5, Math.floor(progress * 6))]} · ATIVO</span>
            </div>
            <div style={{ flex: 1, margin: '0 24px', height: 1, background: GC.steel, position: 'relative' }}>
              <div style={{
                position: 'absolute', left: 0, top: 0, height: '100%',
                width: `${progress * 100}%`, background: GC.blueLight,
              }} />
              <div style={{
                position: 'absolute', left: `${progress * 100}%`, top: '50%',
                width: 8, height: 8, borderRadius: '50%', background: GC.blueLight,
                transform: 'translate(-50%, -50%)',
                boxShadow: `0 0 12px ${GC.blueGlow}`,
              }} />
            </div>
            <span>{String(Math.round(progress * 100)).padStart(2, '0')}% · LIVE</span>
          </div>
        </div>
      </div>

      {/* PLATAFORMA, Stack section */}
      <section id="plataforma" className="gc-section-pad" style={{
        padding: '120px 32px',
        borderTop: `1px solid ${GC.steel}`,
        background: GC.midnight,
        fontFamily: '"JetBrains Mono", ui-monospace, monospace',
      }}>
        <div style={{ maxWidth: 1280, margin: '0 auto' }}>
          <div className="gc-section-head-flex" style={{
            display: 'flex', justifyContent: 'space-between', alignItems: 'baseline',
            marginBottom: 64,
            paddingBottom: 24,
            borderBottom: `1px solid ${GC.steel}`,
          }}>
            <div>
              <div style={{ fontSize: 10, letterSpacing: 4, color: GC.blueLight }}>SEÇÃO 01 · PLATAFORMA</div>
              <h2 className="gc-section-h2" style={{
                fontFamily: '"Inter", sans-serif',
                fontSize: 'clamp(40px, 5.5vw, 72px)',
                fontWeight: 700, margin: '12px 0 0',
                color: GC.white, letterSpacing: '-0.025em',
              }}>A arquitetura.</h2>
            </div>
            <div style={{ fontSize: 10, letterSpacing: 2, color: GC.fog, textAlign: 'right' }}>
              <div>4 MÓDULOS</div>
              <div>1 PLATAFORMA</div>
              <div>0 LOCK-IN</div>
            </div>
          </div>

          <div className="gc-stack-row" style={{ display: 'grid', gridTemplateColumns: '120px 1fr 220px', gap: 0 }}>
            {[
              { i: '01', t: 'CAPTAR', d: 'Câmeras IP, sensores de iluminação, dispositivos de campo, mobile. Qualquer ativo é normalizado e ingerido em pipeline padronizado.', m: 'RTSP · ONVIF · LoRaWAN · NB-IoT' },
              { i: '02', t: 'PROCESSAR', d: 'IA de visão computacional e analytics rodam em edge ou núcleo. Reconhecimento, ALPR, detecção de eventos, falhas de luminárias, busca semântica.', m: '12 modelos · 99,4% precisão' },
              { i: '03', t: 'COORDENAR', d: 'Despacho, patrulhamento, ordens de serviço, equipes de campo. Orquestração da resposta operacional em tempo real.', m: 'OMS · CAD · GIS' },
              { i: '04', t: 'AUDITAR', d: 'Cadeia de custódia, governança LGPD, exportação probatória, indicadores de SLA. Rastreabilidade do sensor ao processo.', m: 'LGPD · ISO 27001 · SOC 2' },
            ].map((row) => (
              <React.Fragment key={row.i}>
                <div style={{
                  padding: '32px 0',
                  borderTop: `1px solid ${GC.steel}`,
                  fontSize: 11, letterSpacing: 2, color: GC.blueLight,
                }}>{row.i}</div>
                <div style={{
                  padding: '32px 24px 32px 0',
                  borderTop: `1px solid ${GC.steel}`,
                }}>
                  <h3 style={{
                    fontFamily: '"Inter", sans-serif',
                    fontSize: 32, fontWeight: 700, margin: '0 0 12px',
                    color: GC.white, letterSpacing: '-0.015em',
                  }}>{row.t}</h3>
                  <p style={{
                    fontFamily: '"Inter", sans-serif',
                    fontSize: 15, lineHeight: 1.55, color: GC.fog, margin: 0,
                  }}>{row.d}</p>
                </div>
                <div className="gc-stack-meta" style={{
                  padding: '32px 0',
                  borderTop: `1px solid ${GC.steel}`,
                  fontSize: 10, letterSpacing: 1.5, color: GC.cloud,
                  textAlign: 'right',
                }}>{row.m}</div>
              </React.Fragment>
            ))}
          </div>
        </div>
      </section>

      {/* MÓDULOS */}
      <section id="modulos" className="gc-section-pad" style={{
        padding: '120px 32px',
        borderTop: `1px solid ${GC.steel}`,
        background: GC.ink,
      }}>
        <div style={{ maxWidth: 1280, margin: '0 auto' }}>
          <div className="gc-section-head-flex" style={{
            display: 'flex', justifyContent: 'space-between', alignItems: 'baseline',
            marginBottom: 48,
            paddingBottom: 24,
            borderBottom: `1px solid ${GC.steel}`,
            fontFamily: '"JetBrains Mono", ui-monospace, monospace',
          }}>
            <div>
              <div style={{ fontSize: 10, letterSpacing: 4, color: GC.blueLight }}>SEÇÃO 02 · MÓDULOS</div>
              <h2 className="gc-section-h2" style={{
                fontFamily: '"Inter", sans-serif',
                fontSize: 'clamp(40px, 5.5vw, 72px)',
                fontWeight: 700, margin: '12px 0 0',
                color: GC.white, letterSpacing: '-0.025em',
              }}>O ecossistema.</h2>
            </div>
            <span style={{ fontSize: 10, letterSpacing: 2, color: GC.fog }}>02 / 02 ATIVOS</span>
          </div>

          <div className="gc-mods-grid" style={{
            display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)',
            gap: 1, background: GC.steel,
            border: `1px solid ${GC.steel}`,
          }}>
            {[
              {
                key: 'faceguard',
                name: 'FaceGuard',
                role: 'IA · Reconhecimento Facial',
                href: 'https://faceguard.me',
                logo: 'assets/faceguard-white.png',
                badge: 'PROCESSAMENTO EM TEMPO REAL',
                pitch: 'Reconhecimento facial em tempo real com cadeia de custódia, governança LGPD e integração nativa ao VMS. Identificação de pessoas de interesse, controle de acesso e alertas operacionais auditáveis ponta a ponta.',
                bullets: ['Match em menos de 200ms', 'Cadeia de custódia LGPD', 'API REST e Webhooks'],
              },
              {
                key: 'directluz',
                name: 'DirectLuz',
                role: 'Iluminação Pública',
                href: 'https://directluz.com.br',
                logo: 'assets/directluz-white.png',
                badge: '+150K POSTES GERIDOS',
                pitch: 'Telegestão completa de iluminação pública: cadastro de postes e luminárias, ordens de serviço, equipes de campo e indicadores de SLA. A malha de iluminação vira ativo digital, auditável e mensurável.',
                bullets: ['Telegestão de luminárias', 'OS e equipes de campo', 'SLA e indicadores'],
              },
            ].map((m, i) => {
              const accent = m.key === 'directluz' ? '#4169e8' : '#10b981';
              return (
                <article key={m.key} className="gc-mod-card" style={{
                  background: GC.navy, padding: '40px 36px',
                  fontFamily: '"JetBrains Mono", ui-monospace, monospace',
                  display: 'flex', flexDirection: 'column',
                }}>
                  <div style={{
                    display: 'flex', justifyContent: 'space-between',
                    fontSize: 10, letterSpacing: 2, color: GC.fog,
                    paddingBottom: 16, borderBottom: `1px dashed ${GC.iron}`, marginBottom: 28,
                  }}>
                    <span>MOD.{String(i+1).padStart(2,'0')} · {m.role.toUpperCase()}</span>
                    <span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
                      <span style={{ width: 5, height: 5, borderRadius: '50%', background: '#22c55e' }} />
                      ATIVO
                    </span>
                  </div>
                  <div className="gc-mod-logo-row">
                    <img src={m.logo} alt={m.name} />
                    <span className="gc-mod-badge" style={{
                      display: 'inline-flex', alignItems: 'center', gap: 8,
                      padding: '6px 12px',
                      border: `1px solid ${accent}`,
                      color: accent,
                      fontSize: 10, letterSpacing: 1.5, fontWeight: 600,
                    }}>
                      <span style={{ width: 5, height: 5, background: accent, display: 'inline-block' }} />
                      {m.badge}
                    </span>
                  </div>
                  <p className="gc-mod-pitch" style={{
                    fontFamily: '"Inter", sans-serif',
                    margin: 0, fontSize: 15, lineHeight: 1.6, color: GC.cloud,
                  }}>{m.pitch}</p>
                  <ul className="gc-mod-bullets" style={{
                    listStyle: 'none', margin: '28px 0 0', padding: 0,
                    display: 'flex', flexDirection: 'column', gap: 8,
                    fontFamily: '"JetBrains Mono", ui-monospace, monospace',
                    fontSize: 11, color: GC.cloud, letterSpacing: 0.5,
                  }}>
                    {m.bullets.map(b => (
                      <li key={b} style={{ display: 'flex', alignItems: 'center', gap: 10 }}>
                        <span style={{ width: 6, height: 6, background: accent, display: 'inline-block' }} />
                        {b}
                      </li>
                    ))}
                  </ul>
                  <div style={{ flex: 1, minHeight: 24 }} />
                  <div style={{
                    marginTop: 28, paddingTop: 20, borderTop: `1px dashed ${GC.iron}`,
                    display: 'flex', justifyContent: 'flex-end', alignItems: 'center',
                    fontSize: 10, letterSpacing: 2,
                  }}>
                    <a href={m.href} target="_blank" rel="noopener noreferrer"
                       style={{ color: accent, textDecoration: 'none', display: 'flex', alignItems: 'center', gap: 6, fontWeight: 600 }}>
                      {m.href.replace('https://', '').toUpperCase()} →
                    </a>
                  </div>
                </article>
              );
            })}
          </div>
        </div>
      </section>

      {/* CTA */}
      <section id="contato" className="gc-cta-pad" style={{
        padding: '140px 32px',
        borderTop: `1px solid ${GC.steel}`,
        background: GC.midnight,
        textAlign: 'center',
      }}>
        <div style={{ maxWidth: 760, margin: '0 auto' }}>
          <div style={{
            fontFamily: '"JetBrains Mono", ui-monospace, monospace',
            fontSize: 10, letterSpacing: 4, color: GC.blueLight,
            marginBottom: 24,
          }}>SEÇÃO 03 · CONVERSAR</div>
          <h2 className="gc-cta-h2" style={{
            fontFamily: '"Inter", sans-serif',
            fontSize: 'clamp(40px, 5.8vw, 84px)',
            fontWeight: 700, lineHeight: 1,
            margin: 0, color: GC.white,
            letterSpacing: '-0.03em',
          }}>
            Ative sua cidade,<br/>
            <em className="gc-cta-em" style={{ fontStyle: 'normal', color: GC.fog, whiteSpace: 'nowrap' }}>comando em 90 dias.</em>
          </h2>
          <p className="gc-cta-sub" style={{
            color: GC.fog, fontSize: 18, lineHeight: 1.5,
            margin: '32px auto 48px', maxWidth: 560,
          }}>
            Demo guiada com nosso time de soluções. Atendemos secretarias, prefeituras
            e órgãos públicos em todo o território nacional.
          </p>
          <a href="mailto:face@faceguard.me" className="gc-cta-btn" style={{
            display: 'inline-block',
            padding: '20px 40px',
            background: '#FFFFFF', color: '#0C0D0F',
            fontFamily: '"JetBrains Mono", ui-monospace, monospace',
            fontSize: 12, fontWeight: 700, letterSpacing: 2,
            textDecoration: 'none', textTransform: 'uppercase',
            borderRadius: 2,
          }}>AGENDAR DEMONSTRAÇÃO →</a>
        </div>
      </section>

      <footer className="gc-footer-stack" style={{
        padding: '32px',
        borderTop: `1px solid ${GC.steel}`,
        display: 'flex', justifyContent: 'space-between', alignItems: 'center',
        fontFamily: '"JetBrains Mono", ui-monospace, monospace',
        fontSize: 10, letterSpacing: 1.5, color: GC.fog,
        background: GC.ink,
      }}>
        <img src="assets/guardcity-new-white.png" alt="guardCity" style={{ height: 22, opacity: 0.6 }} />
        <span>v3.4.1 · LGPD COMPLIANT · © 2026 guardCity Platform</span>
      </footer>
    </div>
  );
}
window.GuardCityLanding = GuardCityLanding;
