// ═══════════════════════════════════════════════════════════════
// SCREEN · Documentos GC · Intranet Escalab
// ═══════════════════════════════════════════════════════════════

// ── Dados ─────────────────────────────────────────────────────────────────────

const BRIGADISTAS = [
  { nome: 'André Anselmo',       tel: '31 92005-8721' },
  { nome: 'Breno Oliveira',      tel: '31 99509-1405' },
  { nome: 'Carolina Lima',       tel: '31 99137-4960' },
  { nome: 'Davyston Pedersoli',  tel: '31 98795-7219' },
  { nome: 'Daniel Bicalho',      tel: '31 99683-0800' },
  { nome: 'Gustavo Spagnol',     tel: '31 99317-7541' },
  { nome: 'Jorge Filipe',        tel: '31 99310-3249' },
  { nome: 'Júlia Braga',         tel: '31 97133-2847' },
  { nome: 'Juliana Ribeiro',     tel: '31 98557-3855' },
  { nome: 'Rafaela Leal',        tel: '31 99555-1408' },
  { nome: 'Yasmim dos Santos',   tel: '31 99860-2885' },
];

const LOCAIS_INFO = [
  { nome: 'UFMG', cor: '#1F4A8A', bg: '#EEF3FA', icon: '🎓',
    items: [
      { label: 'WiFi',     val: 'Escalab' },
      { label: 'Senha',    val: 'EscaLAB2023' },
      { label: 'Endereço', val: 'Rua Mário Werneck, 2 - Pampulha, Belo Horizonte - MG' },
    ],
  },
  { nome: 'CIT-SENAI', cor: '#6B3FA0', bg: '#F4EEFF', icon: '🏭',
    items: [
      { label: 'WiFi',     val: 'CIT' },
      { label: 'Senha',    val: 'S3NA1@MG' },
      { label: 'Endereço', val: 'R. Michel Echenique, 2000 - Horto Florestal, Belo Horizonte - MG' },
      { label: 'Telefone', val: '(31) 3489-2248' },
    ],
  },
  { nome: 'Acesso à Intranet', cor: '#005E4D', bg: '#E6F5F1', icon: '🌐',
    items: [
      { label: 'Usuário', val: 'Escalab' },
      { label: 'Senha',   val: 'Colab@EscaLAB' },
    ],
  },
];

// Aniversariantes derivados dos dados dos colaboradores · ver getAniversariantesDoMes() em data.jsx
// Escala Presencial 2026.1 = ESCALA_2026 / BRIGADISTAS_LOCAL definidos na secao SecaoEscala.

const ACESSO_RAPIDO_PADRAO = [
  { label: 'Links GC',                icon: 'org',       cor: '#00967B', modalId: 'links_gc',           grupo: 'gc'           },
  { label: 'Canal de Denúncias',      icon: 'warn',      cor: '#B3261E', url: 'https://forms.gle/ysH7xrBMQrx2deVN6', grupo: 'gc' },
  { label: 'Forms de Ocorrência',     icon: 'clipboard', cor: '#7A4A00', url: 'https://docs.google.com/forms/d/e/1FAIpQLSfxXWEjkdwrdBI1ST6IQsONU0OqeKeEczW_I6s1y3Le9Gb-Zw/viewform', grupo: 'gc' },
  { label: 'Reconhecimento pro jornal', icon: 'trophy', cor: '#00836B', url: 'https://forms.gle/YYmHJ2Fy2ayXuXWY7', grupo: 'gc' },
  { label: 'Missão, Visão e Valores', icon: 'clipboard', cor: '#005E4D', url: 'https://drive.google.com/drive/folders/1rQY_HHQoewHluNHrsncgYmsejqvJ6D1-', grupo: 'gc' },
  { label: 'Organograma e Salários',  icon: 'org',       cor: '#1F4A8A', url: 'https://drive.google.com/drive/folders/1xEoEEV7WmXPF_UYvQUoM7OT-nTrFnMrc', grupo: 'gc' },
  { label: 'Escalab Day',             icon: 'star',      cor: '#6B3FA0', url: 'https://drive.google.com/drive/folders/1mHsW2Uf18ezImDRgDmhSTnssIHc7uKzq', grupo: 'operacional' },
  { label: 'Escalab School',          icon: 'plus',      cor: '#E89B3B', url: 'https://forms.gle/Q8CX1dj8prD6UYzY8', grupo: 'operacional' },
  { label: 'Submissão de eventos',    icon: 'calendar',  cor: '#1F4A8A', url: 'https://docs.google.com/forms/d/e/1FAIpQLSewRQr5CisPjd89_Aks1rc2eaff1iMjn9EtdTAuoyRpLw74fA/viewform', grupo: 'operacional' },
  { label: 'Liberação UFMG e CIT',    icon: 'lock',      cor: '#6B3FA0', modalId: 'liberacao_ufmg_cit', grupo: 'operacional'  },
  { label: 'Reserva de auditório',    icon: 'calendar',  cor: '#7A4A00', modalId: 'reserva_auditorio',  grupo: 'operacional'  },
  { label: 'Biblioteca',              icon: 'file',      cor: '#4A5560', url: 'https://docs.google.com/spreadsheets/d/14IB88_yTDysuflbY9yCBdUlyrD5Lbd5aSoxqMhw0MVQ/edit?usp=drivesdk', grupo: 'conhecimento' },
  { label: 'Material gráfico',        icon: 'eye',       cor: '#E89B3B', url: 'https://drive.google.com/drive/folders/1v5kVMAIrr6GQ7HaQnhcjyc0MkQbhDyEU', grupo: 'conhecimento' },
  { label: 'E-mail no celular',       icon: 'user',      cor: '#E89B3B', modalId: 'email_celular',      grupo: 'conhecimento' },
  { label: 'Squad de vendas',         icon: 'users',     cor: '#1F4A8A', url: 'https://drive.google.com/drive/u/0/folders/19ufq8UhXzviim2I1dkk48MqxUiLMRKxK?sort=13&direction=a', grupo: 'formularios' },
];

// Itens configuráveis (admin pode acrescentar/retirar via modal de configuração)
// v4 (19/06/26): +4 tiles (Reconhecimento, Escalab Day/School, Organograma), +Forms Ocorrencia separado de Denuncia, URL denuncia curta (forms.gle), Squad URL nova.
const ACESSO_RAPIDO_KEY = 'escalab_acesso_rapido_v4';
function getAcessoRapido() {
  try {
    const raw = localStorage.getItem(ACESSO_RAPIDO_KEY);
    if (raw) return JSON.parse(raw);
  } catch {}
  return ACESSO_RAPIDO_PADRAO;
}
function salvarAcessoRapido(lista) {
  try { localStorage.setItem(ACESSO_RAPIDO_KEY, JSON.stringify(lista)); } catch {}
}
// Backwards-compat para arquivos que referenciam ACESSO_RAPIDO direto
const ACESSO_RAPIDO = ACESSO_RAPIDO_PADRAO;

const GRUPOS_ACESSO = [
  { id: 'gc',           label: 'Gestão & Cultura',  emoji: '🤝', cor: '#00967B' },
  { id: 'operacional',  label: 'Operacional',        emoji: '⚙️', cor: '#1F4A8A' },
  { id: 'conhecimento', label: 'Conhecimento',       emoji: '📚', cor: '#7A4A00' },
  { id: 'formularios',  label: 'Formulários',        emoji: '📋', cor: '#B3261E' },
];

const BENEFICIOS_LISTA = [
  { titulo: 'Vale Refeição', detalhe: 'Cartão Flash · R$ 35,00/dia útil', icon: 'trophy', cor: '#E89B3B' },
  { titulo: 'Vale Transporte / Vale Combustível', detalhe: 'Conforme necessidade · escolha no admissão', icon: 'calendar', cor: '#1F4A8A' },
  { titulo: 'Plano de Saúde', detalhe: 'Sulamérica · efetivado após 90 dias · plano básico custeado', icon: 'plus', cor: '#00836B' },
  { titulo: 'Plano Odontológico', detalhe: 'Disponível mediante adesão · valor descontado em folha', icon: 'plus', cor: '#6B3FA0' },
  { titulo: 'Day Off de Aniversário', detalhe: '1 dia extra de folga no mês do seu aniversário', icon: 'star', cor: '#B56500' },
  { titulo: 'Seguro de Vida', detalhe: 'Cobertura básica em grupo', icon: 'lock', cor: '#4A5560' },
  { titulo: 'Auxílio Educação', detalhe: 'Reembolso parcial em cursos e certificações alinhados ao cargo', icon: 'star', cor: '#00967B' },
  { titulo: 'Escalab School', detalhe: 'Trilhas internas de capacitação contínua', icon: 'trophy', cor: '#005E4D' },
  { titulo: 'Happy Hour & Eventos', detalhe: 'Confraternizações trimestrais + Escalab Day anual', icon: 'users', cor: '#E89B3B' },
  { titulo: 'Home office flexível', detalhe: 'Modelo híbrido por setor · alinhar com seu gestor', icon: 'calendar', cor: '#1F4A8A' },
];

const LINKS_GC = {
  lideranca: [
    { label: 'Entrada de Novo Colaborador', cor: '#00967B', icon: 'plus',     url: 'https://form.asana.com/?k=WUXxMEsxsKs07yxC9vtdfg&d=1203839912394444' },
    { label: 'Desligamento',                cor: '#B3261E', icon: 'close',    url: 'https://form.asana.com/?k=1Uq7H-qW9vtVff7mWhnVhA&d=1203839912394444' },
    { label: 'Promoção / Mudança de bolsa', cor: '#E89B3B', icon: 'trend_up', url: 'https://form.asana.com/?k=QN4DTisPrLith96C-8s63Q&d=1203839912394444' },
  ],
  todos: [
    { label: 'Reconhecimento pro jornal',   cor: '#00967B', icon: 'trophy',   url: 'https://forms.gle/YYmHJ2Fy2ayXuXWY7' },
    { label: 'Canal de Denúncias',          cor: '#B3261E', icon: 'warn',     url: 'https://forms.gle/ysH7xrBMQrx2deVN6' },
    { label: 'Forms de Ocorrência',         cor: '#7A4A00', icon: 'clipboard', url: 'https://docs.google.com/forms/d/e/1FAIpQLSfxXWEjkdwrdBI1ST6IQsONU0OqeKeEczW_I6s1y3Le9Gb-Zw/viewform' },
    { label: 'Escalab School',              cor: '#E89B3B', icon: 'plus',     url: 'https://forms.gle/Q8CX1dj8prD6UYzY8' },
    { label: 'Escalab Day',                 cor: '#6B3FA0', icon: 'star',     url: 'https://drive.google.com/drive/folders/1mHsW2Uf18ezImDRgDmhSTnssIHc7uKzq' },
    { label: 'Missão, Visão e Valores',     cor: '#005E4D', icon: 'clipboard', url: 'https://drive.google.com/drive/folders/1rQY_HHQoewHluNHrsncgYmsejqvJ6D1-' },
    { label: 'Organograma e Salários',      cor: '#1F4A8A', icon: 'org',      url: 'https://drive.google.com/drive/folders/1xEoEEV7WmXPF_UYvQUoM7OT-nTrFnMrc' },
    { label: 'Escala',                      cor: '#4A5560', icon: 'calendar' },
    { label: 'Férias e Day Off',            cor: '#005E4D', icon: 'calendar' },
    { label: 'Justificativa de Ausência',   cor: '#E89B3B', icon: 'file'     },
  ],
};

const SETORES_ARQUIVOS_DEFAULT = [
  { nome: 'Administrativo financeiro', cor: '#1F4A8A', url: '#' },
  { nome: 'Comercial',                  cor: '#00967B', url: '#' },
  { nome: 'Marketing',                  cor: '#E89B3B', url: '#' },
  { nome: 'Diretoria estratégica',      cor: '#4A5560', url: '#' },
  { nome: 'ESG',                        cor: '#005E4D', url: '#' },
  { nome: 'NNE + EVTE',                 cor: '#6B3FA0', url: '#' },
  { nome: 'PMO',                        cor: '#00836B', url: '#' },
  { nome: 'P&D e Escalonamento',        cor: '#B3261E', url: '#' },
  { nome: 'Redes hub',                  cor: '#7A4A00', url: '#', inativo: true },
  { nome: 'GC',                         cor: '#00967B', url: '#' },
  { nome: 'VB',                         cor: '#E89B3B', url: '#' },
];
const SETORES_ARQUIVOS_KEY = 'escalab_setores_arquivos_v1';
function getSetoresArquivos() {
  try {
    const raw = localStorage.getItem(SETORES_ARQUIVOS_KEY);
    if (raw) return JSON.parse(raw);
  } catch {}
  return SETORES_ARQUIVOS_DEFAULT;
}
function salvarSetoresArquivos(arr) {
  try { localStorage.setItem(SETORES_ARQUIVOS_KEY, JSON.stringify(arr)); } catch {}
}
const SETORES_ARQUIVOS = SETORES_ARQUIVOS_DEFAULT; // back-compat

const DATAS_IMPORTANTES_BASE = [
  { data: '2025-05-20', tipo: 'treinamento', titulo: 'Liderança e gestão de times',    local: 'Sala B'           },
  { data: '2025-06-03', tipo: 'treinamento', titulo: 'Excel para análise de dados',    local: 'Lab. Informática' },
  { data: '2025-06-15', tipo: 'evento',      titulo: 'Escalab Day · 2025',             local: 'UFMG'             },
  { data: '2025-07-01', tipo: 'rh',          titulo: 'Abertura ciclo AVD · 2º sem',    local: 'Online'           },
];

function getDatasImportantes() {
  try {
    const extras = JSON.parse(localStorage.getItem('escalab_datas_importantes') || '[]');
    const todas = [...DATAS_IMPORTANTES_BASE, ...extras];
    const vistas = new Set();
    return todas.filter(d => { const k = d.data + d.titulo; if (vistas.has(k)) return false; vistas.add(k); return true; }).sort((a, b) => a.data.localeCompare(b.data));
  } catch { return DATAS_IMPORTANTES_BASE; }
}

const JORNAL_KEY = 'escalab_jornal_leituras';
// URLs dos jornais ficam no storage (RH cadastra cada edição via UI no Admin do jornal).
// O seed traz placeholders ('#'); quando vazio, o botão "Ler agora" alerta o usuário.
const JORNAL_URLS_KEY = 'escalab_jornal_urls';
const JORNAL_EDICOES_BASE = [
  { id: 'J001', titulo: 'Jornal Interno · Edição Maio 2026',  data: '2026-05-01', url: '', leram: [1,2,3,10,14,15,16] },
  { id: 'J002', titulo: 'Jornal Interno · Edição Abril 2026', data: '2026-04-01', url: '', leram: [1,2,3,4,5,10,14,15,16,17,18,19,20] },
];
function getJornalUrls() {
  try { return JSON.parse(localStorage.getItem(JORNAL_URLS_KEY) || '{}'); } catch { return {}; }
}
function salvarJornalUrl(id, url) {
  try {
    const all = getJornalUrls();
    all[id] = url;
    localStorage.setItem(JORNAL_URLS_KEY, JSON.stringify(all));
  } catch {}
}
// Edições já com a URL "resolvida" (storage tem prioridade sobre o seed)
const JORNAL_EDICOES = (() => {
  const urls = getJornalUrls();
  return JORNAL_EDICOES_BASE.map(j => ({ ...j, url: urls[j.id] || j.url || '' }));
})();
function getUrlAtual(jornalId) {
  const urls = getJornalUrls();
  const base = JORNAL_EDICOES_BASE.find(j => j.id === jornalId);
  return urls[jornalId] || base?.url || '';
}

function getJornalLeituras() {
  try { return JSON.parse(localStorage.getItem(JORNAL_KEY) || '{}'); } catch { return {}; }
}

// ── Modal: Links GC ───────────────────────────────────────────────────────────

const ModalLinksGC = ({ onClose, user }) => (
  <div onClick={onClose} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', backdropFilter:'blur(6px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
    <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:20, width:'100%', maxWidth:440, animation:'popIn .22s var(--ease-out)', maxHeight:'90vh', overflow:'auto', boxShadow:'0 24px 80px rgba(0,0,0,.18)' }}>
      <div style={{ padding:'22px 24px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
        <div>
          <h3 style={{ margin:0, fontSize:18, fontWeight:800 }}>Links GC</h3>
          <div style={{ fontSize:12.5, color:'var(--escalab-mute)', marginTop:2 }}>Formulários e processos do time</div>
        </div>
        <button onClick={onClose} style={{ border:0, background:'var(--escalab-paper)', cursor:'pointer', color:'var(--escalab-mute)', width:32, height:32, borderRadius:8, display:'flex', alignItems:'center', justifyContent:'center' }}>
          <Icon name="close" size={16} />
        </button>
      </div>
      <div style={{ padding:'18px 24px', display:'flex', flexDirection:'column', gap:18 }}>
        {(user?.perfil === 'admin' || user?.perfil === 'gestor') && (
          <div>
            <div style={{ fontSize:10.5, fontWeight:700, color:'var(--escalab-mute)', textTransform:'uppercase', letterSpacing:'.12em', marginBottom:10 }}>Para a Liderança</div>
            <div style={{ display:'flex', flexDirection:'column', gap:7 }}>
              {LINKS_GC.lideranca.map(l => (
                <a key={l.label} href={l.url || '#'} target={l.url ? '_blank' : undefined} rel={l.url ? 'noopener noreferrer' : undefined} onClick={e => { if (!l.url) e.preventDefault(); }} style={{ display:'flex', alignItems:'center', gap:12, padding:'12px 16px', borderRadius:12, background:l.cor+'12', color:l.cor, fontWeight:600, fontSize:13.5, textDecoration:'none', border:`1px solid ${l.cor}25`, transition:'all .15s' }}
                  onMouseEnter={e => { e.currentTarget.style.background = l.cor+'22'; e.currentTarget.style.transform = 'translateX(3px)'; }}
                  onMouseLeave={e => { e.currentTarget.style.background = l.cor+'12'; e.currentTarget.style.transform = 'none'; }}>
                  <div style={{ width:32, height:32, borderRadius:9, background:l.cor+'20', display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}><Icon name={l.icon} size={15} /></div>
                  {l.label}
                  <Icon name="chev_right" size={13} style={{ marginLeft:'auto' }} />
                </a>
              ))}
            </div>
          </div>
        )}
        <div>
          <div style={{ fontSize:10.5, fontWeight:700, color:'var(--escalab-mute)', textTransform:'uppercase', letterSpacing:'.12em', marginBottom:10 }}>Para Todos os Colaboradores</div>
          <div style={{ display:'flex', flexDirection:'column', gap:6 }}>
            {LINKS_GC.todos.map(l => (
              <a key={l.label} href={l.url || '#'} target={l.url ? '_blank' : undefined} rel={l.url ? 'noopener noreferrer' : undefined} onClick={e => { if (!l.url) e.preventDefault(); }} style={{ display:'flex', alignItems:'center', gap:12, padding:'10px 14px', borderRadius:10, background:l.cor+'0f', color:l.cor, fontWeight:500, fontSize:13.5, textDecoration:'none', border:`1px solid ${l.cor}20`, transition:'all .15s' }}
                onMouseEnter={e => { e.currentTarget.style.background = l.cor+'1c'; e.currentTarget.style.transform = 'translateX(2px)'; }}
                onMouseLeave={e => { e.currentTarget.style.background = l.cor+'0f'; e.currentTarget.style.transform = 'none'; }}>
                <div style={{ width:28, height:28, borderRadius:7, background:l.cor+'18', display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}><Icon name={l.icon} size={13} /></div>
                {l.label}
              </a>
            ))}
          </div>
        </div>
      </div>
    </div>
  </div>
);

// ── Modal: Meus Benefícios ────────────────────────────────────────────────────

const ModalBeneficios = ({ onClose }) => (
  <div onClick={onClose} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', backdropFilter:'blur(6px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
    <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:20, width:'100%', maxWidth:520, animation:'popIn .22s var(--ease-out)', maxHeight:'90vh', overflow:'auto', boxShadow:'0 24px 80px rgba(0,0,0,.18)' }}>
      <div style={{ padding:'22px 24px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
        <div>
          <h3 style={{ margin:0, fontSize:18, fontWeight:800 }}>Meus Benefícios</h3>
          <div style={{ fontSize:12.5, color:'var(--escalab-mute)', marginTop:2 }}>O que você tem direito como colaborador Escalab</div>
        </div>
        <button onClick={onClose} style={{ border:0, background:'var(--escalab-paper)', cursor:'pointer', color:'var(--escalab-mute)', width:32, height:32, borderRadius:8, display:'flex', alignItems:'center', justifyContent:'center' }}>
          <Icon name="close" size={16} />
        </button>
      </div>
      <div style={{ padding:'18px 24px', display:'flex', flexDirection:'column', gap:10 }}>
        {BENEFICIOS_LISTA.map(b => (
          <div key={b.titulo} style={{ display:'flex', gap:12, alignItems:'flex-start', padding:'12px 14px', borderRadius:10, background:b.cor+'0d', border:`1px solid ${b.cor}25` }}>
            <div style={{ width:34, height:34, borderRadius:9, background:b.cor+'22', color:b.cor, display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}>
              <Icon name={b.icon} size={15} />
            </div>
            <div>
              <div style={{ fontSize:13.5, fontWeight:700, color:b.cor }}>{b.titulo}</div>
              <div style={{ fontSize:12.5, color:'var(--escalab-slate)', marginTop:2, lineHeight:1.5 }}>{b.detalhe}</div>
            </div>
          </div>
        ))}
        <div style={{ fontSize:11.5, color:'var(--escalab-mute)', textAlign:'center', marginTop:6, lineHeight:1.5 }}>
          Em caso de dúvidas, fale com o GC em <strong>gente.cultura@escalab.com.br</strong>
        </div>
      </div>
    </div>
  </div>
);

// ── Modal: Liberação UFMG e CIT ───────────────────────────────────────────────

const ModalLiberacaoUFMGCIT = ({ onClose }) => (
  <div onClick={onClose} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', backdropFilter:'blur(6px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
    <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:20, width:'100%', maxWidth:520, animation:'popIn .22s var(--ease-out)', maxHeight:'90vh', overflow:'auto', boxShadow:'0 24px 80px rgba(0,0,0,.18)' }}>
      <div style={{ padding:'22px 24px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
        <div>
          <h3 style={{ margin:0, fontSize:18, fontWeight:800 }}>Liberação UFMG e CIT</h3>
          <div style={{ fontSize:12.5, color:'var(--escalab-mute)', marginTop:2 }}>Como solicitar entrada no CIT-SENAI</div>
        </div>
        <button onClick={onClose} style={{ border:0, background:'var(--escalab-paper)', cursor:'pointer', color:'var(--escalab-mute)', width:32, height:32, borderRadius:8, display:'flex', alignItems:'center', justifyContent:'center' }}>
          <Icon name="close" size={16} />
        </button>
      </div>
      <div style={{ padding:'18px 24px', fontSize:13.5, lineHeight:1.6, color:'var(--escalab-slate)' }}>
        <p style={{ marginTop:0 }}>
          Para solicitar entrada no <strong>CIT-Senai</strong>, envie uma mensagem para uma das pessoas abaixo informando:
        </p>
        <ul style={{ paddingLeft:18, margin:'10px 0 18px' }}>
          <li><strong>Data</strong> da liberação</li>
          <li><strong>Nome completo</strong> da pessoa a ser liberada</li>
          <li><strong>Documento</strong> (CPF ou RG)</li>
        </ul>
        <div style={{ display:'flex', flexDirection:'column', gap:8 }}>
          {[
            { nome:'Clara', area:'Gente e Cultura',  cor:'#00967B' },
            { nome:'Maria', area:'Diretoria',        cor:'#1F4A8A' },
            { nome:'Breno', area:'Diretoria',        cor:'#6B3FA0' },
          ].map(p => (
            <div key={p.nome} style={{ display:'flex', alignItems:'center', gap:12, padding:'12px 14px', borderRadius:10, background:p.cor+'0f', border:`1px solid ${p.cor}25` }}>
              <div style={{ width:32, height:32, borderRadius:9, background:p.cor+'22', color:p.cor, display:'flex', alignItems:'center', justifyContent:'center', fontWeight:800 }}>
                {p.nome.charAt(0)}
              </div>
              <div>
                <div style={{ fontSize:13.5, fontWeight:700, color:p.cor }}>{p.nome}</div>
                <div style={{ fontSize:12, color:'var(--escalab-mute)' }}>{p.area}</div>
              </div>
            </div>
          ))}
        </div>
      </div>
    </div>
  </div>
);

// ── Modal: Reserva de auditório / sala ────────────────────────────────────────

const ModalReservaAuditorio = ({ onClose }) => (
  <div onClick={onClose} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', backdropFilter:'blur(6px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
    <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:20, width:'100%', maxWidth:580, animation:'popIn .22s var(--ease-out)', maxHeight:'90vh', overflow:'auto', boxShadow:'0 24px 80px rgba(0,0,0,.18)' }}>
      <div style={{ padding:'22px 24px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
        <div>
          <h3 style={{ margin:0, fontSize:18, fontWeight:800 }}>Reserva de auditório / sala</h3>
          <div style={{ fontSize:12.5, color:'var(--escalab-mute)', marginTop:2 }}>UFMG e CIT-SENAI</div>
        </div>
        <button onClick={onClose} style={{ border:0, background:'var(--escalab-paper)', cursor:'pointer', color:'var(--escalab-mute)', width:32, height:32, borderRadius:8, display:'flex', alignItems:'center', justifyContent:'center' }}>
          <Icon name="close" size={16} />
        </button>
      </div>
      <div style={{ padding:'18px 24px', fontSize:13.5, lineHeight:1.6, color:'var(--escalab-slate)', display:'flex', flexDirection:'column', gap:18 }}>
        <div style={{ padding:'14px 16px', borderRadius:12, background:'#1F4A8A0f', border:'1px solid #1F4A8A25' }}>
          <div style={{ fontSize:12.5, fontWeight:800, color:'#1F4A8A', textTransform:'uppercase', letterSpacing:'.08em', marginBottom:8 }}>UFMG</div>
          <p style={{ margin:'0 0 8px' }}>
            Envie mensagem para a <strong>Fabiana</strong> (colaboradora associada do setor Financeiro):
          </p>
          <div style={{ display:'flex', flexDirection:'column', gap:4, fontSize:13 }}>
            <div>📱 <strong>31 7523-1941</strong></div>
          </div>
          <p style={{ margin:'10px 0 0', fontSize:12.5, color:'var(--escalab-mute)' }}>
            Informe: <strong>local</strong> (auditório 1 ou 2), <strong>horário</strong> e <strong>dia</strong> do evento.
          </p>
        </div>
        <div style={{ padding:'14px 16px', borderRadius:12, background:'#005E4D0f', border:'1px solid #005E4D25' }}>
          <div style={{ fontSize:12.5, fontWeight:800, color:'#005E4D', textTransform:'uppercase', letterSpacing:'.08em', marginBottom:8 }}>CIT-SENAI</div>
          <p style={{ margin:'0 0 8px' }}>
            Envie e-mail para os três endereços abaixo:
          </p>
          <div style={{ display:'flex', flexDirection:'column', gap:4, fontSize:12.5, fontFamily:'monospace' }}>
            <div>📧 afirsen@fiemg.com.br</div>
            <div>📧 ediasgomes@fiemg.com.br</div>
            <div>📧 mclaraferreira@escalab.com.br</div>
          </div>
          <p style={{ margin:'10px 0 0', fontSize:12.5, color:'var(--escalab-mute)' }}>
            Informe: <strong>dia</strong> do evento, <strong>local</strong> (sala ou auditório) e <strong>horário</strong>. Geralmente a Amanda liga para confirmar — aguarde o e-mail de confirmação.
          </p>
        </div>
      </div>
    </div>
  </div>
);

// ── Modal: E-mail no celular (3 abas) ─────────────────────────────────────────

const ModalEmailCelular = ({ onClose }) => {
  const [aba, setAba] = useState('android');
  const abas = [
    { id:'android', label:'Android',         icon:'phone' },
    { id:'ios',     label:'iOS (Apple)',     icon:'phone' },
    { id:'info',    label:'Servidor / Portas', icon:'info' },
  ];
  return (
    <div onClick={onClose} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', backdropFilter:'blur(6px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
      <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:20, width:'100%', maxWidth:640, animation:'popIn .22s var(--ease-out)', maxHeight:'90vh', overflow:'auto', boxShadow:'0 24px 80px rgba(0,0,0,.18)' }}>
        <div style={{ padding:'22px 24px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
          <div>
            <h3 style={{ margin:0, fontSize:18, fontWeight:800 }}>E-mail no celular</h3>
            <div style={{ fontSize:12.5, color:'var(--escalab-mute)', marginTop:2 }}>Configure o e-mail Escalab no seu aparelho</div>
          </div>
          <button onClick={onClose} style={{ border:0, background:'var(--escalab-paper)', cursor:'pointer', color:'var(--escalab-mute)', width:32, height:32, borderRadius:8, display:'flex', alignItems:'center', justifyContent:'center' }}>
            <Icon name="close" size={16} />
          </button>
        </div>
        <div style={{ borderBottom:'1px solid var(--escalab-line)', display:'flex', gap:0, padding:'0 24px', background:'var(--escalab-paper)' }}>
          {abas.map(t => (
            <button key={t.id} onClick={() => setAba(t.id)} style={{ border:0, background:'none', cursor:'pointer', padding:'14px 18px', fontSize:13, fontWeight:aba===t.id?800:600, color:aba===t.id?'#00967B':'var(--escalab-mute)', borderBottom:aba===t.id?'2px solid #00967B':'2px solid transparent', transition:'all .15s' }}>
              {t.label}
            </button>
          ))}
        </div>
        <div style={{ padding:'18px 24px', fontSize:13.5, lineHeight:1.6, color:'var(--escalab-slate)' }}>
          {aba === 'android' && (
            <div>
              <p style={{ marginTop:0, fontSize:12.5, color:'var(--escalab-mute)', padding:'10px 12px', background:'var(--escalab-paper)', borderRadius:8 }}>
                Lembrete: as nomenclaturas podem variar ligeiramente entre aparelhos. Aqui usamos o app <strong>Gmail</strong> como exemplo.
              </p>
              <p>Certifique-se de ter o Gmail instalado, bem como o e-mail e senha em mãos.</p>
              <ol style={{ paddingLeft:18, display:'flex', flexDirection:'column', gap:6 }}>
                <li>No app, toque no <strong>avatar</strong> → <strong>Adicionar outra conta</strong></li>
                <li>Selecione a opção <strong>"Outro"</strong></li>
                <li>Insira o <strong>e-mail completo</strong> e avance</li>
                <li>Tipo de conta: <strong>IMAP</strong></li>
                <li>Insira a senha e avance</li>
                <li>Servidor de entrada: <code style={{ background:'#0001', padding:'2px 6px', borderRadius:4 }}>imap.hostinger.com</code></li>
                <li>Servidor de saída: <code style={{ background:'#0001', padding:'2px 6px', borderRadius:4 }}>smtp.hostinger.com</code></li>
                <li>IMAP porta <strong>993</strong> · SMTP porta <strong>465</strong> · <strong>SSL/TLS sempre ativado</strong></li>
              </ol>
              <p style={{ fontSize:12, color:'var(--escalab-mute)', marginTop:12 }}>Em caso de dúvidas, fale com a comunicação.</p>
            </div>
          )}
          {aba === 'ios' && (
            <div>
              <p style={{ marginTop:0, fontSize:12.5, color:'var(--escalab-mute)', padding:'10px 12px', background:'var(--escalab-paper)', borderRadius:8 }}>
                Configuração em um <strong>aparelho Apple</strong>. Algumas opções podem ter nomes ligeiramente diferentes entre versões do iOS.
              </p>
              <ol style={{ paddingLeft:18, display:'flex', flexDirection:'column', gap:6 }}>
                <li>Em <strong>Ajustes</strong>, vá em <strong>Senhas e contas</strong></li>
                <li>Toque em <strong>Adicionar conta</strong> → <strong>"Outra"</strong> → <strong>Adicionar conta de e-mail</strong></li>
                <li>Preencha: <strong>Nome</strong> (exibido ao destinatário), <strong>E-mail completo</strong>, <strong>Senha</strong> e <strong>Descrição</strong></li>
              </ol>
              <div style={{ display:'grid', gridTemplateColumns:'1fr 1fr', gap:10, marginTop:14 }}>
                <div style={{ padding:12, borderRadius:10, background:'#00967B0f', border:'1px solid #00967B25' }}>
                  <div style={{ fontSize:11, fontWeight:800, color:'#00967B', textTransform:'uppercase', marginBottom:6 }}>Entrada (IMAP)</div>
                  <div style={{ fontSize:12.5, fontFamily:'monospace' }}>Host: imap.hostinger.com</div>
                  <div style={{ fontSize:12.5, fontFamily:'monospace' }}>Porta: 993</div>
                </div>
                <div style={{ padding:12, borderRadius:10, background:'#1F4A8A0f', border:'1px solid #1F4A8A25' }}>
                  <div style={{ fontSize:11, fontWeight:800, color:'#1F4A8A', textTransform:'uppercase', marginBottom:6 }}>Saída (SMTP)</div>
                  <div style={{ fontSize:12.5, fontFamily:'monospace' }}>Host: smtp.hostinger.com</div>
                  <div style={{ fontSize:12.5, fontFamily:'monospace' }}>Porta: 465</div>
                </div>
              </div>
              <p style={{ fontSize:12, color:'var(--escalab-mute)', marginTop:12 }}>Se tiver qualquer dúvida, entre em contato com o setor de marketing.</p>
            </div>
          )}
          {aba === 'info' && (
            <div>
              <p style={{ marginTop:0, padding:'10px 12px', background:'#B3261E0f', border:'1px solid #B3261E25', borderRadius:8, color:'#B3261E', fontWeight:700, fontSize:13 }}>
                ⚠ SSL/TLS deve estar SEMPRE ativado.
              </p>
              <div style={{ marginTop:14, border:'1px solid var(--escalab-line)', borderRadius:10, overflow:'hidden' }}>
                <table style={{ width:'100%', borderCollapse:'collapse', fontSize:12.5 }}>
                  <thead>
                    <tr style={{ background:'var(--escalab-paper)' }}>
                      <th style={{ textAlign:'left', padding:'10px 12px', fontWeight:800, fontSize:11.5, textTransform:'uppercase', letterSpacing:'.06em' }}>Protocolo</th>
                      <th style={{ textAlign:'left', padding:'10px 12px', fontWeight:800, fontSize:11.5, textTransform:'uppercase', letterSpacing:'.06em' }}>Endereço</th>
                      <th style={{ textAlign:'left', padding:'10px 12px', fontWeight:800, fontSize:11.5, textTransform:'uppercase', letterSpacing:'.06em' }}>Porta</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr style={{ borderTop:'1px solid var(--escalab-line)' }}>
                      <td style={{ padding:'10px 12px', fontWeight:600 }}>Entrada (IMAP)</td>
                      <td style={{ padding:'10px 12px', fontFamily:'monospace' }}>imap.hostinger.com</td>
                      <td style={{ padding:'10px 12px', fontFamily:'monospace', fontWeight:700 }}>993</td>
                    </tr>
                    <tr style={{ borderTop:'1px solid var(--escalab-line)' }}>
                      <td style={{ padding:'10px 12px', fontWeight:600 }}>Saída (SMTP)</td>
                      <td style={{ padding:'10px 12px', fontFamily:'monospace' }}>smtp.hostinger.com</td>
                      <td style={{ padding:'10px 12px', fontFamily:'monospace', fontWeight:700 }}>465</td>
                    </tr>
                    <tr style={{ borderTop:'1px solid var(--escalab-line)', background:'#F8F9FA' }}>
                      <td style={{ padding:'10px 12px', fontWeight:600, color:'var(--escalab-mute)' }}>Entrada (POP)</td>
                      <td style={{ padding:'10px 12px', fontFamily:'monospace', color:'var(--escalab-mute)' }}>pop.hostinger.com</td>
                      <td style={{ padding:'10px 12px', fontFamily:'monospace', fontWeight:700, color:'var(--escalab-mute)' }}>995</td>
                    </tr>
                  </tbody>
                </table>
              </div>
              <p style={{ fontSize:11.5, color:'var(--escalab-mute)', marginTop:10 }}>
                POP só é recomendado se o IMAP não funcionar.
              </p>
            </div>
          )}
        </div>
      </div>
    </div>
  );
};

// ── Seção: Início ─────────────────────────────────────────────────────────────

// ── Tile individual do Acesso Rápido ──────────────────────────────────────────

const TileAcesso = ({ item, onModal, onRemove, editing }) => {
  const [hov, setHov] = useState(false);
  return (
    <button
      onClick={() => {
        if (editing) { onRemove?.(item.label); return; }
        if (item.modalId) { onModal(item.modalId); return; }
        if (item.url && item.url !== '#') { window.open(item.url, '_blank', 'noopener,noreferrer'); }
      }}
      onMouseEnter={() => setHov(true)}
      onMouseLeave={() => setHov(false)}
      style={{
        border: 0,
        borderRadius: 20,
        padding: '30px 16px 26px',
        cursor: 'pointer',
        fontFamily: 'var(--font-sans)',
        textAlign: 'center',
        display: 'flex',
        flexDirection: 'column',
        alignItems: 'center',
        gap: 15,
        position: 'relative',
        overflow: 'hidden',
        color: '#fff',
        background: hov
          ? `linear-gradient(145deg, ${item.cor}, ${item.cor}e6)`
          : `linear-gradient(145deg, ${item.cor}f0, ${item.cor}c0)`,
        boxShadow: hov
          ? `0 18px 40px ${item.cor}55, 0 4px 14px ${item.cor}30`
          : `0 6px 20px ${item.cor}35`,
        transform: hov ? 'translateY(-5px) scale(1.04)' : 'none',
        transition: 'all .22s cubic-bezier(.34,1.5,.64,1)',
      }}>
      {editing && (
        <div style={{ position:'absolute', top:8, right:8, background:'#B3261E', color:'#fff', borderRadius:999, width:22, height:22, display:'flex', alignItems:'center', justifyContent:'center', fontSize:12, fontWeight:800, zIndex:2 }}>×</div>
      )}
      {/* Círculos decorativos de profundidade */}
      <div style={{ position:'absolute', top:-22, right:-22, width:90, height:90, borderRadius:'50%', background:'rgba(255,255,255,.13)', pointerEvents:'none' }} />
      <div style={{ position:'absolute', bottom:-26, left:-14, width:74, height:74, borderRadius:'50%', background:'rgba(255,255,255,.08)', pointerEvents:'none' }} />
      <div style={{ position:'absolute', top:10, left:10, width:36, height:36, borderRadius:'50%', background:'rgba(255,255,255,.07)', pointerEvents:'none' }} />
      {/* Ícone */}
      <div style={{
        width: 64, height: 64, borderRadius: 17,
        background: 'rgba(255,255,255,.22)',
        display: 'flex', alignItems: 'center', justifyContent: 'center',
        position: 'relative',
        transition: 'transform .2s cubic-bezier(.34,1.5,.64,1)',
        transform: hov ? 'scale(1.15) rotate(-3deg)' : 'none',
        boxShadow: hov ? '0 6px 14px rgba(0,0,0,.15)' : 'none',
      }}>
        <Icon name={item.icon} size={30} />
      </div>
      {/* Label */}
      <span style={{ fontSize:14, fontWeight:700, lineHeight:1.3, position:'relative', letterSpacing:'-.01em', textShadow:'0 1px 4px rgba(0,0,0,.2)' }}>
        {item.label}
      </span>
    </button>
  );
};

// ── Modal: Configurar Acesso Rápido (admin) ───────────────────────────────────
const ICONES_DISPONIVEIS = ['org','warn','clipboard','calendar','lock','file','eye','user','users','star','trophy','plus','message','grid','search','check'];
const CORES_DISPONIVEIS = ['#00967B','#1F4A8A','#E89B3B','#B3261E','#6B3FA0','#005E4D','#7A4A00','#4A5560','#00836B','#B56500'];

const ModalConfigAcessoRapido = ({ onClose, onSave }) => {
  const [itens, setItens] = useState(() => getAcessoRapido());
  const [novo, setNovo] = useState({ label:'', icon:'star', cor:'#00967B', url:'#', grupo:'gc' });

  function adicionar() {
    if (!novo.label.trim()) return;
    const novos = [...itens, { ...novo, label: novo.label.trim() }];
    setItens(novos);
    setNovo({ label:'', icon:'star', cor:'#00967B', url:'#', grupo:'gc' });
  }
  function remover(label) {
    setItens(itens.filter(i => i.label !== label));
  }
  function salvar() {
    salvarAcessoRapido(itens);
    onSave?.();
    onClose();
  }
  function restaurarPadrao() {
    if (window.confirm('Restaurar lista padrão?')) setItens(ACESSO_RAPIDO_PADRAO);
  }

  return (
    <div onClick={onClose} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', backdropFilter:'blur(6px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
      <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:18, width:'100%', maxWidth:640, maxHeight:'92vh', overflow:'auto', boxShadow:'0 24px 80px rgba(0,0,0,.18)' }}>
        <div style={{ padding:'20px 24px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
          <div>
            <h3 style={{ margin:0, fontSize:17, fontWeight:800 }}>Configurar Acesso Rápido</h3>
            <div style={{ fontSize:12.5, color:'var(--escalab-mute)', marginTop:2 }}>Adicione ou remova itens do painel</div>
          </div>
          <button onClick={onClose} style={{ border:0, background:'var(--escalab-paper)', cursor:'pointer', color:'var(--escalab-mute)', width:32, height:32, borderRadius:8, display:'flex', alignItems:'center', justifyContent:'center' }}>
            <Icon name="close" size={16} />
          </button>
        </div>
        <div style={{ padding:'18px 24px', display:'flex', flexDirection:'column', gap:18 }}>
          {/* Lista atual */}
          <div>
            <div style={{ fontSize:12, fontWeight:700, color:'var(--escalab-slate)', textTransform:'uppercase', letterSpacing:'.08em', marginBottom:9 }}>Itens atuais ({itens.length})</div>
            <div style={{ display:'flex', flexDirection:'column', gap:6, maxHeight:240, overflowY:'auto', border:'1px solid var(--escalab-line)', borderRadius:10, padding:8 }}>
              {itens.map(it => (
                <div key={it.label} style={{ display:'flex', alignItems:'center', gap:10, padding:'7px 10px', borderRadius:8, background:'#fff' }}>
                  <div style={{ width:28, height:28, borderRadius:7, background:it.cor+'22', color:it.cor, display:'flex', alignItems:'center', justifyContent:'center' }}><Icon name={it.icon} size={13} /></div>
                  <span style={{ flex:1, fontSize:13, fontWeight:600, color:'var(--escalab-ink)' }}>{it.label}</span>
                  <button onClick={() => remover(it.label)} style={{ border:0, background:'#FDECEC', color:'#B3261E', borderRadius:6, padding:'4px 10px', cursor:'pointer', fontSize:12, fontWeight:700 }}>Remover</button>
                </div>
              ))}
            </div>
          </div>
          {/* Adicionar novo */}
          <div style={{ background:'var(--escalab-paper)', borderRadius:12, padding:'14px 16px' }}>
            <div style={{ fontSize:12, fontWeight:700, color:'var(--escalab-slate)', textTransform:'uppercase', letterSpacing:'.08em', marginBottom:10 }}>Adicionar item</div>
            <div style={{ display:'grid', gridTemplateColumns:'1fr 1fr', gap:10 }}>
              <div>
                <label style={{ fontSize:11.5, color:'var(--escalab-mute)', fontWeight:600 }}>Nome</label>
                <input value={novo.label} onChange={e => setNovo({ ...novo, label:e.target.value })} placeholder="Ex: Reembolso de despesas"
                  style={{ width:'100%', border:'1px solid var(--escalab-line)', borderRadius:8, padding:'7px 10px', fontSize:13, marginTop:4, boxSizing:'border-box', outline:'none' }} />
              </div>
              <div>
                <label style={{ fontSize:11.5, color:'var(--escalab-mute)', fontWeight:600 }}>Link (URL)</label>
                <input value={novo.url} onChange={e => setNovo({ ...novo, url:e.target.value })} placeholder="https://… ou #"
                  style={{ width:'100%', border:'1px solid var(--escalab-line)', borderRadius:8, padding:'7px 10px', fontSize:13, marginTop:4, boxSizing:'border-box', outline:'none' }} />
              </div>
              <div>
                <label style={{ fontSize:11.5, color:'var(--escalab-mute)', fontWeight:600 }}>Ícone</label>
                <select value={novo.icon} onChange={e => setNovo({ ...novo, icon:e.target.value })}
                  style={{ width:'100%', border:'1px solid var(--escalab-line)', borderRadius:8, padding:'7px 10px', fontSize:13, marginTop:4, boxSizing:'border-box', outline:'none', background:'#fff' }}>
                  {ICONES_DISPONIVEIS.map(i => <option key={i} value={i}>{i}</option>)}
                </select>
              </div>
              <div>
                <label style={{ fontSize:11.5, color:'var(--escalab-mute)', fontWeight:600 }}>Cor</label>
                <div style={{ display:'flex', gap:5, marginTop:6, flexWrap:'wrap' }}>
                  {CORES_DISPONIVEIS.map(c => (
                    <button key={c} onClick={() => setNovo({ ...novo, cor:c })}
                      style={{ width:22, height:22, borderRadius:'50%', background:c, border: novo.cor === c ? '2px solid var(--escalab-ink)' : '1px solid var(--escalab-line)', cursor:'pointer' }} />
                  ))}
                </div>
              </div>
            </div>
            <button onClick={adicionar} disabled={!novo.label.trim()} style={{ marginTop:12, border:0, background: novo.label.trim() ? 'var(--escalab-brand)' : '#ccc', color:'#fff', borderRadius:9, padding:'8px 16px', cursor: novo.label.trim() ? 'pointer' : 'not-allowed', fontSize:13, fontWeight:700 }}>
              + Adicionar
            </button>
          </div>
        </div>
        <div style={{ padding:'14px 24px', borderTop:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', gap:9, background:'var(--escalab-paper)' }}>
          <button onClick={restaurarPadrao} style={{ border:'1px solid var(--escalab-line)', background:'#fff', borderRadius:9, padding:'9px 16px', cursor:'pointer', fontSize:12.5, color:'var(--escalab-slate)' }}>Restaurar padrão</button>
          <div style={{ display:'flex', gap:9 }}>
            <button onClick={onClose} style={{ border:'1px solid var(--escalab-line)', background:'#fff', borderRadius:9, padding:'9px 18px', cursor:'pointer', fontSize:13, color:'var(--escalab-slate)' }}>Cancelar</button>
            <button onClick={salvar} style={{ border:0, background:'var(--escalab-brand)', color:'#fff', borderRadius:9, padding:'9px 20px', cursor:'pointer', fontSize:13, fontWeight:700 }}>Salvar</button>
          </div>
        </div>
      </div>
    </div>
  );
};

// ── Painel completo do Acesso Rápido ──────────────────────────────────────────

const AcessoRapidoPanel = ({ onModal, user }) => {
  const [busca, setBusca] = useState('');
  const [itens, setItens] = useState(() => getAcessoRapido());
  const [editing, setEditing] = useState(false);
  const [showConfig, setShowConfig] = useState(false);
  const isAdmin = user?.perfil === 'admin';

  const itensFiltrados = busca
    ? itens.filter(a => a.label.toLowerCase().includes(busca.toLowerCase()))
    : null;

  function removerItem(label) {
    if (!window.confirm(`Remover "${label}" do Acesso Rápido?`)) return;
    const novos = itens.filter(i => i.label !== label);
    setItens(novos);
    salvarAcessoRapido(novos);
  }

  return (
    <div style={{ background:'#fff', borderRadius:20, padding:'22px 24px', boxShadow:'0 6px 28px rgba(0,0,0,.07)', border:'1px solid var(--escalab-line)' }}>
      {/* Header com busca */}
      <div className="ar-header" style={{ display:'flex', gap:12, alignItems:'center', marginBottom:18, flexWrap:'wrap' }}>
        <div className="ar-title-group" style={{ display:'flex', gap:8, alignItems:'center', flex:1, minWidth:0 }}>
          <div style={{ width:32, height:32, borderRadius:9, background:'linear-gradient(135deg, #00967B, #007A5E)', display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}>
            <Icon name="grid" size={15} />
          </div>
          <div style={{ minWidth:0 }}>
            <div style={{ fontSize:14, fontWeight:800, color:'var(--escalab-ink)', letterSpacing:'-.01em' }}>Acesso Rápido</div>
            <div className="ar-subtitle" style={{ fontSize:11.5, color:'var(--escalab-mute)', marginTop:1 }}>Clique para acessar ferramentas e formulários</div>
          </div>
        </div>
        {/* Barra de busca */}
        <div className="ar-search" style={{ display:'flex', alignItems:'center', gap:7, background:'var(--escalab-paper)', border:'1px solid var(--escalab-line)', borderRadius:10, padding:'7px 12px', width:220 }}>
          <Icon name="search" size={13} />
          <input
            value={busca}
            onChange={e => setBusca(e.target.value)}
            placeholder="Buscar…"
            style={{ border:0, outline:0, background:'transparent', fontSize:13, fontFamily:'var(--font-sans)', flex:1, color:'var(--escalab-ink)' }}
          />
          {busca && <button onClick={() => setBusca('')} style={{ border:0, background:'transparent', cursor:'pointer', color:'var(--escalab-mute)', padding:0, lineHeight:1 }}><Icon name="close" size={12} /></button>}
        </div>
        {isAdmin && (
          <>
            <button onClick={() => setEditing(v => !v)} title={editing ? 'Sair do modo edição' : 'Remover itens clicando'} className="ar-admin-btn"
              style={{ border:`1px solid ${editing ? '#B3261E' : 'var(--escalab-line)'}`, background: editing ? '#FDECEC' : '#fff', color: editing ? '#B3261E' : 'var(--escalab-slate)', borderRadius:9, padding:'7px 12px', cursor:'pointer', fontSize:12.5, fontWeight:600, display:'flex', alignItems:'center', gap:6 }}>
              <Icon name="close" size={12} /> {editing ? 'Concluir' : 'Editar'}
            </button>
            <button onClick={() => setShowConfig(true)} title="Configurar Acesso Rápido" className="ar-admin-btn"
              style={{ border:'1px solid var(--escalab-line)', background:'#fff', color:'var(--escalab-slate)', borderRadius:9, padding:'7px 12px', cursor:'pointer', fontSize:12.5, fontWeight:600, display:'flex', alignItems:'center', gap:6 }}>
              <Icon name="plus" size={12} /> Configurar
            </button>
          </>
        )}
      </div>

      {/* Grid único · tudo junto, compacto */}
      {itensFiltrados && itensFiltrados.length === 0 ? (
        <div style={{ textAlign:'center', padding:'20px', color:'var(--escalab-mute)', fontSize:13 }}>
          Nenhum resultado para "{busca}"
        </div>
      ) : (
        <div style={{ display:'grid', gridTemplateColumns:'repeat(auto-fill, minmax(160px, 1fr))', gap:14 }}>
          {(itensFiltrados || itens).map(a => <TileAcesso key={a.label} item={a} onModal={onModal} onRemove={removerItem} editing={editing} />)}
        </div>
      )}
      {showConfig && <ModalConfigAcessoRapido onClose={() => setShowConfig(false)} onSave={() => setItens(getAcessoRapido())} />}
    </div>
  );
};

const FOTOS_MOCK = [
  { evento:'Anglo American · 2025',      cor:'#6B3FA0', emoji:'🎭' },
  { evento:'Escalab Day · Mai 2025',      cor:'#00967B', emoji:'🎉' },
  { evento:'Visita à fábrica · Mar 2025', cor:'#1F4A8A', emoji:'🏭' },
  { evento:'Time Escalab · Fev 2025',     cor:'#E89B3B', emoji:'👥' },
  { evento:'Onboarding · Jan 2025',       cor:'#B3261E', emoji:'🚀' },
  { evento:'Happy Hour · Dez 2024',       cor:'#005E4D', emoji:'🥂' },
];

const HERO_FOTO_KEY = 'escalab_hero_foto';

const SecaoInicio = ({ user }) => {
  const [modalLinkGC, setModalLinkGC] = useState(false);
  const [modalBeneficios, setModalBeneficios] = useState(false);
  const [modalLiberacao, setModalLiberacao] = useState(false);
  const [modalReserva, setModalReserva] = useState(false);
  const [modalEmailCel, setModalEmailCel] = useState(false);
  const [leuAgora, setLeuAgora] = useState({});
  const [heroFoto, setHeroFoto] = useState(() => { try { return localStorage.getItem(HERO_FOTO_KEY) || ''; } catch { return ''; } });
  const agora         = new Date();
  const mesAtual      = agora.getMonth() + 1;
  const hora          = agora.getHours();
  const saudacao      = hora < 12 ? 'Bom dia' : hora < 18 ? 'Boa tarde' : 'Boa noite';
  const primeiroNome  = user?.nome?.split(' ')[0] || 'time';
  const meses         = ['jan','fev','mar','abr','mai','jun','jul','ago','set','out','nov','dez'];
  const mesNome       = meses[mesAtual-1].charAt(0).toUpperCase() + meses[mesAtual-1].slice(1);
  const dataExtenso   = agora.toLocaleDateString('pt-BR', { weekday:'long', day:'numeric', month:'long', year:'numeric' });
  const isAdmin       = user?.perfil === 'admin';

  const aniversariantesAgora = getAniversariantesDoMes(mesAtual);
  const proximosDatas        = getDatasImportantes().filter(d => new Date(d.data) >= agora).slice(0, 4);
  const jornalMaisRecente    = JORNAL_EDICOES[0];
  const tipoConfig = {
    treinamento: { cor:'#1F4A8A', bg:'#E8EFF9', label:'Treino' },
    evento:      { cor:'#00836B', bg:'#E0F4EE', label:'Evento' },
    rh:          { cor:'#6B3FA0', bg:'#F0E8FB', label:'GC'     },
  };

  return (
    <div style={{ display:'flex', flexDirection:'column', gap:20 }}>

      {/* ── Hero boas-vindas com foto da equipe ── */}
      {/* Fallback profissional: cross-fade entre 5 fotos novas quando admin não definiu foto custom */}
      <div style={{
        borderRadius: 20, minHeight: 260, position: 'relative', overflow: 'hidden',
        boxShadow: '0 16px 48px rgba(0,0,0,.22)',
        background: heroFoto ? `url(${heroFoto}) center/cover no-repeat` : 'radial-gradient(120% 100% at 30% 20%, #00614D 0%, #003A33 60%, #000D0A 100%)',
      }}>
        {/* Carrossel cross-fade quando não há foto custom · wrapper c/ opacity p/ fotos ficarem mais sutis */}
        {!heroFoto && (
          <div style={{ position:'absolute', inset:0, opacity:.45, pointerEvents:'none' }}>
            {['assets/equipe-2.jpg','assets/equipe-4.jpg','assets/equipe-6.jpg','assets/equipe-8.jpg','assets/equipe-9.jpg'].map((src, i, arr) => {
              const ciclo = arr.length * 5;
              return (
                <div key={src} style={{
                  position: 'absolute', inset: 0,
                  backgroundImage: `url(${src})`,
                  backgroundSize: 'cover', backgroundPosition: 'center 42%',
                  animation: `loginPhotoFade ${ciclo}s linear ${(i * ciclo / arr.length) - ciclo / arr.length}s infinite, loginPhotoZoom ${ciclo}s ease-in-out ${(i * ciclo / arr.length) - ciclo / arr.length}s infinite`,
                  opacity: i === 0 ? 1 : 0,
                  willChange: 'opacity, transform',
                }} onError={e => { e.target.style.display = 'none'; }} />
              );
            })}
          </div>
        )}
        {/* overlay para legibilidade · mais leve, deixando as fotos respirar */}
        <div style={{ position:'absolute', inset:0, background: heroFoto
          ? 'linear-gradient(to right,rgba(0,0,0,.60) 0%,rgba(0,0,0,.30) 55%,rgba(0,0,0,.14) 100%)'
          : 'linear-gradient(135deg,rgba(0,40,33,.58) 0%,rgba(0,30,25,.28) 45%,rgba(0,30,25,.40) 100%)', borderRadius:20 }} />
        {/* círculos decorativos sutis (sempre) */}
        <div style={{ position:'absolute', right:-60, top:-60, width:280, height:280, borderRadius:'50%', background:'rgba(255,255,255,.05)', pointerEvents:'none' }} />
        <div style={{ position:'absolute', right:100, bottom:-80, width:200, height:200, borderRadius:'50%', background:'rgba(255,255,255,.03)', pointerEvents:'none' }} />
        {/* conteúdo */}
        <div style={{ position:'relative', padding:'36px 40px', display:'flex', alignItems:'center', justifyContent:'space-between', flexWrap:'wrap', gap:20, minHeight:260, boxSizing:'border-box' }}>
          <div>
            <div style={{ fontSize:11.5, color:'rgba(255,255,255,.72)', marginBottom:8, fontWeight: 700, letterSpacing:'.08em', textTransform:'uppercase' }}>{dataExtenso}</div>
            <div style={{ fontFamily:'var(--font-sans)', fontSize:'clamp(30px,4.6vw,46px)', fontWeight:800, letterSpacing:'-.02em', lineHeight:1.1, color:'#fff', marginBottom:8 }}>{saudacao}, <span style={{ fontWeight:800 }}>{primeiroNome}</span> <span style={{ textTransform:'none' }}>👋</span></div>
            <div style={{ fontSize:14.5, color:'rgba(255,255,255,.82)', lineHeight:1.5, maxWidth:420 }}>Aqui você encontra tudo reunido em um lugar só! Eventos, jornais, aniversários e links importantes do GC.</div>
          </div>
          <div style={{ display:'flex', gap:10, flexShrink:0 }}>
            {[
              { label:'Colaboradores', val:COLABORADORES.length       },
              { label:'Aniversários',  val:aniversariantesAgora.length },
              { label:'Eventos',       val:proximosDatas.length        },
            ].map(s => (
              <div key={s.label} style={{ textAlign:'center', background:'rgba(255,255,255,.18)', backdropFilter:'blur(12px)', borderRadius:14, padding:'14px 20px', minWidth:80, border:'1px solid rgba(255,255,255,.2)' }}>
                <div style={{ fontSize:28, fontWeight:900, lineHeight:1, color:'#fff' }}>{s.val}</div>
                <div style={{ fontSize:10.5, color:'rgba(255,255,255,.8)', marginTop:4, fontWeight:500 }}>{s.label}</div>
              </div>
            ))}
          </div>
        </div>
        {/* botão upload (admin) */}
        {isAdmin && (
          <label style={{ position:'absolute', bottom:14, right:14, background:'rgba(0,0,0,.45)', backdropFilter:'blur(8px)', border:'1px solid rgba(255,255,255,.25)', borderRadius:10, padding:'6px 14px', cursor:'pointer', fontSize:12, color:'#fff', fontFamily:'var(--font-sans)', fontWeight:600, display:'flex', alignItems:'center', gap:6, transition:'background .15s' }}
            onMouseEnter={e => e.currentTarget.style.background='rgba(0,0,0,.6)'}
            onMouseLeave={e => e.currentTarget.style.background='rgba(0,0,0,.45)'}>
            <Icon name="upload" size={12} />
            {heroFoto ? 'Trocar foto' : 'Adicionar foto da equipe'}
            <input type="file" accept="image/*" style={{ display:'none' }} onChange={e => {
              const f = e.target.files[0]; if (!f) return;
              const r = new FileReader();
              r.onload = ev => { localStorage.setItem(HERO_FOTO_KEY, ev.target.result); setHeroFoto(ev.target.result); };
              r.readAsDataURL(f);
            }} />
          </label>
        )}
        {/* botão remover foto */}
        {isAdmin && heroFoto && (
          <button onClick={() => { localStorage.removeItem(HERO_FOTO_KEY); setHeroFoto(''); }} style={{ position:'absolute', bottom:14, right:210, background:'rgba(180,40,40,.5)', backdropFilter:'blur(8px)', border:'1px solid rgba(255,100,100,.3)', borderRadius:10, padding:'6px 12px', cursor:'pointer', fontSize:12, color:'#fff', fontFamily:'var(--font-sans)', fontWeight:600, display:'flex', alignItems:'center', gap:5 }}>
            <Icon name="close" size={11} /> Remover
          </button>
        )}
      </div>

      {/* ── Acesso Rápido + Próximos Eventos (lado a lado) ── */}
      <div style={{ display:'grid', gridTemplateColumns:'clamp(200px, 1fr, 9999px) minmax(0, 280px)', gap:16 }}>
        <AcessoRapidoPanel onModal={(id) => {
          if (id === 'beneficios')          setModalBeneficios(true);
          else if (id === 'liberacao_ufmg_cit') setModalLiberacao(true);
          else if (id === 'reserva_auditorio')  setModalReserva(true);
          else if (id === 'email_celular')      setModalEmailCel(true);
          else                                  setModalLinkGC(true);
        }} user={user} />
        {/* Próximos Eventos · coluna direita */}
        <div style={{ background:'#fff', borderRadius:18, overflow:'hidden', boxShadow:'0 4px 20px rgba(0,0,0,.06)', border:'1px solid var(--escalab-line)', display:'flex', flexDirection:'column' }}>
          <div style={{ padding:'14px 16px', borderBottom:'1px solid var(--escalab-line)', display:'flex', gap:8, alignItems:'center', background:'var(--escalab-paper)' }}>
            <div style={{ width:26, height:26, borderRadius:7, background:'var(--escalab-brand-tint)', display:'flex', alignItems:'center', justifyContent:'center' }}>
              <Icon name="calendar" size={13} />
            </div>
            <span style={{ fontSize:12.5, fontWeight:700, color:'var(--escalab-ink)' }}>Próximos Eventos</span>
          </div>
          <div style={{ flex:1, overflowY:'auto' }}>
            {proximosDatas.length === 0 ? (
              <div style={{ padding:'20px', textAlign:'center', color:'var(--escalab-mute)', fontSize:12.5 }}>Nenhum evento próximo</div>
            ) : proximosDatas.map((d, i) => {
              const dt  = new Date(d.data + 'T00:00:00');
              const cfg = tipoConfig[d.tipo] || tipoConfig.evento;
              return (
                <div key={i} style={{ display:'flex', gap:10, padding:'10px 14px', borderBottom:i<proximosDatas.length-1?'1px solid var(--escalab-line)':0, alignItems:'center' }}>
                  <div style={{ background:cfg.bg, borderRadius:8, padding:'5px 8px', textAlign:'center', flexShrink:0, minWidth:38, borderLeft:`3px solid ${cfg.cor}` }}>
                    <div style={{ fontSize:15, fontWeight:900, color:cfg.cor, lineHeight:1 }}>{String(dt.getDate()).padStart(2,'0')}</div>
                    <div style={{ fontSize:9.5, color:cfg.cor, fontWeight:700, textTransform:'uppercase' }}>{meses[dt.getMonth()]}</div>
                  </div>
                  <div style={{ flex:1, minWidth:0 }}>
                    <div style={{ fontSize:12.5, fontWeight:600, color:'var(--escalab-ink)', overflow:'hidden', textOverflow:'ellipsis', whiteSpace:'nowrap' }}>{d.titulo}</div>
                    <div style={{ fontSize:11, color:'var(--escalab-mute)', marginTop:1 }}>{d.local}</div>
                  </div>
                </div>
              );
            })}
          </div>
        </div>
      </div>

      {/* ── Jornal em destaque + Álbum Escalab ── */}
      <div className="jornal-album-grid" style={{ display:'grid', gridTemplateColumns:'1.3fr 1fr', gap:16 }}>

        {/* Jornal de capa */}
        <div className="jornal-capa-card" style={{ background:'#fff', borderRadius:18, overflow:'hidden', boxShadow:'0 4px 20px rgba(0,0,0,.07)', border:'1px solid var(--escalab-line)', display:'flex', flexDirection:'column' }}>
          {/* Foto de capa */}
          <div style={{ position:'relative', background:'linear-gradient(135deg, #1F4A8A 0%, #0F2D5E 100%)', minHeight:180, display:'flex', alignItems:'flex-end', overflow:'hidden' }}>
            {/* Placeholder padrão */}
            <div style={{ position:'absolute', inset:0, display:'flex', flexDirection:'column', alignItems:'center', justifyContent:'center', opacity:.35 }}>
              <div style={{ fontSize:48 }}>📰</div>
            </div>
            {/* Overlay escuro na base */}
            <div style={{ position:'absolute', bottom:0, left:0, right:0, height:'50%', background:'linear-gradient(transparent, rgba(10,20,50,.8))' }} />
            {/* Upload foto de capa (admin only) */}
            {isAdmin && (
              <label style={{ position:'absolute', top:12, right:12, background:'rgba(255,255,255,.2)', backdropFilter:'blur(8px)', border:'1px solid rgba(255,255,255,.3)', borderRadius:8, padding:'5px 12px', cursor:'pointer', fontSize:12, color:'#fff', fontFamily:'var(--font-sans)', fontWeight:600, display:'flex', alignItems:'center', gap:5 }}>
                <Icon name="upload" size={12} /> Foto de capa
                <input type="file" accept="image/*" style={{ display:'none' }} onChange={e => {
                  const f = e.target.files[0]; if (!f) return;
                  const r = new FileReader(); r.onload = ev => {
                    const el = e.target.closest('[data-capa]');
                    if (el) el.style.backgroundImage = `url(${ev.target.result})`;
                  }; r.readAsDataURL(f);
                }} />
              </label>
            )}
            {/* Título do jornal sobre a capa */}
            <div style={{ position:'relative', padding:'16px 20px', flex:1 }}>
              <div style={{ fontSize:10.5, color:'rgba(255,255,255,.75)', fontWeight:700, textTransform:'uppercase', letterSpacing:'.1em', marginBottom:4 }}>
                📰 Jornal Interno · Última Edição
              </div>
              <div style={{ fontSize:17, fontWeight:800, color:'#fff', lineHeight:1.2 }}>{jornalMaisRecente?.titulo}</div>
              <div style={{ fontSize:12, color:'rgba(255,255,255,.75)', marginTop:4 }}>
                {jornalMaisRecente?.data.split('-').reverse().join('/')}
              </div>
            </div>
          </div>
          {/* Corpo do jornal */}
          <div className="jornal-capa-body" style={{ padding:'14px 18px', display:'flex', alignItems:'center', gap:14, flex:1 }}>
            {(() => {
              const j = jornalMaisRecente;
              if (!j) return null;
              const leituras  = (() => { try { const d = JSON.parse(localStorage.getItem('escalab_jornal_reads_v2') || '{}'); return d[j.id] || {}; } catch { return {}; } })();
              const totalLeram = Object.keys(leituras).length + (j.leram?.length || 0);
              const pct       = Math.round(totalLeram / COLABORADORES.length * 100);
              const jaLeu     = leuAgora[j.id] || !!leituras[user?.id] || (j.leram || []).includes(user?.id);
              return (
                <>
                  {isAdmin ? (
                    <div style={{ flex:1 }}>
                      <div style={{ display:'flex', alignItems:'center', gap:8, marginBottom:6 }}>
                        <div style={{ flex:1, height:5, background:'var(--escalab-line)', borderRadius:999 }}>
                          <div style={{ width:pct+'%', height:'100%', background:pct>=80?'#00967B':pct>=50?'#E89B3B':'#B3261E', borderRadius:999 }} />
                        </div>
                        <span style={{ fontSize:12, fontWeight:700, color:pct>=80?'#00836B':'#E89B3B' }}>{pct}% leram</span>
                      </div>
                      <div style={{ fontSize:12, color:'var(--escalab-mute)' }}>{totalLeram} de {COLABORADORES.length} colaboradores</div>
                    </div>
                  ) : (
                    <div style={{ flex:1, fontSize:12.5, color:'var(--escalab-mute)' }}>Confira a última edição do jornal interno</div>
                  )}
                  {j.url ? (
                    <a href={j.url} target="_blank" rel="noopener noreferrer"
                      onClick={() => { registrarLeitura(j.id, user?.id); setLeuAgora(l => ({ ...l, [j.id]:true })); }}
                      style={{ border:`1px solid ${jaLeu?'var(--escalab-brand-soft)':'var(--escalab-line)'}`, background:jaLeu?'var(--escalab-brand-tint)':'var(--escalab-brand)', borderRadius:10, padding:'9px 18px', cursor:'pointer', fontSize:13, color:jaLeu?'var(--escalab-brand)':'#fff', fontFamily:'var(--font-sans)', fontWeight:700, whiteSpace:'nowrap', transition:'all .15s', flexShrink:0, textDecoration:'none', display:'inline-flex', alignItems:'center', gap:4 }}>
                      {jaLeu ? '✓ Lido' : 'Ler agora →'}
                    </a>
                  ) : (
                    <button onClick={() => alert('Esta edição ainda não tem link cadastrado. Avise o RH para subir o jornal.')}
                      title="Sem link cadastrado · RH precisa cadastrar a URL"
                      style={{ border:`1px solid var(--escalab-line)`, background:'#F5F7FA', borderRadius:10, padding:'9px 18px', cursor:'pointer', fontSize:13, color:'var(--escalab-mute)', fontFamily:'var(--font-sans)', fontWeight:700, whiteSpace:'nowrap', flexShrink:0 }}>
                      Em breve
                    </button>
                  )}
                </>
              );
            })()}
          </div>
        </div>

        {/* Álbum Escalab */}
        <div style={{ background:'linear-gradient(135deg, #FFF9F0 0%, #FFF0D6 100%)', border:'1px solid #F5A62328', borderRadius:18, padding:'18px 18px 14px', boxShadow:'0 4px 20px rgba(245,166,35,.10)', display:'flex', flexDirection:'column' }}>
          <div style={{ display:'flex', justifyContent:'space-between', alignItems:'center', marginBottom:12 }}>
            <div style={{ fontSize:13.5, fontWeight:800, color:'#7A4A00' }}>📸 Álbum Escalab</div>
            <button style={{ border:'1px solid #F5A62340', background:'rgba(255,255,255,.6)', borderRadius:8, padding:'4px 10px', cursor:'pointer', fontSize:12, color:'#B56500', fontFamily:'var(--font-sans)', fontWeight:600 }}>Ver todas</button>
          </div>
          <div className="album-mini-grid" style={{ display:'grid', gridTemplateColumns:'1fr 1fr 1fr', gap:7, flex:1 }}>
            {FOTOS_MOCK.slice(0,6).map((f, i) => (
              <div key={i}
                style={{ aspectRatio:'1', background:`linear-gradient(135deg, ${f.cor}ee, ${f.cor}99)`, borderRadius:10, display:'flex', flexDirection:'column', alignItems:'center', justifyContent:'center', cursor:'pointer', transition:'all .18s', gap:4, boxShadow:`0 2px 8px ${f.cor}25` }}
                onMouseEnter={e => { e.currentTarget.style.transform='scale(1.04)'; e.currentTarget.style.boxShadow=`0 6px 20px ${f.cor}45`; }}
                onMouseLeave={e => { e.currentTarget.style.transform='none'; e.currentTarget.style.boxShadow=`0 2px 8px ${f.cor}25`; }}>
                <div style={{ fontSize:22 }}>{f.emoji}</div>
                <div style={{ fontSize:9, fontWeight:700, color:'rgba(255,255,255,.9)', textAlign:'center', padding:'0 4px', lineHeight:1.2 }}>{f.evento}</div>
              </div>
            ))}
          </div>
        </div>
      </div>

      {/* ── Aniversariantes ── */}
      <div style={{ display:'grid', gridTemplateColumns:'1fr 1fr', gap:16 }}>

        {/* Aniversariantes */}
        <div style={{ borderRadius:18, overflow:'hidden', boxShadow:'0 4px 20px rgba(245,166,35,.15)', border:'1px solid #F5A62330' }}>
          <div style={{ background:'linear-gradient(135deg, #F5A623, #E89B3B)', padding:'14px 18px', display:'flex', gap:9, alignItems:'center' }}>
            <div style={{ width:28, height:28, borderRadius:8, background:'rgba(255,255,255,.25)', display:'flex', alignItems:'center', justifyContent:'center' }}>
              <Icon name="star" size={14} />
            </div>
            <div style={{ fontSize:13, fontWeight:700, color:'#fff' }}>Aniversariantes · {mesNome}</div>
          </div>
          <div style={{ background:'#FFFDF7' }}>
            {aniversariantesAgora.length === 0 ? (
              <div style={{ padding:'24px', textAlign:'center', color:'#B56500', fontSize:13 }}>🎂 Nenhum aniversariante este mês</div>
            ) : (
              aniversariantesAgora.map((a, i) => (
                <div key={a.id} style={{ display:'flex', alignItems:'center', gap:12, padding:'10px 16px', borderBottom:i<aniversariantesAgora.length-1?'1px solid #F5A62220':0 }}>
                  <div style={{ width:36, height:36, borderRadius:'50%', background:a.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:800, fontSize:12, flexShrink:0 }}>{a.iniciais}</div>
                  <div style={{ flex:1, minWidth:0 }}>
                    <div style={{ fontSize:13, fontWeight:700, color:'#7A4A00' }}>{a.nome}</div>
                    <div style={{ fontSize:11, color:'#B56500', marginTop:1 }}>{a.setor}</div>
                  </div>
                  <div style={{ background:'linear-gradient(135deg, #F5A623, #E89B3B)', borderRadius:10, padding:'5px 10px', flexShrink:0, boxShadow:'0 3px 10px rgba(245,166,35,.35)' }}>
                    <div style={{ fontSize:17, fontWeight:900, color:'#fff', lineHeight:1 }}>{String(a.dia).padStart(2,'0')}</div>
                    <div style={{ fontSize:9, fontWeight:700, color:'rgba(255,255,255,.85)' }}>{String(a.mes).padStart(2,'0')}</div>
                  </div>
                </div>
              ))
            )}
          </div>
        </div>
      </div>

      {modalLinkGC && <ModalLinksGC onClose={() => setModalLinkGC(false)} user={user} />}
      {modalBeneficios && <ModalBeneficios onClose={() => setModalBeneficios(false)} />}
      {modalLiberacao && <ModalLiberacaoUFMGCIT onClose={() => setModalLiberacao(false)} />}
      {modalReserva && <ModalReservaAuditorio onClose={() => setModalReserva(false)} />}
      {modalEmailCel && <ModalEmailCelular onClose={() => setModalEmailCel(false)} />}
    </div>
  );
};

// ── Seção: Escala + Calendário ────────────────────────────────────────────────

// Escala Presencial 2026.1 - recorrente Seg-Sex, por local (CIT/UFMG) x periodo (manha 09-12 / tarde 13-17)
// Fonte: Documentos Treinamento/Intranet/Escala Presencial.xlsx (aba "ESCALA 2026.1")
const DIAS_SEMANA = ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta'];

const ESCALA_2026 = {
  CIT: {
    Segunda: {
      manha: [{ nome:'Carol',    setor:'P&D' }, { nome:'Clara',  setor:'GC' }],
      tarde: [{ nome:'Carol',    setor:'P&D' }, { nome:'Clara',  setor:'GC' }, { nome:'Hiago', setor:'Marketing' }, { nome:'Pedro', setor:'Escalonamento' }],
    },
    Terça: {
      manha: [{ nome:'Yasmim',   setor:'PMO' }, { nome:'Rafaela', setor:'NNE & EVT' }],
      tarde: [{ nome:'Yasmim',   setor:'PMO' }, { nome:'Rafaela', setor:'NNE & EVT' }, { nome:'Hiago', setor:'Marketing' }, { nome:'Pedro', setor:'Escalonamento' }],
    },
    Quarta: {
      manha: [{ nome:'Jorge',    setor:'Marketing' }, { nome:'Rafaela', setor:'NNE & EVT' }, { nome:'Gustavo', setor:'Editais' }],
      tarde: [{ nome:'Jorge',    setor:'Marketing' }, { nome:'Rafaela', setor:'NNE & EVT' }, { nome:'Gustavo', setor:'Editais' }],
    },
    Quinta: {
      manha: [{ nome:'Yasmim',   setor:'PMO' }, { nome:'Gustavo', setor:'Editais' }],
      tarde: [{ nome:'Yasmim',   setor:'PMO' }, { nome:'Gustavo', setor:'Editais' }, { nome:'Bruno', setor:'Financeiro' }, { nome:'Pedro', setor:'Escalonamento' }],
    },
    Sexta: {
      manha: [{ nome:'Leonardo', setor:'Fechamento' }, { nome:'Letícia', setor:'Financeiro' }, { nome:'Pedro', setor:'Escalonamento' }],
      tarde: [{ nome:'Bruno',    setor:'Financeiro' }, { nome:'Letícia', setor:'Financeiro' }, { nome:'Pedro', setor:'Escalonamento' }],
    },
  },
  UFMG: {
    Segunda: {
      manha: [{ nome:'Júlia Braga', setor:'P&D' }, { nome:'Juliana', setor:'P&D' }],
      tarde: [{ nome:'Júlia Braga', setor:'P&D' }, { nome:'Juliana', setor:'P&D' }],
    },
    Terça: {
      manha: [{ nome:'Juliana',     setor:'P&D' }],
      tarde: [{ nome:'Júlia Braga', setor:'P&D' }, { nome:'Juliana', setor:'P&D' }],
    },
    Quarta: {
      manha: [{ nome:'Leonardo',    setor:'Fechamento' }, { nome:'Carol', setor:'P&D' }],
      tarde: [{ nome:'Carol',       setor:'P&D' }, { nome:'Juliana', setor:'P&D' }],
    },
    Quinta: {
      manha: [{ nome:'Júlia Braga', setor:'P&D' }, { nome:'Letícia', setor:'Financeiro' }, { nome:'Juliana', setor:'P&D' }],
      tarde: [{ nome:'Júlia Braga', setor:'P&D' }, { nome:'Letícia', setor:'Financeiro' }, { nome:'Juliana', setor:'P&D' }],
    },
    Sexta: {
      manha: [{ nome:'Jorge',       setor:'Marketing' }, { nome:'Clara', setor:'GC' }],
      tarde: [{ nome:'Jorge',       setor:'Marketing' }, { nome:'Clara', setor:'GC' }],
    },
  },
};

// Brigadistas designados por local (sempre os mesmos durante a semana)
const BRIGADISTAS_LOCAL = {
  CIT:  [{ nome:'Breno',  setor:'P&D' }, { nome:'Carol',  setor:'ESG' }, { nome:'Davyston', setor:'VB' }],
  UFMG: [{ nome:'Júlia',  setor:'P&D' }],
};

const SecaoEscala = () => {
  const [localSel, setLocalSel] = useState('ambos'); // ambos | UFMG | CIT
  const COR_UFMG = '#1F4A8A';
  const COR_CIT  = '#6B3FA0';
  // Indice do dia "hoje" (Seg=0, Ter=1, ..., Sex=4). Sabado/Domingo destacam Segunda.
  const hojeIdx = (() => { const d = new Date().getDay(); return d >= 1 && d <= 5 ? d - 1 : 0; })();

  const CalendarioLocal = ({ localKey, label, cor, bg, brigadistas }) => (
    <div style={{ background:'#fff', borderRadius:16, overflow:'hidden', border:'1px solid var(--escalab-line)', boxShadow:`0 4px 20px ${cor}12` }}>
      {/* Header do local */}
      <div style={{ background:`linear-gradient(135deg, ${cor}, ${cor}dd)`, padding:'12px 18px', display:'flex', alignItems:'center', justifyContent:'space-between', flexWrap:'wrap', gap:10 }}>
        <div style={{ display:'flex', alignItems:'center', gap:9 }}>
          <div style={{ width:28, height:28, borderRadius:8, background:'rgba(255,255,255,.2)', display:'flex', alignItems:'center', justifyContent:'center' }}>
            <Icon name="home" size={14} />
          </div>
          <div>
            <div style={{ fontSize:14, fontWeight:800, color:'#fff' }}>{label}</div>
            <div style={{ fontSize:11, color:'rgba(255,255,255,.75)', marginTop:1 }}>Escala recorrente 2026.1 · Manhã 09–12 · Tarde 13–17</div>
          </div>
        </div>
        {/* Brigadistas do local */}
        <div style={{ display:'flex', alignItems:'center', gap:6, background:'rgba(255,255,255,.15)', borderRadius:8, padding:'5px 11px' }}>
          <Icon name="warn" size={12} />
          <span style={{ fontSize:11.5, color:'rgba(255,255,255,.95)', fontWeight:700 }}>
            Brigadistas: {brigadistas.map(b => b.nome).join(', ')}
          </span>
        </div>
      </div>
      {/* Grid de dias */}
      <div style={{ overflowX:'auto' }}>
        <div style={{ display:'grid', gridTemplateColumns:`repeat(${DIAS_SEMANA.length}, minmax(155px, 1fr))`, minWidth: DIAS_SEMANA.length * 155 }}>
          {DIAS_SEMANA.map((dia, di) => {
            const dados  = ESCALA_2026[localKey]?.[dia] || { manha:[], tarde:[] };
            const isHoje = di === hojeIdx;
            return (
              <div key={dia} style={{ borderRight: di < DIAS_SEMANA.length-1 ? '1px solid var(--escalab-line)' : 0 }}>
                <div style={{ padding:'9px 12px', background: isHoje ? bg : 'var(--escalab-paper)', borderBottom:'1px solid var(--escalab-line)', textAlign:'center' }}>
                  <div style={{ fontSize:12, fontWeight:700, color: isHoje ? cor : 'var(--escalab-ink)' }}>{dia}</div>
                  {isHoje && <div style={{ fontSize:9.5, fontWeight:700, color:cor, textTransform:'uppercase', letterSpacing:'.08em', marginTop:2 }}>hoje</div>}
                </div>
                {/* Manha */}
                <div style={{ padding:'8px 10px', borderBottom:'1px dashed var(--escalab-line)' }}>
                  <div style={{ fontSize:9.5, fontWeight:800, color:'var(--escalab-mute)', textTransform:'uppercase', letterSpacing:'.1em', marginBottom:5 }}>Manhã · 09–12</div>
                  {dados.manha.length === 0 ? (
                    <div style={{ fontSize:10.5, color:'var(--escalab-mute)', fontStyle:'italic' }}>—</div>
                  ) : (
                    <div style={{ display:'flex', flexDirection:'column', gap:4 }}>
                      {dados.manha.map((p, pi) => (
                        <div key={pi} style={{ background:bg, borderRadius:6, padding:'4px 8px', borderLeft:`3px solid ${cor}` }}>
                          <div style={{ fontSize:11.5, fontWeight:700, color:cor }}>{p.nome}</div>
                          <div style={{ fontSize:10, color:'var(--escalab-mute)' }}>{p.setor}</div>
                        </div>
                      ))}
                    </div>
                  )}
                </div>
                {/* Tarde */}
                <div style={{ padding:'8px 10px' }}>
                  <div style={{ fontSize:9.5, fontWeight:800, color:'var(--escalab-mute)', textTransform:'uppercase', letterSpacing:'.1em', marginBottom:5 }}>Tarde · 13–17</div>
                  {dados.tarde.length === 0 ? (
                    <div style={{ fontSize:10.5, color:'var(--escalab-mute)', fontStyle:'italic' }}>—</div>
                  ) : (
                    <div style={{ display:'flex', flexDirection:'column', gap:4 }}>
                      {dados.tarde.map((p, pi) => (
                        <div key={pi} style={{ background:bg, borderRadius:6, padding:'4px 8px', borderLeft:`3px solid ${cor}` }}>
                          <div style={{ fontSize:11.5, fontWeight:700, color:cor }}>{p.nome}</div>
                          <div style={{ fontSize:10, color:'var(--escalab-mute)' }}>{p.setor}</div>
                        </div>
                      ))}
                    </div>
                  )}
                </div>
              </div>
            );
          })}
        </div>
      </div>
    </div>
  );

  return (
    <div style={{ display:'flex', flexDirection:'column', gap:16 }}>
      {/* Controles: titulo + filtro de local */}
      <div style={{ display:'flex', gap:10, alignItems:'center', flexWrap:'wrap', justifyContent:'space-between' }}>
        <div>
          <div style={{ fontSize:15, fontWeight:800, color:'var(--escalab-ink)' }}>Escala Presencial 2026.1</div>
          <div style={{ fontSize:12, color:'var(--escalab-mute)', marginTop:2 }}>Segunda a Sexta · Mínimo 2 pessoas/dia · UFMG = sob demanda</div>
        </div>
        {/* Seletor UFMG / CIT / Ambos */}
        <div style={{ display:'flex', gap:5, background:'var(--escalab-paper)', borderRadius:10, padding:3 }}>
          {[{ id:'ambos', label:'Ambos' }, { id:'CIT', label:'CIT-SENAI' }, { id:'UFMG', label:'UFMG' }].map(o => (
            <button key={o.id} onClick={() => setLocalSel(o.id)} style={{
              border:0, borderRadius:8, padding:'6px 14px', cursor:'pointer', fontSize:12.5, fontFamily:'var(--font-sans)', fontWeight:localSel===o.id?700:400,
              background:localSel===o.id?'#fff':'transparent', color:localSel===o.id?'var(--escalab-ink)':'var(--escalab-mute)',
              boxShadow:localSel===o.id?'0 1px 6px rgba(0,0,0,.1)':'none', transition:'all .15s',
            }}>{o.label}</button>
          ))}
        </div>
      </div>

      {/* Calendários */}
      {(localSel === 'ambos' || localSel === 'CIT') && (
        <CalendarioLocal localKey="CIT" label="CIT-SENAI" cor={COR_CIT} bg="#F4EEFF" brigadistas={BRIGADISTAS_LOCAL.CIT} />
      )}
      {(localSel === 'ambos' || localSel === 'UFMG') && (
        <CalendarioLocal localKey="UFMG" label="UFMG · sob demanda" cor={COR_UFMG} bg="#EEF3FA" brigadistas={BRIGADISTAS_LOCAL.UFMG} />
      )}

      {/* Regras + formulários */}
      <div style={{ display:'grid', gridTemplateColumns:'1fr 1fr', gap:12 }}>
        <div style={{ background:'#FFF7EB', border:'1px solid #E89B3B33', borderRadius:14, padding:'14px 18px' }}>
          <div style={{ display:'flex', alignItems:'center', gap:8, marginBottom:8 }}>
            <Icon name="info" size={14} />
            <div style={{ fontSize:13, fontWeight:800, color:'#7A4A00' }}>Regras essenciais</div>
          </div>
          <ul style={{ margin:0, paddingLeft:18, fontSize:12, color:'#5C3A00', lineHeight:1.7 }}>
            <li>Mínimo de 2 pessoas/dia no local (segurança)</li>
            <li>1 brigadista por dia da semana em cada local</li>
            <li>Falta agendada (saúde): avisar Maria Clara (RH) com 7 dias</li>
            <li>Falta imprevista: avisar grupo + Formulário de Justificativa</li>
            <li>Eventos externos: Formulário de Participação com 15 dias</li>
            <li>Sem o mínimo no dia? Quem ficaria sozinho cumpre em home office</li>
          </ul>
        </div>
        <div style={{ background:'linear-gradient(135deg, #EEF3FA, #E0EBF9)', border:'1px solid #C9D7EC', borderRadius:14, padding:'14px 18px', display:'flex', flexDirection:'column', gap:8 }}>
          <div style={{ display:'flex', alignItems:'center', gap:8 }}>
            <Icon name="file" size={14} />
            <div style={{ fontSize:13, fontWeight:800, color:'#1F4A8A' }}>Formulários</div>
          </div>
          <a href="https://docs.google.com/forms/d/e/1FAIpQLSewRQr5CisPjd89_Aks1rc2eaff1iMjn9EtdTAuoyRpLw74fA/viewform" target="_blank" rel="noopener noreferrer"
            style={{ display:'flex', alignItems:'center', gap:8, padding:'8px 12px', borderRadius:9, background:'#fff', color:'#1F4A8A', fontSize:12.5, fontWeight:600, textDecoration:'none', border:'1px solid #C9D7EC' }}>
            <Icon name="calendar" size={12} /> Participação em Eventos ↗
          </a>
          <a href="https://forms.gle/ysH7xrBMQrx2deVN6" target="_blank" rel="noopener noreferrer"
            style={{ display:'flex', alignItems:'center', gap:8, padding:'8px 12px', borderRadius:9, background:'#fff', color:'#1F4A8A', fontSize:12.5, fontWeight:600, textDecoration:'none', border:'1px solid #C9D7EC' }}>
            <Icon name="file" size={12} /> Justificativa de Faltas ↗
          </a>
        </div>
      </div>
    </div>
  );
};

// ── Seção: Arquivos + E-mails ─────────────────────────────────────────────────

const SecaoArquivos = ({ user }) => {
  const [pastaAberta, setPastaAberta] = useState(null);
  const [copiado, setCopiado]         = useState('');
  const [buscaEmail, setBuscaEmail]   = useState('');
  const [setores, setSetores]         = useState(() => getSetoresArquivos());
  const [editandoSetor, setEditandoSetor] = useState(null);
  const isAdmin = user?.perfil === 'admin';
  function atualizarUrl(nome, url) {
    const novos = setores.map(s => s.nome === nome ? { ...s, url } : s);
    setSetores(novos);
    salvarSetoresArquivos(novos);
  }

  // Detecta e-mail institucional pelo dominio (@escalab.com.br). Tudo mais e tratado como pessoal.
  const isEmailEscalab = (e) => !!e && /@escalab\.com\.br$/i.test(e.trim());

  function copiarEmails(tipo) {
    const ativos = (typeof getColaboradoresAtivos === 'function') ? getColaboradoresAtivos() : COLABORADORES;
    const lista = [];
    ativos.forEach(c => {
      const dadosAdm  = (typeof getDadosAssinatura === 'function') ? getDadosAssinatura(c.id) : {};
      const emailPesAdm = dadosAdm?.emailPessoal || '';
      const cEmail = c.email || '';
      const isProf = isEmailEscalab(cEmail);
      const profissional = isProf ? cEmail : '';
      const pessoal      = isProf ? emailPesAdm : (cEmail || emailPesAdm);
      if (tipo === 'profissionais' && profissional) lista.push(profissional);
      else if (tipo === 'pessoais' && pessoal)     lista.push(pessoal);
      else if (tipo === 'todos') {
        if (profissional) lista.push(profissional);
        if (pessoal && pessoal !== profissional) lista.push(pessoal);
      }
    });
    navigator.clipboard?.writeText(lista.join(', ')).catch(() => {});
    setCopiado(tipo);
    setTimeout(() => setCopiado(''), 2500);
  }

  // Desligados saem automaticamente da listagem de e-mails da intranet
  const colaboradoresAtivos = (typeof getColaboradoresAtivos === 'function') ? getColaboradoresAtivos() : COLABORADORES;
  const emailsFiltrados = colaboradoresAtivos.filter(c => !buscaEmail || c.nome.toLowerCase().includes(buscaEmail.toLowerCase()) || c.email.toLowerCase().includes(buscaEmail.toLowerCase()) || c.setor.toLowerCase().includes(buscaEmail.toLowerCase()));

  return (
    <div style={{ display:'flex', flexDirection:'column', gap:20 }}>
      {/* Arquivos por setor · caixinhas estilo Acesso Rápido, cada uma link pro Drive */}
      <div style={{ background:'#fff', borderRadius:18, padding:'22px 24px', boxShadow:'0 4px 20px rgba(0,0,0,.06)', border:'1px solid var(--escalab-line)' }}>
        <div style={{ display:'flex', gap:10, alignItems:'center', marginBottom:18 }}>
          <div style={{ width:32, height:32, borderRadius:9, background:'var(--escalab-paper)', display:'flex', alignItems:'center', justifyContent:'center' }}><Icon name="file" size={16} /></div>
          <div>
            <div style={{ fontSize:13.5, fontWeight:700, color:'var(--escalab-ink)' }}>Arquivos por Setor</div>
            <div style={{ fontSize:12, color:'var(--escalab-mute)', marginTop:1 }}>Cada caixinha abre a pasta do setor no Drive</div>
          </div>
        </div>
        <div style={{ display:'grid', gridTemplateColumns:'repeat(auto-fill, minmax(150px, 1fr))', gap:12 }}>
          {setores.map(s => {
            const desativado = s.inativo;
            const semUrl = !s.url || s.url === '#';
            return (
              <div key={s.nome} style={{ position:'relative' }}>
                <a
                  href={semUrl ? undefined : s.url}
                  target={semUrl ? undefined : '_blank'}
                  rel={semUrl ? undefined : 'noopener noreferrer'}
                  onClick={e => { if (semUrl) { e.preventDefault(); if (isAdmin) setEditandoSetor(s.nome); } }}
                  title={semUrl ? (isAdmin ? 'Configurar link do Drive' : 'Link do Drive ainda não cadastrado') : s.url}
                  style={{
                    display:'flex', flexDirection:'column', alignItems:'center', justifyContent:'center', gap:10,
                    padding:'20px 14px 18px', borderRadius:16, color:'#fff',
                    background:`linear-gradient(145deg, ${s.cor}f0, ${s.cor}c0)`,
                    boxShadow:`0 6px 20px ${s.cor}35`,
                    textDecoration:'none', cursor:'pointer', textAlign:'center', minHeight:108,
                    opacity:desativado ? .45 : 1, transition:'all .2s cubic-bezier(.34,1.5,.64,1)',
                  }}
                  onMouseEnter={e => { if (!desativado) { e.currentTarget.style.transform = 'translateY(-4px) scale(1.03)'; e.currentTarget.style.boxShadow = `0 16px 36px ${s.cor}55, 0 4px 12px ${s.cor}30`; } }}
                  onMouseLeave={e => { e.currentTarget.style.transform = 'none'; e.currentTarget.style.boxShadow = `0 6px 20px ${s.cor}35`; }}
                >
                  <div style={{ width:46, height:46, borderRadius:13, background:'rgba(255,255,255,.22)', display:'flex', alignItems:'center', justifyContent:'center' }}>
                    <Icon name="file" size={22} />
                  </div>
                  <div style={{ fontSize:13, fontWeight:700, lineHeight:1.25, letterSpacing:'-.01em' }}>{s.nome}</div>
                  {desativado && <div style={{ fontSize:10, opacity:.85 }}>(inativo)</div>}
                  {semUrl && !desativado && <div style={{ fontSize:10, opacity:.85, fontStyle:'italic' }}>{isAdmin ? 'configurar link' : 'sem link'}</div>}
                </a>
                {isAdmin && (
                  <button onClick={() => setEditandoSetor(s.nome)} title="Editar URL"
                    style={{ position:'absolute', top:6, right:6, border:0, background:'rgba(255,255,255,.85)', color:s.cor, borderRadius:7, padding:'3px 6px', cursor:'pointer', fontSize:10.5, fontWeight:700, lineHeight:1 }}>
                    ✎
                  </button>
                )}
              </div>
            );
          })}
        </div>
        {editandoSetor && (() => {
          const setorAtual = setores.find(s => s.nome === editandoSetor);
          if (!setorAtual) return null;
          return (
            <div onClick={() => setEditandoSetor(null)} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
              <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:14, width:'100%', maxWidth:440, padding:'20px 22px' }}>
                <div style={{ fontSize:15, fontWeight:800, marginBottom:6 }}>Pasta do Drive · {editandoSetor}</div>
                <div style={{ fontSize:12, color:'var(--escalab-mute)', marginBottom:12 }}>Cole a URL da pasta do Google Drive deste setor.</div>
                <input
                  defaultValue={setorAtual.url === '#' ? '' : setorAtual.url}
                  placeholder="https://drive.google.com/..."
                  onBlur={e => atualizarUrl(editandoSetor, e.target.value.trim() || '#')}
                  autoFocus
                  style={{ width:'100%', border:'1px solid var(--escalab-line)', borderRadius:8, padding:'9px 12px', fontSize:13, fontFamily:'var(--font-sans)', outline:0 }} />
                <div style={{ display:'flex', gap:8, justifyContent:'flex-end', marginTop:14 }}>
                  <button onClick={() => setEditandoSetor(null)} style={{ border:'1px solid var(--escalab-line)', background:'#fff', borderRadius:8, padding:'7px 14px', cursor:'pointer', fontSize:13, fontWeight:600 }}>Fechar</button>
                </div>
              </div>
            </div>
          );
        })()}
      </div>

      {/* E-mails · disponíveis para todos (lista profissional + pessoal cadastrado) */}
      <div style={{ background:'#fff', borderRadius:18, overflow:'hidden', boxShadow:'0 4px 20px rgba(0,0,0,.06)', border:'1px solid var(--escalab-line)' }}>
        {/* Header */}
        <div style={{ padding:'18px 22px', borderBottom:'1px solid var(--escalab-line)', background:'var(--escalab-paper)' }}>
          <div style={{ display:'flex', gap:10, alignItems:'flex-start', marginBottom:12 }}>
            <div style={{ width:32, height:32, borderRadius:9, background:'var(--escalab-paper)', display:'flex', alignItems:'center', justifyContent:'center', border:'1px solid var(--escalab-line)', flexShrink:0 }}><Icon name="message" size={16} /></div>
            <div style={{ flex:1 }}>
              <div style={{ fontSize:13.5, fontWeight:700, color:'var(--escalab-ink)', marginBottom:3 }}>E-mails do Time</div>
              <div style={{ fontSize:12.5, color:'var(--escalab-mute)', lineHeight:1.5 }}>
                Grupos de e-mail:
                <span style={{ background:'var(--escalab-brand-tint)', color:'var(--escalab-brand-deep)', borderRadius:5, padding:'1px 7px', margin:'0 5px', fontSize:12, fontWeight:600 }}>fixosescalab@googlegroups.com</span>
                <span style={{ background:'var(--escalab-brand-tint)', color:'var(--escalab-brand-deep)', borderRadius:5, padding:'1px 7px', fontSize:12, fontWeight:600 }}>associadosescalab@googlegroups.com</span>
              </div>
            </div>
          </div>
          {/* Ações + busca */}
          <div style={{ display:'flex', gap:8, flexWrap:'wrap', alignItems:'center' }}>
            <div style={{ display:'flex', alignItems:'center', gap:7, background:'#fff', border:'1px solid var(--escalab-line)', borderRadius:8, padding:'6px 12px', flex:1, maxWidth:280 }}>
              <Icon name="search" size={13} />
              <input value={buscaEmail} onChange={e => setBuscaEmail(e.target.value)} placeholder="Buscar por nome, setor ou e-mail…" style={{ border:0, outline:0, fontSize:13, fontFamily:'var(--font-sans)', background:'transparent', flex:1 }} />
            </div>
            {[{ id:'profissionais',label:'Copiar profissionais' },{ id:'pessoais',label:'Copiar pessoais' },{ id:'todos',label:'Copiar todos' }].map(b => (
              <button key={b.id} onClick={() => copiarEmails(b.id)} style={{ border:'1px solid var(--escalab-line)', background:copiado===b.id?'var(--escalab-brand-tint)':'#fff', borderRadius:8, padding:'6px 14px', cursor:'pointer', fontSize:12.5, color:copiado===b.id?'var(--escalab-brand)':'var(--escalab-slate)', fontFamily:'var(--font-sans)', display:'flex', gap:5, alignItems:'center', transition:'all .15s', fontWeight:copiado===b.id?600:400 }}>
                {copiado===b.id ? <Icon name="check" size={12} /> : <Icon name="clipboard" size={12} />}
                {copiado===b.id ? 'Copiado!' : b.label}
              </button>
            ))}
          </div>
        </div>
        {/* Tabela com 2 colunas de e-mail */}
        <div style={{ maxHeight:360, overflowY:'auto' }}>
          {/* Cabeçalho */}
          <div style={{ display:'grid', gridTemplateColumns:'2fr 1.2fr 2.2fr 2.2fr', gap:0, padding:'8px 22px', background:'var(--escalab-paper)', borderBottom:'1px solid var(--escalab-line)', position:'sticky', top:0, zIndex:1 }}>
            {['Nome / Setor','Tipo','E-mail Profissional','E-mail Pessoal'].map(h => (
              <div key={h} style={{ fontSize:10.5, fontWeight:700, letterSpacing:'.08em', textTransform:'uppercase', color:'var(--escalab-mute)' }}>{h}</div>
            ))}
          </div>
          {emailsFiltrados.map((c, i) => {
            const cat         = getCategoriaColaborador ? getCategoriaColaborador(c.id) : { categoria:'fixo' };
            const isFixo      = cat.categoria === 'fixo';
            const dadosAdm    = getDadosAssinatura ? getDadosAssinatura(c.id) : {};
            const emailPesAdm = dadosAdm?.emailPessoal || '';
            const cEmail      = c.email || '';
            // Profissional = so se for @escalab.com.br. Gmail/hotmail/etc viram pessoal.
            const isEscalabEmail = isEmailEscalab(cEmail);
            const emailProf   = isEscalabEmail ? cEmail : '';
            const emailAdm    = isEscalabEmail ? emailPesAdm : (cEmail || emailPesAdm);
            return (
              <div key={c.id} style={{ display:'grid', gridTemplateColumns:'2fr 1.2fr 2.2fr 2.2fr', gap:0, padding:'10px 22px', borderBottom:'1px solid var(--escalab-line)', background:i%2===0?'#fff':'var(--escalab-paper)', alignItems:'center', transition:'background .1s' }}
                onMouseEnter={e => e.currentTarget.style.background='var(--escalab-brand-tint)'}
                onMouseLeave={e => e.currentTarget.style.background=i%2===0?'#fff':'var(--escalab-paper)'}>
                {/* Nome */}
                <div>
                  <div style={{ fontSize:13, fontWeight:600, color:'var(--escalab-ink)' }}>{c.nome.split(' ').slice(0,3).join(' ')}</div>
                  <div style={{ fontSize:11.5, color:'var(--escalab-mute)', marginTop:1 }}>{c.setor}</div>
                </div>
                {/* Tipo */}
                <div>
                  <span style={{ fontSize:11, fontWeight:700, borderRadius:5, padding:'2px 7px', background:isFixo?'var(--escalab-brand-tint)':'#FFF7EB', color:isFixo?'var(--escalab-brand)':'#E89B3B' }}>
                    {isFixo ? 'Fixo' : 'Associado'}
                  </span>
                </div>
                {/* E-mail profissional */}
                <div style={{ display:'flex', gap:6, alignItems:'center' }}>
                  {emailProf ? (
                    <>
                      <span style={{ fontSize:12, color:'var(--escalab-brand)', overflow:'hidden', textOverflow:'ellipsis', whiteSpace:'nowrap', flex:1 }}>{emailProf}</span>
                      <button onClick={() => { navigator.clipboard?.writeText(emailProf).catch(() => {}); setCopiado('prof_'+c.id); setTimeout(() => setCopiado(''), 2000); }}
                        style={{ border:'1px solid var(--escalab-line)', background:copiado==='prof_'+c.id?'var(--escalab-brand-tint)':'#fff', borderRadius:6, padding:'3px 8px', cursor:'pointer', fontSize:11, color:copiado==='prof_'+c.id?'var(--escalab-brand)':'var(--escalab-mute)', fontFamily:'var(--font-sans)', flexShrink:0, transition:'all .15s' }}>
                        {copiado==='prof_'+c.id ? '✓' : 'Copiar'}
                      </button>
                    </>
                  ) : (
                    <span style={{ fontSize:11.5, color:'var(--escalab-mute)', fontStyle:'italic' }}>Sem e-mail @escalab</span>
                  )}
                </div>
                {/* E-mail pessoal */}
                <div style={{ display:'flex', gap:6, alignItems:'center' }}>
                  {emailAdm ? (
                    <>
                      <span style={{ fontSize:12, color:'var(--escalab-slate)', overflow:'hidden', textOverflow:'ellipsis', whiteSpace:'nowrap', flex:1 }}>{emailAdm}</span>
                      <button onClick={() => { navigator.clipboard?.writeText(emailAdm).catch(() => {}); setCopiado('pes_'+c.id); setTimeout(() => setCopiado(''), 2000); }}
                        style={{ border:'1px solid var(--escalab-line)', background:copiado==='pes_'+c.id?'var(--escalab-brand-tint)':'#fff', borderRadius:6, padding:'3px 8px', cursor:'pointer', fontSize:11, color:copiado==='pes_'+c.id?'var(--escalab-brand)':'var(--escalab-mute)', fontFamily:'var(--font-sans)', flexShrink:0, transition:'all .15s' }}>
                        {copiado==='pes_'+c.id ? '✓' : 'Copiar'}
                      </button>
                    </>
                  ) : (
                    <span style={{ fontSize:11.5, color:'var(--escalab-mute)', fontStyle:'italic' }}>Não cadastrado</span>
                  )}
                </div>
              </div>
            );
          })}
        </div>
        {emailsFiltrados.length === 0 && (
          <div style={{ padding:'24px', textAlign:'center', color:'var(--escalab-mute)', fontSize:13 }}>Nenhum colaborador encontrado.</div>
        )}
        <div style={{ padding:'10px 22px', borderTop:'1px solid var(--escalab-line)', background:'var(--escalab-paper)', fontSize:12, color:'var(--escalab-mute)' }}>
          E-mail profissional = domínio <strong>@escalab.com.br</strong>. Demais (gmail, hotmail etc.) são tratados como pessoais. Pessoas desligadas saem automaticamente desta lista.
        </div>
      </div>
    </div>
  );
};

// ── Seção: Jornal & Álbum ────────────────────────────────────────────────────

const JORNAL_READS_KEY = 'escalab_jornal_reads_v2';

function registrarLeitura(jornalId, userId) {
  try {
    const data = JSON.parse(localStorage.getItem(JORNAL_READS_KEY) || '{}');
    if (!data[jornalId]) data[jornalId] = {};
    data[jornalId][userId] = new Date().toISOString();
    localStorage.setItem(JORNAL_READS_KEY, JSON.stringify(data));
  } catch {}
}

function getLeituras(jornalId) {
  try {
    const data = JSON.parse(localStorage.getItem(JORNAL_READS_KEY) || '{}');
    return data[jornalId] || {};
  } catch { return {}; }
}

const SecaoCultura = ({ user }) => {
  const [leuAgora, setLeuAgora] = useState(() => {
    const reads = {};
    JORNAL_EDICOES.forEach(j => {
      const r = getLeituras(j.id);
      reads[j.id] = !!r[user?.id];
    });
    return reads;
  });
  const [modalLeitores, setModalLeitores] = useState(null);
  const isAdmin = user?.perfil === 'admin';

  // FOTOS_MOCK defined globally above

  return (
    <div style={{ display:'flex', flexDirection:'column', gap:22 }}>
      {/* Álbum Escalab */}
      <div style={{ background:'linear-gradient(135deg, #FFF9F0 0%, #FFF0D6 100%)', border:'1px solid #F5A62330', borderRadius:18, padding:'24px', boxShadow:'0 4px 20px rgba(245,166,35,.10)' }}>
        <div style={{ display:'flex', justifyContent:'space-between', alignItems:'flex-start', marginBottom:18 }}>
          <div>
            <div style={{ fontSize:18, fontWeight:800, color:'#7A4A00', letterSpacing:'-.01em' }}>📸 Álbum Escalab</div>
            <div style={{ fontSize:13, color:'#B56500', marginTop:3 }}>Momentos do time · clique para expandir</div>
          </div>
          <button style={{ border:'1px solid #F5A62340', background:'#fff', borderRadius:10, padding:'8px 16px', cursor:'pointer', fontSize:13, color:'#B56500', fontFamily:'var(--font-sans)', fontWeight:600 }}>
            Ver todas as fotos
          </button>
        </div>
        <div className="album-grande-grid" style={{ display:'grid', gridTemplateColumns:'repeat(3, 1fr)', gap:12 }}>
          {FOTOS_MOCK.map((f, i) => (
            <div key={i}
              style={{ aspectRatio:'4/3', background:`linear-gradient(135deg, ${f.cor}ee, ${f.cor}99)`, borderRadius:14, display:'flex', flexDirection:'column', alignItems:'center', justifyContent:'center', cursor:'pointer', transition:'all .2s var(--ease-out)', gap:10, boxShadow:`0 4px 16px ${f.cor}30`, overflow:'hidden', position:'relative' }}
              onMouseEnter={e => { e.currentTarget.style.transform = 'scale(1.03)'; e.currentTarget.style.boxShadow = `0 10px 32px ${f.cor}50`; }}
              onMouseLeave={e => { e.currentTarget.style.transform = 'none'; e.currentTarget.style.boxShadow = `0 4px 16px ${f.cor}30`; }}>
              <div style={{ fontSize:38 }}>{f.emoji}</div>
              <div style={{ fontSize:11.5, fontWeight:700, color:'rgba(255,255,255,.95)', textAlign:'center', padding:'0 14px', lineHeight:1.3 }}>{f.evento}</div>
              <div style={{ position:'absolute', inset:0, background:'rgba(0,0,0,0)', transition:'background .2s' }} />
            </div>
          ))}
        </div>
      </div>

      {/* Jornal Interno */}
      <div style={{ background:'#fff', borderRadius:18, overflow:'hidden', boxShadow:'0 4px 20px rgba(0,0,0,.06)', border:'1px solid var(--escalab-line)' }}>
        <div style={{ padding:'16px 22px', borderBottom:'1px solid var(--escalab-line)', display:'flex', gap:10, alignItems:'center', background:'var(--escalab-paper)' }}>
          <div style={{ width:32, height:32, borderRadius:9, background:'#1F4A8A', display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}>
            <Icon name="file" size={16} />
          </div>
          <div>
            <div style={{ fontSize:13.5, fontWeight:700, color:'var(--escalab-ink)' }}>Jornal Interno</div>
            <div style={{ fontSize:12, color:'var(--escalab-mute)', marginTop:1 }}>Notícias e novidades do Escalab</div>
          </div>
        </div>
        <div style={{ padding:'16px 22px', display:'flex', flexDirection:'column', gap:12 }}>
          {JORNAL_EDICOES.map(j => {
            const dt        = j.data.split('-').reverse().join('/');
            const leituras  = getLeituras(j.id);
            const totalLeram = Object.keys(leituras).length + (j.leram?.length || 0);
            const pctLeram  = Math.round(totalLeram / COLABORADORES.length * 100);
            const jaLeu     = leuAgora[j.id] || !!leituras[user?.id] || (j.leram || []).includes(user?.id);
            const leitoresIds = [...(j.leram || []), ...Object.keys(leituras).map(Number)];
            const leitores  = [...new Set(leitoresIds)].map(id => COLABORADORES.find(c => c.id === id)).filter(Boolean);

            return (
              <div key={j.id} className="jornal-edicao-row" style={{ background:'var(--escalab-paper)', borderRadius:14, padding:'16px 18px', display:'flex', gap:14, alignItems:'flex-start', transition:'all .15s', border:'1px solid var(--escalab-line)', flexWrap:'wrap' }}
                onMouseEnter={e => { e.currentTarget.style.boxShadow = '0 4px 14px rgba(0,0,0,.08)'; e.currentTarget.style.transform = 'translateY(-1px)'; }}
                onMouseLeave={e => { e.currentTarget.style.boxShadow = 'none'; e.currentTarget.style.transform = 'none'; }}>
                <div style={{ width:48, height:48, borderRadius:12, background:'linear-gradient(135deg, #1F4A8A, #2B5FAD)', display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0, fontSize:22 }}>📰</div>
                <div style={{ flex:1 }}>
                  <div style={{ fontSize:14, fontWeight:700, color:'var(--escalab-ink)' }}>{j.titulo}</div>
                  <div style={{ fontSize:12, color:'var(--escalab-mute)', marginTop:3 }}>Publicado em {dt}</div>
                  {/* Taxa de abertura · só para o GC (admin) */}
                  {isAdmin && (<>
                    <div style={{ marginTop:10, display:'flex', alignItems:'center', gap:10 }}>
                      <div style={{ flex:1, height:6, background:'var(--escalab-line)', borderRadius:999, maxWidth:160 }}>
                        <div style={{ width:pctLeram+'%', height:'100%', background:pctLeram>=80?'#00967B':pctLeram>=50?'#E89B3B':'#B3261E', borderRadius:999, transition:'width .5s' }} />
                      </div>
                      <span style={{ fontSize:12.5, fontWeight:700, color:pctLeram>=80?'#00836B':pctLeram>=50?'#E89B3B':'#B3261E' }}>{pctLeram}%</span>
                      <span style={{ fontSize:12, color:'var(--escalab-mute)' }}>{totalLeram}/{COLABORADORES.length} abriram o e-mail</span>
                      {leitores.length > 0 && (
                        <button onClick={() => setModalLeitores({ jornal:j, leitores })} style={{ border:'1px solid var(--escalab-line)', background:'#fff', borderRadius:6, padding:'2px 8px', cursor:'pointer', fontSize:11.5, color:'var(--escalab-mute)', fontFamily:'var(--font-sans)' }}>
                          Ver quem abriu
                        </button>
                      )}
                    </div>
                    {/* Avatares dos últimos que abriram */}
                    {leitores.length > 0 && (
                      <div style={{ display:'flex', alignItems:'center', gap:3, marginTop:8 }}>
                        {leitores.slice(0,6).map(l => (
                          <div key={l.id} style={{ width:22, height:22, borderRadius:'50%', background:l.cor, border:'2px solid #fff', display:'flex', alignItems:'center', justifyContent:'center', fontSize:9, fontWeight:700, color:'#fff', marginLeft:-4, zIndex:1 }} title={l.nome}>{l.iniciais}</div>
                        ))}
                        {leitores.length > 6 && <span style={{ fontSize:11, color:'var(--escalab-mute)', marginLeft:6 }}>+{leitores.length-6}</span>}
                        <span style={{ fontSize:11.5, color:'var(--escalab-mute)', marginLeft:8 }}>também abriram</span>
                      </div>
                    )}
                  </>)}
                </div>
                {isAdmin && (
                  <button onClick={() => {
                      const nova = prompt('URL do jornal · ' + j.titulo, getUrlAtual(j.id) || '');
                      if (nova == null) return;
                      salvarJornalUrl(j.id, nova.trim());
                      // Atualiza o array em memória pra refletir já
                      const idx = JORNAL_EDICOES.findIndex(x => x.id === j.id);
                      if (idx >= 0) JORNAL_EDICOES[idx] = { ...JORNAL_EDICOES[idx], url: nova.trim() };
                      window.location.reload();
                    }}
                    title="Editar link do jornal (URL externa)"
                    style={{ border:'1px solid var(--escalab-line)', background:'#fff', borderRadius:8, padding:'6px 10px', cursor:'pointer', fontSize:11.5, color:'var(--escalab-slate)', fontFamily:'var(--font-sans)', whiteSpace:'nowrap', display:'flex', alignItems:'center', gap:5, flexShrink:0 }}>
                    <Icon name="edit" size={11} /> {j.url ? 'Editar URL' : 'Cadastrar URL'}
                  </button>
                )}
                {j.url ? (
                  <a href={j.url} target="_blank" rel="noopener noreferrer"
                    onClick={() => { registrarLeitura(j.id, user?.id); setLeuAgora(l => ({ ...l, [j.id]:true })); }}
                    style={{ border:`1px solid ${jaLeu?'var(--escalab-brand-soft)':'var(--escalab-line)'}`, background:jaLeu?'var(--escalab-brand-tint)':'#fff', borderRadius:10, padding:'8px 16px', cursor:'pointer', fontSize:13, color:jaLeu?'var(--escalab-brand)':'var(--escalab-slate)', fontFamily:'var(--font-sans)', whiteSpace:'nowrap', fontWeight:jaLeu?700:400, transition:'all .15s', flexShrink:0, textDecoration:'none', display:'inline-flex', alignItems:'center', gap:4 }}>
                    {jaLeu ? '✓ Aberto' : 'Abrir jornal →'}
                  </a>
                ) : (
                  <button onClick={() => alert(isAdmin ? 'Cadastre a URL primeiro no botão "Cadastrar URL".' : 'Esta edição ainda não tem link cadastrado. Avise o RH para subir o jornal.')}
                    style={{ border:'1px solid var(--escalab-line)', background:'#F5F7FA', borderRadius:10, padding:'8px 16px', cursor:'pointer', fontSize:13, color:'var(--escalab-mute)', fontFamily:'var(--font-sans)', whiteSpace:'nowrap', fontWeight:400, flexShrink:0 }}>
                    Em breve
                  </button>
                )}
              </div>
            );
          })}
          {/* Modal: quem leu */}
          {modalLeitores && (
            <div onClick={() => setModalLeitores(null)} style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.5)', backdropFilter:'blur(4px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
              <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:16, width:'100%', maxWidth:400, maxHeight:'70vh', overflow:'auto', animation:'popIn .22s var(--ease-out)', boxShadow:'0 20px 60px rgba(0,0,0,.15)' }}>
                <div style={{ padding:'16px 20px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
                  <div>
                    <div style={{ fontWeight:700, fontSize:14 }}>Quem abriu o e-mail</div>
                    <div style={{ fontSize:12, color:'var(--escalab-mute)', marginTop:2 }}>{modalLeitores.jornal.titulo}</div>
                  </div>
                  <button onClick={() => setModalLeitores(null)} style={{ border:0, background:'transparent', cursor:'pointer', color:'var(--escalab-mute)' }}><Icon name="close" size={16} /></button>
                </div>
                <div style={{ padding:'12px 20px' }}>
                  {modalLeitores.leitores.map(l => (
                    <div key={l.id} style={{ display:'flex', gap:10, alignItems:'center', padding:'8px 0', borderBottom:'1px solid var(--escalab-line)' }}>
                      <div style={{ width:32, height:32, borderRadius:'50%', background:l.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontSize:11, fontWeight:700, flexShrink:0 }}>{l.iniciais}</div>
                      <div>
                        <div style={{ fontSize:13, fontWeight:600 }}>{l.nome.split(' ').slice(0,3).join(' ')}</div>
                        <div style={{ fontSize:11.5, color:'var(--escalab-mute)' }}>{l.setor}</div>
                      </div>
                    </div>
                  ))}
                </div>
              </div>
            </div>
          )}
        </div>
      </div>
    </div>
  );
};

// ── Seção: Informações Úteis ──────────────────────────────────────────────────

const SecaoInfoUteis = () => (
  <div style={{ display:'flex', flexDirection:'column', gap:18 }}>
    {/* Brigadistas */}
    <div style={{ background:'linear-gradient(135deg, #B71C1C 0%, #8B1A1A 100%)', borderRadius:20, padding:'26px 28px', boxShadow:'0 10px 40px rgba(183,28,28,.30), 0 4px 12px rgba(0,0,0,.08)', position:'relative', overflow:'hidden' }}>
      {/* Decorative */}
      <div style={{ position:'absolute', right:-30, top:-30, width:160, height:160, borderRadius:'50%', background:'rgba(255,255,255,.05)' }} />
      <div style={{ position:'absolute', left:'40%', bottom:-50, width:200, height:200, borderRadius:'50%', background:'rgba(255,255,255,.03)' }} />
      <div style={{ position:'relative' }}>
        <div style={{ display:'flex', gap:12, alignItems:'center', marginBottom:20 }}>
          <div style={{ width:44, height:44, borderRadius:12, background:'rgba(255,255,255,.2)', display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}>
            <Icon name="warn" size={22} />
          </div>
          <div>
            <div style={{ fontSize:20, fontWeight:800, color:'#fff', letterSpacing:'-.01em' }}>Brigadistas de Emergência</div>
            <div style={{ fontSize:13, color:'rgba(255,255,255,.75)', marginTop:2 }}>Em caso de incidente ou emergência, contate imediatamente</div>
          </div>
        </div>
        <div style={{ display:'grid', gridTemplateColumns:'repeat(auto-fill, minmax(220px, 1fr))', gap:'8px 24px' }}>
          {BRIGADISTAS.map(b => (
            <div key={b.nome} style={{ display:'flex', justifyContent:'space-between', alignItems:'center', padding:'9px 12px', borderRadius:10, background:'rgba(255,255,255,.1)', gap:12 }}>
              <span style={{ fontSize:13.5, fontWeight:700, color:'#fff' }}>{b.nome}</span>
              <span style={{ fontSize:12.5, color:'rgba(255,255,255,.85)', fontFamily:'monospace', background:'rgba(0,0,0,.2)', borderRadius:6, padding:'2px 8px', letterSpacing:'.02em' }}>{b.tel}</span>
            </div>
          ))}
        </div>
      </div>
    </div>

    {/* Locais */}
    <div style={{ display:'grid', gridTemplateColumns:'repeat(3, 1fr)', gap:14 }}>
      {LOCAIS_INFO.map(l => (
        <div key={l.nome} style={{ background:l.bg, border:`1px solid ${l.cor}30`, borderRadius:18, padding:'20px 22px', boxShadow:`0 4px 20px ${l.cor}12`, transition:'all .18s' }}
          onMouseEnter={e => { e.currentTarget.style.boxShadow = `0 8px 30px ${l.cor}25`; e.currentTarget.style.transform = 'translateY(-2px)'; }}
          onMouseLeave={e => { e.currentTarget.style.boxShadow = `0 4px 20px ${l.cor}12`; e.currentTarget.style.transform = 'none'; }}>
          <div style={{ display:'flex', gap:10, alignItems:'center', marginBottom:16 }}>
            <div style={{ width:40, height:40, borderRadius:11, background:l.cor+'22', display:'flex', alignItems:'center', justifyContent:'center', fontSize:20 }}>{l.icon}</div>
            <div style={{ fontSize:16, fontWeight:800, color:l.cor }}>{l.nome}</div>
          </div>
          <div style={{ display:'flex', flexDirection:'column', gap:8 }}>
            {l.items.map(it => (
              <div key={it.label} style={{ display:'flex', gap:8, padding:'8px 10px', background:'rgba(255,255,255,.6)', borderRadius:8 }}>
                <span style={{ fontSize:11.5, color:l.cor, minWidth:70, fontWeight:700 }}>{it.label}</span>
                <span style={{ fontSize:12.5, color:'#333', fontWeight:500, fontFamily:it.label==='Senha'||it.label==='WiFi'?'monospace':'inherit', flex:1, wordBreak:'break-all' }}>{it.val}</span>
              </div>
            ))}
          </div>
        </div>
      ))}
    </div>
  </div>
);

// ── Modal de Novidades (popup automático no 1º acesso a cada novidade) ────────
const ModalNovidadesPopup = ({ user, novidades, onFechar }) => {
  const [idx, setIdx] = useState(0);
  const total = novidades.length;
  if (total === 0) return null;
  const nov = novidades[idx];

  function avancar() {
    marcarNovidadeVista(user.id, nov.id);
    if (idx < total - 1) setIdx(idx + 1);
    else onFechar();
  }
  function fecharTudo() {
    // marca todas como vistas para não voltar nessa sessão
    novidades.forEach(n => marcarNovidadeVista(user.id, n.id));
    onFechar();
  }

  const dataFmt = nov.data
    ? new Date(nov.data + 'T12:00:00').toLocaleDateString('pt-BR', { day: '2-digit', month: 'long', year: 'numeric' })
    : '';

  return (
    <Modal open onClose={fecharTudo} title="Novidades da Escalab" width={620}
      footer={<>
        {total > 1 && <span style={{ fontSize: 12, color: 'var(--escalab-mute)', marginRight: 'auto' }}>{idx + 1} de {total}</span>}
        <Button variant="ghost" onClick={fecharTudo}>Fechar tudo</Button>
        <Button variant="primary" onClick={avancar}>{idx < total - 1 ? 'Próxima' : 'Entendi'}</Button>
      </>}>
      <div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>
        {/* Hero verde Escalab · badge + data + título em branco */}
        <div style={{
          margin: '-24px -24px 0',
          padding: '22px 24px 24px',
          background: 'linear-gradient(135deg, var(--escalab-brand-deep) 0%, var(--escalab-brand) 100%)',
          position: 'relative',
          overflow: 'hidden',
        }}>
          {/* círculo decorativo sutil */}
          <div style={{ position:'absolute', right:-40, top:-40, width:160, height:160, borderRadius:'50%', background:'rgba(255,255,255,.07)', pointerEvents:'none' }} />
          <div style={{ position:'relative', display: 'flex', alignItems: 'center', gap: 10, flexWrap: 'wrap', marginBottom: 12 }}>
            <div style={{ display: 'inline-flex', alignItems: 'center', gap: 6, padding: '5px 10px', borderRadius: 999, background: 'rgba(255,255,255,.22)', backdropFilter:'blur(4px)', color: '#fff', fontSize: 11, fontWeight: 700, letterSpacing: '.1em', textTransform: 'uppercase' }}>
              <Icon name="bell" size={12} /> Novidade
            </div>
            {dataFmt && <span style={{ fontSize: 12.5, color: 'rgba(255,255,255,.85)' }}>{dataFmt}</span>}
          </div>
          <h3 style={{ position:'relative', fontFamily: 'var(--font-sans)', fontSize: 26, margin: 0, fontWeight: 700, letterSpacing: '-.015em', color: '#fff', lineHeight: 1.2, textShadow:'0 1px 3px rgba(0,0,0,.15)' }}>
            {nov.titulo || '·'}
          </h3>
        </div>

        {/* foto */}
        {nov.fotoBase64 && (
          <div style={{ borderRadius: 14, overflow: 'hidden', border: '1px solid var(--escalab-line)', maxHeight: 280 }}>
            <img src={nov.fotoBase64} alt="" style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} />
          </div>
        )}

        {/* texto */}
        {nov.texto && (
          <div style={{ fontSize: 14.5, lineHeight: 1.6, color: 'var(--escalab-charcoal)', whiteSpace: 'pre-wrap' }}>{nov.texto}</div>
        )}

        {/* campos personalizados */}
        {(nov.camposExtra || []).length > 0 && (
          <div style={{ borderTop: '1px solid var(--escalab-line)', paddingTop: 14, display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(220px, 1fr))', gap: 12 }} className="mobile-col1">
            {nov.camposExtra.map(c => (
              <div key={c.id} style={{ background: 'var(--escalab-paper)', border: '1px solid var(--escalab-line)', borderRadius: 10, padding: '10px 12px' }}>
                <div style={{ fontSize: 10.5, fontWeight: 700, letterSpacing: '.1em', textTransform: 'uppercase', color: 'var(--escalab-mute)', marginBottom: 4 }}>{c.label}</div>
                {c.tipo === 'link' && c.valor ? (
                  <a href={c.valor} target="_blank" rel="noopener noreferrer" style={{ fontSize: 13.5, color: 'var(--escalab-brand-deep)', wordBreak: 'break-all', textDecoration: 'none' }}>{c.valor} ↗</a>
                ) : c.tipo === 'textarea' ? (
                  <div style={{ fontSize: 13.5, color: 'var(--escalab-ink)', whiteSpace: 'pre-wrap' }}>{c.valor || '·'}</div>
                ) : (
                  <div style={{ fontSize: 13.5, color: 'var(--escalab-ink)' }}>{c.valor || '·'}</div>
                )}
              </div>
            ))}
          </div>
        )}
      </div>
    </Modal>
  );
};

// Hook helper para abrir o popup só uma vez por sessão de browser.
// Sessões anteriores ficam armazenadas em sessionStorage (zera ao fechar a aba).
function useNovidadesPopup(user) {
  const [pendentes, setPendentes] = useState([]);
  const [aberto, setAberto] = useState(false);

  useEffect(() => {
    if (!user) return;
    // 'admin'/'financeiro' tb veem se GC configurar 'publico' incluindo o perfil;
    // por padrão a seed só atinge gestor + colaborador (vide MOV_SEEDS? - sem, é NOVIDADES_SEED).
    const lista = getNovidadesPendentes(user);
    if (lista.length === 0) return;
    // sessionStorage evita reabrir a cada navegação dentro da mesma aba do browser
    const flag = `escalab_nov_pop_${user.id}`;
    if (sessionStorage.getItem(flag)) return;
    sessionStorage.setItem(flag, '1');
    setPendentes(lista);
    setAberto(true);
  }, [user?.id]);

  return { pendentes, aberto, fechar: () => setAberto(false) };
}

// ── Seção: Reconhecimentos ────────────────────────────────────────────────────
// Mural onde qualquer colaborador pode reconhecer outro. Visível pra todos.
const RECON_KEY = 'escalab_reconhecimentos';
// Valores Escalab · usados como motivos do reconhecimento
// PDF Site AVD 5 · item 42: detalhar "Como vivemos" e "Como não vivemos" por valor
const RECON_CATEGORIAS = [
  { id:'respeito',     label:'Joga o jogo com respeito',  emoji:'💝', cor:'#00836B', bg:'#E6F5F1',
    titulo:'JOGAMOS O JOGO COM RESPEITO',
    descricao:'Respeitamos contextos, ideias e individualidades, comunicando de forma não violenta e sem espaço para preconceitos. Resolvemos problemas internamente, abertos a feedbacks e sempre prezando pela imagem do Escalab.',
    // Texto entregue por G&C em 17/06/2026 — manter EXATAMENTE como recebido.
    comoVivemos: [
      'Respeitamos o contexto, as ideias e as individualidade de todos;',
      'Respeitamos e prezamos pela imagem da instituição Escalab ao relacionar com o ambiente externo;',
      'Comunicamos de maneira não violenta;',
      'Resolvemos nossos problemas dentro de casa',
      'Somos abertos a dar e receber feedbacks.',
    ],
    comoNaoVivemos: [
      'Não pesamos o clima;',
      'Não colocamos dificuldades;',
      'Não abrimos espaço para preconceitos e discriminação;',
      'Não fazemos comentários pelas costas;',
      'Não levamos feedbacks como ataques pessoais.',
    ],
  },
  { id:'autentico',    label:'Autêntico e transparente',  emoji:'👩‍🔬', cor:'#1F4A8A', bg:'#EEF3FA',
    titulo:'SOMOS AUTÊNTICOS E TRANSPARENTES',
    descricao:'Tomamos decisões orientadas por dados e compromisso com a verdade. A entrega é individual, mas o resultado é sempre coletivo.',
    comoVivemos: [
      'Prezamos e pensamos o melhor para o Escalab, equipe e indivíduo (nessa ordem);',
      'Fazemos nosso ambiente ser seguro;',
      'Consideramos a entrega individual mas o resultado é coletivo;',
      'Temos compromisso com transparência e com a verdade para tomar decisões;',
      'Nossas entregas e decisões são orientadas por dados.',
    ],
    comoNaoVivemos: [
      'Não pensamos individualmente ou apenas no próprio setor;',
      'Não omitimos informações ou manipulamos dados.',
    ],
  },
  { id:'impacto',      label:'Tem ambição por impacto',   emoji:'🎯', cor:'#B56500', bg:'#FFF3DA',
    titulo:'TEMOS AMBIÇÃO POR IMPACTO',
    descricao:'Focamos 100% no resultado com extremo profissionalismo e comprometimento total com a melhor entrega ao cliente. Assumimos responsabilidades, mapeamos riscos e trabalhamos com prazos e metas claras.',
    comoVivemos: [
      'Temos foco 100% no resultado',
      'Estamos TODOS comprometidos com a MELHOR entrega para o cliente',
      'Somos extremamente profissionais',
      'Assumimos a responsabilidade das nossas entregas',
      'Dedicamos a todo processo e não a parte dele',
      'Mapeamos todos os riscos para nós e para o cliente',
    ],
    comoNaoVivemos: [
      'Não abraçamos o mundo, trabalhamos juntos',
      'Não combinamos entregas sem prazos e metas',
      'Não deixamos desinformados quem depende da nossa entrega',
      'Não comprometemos a segurança em nenhuma hipótese',
    ],
  },
  { id:'maonamassa',   label:'É mão na massa',            emoji:'💪', cor:'#6B3FA0', bg:'#F4EEFF',
    titulo:'SOMOS MÃO NA MASSA',
    descricao:'Somos resolutivos e proativos, agindo como donos do negócio que trazem soluções. Enfrentamos desafios com senso de comunidade e não terceirizamos nossos problemas.',
    comoVivemos: [
      'Somos resolutivos, resolvemos o que aparece (fazemos o que tem que ser feito)',
      'Consideramos a proatividade indispensável',
      'Agimos lembrando que somos donos do negócio',
    ],
    comoNaoVivemos: [
      'Não colocamos empecilhos, trazemos soluções',
      'Não temos medo de tentar resolver',
      'Temos senso de comunidade mas não terceirizamos problemas',
    ],
  },
];

function getReconhecimentos() { try { return JSON.parse(localStorage.getItem(RECON_KEY) || '[]'); } catch { return []; } }
function salvarReconhecimentos(l) { try { localStorage.setItem(RECON_KEY, JSON.stringify(l)); } catch {} }
function addReconhecimento(r) { const l = getReconhecimentos(); l.unshift(r); salvarReconhecimentos(l); }
function toggleCurtidaRecon(id, userId) {
  const l = getReconhecimentos();
  const idx = l.findIndex(r => r.id === id);
  if (idx === -1) return l;
  const curt = new Set(l[idx].curtidas || []);
  curt.has(userId) ? curt.delete(userId) : curt.add(userId);
  l[idx].curtidas = [...curt];
  salvarReconhecimentos(l);
  return l;
}
function addComentarioRecon(id, comentario) {
  const l = getReconhecimentos();
  const idx = l.findIndex(r => r.id === id);
  if (idx === -1) return l;
  l[idx].comentarios = [...(l[idx].comentarios || []), comentario];
  salvarReconhecimentos(l);
  return l;
}
function deletarReconhecimento(id) { salvarReconhecimentos(getReconhecimentos().filter(r => r.id !== id)); }

const tempoRelativoRecon = (iso) => {
  try {
    const d = new Date(iso);
    const diff = (Date.now() - d.getTime()) / 1000;
    if (diff < 60) return 'agora';
    if (diff < 3600) return `há ${Math.floor(diff/60)} min`;
    if (diff < 86400) return `há ${Math.floor(diff/3600)} h`;
    if (diff < 86400 * 7) return `há ${Math.floor(diff/86400)} d`;
    return d.toLocaleDateString('pt-BR', { day:'2-digit', month:'short' });
  } catch { return ''; }
};

const ModalNovoReconhecimento = ({ user, onClose, onSave }) => {
  const [destId, setDestId] = useState(null);
  const [categoria, setCategoria] = useState('respeito');
  const [mensagem, setMensagem] = useState('');
  const [busca, setBusca] = useState('');
  const cat = RECON_CATEGORIAS.find(c => c.id === categoria);
  const candidatos = COLABORADORES
    .filter(c => c.id !== user.id)
    .filter(c => !busca || c.nome.toLowerCase().includes(busca.toLowerCase()) || c.setor?.toLowerCase().includes(busca.toLowerCase()));
  const dest = COLABORADORES.find(c => c.id === destId);

  function salvar() {
    if (!destId || !mensagem.trim()) return;
    const novo = {
      id: 'R' + Date.now(),
      deId: user.id,
      paraId: destId,
      categoria,
      mensagem: mensagem.trim(),
      data: new Date().toISOString(),
      curtidas: [],
      comentarios: [],
    };
    addReconhecimento(novo);
    onSave();
    onClose();
  }

  return (
    <div onClick={onClose} className="modal-overlay" style={{ position:'fixed', inset:0, background:'rgba(10,15,18,.6)', backdropFilter:'blur(6px)', zIndex:1000, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }}>
      <div onClick={e => e.stopPropagation()} style={{ background:'#fff', borderRadius:20, width:'100%', maxWidth:560, maxHeight:'92vh', overflow:'auto', animation:'popIn .22s var(--ease-out)', boxShadow:'0 24px 80px rgba(0,0,0,.18)' }}>
        <div style={{ padding:'22px 24px', borderBottom:'1px solid var(--escalab-line)', display:'flex', justifyContent:'space-between', alignItems:'center' }}>
          <div>
            <h3 style={{ margin:0, fontSize:18, fontWeight:800 }}>Novo reconhecimento</h3>
            <div style={{ fontSize:12.5, color:'var(--escalab-mute)', marginTop:2 }}>Reconheça publicamente quem fez a diferença</div>
          </div>
          <button onClick={onClose} style={{ border:0, background:'var(--escalab-paper)', cursor:'pointer', color:'var(--escalab-mute)', width:32, height:32, borderRadius:8, display:'flex', alignItems:'center', justifyContent:'center' }}>
            <Icon name="close" size={16} />
          </button>
        </div>
        <div style={{ padding:'18px 24px', display:'flex', flexDirection:'column', gap:18 }}>
          {/* Quem reconhecer */}
          <div>
            <div style={{ fontSize:12, fontWeight:700, color:'var(--escalab-slate)', marginBottom:8, textTransform:'uppercase', letterSpacing:'.08em' }}>Quem você reconhece?</div>
            {dest ? (
              <div style={{ display:'flex', alignItems:'center', gap:10, padding:'10px 12px', borderRadius:12, background:'var(--escalab-brand-tint)', border:'1px solid var(--escalab-brand-soft)' }}>
                <div style={{ width:36, height:36, borderRadius:'50%', background:dest.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:700, fontSize:13, flexShrink:0 }}>{dest.iniciais}</div>
                <div style={{ flex:1 }}>
                  <div style={{ fontSize:13.5, fontWeight:600 }}>{dest.nome}</div>
                  <div style={{ fontSize:11.5, color:'var(--escalab-mute)' }}>{dest.cargo} · {dest.setor}</div>
                </div>
                <button onClick={() => setDestId(null)} style={{ border:0, background:'transparent', cursor:'pointer', color:'var(--escalab-mute)', padding:4 }}>
                  <Icon name="close" size={14} />
                </button>
              </div>
            ) : (
              <div>
                <div style={{ display:'flex', alignItems:'center', gap:7, background:'var(--escalab-paper)', border:'1px solid var(--escalab-line)', borderRadius:10, padding:'9px 12px', marginBottom:8 }}>
                  <Icon name="search" size={13} />
                  <input value={busca} onChange={e => setBusca(e.target.value)} placeholder="Buscar colaborador…" autoFocus
                    style={{ border:0, outline:0, background:'transparent', fontSize:13.5, fontFamily:'var(--font-sans)', flex:1 }} />
                </div>
                <div style={{ maxHeight:200, overflowY:'auto', border:'1px solid var(--escalab-line)', borderRadius:10 }}>
                  {candidatos.slice(0, 30).map(c => (
                    <button key={c.id} onClick={() => { setDestId(c.id); setBusca(''); }} style={{
                      width:'100%', display:'flex', alignItems:'center', gap:10, padding:'8px 12px', border:0, borderBottom:'1px solid var(--escalab-line)', background:'#fff', cursor:'pointer', textAlign:'left'
                    }}>
                      <div style={{ width:28, height:28, borderRadius:'50%', background:c.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:700, fontSize:11, flexShrink:0 }}>{c.iniciais}</div>
                      <div style={{ flex:1, minWidth:0 }}>
                        <div style={{ fontSize:13, fontWeight:600, color:'var(--escalab-ink)', whiteSpace:'nowrap', overflow:'hidden', textOverflow:'ellipsis' }}>{c.nome}</div>
                        <div style={{ fontSize:11, color:'var(--escalab-mute)' }}>{c.setor}</div>
                      </div>
                    </button>
                  ))}
                </div>
              </div>
            )}
          </div>

          {/* Categoria · Valores Escalab */}
          <div>
            <div style={{ display:'flex', alignItems:'center', gap:8, marginBottom:8 }}>
              <div style={{ fontSize:12, fontWeight:700, color:'var(--escalab-slate)', textTransform:'uppercase', letterSpacing:'.08em' }}>Qual o motivo desse reconhecimento?</div>
              <span style={{ fontSize:13, color:'#00836B', fontWeight:800 }}>Nossos Valores 💚</span>
            </div>
            <div style={{ display:'grid', gridTemplateColumns:'repeat(auto-fill, minmax(220px, 1fr))', gap:8 }}>
              {RECON_CATEGORIAS.map(c => {
                const sel = categoria === c.id;
                return (
                  <button key={c.id} onClick={() => setCategoria(c.id)} title={c.titulo} style={{
                    border:`1px solid ${sel ? c.cor : 'var(--escalab-line)'}`,
                    background: sel ? c.bg : '#fff',
                    color: sel ? c.cor : 'var(--escalab-slate)',
                    borderRadius:10, padding:'10px 12px', cursor:'pointer',
                    fontFamily:'var(--font-sans)', fontSize:13, fontWeight: sel ? 700 : 500,
                    display:'flex', alignItems:'center', gap:8, textAlign:'left', transition:'all .15s',
                  }}>
                    <span style={{ fontSize:18 }}>{c.emoji}</span>
                    <span>{c.label}</span>
                  </button>
                );
              })}
            </div>
            {/* Descrição do valor selecionado + Como vivemos × Como não vivemos (PDF Site AVD 5 · item 42) */}
            {cat && cat.descricao && (
              <div style={{ marginTop:10, padding:'12px 16px', borderRadius:10, background:cat.bg, borderLeft:`3px solid ${cat.cor}`, fontSize:12, color:'var(--escalab-slate)', lineHeight:1.5 }}>
                <div style={{ fontWeight:800, color:cat.cor, marginBottom:4 }}>{cat.titulo}</div>
                <div style={{ marginBottom:10 }}>{cat.descricao}</div>
                {(cat.comoVivemos || cat.comoNaoVivemos) && (
                  <div style={{ display:'grid', gridTemplateColumns:'1fr 1fr', gap:10, marginTop:8 }}>
                    {cat.comoVivemos && (
                      <div style={{ background:'rgba(255,255,255,.6)', borderRadius:8, padding:'8px 10px' }}>
                        <div style={{ fontSize:10.5, fontWeight:800, color:cat.cor, textTransform:'uppercase', letterSpacing:'.06em', marginBottom:5 }}>✓ Como vivemos</div>
                        <ul style={{ margin:0, paddingLeft:16, fontSize:11.5, color:'var(--escalab-ink)' }}>
                          {cat.comoVivemos.map((v,i) => <li key={i} style={{ marginBottom:3 }}>{v}</li>)}
                        </ul>
                      </div>
                    )}
                    {cat.comoNaoVivemos && (
                      <div style={{ background:'rgba(255,255,255,.6)', borderRadius:8, padding:'8px 10px' }}>
                        <div style={{ fontSize:10.5, fontWeight:800, color:'#B3261E', textTransform:'uppercase', letterSpacing:'.06em', marginBottom:5 }}>✗ Como não vivemos</div>
                        <ul style={{ margin:0, paddingLeft:16, fontSize:11.5, color:'var(--escalab-ink)' }}>
                          {cat.comoNaoVivemos.map((v,i) => <li key={i} style={{ marginBottom:3 }}>{v}</li>)}
                        </ul>
                      </div>
                    )}
                  </div>
                )}
              </div>
            )}
          </div>

          {/* Mensagem */}
          <div>
            <div style={{ fontSize:12, fontWeight:700, color:'var(--escalab-slate)', marginBottom:8, textTransform:'uppercase', letterSpacing:'.08em' }}>Mensagem</div>
            <textarea value={mensagem} onChange={e => setMensagem(e.target.value)} rows={4}
              placeholder={`Conte o que ${dest?.nome.split(' ')[0] || 'essa pessoa'} fez que merece reconhecimento…`}
              style={{ width:'100%', border:'1px solid var(--escalab-line)', borderRadius:10, padding:'10px 12px', fontSize:13.5, fontFamily:'var(--font-sans)', resize:'vertical', outline:'none', boxSizing:'border-box' }} />
            <div style={{ fontSize:11, color:'var(--escalab-mute)', marginTop:4, textAlign:'right' }}>{mensagem.length} caracteres</div>
          </div>
        </div>

        <div style={{ padding:'14px 24px', borderTop:'1px solid var(--escalab-line)', display:'flex', justifyContent:'flex-end', gap:9, background:'var(--escalab-paper)' }}>
          <button onClick={onClose} style={{ border:'1px solid var(--escalab-line)', background:'#fff', borderRadius:9, padding:'9px 18px', cursor:'pointer', fontSize:13, fontFamily:'var(--font-sans)', color:'var(--escalab-slate)', fontWeight:500 }}>Cancelar</button>
          <button onClick={salvar} disabled={!destId || !mensagem.trim()}
            style={{ border:0, background:(!destId || !mensagem.trim()) ? '#ccc' : `linear-gradient(135deg, ${cat.cor}, ${cat.cor}dd)`, borderRadius:9, padding:'9px 20px', cursor:(!destId || !mensagem.trim()) ? 'not-allowed' : 'pointer', fontSize:13, fontFamily:'var(--font-sans)', color:'#fff', fontWeight:700 }}>
            {cat.emoji} Publicar reconhecimento
          </button>
        </div>
      </div>
    </div>
  );
};

const ReconhecimentoCard = ({ recon, user, onRefresh }) => {
  const [comentando, setComentando] = useState(false);
  const [comentario, setComentario] = useState('');
  const de   = COLABORADORES.find(c => c.id === recon.deId);
  const para = COLABORADORES.find(c => c.id === recon.paraId);
  const cat  = RECON_CATEGORIAS.find(c => c.id === recon.categoria) || RECON_CATEGORIAS[0];
  const isAdmin = user?.perfil === 'admin';
  const podeApagar = isAdmin || recon.deId === user.id;
  const curtiu = (recon.curtidas || []).includes(user.id);

  function curtir() { toggleCurtidaRecon(recon.id, user.id); onRefresh(); }
  function comentar() {
    if (!comentario.trim()) return;
    addComentarioRecon(recon.id, { id:'c'+Date.now(), userId:user.id, texto:comentario.trim(), data:new Date().toISOString() });
    setComentario(''); setComentando(false); onRefresh();
  }
  function apagar() {
    if (!window.confirm('Apagar este reconhecimento?')) return;
    deletarReconhecimento(recon.id); onRefresh();
  }

  if (!de || !para) return null;

  return (
    <div style={{ background:'#fff', borderRadius:16, border:'1px solid var(--escalab-line)', overflow:'hidden', boxShadow:'0 2px 14px rgba(0,0,0,.05)' }}>
      {/* Faixa categoria */}
      <div style={{ background:`linear-gradient(135deg, ${cat.cor}, ${cat.cor}dd)`, padding:'8px 16px', display:'flex', alignItems:'center', gap:7, color:'#fff' }}>
        <span style={{ fontSize:15 }}>{cat.emoji}</span>
        <span style={{ fontSize:11.5, fontWeight:700, letterSpacing:'.06em', textTransform:'uppercase' }}>{cat.label}</span>
        <span style={{ fontSize:11, marginLeft:'auto', opacity:.85 }}>{tempoRelativoRecon(recon.data)}</span>
      </div>
      {/* Conteúdo */}
      <div style={{ padding:'16px 18px 14px' }}>
        {/* De → Para */}
        <div style={{ display:'flex', alignItems:'center', gap:10, marginBottom:12, flexWrap:'wrap' }}>
          <div style={{ display:'flex', alignItems:'center', gap:7 }}>
            <div style={{ width:32, height:32, borderRadius:'50%', background:de.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:700, fontSize:11, flexShrink:0 }}>{de.iniciais}</div>
            <div>
              <div style={{ fontSize:12.5, fontWeight:600, color:'var(--escalab-ink)' }}>{de.nome.split(' ').slice(0,2).join(' ')}</div>
              <div style={{ fontSize:10.5, color:'var(--escalab-mute)' }}>{de.cargo}</div>
            </div>
          </div>
          <Icon name="chev_right" size={14} />
          <div style={{ display:'flex', alignItems:'center', gap:7 }}>
            <div style={{ width:36, height:36, borderRadius:'50%', background:para.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:700, fontSize:12, flexShrink:0, border:`2px solid ${cat.cor}` }}>{para.iniciais}</div>
            <div>
              <div style={{ fontSize:13.5, fontWeight:700, color:cat.cor }}>{para.nome.split(' ').slice(0,3).join(' ')}</div>
              <div style={{ fontSize:11, color:'var(--escalab-mute)' }}>{para.cargo} · {para.setor}</div>
            </div>
          </div>
          {podeApagar && (
            <button onClick={apagar} title="Apagar" style={{ marginLeft:'auto', border:0, background:'transparent', cursor:'pointer', color:'var(--escalab-mute)', padding:4, borderRadius:6 }}>
              <Icon name="close" size={13} />
            </button>
          )}
        </div>
        {/* Mensagem */}
        <div style={{ fontSize:14, lineHeight:1.55, color:'var(--escalab-ink)', whiteSpace:'pre-wrap', padding:'10px 14px', background:cat.bg, borderLeft:`3px solid ${cat.cor}`, borderRadius:'0 8px 8px 0' }}>
          {recon.mensagem}
        </div>
        {/* Ações */}
        <div style={{ display:'flex', gap:6, marginTop:12, alignItems:'center', flexWrap:'wrap' }}>
          <button onClick={curtir} style={{
            border:`1px solid ${curtiu ? '#E89B3B' : 'var(--escalab-line)'}`,
            background: curtiu ? '#FFF3DA' : '#fff',
            color: curtiu ? '#B56500' : 'var(--escalab-slate)',
            borderRadius:8, padding:'6px 12px', cursor:'pointer', fontSize:12.5, fontFamily:'var(--font-sans)',
            fontWeight: curtiu ? 700 : 500, display:'flex', alignItems:'center', gap:5, transition:'all .15s',
          }}>
            <span>{curtiu ? '🧡' : '🤍'}</span>
            <span>{(recon.curtidas || []).length}</span>
            <span style={{ fontSize:11.5 }}>{curtiu ? 'Curtido' : 'Curtir'}</span>
          </button>
          <button onClick={() => setComentando(v => !v)} style={{
            border:'1px solid var(--escalab-line)', background:'#fff', color:'var(--escalab-slate)',
            borderRadius:8, padding:'6px 12px', cursor:'pointer', fontSize:12.5, fontFamily:'var(--font-sans)', display:'flex', alignItems:'center', gap:5,
          }}>
            <Icon name="message" size={13} />
            <span>{(recon.comentarios || []).length}</span>
            <span style={{ fontSize:11.5 }}>Comentar</span>
          </button>
        </div>

        {/* Comentários */}
        {(recon.comentarios || []).length > 0 && (
          <div style={{ marginTop:12, paddingTop:12, borderTop:'1px solid var(--escalab-line)', display:'flex', flexDirection:'column', gap:9 }}>
            {(recon.comentarios || []).map(c => {
              const cUser = COLABORADORES.find(x => x.id === c.userId);
              if (!cUser) return null;
              return (
                <div key={c.id} style={{ display:'flex', gap:8, alignItems:'flex-start' }}>
                  <div style={{ width:26, height:26, borderRadius:'50%', background:cUser.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:700, fontSize:10, flexShrink:0 }}>{cUser.iniciais}</div>
                  <div style={{ flex:1, background:'var(--escalab-paper)', borderRadius:10, padding:'7px 10px' }}>
                    <div style={{ display:'flex', alignItems:'center', gap:6, marginBottom:2 }}>
                      <span style={{ fontSize:12, fontWeight:700, color:'var(--escalab-ink)' }}>{cUser.nome.split(' ').slice(0,2).join(' ')}</span>
                      <span style={{ fontSize:10.5, color:'var(--escalab-mute)' }}>· {tempoRelativoRecon(c.data)}</span>
                    </div>
                    <div style={{ fontSize:12.5, color:'var(--escalab-ink)', lineHeight:1.5, whiteSpace:'pre-wrap' }}>{c.texto}</div>
                  </div>
                </div>
              );
            })}
          </div>
        )}

        {/* Campo de novo comentário */}
        {comentando && (
          <div style={{ marginTop:10, display:'flex', gap:8, alignItems:'flex-start' }}>
            <div style={{ width:26, height:26, borderRadius:'50%', background:user.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:700, fontSize:10, flexShrink:0 }}>{user.iniciais}</div>
            <div style={{ flex:1, display:'flex', gap:6 }}>
              <input value={comentario} onChange={e => setComentario(e.target.value)} onKeyDown={e => { if (e.key === 'Enter') comentar(); }} placeholder="Escreva um comentário…" autoFocus
                style={{ flex:1, border:'1px solid var(--escalab-line)', borderRadius:8, padding:'7px 10px', fontSize:12.5, fontFamily:'var(--font-sans)', outline:'none' }} />
              <button onClick={comentar} disabled={!comentario.trim()}
                style={{ border:0, background:comentario.trim() ? 'var(--escalab-brand)' : '#ccc', color:'#fff', borderRadius:8, padding:'7px 14px', cursor:comentario.trim() ? 'pointer' : 'not-allowed', fontSize:12.5, fontFamily:'var(--font-sans)', fontWeight:600 }}>
                Enviar
              </button>
            </div>
          </div>
        )}
      </div>
    </div>
  );
};

// Gráfico Reconhecimento por colab/ano, separado Diretoria × Colaboradores (PDF Site AVD 5 · item 6)
const PainelReconhecimentoColabAno = ({ lista, anosDisp }) => {
  const [ano, setAno] = useState(anosDisp[0]);
  const ehDiretor = colabId => {
    const c = COLABORADORES.find(x => x.id === colabId);
    return c?.nivel === 'diretor';
  };
  const reconsAno = lista.filter(r => new Date(r.data).getFullYear() === ano);
  const porColab = {};
  reconsAno.forEach(r => {
    if (!r.paraId) return;
    if (!porColab[r.paraId]) porColab[r.paraId] = { dir: 0, col: 0 };
    if (ehDiretor(r.deId)) porColab[r.paraId].dir += 1; else porColab[r.paraId].col += 1;
  });
  const linhas = Object.entries(porColab).map(([id, q]) => ({
    colab: COLABORADORES.find(c => c.id === Number(id)),
    dir: q.dir, col: q.col, total: q.dir + q.col,
  })).filter(x => x.colab).sort((a,b) => b.total - a.total).slice(0, 12);
  const maxVal = Math.max(1, ...linhas.map(l => l.total));
  return (
    <div style={{ background:'#fff', borderRadius:16, border:'1px solid var(--escalab-line)', padding:'18px 22px', boxShadow:'0 2px 14px rgba(0,0,0,.05)' }}>
      <div style={{ display:'flex', alignItems:'center', justifyContent:'space-between', gap:10, marginBottom:14, flexWrap:'wrap' }}>
        <div>
          <div style={{ fontSize:13.5, fontWeight:800, color:'var(--escalab-ink)' }}>Reconhecimentos por colaborador</div>
          <div style={{ fontSize:11.5, color:'var(--escalab-mute)', marginTop:1 }}>Separado por origem: diretoria × colaboradores</div>
        </div>
        <div style={{ display:'flex', gap:14, alignItems:'center', flexWrap:'wrap' }}>
          <div style={{ display:'flex', gap:10, fontSize:11.5 }}>
            <span style={{ display:'flex', gap:5, alignItems:'center', color:'var(--escalab-slate)' }}><span style={{ width:10, height:10, background:'#6B3FA0', borderRadius:3 }} /> Diretoria</span>
            <span style={{ display:'flex', gap:5, alignItems:'center', color:'var(--escalab-slate)' }}><span style={{ width:10, height:10, background:'#00967B', borderRadius:3 }} /> Colaboradores</span>
          </div>
          <select value={ano} onChange={e => setAno(Number(e.target.value))}
            style={{ border:'1px solid var(--escalab-line)', borderRadius:7, padding:'5px 9px', fontSize:12.5, fontFamily:'var(--font-sans)', outline:0, background:'#fff', cursor:'pointer' }}>
            {anosDisp.map(a => <option key={a} value={a}>{a}</option>)}
          </select>
        </div>
      </div>
      {linhas.length === 0 ? (
        <div style={{ fontSize:12.5, color:'var(--escalab-mute)', padding:'12px 0' }}>Nenhum reconhecimento em {ano}.</div>
      ) : (
        <div style={{ display:'flex', flexDirection:'column', gap:8 }}>
          {linhas.map(l => (
            <div key={l.colab.id} style={{ display:'flex', alignItems:'center', gap:10 }}>
              <div style={{ minWidth:160, fontSize:12.5, color:'var(--escalab-ink)' }}>{l.colab.nome.split(' ').slice(0,2).join(' ')}</div>
              <div style={{ flex:1, height:18, background:'var(--escalab-paper)', borderRadius:6, overflow:'hidden', display:'flex' }}>
                <div title={`Diretoria: ${l.dir}`} style={{ width: `${(l.dir / maxVal) * 100}%`, background:'#6B3FA0', transition:'width .4s' }} />
                <div title={`Colaboradores: ${l.col}`} style={{ width: `${(l.col / maxVal) * 100}%`, background:'#00967B', transition:'width .4s' }} />
              </div>
              <div style={{ minWidth:78, textAlign:'right', fontSize:11.5, color:'var(--escalab-mute)' }}>
                <span style={{ color:'#6B3FA0', fontWeight:700 }}>{l.dir}</span> · <span style={{ color:'#00836B', fontWeight:700 }}>{l.col}</span>
              </div>
            </div>
          ))}
        </div>
      )}
      <div style={{ marginTop:10, fontSize:11, color:'var(--escalab-mute)' }}>Mostra os 12 colaboradores mais reconhecidos no ano. Diretoria = quem tem nível "diretor" na hierarquia.</div>
    </div>
  );
};

const SecaoReconhecimentos = ({ user }) => {
  const [modal, setModal] = useState(false);
  const [lista, setLista] = useState(() => getReconhecimentos());
  const [filtroCat, setFiltroCat] = useState('todos');
  const [filtroPara, setFiltroPara] = useState('todos'); // todos | meus
  const refresh = () => setLista(getReconhecimentos());

  const listaFiltrada = lista
    .filter(r => filtroCat === 'todos' || r.categoria === filtroCat)
    .filter(r => filtroPara === 'todos' || (filtroPara === 'meus' && r.paraId === user.id));

  // Top reconhecidos do mês (ranking simples)
  const mesAtual = new Date().getMonth();
  const anoAtual = new Date().getFullYear();
  const reconsMes = lista.filter(r => { const d = new Date(r.data); return d.getMonth() === mesAtual && d.getFullYear() === anoAtual; });
  const contagem = {};
  reconsMes.forEach(r => { contagem[r.paraId] = (contagem[r.paraId] || 0) + 1; });
  const top = Object.entries(contagem)
    .sort((a,b) => b[1] - a[1])
    .slice(0, 5)
    .map(([id, qtd]) => ({ colab: COLABORADORES.find(c => c.id === Number(id)), qtd }))
    .filter(x => x.colab);

  return (
    <div style={{ display:'flex', flexDirection:'column', gap:20 }}>
      {/* Header com CTA */}
      <div style={{ background:'linear-gradient(135deg, #00967B 0%, #007A5E 100%)', borderRadius:20, padding:'24px 28px', color:'#fff', boxShadow:'0 10px 36px rgba(0,150,123,.30)', position:'relative', overflow:'hidden' }}>
        <div style={{ position:'absolute', top:-30, right:-30, width:160, height:160, borderRadius:'50%', background:'rgba(255,255,255,.08)', pointerEvents:'none' }} />
        <div style={{ position:'absolute', bottom:-40, right:60, width:100, height:100, borderRadius:'50%', background:'rgba(255,255,255,.05)', pointerEvents:'none' }} />
        <div style={{ display:'flex', justifyContent:'space-between', alignItems:'center', flexWrap:'wrap', gap:16, position:'relative' }}>
          <div>
            <div style={{ fontSize:11, fontWeight:700, letterSpacing:'.12em', textTransform:'uppercase', opacity:.8, marginBottom:6 }}>🏆 Mural de Reconhecimentos</div>
            <div style={{ fontFamily:'var(--font-sans)', fontSize:'clamp(22px, 3vw, 30px)', fontWeight:700, letterSpacing:'-.015em', lineHeight:1.2, marginBottom:6 }}>Reconheça quem fez a diferença</div>
            <div style={{ fontSize:13.5, opacity:.9, maxWidth:480, lineHeight:1.5 }}>Todo reconhecimento publicado fica visível para todos automaticamente.</div>
          </div>
          <button onClick={() => setModal(true)} style={{ border:0, background:'#fff', color:'#00836B', borderRadius:12, padding:'12px 22px', cursor:'pointer', fontSize:14, fontFamily:'var(--font-sans)', fontWeight:800, display:'flex', alignItems:'center', gap:8, boxShadow:'0 6px 20px rgba(0,0,0,.18)', transition:'transform .15s' }}
            onMouseEnter={e => e.currentTarget.style.transform='translateY(-2px)'}
            onMouseLeave={e => e.currentTarget.style.transform='none'}>
            <Icon name="plus" size={16} /> Novo reconhecimento
          </button>
        </div>
      </div>

      {/* Reconhecimentos por colaborador / ano · SOMENTE G&C (admin/RH). Gestor e colab não veem. */}
      {user?.perfil === 'admin' && lista.length > 0 && (() => {
        const anosDisp = [...new Set(lista.map(r => new Date(r.data).getFullYear()))].sort((a,b) => b - a);
        return <PainelReconhecimentoColabAno lista={lista} anosDisp={anosDisp} />;
      })()}

      {/* Top 5 do mês */}
      {top.length > 0 && (
        <div style={{ background:'#fff', borderRadius:16, border:'1px solid var(--escalab-line)', padding:'16px 20px', boxShadow:'0 2px 14px rgba(0,0,0,.05)' }}>
          <div style={{ display:'flex', alignItems:'center', gap:8, marginBottom:12 }}>
            <span style={{ fontSize:18 }}>🏆</span>
            <div>
              <div style={{ fontSize:13.5, fontWeight:800, color:'var(--escalab-ink)' }}>Mais reconhecidos este mês</div>
              <div style={{ fontSize:11.5, color:'var(--escalab-mute)', marginTop:1 }}>Quem o time mais reconheceu</div>
            </div>
          </div>
          <div style={{ display:'flex', gap:10, flexWrap:'wrap' }}>
            {top.map((t, i) => (
              <div key={t.colab.id} style={{ display:'flex', alignItems:'center', gap:8, padding:'6px 12px 6px 6px', background:i === 0 ? '#FFF3DA' : 'var(--escalab-paper)', border:`1px solid ${i === 0 ? '#F5A62340' : 'var(--escalab-line)'}`, borderRadius:999 }}>
                <div style={{ width:26, height:26, borderRadius:'50%', background:t.colab.cor, color:'#fff', display:'flex', alignItems:'center', justifyContent:'center', fontWeight:700, fontSize:10, flexShrink:0 }}>{t.colab.iniciais}</div>
                <div>
                  <div style={{ fontSize:12, fontWeight:700, color:'var(--escalab-ink)' }}>{t.colab.nome.split(' ').slice(0,2).join(' ')}</div>
                </div>
                <div style={{ background:i === 0 ? '#B56500' : 'var(--escalab-brand)', color:'#fff', borderRadius:999, padding:'2px 8px', fontSize:11, fontWeight:800, marginLeft:4 }}>
                  {i === 0 ? '🥇' : i === 1 ? '🥈' : i === 2 ? '🥉' : '🏆'} {t.qtd}
                </div>
              </div>
            ))}
          </div>
        </div>
      )}

      {/* Filtros */}
      <div style={{ display:'flex', gap:8, alignItems:'center', flexWrap:'wrap' }}>
        <div className="tabs-scroll" style={{ display:'flex', gap:6, flexWrap:'wrap' }}>
          <button onClick={() => setFiltroCat('todos')} style={chipFiltro(filtroCat === 'todos')}>Todos</button>
          {RECON_CATEGORIAS.map(c => (
            <button key={c.id} onClick={() => setFiltroCat(c.id)} style={{ ...chipFiltro(filtroCat === c.id, c.cor, c.bg), display:'flex', alignItems:'center', gap:5 }}>
              <span>{c.emoji}</span><span>{c.label}</span>
            </button>
          ))}
        </div>
        <div style={{ marginLeft:'auto', display:'flex', gap:6 }}>
          <button onClick={() => setFiltroPara('todos')} style={chipFiltro(filtroPara === 'todos')}>Todos</button>
          <button onClick={() => setFiltroPara('meus')} style={chipFiltro(filtroPara === 'meus')}>Meus (recebidos)</button>
        </div>
      </div>

      {/* Feed */}
      <div style={{ display:'flex', flexDirection:'column', gap:14 }}>
        {listaFiltrada.length === 0 ? (
          <div style={{ background:'#fff', border:'1px dashed var(--escalab-line)', borderRadius:16, padding:'40px 20px', textAlign:'center' }}>
            <div style={{ fontSize:42, marginBottom:8 }}>🤝</div>
            <div style={{ fontSize:14.5, fontWeight:700, color:'var(--escalab-ink)', marginBottom:4 }}>
              {lista.length === 0 ? 'Nenhum reconhecimento ainda' : 'Nada por aqui'}
            </div>
            <div style={{ fontSize:12.5, color:'var(--escalab-mute)' }}>
              {lista.length === 0 ? 'Seja o primeiro a reconhecer alguém do time' : 'Tente outro filtro ou crie um novo reconhecimento'}
            </div>
            {lista.length === 0 && (
              <button onClick={() => setModal(true)} style={{ marginTop:14, border:0, background:'var(--escalab-brand)', color:'#fff', borderRadius:10, padding:'9px 18px', cursor:'pointer', fontSize:13, fontFamily:'var(--font-sans)', fontWeight:700 }}>
                <Icon name="plus" size={13} /> Novo reconhecimento
              </button>
            )}
          </div>
        ) : (
          listaFiltrada.map(r => <ReconhecimentoCard key={r.id} recon={r} user={user} onRefresh={refresh} />)
        )}
      </div>

      {modal && <ModalNovoReconhecimento user={user} onClose={() => setModal(false)} onSave={refresh} />}
    </div>
  );
};

// helper local
function chipFiltro(ativo, corAtivo, bgAtivo) {
  return {
    border:`1px solid ${ativo ? (corAtivo || 'var(--escalab-brand)') : 'var(--escalab-line)'}`,
    background: ativo ? (bgAtivo || 'var(--escalab-brand-tint)') : '#fff',
    color: ativo ? (corAtivo || 'var(--escalab-brand-deep)') : 'var(--escalab-slate)',
    borderRadius:999, padding:'6px 12px', cursor:'pointer', fontSize:12.5, fontFamily:'var(--font-sans)',
    fontWeight: ativo ? 700 : 500, transition:'all .15s',
  };
}

// ── Tela Principal ────────────────────────────────────────────────────────────

const ScreenIntranet = ({ user }) => {
  const [aba, setAba] = useState('inicio');
  const popNov = useNovidadesPopup(user);

  const tabs = [
    { id:'inicio',          label:'Início',              icon:'home'     },
    { id:'reconhecimentos', label:'Reconhecimentos',     icon:'trophy'   },
    { id:'escala',          label:'Escala & Calendário', icon:'calendar' },
    { id:'arquivos',        label:'Arquivos & E-mails',  icon:'file'     },
    { id:'cultura',         label:'Jornal & Álbum',      icon:'star'     },
    { id:'avisos',          label:'Avisos',              icon:'bell'     },
    { id:'infos',           label:'Informações Úteis',   icon:'info'     },
  ];

  return (
    <div style={{ animation:'fadeIn .22s var(--ease-out)' }}>
      {/* Header */}
      <div style={{ display:'flex', alignItems:'flex-start', justifyContent:'space-between', marginBottom:22, flexWrap:'wrap', gap:12 }}>
        <div>
          <div style={{ fontSize:10.5, fontWeight:700, letterSpacing:'.12em', textTransform:'uppercase', color:'var(--escalab-brand)', marginBottom:4 }}>Gestão de Pessoas</div>
          <h2 style={{ fontSize:22, fontWeight:800, margin:0, letterSpacing:'-.01em' }}>Intranet Escalab</h2>
          <p style={{ fontSize:13.5, color:'var(--escalab-slate)', margin:'4px 0 0' }}>Central de informações, escala e documentos do Escalab</p>
        </div>
        <div style={{ display:'flex', gap:8, alignItems:'center' }}>
          <div style={{ display:'flex', alignItems:'center', gap:7, background:'var(--escalab-brand-tint)', border:'1px solid var(--escalab-brand-soft)', borderRadius:10, padding:'8px 14px', fontSize:12.5, color:'var(--escalab-brand-deep)' }}>
            <div style={{ width:8, height:8, borderRadius:'50%', background:'#00967B', boxShadow:'0 0 6px #00967B' }} />
            <strong>{COLABORADORES.length}</strong> colaboradores ativos
          </div>
        </div>
      </div>

      <Tabs tabs={tabs} active={aba} onChange={setAba} />

      <div style={{ paddingTop:24 }}>
        {aba === 'inicio'          && <SecaoInicio          user={user} />}
        {aba === 'reconhecimentos' && <SecaoReconhecimentos user={user} />}
        {aba === 'escala'          && <SecaoEscala   />}
        {aba === 'arquivos'        && <SecaoArquivos user={user} />}
        {aba === 'cultura'         && <SecaoCultura  user={user} />}
        {aba === 'avisos'          && <ScreenAvisos  user={user} />}
        {aba === 'infos'           && <SecaoInfoUteis />}
      </div>

      {popNov.aberto && popNov.pendentes.length > 0 && (
        <ModalNovidadesPopup user={user} novidades={popNov.pendentes} onFechar={popNov.fechar} />
      )}
    </div>
  );
};

window.ScreenIntranet = ScreenIntranet;
