// Theme — palette + typography + shared style utils // Aesthetic: black canvas, Barlow, editorial uppercase. const C = { bg: "#000", bgAlt: "#080808", bgCard: "#0e0e0e", white: "#fff", gray1: "#ddd", gray2: "#999", gray3: "#555", gray4: "#222", line: "#1e1e1e", }; const F = "'Barlow', sans-serif"; const t = (size, weight = 400, tracking = "normal", transform = "none") => ({ fontFamily: F, fontSize: size, fontWeight: weight, letterSpacing: tracking, textTransform: transform, lineHeight: 1, }); const TY = { hero: t("clamp(4.5rem,13vw,11rem)", 800, "-0.02em", "uppercase"), h1: t("clamp(2.2rem,5vw,4.5rem)", 800, "-0.01em", "uppercase"), h2: t("clamp(1.6rem,3vw,2.2rem)", 800, "-0.01em", "uppercase"), h3: t("1rem", 700, "0.01em", "uppercase"), spec: t("0.8rem", 400, "0.02em", "none"), body: t("0.95rem", 400, "normal", "none"), label: t("0.62rem", 700, "0.28em", "uppercase"), nav: t("0.62rem", 700, "0.2em", "uppercase"), micro: t("0.58rem", 400, "0.25em", "uppercase"), }; const section = { background: C.bg, padding: "6rem 0", borderTop: `1px solid ${C.line}` }; const sectionAlt = { ...section, background: C.bgAlt }; const inner = { maxWidth: "1280px", margin: "0 auto", padding: "0 3rem" }; const btnBase = { ...TY.nav, cursor: "pointer", padding: "11px 24px", border: "none", transition: "opacity 0.15s, background 0.15s, color 0.15s", }; const btnPrimary = { ...btnBase, background: C.white, color: C.bg }; const btnGhost = { ...btnBase, background: "transparent", border: `1px solid ${C.gray4}`, color: C.gray2 }; Object.assign(window, { C, F, t, TY, section, sectionAlt, inner, btnBase, btnPrimary, btnGhost });