/* Fundos de capa: variações dentro da paleta fechada (nada de cor de segmento). */
const FUNDOS_CAPA = {
  'claro':    { fundo: 'var(--papel-2)',       padrao: 'var(--preto-asfalto)', icone: 'var(--cinza-rodagem)', op: 0.05 },
  'claro-2':  { fundo: 'var(--papel-3)',       padrao: 'var(--preto-asfalto)', icone: 'var(--cinza-rodagem)', op: 0.06 },
  'escuro':   { fundo: 'var(--preto-asfalto)', padrao: 'var(--papel)',         icone: 'var(--papel-2)',       op: 0.07 },
  'escuro-2': { fundo: 'var(--preto-2)',       padrao: 'var(--papel)',         icone: 'var(--papel-2)',       op: 0.07 }
};

function PostScreen({ post, onNav, onOpenPost }) {
  const { SpecList, Icon, Button } = window.Ds55VeCulosDesignSystem_b5c845;
  const outros = window.POSTS.filter(p => p.id !== post.id).slice(0, 3);
  const f = FUNDOS_CAPA[post.fundo] || FUNDOS_CAPA['claro'];

  /* linha de checklist dos artigos: ícone, rótulo e valor em fonte de leitura */
  const Linha = ({ icon, label, value }) => (
    <div style={{ display: 'flex', alignItems: 'baseline', gap: 'var(--esp-3)', padding: 'var(--esp-3) 0', borderBottom: 'var(--borda-fina) solid var(--border-hairline)' }}>
      <span style={{ alignSelf: 'center', display: 'inline-flex' }}><Icon name={icon} size={15} color="var(--text-muted)" /></span>
      {label && <span style={{ font: 'var(--type-etiqueta-p)', letterSpacing: 'var(--tracking-etiqueta)', textTransform: 'uppercase', color: 'var(--text-muted)', flex: '0 0 12ch' }}>{label}</span>}
      <span style={{ font: 'var(--type-corpo-p)', minWidth: 0 }}>{value}</span>
    </div>
  );

  const bloco = (b, i) => {
    if (b.t === 'p') return <p key={i} style={{ margin: 0, font: 'var(--type-corpo)' }}>{b.x}</p>;
    if (b.t === 'h2') return <h2 key={i} style={{ margin: 0, font: 'var(--type-titulo-3)', letterSpacing: 'var(--tracking-titulo)' }}>{b.x}</h2>;
    if (b.t === 'quote') return (
      <blockquote key={i} style={{ margin: 0, padding: 'var(--esp-5)', background: 'var(--preto-asfalto)', color: 'var(--papel)', font: 'var(--peso-titulo) 24px/1.2 var(--font-core)', letterSpacing: 'var(--tracking-titulo)', borderLeft: '5px solid var(--seg-primeiro)' }}>
        {b.x}
      </blockquote>
    );
    if (b.t === 'tabela') return (
      <div key={i} className="tabela-rolagem">
        <table style={{ width: '100%', borderCollapse: 'collapse' }}>
          {b.colunas && (
            <thead><tr>
              {b.colunas.map(c => <th key={c} style={{ textAlign: 'left', padding: '0 var(--esp-4) var(--esp-2) 0', font: 'var(--type-etiqueta-p)', textTransform: 'uppercase', letterSpacing: 'var(--tracking-etiqueta)', color: 'var(--text-muted)', borderBottom: 'var(--borda-fina) solid var(--border-strong)' }}>{c}</th>)}
            </tr></thead>
          )}
          <tbody>
            {b.linhas.map((l, li) => (
              <tr key={li}>
                {l.map((cel, ci) => (
                  <td key={ci} style={{
                    padding: 'var(--esp-3) var(--esp-4) var(--esp-3) 0',
                    font: ci === 0 ? 'var(--type-corpo-p)' : 'var(--type-etiqueta)',
                    letterSpacing: ci === 0 ? 'normal' : 'var(--tracking-etiqueta)',
                    fontWeight: li === b.linhas.length - 1 && String(l[0]).toLowerCase().startsWith('total') ? 'var(--peso-titulo)' : undefined,
                    borderBottom: 'var(--borda-fina) solid var(--border-hairline)', verticalAlign: 'top'
                  }}>{cel}</td>
                ))}
              </tr>
            ))}
          </tbody>
        </table>
      </div>
    );
    if (b.t === 'lista') return (
      <div key={i} style={{ display: 'flex', flexDirection: 'column' }}>
        {b.itens.map(it => <Linha key={it.value} icon={it.icon} label={it.label} value={it.value} />)}
      </div>
    );
    return null;
  };

  return (
    <div style={{ background: 'var(--papel)', minHeight: '100%' }}>
      <Header count={window.ESTOQUE.length} rota="curadoria" onNav={onNav} />
      <article className="faixa-leitura" style={{ paddingTop: 'var(--esp-7)', paddingBottom: 'var(--esp-9)' }}>
        <button onClick={() => onNav('curadoria')} style={{ appearance: 'none', background: 'none', border: 'none', cursor: 'pointer', padding: 0, display: 'flex', alignItems: 'center', gap: 6, font: 'var(--type-etiqueta)', letterSpacing: 'var(--tracking-etiqueta)', color: 'var(--text-muted)', marginBottom: 'var(--esp-6)', whiteSpace: 'nowrap' }}>
          <Icon name="arrow-left" size={14} /> BLOG
        </button>
        <SpecList withIcons items={[{ value: post.tipo === 'pill' ? 'PÍLULA' : 'ARTIGO', icon: post.tipo === 'pill' ? 'zap' : 'newspaper' }, { value: post.kicker, icon: post.icone || 'bookmark' }, { value: post.data, icon: 'calendar' }, { value: `${post.leitura} DE LEITURA`, icon: 'clock' }]} />
        <h1 style={{ margin: 'var(--esp-4) 0 0', font: 'var(--peso-titulo) clamp(30px,3.2vw,42px)/1.05 var(--font-core)', letterSpacing: 'var(--tracking-titulo)' }}>{post.titulo}</h1>
        <p style={{ margin: 'var(--esp-5) 0 0', font: 'var(--peso-corpo) 20px/1.5 var(--font-core)', color: 'var(--text-muted)' }}>{post.resumo}</p>

        {/* faixa de abertura: baixa de propósito para não roubar a página do texto */}
        <div style={{ position: 'relative', height: 'var(--esp-10)', background: f.fundo, overflow: 'hidden', margin: 'var(--esp-6) 0' }}>
          {post.capa
            ? <img src={post.capa} alt="" style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} />
            : <>
                <span className="padrao-55" style={{ position: 'absolute', inset: 0, opacity: f.op, '--padrao-cor': f.padrao }} />
                <span style={{ position: 'absolute', inset: 0, display: 'grid', placeItems: 'center' }}>
                  <Icon name={post.icone || 'bookmark'} size={40} color={f.icone} />
                </span>
              </>}
        </div>

        <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--esp-5)' }}>
          {(post.corpo || []).map(bloco)}
        </div>

        <div style={{ marginTop: 'var(--esp-8)', paddingTop: 'var(--esp-6)', borderTop: 'var(--borda-fina) solid var(--border-hairline)', display: 'flex', alignItems: 'center', gap: 'var(--esp-5)', flexWrap: 'wrap' }}>
          <p style={{ margin: 0, font: 'var(--type-titulo-3)', letterSpacing: 'var(--tracking-titulo)', maxWidth: '24ch' }}>Quer ver o que passou pela curadoria?</p>
          <Button onClick={() => onNav('estoque')}>Ver estoque</Button>
        </div>
      </article>

      <section style={{ borderTop: 'var(--borda-fina) solid var(--border-hairline)' }}>
        <div className="faixa" style={{ paddingTop: 'var(--esp-7)', paddingBottom: 'var(--esp-7)' }}>
          <SpecList items={['CONTINUE LENDO']} style={{ paddingBottom: 'var(--esp-4)' }} />
          <div className="grade-continue">
            {outros.map(p => {
              const fp = FUNDOS_CAPA[p.fundo] || FUNDOS_CAPA['claro'];
              return (
                <article key={p.id} onClick={() => onOpenPost(p)} style={{ cursor: 'pointer', display: 'flex', flexDirection: 'column', gap: 'var(--esp-3)' }}>
                  <div style={{ position: 'relative', aspectRatio: '16 / 10', background: fp.fundo, overflow: 'hidden' }}>
                    {p.capa
                      ? <img src={p.capa} alt="" loading="lazy" style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} />
                      : <>
                          <span className="padrao-55" style={{ position: 'absolute', inset: 0, opacity: fp.op, '--padrao-cor': fp.padrao }} />
                          <span style={{ position: 'absolute', inset: 0, display: 'grid', placeItems: 'center' }}>
                            <Icon name={p.icone || 'bookmark'} size={36} color={fp.icone} />
                          </span>
                        </>}
                  </div>
                  <SpecList withIcons items={[{ value: p.kicker, icon: p.icone || 'bookmark' }, { value: p.leitura, icon: 'clock' }]} />
                  <h3 style={{ margin: 0, font: 'var(--peso-titulo) 19px/1.15 var(--font-core)', letterSpacing: 'var(--tracking-titulo)' }}>{p.titulo}</h3>
                </article>
              );
            })}
          </div>
        </div>
      </section>
    </div>
  );
}

Object.assign(window, { PostScreen });
