// ── Design tokens ────────────────────────────────────────────────────── const A = '#E8622A', AH = '#C44D1C', AL = '#FDEADE', AS = '#FFF7F3'; const DARK = '#141414', DR = '#1E1E1A'; const BG = '#F8F7F5', WH = '#FFFFFF'; const BORDER = '#E8E4DF', MUTED = '#767672', BODY = '#444440', TEXT = '#141414'; // ── Form option lists ─────────────────────────────────────────────────── const PAINS = [ 'We need more qualified leads', 'We are stuck in price or procurement conversations', 'Deals take too long to close', 'Sales follow-up is inconsistent', 'We want to grow existing accounts', 'We know AI matters but do not know where to start', ]; const REVENUE_BANDS = [ 'Under $5M in annual revenue', '$5M to $15M', '$15M to $35M', '$35M to $75M', '$75M to $150M', '$150M to $500M', 'Over $500M', 'Prefer not to say', ]; const CAPS = [ 'Commercial print', 'Direct mail', 'Packaging', 'Wide format', 'Kitting and fulfillment', 'Multichannel marketing services', 'Branded merchandise', 'Other', ]; const BUYERS = ['Procurement', 'Marketing leaders', 'Brand or retail marketing', 'Agencies', 'Existing customers']; const GOALS = ['More opportunities', 'Better close rate', 'More strategic conversations', 'Account expansion', 'Better use of AI across the business']; const ROLES = ['Owner / CEO / President', 'Sales leader', 'Marketing leader', 'Operations leader', 'General manager', 'Other']; const SUBSCORE_LABELS = { pain_clarity: 'Pain Clarity', buyer_clarity: 'Buyer Clarity', strategic_buyer_relevance: 'Strategic Buyer Relevance', demand_capture_strength: 'Demand Capture', proof_strength: 'Proof & Case Studies', sales_handoff_readiness: 'Sales Handoff Readiness', workflow_friction: 'Workflow Friction', ai_use_case_fit: 'AI Use Case Fit', }; // ── Revenue band calibration helper ──────────────────────────────────── function getRevenueTone(band) { if (!band || band === 'Prefer not to say') return 'Default to mid-market practical operator tone. Avoid GTM jargon. Give clear, actionable recommendations with plain business language.'; if (band === 'Under $5M in annual revenue' || band === '$5M to $15M') return 'Use plain, direct language only. ZERO GTM jargon. Recommend exactly ONE clear first step. Favor low-effort quick wins. Assume no dedicated marketing function exists. Keep it simple and immediately actionable.'; if (band === '$15M to $35M' || band === '$35M to $75M') return 'Use practical operator language with light strategic framing. Assume some sales structure and possibly a small marketing function. Recommend a focused pilot plus a short roadmap.'; return 'Use sharper strategic framing and deeper buyer-relevance analysis. Assume formal sales and marketing functions, multiple buyer types, and potential multi-site complexity. Recommend sequenced use cases and may reference an Operating Partner path.'; } // ── Primitives ────────────────────────────────────────────────────────── function Btn({ label, onClick, variant = 'primary', disabled, full, size = 'md', icon }) { const pad = { sm: '9px 20px', md: '12px 26px', lg: '15px 36px' }[size]; const fz = { sm: 13, md: 15, lg: 17 }[size]; const base = { padding: pad, borderRadius: 6, fontFamily: 'inherit', fontWeight: 600, cursor: disabled ? 'not-allowed' : 'pointer', opacity: disabled ? .5 : 1, border: 'none', fontSize: fz, width: full ? '100%' : undefined, letterSpacing: '-0.1px', transition: 'background .15s, border-color .15s', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', gap: 7, }; const vars = { primary: { ...base, background: disabled ? '#ccc' : A, color: WH }, secondary: { ...base, background: 'transparent', color: TEXT, border: `1.5px solid ${BORDER}` }, ghost: { ...base, background: 'transparent', color: A }, }; return ; } function CheckCard({ label, selected, onClick }) { return (
{selected && }
{label}
); } function RadioCard({ label, selected, onClick }) { return (
{selected &&
}
{label}
); } function Field({ label, type = 'text', value, onChange, placeholder, required, helper }) { const inputStyle = { width: '100%', padding: '11px 14px', border: `1.5px solid ${BORDER}`, borderRadius: 8, fontSize: 15, color: TEXT, background: WH, outline: 'none', fontFamily: 'inherit', }; return (
{label && ( )} {helper &&

{helper}

} {type === 'textarea' ?