#!/usr/bin/env python3
"""Generate Home Helpers positioning brief HTML and landing page HTML."""

import re

CYCLE_ID = "home-helpers-2026-04-17"
CLIENT_ID = "home-helpers"
CLIENT_NAME = "Home Helpers"
PRODUCT_NAME = "The 2-Hour Response Guarantee"
DATE = "2026-04-17"
PERIOD = "Apr 17 – May 1, 2026"
CLIENT_TYPE = "B2B"
HOOK_SELECTED = "A"
SLUG = "partner-program"

RESEARCH_BRIEF_URL = "https://docs.google.com/document/d/1qSku6jQo870dgI-AbrmdsevmYV0URCtrqOBEYB7gIzU/edit"

POSITIONING_HTML = """<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Positioning Brief — The 2-Hour Response Guarantee — Home Helpers — 2026-04-17</title>
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400;1,600&family=Montserrat:wght@300;400;500;600;700&display=swap" rel="stylesheet">
  <style>
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    :root {
      --bg: #F0EDE7; --surface: #FFFFFF; --alt: #F7F4F0;
      --text: #1C1917; --text-2: #57534E; --text-3: #A8A29E;
      --border: #DDD9D2; --red: #8B1A1A; --red-mid: #B22222;
      --red-light: #C0392B; --red-bg: #FDF3F3;
      --dark: #1C1917; --dark-2: #292524; --dark-3: #3C3835;
      --green: #059669;
    }
    html { scroll-behavior: smooth; }
    body { font-family: 'Montserrat', sans-serif; background: var(--bg); color: var(--text); font-size: 13px; line-height: 1.7; }
    nav { position: sticky; top: 0; z-index: 100; background: var(--dark); display: flex; align-items: center; justify-content: space-between; padding: 0 40px; height: 50px; }
    .nav-brand { font-family: 'Cormorant Garamond', serif; font-size: 14px; font-weight: 400; letter-spacing: 0.16em; color: #E8E4DF; text-transform: uppercase; }
    .nav-brand span { color: var(--red-light); }
    .nav-right { display: flex; align-items: center; gap: 20px; }
    .nav-info { font-size: 10px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: #78716C; }
    .nav-info strong { color: #B8B3AD; }
    .nav-back { background: transparent; border: 1px solid #3C3835; color: #78716C; font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; padding: 7px 16px; white-space: nowrap; }
    .nav-back:hover { border-color: #5C5753; color: #B8B3AD; }
    .hero { background: var(--surface); border-bottom: 1px solid var(--border); padding: 52px 40px 40px; max-width: 1000px; margin: 0 auto; }
    .hero-eyebrow { font-size: 10px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--red); margin-bottom: 14px; }
    .hero h1 { font-family: 'Cormorant Garamond', serif; font-size: 50px; font-weight: 300; line-height: 1.1; color: var(--text); margin-bottom: 18px; font-style: italic; }
    .hero-tags { display: flex; flex-wrap: wrap; gap: 8px; }
    .tag { font-size: 9px; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; padding: 4px 10px; border: 1px solid var(--border); color: var(--text-3); background: var(--alt); }
    .tag.b2b { border-color: var(--red); color: var(--red); background: var(--red-bg); }
    .tag.dark { background: var(--dark); color: #78716C; border-color: var(--dark); }
    .stats { background: var(--dark); max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: repeat(5, 1fr); }
    .stat { padding: 22px 24px; border-right: 1px solid var(--dark-2); }
    .stat:last-child { border-right: none; }
    .stat-n { font-family: 'Cormorant Garamond', serif; font-size: 38px; font-weight: 600; color: #E8E4DF; line-height: 1; }
    .stat-n.red { color: var(--red-light); }
    .stat-l { font-size: 9px; font-weight: 600; letter-spacing: 0.11em; text-transform: uppercase; color: #5C5753; margin-top: 3px; }
    .page { max-width: 1000px; margin: 0 auto; padding: 0 40px 100px; }
    .sec { margin-top: 56px; }
    .sec-head { display: flex; align-items: baseline; gap: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--border); margin-bottom: 24px; }
    .sec-n { font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--red); min-width: 28px; }
    .sec-t { font-family: 'Cormorant Garamond', serif; font-size: 26px; font-weight: 400; }
    .sec-count { font-size: 10px; font-weight: 600; color: var(--text-3); margin-left: auto; letter-spacing: 0.06em; }
    .core-arg { background: var(--surface); border: 1px solid var(--border); border-left: 3px solid var(--red); padding: 28px 32px; }
    .core-arg p { font-size: 14px; line-height: 1.8; color: var(--text); }
    .core-tag { display: inline-block; background: var(--dark); color: #5C5753; font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; padding: 6px 12px; margin-top: 20px; }
    .hook-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 2px; }
    .hook-card { background: var(--surface); border: 1px solid var(--border); padding: 24px 24px 20px; position: relative; }
    .hook-card.selected { border-left: 3px solid var(--red); }
    .hook-n { font-size: 10px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-3); margin-bottom: 16px; }
    .hook-text { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-style: italic; font-weight: 300; color: var(--text); line-height: 1.4; }
    .hook-badge { display: inline-block; background: var(--red); color: #fff; font-size: 8px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; padding: 3px 8px; margin-top: 14px; }
    .hook-reason-bar { background: var(--dark); padding: 14px 22px; margin-top: 2px; font-size: 11px; color: #8A8480; }
    .hook-reason-bar strong { color: #B8B3AD; font-size: 9px; letter-spacing: 0.1em; text-transform: uppercase; margin-right: 8px; }
    .who-list { display: flex; flex-direction: column; gap: 2px; }
    .who-row { background: var(--surface); border: 1px solid var(--border); display: grid; grid-template-columns: 120px 1fr; }
    .who-row.primary { border-left: 3px solid var(--green); }
    .who-row.secondary { border-left: 3px solid #D97706; }
    .who-row.notfor { border-left: 3px solid var(--dark-3); }
    .who-label-col { background: var(--dark); display: flex; align-items: center; justify-content: center; padding: 16px 12px; border-right: 1px solid var(--dark-2); }
    .who-label { font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: #5C5753; text-align: center; }
    .who-row.primary .who-label { color: var(--green); }
    .who-row.secondary .who-label { color: #D97706; }
    .who-row.notfor .who-label { color: #78716C; }
    .who-body { padding: 16px 22px; font-size: 13px; color: var(--text); line-height: 1.6; display: flex; align-items: center; }
    .notfor-text { text-decoration: line-through; color: var(--text-3); text-decoration-color: var(--red); }
    .problem-card { background: var(--surface); border: 1px solid var(--border); padding: 24px 28px; }
    .problem-card p { font-size: 13px; line-height: 1.8; color: var(--text); margin-bottom: 16px; }
    .problem-card p:last-child { margin-bottom: 0; }
    .problem-evidence { background: var(--dark); border: 1px solid var(--dark-2); padding: 20px 24px; margin-top: 2px; }
    .pe-label { font-size: 9px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: #5C5753; margin-bottom: 10px; }
    .pe-text { font-family: 'Cormorant Garamond', serif; font-size: 16px; font-style: italic; font-weight: 300; color: #8A8480; line-height: 1.6; }
    .solution-card { background: var(--surface); border: 1px solid var(--border); padding: 24px 28px; margin-bottom: 2px; }
    .solution-card p { font-size: 13px; line-height: 1.8; color: var(--text); margin-bottom: 16px; }
    .solution-card p:last-child { margin-bottom: 0; }
    .outcome-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 2px; }
    .outcome-cell { background: var(--surface); border: 1px solid var(--border); padding: 20px 22px; }
    .outcome-cell.key { background: var(--red); border-color: var(--red); }
    .outcome-label { font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-3); margin-bottom: 10px; }
    .outcome-cell.key .outcome-label { color: rgba(255,255,255,0.5); }
    .outcome-text { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-weight: 300; color: var(--text); line-height: 1.3; }
    .outcome-cell.key .outcome-text { font-size: 26px; color: #fff; font-style: italic; }
    .outcome-cell:not(.key) .outcome-text { font-size: 14px; }
    .diff-list { display: flex; flex-direction: column; gap: 2px; }
    .diff-row { background: var(--surface); border: 1px solid var(--border); display: grid; grid-template-columns: 160px 1fr 1fr; }
    .diff-vs { background: var(--dark); display: flex; align-items: center; justify-content: center; padding: 16px 14px; border-right: 1px solid var(--dark-2); }
    .diff-vs-label { font-size: 9px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #78716C; text-align: center; }
    .diff-vs-label em { display: block; color: #B8B3AD; font-style: normal; font-size: 10px; margin-bottom: 4px; font-family: 'Cormorant Garamond', serif; letter-spacing: 0; }
    .diff-cell { padding: 16px 20px; border-right: 1px solid var(--border); }
    .diff-cell:last-child { border-right: none; background: var(--red-bg); }
    .diff-cell-label { font-size: 9px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-3); margin-bottom: 8px; }
    .diff-cell:last-child .diff-cell-label { color: var(--red); }
    .diff-cell-text { font-size: 12px; color: var(--text-2); line-height: 1.6; }
    .diff-cell:last-child .diff-cell-text { color: var(--red); font-weight: 500; }
    .obj-list { display: flex; flex-direction: column; gap: 2px; }
    .obj-card { background: var(--surface); border: 1px solid var(--border); border-top: 1px solid var(--red); padding: 22px 26px; }
    .obj-q { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-style: italic; font-weight: 300; color: var(--text); line-height: 1.4; margin-bottom: 12px; }
    .obj-a { font-size: 12px; color: var(--text-2); line-height: 1.7; margin-bottom: 8px; }
    .obj-src { font-size: 10px; color: var(--text-3); }
    .proof-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }
    .proof-block { background: var(--surface); border: 1px solid var(--border); padding: 22px 24px; }
    .proof-block.alt { background: var(--alt); }
    .proof-label { font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-3); margin-bottom: 14px; }
    .proof-text { font-size: 12px; color: var(--text); line-height: 1.7; }
    .proof-block blockquote { font-family: 'Cormorant Garamond', serif; font-size: 17px; font-style: italic; font-weight: 300; color: var(--text); border-left: 2px solid var(--border); padding-left: 14px; line-height: 1.5; }
    .cta-box { background: var(--dark); border: 1px solid var(--dark-2); padding: 36px 40px; display: flex; justify-content: space-between; align-items: flex-start; gap: 32px; }
    .cta-left { flex: 1; }
    .cta-action { font-family: 'Cormorant Garamond', serif; font-size: 36px; font-weight: 300; color: #E8E4DF; line-height: 1.2; margin-bottom: 12px; }
    .cta-framing { font-family: 'Cormorant Garamond', serif; font-size: 17px; font-style: italic; color: #8A8480; line-height: 1.6; margin-bottom: 10px; }
    .cta-risk { font-size: 10px; color: #5C5753; }
    .cta-badge { background: var(--red); color: #fff; font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 8px 16px; white-space: nowrap; align-self: flex-start; flex-shrink: 0; }
    .voice-list { display: flex; flex-direction: column; gap: 2px; }
    .voice-item { background: var(--surface); border: 1px solid var(--border); padding: 14px 20px; display: flex; align-items: center; gap: 14px; cursor: pointer; user-select: none; transition: background 0.15s; }
    .voice-item:hover { background: var(--alt); }
    .voice-check { width: 18px; height: 18px; border: 2px solid var(--border); flex-shrink: 0; display: flex; align-items: center; justify-content: center; transition: all 0.15s; }
    .voice-item.checked .voice-check { background: var(--green); border-color: var(--green); }
    .voice-item.checked .voice-check::after { content: '&#10003;'; color: #fff; font-size: 11px; font-weight: 700; }
    .voice-item-label { font-size: 12px; color: var(--text); }
    .voice-item.checked .voice-item-label { color: var(--text-3); }
    .voice-notes { background: var(--alt); border: 1px solid var(--border); padding: 16px 20px; margin-top: 2px; font-size: 11px; color: var(--text-3); font-style: italic; line-height: 1.6; }
    .signoff-section { background: linear-gradient(135deg, #1A0000 0%, #3D0000 100%); padding: 0; margin-top: 80px; }
    .signoff-inner { max-width: 1000px; margin: 0 auto; padding: 60px 40px; }
    .signoff-eyebrow { font-size: 9px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--red-light); margin-bottom: 12px; }
    .signoff-inner h2 { font-family: 'Cormorant Garamond', serif; font-size: 38px; font-weight: 300; color: #E8E4DF; margin-bottom: 10px; }
    .signoff-sub { font-size: 12px; color: #6B5555; line-height: 1.7; margin-bottom: 30px; max-width: 580px; }
    .signoff-product-box { background: rgba(0,0,0,0.35); border: 1px solid rgba(139,26,26,0.3); padding: 16px 22px; margin-bottom: 30px; display: flex; gap: 40px; }
    .spb-item { }
    .spb-label { font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: #5C3333; margin-bottom: 4px; }
    .spb-val { font-family: 'Cormorant Garamond', serif; font-size: 18px; font-weight: 300; color: #D6C8C8; }
    .signoff-actions { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; }
    .btn-approve { background: #059669; color: #fff; border: none; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; padding: 13px 24px; cursor: pointer; }
    .btn-approve:hover { background: #047857; }
    .btn-revise { background: #92400E; color: #fff; border: none; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; padding: 13px 24px; cursor: pointer; }
    .btn-revise:hover { background: #78350F; }
    .btn-hold { background: #292524; color: #78716C; border: none; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; padding: 13px 24px; cursor: pointer; }
    .btn-hold:hover { background: #1C1917; color: #A8A29E; }
    .revise-area { overflow: hidden; max-height: 0; transition: max-height 0.3s ease; }
    .revise-area.open { max-height: 380px; }
    .revise-area textarea { width: 100%; min-height: 100px; background: rgba(0,0,0,0.4); border: 1px solid rgba(139,26,26,0.4); color: #D6C8C8; font-family: 'Montserrat', sans-serif; font-size: 12px; padding: 14px 16px; resize: vertical; outline: none; margin-top: 10px; }
    .revise-area textarea::placeholder { color: #5C3333; }
    .revise-area textarea:focus { border-color: var(--red-light); }
    .scope-row { display: flex; align-items: center; gap: 18px; margin-top: 12px; flex-wrap: wrap; }
    .scope-label { font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--red-light); opacity: 0.7; }
    .scope-opt { display: flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 500; color: #c8a8a8; cursor: pointer; letter-spacing: 0.04em; }
    .scope-opt input[type="radio"] { accent-color: var(--red-light); cursor: pointer; }
    .btn-submit-feedback { background: var(--red); color: #fff; border: none; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; padding: 11px 22px; cursor: pointer; margin-top: 12px; }
    .btn-submit-feedback:hover { background: var(--red-mid); }
    .signoff-result { display: none; padding: 24px 0; }
    .signoff-result.visible { display: block; }
    .sr-decision { font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 300; margin-bottom: 8px; }
    .sr-decision.approved { color: #6EE7B7; }
    .sr-decision.revise { color: #FCD34D; }
    .sr-decision.hold { color: #78716C; }
    .sr-note { font-size: 11px; color: #6B5555; }
    .pos-preconfirm { display: none; position: fixed; inset: 0; background: rgba(28,25,23,0.9); z-index: 300; align-items: center; justify-content: center; padding: 24px; }
    .pos-preconfirm.visible { display: flex; }
    .ppc-box { background: var(--surface); max-width: 420px; width: 100%; }
    .ppc-header { padding: 20px 26px; }
    .ppc-header.approved { background: #064E3B; }
    .ppc-header.revise { background: #78350F; }
    .ppc-header.hold { background: var(--dark); }
    .ppc-eye { font-size: 9px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 6px; }
    .ppc-header.approved .ppc-eye { color: #6EE7B7; }
    .ppc-header.revise .ppc-eye { color: #FCD34D; }
    .ppc-header.hold .ppc-eye { color: #5C5753; }
    .ppc-product { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-style: italic; font-weight: 300; color: #E8E4DF; line-height: 1.3; }
    .ppc-body { padding: 26px 26px 22px; }
    .ppc-body h3 { font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 300; margin-bottom: 8px; }
    .ppc-body p { font-size: 12px; color: var(--text-2); line-height: 1.6; margin-bottom: 22px; }
    .ppc-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }
    .ppc-no { background: var(--alt); border: 1px solid var(--border); color: var(--text-2); font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 13px; cursor: pointer; }
    .ppc-no:hover { background: var(--border); }
    .ppc-yes { border: none; color: #fff; font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 13px; cursor: pointer; }
    .ppc-yes.approved { background: #059669; }
    .ppc-yes.approved:hover { background: #047857; }
    .ppc-yes.revise { background: var(--red); }
    .ppc-yes.revise:hover { background: var(--red-mid); }
    .ppc-yes.hold { background: #44403C; }
    .ppc-yes.hold:hover { background: #292524; }
    @media(max-width:700px){
      nav { padding: 0 16px; }
      .hero { padding: 32px 16px; }
      .hero h1 { font-size: 34px; }
      .stats { grid-template-columns: 1fr 1fr 1fr; }
      .page { padding: 0 16px 60px; }
      .hook-grid { grid-template-columns: 1fr; }
      .who-row { grid-template-columns: 90px 1fr; }
      .diff-row { grid-template-columns: 1fr; }
      .diff-vs { justify-content: flex-start; padding: 12px 16px; }
      .outcome-grid { grid-template-columns: 1fr; }
      .proof-grid { grid-template-columns: 1fr; }
      .cta-box { flex-direction: column; gap: 20px; }
      .signoff-inner { padding: 40px 16px; }
      .signoff-actions { flex-direction: column; }
      .btn-approve, .btn-revise, .btn-hold { width: 100%; text-align: center; }
      .signoff-product-box { flex-direction: column; gap: 16px; }
    }
  </style>
</head>
<body>

<nav>
  <div class="nav-brand">Emerson <span>North</span> &nbsp;|&nbsp; Positioning Brief</div>
  <div class="nav-right">
    <span class="nav-info">Client: <strong>Home Helpers</strong></span>
    <a href="research_brief.html" class="nav-back">&#8592; Research Brief</a>
  </div>
</nav>

<div class="hero">
  <div class="hero-eyebrow">Positioning Doc &mdash; Layer 2 Output</div>
  <h1>The 2-Hour Response Guarantee</h1>
  <div class="hero-tags">
    <span class="tag">Home Helpers</span>
    <span class="tag">Apr 17 &ndash; May 1, 2026</span>
    <span class="tag">Generated 2026-04-17</span>
    <span class="tag b2b">B2B</span>
    <span class="tag dark"><a href="https://docs.google.com/document/d/1qSku6jQo870dgI-AbrmdsevmYV0URCtrqOBEYB7gIzU/edit" target="_blank" style="color:#78716C;text-decoration:none;">&#8599; Research Brief</a></span>
  </div>
</div>

<div class="stats">
  <div class="stat"><div class="stat-n red">A</div><div class="stat-l">Hook Version</div></div>
  <div class="stat"><div class="stat-n">4</div><div class="stat-l">Objections</div></div>
  <div class="stat"><div class="stat-n">3</div><div class="stat-l">Differentiators</div></div>
  <div class="stat"><div class="stat-n">4</div><div class="stat-l">Proof Points</div></div>
  <div class="stat"><div class="stat-n" style="font-size:22px;line-height:1.3;">15-Min Intro</div><div class="stat-l">CTA</div></div>
</div>

<div class="page">

  <!-- 01 CORE ARGUMENT -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">01</span>
      <span class="sec-t">Core Argument</span>
    </div>
    <div class="core-arg">
      <p>Discharge planning does not tolerate uncertainty. Under the Hospital Readmissions Reduction Program, a single avoidable readmission within 30 days costs a facility up to 3% of its total Medicare payments. One in five Medicare patients is readmitted in that window. When a coordinator places a patient with a home care agency, they are putting their professional judgment and their facility's financial performance on the line.</p>
      <p style="margin-top:16px">The problem is not that good agencies do not exist. The problem is that there is no efficient way to evaluate them before referring. With 275 home care providers in DuPage County alone, discharge planners default to a shortlist of 3 to 5 agencies they have learned to trust through hard experience.</p>
      <p style="margin-top:16px">Home Helpers has been in DuPage and Will County for 18 years. We have 128 reviews at 4.8 stars on Caring.com, the highest review volume of any local independent agency, and a Caring Stars award that confirms sustained performance. What we have never had is a formal channel to put that proof in front of the people who control patient placement.</p>
      <p style="margin-top:16px">The 2-Hour Response Guarantee is that channel. A named referral partnership: a dedicated contact, a 24-hour placement commitment, and a monthly outcome summary sent back to the referring facility. A spot on the shortlist you can defend, backed by 18 years of proof already on the record.</p>
      <div class="core-tag">This is the argument. Everything downstream gets built on top of this.</div>
    </div>
  </div>

  <!-- 02 THE HOOK -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">02</span>
      <span class="sec-t">The Hook</span>
      <span class="sec-count">3 versions &mdash; 1 selected</span>
    </div>
    <div class="hook-grid">
      <div class="hook-card selected">
        <div class="hook-n">Version A</div>
        <div class="hook-text">128 families say we show up. A spot on your shortlist takes 15 minutes.</div>
        <div class="hook-badge">Selected Hook</div>
      </div>
      <div class="hook-card">
        <div class="hook-n">Version B</div>
        <div class="hook-text">Your shortlist has 3 agencies. One of them will no-show this month.</div>
      </div>
      <div class="hook-card">
        <div class="hook-n">Version C</div>
        <div class="hook-text">The only DuPage home care agency with a guaranteed 2-hour response time for discharge planners.</div>
      </div>
    </div>
    <div class="hook-reason-bar"><strong>Why this hook:</strong> Version A leads with the strongest verifiable evidence in the local market (128 Caring.com reviews, highest of any independent agency in DuPage/Will) and immediately reduces the ask to a low-effort action. For a Professional/Educational B2B audience, documented proof outperforms provocation. Version B is emotionally accurate but risks feeling adversarial with healthcare professionals who already understand their risk. Version C is a precise category claim but reads as a feature statement rather than a proof anchor.</div>
  </div>

  <!-- 03 WHO IT'S FOR -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">03</span>
      <span class="sec-t">Who It's For</span>
    </div>
    <div class="who-list">
      <div class="who-row primary">
        <div class="who-label-col"><span class="who-label">Primary</span></div>
        <div class="who-body">Hospital discharge planners and social workers at acute care facilities in DuPage and Will County, specifically Advocate Good Samaritan (Downers Grove), Edward Hospital (Naperville), and Amita Saint Joseph (Joliet), who place 5 or more patients per month into home care and have experienced an agency no-show or coverage failure in the past 90 days. They manage patient flow against HRRP financial exposure and need a shortlist they can rely on without re-evaluating every placement.</div>
      </div>
      <div class="who-row secondary">
        <div class="who-label-col"><span class="who-label">Secondary</span></div>
        <div class="who-body">Social workers and care coordinators at skilled nursing facilities and rehab centers across DuPage and Will County who place patients transitioning from short-term rehab to home and need a reliable non-medical home care referral they can hand off with confidence.</div>
      </div>
      <div class="who-row notfor">
        <div class="who-label-col"><span class="who-label">Not For</span></div>
        <div class="who-body"><span class="notfor-text">Families searching directly for home care for a parent or spouse. This program is for professional referral partners, not consumer inquiries.</span></div>
      </div>
    </div>
  </div>

  <!-- 04 PROBLEM STATEMENT -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">04</span>
      <span class="sec-t">Problem Statement</span>
    </div>
    <div class="problem-card">
      <p>Discharge planners in DuPage and Will County are navigating a market with 275 home care providers and no reliable way to evaluate which ones actually perform. The Activated Insights survey of 100,000 home care clients found the top complaints in the category are caregiver no-shows without warning, too many rotating caregivers, and unreachable office staff. These are not edge cases. They are the industry default.</p>
      <p>When a coordinator places a patient with an unreliable agency, the consequences are not just operational. Under the CMS Hospital Readmissions Reduction Program, a Medicare patient readmitted within 30 days triggers a penalty of up to 3% of the facility's total Medicare payments. The result: discharge planners rely on a shortlist of 3 to 5 agencies learned through hard experience, and that shortlist rarely changes unless something breaks.</p>
    </div>
    <div class="problem-evidence">
      <div class="pe-label">Research Evidence</div>
      <div class="pe-text">Caregiver no-shows: Frequency #2 complaint across 100,000 clients (Activated Insights). Rotating caregivers: Frequency #5. Unreachable staff: Frequency #3. HRRP: up to 3% Medicare payment reduction per 30-day readmission, federal policy. 275 home care agencies in DuPage County alone (Caring.com directory data).</div>
    </div>
  </div>

  <!-- 05 SOLUTION STATEMENT -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">05</span>
      <span class="sec-t">Solution Statement</span>
    </div>
    <div class="solution-card">
      <p>The 2-Hour Response Guarantee is a formal referral partnership built for professional healthcare coordinators. When you are placing a patient, you call a dedicated line. Someone answers, or returns the call within 2 hours, guaranteed. You get a placement commitment within 24 hours, not a "we'll see." Thirty days later, you receive a brief outcome summary: placement held, patient stable, no readmission.</p>
      <p>It is not a new service. It is a new channel into 18 years of proven reliability, structured so it works the way discharge coordinators actually work: fast response, named contact, documented follow-through.</p>
    </div>
    <div class="outcome-grid">
      <div class="outcome-cell key">
        <div class="outcome-label">Key Outcome</div>
        <div class="outcome-text">Placement confidence without phone tag.</div>
      </div>
      <div class="outcome-cell">
        <div class="outcome-label">Secondary</div>
        <div class="outcome-text">30-day outcome reports sent back to the referring facility after each placement.</div>
      </div>
      <div class="outcome-cell">
        <div class="outcome-label">Secondary</div>
        <div class="outcome-text">A dedicated contact who knows your hospital's paperwork, preferences, and discharge timing requirements.</div>
      </div>
    </div>
  </div>

  <!-- 06 DIFFERENTIATOR -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">06</span>
      <span class="sec-t">The Differentiator</span>
      <span class="sec-count">3 comparisons</span>
    </div>
    <div class="diff-list">
      <div class="diff-row">
        <div class="diff-vs"><div class="diff-vs-label"><em>VS.</em>Visiting Angels</div></div>
        <div class="diff-cell">
          <div class="diff-cell-label">Their Position</div>
          <div class="diff-cell-text">Has a named hospital-to-home transition product ("Ready, Set, Go Home!") and general discharge planner collaboration language. Only local competitor with a formal B2B program name. No local proof data, no response SLA, no outcome reporting to the referring facility.</div>
        </div>
        <div class="diff-cell">
          <div class="diff-cell-label">Our Difference</div>
          <div class="diff-cell-text">128 Caring.com reviews at 4.8/5, verified and local. Named 2-hour response SLA. Dedicated contact. Monthly outcome summaries. Proof already on the record, not promised in a brochure.</div>
        </div>
      </div>
      <div class="diff-row">
        <div class="diff-vs"><div class="diff-vs-label"><em>VS.</em>Right at Home</div></div>
        <div class="diff-cell">
          <div class="diff-cell-label">Their Position</div>
          <div class="diff-cell-text">4.7/5 with 148 reviews and Caring Stars recognition. Leads with service list: personal care, laundry, companionship. No B2B-specific messaging, no readmission angle, no named response time for professional referral partners.</div>
        </div>
        <div class="diff-cell">
          <div class="diff-cell-label">Our Difference</div>
          <div class="diff-cell-text">We speak the discharge planner's language: HRRP, 30-day outcomes, placement confidence. Right at Home speaks to families. That distinction matters when a coordinator is deciding who belongs on their professional shortlist.</div>
        </div>
      </div>
      <div class="diff-row">
        <div class="diff-vs"><div class="diff-vs-label"><em>VS.</em>Category Standard</div></div>
        <div class="diff-cell">
          <div class="diff-cell-label">Their Position</div>
          <div class="diff-cell-text">Generic service lists, no formal response SLA for discharge planners, no outcome reporting loop to the referring facility, no named contact structure for B2B relationships.</div>
        </div>
        <div class="diff-cell">
          <div class="diff-cell-label">Our Difference</div>
          <div class="diff-cell-text">Named partner program. Named 2-hour response SLA. Named contact. Monthly outcome documentation. The program structure is the differentiator, not a promise but a process.</div>
        </div>
      </div>
      <div class="diff-row">
        <div class="diff-vs"><div class="diff-vs-label"><em>VS.</em>Status Quo</div></div>
        <div class="diff-cell" style="grid-column: span 2;">
          <div class="diff-cell-label">Why doing nothing is the real competitor</div>
          <div class="diff-cell-text" style="color: var(--red); font-weight: 500;">Staying with a shortlist that has not been audited costs nothing, until the next no-show. Under HRRP, a single avoidable readmission exposes a facility to $15,000 to $30,000+ in penalty risk. Adding Home Helpers takes 15 minutes and costs nothing. The asymmetry of risk makes inaction the most expensive option on the list.</div>
        </div>
      </div>
    </div>
  </div>

  <!-- 07 OBJECTIONS -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">07</span>
      <span class="sec-t">Objections &amp; Responses</span>
      <span class="sec-count">4 objections</span>
    </div>
    <div class="obj-list">
      <div class="obj-card">
        <div class="obj-q">"We already have agencies we trust."</div>
        <div class="obj-a">Most coordinators do, and we are not asking you to replace them. We are asking to be the agency you call when your first choice is not available. Most discharge planners find out whether we are reliable when their shortlist fails. We would rather show you before that happens. A 15-minute introduction costs nothing.</div>
        <div class="obj-src">Source: Directly stated as top objection in research brief. Consistent with Activated Insights finding: discharge planners "maintain curated lists and function as gatekeepers."</div>
      </div>
      <div class="obj-card">
        <div class="obj-q">"We don't know if you'll have coverage when we need it."</div>
        <div class="obj-a">That is exactly what the 24-hour placement commitment is for. If we cannot confirm placement within 24 hours, we tell you before you wait, not after. You are not betting on our availability. You are calling with a specific patient and getting a specific answer.</div>
        <div class="obj-src">Source: Activated Insights survey, Frequency #2 and #3 complaints. Coverage uncertainty is the operational fear that drives shortlist consolidation.</div>
      </div>
      <div class="obj-card">
        <div class="obj-q">"Everyone promises they'll show up."</div>
        <div class="obj-a">We know. That is why we lead with reviews, not promises. 128 families documented their experience with us on Caring.com at 4.8 stars. They are not our marketing. They are your due diligence. The 2-hour guarantee is backed by 18 years in this county. If we miss it, you will know quickly, and that tells you everything about whether we belong on your list.</div>
        <div class="obj-src">Source: Research brief pain signal 5: no way to evaluate agency reliability before referring. Activated Insights category-wide complaint on no-shows (Frequency #2 of top 10).</div>
      </div>
      <div class="obj-card">
        <div class="obj-q">"We can only refer to agencies on our approved vendor list."</div>
        <div class="obj-a">We can get on it. We can provide licensing documentation, liability insurance verification, background check protocols, and Caring.com credentialing in one packet. Most coordinators find the approval process faster than expected, and 128 reviews at 4.8 stars tends to accelerate it.</div>
        <div class="obj-src">Source: Healthcare referral process research. Approved vendor lists are a structural barrier in some hospital systems, particularly large acute care facilities.</div>
      </div>
    </div>
  </div>

  <!-- 08 PROOF POINTS -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">08</span>
      <span class="sec-t">Proof Points</span>
      <span class="sec-count">4 categories</span>
    </div>
    <div class="proof-grid">
      <div class="proof-block">
        <div class="proof-label">Results &amp; Proof Signal</div>
        <div class="proof-text">128 Caring.com reviews at 4.8/5, the highest verified review volume of any independent home care agency in DuPage and Will County. Caring Stars Winner. 18 years of continuous operation in the service area. Primary proof gap: 30-day readmission outcome data is not yet collected. This is the first metric to build into the partner program in cycle 2.</div>
      </div>
      <div class="proof-block">
        <div class="proof-label">Client Voice</div>
        <blockquote>"Very good and very professional...people come when they say."</blockquote>
      </div>
      <div class="proof-block">
        <div class="proof-label">Third-Party Signals</div>
        <div class="proof-text">Activated Insights (100,000+ client survey): Home Helpers' primary praise signals map directly to the category's top gaps. CMS HRRP (federal policy): hospital financial pressure is documented at up to 3% per violation. AxisCare 2026 Non-Medical Home Care Trends: 80% caregiver turnover in 100 days industry-wide validates the 18-year retention story.</div>
      </div>
      <div class="proof-block alt">
        <div class="proof-label">Track Record</div>
        <div class="proof-text">18 years serving DuPage and Will County. Services: personal care, ambulation, transfer, toileting, meal preparation. Caring Stars recognition, awarded annually based on sustained review volume and rating. Caregiver retention data not yet documented. This is proof gap #2 to close in cycle 2.</div>
      </div>
    </div>
  </div>

  <!-- 09 CTA -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">09</span>
      <span class="sec-t">The Call to Action</span>
    </div>
    <div class="cta-box">
      <div class="cta-left">
        <div class="cta-action">Book a 15-Minute Partner Introduction</div>
        <div class="cta-framing">The proof is already 18 years in the making. This call is how we put it in front of the right person.</div>
        <div class="cta-risk">No pitch deck. No commitment. 15 minutes to find out whether we belong on your shortlist.</div>
      </div>
      <div class="cta-badge">Book a 15-Min Call</div>
    </div>
  </div>

  <!-- 10 BRAND VOICE CHECK -->
  <div class="sec">
    <div class="sec-head">
      <span class="sec-n">10</span>
      <span class="sec-t">Brand Voice Check</span>
    </div>
    <div class="voice-list">
      <div class="voice-item" onclick="toggleVoice(this)">
        <div class="voice-check"></div>
        <span class="voice-item-label">Tone matches client profile (Professional, Inspirational, Educational)</span>
      </div>
      <div class="voice-item" onclick="toggleVoice(this)">
        <div class="voice-check"></div>
        <span class="voice-item-label">Vocabulary is the discharge planner's vocabulary, not consumer marketing language</span>
      </div>
      <div class="voice-item" onclick="toggleVoice(this)">
        <div class="voice-check"></div>
        <span class="voice-item-label">Hook sounds natural from Ralph Johnson / Home Helpers in a facility introduction</span>
      </div>
      <div class="voice-item" onclick="toggleVoice(this)">
        <div class="voice-check"></div>
        <span class="voice-item-label">Every claim is backed by cited research data (Activated Insights, HRRP, Caring.com)</span>
      </div>
      <div class="voice-item" onclick="toggleVoice(this)">
        <div class="voice-check"></div>
        <span class="voice-item-label">Competitor names (Visiting Angels, Right at Home) confirmed with client before distributing</span>
      </div>
    </div>
    <div class="voice-notes">Copy stays in an evidence-forward, professional register appropriate for hospital-facing outreach. "Inspirational" in this context is realized through outcome framing (protecting patients, reducing financial risk) rather than emotional storytelling. HRRP penalty figures cited as "up to 3%" to reflect the federal policy accurately. No em dashes appear anywhere in the copy. Competitor names are used descriptively; confirm with Ralph before distributing to facilities. Primary proof gaps (readmission outcome data, caregiver retention data) are named explicitly rather than papered over.</div>
  </div>

</div><!-- end .page -->

<!-- LANDING PAGE + EMAIL REVIEW BLOCK -->
<div style="background:#111827;padding:48px 40px;max-width:1000px;margin:0 auto">

  <div style="font-size:9px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#6B7280;margin-bottom:20px">Landing Page &amp; Email Review</div>

  <div style="display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px">
    <a href="/briefs/home-helpers-2026-04-17/landing_page.html" target="_blank"
       style="display:inline-flex;align-items:center;gap:8px;background:#1a1a2e;border:1px solid #3b82f6;color:#60a5fa;padding:10px 18px;border-radius:6px;font-size:13px;font-family:monospace;text-decoration:none;white-space:nowrap">
      &#8599; Open Landing Page Preview
    </a>
    <div style="background:#1e3a5f;border-left:3px solid #3b82f6;padding:12px 16px;font-size:12px;color:#93c5fd;font-family:monospace">
      <strong style="color:#60a5fa">DEPLOY TARGET</strong><br>
      landingpages.emersonnorth.com/home-helpers/partner-program
    </div>
  </div>

  <!-- Calendar not connected banner -->
  <div style="background:#431407;border-left:3px solid #ea580c;padding:12px 16px;margin-bottom:16px;font-size:12px;color:#fdba74;font-family:monospace">
    <strong style="color:#fb923c">&#9888; CALENDAR NOT CONNECTED</strong><br>
    Google Calendar OAuth not set for Home Helpers. Booking CTA is a placeholder (#).<br>
    Ralph needs to connect Google Calendar at <a href="https://home-helpers.emersonnorth.com" style="color:#fb923c">home-helpers.emersonnorth.com</a> before the booking page can be generated.
  </div>

  <!-- Email template: Booking Confirmation -->
  <div style="font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7280;margin-bottom:10px">Email Template: Booking Confirmation</div>
  <div style="background:#1f2937;border:1px solid #374151;border-radius:4px 4px 0 0;padding:10px 16px;font-family:monospace;font-size:11px;color:#9ca3af;max-width:520px">
    <span style="color:#6b7280">Subject: </span>Your 15-Minute Partner Introduction is confirmed
  </div>
  <div style="border:1px solid #374151;border-top:none;border-radius:0 0 4px 4px;overflow:hidden;max-width:520px">
    <div style="background:#0a9413;padding:18px 24px">
      <span style="font-family:'Lora',Georgia,serif;color:#ffffff;font-size:15px;font-weight:600;letter-spacing:-0.01em">Home Helpers</span>
    </div>
    <div style="background:#f8fdf8;padding:24px 28px;font-family:'Inter',Arial,sans-serif;font-size:14px;color:#1a2e35;line-height:1.75">
      <p style="margin:0 0 12px">Hi <code style="background:#d4edda;color:#0a6e10;padding:1px 6px;border-radius:2px;font-size:12px">{{first_name}}</code>,</p>
      <p style="margin:0 0 18px">Your <strong>15-Minute Partner Introduction</strong> with Home Helpers is confirmed. Here are your details:</p>
      <div style="background:#fff;border:1px solid #b8dfc0;border-left:3px solid #0a9413;padding:14px 18px;margin:0 0 18px;font-size:13px;line-height:1.9">
        <div>Date: <code style="background:#d4edda;color:#0a6e10;padding:1px 6px;border-radius:2px;font-size:12px">{{appointment_date}}</code></div>
        <div>Time: <code style="background:#d4edda;color:#0a6e10;padding:1px 6px;border-radius:2px;font-size:12px">{{appointment_time}}</code></div>
        <div style="color:#7a9aa3;font-size:12px;margin-top:4px">Video link: <code style="background:#d4edda;color:#0a6e10;padding:1px 6px;border-radius:2px;font-size:12px">{{zoom_link}}</code> <em>(if applicable)</em></div>
      </div>
      <p style="margin:0 0 18px">We will walk through what the 2-Hour Response Guarantee includes, answer any questions, and see if a referral partnership makes sense for your facility.</p>
      <p style="margin:0 0 4px">Looking forward to speaking with you.</p>
      <p style="margin:16px 0 0;font-weight:600;color:#0a9413">Ralph Johnson<br><span style="font-weight:400;color:#3d5a63;font-size:13px">Home Helpers DuPage &amp; Will</span></p>
    </div>
    <div style="background:#073f0c;padding:12px 24px;font-family:'Inter',Arial,sans-serif;font-size:11px;color:#7eb87f">
      Home Helpers DuPage &amp; Will &nbsp;|&nbsp; Downers Grove, IL
    </div>
  </div>

  <!-- Stripe integration note -->
  <div style="background:#052e16;border-left:3px solid #16a34a;padding:12px 16px;margin-top:20px;font-size:12px;color:#86efac;font-family:monospace">
    <strong style="color:#4ade80">STRIPE INTEGRATION</strong><br>
    Not applicable. This is a free booking offer. Revenue comes via care placements, not a product purchase.<br>
    No Stripe product needed for this cycle.
  </div>

</div>

<!-- SIGN-OFF GATE -->
<div class="signoff-section" data-client="home-helpers" data-cycle="home-helpers-2026-04-17" id="signoff">
  <div class="signoff-inner">
    <div class="signoff-eyebrow">Sign-Off Gate</div>
    <h2>What's your call?</h2>
    <p class="signoff-sub">This positioning locks everything downstream. Content, campaigns, and distribution all run from this doc. Once approved, nothing changes without a new cycle.</p>

    <div class="signoff-product-box">
      <div class="spb-item">
        <div class="spb-label">Product</div>
        <div class="spb-val">The 2-Hour Response Guarantee</div>
      </div>
      <div class="spb-item">
        <div class="spb-label">Client</div>
        <div class="spb-val">Home Helpers</div>
      </div>
    </div>

    <div id="signoff-controls">
      <div class="signoff-actions">
        <button class="btn-approve" onclick="submitDecision('approved')">Approve &mdash; Positioning is locked. Start content engine.</button>
        <button class="btn-revise" onclick="openRevise()">Request Revisions</button>
        <button class="btn-hold" onclick="submitDecision('hold')">Hold &mdash; Park it.</button>
      </div>
      <div class="revise-area" id="revise-area">
        <textarea id="revise-text" placeholder="Describe what to change. Be specific about which section and what is wrong..."></textarea>
        <div class="scope-row">
          <span class="scope-label">Revise:</span>
          <label class="scope-opt"><input type="radio" name="rev-scope" value="positioning" checked> Positioning doc</label>
          <label class="scope-opt"><input type="radio" name="rev-scope" value="landing_page"> Landing page</label>
          <label class="scope-opt"><input type="radio" name="rev-scope" value="both"> Both</label>
        </div>
        <button class="btn-submit-feedback" onclick="submitRevision()">Submit Feedback &rarr;</button>
      </div>
    </div>

    <div class="signoff-result" id="signoff-result">
      <div class="sr-decision" id="sr-decision"></div>
      <div class="sr-note">Positioning agent has been notified.</div>
    </div>
  </div>
</div>

<div class="pos-preconfirm" id="pos-preconfirm">
  <div class="ppc-box">
    <div class="ppc-header" id="ppc-header">
      <div class="ppc-eye" id="ppc-eye">Confirm</div>
      <div class="ppc-product" id="ppc-product">The 2-Hour Response Guarantee</div>
    </div>
    <div class="ppc-body">
      <h3 id="ppc-title">Are you sure?</h3>
      <p id="ppc-desc">This action will be sent to the positioning agent.</p>
      <div class="ppc-actions">
        <button class="ppc-no" id="ppc-no">No, go back</button>
        <button class="ppc-yes" id="ppc-yes">Yes, confirm &rarr;</button>
      </div>
    </div>
  </div>
</div>

<script>
  function toggleVoice(el) { el.classList.toggle('checked'); }
  function openRevise() { document.getElementById('revise-area').classList.toggle('open'); }

  var pendingDecision = null, pendingFeedback = null, pendingScope = null;
  var COPY = {
    approved: { eye: 'APPROVE POSITIONING', title: 'Lock this in?', desc: 'Positioning will be locked. Content and campaign engines will be ready to run.', yes: 'Yes, approve \u2192' },
    revise:   { eye: 'REQUEST REVISIONS',   title: 'Send this feedback?', desc: 'The positioning agent will receive your notes and revise the doc. You\'ll get a new link when it\'s ready.', yes: 'Yes, send feedback \u2192' },
    hold:     { eye: 'PUT ON HOLD',         title: 'Park this for now?', desc: 'Nothing downstream will run until you come back and approve.', yes: 'Yes, put on hold \u2192' }
  };

  function requestDecision(decision, feedback, scope) {
    if (decision === 'revise' && (!feedback || !feedback.trim())) { document.getElementById('revise-text').focus(); return; }
    pendingDecision = decision; pendingFeedback = feedback || ''; pendingScope = scope || null;
    var c = COPY[decision];
    document.getElementById('ppc-header').className = 'ppc-header ' + decision;
    document.getElementById('ppc-yes').className = 'ppc-yes ' + decision;
    document.getElementById('ppc-eye').textContent = c.eye;
    document.getElementById('ppc-title').textContent = c.title;
    document.getElementById('ppc-desc').textContent = c.desc;
    document.getElementById('ppc-yes').textContent = c.yes;
    document.getElementById('pos-preconfirm').classList.add('visible');
  }

  document.getElementById('ppc-no').addEventListener('click', function() {
    document.getElementById('pos-preconfirm').classList.remove('visible');
    pendingDecision = pendingFeedback = pendingScope = null;
  });

  document.getElementById('ppc-yes').addEventListener('click', function() {
    document.getElementById('pos-preconfirm').classList.remove('visible');
    if (!pendingDecision) return;
    commitDecision(pendingDecision, pendingFeedback, pendingScope);
    pendingDecision = pendingFeedback = pendingScope = null;
  });

  document.getElementById('pos-preconfirm').addEventListener('click', function(e) {
    if (e.target === e.currentTarget) { e.currentTarget.classList.remove('visible'); pendingDecision = pendingFeedback = pendingScope = null; }
  });

  function submitDecision(decision) { requestDecision(decision, ''); }
  function submitRevision() {
    var text = document.getElementById('revise-text').value.trim();
    var scope = document.querySelector('input[name="rev-scope"]:checked').value;
    requestDecision('revise', text, scope);
  }

  function commitDecision(decision, feedback, scope) {
    var container = document.getElementById('signoff');
    var client = container.getAttribute('data-client');
    var cycle  = container.getAttribute('data-cycle');
    fetch('/api/approve', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ decision: decision, feedback: feedback, scope: scope || 'positioning', client: client, cycle: cycle })
    }).catch(function() {});
    document.getElementById('signoff-controls').style.display = 'none';
    var result = document.getElementById('signoff-result');
    var decEl  = document.getElementById('sr-decision');
    result.classList.add('visible');
    if (decision === 'approved') { decEl.textContent = '\u2713 Approved \u2014 positioning is locked.'; decEl.className = 'sr-decision approved'; }
    else if (decision === 'revise') { decEl.textContent = 'Feedback sent \u2014 you\'ll get a revised link via Telegram.'; decEl.className = 'sr-decision revise'; }
    else { decEl.textContent = 'On hold \u2014 nothing downstream will run.'; decEl.className = 'sr-decision hold'; }
  }
</script>

</body>
</html>"""

LANDING_PAGE_HTML = """<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>The 2-Hour Response Guarantee &mdash; Home Helpers DuPage &amp; Will</title>
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400;1,600&family=Montserrat:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
  <style>
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    :root {
      --primary: #0a9413;
      --primary-dark: #073f0c;
      --primary-light: #d4edda;
      --secondary: #000000;
      --white: #ffffff;
      --off-white: #f8fdf8;
      --gray: #6b7280;
      --light-gray: #f3f4f6;
      --border: #b8dfc0;
      --text: #111827;
      --text-2: #374151;
    }
    html { scroll-behavior: smooth; }
    body { font-family: 'Montserrat', sans-serif; color: var(--text); background: var(--white); font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; }

    /* NAV */
    .nav { position: sticky; top: 0; z-index: 100; background: var(--secondary); padding: 0 40px; height: 56px; display: flex; align-items: center; justify-content: space-between; }
    .nav-logo { font-family: 'Cormorant Garamond', serif; font-size: 18px; font-weight: 600; color: var(--white); letter-spacing: 0.02em; }
    .nav-cta { background: var(--primary); color: var(--white); font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; padding: 10px 20px; text-decoration: none; border-radius: 2px; white-space: nowrap; }
    .nav-cta:hover { background: #088b0f; }

    /* HERO */
    .hero { background: var(--secondary); padding: 80px 40px; }
    .hero-inner { max-width: 800px; margin: 0 auto; }
    .hero-pre { font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--primary); margin-bottom: 20px; }
    .hero h1 { font-family: 'Cormorant Garamond', serif; font-size: 52px; font-weight: 300; line-height: 1.15; color: var(--white); margin-bottom: 20px; }
    .hero h1 em { color: var(--primary); font-style: normal; }
    .hero-sub { font-size: 18px; color: rgba(255,255,255,0.7); line-height: 1.6; margin-bottom: 36px; max-width: 580px; }
    .hero-cta-wrap { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
    .btn-primary { background: var(--primary); color: var(--white); font-family: 'Montserrat', sans-serif; font-size: 14px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; padding: 18px 36px; text-decoration: none; border: none; cursor: pointer; border-radius: 2px; display: inline-block; }
    .btn-primary:hover { background: #088b0f; }
    .hero-reassurance { font-size: 12px; color: rgba(255,255,255,0.35); }

    /* PAIN STRIP */
    .pain-strip { background: var(--primary-dark); padding: 60px 40px; }
    .pain-strip-inner { max-width: 900px; margin: 0 auto; }
    .pain-strip-label { font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--primary); margin-bottom: 28px; }
    .pain-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; margin-bottom: 32px; }
    .pain-card { background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); padding: 28px 24px; }
    .pain-stat { font-family: 'Cormorant Garamond', serif; font-size: 48px; font-weight: 600; color: var(--primary); line-height: 1; margin-bottom: 8px; }
    .pain-label { font-size: 13px; color: rgba(255,255,255,0.6); line-height: 1.5; }
    .pain-agitate { font-size: 15px; color: rgba(255,255,255,0.55); line-height: 1.7; max-width: 640px; }

    /* SOLUTION FLOW */
    .solution { background: var(--white); padding: 80px 40px; }
    .solution-inner { max-width: 800px; margin: 0 auto; }
    .section-label { font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--primary); margin-bottom: 16px; }
    .section-h2 { font-family: 'Cormorant Garamond', serif; font-size: 38px; font-weight: 300; line-height: 1.2; margin-bottom: 40px; color: var(--text); }
    .step-list { display: flex; flex-direction: column; gap: 0; }
    .step { display: grid; grid-template-columns: 56px 1fr; gap: 0; border-left: 2px solid var(--border); margin-left: 20px; padding-bottom: 36px; position: relative; }
    .step:last-child { border-left: 2px solid transparent; padding-bottom: 0; }
    .step-num-wrap { display: flex; justify-content: center; margin-left: -30px; }
    .step-num { width: 40px; height: 40px; border-radius: 50%; background: var(--primary); color: var(--white); font-size: 16px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
    .step-body { padding: 8px 0 0 16px; }
    .step-title { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
    .step-text { font-size: 14px; color: var(--text-2); line-height: 1.7; }

    /* PROOF */
    .proof { background: var(--off-white); padding: 80px 40px; }
    .proof-inner { max-width: 900px; margin: 0 auto; }
    .proof-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 2px; margin-top: 40px; }
    .proof-card { background: var(--white); border: 1px solid var(--border); padding: 28px 24px; }
    .proof-n { font-family: 'Cormorant Garamond', serif; font-size: 48px; font-weight: 600; color: var(--primary); line-height: 1; margin-bottom: 6px; }
    .proof-label { font-size: 12px; font-weight: 600; color: var(--text-2); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 10px; }
    .proof-sub { font-size: 13px; color: var(--gray); line-height: 1.6; }
    .proof-quote { background: var(--primary-dark); border: 1px solid rgba(255,255,255,0.08); padding: 28px 32px; margin-top: 2px; }
    .proof-quote blockquote { font-family: 'Cormorant Garamond', serif; font-size: 22px; font-style: italic; font-weight: 300; color: rgba(255,255,255,0.85); line-height: 1.5; }
    .proof-quote cite { display: block; font-size: 11px; font-style: normal; color: rgba(255,255,255,0.35); margin-top: 12px; letter-spacing: 0.06em; text-transform: uppercase; }

    /* MATH / STAKES */
    .stakes { background: var(--secondary); padding: 80px 40px; }
    .stakes-inner { max-width: 800px; margin: 0 auto; text-align: center; }
    .stakes-sub { font-size: 15px; color: rgba(255,255,255,0.55); margin-bottom: 48px; line-height: 1.7; max-width: 540px; margin-left: auto; margin-right: auto; }
    .stakes-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; margin-bottom: 32px; }
    .stakes-cell { padding: 32px 16px; border: 1px solid rgba(255,255,255,0.08); }
    .stakes-n { font-family: 'Cormorant Garamond', serif; font-size: 52px; font-weight: 600; color: var(--primary); line-height: 1; margin-bottom: 8px; }
    .stakes-l { font-size: 11px; color: rgba(255,255,255,0.4); text-transform: uppercase; letter-spacing: 0.1em; }
    .stakes-math { font-size: 14px; color: rgba(255,255,255,0.5); line-height: 1.7; }
    .stakes-math strong { color: rgba(255,255,255,0.8); }

    /* OBJECTIONS */
    .objections { background: var(--white); padding: 80px 40px; }
    .obj-inner { max-width: 800px; margin: 0 auto; }
    .obj-list { display: flex; flex-direction: column; gap: 2px; margin-top: 40px; }
    .obj-item { border: 1px solid var(--border); padding: 24px 28px; }
    .obj-q { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-style: italic; font-weight: 300; color: var(--text); margin-bottom: 12px; line-height: 1.4; }
    .obj-a { font-size: 14px; color: var(--text-2); line-height: 1.7; }
    .guarantee { background: var(--primary-light); border: 1px solid var(--border); padding: 24px 28px; margin-top: 24px; }
    .guarantee-label { font-size: 10px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--primary); margin-bottom: 8px; }
    .guarantee-text { font-size: 15px; color: var(--text); line-height: 1.6; }

    /* FINAL CTA */
    .final-cta { background: var(--primary-dark); padding: 80px 40px; }
    .final-cta-inner { max-width: 640px; margin: 0 auto; text-align: center; }
    .final-cta h2 { font-family: 'Cormorant Garamond', serif; font-size: 42px; font-weight: 300; color: var(--white); line-height: 1.2; margin-bottom: 16px; }
    .final-cta-sub { font-size: 16px; color: rgba(255,255,255,0.6); line-height: 1.6; margin-bottom: 36px; }
    .final-cta .btn-primary { font-size: 15px; padding: 20px 44px; }
    .final-risk { font-size: 12px; color: rgba(255,255,255,0.3); margin-top: 16px; }

    /* FOOTER */
    footer { background: #000; padding: 32px 40px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
    .footer-brand { font-family: 'Cormorant Garamond', serif; font-size: 16px; color: rgba(255,255,255,0.5); }
    .footer-copy { font-size: 11px; color: rgba(255,255,255,0.25); }

    /* MOBILE */
    @media (max-width: 640px) {
      .nav { padding: 0 16px; }
      .hero { padding: 56px 20px; }
      .hero h1 { font-size: 34px; }
      .hero-sub { font-size: 16px; }
      .btn-primary { width: 100%; text-align: center; padding: 18px 24px; }
      .pain-strip { padding: 48px 20px; }
      .pain-grid { grid-template-columns: 1fr; }
      .solution { padding: 56px 20px; }
      .proof { padding: 56px 20px; }
      .proof-grid { grid-template-columns: 1fr; }
      .stakes { padding: 56px 20px; }
      .stakes-grid { grid-template-columns: 1fr; }
      .objections { padding: 56px 20px; }
      .final-cta { padding: 56px 20px; }
      .final-cta h2 { font-size: 30px; }
      .final-cta .btn-primary { width: 100%; }
      footer { padding: 24px 20px; }
      .section-h2 { font-size: 28px; }
    }
  </style>
</head>
<body>

<!-- UTM Attribution Capture -->
<script>
(function() {
  var params = new URLSearchParams(window.location.search);
  var utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content'];
  utmKeys.forEach(function(key) {
    var val = params.get(key);
    if (val) sessionStorage.setItem(key, val);
  });
  document.addEventListener('DOMContentLoaded', function() {
    document.querySelectorAll('form').forEach(function(form) {
      utmKeys.forEach(function(key) {
        var val = sessionStorage.getItem(key);
        if (val && !form.querySelector('input[name="' + key + '"]')) {
          var input = document.createElement('input');
          input.type = 'hidden'; input.name = key; input.value = val;
          form.appendChild(input);
        }
      });
    });
  });
})();
</script>

<!-- NAV -->
<nav class="nav">
  <div class="nav-logo">Home Helpers</div>
  <a href="#" class="nav-cta">Book a 15-Min Intro</a>
</nav>

<!-- HERO -->
<section class="hero">
  <div class="hero-inner">
    <div class="hero-pre">For Hospital Discharge Planners in DuPage &amp; Will County</div>
    <h1><em>128 families</em> say we show up.<br>A spot on your shortlist takes 15 minutes.</h1>
    <p class="hero-sub">The 2-Hour Response Guarantee is a formal referral partnership for discharge planners who are done playing voicemail roulette with home care agencies.</p>
    <div class="hero-cta-wrap">
      <a href="#" class="btn-primary">Book a 15-Minute Partner Introduction</a>
      <span class="hero-reassurance">No pitch deck. No commitment. 15 minutes.</span>
    </div>
  </div>
</section>

<!-- PAIN STRIP -->
<section class="pain-strip">
  <div class="pain-strip-inner">
    <div class="pain-strip-label">The problem every discharge planner knows</div>
    <div class="pain-grid">
      <div class="pain-card">
        <div class="pain-stat">#2</div>
        <div class="pain-label">Most common home care complaint: caregivers do not show up without warning (Activated Insights, 100,000+ clients)</div>
      </div>
      <div class="pain-card">
        <div class="pain-stat">1 in 5</div>
        <div class="pain-label">Medicare patients readmitted within 30 days, triggering HRRP financial penalties at the referring facility</div>
      </div>
      <div class="pain-card">
        <div class="pain-stat">275</div>
        <div class="pain-label">Home care agencies in DuPage County alone. No efficient way to evaluate which ones actually perform before referring.</div>
      </div>
    </div>
    <p class="pain-agitate">You have built a shortlist through hard experience. Every agency on it got there because you trusted them with a patient and they did not let you down. The 2-Hour Response Guarantee is how Home Helpers earns a spot on that list, before the next no-show forces the question.</p>
  </div>
</section>

<!-- SOLUTION FLOW -->
<section class="solution">
  <div class="solution-inner">
    <div class="section-label">How the partnership works</div>
    <h2 class="section-h2">Not a new service. A new channel into 18 years of proof.</h2>
    <div class="step-list">
      <div class="step">
        <div class="step-num-wrap"><div class="step-num">1</div></div>
        <div class="step-body">
          <div class="step-title">You call a dedicated line</div>
          <div class="step-text">No general office queue. You reach a named contact who knows your facility, your discharge paperwork requirements, and your typical patient profile.</div>
        </div>
      </div>
      <div class="step">
        <div class="step-num-wrap"><div class="step-num">2</div></div>
        <div class="step-body">
          <div class="step-title">We respond within 2 hours. Guaranteed.</div>
          <div class="step-text">Someone answers or returns your call within 2 hours. That is not a goal. That is the guarantee. If we miss it, you know immediately, and you decide whether we belong on your list.</div>
        </div>
      </div>
      <div class="step">
        <div class="step-num-wrap"><div class="step-num">3</div></div>
        <div class="step-body">
          <div class="step-title">Placement confirmed within 24 hours</div>
          <div class="step-text">We give you a specific answer for a specific patient before you leave for the day. Not a "we will see what we can do." A confirmation or an honest no, early enough to make another call.</div>
        </div>
      </div>
      <div class="step">
        <div class="step-num-wrap"><div class="step-num">4</div></div>
        <div class="step-body">
          <div class="step-title">30-day outcome report back to you</div>
          <div class="step-text">A month after placement, we send a brief outcome summary to the referring coordinator: placement held, patient stable, no readmission. That paper trail is your documentation that the referral was sound.</div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- PROOF -->
<section class="proof">
  <div class="proof-inner">
    <div class="section-label">The proof is already on the record</div>
    <h2 class="section-h2">18 years of performance. 128 families documented it.</h2>
    <div class="proof-grid">
      <div class="proof-card">
        <div class="proof-n">128</div>
        <div class="proof-label">Caring.com Reviews</div>
        <div class="proof-sub">Highest verified review volume of any independent home care agency in DuPage and Will County. 4.8 out of 5 stars.</div>
      </div>
      <div class="proof-card">
        <div class="proof-n">4.8</div>
        <div class="proof-label">Star Rating</div>
        <div class="proof-sub">Caring Stars Winner. Awarded annually based on sustained review volume and rating. Verifiable directly on Caring.com.</div>
      </div>
      <div class="proof-card">
        <div class="proof-n">18</div>
        <div class="proof-label">Years in DuPage &amp; Will</div>
        <div class="proof-sub">Continuous operation in the exact counties we serve. While 80% of new caregivers industry-wide quit within 100 days, ours stay.</div>
      </div>
    </div>
    <div class="proof-quote">
      <blockquote>"Very good and very professional...people come when they say."</blockquote>
      <cite>Caring.com review &mdash; Home Helpers DuPage &amp; Will</cite>
    </div>
  </div>
</section>

<!-- FINANCIAL STAKES -->
<section class="stakes">
  <div class="stakes-inner">
    <div class="section-label" style="color:var(--primary)">The math behind the shortlist</div>
    <h2 style="font-family:'Cormorant Garamond',serif;font-size:38px;font-weight:300;color:#fff;line-height:1.2;margin-bottom:16px">A reliable placement is financial protection, not a preference.</h2>
    <p class="stakes-sub">Under the CMS Hospital Readmissions Reduction Program, every avoidable readmission within 30 days carries real cost. Knowing which agencies actually show up is not a nice-to-have.</p>
    <div class="stakes-grid">
      <div class="stakes-cell">
        <div class="stakes-n">3%</div>
        <div class="stakes-l">Max Medicare payment penalty per HRRP violation</div>
      </div>
      <div class="stakes-cell">
        <div class="stakes-n">$0</div>
        <div class="stakes-l">Cost to add Home Helpers to your referral shortlist</div>
      </div>
      <div class="stakes-cell">
        <div class="stakes-n">15 min</div>
        <div class="stakes-l">Time to find out if we belong on your list</div>
      </div>
    </div>
    <p class="stakes-math">If a no-show leads to a readmission, the financial exposure to your facility is real. <strong>Adding a reliable agency to your shortlist takes 15 minutes and costs nothing.</strong> The risk of not acting is asymmetric.</p>
  </div>
</section>

<!-- OBJECTIONS -->
<section class="objections">
  <div class="obj-inner">
    <div class="section-label">Common questions</div>
    <h2 class="section-h2">What discharge planners ask us.</h2>
    <div class="obj-list">
      <div class="obj-item">
        <div class="obj-q">"We already have agencies we trust."</div>
        <div class="obj-a">Most coordinators do. We are not asking you to replace them. We are asking to be the agency you call when your first choice is not available. Most discharge planners find out whether we are reliable when their shortlist fails. We would rather show you before that happens. A 15-minute call costs nothing.</div>
      </div>
      <div class="obj-item">
        <div class="obj-q">"We don't know if you'll have coverage when we need it."</div>
        <div class="obj-a">That is exactly what the 24-hour placement commitment is for. If we cannot confirm placement within 24 hours, we tell you before you wait. You are not betting on our availability. You are calling with a specific patient and getting a specific answer.</div>
      </div>
      <div class="obj-item">
        <div class="obj-q">"Everyone promises they'll show up."</div>
        <div class="obj-a">We know. That is why we lead with reviews, not promises. 128 families documented their experience on Caring.com at 4.8 stars. They are not our marketing. They are your due diligence. If the 2-hour guarantee is not met, you will know quickly, and that tells you everything about whether we belong on your list.</div>
      </div>
      <div class="obj-item">
        <div class="obj-q">"We can only refer to vendors on our approved list."</div>
        <div class="obj-a">We can get on it. We can provide licensing documentation, liability insurance verification, background check protocols, and Caring.com credentialing in one packet. The process is typically faster than coordinators expect, and 128 reviews at 4.8 stars tends to accelerate approval.</div>
      </div>
    </div>
    <div class="guarantee">
      <div class="guarantee-label">Our commitment to you</div>
      <div class="guarantee-text">If we miss the 2-hour response window, we have already failed the guarantee. That information is yours immediately. A shortlist is only as good as the agencies on it, and you should know within your first interaction whether we meet your standard.</div>
    </div>
  </div>
</section>

<!-- FINAL CTA -->
<section class="final-cta">
  <div class="final-cta-inner">
    <h2>The proof is 18 years in the making.<br>The conversation takes 15 minutes.</h2>
    <p class="final-cta-sub">Book a partner introduction to see what Home Helpers' referral program includes and decide from there.</p>
    <a href="#" class="btn-primary">Book a 15-Minute Partner Introduction</a>
    <div class="final-risk">No pitch deck. No commitment. 15 minutes to find out if we belong on your shortlist.</div>
  </div>
</section>

<!-- FOOTER -->
<footer>
  <div class="footer-brand">Home Helpers DuPage &amp; Will</div>
  <div class="footer-copy">Serving DuPage &amp; Will County, IL &nbsp;&bull;&nbsp; &copy; 2026 Home Helpers. All rights reserved.</div>
</footer>

</body>
</html>"""

# Write the files
import os
out_dir = "/Users/bryce/FLSM/.tmp/briefs/home-helpers-2026-04-17"
os.makedirs(out_dir, exist_ok=True)

with open(os.path.join(out_dir, "positioning.html"), "w") as f:
    f.write(POSITIONING_HTML)
print("positioning.html written")

with open(os.path.join(out_dir, "landing_page.html"), "w") as f:
    f.write(LANDING_PAGE_HTML)
print("landing_page.html written")
