// direction-obsidian.jsx — DIRECTION 01: Obsidian Cinema // Cinematic, video-led, deep black, italic Cormorant serif, restrained gold. // A refined evolution of the existing direction. const obsidianStyles = { bg: '#0A0908', bgSoft: '#141312', cream: '#E8E2D3', gold: '#C9A24C', goldSoft: '#A88B3A', gray: '#6C6760', graySoft: '#3B3833', serif: '"Cormorant Garamond", Georgia, serif', sans: '"Outfit", -apple-system, sans-serif', mono: '"JetBrains Mono", ui-monospace, monospace' }; function ObsidianHero({ onTickets, fullViewport } = {}) { const s = obsidianStyles; return (
{/* video bg */} {/* vignette */}
{/* film grain */}
{/* top nav — only shown when standalone in canvas */} {!fullViewport &&
Elevate Noir
The EveningExperienceSponsorsContact
} {/* corner marks */}
◇ EST 2026 · TORONTO
VOL · I · BLACK DREAM
{/* main content */}
Elevate
Noir
Gala.
A Luxury Experience Advancing Black Excellence
{[ ['Date', GALA_DATA.date], ['Venue', GALA_DATA.venue + ' · Toronto'], ['Dress', GALA_DATA.dress], ['Theme', 'Black Dream']]. map(([k, v]) =>
{k}
{v}
)}
{/* right edge scroll mark */}
SCROLL
); } // ----- sponsor flow ----- function ObsidianFlow() { const s = obsidianStyles; const flow = useSponsorFlow(); const StepDot = ({ n, label }) =>
= n ? s.gold : s.graySoft}`, background: flow.step > n ? s.gold : 'transparent', color: flow.step > n ? s.bg : flow.step === n ? s.gold : s.gray, display: 'flex', alignItems: 'center', justifyContent: 'center', fontFamily: s.mono, fontSize: 10, fontWeight: 500 }}>{flow.step > n ? '✓' : n}
= n ? s.cream : s.gray }}>{label}
; const Btn = ({ children, primary, onClick, disabled }) => ; return (
{/* faint background ornament */}
{/* header */}
SPONSORSHIP · 2026
Partner with us.
{/* step content */}
{flow.step === 1 &&
{TIERS.map((t) => { const sel = flow.tierId === t.id; return ( ); })}
} {flow.step === 2 &&
Add custom brand activations to amplify your visibility throughout the night. Optional — but each one is a moment.
{ACTIVATIONS.map((a) => { const sel = flow.activations.includes(a.id); return ( ); })}
} {flow.step === 3 &&
{[ ['Brand · Company', 'Acme Holdings Inc.'], ['Primary Contact', 'Ama Boateng'], ['Email', 'partnerships@acme.com'], ['Phone', '+1 416 555 0188']]. map(([label, ph], i) =>
{label}
)}
YOUR PARTNERSHIP
{flow.tier.name} Sponsor
{flow.tier.name} tier {money(flow.tier.price)}
{flow.activations.map((id) => { const a = ACTIVATIONS.find((x) => x.id === id); return (
{a.name} +{money(a.price)}
); })}
Total {money(flow.total)}
} {flow.step === 4 &&
CONFIRMED · WELCOME TO THE TABLE
Thank you,
partner.
We've received your {flow.tier.name.toLowerCase()} commitment of {money(flow.total)}. A partnership lead will reach out within 48 hours with the next steps.
Start again
}
{/* footer */} {flow.step < 4 &&
Running Total
{money(flow.total)}
← Back {flow.step === 3 ? 'Confirm Partnership →' : 'Continue →'}
}
); } Object.assign(window, { ObsidianHero, ObsidianFlow });