// CENTRAL DA MARCA — Mariana Cabral · Início, Posts entregues, Campanha, Captações, Arquivos.
// Exporta window.MC_Inicio, MC_Posts, MC_Campanha, MC_Calendario, MC_Arquivos
(function () {
  const { useState } = React;
  const h = React.createElement;
  const D = window.MC_DATA;
  const S = window.MC_STORE;
  const { PageHead, StatusPill } = window.MC_UI;

  // ════════ INÍCIO ════════
  function Inicio({ go }) {
    const { state } = S.useStore();
    const r = S.resumo();
    const cards = [
      { k: "membros", n: (state.campanha && state.campanha.membros != null ? state.campanha.membros : 1), l: "Membros no Clube", x: "Clube inaugurado", rota: "campanha", hl: true },
      { k: "novas", n: r.novas, l: "Ideias novas", x: "para analisar", rota: "aprovar-ideias" },
      { k: "selecionadas", n: r.selecionadas, l: "Selecionadas", x: "sua lista de interesse", rota: "aprovar-ideias" },
      { k: "producao", n: r.producao, l: "Em produção", x: "na agência", rota: "aprovar-ideias" },
      { k: "aguardandoDesign", n: r.aguardandoDesign, l: "Conteúdo p/ aprovar", x: "aguardando você", rota: "aprovar-design", alert: true },
      { k: "ajustes", n: r.ajustes, l: "Ajustes solicitados", x: "com a agência", rota: "aprovar-ideias" },
      { k: "prontas", n: r.prontas + (D.POSTS_ENTREGUES || []).length, l: "Prontos", x: "prontos para publicar", rota: "posts" },
      { k: "agendadas", n: r.agendadas, l: "Agendados", x: "no calendário", rota: "calendario" },
      { k: "publicadas", n: r.publicadas, l: "Publicados", x: "no ar", rota: "posts" },
    ];
    const pendResposta = r.novas + r.analise + r.aguardandoDesign;
    const proxCap = state.captacoes.slice().sort((a, b) => a.data.localeCompare(b.data))[0];
    const pl = (n, s, p) => n + " " + (n === 1 ? s : p);
    const pendencias = [];
    if (r.aguardandoDesign) pendencias.push({ t: pl(r.aguardandoDesign, "conteúdo aguardando", "conteúdos aguardando") + " sua aprovação", m: "Aprovar o conteúdo autoriza o agendamento.", rota: "aprovar-design" });
    if (r.novas) pendencias.push({ t: pl(r.novas, "ideia nova para analisar", "ideias novas para analisar"), m: "Selecione as que combinam e aprove para produção.", rota: "aprovar-ideias" });
    if (r.ajustes) pendencias.push({ t: pl(r.ajustes, "ideia com ajuste solicitado", "ideias com ajuste solicitado"), m: "A agência está trabalhando nos ajustes.", rota: "aprovar-ideias" });
    if (proxCap) pendencias.push({ t: "Próxima captação: " + proxCap.tema, m: fmtData(proxCap.data) + " · " + proxCap.local, rota: "calendario" });

    return h("div", { className: "page" },
      h(PageHead, { eyebrow: "Central da Marca", titulo: "Bom te ver, Mariana",
        sub: "Seu painel do Clube da Maturidade Emocional. Tudo o que precisa de você está reunido aqui." }),

      pendencias.length > 0 && h("div", { className: "pend-block" },
        h("div", { className: "mini-label orange" }, "Pendências"),
        h("div", { className: "pend-list" }, pendencias.map((p, k) => h("div", { key: k, className: "pend orange" },
          h("div", { className: "pend-mid" }, h("div", { className: "pend-t" }, p.t), h("div", { className: "pend-m" }, p.m)),
          h("button", { className: "btn btn-terra sm", onClick: () => go(p.rota) }, "Abrir")
        )))
      ),

      h("div", { className: "mini-label" }, "Panorama"),
      h("div", { className: "resumo-grid" }, cards.filter((c) => c.hl || c.n > 0).map((c) => h("button", { key: c.k, className: "rcard" + (c.alert && c.n ? " alert" : "") + (c.hl ? " hl" : ""), onClick: () => go(c.rota) },
        h("div", { className: "rcard-n" }, c.n),
        h("div", { className: "rcard-l" }, c.l),
        h("div", { className: "rcard-x" }, c.x)
      ))),

      h("button", { className: "hero-brand hero-fer", onClick: () => go("ferramentas") },
        h("div", { className: "hero-brand-eyebrow" }, "Destaque · Criar com IA"),
        h("div", { className: "hero-brand-t" }, "Ferramentas de conteúdo"),
        h("div", { className: "hero-brand-s" }, "Escreva legendas na voz da marca por plataforma e estruture qualquer tema em conteúdo pronto."),
        h("span", { className: "hero-fer-cta" }, "Abrir ferramentas →")
      ),

      pendResposta > 0 && h("div", { className: "aviso", style: { marginTop: 22 } },
        h("div", { className: "aviso-ic" }, "!"),
        h("div", { className: "aviso-t" }, h("b", null, pl(pendResposta, "item aguardando", "itens aguardando") + " sua resposta. "), pendResposta === 1 ? "Há um item esperando uma decisão sua." : "Há itens esperando uma decisão sua."),
        h("button", { className: "btn btn-terra sm aviso-go", onClick: () => go(r.aguardandoDesign ? "aprovar-design" : "aprovar-ideias") }, "Resolver agora")
      ),

      h("div", { className: "hero-brand", style: { marginTop: 26, marginBottom: 26 } },
        h("div", { className: "hero-brand-eyebrow" }, "Clube da Maturidade Emocional"),
        h("div", { className: "hero-brand-t" }, "“" + D.MARCA.frases[1] + "”"),
        h("div", { className: "hero-brand-s" }, D.MARCA.proposito)
      )
    );
  }
  function Posts() {
    const { state } = S.useStore();
    const publicadasApp = state.ideias.filter((i) => i.status === "Publicada");
    const todos = D.POSTS_ENTREGUES.concat(publicadasApp.map((i) => ({ id: i.id, titulo: i.titulo, formato: i.formato, pilar: i.pilar, data: (i.design && i.design.dataSugerida) || "—", status: "Publicada", metricas: "recém-publicado" })));
    return h("div", { className: "page" },
      h(PageHead, { eyebrow: "Produção", titulo: "Conteúdos entregues", sub: "Conteúdos entregues pela agência a partir de 22/07/2026 — já produzidos e publicados para o Clube." }),
      h("div", { className: "posts-grid" }, todos.map((p) => h("div", { key: p.id, className: "post" },
        h("div", { className: "post-art" }, h("span", { className: "post-fmt" }, p.formato)),
        h("div", { className: "post-body" },
          h("div", { className: "post-t" }, p.titulo),
          h("div", { style: { marginBottom: 10 } }, h("span", { className: "tag pilar" }, p.pilar)),
          h("div", { className: "post-m" }, h("span", null, p.status || "Publicado"), p.link ? h("a", { href: p.link, target: "_blank", rel: "noopener", className: "post-metric" }, "Abrir no Drive →") : (p.metricas ? h("span", { className: "post-metric" }, p.metricas) : null))
        )
      ))),
      todos.length === 0 && h("div", { className: "empty" }, "Nenhum post entregue ainda. Assim que a agência publicar um conteúdo aprovado, ele aparece aqui.")
    );
  }

  // ════════ CAMPANHA ════════
  const PASSOS_PADRAO = [
    { id: "p1", t: "Organizar o perfil @clube emocional", done: false },
    { id: "p2", t: "Otimizar a área de membros", done: false },
    { id: "p3", t: "Postar 2 vídeos longos no YouTube", done: false },
    { id: "p4", t: "Impulsionar post no Instagram", done: false, dep: "p1", depNota: "após organizar o perfil" },
  ];
  // Fases da campanha, ligadas ao funil das ideias do banco (sistema integrado)
  const FASES = [
    { funil: "Descoberta", nome: "Descoberta", obj: "Alcançar e ser descoberta por novas mulheres.", formatos: "Reels de alcance · carrosséis salváveis" },
    { funil: "Consideração", nome: "Consideração", obj: "Gerar identificação e construir autoridade.", formatos: "Carrosséis de autoridade · Reels de identificação" },
    { funil: "Desejo", nome: "Desejo", obj: "Despertar o desejo pelo Clube.", formatos: "Reels manifesto · posts institucionais" },
    { funil: "Conversão", nome: "Conversão", obj: "Converter seguidoras em membros do Clube.", formatos: "Post de conversão · e-mail · stories de oferta" },
    { funil: "Retenção", nome: "Retenção", obj: "Cuidar e reter quem já entrou.", formatos: "Stories recorrentes · materiais do Clube" },
  ];
  function Campanha() {
    const { state, actions } = S.useStore();
    const camp = state.campanha;
    const membros = camp.membros != null ? camp.membros : 1;
    const passos = camp.passos && camp.passos.length ? camp.passos : PASSOS_PADRAO;
    const doneById = {}; passos.forEach((p) => { doneById[p.id] = p.done; });
    const [notas, setNotas] = useState(camp.notas || "");
    const [mt, setMt] = useState(String(camp.meta || ""));
    const [editMeta, setEditMeta] = useState(false);
    const feitos = passos.filter((p) => p.done).length;
    const metaPct = camp.meta > 0 ? Math.min(100, Math.round((membros / camp.meta) * 100)) : 0;
    const faseAtual = camp.faseAtual || FASES[0].funil;
    const faseIdx = Math.max(0, FASES.findIndex((f) => f.funil === faseAtual));
    const fase = FASES[faseIdx];
    const ideiasFase = (fnl) => state.ideias.filter((i) => i.funil === fnl && i.status !== "Arquivada" && i.status !== "Não aprovada");
    const escolhidasDe = (fnl) => ideiasFase(fnl).filter((i) => i.selecionada && i.campanha);
    const linked = ideiasFase(fase.funil);
    const chosen = escolhidasDe(fase.funil);
    const paraProduzir = chosen.filter((i) => ["Nova sugestão", "Em análise"].includes(i.status)).map((i) => i.id);
    return h("div", { className: "page" },
      h(PageHead, { eyebrow: "Campanha principal", titulo: "Clube da Maturidade Emocional",
        sub: "O Clube foi inaugurado. Agora o foco é estruturar a base e crescer com consistência." }),
      h("div", { className: "camp-hero" },
        h("div", null,
          h("span", { className: "camp-hero-badge" }, "● Clube inaugurado"),
          h("div", { className: "camp-hero-t" }, "Fase de crescimento"),
          h("div", { className: "camp-hero-s" }, "Com o Clube no ar e a primeira venda feita, a campanha deixa de ser sobre lançar e passa a ser sobre organizar a base, cuidar de quem entrou e abrir novos canais de entrada — sem pressa e com método.")
        ),
        h("div", { className: "camp-count" },
          h("div", { className: "camp-count-n" }, membros),
          h("div", { className: "camp-count-l" }, membros === 1 ? "membro no Clube" : "membros no Clube"),
          h("div", { className: "camp-count-ctrl" },
            h("button", { className: "camp-step", onClick: () => actions.ajustarMembros(-1), disabled: membros <= 0, title: "Remover" }, "–"),
            h("button", { className: "camp-step add", onClick: () => actions.ajustarMembros(1), title: "Nova venda" }, "+ venda")
          ),
          camp.meta > 0 && h(React.Fragment, null,
            h("div", { className: "camp-bar" }, h("div", { className: "camp-bar-f", style: { width: metaPct + "%" } })),
            h("div", { className: "camp-count-meta" }, metaPct + "% da meta de " + camp.meta)
          )
        )
      ),

      h("div", { className: "mini-label" }, "Fases da campanha"),
      h("div", { className: "fase-strip" }, FASES.map((f, k) => {
        const nLink = ideiasFase(f.funil).length, nEsc = escolhidasDe(f.funil).length;
        return h("button", { key: f.funil, className: "fase-card" + (f.funil === faseAtual ? " on" : "") + (k < faseIdx ? " past" : ""), onClick: () => actions.setCampanha({ faseAtual: f.funil }) },
          h("div", { className: "fase-step" }, "Fase " + (k + 1)),
          h("div", { className: "fase-nome" }, f.nome),
          h("div", { className: "fase-count" }, nEsc + "/" + nLink + " temas")
        );
      })),

      h("div", { className: "card fase-detail" },
        h("div", { className: "fase-detail-eyebrow" }, "Próxima etapa · Fase " + (faseIdx + 1)),
        h("div", { className: "fase-detail-t" }, fase.nome),
        h("div", { className: "fase-detail-obj" }, fase.obj),
        h("div", { className: "fase-detail-fmt" }, h("b", null, "Formatos: "), fase.formatos),
        h("div", { className: "fase-choose-h" },
          h("span", null, "Escolha os temas desta fase"),
          h("button", { className: "fase-link", onClick: () => { location.hash = "#aprovar-ideias"; } }, "Abrir no banco de ideias →")
        ),
        linked.length === 0
          ? h("div", { className: "empty", style: { padding: 26 } }, "Nenhuma sugestão de tema para esta fase ainda.")
          : h("div", { className: "tema-pick" }, linked.map((i) => h("button", { key: i.id, className: "tema-opt" + (i.selecionada && i.campanha ? " on" : ""), onClick: () => actions.escolherTemaCampanha(i.id) },
              h("span", { className: "tema-opt-chk" }, i.selecionada && i.campanha ? "✓" : ""),
              h("div", { className: "grow" },
                h("div", { className: "tema-opt-t" }, i.titulo),
                h("div", { className: "tema-opt-m" }, h("span", { className: "tag" }, i.formato), h(StatusPill, { status: i.status }))
              )
            ))),
        h("div", { className: "fase-foot" },
          h("span", { className: "fase-foot-n" }, chosen.length + " tema(s) escolhido(s) nesta fase"),
          paraProduzir.length > 0 && h("button", { className: "btn btn-pri sm", onClick: () => S.aprovarLote(paraProduzir) }, "✓ Aprovar " + paraProduzir.length + " para produção"),
          faseIdx < FASES.length - 1 && h("button", { className: "btn btn-sec sm", onClick: () => actions.setCampanha({ faseAtual: FASES[faseIdx + 1].funil }) }, "Avançar fase →")
        )
      ),

      h("div", { className: "mini-label", style: { marginTop: 26 } }, "Próximos passos · " + feitos + "/" + passos.length),
      h("div", { className: "passos" }, passos.map((p) => {
        const travado = p.dep && !doneById[p.dep];
        return h("button", { key: p.id, className: "passo" + (p.done ? " done" : "") + (travado ? " lock" : ""),
          disabled: travado, onClick: () => actions.togglePasso(p.id) },
          h("span", { className: "passo-check" }, p.done ? "✓" : travado ? "🔒" : ""),
          h("span", { className: "passo-t" }, p.t),
          travado && h("span", { className: "passo-dep" }, p.depNota)
        );
      })),
      (camp.meta > 0 && !editMeta)
        ? h("div", { className: "card meta-card" },
            h("div", { className: "grow" },
              h("div", { className: "meta-card-l" }, "Meta de membros"),
              h("div", { className: "meta-card-n" }, camp.meta + (camp.meta === 1 ? " membro" : " membros"))
            ),
            h("button", { className: "btn btn-sec sm", onClick: () => { setMt(String(camp.meta)); setEditMeta(true); } }, "↑ Aumentar a meta")
          )
        : h("div", { className: "card" },
            h("div", { className: "mini-label" }, "Meta de membros (opcional)"),
            h("div", { style: { display: "flex", gap: 7, maxWidth: 320 } },
              h("input", { className: "input", placeholder: "ex: 30", value: mt, onChange: (e) => setMt(e.target.value.replace(/\D/g, "")) }),
              h("button", { className: "btn btn-sel sm", onClick: () => { actions.setCampanha({ meta: parseInt(mt || "0", 10) }); setEditMeta(false); } }, "Definir")
            )
          )
    );
  }

  // ════════ CAPTAÇÕES · B-ROLL ════════
  const DIAS_SEM = ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"];
  const MESES_NOME = ["janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"];
  function fmtData(iso) { const [y, m, d] = iso.split("-"); return d + "/" + m; }

  const TIPOS = [
    { id: "Post", ic: "▤", d: "Agendar um conteúdo / post" },
    { id: "Evento online", ic: "◉", d: "Live, encontro ou aula online" },
    { id: "Captação de vídeos", ic: "▦", d: "B-roll / gravação presencial" },
    { id: "Aula", ic: "✎", d: "Gravação de aula" },
  ];
  const kindOf = (ev) => { const t = (ev.tipo || ev.formato || "").toLowerCase(); if (t.includes("post")) return "post"; if (t.includes("online") || t.includes("live")) return "live"; if (t.includes("aula")) return "aula"; return "broll"; };
  const isISO = (s) => /^\d{4}-\d{2}-\d{2}$/.test(s || "");

  function Calendario() {
    const { state, actions } = S.useStore();
    const [cursor, setCursor] = useState({ y: 2026, m: 6 }); // m 0-index (6=julho)
    const [menu, setMenu] = useState(false);
    const [form, setForm] = useState({ tipo: "Captação de vídeos", titulo: "", data: "2026-07-23", hora: "", local: D.LOCAIS[0], link: "", obs: "", temas: [], postId: "" });
    const isCap = form.tipo === "Captação de vídeos" || form.tipo === "Aula";
    const isLink = form.tipo === "Post" || form.tipo === "Evento online";

    // eventos = captações manuais + posts com data marcada (integração com o resto do sistema)
    const postEvents = state.ideias.filter((i) => isISO(i.design && i.design.dataSugerida)).map((i) => ({ id: "idea-" + i.id, data: i.design.dataSugerida, hora: "", tema: i.titulo, tipo: "Post", local: "", readonly: true }));
    const eventos = state.captacoes.concat(postEvents);

    const firstDow = new Date(cursor.y, cursor.m, 1).getDay();
    const daysIn = new Date(cursor.y, cursor.m + 1, 0).getDate();
    const evByDay = {};
    eventos.forEach((e) => { const [y, m, d] = e.data.split("-").map(Number); if (y === cursor.y && m - 1 === cursor.m) (evByDay[d] = evByDay[d] || []).push(e); });

    function toggleTema(t) { setForm((f) => ({ ...f, temas: f.temas.includes(t) ? f.temas.filter((x) => x !== t) : f.temas.concat(t) })); }
    function pick(day) { const iso = cursor.y + "-" + String(cursor.m + 1).padStart(2, "0") + "-" + String(day).padStart(2, "0"); setForm((f) => ({ ...f, data: iso })); }
    function chooseTipo(t) { setForm((f) => ({ ...f, tipo: t })); setMenu(false); }
    function add() {
      const titulo = form.titulo.trim() || (isCap && form.temas.length ? form.temas.join(" · ") : form.tipo);
      actions.addCaptacao({ tipo: form.tipo, data: form.data, hora: form.hora, tema: titulo, local: isCap ? form.local : (form.tipo === "Evento online" ? "Online" : ""), formato: form.tipo, link: isLink ? form.link : "", obs: form.obs, temas: isCap ? form.temas : [] });
      setForm((f) => ({ ...f, titulo: "", obs: "", link: "", temas: [], postId: "" }));
    }
    const lista = eventos.slice().sort((a, b) => a.data.localeCompare(b.data));
    const KIND_LABEL = { broll: "Captação B-roll", aula: "Gravação de aula", live: "Online / live", post: "Post" };

    const cells = [];
    for (let i = 0; i < firstDow; i++) cells.push(h("div", { key: "e" + i, className: "cal-cell empty" }));
    for (let d = 1; d <= daysIn; d++) {
      const evs = evByDay[d] || [];
      const isToday = cursor.y === 2026 && cursor.m === 6 && d === 21;
      const selected = form.data === (cursor.y + "-" + String(cursor.m + 1).padStart(2, "0") + "-" + String(d).padStart(2, "0"));
      cells.push(h("div", { key: d, className: "cal-cell clickable" + (evs.length ? " has" : "") + (isToday ? " today" : ""), style: selected ? { outline: "2px dashed var(--olive-soft)", outlineOffset: -2 } : undefined, onClick: () => pick(d) },
        h("div", { className: "cal-d" }, d),
        h("div", { className: "cal-dots" }, evs.slice(0, 3).map((e, k) => { const kk = kindOf(e); return h("span", { key: k, className: "cal-dot" + (kk === "broll" ? "" : " " + kk) }); }))
      ));
    }

    return h("div", { className: "page" },
      h(PageHead, { eyebrow: "Agenda", titulo: "Calendário",
        sub: "Posts com data, eventos online e captações de B-roll reunidos. Adicione itens manualmente pelo botão Agendar." }),
      h("div", { className: "cal-wrap" },
        h("div", null,
          h("div", { className: "cal" },
            h("div", { className: "cal-head" },
              h("button", { className: "cal-nav", onClick: () => setCursor((c) => c.m === 0 ? { y: c.y - 1, m: 11 } : { y: c.y, m: c.m - 1 }) }, "‹"),
              h("div", { className: "cal-month" }, MESES_NOME[cursor.m] + " " + cursor.y),
              h("button", { className: "cal-nav", onClick: () => setCursor((c) => c.m === 11 ? { y: c.y + 1, m: 0 } : { y: c.y, m: c.m + 1 }) }, "›")
            ),
            h("div", { className: "cal-dow" }, DIAS_SEM.map((d) => h("span", { key: d }, d))),
            h("div", { className: "cal-grid" }, cells),
            h("div", { className: "cal-legend" },
              h("span", null, h("span", { className: "cal-dot" }), "B-roll / captação"),
              h("span", null, h("span", { className: "cal-dot aula" }), "Gravação de aula"),
              h("span", null, h("span", { className: "cal-dot live" }), "Online / live"),
              h("span", null, h("span", { className: "cal-dot post" }), "Post"))
          ),
          h("div", { className: "mini-label", style: { marginTop: 24 } }, "Na agenda · " + lista.length),
          lista.length === 0
            ? h("div", { className: "empty" }, "Nada agendado ainda. Use o botão Agendar ao lado para adicionar.")
            : h("div", { className: "cal-list" }, lista.map((e) => { const kk = kindOf(e); return h("div", { key: e.id, className: "cap-item " + kk },
                h("div", { className: "cap-date" }, h("b", null, e.data.split("-")[2]), h("span", null, MESES_NOME[Number(e.data.split("-")[1]) - 1].slice(0, 3))),
                h("div", { className: "cap-mid" },
                  h("div", { className: "cap-tema" }, e.tema),
                  h("div", { className: "cap-local" }, KIND_LABEL[kk] + (e.local ? " · " + e.local : "") + (e.hora ? " · " + e.hora : "")),
                  e.obs && h("div", { className: "cap-obs" }, e.obs),
                  e.link && h("a", { className: "cap-link", href: e.link, target: "_blank", rel: "noopener" }, "Abrir link →")
                ),
                e.readonly ? null : h("button", { className: "cap-del", onClick: () => actions.removeCaptacao(e.id), title: "Remover" }, "✕")
              ); }))
        ),
        h("div", { className: "cal-side" },
          h("div", { className: "cap-form" },
            h("div", { className: "cap-form-head" },
              h("div", { className: "cap-form-t" }, "Agendar"),
              h("div", { className: "agendar-wrap" },
                h("button", { className: "btn btn-pri sm", onClick: () => setMenu((m) => !m) }, "＋ " + form.tipo + "  ▾"),
                menu && h("div", { className: "agendar-menu", onMouseLeave: () => setMenu(false) }, TIPOS.map((t) => h("button", { key: t.id, className: form.tipo === t.id ? "on" : "", onClick: () => chooseTipo(t.id) },
                  h("span", { className: "agendar-menu-ic" }, t.ic),
                  h("div", { className: "grow" }, h("div", { className: "agendar-menu-n" }, t.id), h("div", { className: "agendar-menu-d" }, t.d))
                )))
              )
            ),
            h("label", { className: "field-l" }, "Título"),
            h("input", { className: "input", placeholder: form.tipo === "Post" ? "Nome do post…" : "Nome do evento…", value: form.titulo, onChange: (e) => setForm((f) => ({ ...f, titulo: e.target.value })) }),
            form.tipo === "Post" && h(React.Fragment, null,
              h("label", { className: "field-l" }, "Vincular a um conteúdo (opcional)"),
              h("select", { className: "input", value: form.postId, onChange: (e) => { const id = e.target.value; const it = state.ideias.find((x) => x.id === id); setForm((f) => ({ ...f, postId: id, titulo: it ? it.titulo : f.titulo })); } },
                h("option", { value: "" }, "—"),
                state.ideias.filter((i) => !["Arquivada", "Não aprovada"].includes(i.status)).map((i) => h("option", { key: i.id, value: i.id }, i.titulo.length > 46 ? i.titulo.slice(0, 46) + "…" : i.titulo)))
            ),
            h("label", { className: "field-l" }, "Data"),
            h("input", { className: "input", type: "date", value: form.data, onChange: (e) => setForm((f) => ({ ...f, data: e.target.value })) }),
            h("label", { className: "field-l" }, "Horário"),
            h("input", { className: "input", type: "time", value: form.hora, onChange: (e) => setForm((f) => ({ ...f, hora: e.target.value })) }),
            isCap && h(React.Fragment, null,
              h("label", { className: "field-l" }, "Temas / B-roll"),
              h("div", { className: "tema-chips" }, D.BROLL.map((t) => h("button", { key: t, className: "tema-chip" + (form.temas.includes(t) ? " on" : ""), onClick: () => toggleTema(t) }, t))),
              h("label", { className: "field-l" }, "Local"),
              h("select", { className: "input", value: form.local, onChange: (e) => setForm((f) => ({ ...f, local: e.target.value })) }, D.LOCAIS.map((l) => h("option", { key: l }, l)))
            ),
            isLink && h(React.Fragment, null,
              h("label", { className: "field-l" }, form.tipo === "Evento online" ? "Link da chamada" : "Link do conteúdo (opcional)"),
              h("input", { className: "input", placeholder: "https://…", value: form.link, onChange: (e) => setForm((f) => ({ ...f, link: e.target.value })) })
            ),
            h("label", { className: "field-l" }, "Observações"),
            h("textarea", { className: "input area", placeholder: "Notas, materiais, roteiro…", value: form.obs, onChange: (e) => setForm((f) => ({ ...f, obs: e.target.value })) }),
            h("button", { className: "btn btn-pri full", style: { marginTop: 14 }, onClick: add }, "Adicionar ao calendário")
          )
        )
      )
    );
  }

  // ════════ ARQUIVOS & LOGOS ════════
  function Arquivos() {
    const cats = ["Identidade", "Templates", "Fotos", "Documentos"];
    const [copied, setCopied] = useState(false);
    function copyDrive() { navigator.clipboard && navigator.clipboard.writeText(D.MARCA.driveUrl); setCopied(true); setTimeout(() => setCopied(false), 1600); }
    return h("div", { className: "page" },
      h(PageHead, { eyebrow: "Recursos", titulo: "Arquivos & Logos", sub: "Tudo da identidade visual, fotos e documentos da marca — organizado e pronto para baixar." }),
      h("div", { className: "arq-drive" },
        h("div", { className: "arq-drive-ic" }, "▲"),
        h("div", { className: "grow arq-drive-txt" }, h("div", { className: "arq-drive-t" }, "Google Drive da marca"), h("div", { className: "arq-drive-s" }, "Pasta mestre com todos os originais, captações e materiais.")),
        h("div", { className: "arq-drive-actions" },
          h("button", { className: "btn btn-sec", onClick: copyDrive }, copied ? "✓ Link copiado" : "⧉ Copiar link"),
          h("a", { className: "btn btn-pri", href: D.MARCA.driveUrl, target: "_blank", rel: "noopener" }, "Abrir Drive")
        )
      ),
      // logos para download
      h("div", { className: "arq-cat" },
        h("div", { className: "arq-cat-h" }, "Logos para download"),
        h("div", { className: "logo-grid" }, D.LOGOS.map((l) => h("div", { key: l.id, className: "logo-card" },
          h("div", { className: "logo-prev" }, h("img", { src: l.src, alt: l.nome })),
          h("div", { className: "logo-info" },
            h("div", { className: "logo-n" }, l.nome),
            h("div", { className: "logo-d" }, l.desc),
            h("a", { className: "logo-dl", href: l.src, download: true }, "⤓ Baixar PNG")
          )
        )))
      ),
      // paleta
      h("div", { className: "arq-cat" },
        h("div", { className: "arq-cat-h" }, "Paleta da marca"),
        h("div", { className: "pal-row" }, D.MARCA.paleta.map((p) => h("div", { key: p.hex, className: "pal" },
          h("div", { className: "pal-sw", style: { background: p.hex } }),
          h("div", { className: "pal-n" }, p.nome),
          h("div", { className: "pal-h" }, p.hex)
        )))
      ),
      cats.map((cat) => {
        const items = D.ARQUIVOS.filter((a) => a.cat === cat);
        return h("div", { key: cat, className: "arq-cat" },
          h("div", { className: "arq-cat-h" }, cat),
          h("div", { className: "arq-grid" }, items.map((a) => h("div", { key: a.id, className: "arq" + (a.emBreve ? " arq-soon" : "") },
            h("div", { className: "arq-ic" }, a.icon),
            h("div", { className: "arq-mid" }, h("div", { className: "arq-n" }, a.nome), h("div", { className: "arq-m" }, a.emBreve ? a.tipo : a.tipo + " · " + a.tam)),
            a.emBreve
              ? h("span", { className: "arq-soon-tag" }, "Em breve")
              : h("a", { className: "arq-dl", title: "Abrir no Drive", href: D.MARCA.driveUrl, target: "_blank", rel: "noopener" }, "⤓")
          )))
        );
      })
    );
  }

  window.MC_Inicio = Inicio;
  window.MC_Posts = Posts;
  window.MC_Campanha = Campanha;
  window.MC_Calendario = Calendario;
  window.MC_Arquivos = Arquivos;
  window.MC_fmtData = fmtData;
})();
