/* Variation 5 — CINEMATIC FULL-BLEED Big number takes over. Question is a typographic poster. Vibe: Vimeo-staff-pick / film title cards. */ function Variation5({ frameW = 1280, frameH = 820 }) { const { lang, id, setLang } = useRoute(); const t = useT(lang); const client = useClient(id); const questions = useMemo(() => makeQuestions(t), [t]); const total = questions.length; const wiz = useWizard(id, total, 'v5'); const { state, setAnswer, next, back, start, finish } = wiz; const stepIdx = state.step; const isStart = !state.started; const isDone = state.done; const onLast = stepIdx === total - 1; return (
{/* Vignette */}
{/* Top */}
{t.brand} · /{lang}/{id}
{/* Vertical step rail */} {state.started && !isDone && (
{questions.map((_, i) => (
))}
)}
{isStart ? : isDone ? : 0 ? back : null} />}
{state.started && !isDone ? t.progress(stepIdx + 1, total) : t.greetingMeta} {t.saveNotice}
); } function StartV5({ t, client, onStart }) { return (
{t.greetingKicker}

{t.greetingTitle(client.name)}

{t.greetingLead}

); } function StepV5({ q, t, answers, setAnswer, stepIdx, total, onNext, onBack }) { return (
{String(stepIdx + 1).padStart(2, '0')} /{String(total).padStart(2, '0')}
{q.kicker}

{q.title}

{q.lead}

{q.render(answers, setAnswer, onNext)}
{onBack && }
); } function DoneV5({ t }) { return (
{t.done.kicker}

{t.done.title}

{t.done.lead}

{t.done.sub}

); } const v5Styles = { frame: (w, h) => ({ width: w, height: h, background: 'radial-gradient(ellipse at 30% 30%, oklch(0.24 0.02 45) 0%, var(--ink-bg) 60%)', color: 'var(--text)', fontFamily: "'Geist', system-ui, sans-serif", display: 'flex', flexDirection: 'column', overflow: 'hidden', position: 'relative', }), vignette: { position: 'absolute', inset: 0, pointerEvents: 'none', background: 'radial-gradient(ellipse at center, transparent 40%, rgba(0,0,0,0.45) 100%)', }, header: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '28px 56px', position: 'relative', zIndex: 2, }, rail: { position: 'absolute', top: 100, right: 56, display: 'flex', flexDirection: 'column', gap: 10, zIndex: 2, }, railTick: { width: 24, height: 2, background: 'var(--ink-line)', transition: 'transform .3s, background .3s' }, main: { flex: 1, padding: '20px 80px 40px', display: 'flex', alignItems: 'center', overflowY: 'auto', position: 'relative', zIndex: 1 }, footer: { display: 'flex', justifyContent: 'space-between', padding: '20px 56px', color: 'var(--text-3)', position: 'relative', zIndex: 2, }, center: { width: '100%', maxWidth: 880, margin: '0 auto', textAlign: 'center' }, heroH: { fontSize: 84, lineHeight: 1.02, fontWeight: 400, letterSpacing: '-0.025em' }, stepGrid: { display: 'grid', gridTemplateColumns: 'auto 1fr', gap: 60, width: '100%', maxWidth: 1100, margin: '0 auto', alignItems: 'start', }, bigNum: { fontFamily: 'Newsreader, Georgia, serif', fontSize: 200, lineHeight: 0.85, letterSpacing: '-0.04em', display: 'flex', flexDirection: 'column', }, h2: { fontSize: 46, lineHeight: 1.08, fontWeight: 400, letterSpacing: '-0.018em', marginTop: 8 }, lead: { fontSize: 19, lineHeight: 1.55, color: 'var(--text-2)', marginTop: 18, maxWidth: 600 }, }; window.Variation5 = Variation5;