// Direction A — Editorial // Vibe: agency / fashion publication. Warm off-white, deep ink, Didone display serif // (Playfair for display, Inter for body, JetBrains Mono for tags/numbers). // Generous whitespace, editorial grid, striped placeholders with mono captions. function DirectionEditorial({ accent = "oklch(52% 0.18 25)" }) { const C = window.CONTENT; const APPLY_EMAIL = "apply@galois.studio"; const SUPABASE_URL = "https://rhrzshizleptqxndzyzq.supabase.co"; const SUPABASE_KEY = "sb_publishable_8mw87WVyJ1jDnIz3TXZHpw_NrnvNzmW"; const [form, setForm] = React.useState( Object.fromEntries(C.form.fields.map(f => [f.k, ""])) ); const [honeypot, setHoneypot] = React.useState(""); const mountedAt = React.useRef(Date.now()); const [submitState, setSubmitState] = React.useState("idle"); const scrollTo = (id) => (e) => { e.preventDefault(); const el = document.getElementById(id); if (el) el.scrollIntoView({ behavior: "smooth", block: "start" }); }; const navTargets = { "Roster": "roster", "Method": "method", "Case study": "case-study", "FAQ": "faq" }; const footerTargets = { "Roster": "roster", "How it works": "method", "Case study": "case-study", "Apply": "apply" }; const onSubmit = async (e) => { e.preventDefault(); if (submitState === "sending" || submitState === "sent") return; if (honeypot.trim() !== "") { setSubmitState("sent"); return; } if (Date.now() - mountedAt.current < 1500) { setSubmitState("sent"); return; } const required = ["name", "contact"]; if (required.some(k => !form[k].trim())) { setSubmitState("missing"); return; } setSubmitState("sending"); try { const payload = { name: form.name.trim().slice(0, 120), handle: (form.handle || "").trim().slice(0, 120) || null, niche: (form.niche || "").trim().slice(0, 200) || null, revenue: (form.revenue || "").trim().slice(0, 120) || null, contact: form.contact.trim().slice(0, 200), referrer: (document.referrer || "").slice(0, 500) || null, user_agent: (navigator.userAgent || "").slice(0, 500) || null, }; const res = await fetch(`${SUPABASE_URL}/rest/v1/galois_applications`, { method: "POST", headers: { "Content-Type": "application/json", "apikey": SUPABASE_KEY, "Authorization": `Bearer ${SUPABASE_KEY}`, "Prefer": "return=minimal", }, body: JSON.stringify(payload), }); if (!res.ok) throw new Error(`HTTP ${res.status}`); setSubmitState("sent"); } catch (err) { console.error("Application submit failed:", err); setSubmitState("error"); } }; return (
{/* ─── NAV ─── */} {/* ─── HERO ─── */}
{C.hero.kicker}

Your face.
A hundred accounts.
One revenue line
going up.

{C.hero.sub}

{C.hero.trustRow.map((t, i) => (
{t}
))}
{/* Hero portrait frame */}
Drop creator portrait · 3:4
Fig. 01 — Creator B, active roster
editorial n°01
{/* ─── STATS STRIP ─── */}
The numbers, softened
{C.stats.map((s, i) => (
0 ? "1px solid #14110c22" : "none", paddingLeft: i > 0 ? 32 : 0 }}>
{s.v}
{s.l}
{s.sub}
))}
{/* ─── METHOD / PIPELINE ─── */}
02 · Method

The five steps from photoshoot to MRR.

The entire engine sits behind a single afternoon of your time. Everything downstream runs on our infrastructure, our team, our accounts. You see the dashboards. You get paid.

{C.pipeline.map((p, i) => (
{p.n}
{p.t}

{p.d}

step {p.n} / {String(C.pipeline.length).padStart(2,"0")}
))}
{/* ─── ROSTER ─── */}
03 · Roster

Who we quietly work with.

Anonymized by contract
{C.roster.map((r, i) => (
creator {r.id}
Creator {r.id}
{r.niche}
{r.status} {r.months}mo · {r.note}
))}
{/* ─── CASE STUDY ─── */}
04 · {C.caseStudy.label}

From 410 subs to{" "} 11,900. Same creator. Same photoset.

{/* Before */}
Before · Month 0
{Object.entries(C.caseStudy.before).map(([k, v]) => (
{k} {v}
))}
{/* After */}
After · Month 7
{Object.entries(C.caseStudy.after).map(([k, v]) => (
{k} {v}
))}

"{C.caseStudy.note}"

{/* ─── SERVICES ─── */}
05 · Services

Everything downstream of your photoshoot.

{C.services.map((s, i) => (
= C.services.length - 3 ? "1px solid #14110c33" : "none", }}>
0{i+1}
{s.t}

{s.d}

))}
{/* ─── TESTIMONIALS ─── */}
06 · Voices from the roster
{C.testimonials.map((t, i) => (
"

{t.q}

— {t.who}
))}
{/* ─── FAQ ─── */}
07 · FAQ

Questions we get in the first call.

{C.faq.map((f, i) => (
{f.q} +

{f.a}

))}
{/* ─── APPLY ─── */}
08 · Apply

We take two or three creators a month.

{C.form.disclaimer} If it's a fit, we book a call within 72 hours and send a contract the same week.

{/* Honeypot — hidden from humans, bots fill it */} {C.form.fields.map((f) => { const required = f.k === "name" || f.k === "contact"; return ( ); })} {submitState === "missing" && (
Name and contact are required.
)} {submitState === "sent" && (
We reply within 72 hours.
)} {submitState === "error" && (
Something went wrong. Email {APPLY_EMAIL} directly.
)}
{/* ─── FOOTER ─── */}
); } window.DirectionEditorial = DirectionEditorial;