/* MedSpaCopy — Landing v4 sections (extension blocks for v0.4 spec). Owns: Problem, Clinical Review, Free Report preview, How It Works, Sample Articles, Why-not-ChatGPT, Who We Are Not For, FAQ, Footer CTA, Sticky-nav. Reads tokens from window.MSC_V4 set by screens-v4.jsx. */ /* global React */ const { useEffect: lvE, useRef: lvR, useState: lvS } = React; /* Tokens — duplicated locally so this file is self-contained but values match screens-v4.jsx exactly. */ const LV = { accent: '#1f5161', accent600: '#173d4a', warm: '#b8895c', good: '#3d8b6e', bad: '#a8553f', ink: '#1a2226', inkMid: '#39434a', inkSoft: '#5c6772', surface: '#ffffff', surfaceTint: '#f6f3ee', surfaceCool: '#eef1f3', border: '#e1e6eb', borderWarm: '#e6dccb', }; const LV_FONT_SERIF = "var(--font-serif-display)"; const LV_FONT_SANS = "var(--font-sans-display)"; const LV_FONT_MONO = "var(--font-mono)"; const LV_FONT_BODY = "var(--font-body)"; /* ============================================================= 01 · Section header — used across landing sections ============================================================= */ function LV_SectionHeader({ kicker, title, italicWord, eyebrow, kickerColor = LV.accent }) { return (
{kicker}

{title}{italicWord && <> {italicWord}}

{eyebrow &&

{eyebrow}

}
); } /* ============================================================= 02 · Problem block — Why most med spa content fails ============================================================= */ function LV_ProblemBlock() { const items = [ { title: 'It sounds like every other clinic', body: "Generic posts don't reflect your protocols, tone, services, or patient experience." }, { title: 'It misses high-intent patient questions', body: 'Patients search for recovery, safety, cost, downtime, and side effects before booking.' }, { title: 'It creates clinical trust risk', body: 'Medical content needs accuracy and clinic-fit, not just keywords.' }, ]; return (
{items.map((it, i) => (
Failure mode {String(i + 1).padStart(2, '0')}

{it.title}

{it.body}

))}
); } /* ============================================================= 03 · Clinical Review trust block ============================================================= */ function LV_ClinicalReview() { const items = [ { title: 'Claim-level review', body: 'Recovery timelines, safety language, aftercare, and protocol-sensitive details.' }, { title: 'Clinic-fit, not generic accuracy', body: "A claim can be medically common but wrong for your clinic's protocol. We review for your actual service approach." }, { title: 'Approve or request changes', body: 'Reviewer can approve, add notes, or request changes from their phone before delivery.' }, ]; return (
{/* Faint accent grid in the background */}
); } /* ============================================================= 04 · Free report preview — what the report shows + sample card ============================================================= */ function LV_FreeReportPreview() { const checks = [ 'Treatment pages and service coverage', 'Missing or weak meta signals', 'Patient questions not answered', 'Local visibility opportunities', 'AI-search readability', 'Quick wins your team can act on', ]; return (
What we check on your site
    {checks.map((c, i) => (
  • +{c}
  • ))}
No credit card. No sales call required.
{/* Sample report mock card */}
SAMPLE
Free Site Report
smithmedspa.com
Score
47 /100
Diagnosis
Strong foundation, with major gaps.
Top findings
{[ { v: '5', label: 'treatment pages missing search signals', sev: 'bad' }, { v: '12', label: 'patient questions not answered', sev: 'bad' }, { v: '3', label: 'services weak in AI-search visibility', sev: 'warm' }, { v: '+', label: 'quick wins checklist included', sev: 'good' }, ].map((f, i) => (
{f.v} {f.label} {f.sev === 'good' ? 'Win' : f.sev === 'warm' ? 'Watch' : 'Gap'}
))}
READY IN ~5 MIN · NO CARD RUN 04/26
); } /* ============================================================= 05 · How it works — 5 steps, vertical timeline ============================================================= */ function LV_HowItWorks() { const steps = [ { n: '01', title: 'Free site report', body: "We scan your site and show what's missing.", meta: 'Free · ~5 min' }, { n: '02', title: 'Strategy audit', body: 'Clinic profile, competitor scan, content plan, research roadmap.', meta: '$1,500 · ~7 business days' }, { n: '03', title: 'Order articles from your plan', body: 'Doctor review included on every article.', meta: 'From $250 / article' }, { n: '04', title: 'Approve from your phone in ~5 min', body: 'Mobile-first review surface for clinicians.', meta: 'Mobile review' }, { n: '05', title: 'Optional updates keep articles current', body: 'On ongoing plans, we refresh articles when guidance, search intent, or rankings change.', meta: 'Optional · ongoing' }, ]; return (
{steps.map((s, i) => (
{s.n}

{s.title}

{s.body}

{s.meta}
))}
); } /* ============================================================= 06 · Sample articles ×3 ============================================================= */ function LV_SampleArticles() { const articles = [ { title: 'Chemical peel recovery: day-by-day timeline', intent: 'patients researching downtime', focus: 'peeling timeline, aftercare', structure: 'FAQ-ready answers, patient-friendly', tag: 'Recovery · Aesthetic', }, { title: 'How long do dermal fillers really last?', intent: 'patients comparing options', focus: 'duration, safety, expectations', structure: 'answer-first, comparison blocks', tag: 'Comparison · Injectables', }, { title: 'Microneedling vs RF microneedling', intent: 'patients comparing treatments', focus: 'indications, contraindications', structure: 'comparison table, decision guide', tag: 'Decision guide · Skin', }, ]; return (
{articles.map((a, i) => (
{a.tag}

{a.title}

{[ { k: 'Target intent', v: a.intent }, { k: 'Review focus', v: a.focus }, { k: 'Structure', v: a.structure }, ].map((row, j) => (
{row.k}
{row.v}
))}
Read sample
))}
); } /* ============================================================= 07 · Why not just use ChatGPT? ============================================================= */ function LV_WhyNotChatGPT() { const points = [ "ChatGPT doesn't know your service priorities", "It doesn't see which pages miss signals", "It doesn't provide clinician review for protocol-sensitive claims", ]; return (
    {points.map((p, i) => (
  • {p}
  • ))}
+

MedSpaCopy uses AI where it helps — the product is strategy, research, review, and clinic-fit.

); } /* ============================================================= 08 · Who we are not for ============================================================= */ function LV_NotForUs() { const items = [ 'Clinics looking for high-volume, low-cost blog posts', 'Generic healthcare websites outside aesthetics', 'Teams that want $50 SEO articles with no clinical review', ]; return (
Honest fit

Who we are not for.

We'd rather say no than ship work that won't move your clinic forward.

); } /* ============================================================= 09 · FAQ accordion ×6 ============================================================= */ function LV_FAQ() { const items = [ { q: 'Is this an AI writing tool?', a: 'No. MedSpaCopy is AI-assisted research and drafting inside a managed editorial workflow with clinical review. The product is strategy, research, review, and clinic-fit — not a content generator you log into.', }, { q: 'Who reviews the articles?', a: "Your medical director or a clinician you nominate. We also have an editorial team that reviews every article for structure, claim accuracy, and patient-readiness before it reaches your reviewer. If you don't have a clinician on staff, we can pair you with one of our review partners.", }, { q: 'Will Google penalize AI-assisted content?', a: "Google's guidance is about quality and helpfulness, not about how content was made. Our articles are research-led, doctor-reviewed, and built around real patient questions — exactly the type of content Google rewards.", }, { q: "What if I don't have a doctor on staff?", a: 'We can pair you with a clinician reviewer for protocol-sensitive claims. For most med spas this is a small per-article add-on; for larger clinics we set up a recurring review relationship.', }, { q: 'Can I cancel anytime?', a: 'Yes. Articles are ordered one at a time from your plan — no contract, no minimum. Strategy Audit is a one-time purchase. Optional updates run month-to-month and cancel in one click.', }, { q: 'How fast is delivery?', a: 'Free site report: ~5 minutes. Strategy Audit: ~7 business days. Articles: 5-10 business days from order to clinician approval, depending on review turnaround on your side.', }, ]; const [open, setOpen] = lvS(0); return (
Still on the fence? Talk to our editor →
{items.map((it, i) => { const isOpen = open === i; return (

{it.a}

); })}
); } /* ============================================================= 10 · Footer CTA — repeat hero CTA ============================================================= */ function LV_FooterCTA() { return (
); } /* ============================================================= 11 · Sticky compact nav (after 200px scroll) ============================================================= */ function LV_StickyNav() { const [show, setShow] = lvS(false); lvE(() => { let raf = 0; const onScroll = () => { if (raf) return; raf = requestAnimationFrame(() => { setShow(window.scrollY > 200); raf = 0; }); }; window.addEventListener('scroll', onScroll, { passive: true }); onScroll(); return () => window.removeEventListener('scroll', onScroll); }, []); return (
MedSpaCopy
); } /* Expose to other Babel scripts */ Object.assign(window, { LV_ProblemBlock, LV_ClinicalReview, LV_FreeReportPreview, LV_HowItWorks, LV_SampleArticles, LV_WhyNotChatGPT, LV_NotForUs, LV_FAQ, LV_FooterCTA, LV_StickyNav, });