function Process() { const steps = [ { n: '01', tag: 'Ideation', title: 'Idea analysis', body: 'We research your niche, audience and goals — analyzing trends, competitors and what\'s working in your industry — to build a full 30-day content calendar.', meta: ['Niche audit', 'Competitor map', '30-day calendar'], visual: 'tags', duration: 'Day 1–2', }, { n: '02', tag: 'Scripting', title: 'Writing content', body: 'We write engaging, hook-driven scripts for every video — optimized for retention and conversions. Every script follows hook → value → CTA.', meta: ['Hook · Value · CTA', 'Retention-optimized', '30 scripts'], visual: 'script', duration: 'Day 2–4', }, { n: '03', tag: 'Shooting', title: 'Video shooting (your part)', body: 'The only step you handle. Spend just 2 hours a month shooting all 30 videos using our scripts and shot guidelines, then send us the raw footage. That\'s it.', meta: ['2 hours / month', '30 videos batched', 'Shot-by-shot guide'], visual: 'shoot', duration: 'Day 4 · 2 hrs', client: true, }, { n: '04', tag: 'Editing', title: 'Video production', body: 'Our 40+ editors handle every cut, transition, effect, caption, color grade and sound design — polished to a professional standard.', meta: ['40+ editors', 'Captions · Color · SFX', 'Motion graphics'], visual: 'editor', duration: 'Day 4–6', }, { n: '05', tag: 'Thumbnail', title: 'Thumbnail design', body: 'Scroll-stopping, click-worthy thumbnails for every video — custom-made to match your brand and optimized for CTR.', meta: ['3 variants', 'CTR-optimized', 'Brand-safe'], visual: 'thumb', duration: 'Day 6', }, { n: '06', tag: 'Post', title: 'Captions, description & SEO', body: 'Captions, descriptions, hashtags and SEO metadata for every video. You receive the final cut + thumbnail + ready-to-post copy. Just hit publish.', meta: ['SEO metadata', 'Hashtag set', 'Copy & post'], visual: 'post', duration: 'Day 7', }, ]; const [active, setActive] = useState(0); const [paused, setPaused] = useState(false); const [autoPct, setAutoPct] = useState(0); const AUTOPLAY_MS = 4200; useEffect(() => { if (paused) return; setAutoPct(0); const start = performance.now(); let raf; const tick = (now) => { const p = Math.min(1, (now - start) / AUTOPLAY_MS); setAutoPct(p * 100); if (p < 1) raf = requestAnimationFrame(tick); else setActive(a => (a + 1) % steps.length); }; raf = requestAnimationFrame(tick); return () => cancelAnimationFrame(raf); }, [active, paused, steps.length]); const onUserPick = (i) => { setActive(i); setPaused(true); setAutoPct(0); }; function Visual({ kind }) { if (kind === 'tags') { return (
{/* Subtle vignette so the viewfinder UI stays legible */}
{/* Viewfinder corners */}
{[
{ t: 10, l: 10, b: 'auto', r: 'auto', rot: 0 },
{ t: 10, r: 10, l: 'auto', b: 'auto', rot: 90 },
{ b: 10, l: 10, r: 'auto', t: 'auto', rot: 270 },
{ b: 10, r: 10, l: 'auto', t: 'auto', rot: 180 },
].map((c, i) => (
))}
{/* REC badge */}
A 6-step engine. You shoot once a month — we handle the rest.
{steps[active].body}