// gm-sections-1.jsx — Capa, Composição, Vídeo (anatomia da tela).
// Exports: GMCover, GMComposition, GMVideoAnatomy.

function GMCover() {
  const Mini = ({ ratio, kicker, children }) => (
    <Frame ratio={ratio} dark grid w="100%">
      <div style={{ position: "absolute", inset: 0, padding: 16, display: "flex", flexDirection: "column", justifyContent: "flex-end" }}>{children}</div>
      <div style={{ position: "absolute", top: 10, left: 12, fontFamily: F.mono, fontSize: 9.5, letterSpacing: 1, color: T.dim }}>{kicker}</div>
    </Frame>
  );
  return (
    <section id="top" data-screen-label="capa" style={{ background: T.bg, position: "relative", overflow: "hidden", padding: "70px 0 90px" }}>
      <div style={{ position: "absolute", inset: 0, ...dotField("rgba(33,25,19,0.05)", 16, 1.2), pointerEvents: "none" }}></div>
      <div style={{ width: "min(1180px, 92vw)", margin: "0 auto", position: "relative" }}>
        <div style={{ display: "inline-flex", alignItems: "center", gap: 9, fontFamily: F.mono, fontSize: 12, fontWeight: 600, letterSpacing: 1.6, textTransform: "uppercase", color: T.cyan, marginBottom: 22 }}>
          <span style={{ width: 7, height: 7, borderRadius: "50%", background: T.cyan }}></span>Guia de Mídia · v1.0
        </div>
        <h1 style={{ fontFamily: F.display, fontWeight: 800, fontSize: "clamp(44px, 7vw, 88px)", letterSpacing: -3, lineHeight: 0.92, margin: 0, maxWidth: 900 }}>Como criar mídia que <span style={{ color: T.coral }}>parece sua</span> — toda vez.</h1>
        <p style={{ fontSize: 19, lineHeight: 1.55, color: T.sub, maxWidth: 620, marginTop: 26, fontWeight: 500 }}>
          O Manual define a marca. Este guia ensina a <strong style={{ color: T.ink }}>aplicá-la em movimento e em dados</strong>: onde pôr cada elemento, como animar, como desenhar diagramas e — principalmente — como exibir números sem mentir nem confundir.
        </p>
        <div style={{ display: "grid", gridTemplateColumns: "2fr 1fr 1fr", gap: 18, marginTop: 46, alignItems: "end" }}>
          <Mini ratio="16:9" kicker="16:9 · YouTube">
            <Mono color={T.amber} size={10}>$ deep-dive</Mono>
            <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 24, color: T.dsand, lineHeight: 1, letterSpacing: -0.8, marginTop: 6 }}>Pipeline RAG</div>
          </Mini>
          <Mini ratio="9:16" kicker="9:16 · Reels">
            <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 18, color: T.dsand, lineHeight: 1 }}>3 erros<br />em RAG</div>
          </Mini>
          <Mini ratio="1:1" kicker="1:1 · Feed">
            <Mark kind="monogram" mode="reverse" size={40} />
          </Mini>
        </div>
      </div>
    </section>
  );
}

function GMComposition() {
  const Principle = ({ t, d }) => (
    <div style={{ paddingTop: 16, borderTop: `2px solid ${T.ink}` }}>
      <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 17 }}>{t}</div>
      <div style={{ fontSize: 13.5, color: T.sub, lineHeight: 1.5, marginTop: 6 }}>{d}</div>
    </div>
  );
  return (
    <Section id="composicao">
      <SecHead n="01" kicker="Composição" title="Onde os elementos vão na tela."
        lead="Composição é o esqueleto invisível de tudo. Antes de cor ou animação: uma grade, margens de segurança e uma hierarquia clara. Estas regras valem para os três formatos." />

      <div style={{ display: "grid", gridTemplateColumns: "1.4fr 1fr 1fr", gap: 20, marginBottom: 30 }}>
        <div>
          <div style={{ fontFamily: F.mono, fontSize: 10.5, letterSpacing: 1.4, textTransform: "uppercase", color: T.clay, marginBottom: 10 }}>16:9 · Horizontal</div>
          <Frame ratio="16:9" dark thirds safe>
            <div style={{ position: "absolute", left: "8%", bottom: "12%", maxWidth: "55%" }}>
              <Mono color={T.amber} size={10}>Título no terço inferior</Mono>
              <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 22, color: T.dsand, lineHeight: 1, letterSpacing: -0.6, marginTop: 6 }}>Ponto focal<br />no cruzamento</div>
            </div>
            <div style={{ position: "absolute", right: "8%", top: "10%" }}><Mark kind="ni" mode="reverse" size={34} /></div>
          </Frame>
        </div>
        <div>
          <div style={{ fontFamily: F.mono, fontSize: 10.5, letterSpacing: 1.4, textTransform: "uppercase", color: T.clay, marginBottom: 10 }}>9:16 · Vertical</div>
          <Frame ratio="9:16" dark thirds safe>
            <div style={{ position: "absolute", left: "8%", right: "8%", top: "33%", transform: "translateY(-50%)" }}>
              <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 19, color: T.dsand, lineHeight: 1.02, letterSpacing: -0.4 }}>Texto curto, alto<br />na tela</div>
            </div>
          </Frame>
        </div>
        <div>
          <div style={{ fontFamily: F.mono, fontSize: 10.5, letterSpacing: 1.4, textTransform: "uppercase", color: T.clay, marginBottom: 10 }}>1:1 · Quadrado</div>
          <Frame ratio="1:1" dark thirds safe>
            <div style={{ position: "absolute", inset: "8%", display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", textAlign: "center" }}>
              <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 18, color: T.dsand, lineHeight: 1 }}>Centro<br />equilibrado</div>
            </div>
          </Frame>
        </div>
      </div>

      <div style={{ display: "grid", gridTemplateColumns: "repeat(4, 1fr)", gap: 22, marginBottom: 28 }}>
        <Principle t="Grade de 3×3" d="A regra dos terços. Posicione o que importa nas linhas e nos quatro cruzamentos (pontos coral), não no centro morto." />
        <Principle t="Margem de segurança" d="Nada vital nos 8% das bordas (linha âmbar). Cortes, legendas e UI de plataforma vivem aí." />
        <Principle t="Um ponto focal" d="Cada tela tem UM herói. O resto apoia. Se tudo grita, ninguém ouve." />
        <Principle t="Respiro" d="Espaço vazio não é desperdício — é o que dá foco. Resista a preencher tudo." />
      </div>

      <Note title="A metodologia em uma frase">
        Comece toda peça pela grade e pela margem de segurança, decida o ponto focal, e só então adicione apoio. <strong>Estrutura primeiro, enfeite depois</strong> — é o mesmo raciocínio de arquitetar um sistema.
      </Note>
    </Section>
  );
}

function GMVideoAnatomy() {
  const zones = [
    ["Marca", "Canto superior — o nⁱ pequeno e constante. Presença, não protagonismo.", { top: "10%", right: "8%" }, T.cyan],
    ["Título / chamada", "Terço inferior esquerdo. O que a tela está dizendo agora.", { left: "8%", bottom: "14%" }, T.coral],
    ["Apoio / kicker", "Acima do título, em mono. Contexto curto.", { left: "8%", bottom: "32%" }, T.amber],
    ["Zona segura de legenda", "Faixa inferior central — deixe livre para captions.", { left: "30%", bottom: "6%" }, T.dim],
  ];
  const Comp = ({ label, when, children }) => (
    <div>
      <Frame ratio="16:9" dark>
        <div style={{ position: "absolute", inset: 0, display: "flex", alignItems: "center", justifyContent: "center", padding: 16 }}>{children}</div>
      </Frame>
      <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 15, marginTop: 12 }}>{label}</div>
      <div style={{ fontSize: 12.5, color: T.sub, lineHeight: 1.45, marginTop: 4 }}>{when}</div>
    </div>
  );
  return (
    <Section id="video" alt>
      <SecHead n="02" kicker="Vídeo · anatomia" title="Cada zona da tela tem um trabalho."
        lead="Num vídeo, a tela é dividida em regiões fixas. Manter cada tipo de elemento sempre na mesma região cria consistência — o espectador aprende onde olhar." />

      <div style={{ display: "grid", gridTemplateColumns: "1.3fr 1fr", gap: 32, marginBottom: 44, alignItems: "center" }}>
        <Frame ratio="16:9" dark grid safe>
          {zones.map(([t, d, pos, c], i) => (
            <div key={i} style={{ position: "absolute", ...pos, display: "flex", alignItems: "center", gap: 7 }}>
              <span style={{ width: 9, height: 9, borderRadius: "50%", background: c, flexShrink: 0 }}></span>
              <span style={{ fontFamily: F.mono, fontSize: 10.5, color: T.dsand, background: "rgba(26,20,17,0.6)", padding: "2px 7px", borderRadius: 5 }}>{t}</span>
            </div>
          ))}
        </Frame>
        <div style={{ display: "flex", flexDirection: "column", gap: 16 }}>
          {zones.map(([t, d, , c]) => (
            <div key={t} style={{ display: "flex", gap: 12, alignItems: "flex-start" }}>
              <span style={{ width: 10, height: 10, borderRadius: "50%", background: c, marginTop: 5, flexShrink: 0 }}></span>
              <div>
                <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 15 }}>{t}</div>
                <div style={{ fontSize: 13, color: T.sub, lineHeight: 1.45, marginTop: 2 }}>{d}</div>
              </div>
            </div>
          ))}
        </div>
      </div>

      <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 20, marginBottom: 6 }}>Componentes de tela — e quando usar cada um</div>
      <Lead style={{ marginBottom: 26 }}>O repertório fechado. Combine estes blocos em vez de inventar layout do zero a cada vídeo.</Lead>
      <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 22 }}>
        <Comp label="Title card" when="Abertura e troca de capítulo. Respira, ocupa a tela toda.">
          <div style={{ textAlign: "left", width: "100%", paddingLeft: "6%" }}>
            <Mono color={T.amber} size={10}>Capítulo 01</Mono>
            <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 26, color: T.dsand, lineHeight: 0.98, letterSpacing: -0.8, marginTop: 6 }}>O que é RAG</div>
          </div>
        </Comp>
        <Comp label="Lower third" when="Identificar quem fala, ou rotular o que está na tela.">
          <div style={{ position: "absolute", left: "6%", bottom: "16%" }}>
            <div style={{ display: "flex", alignItems: "stretch", gap: 0 }}>
              <div style={{ width: 4, background: T.coral, borderRadius: 3 }}></div>
              <div style={{ background: "rgba(36,27,22,0.9)", padding: "8px 14px", borderRadius: "0 8px 8px 0" }}>
                <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 15, color: T.dsand, whiteSpace: "nowrap" }}>Nicolas Lima</div>
                <div style={{ fontFamily: F.mono, fontSize: 9.5, color: T.dcyan, letterSpacing: 1 }}>AI ENGINEER</div>
              </div>
            </div>
          </div>
        </Comp>
        <Comp label="Callout / destaque" when="Puxar atenção a um detalhe ou definição importante.">
          <div style={{ background: T.coral, color: T.card, padding: "12px 16px", borderRadius: 10, maxWidth: "80%" }}>
            <div style={{ fontFamily: F.mono, fontSize: 9, letterSpacing: 1, opacity: 0.85 }}>IMPORTANTE</div>
            <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 15, lineHeight: 1.1, marginTop: 3 }}>Embedding ≠ busca exata</div>
          </div>
        </Comp>
        <Comp label="Code block" when="Mostrar código ou comando. Mono, fundo escuro, uma ideia por vez.">
          <div style={{ background: "#120D0A", border: `1px solid ${T.dline}`, borderRadius: 10, padding: "12px 14px", fontFamily: F.mono, fontSize: 12, lineHeight: 1.6, width: "82%" }}>
            <div style={{ color: T.dim }}># indexar</div>
            <div style={{ color: T.dsand }}>db.<span style={{ color: T.dcyan }}>upsert</span>(vectors)</div>
          </div>
        </Comp>
        <Comp label="Bullet reveal" when="Listar passos ou pontos. Revele um por vez, nunca tudo de uma vez.">
          <div style={{ width: "78%", display: "flex", flexDirection: "column", gap: 9 }}>
            {[["Ingest", 1], ["Embed", 1], ["Retrieve", 0.35]].map(([s, o], i) => (
              <div key={i} style={{ display: "flex", alignItems: "center", gap: 9, opacity: o }}>
                <span style={{ width: 7, height: 7, borderRadius: "50%", background: T.amber }}></span>
                <span style={{ fontFamily: F.text, fontWeight: 600, fontSize: 15, color: T.dsand }}>{s}</span>
              </div>
            ))}
          </div>
        </Comp>
        <Comp label="End card / CTA" when="Fechamento. Lockup + uma ação só (inscreva-se, link).">
          <div style={{ textAlign: "center" }}>
            <LockStacked kind="ni" mode="reverse" ink={T.dsand} scale={0.7} />
            <div style={{ marginTop: 12, display: "inline-block", fontFamily: F.text, fontWeight: 700, fontSize: 12, color: T.dbg, background: T.amber, padding: "7px 14px", borderRadius: 20 }}>Inscreva-se →</div>
          </div>
        </Comp>
      </div>
    </Section>
  );
}

Object.assign(window, { GMCover, GMComposition, GMVideoAnatomy });
