/* MARKETING wrapper — 4 módulos com brand switcher.
   Performance · Plano · Estratégia · Sub-agentes (transversal, sem switcher).
   Brand state global ao módulo via MktBrandProvider. */

// ============ Sub-agentes (transversal — header esclarece, sem switcher) ============
// Lê o tema actual do portal (localStorage 'digi-theme', padrão 'light')
function getPortalTheme() {
  try { return localStorage.getItem('digi-theme') || 'light'; } catch { return 'light'; }
}

// Constrói URL do agente com o tema actual
function agentUrlWithTheme(baseUrl) {
  return `${baseUrl}?theme=${getPortalTheme()}`;
}

const MktSubAgentes = ({ onOpenChat, onOpenSeo, userName }) => {
  const [openAgent, setOpenAgent] = React.useState(null);
  const iframeRef = React.useRef(null);

  const hour = new Date().getHours();
  const saudacao = hour < 12 ? 'Bom dia' : hour < 19 ? 'Boa tarde' : 'Boa noite';
  const rawName = userName || (window.currentUser && (window.currentUser.nome_apresentar || window.currentUser.nome)) || '';
  const firstName = rawName.split(' ')[0] || 'Fábio';

  React.useEffect(() => {
    if (!openAgent) return;
    const obs = new MutationObserver(() => {
      const theme = document.documentElement.dataset.theme || 'light';
      iframeRef.current?.contentWindow?.postMessage({ type: 'digi-theme', theme }, '*');
    });
    obs.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });
    return () => obs.disconnect();
  }, [openAgent]);

  // ─── Sub-agentes de marca (VPS) ────────────────────────────────────────────
  const brandAgents = [
    { id: 'mimaki_agent',   name: 'MIMAKI',   role: 'Contexto de marca Mimaki — tom, restrições, argumentário',   consumidoEm: ['SP_CLIENTES','SP_COMERCIAL','SP_MARKETING'], status: 'active' },
    { id: 'biond_agent',    name: 'BIOND',    role: 'Contexto de marca BIOND — sustentabilidade, films premium',   consumidoEm: ['SP_CLIENTES','SP_COMERCIAL','SP_MARKETING'], status: 'active' },
    { id: 'decal_agent',    name: 'DECAL',    role: 'Contexto de marca Decal — autocolante, laminação, label pack',consumidoEm: ['SP_CLIENTES','SP_COMERCIAL','SP_MARKETING'], status: 'active' },
    { id: 'sensek_agent',   name: 'SENSEK',   role: 'Contexto de marca Sensek — vinil signage Ibérico',            consumidoEm: ['SP_CLIENTES','SP_COMERCIAL','SP_MARKETING'], status: 'active' },
    { id: 'alldecor_agent', name: 'ALLDECOR', role: 'Contexto AllDecor — cross-sell Mimaki UV + BIOND (interno)',  consumidoEm: ['SP_CLIENTES','SP_COMERCIAL','SP_MARKETING'], status: 'active' },
  ];

  // ─── Sub-agentes de função ─────────────────────────────────────────────────
  const functionAgents = [
    { id: 'ads',              name: 'ADS',              status: 'active', role: 'Campaign ops cross-marca · Meta + Google + LinkedIn',            skills: ['SP_ADS v2','FRAME-CAMP'],            consumidoEm: ['Campanhas','Performance Ads','Activação'], agentUrl: '/ads-agent/', invoc: 'iframe' },
    { id: 'content',          name: 'CONTENT',          status: 'active', role: 'Editorial, copy, briefings — execução',                          skills: ['SP_COLAB_MKT v3','FRAME-EDITORIAL'], consumidoEm: ['Briefings','Campanhas','Produção'],       invoc: 'chat' },
    { id: 'email',            name: 'EMAIL',            status: 'active', role: 'Brevo · campanhas + automations transaccionais',                 skills: ['SP_EMAIL v2','FRAME-DRIP'],          consumidoEm: ['Activação','Campanhas'],                  invoc: 'chat' },
    { id: 'seo',              name: 'SEO',              status: 'active', role: 'Audit técnico + on-page nos 5 sites',                            skills: ['SP_SEO v1.2','FRAME-AUDIT'],         consumidoEm: ['Plano de Comunicação','Produção'],        hasModule: true, openHint: 'Abrir módulo', invoc: 'módulo' },
    { id: 'social',           name: 'SOCIAL',           status: 'active', role: 'LinkedIn, Instagram, TikTok orgânico',                           skills: ['SP_SOCIAL v1'],                      consumidoEm: ['Campanhas','Activação'], agentUrl: 'https://social.digidelta.ai/', invoc: 'iframe' },
    { id: 'analytics',        name: 'ANALYTICS',        status: 'active', role: 'GA4 · Looker · attribution closed-loop',                         skills: ['SP_ANALYTICS','FRAME-KPI'],          consumidoEm: ['Resultados','Performance Ads','Objectivos'], invoc: 'chat' },
    { id: 'content_strategy', name: 'CONTENT_STRATEGY', status: 'todo',   role: 'Estratégia editorial — pilares, calendário mestre',              skills: ['SP_CONTENT_STRATEGY','FRAME-EDITORIAL'], consumidoEm: ['Plano de Comunicação','Estratégia'],  invoc: '—' },
    { id: 'pr',               name: 'PR',               status: 'todo',   role: 'Imprensa especializada, media relations, releases',              skills: ['SP_PR','FRAME-PR'],                  consumidoEm: ['Campanhas','Plano de Comunicação'],       invoc: '—' },
    { id: 'distributor',      name: 'DISTRIBUTOR',      status: 'todo',   role: 'Partner relations, channel conflict, co-marketing',              skills: ['SP_DISTRIBUTOR'],                    consumidoEm: ['Estratégia','SDR'],                       invoc: '—' },
  ];

  // ─── Sub-agentes comerciais (cross-consumíveis por Marketing, read-only) ────
  const commercialAgents = [
    { id: 'sales_analyst',      name: 'sales_analyst',      status: 'todo', role: 'Análise agregada de vendas por comercial · região · marca',  consumidoEm: ['Resultados','Objectivos'] },
    { id: 'pipeline_analyst',   name: 'pipeline_analyst',   status: 'todo', role: 'Estado do pipeline Gestor · gaps · risco por stage',         consumidoEm: ['Resultados','SDR'] },
    { id: 'forecast_analyst',   name: 'forecast_analyst',   status: 'todo', role: 'Previsão fim de trimestre · run rate · BP gap',              consumidoEm: ['Objectivos','Budget'] },
    { id: 'media_sales_analyst',name: 'media_sales_analyst',status: 'todo', role: 'Impacto Marketing → vendas · ROI campanhas · closed-loop',   consumidoEm: ['Resultados','Performance Ads'] },
  ];

  // ─── Estilos (padrão em-desenvolvimento) ───────────────────────────────────
  const cardStyle = { padding: '14px 16px', borderRadius: 10, background: 'var(--bg-sunken)', border: '1px solid var(--border)', display: 'flex', flexDirection: 'column', gap: 4 };
  const titleStyle = { fontSize: 13, fontWeight: 600, color: 'var(--text)', marginBottom: 2 };
  const descStyle  = { fontSize: 12, color: 'var(--text-muted)', lineHeight: 1.6 };
  const sectionLabel = { fontSize: 10, fontFamily: 'var(--font-mono)', letterSpacing: '0.08em', color: 'var(--text-dim)', marginBottom: 10 };
  const subLabel = {
    fontSize: 10, fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.08em',
    color: 'var(--ai-500, #3859D0)', fontFamily: 'var(--font-mono)', marginBottom: 8, marginTop: 4,
    display: 'flex', alignItems: 'center', gap: 6,
  };
  const dot = (color) => ({ width: 7, height: 7, borderRadius: '50%', background: color, flexShrink: 0, display: 'inline-block' });
  const tableHeader = { fontSize: 10, fontWeight: 700, color: 'var(--text-dim)', fontFamily: 'var(--font-mono)', padding: '6px 10px', background: 'var(--bg-sunken)', borderBottom: '1px solid var(--border)' };
  const tableCell   = { fontSize: 12, color: 'var(--text)', padding: '8px 10px', borderBottom: '1px solid var(--border)', lineHeight: 1.5 };
  const tableCellMuted = { ...tableCell, color: 'var(--text-muted)' };

  const statusPill = (status) => {
    const cfg = status === 'active'
      ? { label: 'Activo ✅',    color: 'var(--success)' }
      : status === 'todo'
      ? { label: 'Por criar',    color: 'var(--warning)' }
      : { label: 'Em dev',       color: 'var(--ai-500)' };
    return (
      <span style={{
        fontSize: 9, fontFamily: 'var(--font-mono)', letterSpacing: '0.06em', fontWeight: 700,
        padding: '2px 7px', borderRadius: 4, whiteSpace: 'nowrap',
        background: `color-mix(in oklch, ${cfg.color} 14%, transparent)`,
        color: cfg.color,
      }}>{cfg.label}</span>
    );
  };

  const AgentRow = ({ a }) => (
    <div style={{ ...cardStyle, gap: 6 }}>
      <div style={{ display: 'flex', alignItems: 'center', gap: 8, justifyContent: 'space-between' }}>
        <div style={{ ...titleStyle, fontFamily: 'var(--font-mono)', fontSize: 12 }}>{a.name}</div>
        {statusPill(a.status)}
      </div>
      <div style={descStyle}>{a.role}</div>
      {a.skills && (
        <div style={{ display: 'flex', flexWrap: 'wrap', gap: 3, marginTop: 2 }}>
          {a.skills.map((s, i) => (
            <span key={i} style={{ padding: '1px 5px', fontSize: 9.5, fontFamily: 'var(--font-mono)', background: 'var(--bg)', color: 'var(--text-muted)', borderRadius: 3, border: '1px solid var(--border)' }}>{s}</span>
          ))}
        </div>
      )}
      {a.consumidoEm && (
        <div style={{ fontSize: 10.5, color: 'var(--text-dim)', fontFamily: 'var(--font-mono)', marginTop: 2 }}>
          Consumido em: <span style={{ color: 'var(--text-muted)' }}>{a.consumidoEm.join(' · ')}</span>
        </div>
      )}
    </div>
  );

  // ─── Painel iframe (mantém funcionalidade actual) ──────────────────────────
  if (openAgent) {
    return (
      <div style={{ display: 'flex', flexDirection: 'column', height: '100%' }}>
        <div style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '10px 16px', borderBottom: '1px solid var(--border)', background: 'var(--bg-elev)', flexShrink: 0 }}>
          <button className="btn btn-sm" onClick={() => setOpenAgent(null)} style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
            <Icon name="arrowLeft" size={13} /> Sub-agentes
          </button>
          <span style={{ width: 1, height: 16, background: 'var(--border)' }} />
          <span style={{ fontSize: 11, fontFamily: 'var(--font-mono)', color: 'var(--text-dim)', letterSpacing: '0.06em' }}>
            AGENTE · {openAgent.name}
          </span>
          <span style={{ flex: 1 }} />
          <a href={agentUrlWithTheme(openAgent.agentUrl)} target="_blank" rel="noopener noreferrer" className="btn btn-sm" style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
            <Icon name="arrowRight" size={12} /> Abrir em tab
          </a>
        </div>
        <iframe ref={iframeRef} src={agentUrlWithTheme(openAgent.agentUrl)} style={{ flex: 1, border: 'none', width: '100%' }} title={`Agente ${openAgent.name}`} />
      </div>
    );
  }

  const nActive = brandAgents.length + functionAgents.filter(f => f.status === 'active').length;
  const nTodo   = functionAgents.filter(f => f.status === 'todo').length + commercialAgents.length;

  return (
    <div className="scrollbar" style={{ height: '100%', overflowY: 'auto' }}>

      {/* Page header (padrão em-desenvolvimento) */}
      <div style={{ padding: '28px 32px 0', flexShrink: 0 }}>
        <div style={{ fontSize: 10, color: 'var(--text-dim)', fontFamily: 'var(--font-mono)', letterSpacing: '0.08em' }}>
          MARKETING · SUB-AGENTES
        </div>
        <h1 className="font-display" style={{ margin: '6px 0 4px', fontSize: 26, fontWeight: 600, letterSpacing: '-0.015em' }}>
          Sub-agentes
        </h1>
        <div style={{ fontSize: 12, color: 'var(--text-muted)', display: 'flex', alignItems: 'center', gap: 8, marginBottom: 20 }}>
          Sub-agentes de marca (VPS) · Sub-agentes de função · Comerciais cross-consumíveis
          <span style={{
            fontSize: 9, fontFamily: 'var(--font-mono)', letterSpacing: '0.09em', fontWeight: 600,
            padding: '2px 7px', borderRadius: 4,
            background: 'color-mix(in oklch, var(--warning) 12%, transparent)',
            color: 'var(--warning)',
            border: '1px solid color-mix(in oklch, var(--warning) 28%, transparent)',
          }}>EM DESENVOLVIMENTO</span>
        </div>

        <div style={{ fontSize: 22, fontWeight: 700, color: 'var(--text)', fontFamily: 'var(--font-display)', marginBottom: 6, letterSpacing: '-0.02em' }}>
          {saudacao}, {firstName}.
        </div>
        <div style={{ fontSize: 13, color: 'var(--text-muted)', lineHeight: 1.65, maxWidth: 700, marginBottom: 28 }}>
          Vista consolidada dos sub-agentes definidos na arquitectura Farben AI. <strong style={{ color: 'var(--success)' }}>{nActive} agentes activos</strong> (5 de marca na VPS + 6 de função) e <strong style={{ color: 'var(--warning)' }}>{nTodo} por criar</strong> (3 de função + 4 comerciais cross-consumíveis). Cada card indica o estado real e os módulos onde é consumido.
        </div>
      </div>

      {/* Two-column layout */}
      <div style={{ padding: '0 32px 40px', display: 'grid', gridTemplateColumns: '1fr 380px', gap: 24, alignItems: 'start' }}>

        {/* ── Coluna esquerda ── */}
        <div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>

          {/* 1. Origem / contexto */}
          <div>
            <div style={sectionLabel}>O QUE ESTARÁ AQUI</div>
            <div style={{ ...subLabel }}><span style={dot('#3859D0')} />Origem de Dados e Contexto</div>
            <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
              {[
                { t: 'VPS — sub-agentes de marca', d: 'Mimaki · BIOND · Decal · Sensek · AllDecor a correr na VPS. Fornecem tom de voz, restrições e argumentário às SPs.' },
                { t: 'Ficheiros SP e FRAME', d: 'heydigi-local/prompts/SP_*.md e FRAME-*.md — cada sub-agente puxa a sua camada de regras e metodologia.' },
                { t: 'KBs por marca (RAG)', d: 'mimaki_kb · biond_kb · decal_kb · sensek_kb · alldecor_kb + market_intel_kb + store_kb.' },
                { t: 'Portal Farben AI (154 endpoints)', d: 'Módulos Briefings, Campanhas, Produção, Activação, Performance Ads consomem os agentes activamente.' },
              ].map((f, i) => (
                <div key={i} style={cardStyle}>
                  <div style={titleStyle}>{f.t}</div>
                  <div style={descStyle}>{f.d}</div>
                </div>
              ))}
            </div>
          </div>

          {/* 2. Sub-agentes de marca */}
          <div>
            <div style={{ ...subLabel }}><span style={dot('#059669')} />Sub-agentes de Marca · VPS (5 activos)</div>
            <div style={{ fontSize: 12, color: 'var(--text-muted)', lineHeight: 1.6, marginBottom: 10 }}>
              Base transversal referenciada em SP_CLIENTES · SP_COMERCIAL · SP_MARKETING. Fornecem tom, restrições, argumentário e conhecimento técnico por marca.
            </div>
            <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
              {brandAgents.map(a => <AgentRow key={a.id} a={a} />)}
            </div>
          </div>

          {/* 3. Sub-agentes de função */}
          <div>
            <div style={{ ...subLabel }}><span style={dot('#0ea5e9')} />Sub-agentes de Função · Transversais (6 activos · 3 por criar)</div>
            <div style={{ fontSize: 12, color: 'var(--text-muted)', lineHeight: 1.6, marginBottom: 10 }}>
              Actuam em todas as marcas. ADS · SEO · SOCIAL têm interface iframe/módulo próprios. CONTENT · EMAIL · ANALYTICS operam via chat Digi AI. PR · CONTENT_STRATEGY · DISTRIBUTOR previstos na arquitectura e ainda por implementar.
            </div>
            <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
              {functionAgents.map(a => <AgentRow key={a.id} a={a} />)}
            </div>
          </div>

          {/* 4. Sub-agentes comerciais */}
          <div>
            <div style={{ ...subLabel }}><span style={dot('#8b5cf6')} />Sub-agentes Comerciais · Cross-consumíveis (read-only)</div>
            <div style={{ fontSize: 12, color: 'var(--text-muted)', lineHeight: 1.6, marginBottom: 10 }}>
              Definidos em SP_COMERCIAL. Marketing consome-os em modo leitura para closed-loop (leads → vendas) e alinhamento com Business Plan. Todos ainda por implementar.
            </div>
            <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
              {commercialAgents.map(a => <AgentRow key={a.id} a={a} />)}
            </div>
          </div>

          {/* 5. Como são invocados */}
          <div>
            <div style={{ ...subLabel }}><span style={dot('#f59e0b')} />Como São Invocados</div>
            <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
              {[
                { t: 'iframe embutido', d: 'ADS (/ads-agent/) e SOCIAL (social.digidelta.ai) têm UI própria embutida na página. Sync de tema via postMessage.' },
                { t: 'Módulo integrado', d: 'SEO tem módulo dedicado no portal com 5 vistas (audit técnico + on-page).' },
                { t: 'Chat Digi AI', d: 'CONTENT · EMAIL · ANALYTICS · agentes de marca — invocados via chat com routing por SP_MARKETING.' },
                { t: 'Tool call directo', d: 'agent_runs no portal chamam skills e frameworks associadas a cada agente durante geração (briefings, campanhas, plano).' },
                { t: 'VPS API (marca)', d: 'Sub-agentes de marca consultados por endpoint na VPS — usados por SP_CLIENTES em cada mensagem WA/email.' },
              ].map((f, i) => (
                <div key={i} style={cardStyle}>
                  <div style={titleStyle}>{f.t}</div>
                  <div style={descStyle}>{f.d}</div>
                </div>
              ))}
            </div>
          </div>

          {/* Ligações ao sistema */}
          <div>
            <div style={{ ...subLabel }}><span style={dot('#ec4899')} />Ligações ao Sistema Existente</div>
            <div style={{ ...cardStyle, fontFamily: 'var(--font-mono)', fontSize: 12, lineHeight: 2, color: 'var(--text)' }}>
              <div>Sub-agentes de marca (VPS) → <span style={{ color: 'var(--ai-500)' }}>SP_CLIENTES · SP_COMERCIAL · SP_MARKETING</span></div>
              <div style={{ paddingLeft: 16 }}>↓</div>
              <div>Sub-agentes de função (portal)</div>
              <div style={{ paddingLeft: 16, color: 'var(--text-muted)' }}>├── ADS ✅ → Campanhas · Performance · Activação</div>
              <div style={{ paddingLeft: 16, color: 'var(--text-muted)' }}>├── CONTENT ✅ → Briefings · Campanhas · Produção</div>
              <div style={{ paddingLeft: 16, color: 'var(--text-muted)' }}>├── EMAIL ✅ → Activação · Campanhas</div>
              <div style={{ paddingLeft: 16, color: 'var(--text-muted)' }}>├── SEO ✅ → Plano · Produção</div>
              <div style={{ paddingLeft: 16, color: 'var(--text-muted)' }}>├── SOCIAL ✅ → Campanhas · Activação</div>
              <div style={{ paddingLeft: 16, color: 'var(--text-muted)' }}>└── ANALYTICS ✅ → Resultados · Performance · Objectivos</div>
              <div style={{ paddingLeft: 16 }}>↓</div>
              <div>Sub-agentes comerciais [criar] → <span style={{ color: 'var(--ai-500)' }}>Resultados · Objectivos · Budget · Monitorização</span></div>
            </div>
          </div>

          {/* Nota técnica */}
          <div style={{
            padding: '14px 16px', borderRadius: 8,
            background: 'color-mix(in oklch, var(--warning) 6%, transparent)',
            border: '1px solid color-mix(in oklch, var(--warning) 25%, transparent)',
          }}>
            <div style={{ fontSize: 11, fontWeight: 700, color: 'var(--warning)', fontFamily: 'var(--font-mono)', marginBottom: 6, textTransform: 'uppercase', letterSpacing: '0.06em' }}>Estado real · o que falta</div>
            <div style={{ fontSize: 12, color: 'var(--text-muted)', lineHeight: 1.65 }}>
              <strong style={{ color: 'var(--text)' }}>Feito:</strong> 5 sub-agentes de marca na VPS · 6 sub-agentes de função (3 com UI: ADS/SEO/SOCIAL; 3 via chat: CONTENT/EMAIL/ANALYTICS) · iframe launcher com sync de tema · consumo real nos módulos Briefings, Campanhas, Produção, Activação, Performance Ads.
              <br /><br />
              <strong style={{ color: 'var(--text)' }}>Por fazer:</strong>
              <br />
              1. Criar SP_PR + FRAME-PR + integração com media relations.
              <br />
              2. Criar SP_CONTENT_STRATEGY para separar estratégia editorial da execução CONTENT.
              <br />
              3. Criar SP_DISTRIBUTOR para partner relations e channel conflict.
              <br />
              4. Criar os 4 sub-agentes comerciais (sales / pipeline / forecast / media_sales analyst) definidos em SP_COMERCIAL.
              <br />
              5. Expor UI própria para CONTENT · EMAIL · ANALYTICS (actualmente só chat).
              <br />
              6. Skill <span style={{ fontFamily: 'var(--font-mono)', color: 'var(--text)' }}>sub-agent-registry</span> — expor lista canónica lida dos ficheiros SP em vez de hardcoded.
            </div>
          </div>
        </div>

        {/* ── Coluna direita (sticky) ── */}
        <div style={{ display: 'flex', flexDirection: 'column', gap: 24, position: 'sticky', top: 0 }}>

          {/* Skills e Tools */}
          <div>
            <div style={sectionLabel}>SKILLS E TOOLS</div>
            <div style={{ border: '1px solid var(--border)', borderRadius: 10, overflow: 'hidden' }}>
              <div style={{ display: 'grid', gridTemplateColumns: '1fr 1.4fr' }}>
                <div style={tableHeader}>Agente</div>
                <div style={tableHeader}>SP + FRAME</div>
              </div>
              {[
                ['ADS ✅',              'SP_ADS v2 · FRAME-CAMP'],
                ['CONTENT ✅',          'SP_COLAB_MKT v3 · FRAME-EDITORIAL'],
                ['EMAIL ✅',            'SP_EMAIL v2 · FRAME-DRIP'],
                ['SEO ✅',              'SP_SEO v1.2 · FRAME-AUDIT'],
                ['SOCIAL ✅',           'SP_SOCIAL v1'],
                ['ANALYTICS ✅',        'SP_ANALYTICS · FRAME-KPI'],
                ['CONTENT_STRATEGY',   'SP + FRAME (criar)'],
                ['PR',                 'SP + FRAME (criar)'],
                ['DISTRIBUTOR',        'SP (criar)'],
              ].map(([a, sp], i) => (
                <div key={i} style={{ display: 'grid', gridTemplateColumns: '1fr 1.4fr' }}>
                  <div style={{ ...tableCell, fontFamily: 'var(--font-mono)', fontSize: 11, color: 'var(--ai-500)' }}>{a}</div>
                  <div style={{ ...tableCellMuted, fontFamily: 'var(--font-mono)', fontSize: 10.5 }}>{sp}</div>
                </div>
              ))}
            </div>
          </div>

          {/* Onde é consumido */}
          <div>
            <div style={sectionLabel}>ONDE CADA AGENTE É CONSUMIDO</div>
            <div style={{ border: '1px solid var(--border)', borderRadius: 10, overflow: 'hidden' }}>
              <div style={{ display: 'grid', gridTemplateColumns: '1fr 1.4fr' }}>
                <div style={tableHeader}>Agente</div>
                <div style={tableHeader}>Módulo(s)</div>
              </div>
              {[
                ['Marca × 5',      'SP_CLIENTES · SP_COMERCIAL · SP_MARKETING'],
                ['ADS',            'Campanhas · Performance Ads · Activação'],
                ['CONTENT',        'Briefings · Campanhas · Produção'],
                ['EMAIL',          'Activação · Campanhas'],
                ['SEO',            'Plano de Comunicação · Produção'],
                ['SOCIAL',         'Campanhas · Activação'],
                ['ANALYTICS',      'Resultados · Performance · Objectivos'],
                ['Comerciais × 4', 'Resultados · Objectivos · Budget · Monitorização'],
              ].map(([a, m], i) => (
                <div key={i} style={{ display: 'grid', gridTemplateColumns: '1fr 1.4fr' }}>
                  <div style={{ ...tableCell, fontFamily: 'var(--font-mono)', fontSize: 11, color: 'var(--ai-500)' }}>{a}</div>
                  <div style={tableCellMuted}>{m}</div>
                </div>
              ))}
            </div>
          </div>

          {/* Modelos AI · custos */}
          <div>
            <div style={sectionLabel}>MODELOS AI · CUSTO / 1M TOKENS</div>
            <div style={{ border: '1px solid var(--border)', borderRadius: 10, overflow: 'hidden' }}>
              <div style={{ display: 'grid', gridTemplateColumns: '1fr 60px 60px' }}>
                <div style={tableHeader}>Modelo</div>
                <div style={{ ...tableHeader, textAlign: 'right' }}>Input</div>
                <div style={{ ...tableHeader, textAlign: 'right' }}>Output</div>
              </div>
              {[
                ['Opus 4.7',    '$15',   '$75'],
                ['Sonnet 4.6',  '$3',    '$15'],
                ['Haiku 4.5',   '$0.80', '$4'],
              ].map(([m, i, o], idx) => (
                <div key={idx} style={{ display: 'grid', gridTemplateColumns: '1fr 60px 60px' }}>
                  <div style={{ ...tableCell, fontFamily: 'var(--font-mono)', fontSize: 11, color: 'var(--ai-500)' }}>{m}</div>
                  <div style={{ ...tableCellMuted, textAlign: 'right', fontFamily: 'var(--font-mono)' }}>{i}</div>
                  <div style={{ ...tableCellMuted, textAlign: 'right', fontFamily: 'var(--font-mono)' }}>{o}</div>
                </div>
              ))}
            </div>
            <div style={{ fontSize: 10.5, color: 'var(--text-dim)', marginTop: 6, lineHeight: 1.5 }}>
              Sonnet cobre ~90%. Opus para estratégia profunda. Haiku para extracção.
            </div>
          </div>
        </div>
      </div>
    </div>
  );
};

// ============ Placeholder para ecrãs ainda não construídos ============
const MktComingSoon = ({ label }) => (
  <div style={{ padding: 48, textAlign: 'center', color: 'var(--text-muted)' }}>
    <div className="font-display" style={{ fontSize: 18, color: 'var(--text)', marginBottom: 8 }}>{label}</div>
    <div style={{ fontSize: 13 }}>Em construção.</div>
  </div>
);

// ============ Overview — ecrã inicial do módulo ============
const MktOverview = ({ setSub }) => (
  <div style={{ padding: 32, display: 'flex', flexDirection: 'column', gap: 24 }}>
    <div>
      <div className="font-display" style={{ fontSize: 22, color: 'var(--text)', marginBottom: 4 }}>Marketing</div>
      <div style={{ color: 'var(--text-muted)', fontSize: 14 }}>Selecciona um módulo para começar.</div>
    </div>
    <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(180px, 1fr))', gap: 12 }}>
      {[
        { id: 'marcas',          label: 'Marcas',         desc: '5 PMs · dashboard por marca' },
        { id: 'objectivos',      label: 'Objectivos',     desc: 'Business Plan vs real' },
        { id: 'briefings',       label: 'Briefings',      desc: 'Knowledge base por marca' },
        { id: 'conteudos',       label: 'Conteúdos',      desc: 'AI Strategist · gate RL' },
        { id: 'producao',        label: 'Produção',        desc: 'FLUX · Puppeteer · R2' },
        { id: 'publicacao',      label: 'Publicação',     desc: 'Execução multi-canal' },
        { id: 'sdr',             label: 'SDR',            desc: 'Qualificação · CRM' },
        { id: 'resultados',      label: 'Resultados',     desc: 'Todos os canais · BP overview' },
        { id: 'performance-ads', label: 'Performance Ads',desc: 'Meta · Google · LinkedIn' },
      ].map(item => (
        <div key={item.id} className="card" onClick={() => setSub(item.id)}
          style={{ padding: 16, cursor: 'pointer' }}
          onMouseEnter={e => e.currentTarget.style.background = 'var(--bg-hover)'}
          onMouseLeave={e => e.currentTarget.style.background = ''}>
          <div style={{ fontWeight: 600, color: 'var(--text)', marginBottom: 4 }}>{item.label}</div>
          <div style={{ fontSize: 12, color: 'var(--text-muted)' }}>{item.desc}</div>
        </div>
      ))}
    </div>
  </div>
);

// ============ Inner: o que vai dentro do MktBrandProvider ============
const MarketingInner = ({ onOpenChat, userName, userTipo }) => {
  const [sub, setSub] = useSubNav('digi-marketing-sub', 'inicio');
  const [mktUserEmail, setMktUserEmail] = React.useState(null);
  const BrandPills = window.MktBrandPills;

  React.useEffect(() => {
    fetch('/api/marketing/me' + (window.location.search || ''))
      .then(r => r.ok ? r.json() : null)
      .then(u => { if (u?.email) setMktUserEmail(u.email); })
      .catch(() => {});
  }, []);

  React.useEffect(() => {
    window.mktNavToSub = setSub;
    return () => { delete window.mktNavToSub; };
  }, [setSub]);

  React.useEffect(() => {
    const onKey = (e) => {
      if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') return;
      if (e.metaKey || e.ctrlKey || e.altKey) return;
      const map = { '1': 'inicio', '2': 'marcas', '3': 'objectivos', '4': 'briefings', '5': 'conteudos', '6': 'publicacao', '7': 'sdr', '8': 'resultados', '9': 'performance-ads' };
      if (map[e.key]) setSub(map[e.key]);
    };
    window.addEventListener('keydown', onKey);
    return () => window.removeEventListener('keydown', onKey);
  }, []);

  const renderSub = () => {
    if (sub === 'inicio')          return window.MktInicioScreen       ? <window.MktInicioScreen setSub={setSub} userName={userName} />                          : <MktOverview setSub={setSub} />;
    if (sub === 'marcas')          return window.MktMarcasScreen       ? <window.MktMarcasScreen />                                          : <MktComingSoon label="Marcas" />;
    if (sub === 'objectivos')      return window.MktObjectivosScreen   ? <window.MktObjectivosScreen />                                      : <MktComingSoon label="Objectivos" />;
    if (sub === 'briefings')       return window.MktBriefingsScreen    ? <window.MktBriefingsScreen userName={userName} userTipo={userTipo} userEmail={mktUserEmail} onNavToSub={setSub} /> : <MktComingSoon label="Briefings" />;
    if (sub === 'campanhas')       return window.MktCampanhasScreen    ? <window.MktCampanhasScreen onOpenChat={onOpenChat} userEmail={mktUserEmail} /> : <MktComingSoon label="Campanhas" />;
    if (sub === 'conteudos')       return window.MktProducaoScreen     ? <window.MktProducaoScreen userEmail={mktUserEmail} />               : <MktComingSoon label="Produção de Conteúdos" />;
    if (sub === 'producao')       return window.MktProducaoScreen     ? <window.MktProducaoScreen userEmail={mktUserEmail} />               : <MktComingSoon label="Produção" />;
    if (sub === 'estrategia')      return window.MktEstrategiaScreen   ? <window.MktEstrategiaScreen />                                       : <MktComingSoon label="Estratégia" />;
    if (sub === 'plano-comunicacao') return window.MktPlanoComunicacaoScreen ? <window.MktPlanoComunicacaoScreen userEmail={mktUserEmail} /> : <MktComingSoon label="Plano de Comunicação" />;
    if (sub === 'crm')             return window.MktCRMScreen          ? <window.MktCRMScreen userName={userName} />                         : <MktComingSoon label="CRM" />;
    if (sub === 'publicacao')      return window.MktActivacaoScreen    ? <window.MktActivacaoScreen />                                       : <MktComingSoon label="Publicação" />;
    if (sub === 'open-houses')     return window.MktOpenHousesScreen   ? <window.MktOpenHousesScreen userName={userName} />                                      : <MktComingSoon label="Open Houses" />;
    if (sub === 'sdr')             return window.MktLeadsScreen        ? <window.MktLeadsScreen userName={userName} />                                           : <MktComingSoon label="SDR" />;
    if (sub === 'resultados')      return window.MktPerformance360Screen ? <window.MktPerformance360Screen onOpenChat={onOpenChat} userName={userName} />        : <MktComingSoon label="Resultados" />;
    if (sub === 'performance-ads') return window.MktPerformance        ? <window.MktPerformance onOpenChat={onOpenChat} />                   : <MktComingSoon label="Performance Ads" />;
    if (sub === 'budget')          return window.MktBudgetScreen       ? <window.MktBudgetScreen />              : <MktComingSoon label="Budget" />;
    if (sub === 'clipping')        return window.MktClippingScreen     ? <window.MktClippingScreen userName={userName} /> : <MktComingSoon label="Clipping" />;
    if (sub === 'agentes')         return <MktSubAgentes onOpenChat={onOpenChat} onOpenSeo={() => setSub('seo')} userName={userName} />;
    return <MktOverview setSub={setSub} />;
  };

  return (
    <div style={{ background: 'var(--bg)', height: '100%', minHeight: 0, overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>
      {/* Brand tabs vivem SEMPRE dentro do header do módulo (padrão canónico Farben AI).
          Zero brand pills globais — cada screen decide se precisa e mostra internamente. */}
      <div style={{ flex: 1, minWidth: 0, minHeight: 0, overflow: 'hidden' }}>
        {renderSub()}
      </div>
    </div>
  );
};

// ============ Outer wrapper ============
const MarketingScreenWrapper = ({ variation, onOpenChat, userName, userTipo }) => {
  const Provider = window.MktBrandProvider;
  if (!Provider) return <MarketingInner onOpenChat={onOpenChat} userName={userName} userTipo={userTipo} />;
  return (
    <Provider>
      <MarketingInner onOpenChat={onOpenChat} userName={userName} userTipo={userTipo} />
    </Provider>
  );
};

window.MarketingScreenWrapper = MarketingScreenWrapper;
