// bm-sections-2.jsx — Lockups, Cor no logo, Usos (do/don't), Paleta, Tipografia.
// Exports: SecLockups, SecLogoColor, SecDosDonts, SecPalette, SecType.

function SecLockups() {
  const Box = ({ label, children, dark, span }) => (
    <Card dark={dark} style={{ gridColumn: span ? "1 / -1" : "auto" }}>
      <Mono color={dark ? T.dim : T.sub} size={10.5}>{label}</Mono>
      <div style={{ marginTop: 22, minHeight: 92, display: "flex", alignItems: "center", justifyContent: "center" }}>{children}</div>
    </Card>
  );
  return (
    <Section id="lockups">
      <SecHead n="04" kicker="Lockups" title="As combinações oficiais de símbolo e nome."
        lead="Um lockup é o jeito travado de juntar o símbolo ao nome. Use sempre uma destas quatro versões — nunca reposicione as peças por conta própria." />
      <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 24 }}>
        <Box label="Horizontal · principal"><LockHorizontal kind="ni" mode="color" scale={1.1} /></Box>
        <Box label="Empilhado"><LockStacked kind="ni" mode="color" /></Box>
        <Box label="Com tagline"><LockTagline kind="ni" mode="color" /></Box>
        <Box label="Só símbolo"><Mark kind="ni" mode="color" size={86} /></Box>
        <Box label="Sobre fundo escuro · reverso" dark span>
          <div style={{ display: "flex", gap: 60, alignItems: "center", flexWrap: "wrap", justifyContent: "center" }}>
            <LockHorizontal kind="ni" mode="reverse" ink={T.dsand} scale={1.1} />
            <LockTagline kind="ni" mode="reverse" ink={T.dsand} sub={T.dim} accent={T.dcyan} />
          </div>
        </Box>
      </div>
      <div style={{ marginTop: 24 }}>
        <Note title="A regra do ponto azul">
          O <strong style={{ color: T.cyan }}>ponto ciano</strong> aparece <strong>somente no lockup horizontal</strong>, como separador entre o símbolo e o nome. Ele não é parte do logo — não use no empilhado, no tagline, nem dentro do símbolo. É um detalhe de pontuação, não um elemento.
        </Note>
      </div>
    </Section>
  );
}

function SecLogoColor() {
  const Chip = ({ mode, label, desc, bg, dark }) => (
    <Card dark={dark} style={{ textAlign: "center" }}>
      <div style={{ background: bg, borderRadius: 12, height: 130, display: "flex", alignItems: "center", justifyContent: "center", marginBottom: 16, border: bg === T.card ? `1px solid ${T.line}` : "none" }}>
        <Mark kind="ni" mode={mode} size={72} />
      </div>
      <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 16, color: dark ? T.dsand : T.ink }}>{label}</div>
      <div style={{ fontSize: 13, color: dark ? T.dim : T.sub, marginTop: 5, lineHeight: 1.45 }}>{desc}</div>
    </Card>
  );
  const Bg = ({ bg, mode, label, ok }) => (
    <div style={{ display: "flex", flexDirection: "column", gap: 9 }}>
      <div style={{ background: bg, borderRadius: 12, aspectRatio: "3/2", display: "flex", alignItems: "center", justifyContent: "center", border: bg === T.card ? `1px solid ${T.line}` : "none", position: "relative" }}>
        <Mark kind="ni" mode={mode} size={58} />
        <span style={{ position: "absolute", top: 9, right: 9, width: 18, height: 18, borderRadius: "50%", background: ok ? T.teal : T.rust, color: "#fff", fontSize: 11, display: "flex", alignItems: "center", justifyContent: "center", fontWeight: 700 }}>{ok ? "✓" : "✕"}</span>
      </div>
      <Mono color={T.sub} size={10}>{label}</Mono>
    </div>
  );
  return (
    <Section id="cor-logo" alt>
      <SecHead n="05" kicker="Cor no logo" title="Três versões. Uma regra de fundo."
        lead="O logo existe em três tratamentos. Qual usar depende só de uma coisa: o que está atrás dele." />
      <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 24, marginBottom: 36 }}>
        <Chip mode="color" label="Cor" desc="Versão padrão sobre fundos claros e neutros." bg={T.card} />
        <Chip mode="mono" label="Mono" desc="Tudo em ink. Para uma cor só, ou sobre cores da marca." bg={T.card} />
        <Chip mode="reverse" label="Reverso" desc="Hastes em cinza claro, acentos vivos. Para fundos escuros." bg={T.dbg} dark />
      </div>
      <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 18, marginBottom: 16 }}>Sobre quais fundos cada versão funciona</div>
      <div style={{ display: "grid", gridTemplateColumns: "repeat(5, 1fr)", gap: 16, marginBottom: 24 }}>
        <Bg bg={T.card} mode="color" label="Claro / neutro" ok />
        <Bg bg={T.dbg} mode="reverse" label="Escuro" ok />
        <Bg bg={T.coral} mode="mono" label="Coral → mono ink" ok />
        <Bg bg={T.amber} mode="mono" label="Âmbar → mono ink" ok />
        <Bg bg={T.coral} mode="color" label="Cor sobre coral" ok={false} />
      </div>
      <Note title="A regra de ouro">
        Sobre cores sólidas e quentes da marca (coral, âmbar), use sempre a versão <strong>mono em ink</strong>. O logo colorido tem coral nos acentos — coral sobre coral <strong>desaparece</strong>. Foi por isso que a diagonal do N e o <span style={{ fontFamily: F.math, fontStyle: "italic" }}>i</span> sumiam.
      </Note>
    </Section>
  );
}

function SecDosDonts() {
  const Dont = ({ caption, children }) => (
    <Card style={{ padding: 0, overflow: "hidden" }}>
      <div style={{ background: T.panel, height: 132, display: "flex", alignItems: "center", justifyContent: "center", position: "relative" }}>
        <span style={{ position: "absolute", top: 10, left: 10, width: 20, height: 20, borderRadius: "50%", background: T.rust, color: "#fff", fontSize: 12, display: "flex", alignItems: "center", justifyContent: "center", fontWeight: 700 }}>✕</span>
        {children}
      </div>
      <div style={{ padding: "13px 16px", fontSize: 13, color: T.sub, lineHeight: 1.45 }}>{caption}</div>
    </Card>
  );
  return (
    <Section id="usos">
      <SecHead n="06" kicker="Usos" title="O que nunca fazer com o logo."
        lead="O logo já vem pronto e equilibrado. Quase todo erro de marca vem de 'melhorar' o logo na mão. Estes são os seis pecados capitais." />
      <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 20 }}>
        <Dont caption="Não distorça nem estique. Escale sempre proporcionalmente.">
          <div style={{ transform: "scaleX(1.6)" }}><Mark kind="ni" mode="color" size={64} /></div>
        </Dont>
        <Dont caption="Não gire. O logo fica sempre na horizontal.">
          <div style={{ transform: "rotate(-18deg)" }}><Mark kind="ni" mode="color" size={64} /></div>
        </Dont>
        <Dont caption="Não recolora. Use só as versões oficiais.">
          <div style={{ fontFamily: F.math, fontStyle: "italic", fontSize: 60, color: T.olive, lineHeight: 1 }}>n<span style={{ fontSize: "0.58em", color: T.honey, verticalAlign: "0.62em" }}>i</span></div>
        </Dont>
        <Dont caption="Não aplique sombra, brilho ou contorno.">
          <div style={{ filter: "drop-shadow(3px 4px 3px rgba(0,0,0,0.4))" }}><Mark kind="ni" mode="color" size={64} /></div>
        </Dont>
        <Dont caption="Não troque a fonte. O nⁱ é STIX itálica, sempre.">
          <div style={{ fontFamily: F.text, fontWeight: 800, fontStyle: "italic", fontSize: 58, color: T.ink, lineHeight: 1 }}>n<span style={{ fontSize: "0.58em", verticalAlign: "super", color: T.coral }}>i</span></div>
        </Dont>
        <Dont caption="Não use a versão colorida sobre cor quente da marca.">
          <div style={{ background: T.coral, padding: "14px 22px", borderRadius: 10 }}><Mark kind="ni" mode="color" size={56} /></div>
        </Dont>
      </div>
    </Section>
  );
}

function SecPalette() {
  const Sw = ({ hex, name, role, fg = T.ink, ring, big }) => (
    <div style={{ display: "flex", flexDirection: "column", gap: 9 }}>
      <div style={{ height: big ? 96 : 76, borderRadius: 12, background: hex, border: ring || "1px solid rgba(0,0,0,0.06)" }}></div>
      <div>
        <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 14, color: fg }}>{name}</div>
        <div style={{ fontFamily: F.mono, fontSize: 11, color: fg, opacity: 0.55, textTransform: "uppercase" }}>{hex}</div>
        {role && <div style={{ fontSize: 11.5, color: fg, opacity: 0.7, marginTop: 3, lineHeight: 1.35 }}>{role}</div>}
      </div>
    </div>
  );
  const Group = ({ title, children, dark }) => (
    <div style={{ marginBottom: 30 }}>
      <Mono color={dark ? T.amber : T.clay} size={10.5} style={{ display: "block", marginBottom: 16 }}>{title}</Mono>
      <div style={{ display: "grid", gridTemplateColumns: "repeat(4, 1fr)", gap: 16 }}>{children}</div>
    </div>
  );
  return (
    <Section id="paleta" alt>
      <SecHead n="07" kicker="Cores" title="A paleta: quente no núcleo, fria no sinal."
        lead="As cores carregam a personalidade. O calor (coral, terra, âmbar) é a base emocional; o ciano é o sinal técnico que corta — usado com parcimônia. Os neutros sustentam tudo." />

      <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 22, marginBottom: 22, display: "flex", alignItems: "center", gap: 10 }}>
        <span style={{ width: 9, height: 9, borderRadius: "50%", background: T.ink }}></span>Modo claro
      </div>
      <Group title="Núcleo quente">
        <Sw hex="#E8553A" name="Coral" role="Primária · ação, destaque" />
        <Sw hex="#C2683E" name="Clay" role="Apoio quente" />
        <Sw hex="#9E3E2B" name="Rust" role="Quente profundo, erro" />
        <Sw hex="#E8A33D" name="Amber" role="Secundária · energia" />
      </Group>
      <Group title="Sol + frios">
        <Sw hex="#EBC14E" name="Honey" role="Realce suave" />
        <Sw hex="#7F8B45" name="Olive" role="Apoio terroso" />
        <Sw hex="#16786E" name="Teal" role="Frio profundo" />
        <Sw hex="#0E9AAC" name="Cyan ●" role="Acento · sinal técnico" />
      </Group>
      <Group title="Neutros">
        <Sw hex="#EAD9B8" name="Sand" role="Superfície quente" />
        <Sw hex="#B6A892" name="Taupe" role="Bordas, divisores" />
        <Sw hex="#6B5D4F" name="Stone" role="Texto secundário" />
        <Sw hex="#211913" name="Ink" role="Texto · fundo escuro" ring="none" />
      </Group>

      <div style={{ background: T.dbg, borderRadius: 18, padding: 34, marginTop: 12 }}>
        <div style={{ fontFamily: F.display, fontWeight: 800, fontSize: 22, marginBottom: 22, display: "flex", alignItems: "center", gap: 10, color: T.dsand }}>
          <span style={{ width: 9, height: 9, borderRadius: "50%", background: T.dsand }}></span>Modo escuro
        </div>
        <div style={{ display: "grid", gridTemplateColumns: "repeat(4, 1fr)", gap: 16 }}>
          <Sw hex="#1A1411" name="Espresso" role="Fundo base" fg={T.dsand} ring={`1px solid ${T.dline}`} />
          <Sw hex="#241B16" name="Surface" role="Cartões, superfícies" fg={T.dsand} ring={`1px solid ${T.dline}`} />
          <Sw hex="#F2D8A7" name="Sand" role="Texto principal" fg={T.dsand} />
          <Sw hex="#D9714A" name="Terra" role="Quente em destaque" fg={T.dsand} />
          <Sw hex="#E8553A" name="Coral" role="Ação" fg={T.dsand} />
          <Sw hex="#E8A33D" name="Amber" role="Energia" fg={T.dsand} />
          <Sw hex="#54C8D0" name="Cyan ●" role="Acento · sinal" fg={T.dsand} />
          <Sw hex="#9C8674" name="Dim" role="Texto secundário" fg={T.dsand} />
        </div>
      </div>

      <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 24, marginTop: 30 }}>
        <Card>
          <Mono color={T.clay} size={10.5}>Proporção de uso</Mono>
          <div style={{ display: "flex", height: 38, borderRadius: 9, overflow: "hidden", marginTop: 14, marginBottom: 12 }}>
            <div style={{ flex: 60, background: T.sand }}></div>
            <div style={{ flex: 30, background: T.coral }}></div>
            <div style={{ flex: 10, background: T.cyan }}></div>
          </div>
          <div style={{ fontSize: 13.5, color: T.sub, lineHeight: 1.5 }}><strong style={{ color: T.ink }}>60%</strong> neutro · <strong style={{ color: T.ink }}>30%</strong> quente · <strong style={{ color: T.ink }}>10%</strong> ciano. O frio é tempero, não base.</div>
        </Card>
        <Note title="O ciano é precioso">
          Use o ciano só onde quer puxar o olho: um link, um estado ativo, o separador do logo, um dado-chave. Se tudo é ciano, nada é. É o único frio numa marca quente — esse contraste é a assinatura.
        </Note>
      </div>
    </Section>
  );
}

function SecType() {
  const Spec = ({ fam, font, role, sample = "Ag", style, color = T.ink }) => (
    <Card>
      <div style={{ fontFamily: font, fontSize: 64, lineHeight: 1, color, ...style }}>{sample}</div>
      <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 16, marginTop: 18 }}>{fam}</div>
      <div style={{ fontSize: 13, color: T.sub, marginTop: 3 }}>{role}</div>
    </Card>
  );
  const Scale = ({ name, px, weight, font = F.display, ls = "-0.5px", style }) => (
    <div style={{ display: "flex", alignItems: "baseline", gap: 22, padding: "15px 0", borderBottom: `1px solid ${T.line}` }}>
      <div style={{ fontFamily: F.mono, fontSize: 11.5, color: T.sub, width: 96, flexShrink: 0 }}>{name}</div>
      <div style={{ fontFamily: font, fontWeight: weight, fontSize: Math.min(px, 46), letterSpacing: ls, lineHeight: 1.1, flex: 1, ...style }}>Nicolas Lima</div>
      <div style={{ fontFamily: F.mono, fontSize: 11.5, color: T.taupe, flexShrink: 0 }}>{px}px · {weight}</div>
    </div>
  );
  return (
    <Section id="tipografia">
      <SecHead n="08" kicker="Tipografia" title="Três vozes tipográficas (e uma só para o logo)."
        lead="A tipografia faz o trabalho pesado de comunicar. Cada família tem um papel claro — display para impacto, texto para leitura, mono para o tom técnico." />
      <div style={{ display: "grid", gridTemplateColumns: "repeat(5, 1fr)", gap: 16, marginBottom: 44 }}>
        <Spec fam="Bricolage Grotesque" font={F.display} role="Display · títulos" style={{ fontWeight: 800, letterSpacing: -1 }} />
        <Spec fam="Hanken Grotesk" font={F.text} role="Texto · interface" style={{ fontWeight: 600 }} />
        <Spec fam="IBM Plex Mono" font={F.mono} role="Código · labels" style={{ fontWeight: 500, fontSize: 52 }} />
        <Spec fam="STIX Two Text" font={F.math} role="Exclusiva do logo nⁱ" sample="ni" color={T.coral} style={{ fontStyle: "italic" }} />
        <Spec fam="Caveat" font="'Caveat', cursive" role="Anotações hand-drawn · infográficos" sample="Ag" color={T.clay} style={{ fontWeight: 700, fontSize: 56 }} />
      </div>
      <div style={{ fontFamily: F.display, fontWeight: 700, fontSize: 18, marginBottom: 8 }}>Escala e hierarquia</div>
      <Scale name="Display" px={72} weight={800} ls="-2px" />
      <Scale name="Título · H1" px={46} weight={800} ls="-1.2px" />
      <Scale name="Subtítulo · H2" px={30} weight={700} ls="-0.6px" />
      <Scale name="Corpo" px={18} weight={400} font={F.text} ls="0" />
      <Scale name="Apoio" px={14} weight={500} font={F.text} ls="0" style={{ color: T.sub }} />
      <Scale name="Mono · label" px={12} weight={600} font={F.mono} ls="1.5px" style={{ textTransform: "uppercase", color: T.clay }} />
      <div style={{ marginTop: 28 }}>
        <Note title="A regra da hierarquia">
          Bricolage só em tamanhos grandes e pesos altos (700–800) — ela foi feita pra brilhar em título. Hanken para tudo que se lê em parágrafo. IBM Plex Mono só em labels, código e dados — em caixa alta com espaçamento, vira o "carimbo técnico" da marca.
        </Note>
      </div>
    </Section>
  );
}

Object.assign(window, { SecLockups, SecLogoColor, SecDosDonts, SecPalette, SecType });
