/* MedSpaCopy v4 — refined master direction. Locks in Direction 3 v3 system; refines header/nav, diagnostic card hierarchy, hero proof row, Strategy Audit card, and footer. Adds matching Free Report and ResearchDashboard surfaces in the same visual system. Outputs: Landing_v4 FreeReport_v4 ResearchDashboard_v4 */ const P4 = { accent: '#1f5161', accent600: '#173d4a', accent50: '#f0f5f6', accent100: '#dfe9ec', warm: '#c79a5a', warmSoft: '#e6cfa6', warmInk: '#5a4220', warmTint: '#f6efe1', warn: '#b8762b', good: '#1f8a5b', ink: '#0f1a1f', inkMid: '#3a4a55', inkSoft: '#5c6772', surface: '#ffffff', surfaceTint: '#f6f3ee', surfaceCool: '#eef1f3', border: '#e1e6eb', borderWarm: '#e6dccb', borderInk: 'rgba(255,255,255,0.12)', }; const FONT_SERIF = "var(--font-serif-display)"; const FONT_SANS = "var(--font-sans-display)"; const FONT_MONO = "var(--font-mono)"; const FONT_BODY = "var(--font-body)"; /* ============================================================= Shared primitives ============================================================= */ const Wordmark_v4 = ({ size = 16, color = P4.ink }) => ( MedSpaCopy ); const SignalGrid_v4 = ({ size = 720, faint = false }) => ( ); const Marker_v4 = ({ kind, size = 26 }) => { const map = { issue: { glyph: '!', fg: P4.warn, bg: `color-mix(in oklab, ${P4.warn} 16%, transparent)` }, opportunity: { glyph: '~', fg: P4.warm, bg: `color-mix(in oklab, ${P4.warm} 22%, transparent)` }, good: { glyph: '+', fg: P4.good, bg: `color-mix(in oklab, ${P4.good} 16%, transparent)` }, info: { glyph: 'o', fg: P4.accent, bg: `color-mix(in oklab, ${P4.accent} 12%, transparent)` }, }; const m = map[kind]; return ( {m.glyph} ); }; const MonoKicker_v4 = ({ children, color = P4.inkSoft, mb = 0 }) => (
{children}
); /* ============================================================= Refined header — proper marketing nav ============================================================= */ function Header_v4({ ctaLabel = 'Run free diagnosis', signedIn = false, email }) { return (
{signedIn ? ( <> {email} Account ) : ( <> Sign in )}
); } /* ============================================================= Refined footer — intentional, finished ============================================================= */ function Footer_v4() { const cols = [ { title: 'Product', items: ['Free site report', 'Strategy audit', 'Article ordering', 'Doctor review', 'Wallet & top-up'] }, { title: 'For', items: ['Med spa owners', 'Aesthetic clinics', 'Medical directors', 'Solo practitioners'] }, { title: 'Resources', items: ['Sample report', 'FTC compliance guide', 'Editorial standards', 'Help center'] }, { title: 'Company', items: ['About', 'Editorial team', 'Press', 'Contact'] }, ]; return ( ); } /* ============================================================= Refined diagnostic card — clearer hierarchy, less crowded ============================================================= */ function DiagnosticCard_v4({ small = false }) { return (
); } /* ============================================================= LANDING — refined master ============================================================= */ function Landing_v4() { return (
{/* Hero */}
RUN · 04 / 26 EVIDENCE-LED CONTENT FOR US AESTHETIC CLINICS

Diagnose your visibility.{' '} Plan the content.{' '} Ship it doctor-reviewed.

MedSpaCopy runs your site through 11 visibility signals, hands you a 90-day plan, and ships every article past your medical director — before it reaches a patient.

{/* URL form */}
https://
{/* Consolidated proof — bold label on top, description on second line */}
{[ { dot: P4.good, label: 'Free', sub: 'No card.' }, { label: '~5 min', sub: 'to your report' }, { label: '11 signals', sub: 'per scan' }, { label: 'Doctor-signed', sub: 'output' }, ].map((p, i) => (
{i > 0 && ( )} {p.dot && ( )}
{p.label}
{p.sub}
))}
MedSpaCopy content system
{/* Three-pillar — Why pick us */}
Why med spas pick MedSpaCopy

Built for clinics, not content farms.

{[ { kicker: '01 · Diagnose', title: 'Eleven signals across SEO, AI search, and patient intent', body: 'Free in under five minutes. No card. No call.' }, { kicker: '02 · Plan', title: 'A 90-day content plan tied to the gaps we found', body: 'Audit-grade research, prioritized for your services and city.' }, { kicker: '03 · Ship', title: 'Doctor-reviewed before a single patient reads it', body: 'Every article signed off by a clinician. FTC-aware claims, on by default.' }, ].map((c, i) => (
{c.kicker}

{c.title}

{c.body}

))}
{/* Pricing — Strategy Audit emphasized harder */}
Pricing

Mirrored to your funnel.

Start free. Move to a Strategy Audit when the diagnosis is worth acting on.
{/* Free */}
Free Site Report
~5 min
$0 · no card

Diagnose your visibility. See where patients can't find you.

    {['Visibility score & 11 signals', 'Quick wins checklist', 'Sample article, doctor-reviewed'].map((t, j) => (
  • +{t}
  • ))}
{/* Strategy Audit — emphasized harder: dark frame top + warm seal + tighter rhythm */}
{/* Dark ribbon top — mirrors the diagnostic card framing */}
Most clinics start here
~7 BUSINESS DAYS
Strategy Audit
$1,500 · one-time

The diagnosis, the competitor scan, and your 90-day content plan — written by clinical editors.

{[ 'Clinic profile & competitor scan', '90-day content plan', 'Research roadmap', 'AI-search optimization', 'Doctor-reviewed topic list', 'Wallet credit on first 3 articles', ].map((t, j) => (
+ {t}
))}
{/* Trust line under features */}
R Editorial team reviews every audit before it ships. Money-back if unhelpful.
{/* Articles */}
Articles
per article
$250 · top-up

Order from your plan. Wallet credits earn 10–20% bonus.

    {['Doctor-reviewed before delivery', 'Wallet credit · 10–20% bonus', 'Optional updates on plans'].map((t, j) => (
  • +{t}
  • ))}
); } /* ============================================================= FREE REPORT — matching system, deliverable surface ============================================================= */ function FreeReport_v4() { return (
{/* Title strip */}
FREE VISIBILITY REPORT RUN · 04 / 26 · v 1.04 SMITHMEDSPA.COM

Hi Sarah — here's what we found at Smith Med Spa.

Eleven visibility signals analyzed across 12 service pages. Six issues, three opportunities, two healthy signals. Two quick wins inside.

{/* Findings */}

Eleven signals, in detail

{[ { l: 'All', n: 11 }, { l: 'Issues', n: 6 }, { l: 'Opportunities', n: 3 }, { l: 'Healthy', n: 2 }, ].map((t, i) => ( {t.l} {t.n} ))}
{[ { kind: 'issue', cat: 'SEO', text: 'Meta tags missing on 8 of 12 service pages', sub: 'Patients searching by procedure don\'t see your snippet.' }, { kind: 'opportunity', cat: 'AI search', text: 'Botox & laser hair removal absent in AI answers', sub: 'Perplexity, ChatGPT, Gemini route the query elsewhere.' }, { kind: 'issue', cat: 'Patient intent', text: 'Recovery & cost questions unanswered on-site', sub: 'These are the top two pre-booking patient questions.' }, { kind: 'opportunity', cat: 'Local', text: '"Med spa near Westlake" — no page targets it', sub: 'Underserved geo-modifier within your service radius.' }, { kind: 'issue', cat: 'Content depth', text: '4 service pages are under 200 words', sub: 'Below the threshold patients (and search) read as substantive.' }, { kind: 'good', cat: 'Performance', text: 'Site speed: 2.1s load — meets Core Web Vitals', sub: 'No action needed.' }, { kind: 'good', cat: 'Trust', text: 'Medical director credentials visible on home page', sub: 'Keep this; it\'s rare in the category.' }, ].map((f, i, arr) => (
0 ? `1px dashed ${P4.border}` : 'none', background: f.kind === 'opportunity' ? `color-mix(in oklab, ${P4.warm} 5%, transparent)` : 'transparent', }}>
{f.text}
{f.sub}
{f.cat} Details →
))}
{/* Right rail */}
{/* Quick wins */}
Quick wins · this week
~ 90m total
{[ { t: 'Add structured data for 5 procedures', time: '~30m' }, { t: 'Write FAQ blocks for top services', time: '~45m' }, { t: 'Optimize titles for "near me" queries', time: '~15m' }, ].map((q, i, arr) => (
{q.t} {q.time}
))}
{/* Audit upsell */}
Strategy Audit · $1,500

Know which pages to fix first, and which content to ship next.

    {['Full visibility & competitor analysis', 'Priority list of pages to update', '90-day content roadmap', 'Doctor-reviewed topic opportunities'].map((t, i) => (
  • + {t}
  • ))}

No charge until you confirm scope.

{/* Doctor reviewer card */}
RM
Reviewed by R. Marsden, MD
Editorial physician · FTC-aware claims
Methodology
); } /* ============================================================= RESEARCH DASHBOARD — same system, app surface ============================================================= */ function ResearchDashboard_v4() { const ink = P4.ink, accent = P4.accent; return (
{/* App shell — sidebar + topbar */}
{/* Sidebar */} {/* Main */}
{/* Topbar */}
Workspace / Research
Search topics, sources, claims… ⌘K
{/* Page content */}
{/* Page header */}
Audit · Apr 2026 · v 1.04

Research

The evidence behind your content plan. Every topic, every source, every claim — traceable before it reaches a patient.

{/* Stat strip — same rhythm as marketing */}
{[ { v: '14', l: 'Topics in plan', sub: '6 ready · 5 drafting · 3 queued' }, { v: '186', l: 'Sources collected', sub: '72% peer-reviewed' }, { v: '47', l: 'Claims · medical', sub: '12 awaiting doctor review', warm: true }, { v: '2.1%', l: 'Claim revision rate', sub: 'Editor-flagged this audit' }, ].map((s, i) => (
{s.v}
{s.l}
{s.sub}
))}
{/* Two-column body */}
{/* Topics table */}

Topics in research

14 TOTAL
{['All', 'Ready', 'Drafting', 'Queued', 'Doctor review'].map((t, i) => ( {t} ))}
{/* Header row */}
Topic Service Sources Claims Status
{[ { topic: 'How long does Botox really last?', service: 'Botox', src: 14, claims: 6, status: 'ready', kind: 'good' }, { topic: 'Laser hair removal — costs, sessions, recovery', service: 'Laser hair', src: 22, claims: 9, status: 'drafting', kind: 'info' }, { topic: 'Microneedling vs RF microneedling', service: 'Microneedling', src: 18, claims: 7, status: 'review', kind: 'opportunity' }, { topic: '"Med spa near Westlake" — local landing page brief', service: 'Local SEO', src: 6, claims: 2, status: 'drafting', kind: 'info' }, { topic: 'CoolSculpting — patient candidacy & contraindications', service: 'CoolSculpting', src: 19, claims: 11, status: 'review', kind: 'opportunity' }, { topic: 'Chemical peels — recovery timeline by skin type', service: 'Peels', src: 15, claims: 5, status: 'queued', kind: 'queued' }, { topic: 'Injector credentials — what patients should ask', service: 'Trust', src: 9, claims: 4, status: 'ready', kind: 'good' }, ].map((r, i, arr) => { const statusBadge = { ready: { label: '+ ready', fg: P4.good, bg: `color-mix(in oklab, ${P4.good} 12%, transparent)` }, drafting: { label: '~ drafting', fg: P4.accent, bg: `color-mix(in oklab, ${P4.accent} 10%, transparent)` }, review: { label: '! review', fg: P4.warn, bg: `color-mix(in oklab, ${P4.warn} 14%, transparent)` }, queued: { label: '[ ] queued', fg: P4.inkSoft, bg: `color-mix(in oklab, ${P4.inkSoft} 12%, transparent)` }, }[r.status]; return (
{r.topic}
topic_{String(i + 1).padStart(2, '0')} · v 1.{i + 1}
{r.service} {r.src} {r.claims} {statusBadge.label}
); })}
{/* Right: source quality + recent activity */}
{/* Source quality */}

Source quality · 186 total

72% PEER-REVIEWED
{[ { l: 'Peer-reviewed journals', n: 134, pct: 72, c: P4.accent }, { l: 'Clinical guidelines', n: 28, pct: 15, c: P4.accent600 }, { l: 'FDA / regulatory', n: 14, pct: 8, c: P4.warm }, { l: 'Editorial / press', n: 10, pct: 5, c: P4.inkSoft }, ].map((b, i) => (
{b.l} {b.n} · {b.pct}%
))}
Sources older than 5 years are flagged for editor review. Last refresh: Apr 24, 2026.
{/* Recent activity */}

Recent activity

Audit log →
{[ { t: 'R. Marsden, MD', act: 'approved 4 claims on', topic: '"Botox longevity"', when: '2h ago', kind: 'good' }, { t: 'Editor · L. Park', act: 'flagged source as outdated on', topic: '"Microneedling vs RF"', when: '4h ago', kind: 'opportunity' }, { t: 'Sarah (you)', act: 'added topic', topic: '"Westlake landing page"', when: '1d ago', kind: 'info' }, { t: 'R. Marsden, MD', act: 'requested rewrite on', topic: '"CoolSculpting candidacy"', when: '1d ago', kind: 'issue' }, ].map((a, i, arr) => (
0 ? `1px dashed ${P4.border}` : 'none', alignItems: 'center' }}>
{a.t} {a.act} {a.topic}
{a.when}
))}
); } /* Sidebar bits */ function NavGroup({ label, children }) { return (
{label}
{children}
); } function NavItem({ label, active, badge, warm }) { return ( {label} {badge && ( {badge} )} ); } Object.assign(window, { Landing_v4, FreeReport_v4, ResearchDashboard_v4 });