﻿:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
/* === data-table styles === */
.data-wrap{max-width:1080px;margin:18px auto}
.control-row{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0}
.data-table{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#fff;box-shadow:var(--shadow)}
.data-table th,.data-table td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left}
.data-table th{background:var(--surface);font-weight:700}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#fff7ed;border:1px solid var(--border)}
// AMZ JS START
(function(){
  function todayISO(){ try { return new Date().toISOString().slice(0,10); } catch(e){ return """"; } }
  var dInput = document.getElementById('amzDate');
  if (dInput && !dInput.value) dInput.value = todayISO();

  var btn = document.getElementById('addAmazonSale');
  if (!btn) return;

  btn.addEventListener('click', function(){
    // Ensure ledgerRows exists with header
    if (typeof ledgerRows === 'undefined' || !Array.isArray(ledgerRows)) {
      window.ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }
    if (ledgerRows.length === 0) {
      ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }

    var d   = (document.getElementById('amzDate')   || {}).value || todayISO();
    var amt = (document.getElementById('amzAmount') || {}).value || "";
    var ord = (document.getElementById('amzOrder')  || {}).value || "";
    var note= (document.getElementById('amzNotes')  || {}).value || "";

    var notes = note || (ord ? ("Amazon order " + ord) : "Amazon sale");
    ledgerRows.push([d, "Sale", "Amazon", amt, notes]);

    // Fill table using existing helper
    if (typeof fillTable === 'function') {
      fillTable("ledgerTable", ledgerRows);
    } else {
      console.warn("fillTable not found — row added to ledgerRows but table not refreshed.");
    }
  });
})();
 // AMZ JS END
"

# Append the JS just before </body>
if (<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>


 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -match '(?is)</body>') {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>


 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>


 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)</body>', "<script>// AMZ JS START
(function(){
  function todayISO(){ try { return new Date().toISOString().slice(0,10); } catch(e){ return """"; } }
  var dInput = document.getElementById('amzDate');
  if (dInput && !dInput.value) dInput.value = todayISO();

  var btn = document.getElementById('addAmazonSale');
  if (!btn) return;

  btn.addEventListener('click', function(){
    // Ensure ledgerRows exists with header
    if (typeof ledgerRows === 'undefined' || !Array.isArray(ledgerRows)) {
      window.ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }
    if (ledgerRows.length === 0) {
      ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }

    var d   = (document.getElementById('amzDate')   || {}).value || todayISO();
    var amt = (document.getElementById('amzAmount') || {}).value || "";
    var ord = (document.getElementById('amzOrder')  || {}).value || "";
    var note= (document.getElementById('amzNotes')  || {}).value || "";

    var notes = note || (ord ? ("Amazon order " + ord) : "Amazon sale");
    ledgerRows.push([d, "Sale", "Amazon", amt, notes]);

    // Fill table using existing helper
    if (typeof fillTable === 'function') {
      fillTable("ledgerTable", ledgerRows);
    } else {
      console.warn("fillTable not found — row added to ledgerRows but table not refreshed.");
    }
  });
})();
 // AMZ JS END
"

# Append the JS just before </body>
if (<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -match '(?is)</body>') {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)</body>', "<script>// AMZ JS START
(function(){
  function todayISO(){ try { return new Date().toISOString().slice(0,10); } catch(e){ return """"; } }
  var dInput = document.getElementById('amzDate');
  if (dInput && !dInput.value) dInput.value = todayISO();

  var btn = document.getElementById('addAmazonSale');
  if (!btn) return;

  btn.addEventListener('click', function(){
    // Ensure ledgerRows exists with header
    if (typeof ledgerRows === 'undefined' || !Array.isArray(ledgerRows)) {
      window.ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }
    if (ledgerRows.length === 0) {
      ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }

    var d   = (document.getElementById('amzDate')   || {}).value || todayISO();
    var amt = (document.getElementById('amzAmount') || {}).value || "";
    var ord = (document.getElementById('amzOrder')  || {}).value || "";
    var note= (document.getElementById('amzNotes')  || {}).value || "";

    var notes = note || (ord ? ("Amazon order " + ord) : "Amazon sale");
    ledgerRows.push([d, "Sale", "Amazon", amt, notes]);

    // Fill table using existing helper
    if (typeof fillTable === 'function') {
      fillTable("ledgerTable", ledgerRows);
    } else {
      console.warn("fillTable not found — row added to ledgerRows but table not refreshed.");
    }
  });
})();
 // AMZ JS END
"

# Append the JS just before </body>
if (<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -match '(?is)</body>') {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)</body>', "<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
</body>", 1)
} else {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 += "
<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
"
}

# 7) Save and open
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
</body>", 1)
} else {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 += "
<script>// AMZ JS START
(function(){
  function todayISO(){ try { return new Date().toISOString().slice(0,10); } catch(e){ return """"; } }
  var dInput = document.getElementById('amzDate');
  if (dInput && !dInput.value) dInput.value = todayISO();

  var btn = document.getElementById('addAmazonSale');
  if (!btn) return;

  btn.addEventListener('click', function(){
    // Ensure ledgerRows exists with header
    if (typeof ledgerRows === 'undefined' || !Array.isArray(ledgerRows)) {
      window.ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }
    if (ledgerRows.length === 0) {
      ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }

    var d   = (document.getElementById('amzDate')   || {}).value || todayISO();
    var amt = (document.getElementById('amzAmount') || {}).value || "";
    var ord = (document.getElementById('amzOrder')  || {}).value || "";
    var note= (document.getElementById('amzNotes')  || {}).value || "";

    var notes = note || (ord ? ("Amazon order " + ord) : "Amazon sale");
    ledgerRows.push([d, "Sale", "Amazon", amt, notes]);

    // Fill table using existing helper
    if (typeof fillTable === 'function') {
      fillTable("ledgerTable", ledgerRows);
    } else {
      console.warn("fillTable not found — row added to ledgerRows but table not refreshed.");
    }
  });
})();
 // AMZ JS END
"

# Append the JS just before </body>
if (<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -match '(?is)</body>') {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)</body>', "<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
</body>", 1)
} else {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 += "
<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
"
}

# 7) Save and open
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
"
}

# 7) Save and open
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
</body>", 1)
} else {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>


 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 += "
<script>// AMZ JS START
(function(){
  function todayISO(){ try { return new Date().toISOString().slice(0,10); } catch(e){ return """"; } }
  var dInput = document.getElementById('amzDate');
  if (dInput && !dInput.value) dInput.value = todayISO();

  var btn = document.getElementById('addAmazonSale');
  if (!btn) return;

  btn.addEventListener('click', function(){
    // Ensure ledgerRows exists with header
    if (typeof ledgerRows === 'undefined' || !Array.isArray(ledgerRows)) {
      window.ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }
    if (ledgerRows.length === 0) {
      ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }

    var d   = (document.getElementById('amzDate')   || {}).value || todayISO();
    var amt = (document.getElementById('amzAmount') || {}).value || "";
    var ord = (document.getElementById('amzOrder')  || {}).value || "";
    var note= (document.getElementById('amzNotes')  || {}).value || "";

    var notes = note || (ord ? ("Amazon order " + ord) : "Amazon sale");
    ledgerRows.push([d, "Sale", "Amazon", amt, notes]);

    // Fill table using existing helper
    if (typeof fillTable === 'function') {
      fillTable("ledgerTable", ledgerRows);
    } else {
      console.warn("fillTable not found — row added to ledgerRows but table not refreshed.");
    }
  });
})();
 // AMZ JS END
"

# Append the JS just before </body>
if (<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -match '(?is)</body>') {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)</body>', "<script>// AMZ JS START
(function(){
  function todayISO(){ try { return new Date().toISOString().slice(0,10); } catch(e){ return """"; } }
  var dInput = document.getElementById('amzDate');
  if (dInput && !dInput.value) dInput.value = todayISO();

  var btn = document.getElementById('addAmazonSale');
  if (!btn) return;

  btn.addEventListener('click', function(){
    // Ensure ledgerRows exists with header
    if (typeof ledgerRows === 'undefined' || !Array.isArray(ledgerRows)) {
      window.ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }
    if (ledgerRows.length === 0) {
      ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }

    var d   = (document.getElementById('amzDate')   || {}).value || todayISO();
    var amt = (document.getElementById('amzAmount') || {}).value || "";
    var ord = (document.getElementById('amzOrder')  || {}).value || "";
    var note= (document.getElementById('amzNotes')  || {}).value || "";

    var notes = note || (ord ? ("Amazon order " + ord) : "Amazon sale");
    ledgerRows.push([d, "Sale", "Amazon", amt, notes]);

    // Fill table using existing helper
    if (typeof fillTable === 'function') {
      fillTable("ledgerTable", ledgerRows);
    } else {
      console.warn("fillTable not found — row added to ledgerRows but table not refreshed.");
    }
  });
})();
 // AMZ JS END
"

# Append the JS just before </body>
if (<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -match '(?is)</body>') {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)</body>', "<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
</body>", 1)
} else {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 += "
<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
"
}

# 7) Save and open
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
</body>", 1)
} else {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 += "
<script>// AMZ JS START
(function(){
  function todayISO(){ try { return new Date().toISOString().slice(0,10); } catch(e){ return """"; } }
  var dInput = document.getElementById('amzDate');
  if (dInput && !dInput.value) dInput.value = todayISO();

  var btn = document.getElementById('addAmazonSale');
  if (!btn) return;

  btn.addEventListener('click', function(){
    // Ensure ledgerRows exists with header
    if (typeof ledgerRows === 'undefined' || !Array.isArray(ledgerRows)) {
      window.ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }
    if (ledgerRows.length === 0) {
      ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
    }

    var d   = (document.getElementById('amzDate')   || {}).value || todayISO();
    var amt = (document.getElementById('amzAmount') || {}).value || "";
    var ord = (document.getElementById('amzOrder')  || {}).value || "";
    var note= (document.getElementById('amzNotes')  || {}).value || "";

    var notes = note || (ord ? ("Amazon order " + ord) : "Amazon sale");
    ledgerRows.push([d, "Sale", "Amazon", amt, notes]);

    // Fill table using existing helper
    if (typeof fillTable === 'function') {
      fillTable("ledgerTable", ledgerRows);
    } else {
      console.warn("fillTable not found — row added to ledgerRows but table not refreshed.");
    }
  });
})();
 // AMZ JS END
"

# Append the JS just before </body>
if (<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -match '(?is)</body>') {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)</body>', "<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
</body>", 1)
} else {
  <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 += "
<script>document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', (document.getElementById('addAmazonSale')?.addEventListener('click', ()=>{
  if (typeof ledgerRows==='undefined' || ledgerRows.length===0){
    ledgerRows = [["Date","Type","Name/Email","Amount","Notes"]];
  }
  const raw = (document.getElementById('amAmount')?.value || '0').replace(/[^0-9.]/g,'');
  const amt = parseFloat(raw);
  const amount = (isFinite(amt) && amt>0 ? amt.toFixed(2) : '0.00');
  const notes  = document.getElementById('amNotes')?.value || 'KDP';
  const today  = new Date().toISOString().slice(0,10);
  ledgerRows.push([today, "Sale", "Amazon", amount, notes]);
  fillTable('ledgerTable', ledgerRows);
});
"
# Insert just before the "downloadLedger" wiring so it lives near other ledger code
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -replace 'document\.getElementById\("downloadLedger"\)', ( + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: Amazon Sale quick-add (royalty + notes) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load ledger.html
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Build the Amazon quick-add panel (appears above "Add Entry")
 = @"
<h2 id='amz-title' style='margin-top:18px'>Amazon Sale (quick add)</h2>
<div class='control-row' id='amz-row'>
  <input id='amAmount' placeholder='Royalty USD (e.g. 3.45)'>
  <input id='amNotes'  placeholder='Notes (e.g., KDP paperback, ASIN)'>
  <button class='btn small' id='addAmazonSale'>Add Amazon sale</button>
</div> + "
" + 'document.getElementById("downloadLedger")')

# 6) Save & open ledger (cache-busted)
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'> <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
"
}

# 7) Save and open
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>
 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
"
}

# 7) Save and open
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger: add Quick "Amazon sale" tool (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force

# 2) Load current ledger page
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = Get-Content ".\ledger.html" -Raw

# 3) Remove any previous Amazon quick block to avoid duplicates
<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 = [regex]::Replace(<!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>

 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




, '(?is)<!-- AMZ QUICK START -->[\s\S]*?<!-- AMZ QUICK END -->', '')

# 4) UI block: Amazon Quick Add (goes under the existing "Add Entry" row)
 = @"
<!-- AMZ QUICK START -->
<h3 style=""margin-top:18px"">Quick: Amazon sale</h3>
<div class=""control-row"">
  <input id=""amzDate""   placeholder=""YYYY-MM-DD"">
  <input id=""amzAmount"" placeholder=""Amount"">
  <input id=""amzOrder""  placeholder=""Amazon Order ID (optional)"">
  <input id=""amzNotes""  placeholder=""Notes (optional)"" style=""flex:1"">
  <button class=""btn small"" id=""addAmazonSale"">Add Amazon Sale</button>
</div>
<!-- AMZ QUICK END --></script>
"
}

# 7) Save and open
Set-Content ".\ledger.html" <!doctype html>
<html lang='en'>
<head> <meta charset='utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title>Contact — From Brokenness to Hope</title> <meta name='description' content='Contact Minister Matthew Crayton — questions, speaking requests, or encouragement.' /> <link rel='icon' href='images/favicon.svg' type='image/svg+xml' /> <link rel='stylesheet' href='assets/css/styles.css?v=44' /> <script defer src='assets/js/main.js?v=44'></script>
</head>
<body> <a class='skip-link' href='#main'>Skip to content</a> <header class='site-header'> <div class='container header-inner'> <a class='logo' href='index.html' aria-label='From Brokenness to Hope home'> <img src='images/logo.svg' alt='' width='36' height='36' /> <span>From Brokenness to Hope</span> </a> <nav class='site-nav' id='siteNav' aria-label='Primary'> <ul> <li><a href='index.html'>Home</a></li> <li><a href='about.html'>About</a></li> <li><a href='books.html'>Books</a></li> <li><a href='blog.html'>Blog</a></li> <li><a href='podcast.html'>Podcast</a></li> <li><a href='speaker.html'>Speaker</a></li> <li><a href='contact.html' aria-current='page'>Contact</a></li> </ul> </nav> </div> </header>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
</div> <!-- Banner markup kept; you hid it via CSS --> <div class='title-banner' role='img' aria-label='Contact'><span>CONTACT</span></div> <main id='main' class='container'>


 <section aria-label='Contact form'> <div class='form-card' style='max-width:720px; margin-inline:auto'> <h1 style='margin:0 0.5rem'>Contact Us</h1> <p class='small muted'>Send a note below and your email app will open with the details filled in. Or email us directly at: <a href='mailto:hello@example.com'>hello@example.com</a>. </p> <form id='contactForm'> <div class='form-row'> <label for='name'>Name</label> <input id='name' name='name' autocomplete='name' required /> </div> <div class='form-row'> <label for='email'>Email</label> <input id='email' name='email' type='email' autocomplete='email' required /> </div> <div class='form-row'> <label for='subject'>Subject</label> <input id='subject' name='subject' placeholder='Speaking request, Question, Encouragement…' /> </div> <div class='form-row'> <label for='message'>Message</label> <textarea id='message' name='message' rows='6' required></textarea> </div> <button class='btn' type='submit'>Send</button> <p id='contactNote' class='small muted' role='status' aria-live='polite' style='margin-top:.5rem'></p> </form> </div> </section> <!-- DONATE (any amount) --> <section class="donate-box" id="donate-section" aria-labelledby="donate-title"> <h2 id="donate-title" style="margin:0 0.5rem">Support From Brokenness to Hope</h2> <p class="donate-why small"> We don’t run ads or paywalls. Your gift helps keep this site free, covers podcast hosting and basic production costs If this work encouraged you, thank you for helping us pass it on.
</p> <div class="donate-row"> <label for="donateAmount"><strong>Amount (USD):</strong></label> <input id="donateAmount" name="donateAmount" type="number" min="1" step="0.50" value="10.00" /> </div> <div id="paypal-donate-container"></div> <p class="donate-note small">Your support helps keep this ministry simple, practical, and available. Thank you.</p> </section> <!-- PayPal SDK + donate logic --> <script src="https://www.paypal.com/sdk/js?client-id=AcJv0wZ3NlveVBEwhYRLkJBO_D_p-kh7idUNgtlBHKOX0ppbGPAokEKhf8gu7hzPqrG2JOUt8pFQiBRH&currency=USD&intent=capture"></script> <script> (function(){ function getAmount(){ var v = (document.getElementById('donateAmount')||{}).value || '10.00'; var n = parseFloat(v); if (!isFinite(n) || n <= 0) n = 10.00; return n.toFixed(2); } paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'paypal' }, createOrder: function(data, actions){ return actions.order.create({ purchase_units: [{ amount: { value: getAmount(), currency_code: 'USD' }, description: 'Donation — From Brokenness to Hope' }], application_context: { shipping_preference: 'NO_SHIPPING' } }); }, onApprove: function(data, actions){ return actions.order.capture().then(function(details){ alert('Thank you, ' + (details.payer.name?.given_name || 'friend') + '! Your donation was received.'); }); }, onError: function(err){ console.error(err); alert('There was a problem processing the donation. Please try again.'); } }).render('#paypal-donate-container'); })(); </script> </main> <footer class='site-footer'> <div class='container footer-grid'> <div> <a class='logo' href='index.html'> <img src='images/logo.svg' alt='' width='24' height='24' /> <span>From Brokenness to Hope</span> </a> <p class='muted'>© <span id='year'></span> From Brokenness to Hope. All rights reserved.</p> </div> <nav aria-label='Footer'> <ul class='footer-links'> <li><a href='privacy.html'>Privacy Policy</a></li> <li><a href='terms.html'>Terms of Use</a></li> <li><a href='accessibility.html'>Accessibility</a></li> </ul> </nav> </div> </footer> <script> (function(){ const form = document.getElementById('contactForm'); const note = document.getElementById('contactNote'); const TO = 'hello@example.com'; if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); const d = new FormData(form); const name = d.get('name') || ''; const email = d.get('email') || ''; const subject = (d.get('subject') || 'Website contact').toString(); const message = (d.get('message') || '').toString(); const body = message + '\\n\\nFrom: ' + name + '\\nEmail: ' + email; const mailto = 'mailto:' + TO + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); window.location.href = mailto; if (note) { note.textContent = 'Opening your email app… If nothing happens, email ' + TO; } form.reset(); }); } })(); </script>
</body>
</html> 




 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE\data\ledger.csvC:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE\data\ledger.csv
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE\data\ledger.csv
# === Ledger upgrades: Totals + Edit/Delete (Ledger & Sponsors) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backup
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force
Copy-Item ".\assets\css\styles.css" ".\assets\css\styles.css.bak" -Force

# 2) Add tiny CSS for action buttons and badges (once)
.\assets\css\styles.css = ".\assets\css\styles.css"
:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 = Get-Content .\assets\css\styles.css -Raw
if (:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 -notmatch 'ledger-enhance'){
@"
/* ledger-enhance */
.data-table td.actions{ white-space: nowrap }
#ledgerTotals .badge strong{ font-weight:700 }
#sTotals .badge strong{ font-weight:700 }
/* LEDGER_ENHANCE_START */
(function(){

  // ---- helpers already on page: parseCSV, toCSV ----
  // Enhance: renderLedger with Actions + Totals
  function sumLedgerTotals(){
    var t = {Donation:0, Sale:0, Sponsorship:0, _all:0};
    if (!Array.isArray(window.ledgerRows) || window.ledgerRows.length<2) return t;
    for (var i=1;i<ledgerRows.length;i++){
      var r = ledgerRows[i] || [];
      var amt = parseFloat(r[3]||0);
      if (!isFinite(amt)) amt = 0;
      var typ = (r[1]||'').trim();
      if (!t.hasOwnProperty(typ)) t[typ] = 0;
      t[typ] += amt; t._all += amt;
    }
    return t;
  }

  window.renderLedger = function(){
    if (!Array.isArray(window.ledgerRows)){ window.ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]]; }
    var table = document.getElementById("ledgerTable");
    if (!table) return;

    var thead = table.querySelector("thead"), tbody = table.querySelector("tbody");
    thead.innerHTML = "<tr><th>Date</th><th>Type</th><th>Name/Email</th><th>Amount</th><th>Notes</th><th>Actions</th></tr>";
    tbody.innerHTML = "";

    for (var i=1;i<ledgerRows.length;i++){
      var r = ledgerRows[i] || [];
      var tr = document.createElement("tr");
      for (var c=0;c<5;c++){
        var td = document.createElement("td");
        td.textContent = r[c]||"";
        tr.appendChild(td);
      }
      var tdA = document.createElement("td");
      tdA.className = "actions";
      tdA.innerHTML = "<button class='btn small' data-idx='"+i+"' data-act='edit'>Edit</button> "+
                      "<button class='btn small ghost' data-idx='"+i+"' data-act='del'>Delete</button>";
      tr.appendChild(tdA);
      tbody.appendChild(tr);
    }

    // totals under table
    var t = sumLedgerTotals();
    var box = document.getElementById("ledgerTotals");
    if (!box){ box = document.createElement("div"); box.id="ledgerTotals"; table.parentElement.appendChild(box); }
    box.innerHTML =
      "<span class='badge'>Donations: $"+t.Donation.toFixed(2)+"</span> "+
      "<span class='badge'>Sales: $"+t.Sale.toFixed(2)+"</span> "+
      "<span class='badge'>Sponsorships: $"+t.Sponsorship.toFixed(2)+"</span> "+
      "<span class='badge'><strong>Total: $"+t._all.toFixed(2)+"</strong></span>";
  };

  // Delegated events for Edit/Delete on ledger table
  var ltab = document.getElementById("ledgerTable");
  if (ltab){
    ltab.addEventListener("click", function(e){
      var btn = e.target.closest("button"); if (!btn) return;
      var idx = parseInt(btn.getAttribute("data-idx")||"-1",10);
      var act = btn.getAttribute("data-act")||"";
      if (idx<1 || !Array.isArray(window.ledgerRows)) return;

      if (act==="del"){
        if (confirm("Delete this row?")){
          ledgerRows.splice(idx, 1);
          renderLedger();
        }
      } else if (act==="edit"){
        var r = ledgerRows[idx] || [];
        var d = prompt("Date (YYYY-MM-DD):", r[0]||""); if (d===null) return;
        var t = prompt("Type (Donation/Sale/Sponsorship):", r[1]||""); if (t===null) return;
        var n = prompt("Name/Email:", r[2]||""); if (n===null) return;
        var a = prompt("Amount:", r[3]||""); if (a===null) return;
        var notes = prompt("Notes:", r[4]||""); if (notes===null) return;
        ledgerRows[idx] = [d,t,n,a,notes];
        renderLedger();
      }
    });
  }

  // ---- Sponsors: render with Actions + total amount ----
  window.renderSponsors = function(){
    if (!Array.isArray(window.sponsorRows)){ window.sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]]; }
    var table = document.getElementById("sTable");
    if (!table) return;

    var thead = table.querySelector("thead"), tbody = table.querySelector("tbody");
    thead.innerHTML = "<tr><th>Name</th><th>Email</th><th>Level</th><th>Amount</th><th>Start</th><th>End</th><th>Notes</th><th>Actions</th></tr>";
    tbody.innerHTML = "";

    for (var i=1;i<sponsorRows.length;i++){
      var r = sponsorRows[i] || [];
      var tr = document.createElement("tr");
      for (var c=0;c<7;c++){
        var td = document.createElement("td");
        td.textContent = r[c]||"";
        tr.appendChild(td);
      }
      var tdA = document.createElement("td");
      tdA.className = "actions";
      tdA.innerHTML = "<button class='btn small' data-idx='"+i+"' data-act='edit-s'>Edit</button> "+
                      "<button class='btn small ghost' data-idx='"+i+"' data-act='del-s'>Delete</button>";
      tr.appendChild(tdA);
      tbody.appendChild(tr);
    }

    var tot = 0;
    for (var i=1;i<sponsorRows.length;i++){
      var v = parseFloat(sponsorRows[i][3]||0);
      if (isFinite(v)) tot += v;
    }
    var box = document.getElementById("sTotals");
    if (!box){ box = document.createElement("div"); box.id="sTotals"; table.parentElement.appendChild(box); }
    box.innerHTML = "<span class='badge'><strong>Sponsors total: $"+tot.toFixed(2)+"</strong></span>";
  };

  // Delegated events for Sponsors Edit/Delete
  var stab = document.getElementById("sTable");
  if (stab){
    stab.addEventListener("click", function(e){
      var btn = e.target.closest("button"); if (!btn) return;
      var idx = parseInt(btn.getAttribute("data-idx")||"-1",10);
      var act = btn.getAttribute("data-act")||"";
      if (idx<1 || !Array.isArray(window.sponsorRows)) return;

      if (act==="del-s"){
        if (confirm("Delete this sponsor row?")){
          sponsorRows.splice(idx, 1);
          renderSponsors();
        }
      } else if (act==="edit-s"){
        var r=sponsorRows[idx]||[];
        var name = prompt("Name:",  r[0]||""); if (name===null) return;
        var email= prompt("Email:", r[1]||""); if (email===null) return;
        var level= prompt("Level:", r[2]||""); if (level===null) return;
        var amt  = prompt("Amount:",r[3]||""); if (amt===null) return;
        var st   = prompt("Start YYYY-MM-DD:",r[4]||""); if (st===null) return;
        var en   = prompt("End YYYY-MM-DD:",  r[5]||""); if (en===null) return;
        var notes= prompt("Notes:", r[6]||""); if (notes===null) return;
        sponsorRows[idx] = [name,email,level,amt,st,en,notes];
        renderSponsors();
      }
    });
  }

  // If tables already loaded, render them on load
  if (Array.isArray(window.ledgerRows) && ledgerRows.length>0){ renderLedger(); }
  if (Array.isArray(window.sponsorRows) && sponsorRows.length>0){ renderSponsors(); }

})();
 /* LEDGER_ENHANCE_END */
"

if (<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); renderLedger(); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      renderLedger();
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); renderSponsors(); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      renderSponsors();
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
</body>
</html>


 -match '(?is)</body>') {
  <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); renderLedger(); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      renderLedger();
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); renderSponsors(); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      renderSponsors();
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
</body>
</html>


 = [regex]::Replace(<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); renderLedger(); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      renderLedger();
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); renderSponsors(); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      renderSponsors();
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
</body>
</html>


, '(?is)</body>', "<script></script>
</body>", 1)
} else {
  <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); renderLedger(); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      renderLedger();
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); renderSponsors(); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      renderSponsors();
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
</body>
</html>


 += "
<script></script>
"
}

# 7) Save & open the ledger with cache-busting
Set-Content ".\ledger.html" <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); renderLedger(); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      renderLedger();
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); renderSponsors(); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      renderSponsors();
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
</body>
</html>


 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
cd "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
638942133791059964=[DateTime]::Now.Ticks
Start-Process msedge ("file:///" + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964")
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE\data\sponsors.csv
Copy-Item "C:\Users\TERRY\Downloads\ledger.csv" ".\data\ledger.csv" -Force
Copy-Item "C:\Users\TERRY\Downloads\sponsors.csv" ".\data\sponsors.csv" -Force
Copy-Item ".\ledger.html.bak" ".\ledger.html" -Force
Copy-Item ".\assets\css\styles.css.bak" ".\assets\css\styles.css" -Force
# === Ledger: Filters + Monthly Totals + XLSX Export + Emails CSV (PowerShell only) ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backups
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force
Copy-Item ".\assets\css\styles.css" ".\assets\css\styles.css.bak" -Force

# 2) CSS enhancements (tables, filters, totals)
.\assets\css\styles.css = ".\assets\css\styles.css"
:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 = Get-Content .\assets\css\styles.css -Raw
if (:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 -notmatch 'ledger-pro-v2'){
@"
/* ledger-pro-v2 */
.filter-row{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}
.filter-row input,.filter-row select{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font:inherit}
.totals-row{margin:10px 0}
.monthly-box{margin:10px 0}
.monthly-table{width:100%;border-collapse:collapse;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow);border-radius:12px;overflow:hidden}
.monthly-table th,.monthly-table td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left}
.monthly-table th{background:var(--surface)}
.data-table td.actions{white-space:nowrap}
.badge strong{font-weight:700}
/* LEDGER_PRO_V2_START */
(function(){
  // state
  window.ledgerRows    = window.ledgerRows    || [];
  window.sponsorRows   = window.sponsorRows   || [];
  var filteredLedger   = null; // header + rows after filter

  // helpers
  function toNum(v){ var n=parseFloat((v||'').toString().trim()); return isFinite(n)?n:0; }
  function isHeaderRow(r){ return (r||[])[0]==='Date' && (r||[])[3]==='Amount'; }
  function parseDate(d){ if(!d) return null; var m=d.match(/^(\d{4})-(\d{2})-(\d{2})$/); if(!m) return null; return new Date(+m[1],+m[2]-1,+m[3]); }
  function formatMonth(d){ var y=d.getFullYear(), m=('0'+(d.getMonth()+1)).slice(-2); return y+'-'+m; }

  function getLedgerView(){
    // always return with header row at index 0
    if (filteredLedger && filteredLedger.length>0) return filteredLedger;
    return (Array.isArray(ledgerRows) && ledgerRows.length>0) ? ledgerRows : [["Date","Type","Name/Email","Amount","Notes"]];
  }

  // totals (based on current view)
  function sumLedger(trows){
    var t = {Donation:0, Sale:0, Sponsorship:0, _all:0};
    if (!Array.isArray(trows) || trows.length<2) return t;
    for (var i=1;i<trows.length;i++){
      var r=trows[i]||[];
      var amt=toNum(r[3]); var typ=(r[1]||'').trim();
      if (!t.hasOwnProperty(typ)) t[typ]=0;
      t[typ]+=amt; t._all+=amt;
    }
    return t;
  }

  function monthlyBreakdown(trows){
    var idx={}, order=[];
    if (!Array.isArray(trows) || trows.length<2) return [];
    for (var i=1;i<trows.length;i++){
      var r=trows[i]||[]; var dt=parseDate(r[0]); if(!dt) continue;
      var key=formatMonth(dt);
      if (!idx[key]){ idx[key]={Donation:0,Sale:0,Sponsorship:0,Total:0}; order.push(key); }
      var amt=toNum(r[3]); var typ=(r[1]||'').trim();
      if (!idx[key].hasOwnProperty(typ)) idx[key][typ]=0;
      idx[key][typ]+=amt; idx[key].Total+=amt;
    }
    return order.map(k=>[k, idx[k].Donation.toFixed(2), idx[k].Sale.toFixed(2), idx[k].Sponsorship.toFixed(2), idx[k].Total.toFixed(2)]);
  }

  // RENDER LEDGER with actions + totals + monthly table
  window.renderLedger = function(){
    var rows = getLedgerView();
    var table = document.getElementById('ledgerTable'); if(!table) return;
    var thead=table.querySelector('thead'), tbody=table.querySelector('tbody');
    thead.innerHTML = "<tr><th>Date</th><th>Type</th><th>Name/Email</th><th>Amount</th><th>Notes</th><th>Actions</th></tr>";
    tbody.innerHTML = "";

    for (var i=1;i<rows.length;i++){
      var r=rows[i]||[]; var tr=document.createElement('tr');
      for (var c=0;c<5;c++){ var td=document.createElement('td'); td.textContent=r[c]||''; tr.appendChild(td); }
      var tdA=document.createElement('td'); tdA.className='actions';
      tdA.innerHTML="<button class='btn small' data-idx='"+i+"' data-act='edit'>Edit</button> "+
                    "<button class='btn small ghost' data-idx='"+i+"' data-act='del'>Delete</button>";
      tr.appendChild(tdA); tbody.appendChild(tr);
    }

    // totals under table – on view
    var t = sumLedger(rows);
    var box = document.getElementById('ledgerTotals'); if(!box){ box=document.createElement('div'); box.id='ledgerTotals'; table.parentElement.appendChild(box); }
    box.innerHTML =
      "<span class='badge'>Donations: $"+t.Donation.toFixed(2)+"</span> "+
      "<span class='badge'>Sales: $"+t.Sale.toFixed(2)+"</span> "+
      "<span class='badge'>Sponsorships: $"+t.Sponsorship.toFixed(2)+"</span> "+
      "<span class='badge'><strong>Total: $"+t._all.toFixed(2)+"</strong></span>";

    // monthly table
    var m = monthlyBreakdown(rows);
    var mt = document.getElementById('ledgerMonthly'); if (!mt) return;
    var mthead=mt.querySelector('thead'), mtbody=mt.querySelector('tbody');
    mthead.innerHTML = "<tr><th>Month</th><th>Donations</th><th>Sales</th><th>Sponsorships</th><th>Total</th></tr>";
    mtbody.innerHTML = "";
    m.forEach(function(row){
      var tr=document.createElement('tr');
      row.forEach(function(cell){ var td=document.createElement('td'); td.textContent=cell; tr.appendChild(td); });
      mtbody.appendChild(tr);
    });
  };

  // Ledger Actions (edit/delete) mutate the SOURCE ledgerRows and then re-apply filters
  var ltab=document.getElementById('ledgerTable');
  if (ltab){
    ltab.addEventListener('click', function(e){
      var btn=e.target.closest('button'); if(!btn) return;
      var idx=parseInt(btn.getAttribute('data-idx')||'-1',10);
      var act=btn.getAttribute('data-act')||'';
      // map filtered index back to ledgerRows index
      var view = getLedgerView();
      if (idx<1 || !Array.isArray(view) || !Array.isArray(ledgerRows)) return;
      // find the row contents and locate it in ledgerRows by identity (fallback by string)
      var viewRow = view[idx];
      var sourceIdx = -1;
      // try same index (if no filter)
      if (view===ledgerRows){ sourceIdx=idx; }
      else {
        // find first row in ledgerRows that stringifies the same
        var needle = JSON.stringify(viewRow||[]);
        for (var i=1;i<ledgerRows.length;i++){
          if (JSON.stringify(ledgerRows[i]||[])===needle){ sourceIdx=i; break; }
        }
      }
      if (sourceIdx<1) return;

      if (act==='del'){
        if (confirm('Delete this row?')){ ledgerRows.splice(sourceIdx,1); applyFilters(); }
      } else if (act==='edit'){
        var r=ledgerRows[sourceIdx]||[];
        var d=prompt('Date (YYYY-MM-DD):', r[0]||''); if(d===null) return;
        var t=prompt('Type (Donation/Sale/Sponsorship):', r[1]||''); if(t===null) return;
        var n=prompt('Name/Email:', r[2]||''); if(n===null) return;
        var a=prompt('Amount:', r[3]||''); if(a===null) return;
        var notes=prompt('Notes:', r[4]||''); if(notes===null) return;
        ledgerRows[sourceIdx]=[d,t,n,a,notes];
        applyFilters();
      }
    });
  }

  // FILTERS
  function applyFilters(){
    var rows = (Array.isArray(ledgerRows) && ledgerRows.length>0) ? ledgerRows : [["Date","Type","Name/Email","Amount","Notes"]];
    if (rows.length<2){ filteredLedger = rows; return renderLedger(); }

    var df = document.getElementById('fDateFrom')?.value||'';
    var dt = document.getElementById('fDateTo')?.value||'';
    var tp = document.getElementById('fType')?.value||'';
    var q  = (document.getElementById('fSearch')?.value||'').toLowerCase();

    var from = parseDate(df), to = parseDate(dt);
    var out = [rows[0]]; // keep header
    for (var i=1;i<rows.length;i++){
      var r=rows[i]||[];
      var ok=true;
      var d=parseDate(r[0]); if (from && (!d || d<from)) ok=false;
      if (to && (!d || d>to)) ok=false;
      if (tp && (r[1]||'').trim()!==tp) ok=false;
      if (q){
        var blob=((r[2]||'')+" "+(r[4]||'')).toLowerCase();
        if (blob.indexOf(q)===-1) ok=false;
      }
      if (ok) out.push(r);
    }
    filteredLedger = out;
    renderLedger();
  }

  window.applyFilters = applyFilters;
  function clearFilters(){
    if (document.getElementById('fDateFrom')) document.getElementById('fDateFrom').value='';
    if (document.getElementById('fDateTo'))   document.getElementById('fDateTo').value='';
    if (document.getElementById('fType'))     document.getElementById('fType').value='';
    if (document.getElementById('fSearch'))   document.getElementById('fSearch').value='';
    filteredLedger = null; renderLedger();
  }

  var btnApply=document.getElementById('applyFilters');
  if (btnApply) btnApply.addEventListener('click', applyFilters);
  var btnClear=document.getElementById('clearFilters');
  if (btnClear) btnClear.addEventListener('click', clearFilters);

  // XLSX exports
  function exportXLSX(rows, filename){
    if (typeof XLSX==='undefined'){ alert('XLSX library not loaded.'); return; }
    if (!Array.isArray(rows) || rows.length===0){ alert('No data.'); return; }
    var ws = XLSX.utils.aoa_to_sheet(rows);
    var wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
    XLSX.writeFile(wb, filename);
  }
  var exL=document.getElementById('exportLedgerXLSX');
  if (exL) exL.addEventListener('click', function(){ exportXLSX(getLedgerView(), 'ledger.xlsx'); });
  var exS=document.getElementById('exportSponsorsXLSX');
  if (exS) exS.addEventListener('click', function(){ exportXLSX(window.sponsorRows||[], 'sponsors.xlsx'); });

  // Emails CSV (unique from ledger name/email + sponsors email)
  var exE=document.getElementById('exportEmailsCSV');
  if (exE) exE.addEventListener('click', function(){
    var set=new Set();
    function addEmail(s){ s=(s||'').trim(); var m=s.match(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g); if(m){ m.forEach(e=>set.add(e)); } }
    (getLedgerView().slice(1) || []).forEach(r=>addEmail(r[2]||''));  // Name/Email column
    ((window.sponsorRows||[]).slice(1) || []).forEach(r=>addEmail(r[1]||'')); // Sponsors Email column
    var emails=[...set]; if(emails.length===0){ alert('No emails found.'); return; }
    var blob=new Blob([emails.join("\r\n")],{type:"text/csv"});
    var a=document.createElement('a'); a.href=URL.createObjectURL(blob); a.download="emails.csv"; a.click();
  });

  // If CSV already loaded (from earlier), render now
  if (Array.isArray(window.ledgerRows)   && window.ledgerRows.length>0)   renderLedger();
  if (Array.isArray(window.sponsorRows)  && window.sponsorRows.length>0)  renderSponsors();
})();
 /* LEDGER_PRO_V2_END */
"

# Append JS just before </body>
if (<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
<div class='filter-row' id='ledgerFilters'>
  <input id='fDateFrom' placeholder='From YYYY-MM-DD'>
  <input id='fDateTo'   placeholder='To YYYY-MM-DD'>
  <select id='fType'><option value=''>All types</option><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
  <input id='fSearch' placeholder='Search name/email/notes'>
  <button class='btn small' id='applyFilters'>Apply Filter</button>
  <button class='btn small ghost' id='clearFilters'>Clear</button>
</div>
<div class='control-row'>
  <button class='btn small' id='exportLedgerXLSX'>Download Ledger XLSX</button>
  <button class='btn small ghost' id='exportSponsorsXLSX'>Download Sponsors XLSX</button>
  <button class='btn small' id='exportEmailsCSV'>Export Emails CSV</button>
</div>
<div class='totals-row' id='ledgerTotals'></div>
<div class='monthly-box'>
  <h3 class='small' style='margin:.25rem 0'>Monthly totals (filtered view)</h3>
  <table class='monthly-table' id='ledgerMonthly'><thead></thead><tbody></tbody></table>
</div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 -match '(?is)</body>') {
  <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
<div class='filter-row' id='ledgerFilters'>
  <input id='fDateFrom' placeholder='From YYYY-MM-DD'>
  <input id='fDateTo'   placeholder='To YYYY-MM-DD'>
  <select id='fType'><option value=''>All types</option><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
  <input id='fSearch' placeholder='Search name/email/notes'>
  <button class='btn small' id='applyFilters'>Apply Filter</button>
  <button class='btn small ghost' id='clearFilters'>Clear</button>
</div>
<div class='control-row'>
  <button class='btn small' id='exportLedgerXLSX'>Download Ledger XLSX</button>
  <button class='btn small ghost' id='exportSponsorsXLSX'>Download Sponsors XLSX</button>
  <button class='btn small' id='exportEmailsCSV'>Export Emails CSV</button>
</div>
<div class='totals-row' id='ledgerTotals'></div>
<div class='monthly-box'>
  <h3 class='small' style='margin:.25rem 0'>Monthly totals (filtered view)</h3>
  <table class='monthly-table' id='ledgerMonthly'><thead></thead><tbody></tbody></table>
</div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 = [regex]::Replace(<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
<div class='filter-row' id='ledgerFilters'>
  <input id='fDateFrom' placeholder='From YYYY-MM-DD'>
  <input id='fDateTo'   placeholder='To YYYY-MM-DD'>
  <select id='fType'><option value=''>All types</option><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
  <input id='fSearch' placeholder='Search name/email/notes'>
  <button class='btn small' id='applyFilters'>Apply Filter</button>
  <button class='btn small ghost' id='clearFilters'>Clear</button>
</div>
<div class='control-row'>
  <button class='btn small' id='exportLedgerXLSX'>Download Ledger XLSX</button>
  <button class='btn small ghost' id='exportSponsorsXLSX'>Download Sponsors XLSX</button>
  <button class='btn small' id='exportEmailsCSV'>Export Emails CSV</button>
</div>
<div class='totals-row' id='ledgerTotals'></div>
<div class='monthly-box'>
  <h3 class='small' style='margin:.25rem 0'>Monthly totals (filtered view)</h3>
  <table class='monthly-table' id='ledgerMonthly'><thead></thead><tbody></tbody></table>
</div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


, '(?is)</body>', "<script></script>
</body>", 1)
} else {
  <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
<div class='filter-row' id='ledgerFilters'>
  <input id='fDateFrom' placeholder='From YYYY-MM-DD'>
  <input id='fDateTo'   placeholder='To YYYY-MM-DD'>
  <select id='fType'><option value=''>All types</option><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
  <input id='fSearch' placeholder='Search name/email/notes'>
  <button class='btn small' id='applyFilters'>Apply Filter</button>
  <button class='btn small ghost' id='clearFilters'>Clear</button>
</div>
<div class='control-row'>
  <button class='btn small' id='exportLedgerXLSX'>Download Ledger XLSX</button>
  <button class='btn small ghost' id='exportSponsorsXLSX'>Download Sponsors XLSX</button>
  <button class='btn small' id='exportEmailsCSV'>Export Emails CSV</button>
</div>
<div class='totals-row' id='ledgerTotals'></div>
<div class='monthly-box'>
  <h3 class='small' style='margin:.25rem 0'>Monthly totals (filtered view)</h3>
  <table class='monthly-table' id='ledgerMonthly'><thead></thead><tbody></tbody></table>
</div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 += "
<script></script>
"
}

# 8) Save & open ledger (cache-busted). In Edge press Ctrl+F5.
Set-Content ".\ledger.html" <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
<div class='filter-row' id='ledgerFilters'>
  <input id='fDateFrom' placeholder='From YYYY-MM-DD'>
  <input id='fDateTo'   placeholder='To YYYY-MM-DD'>
  <select id='fType'><option value=''>All types</option><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
  <input id='fSearch' placeholder='Search name/email/notes'>
  <button class='btn small' id='applyFilters'>Apply Filter</button>
  <button class='btn small ghost' id='clearFilters'>Clear</button>
</div>
<div class='control-row'>
  <button class='btn small' id='exportLedgerXLSX'>Download Ledger XLSX</button>
  <button class='btn small ghost' id='exportSponsorsXLSX'>Download Sponsors XLSX</button>
  <button class='btn small' id='exportEmailsCSV'>Export Emails CSV</button>
</div>
<div class='totals-row' id='ledgerTotals'></div>
<div class='monthly-box'>
  <h3 class='small' style='margin:.25rem 0'>Monthly totals (filtered view)</h3>
  <table class='monthly-table' id='ledgerMonthly'><thead></thead><tbody></tbody></table>
</div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 -Encoding UTF8
638942133791059964=[DateTime]::Now.Ticks
file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888='file:///' + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964"
Start-Process msedge file:///C:/Users/TERRY/OneDrive/Desktop/FBTH_SITE_LIVE/sponsors.html?cb=638942130112301888
# === Ledger upgrades (filtered CSV + sponsor monthly totals) + set site email ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Back up files
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force
Copy-Item ".\assets\css\styles.css" ".\assets\css\styles.css.bak" -Force
Copy-Item ".\contact.html" ".\contact.html.bak" -Force
Copy-Item ".\sponsors.html" ".\sponsors.html.bak" -Force

# 2) CSS: be sure we have the pro styles (filters, monthly tables)
.\assets\css\styles.css = ".\assets\css\styles.css"
:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 = Get-Content .\assets\css\styles.css -Raw
if (:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 -notmatch 'ledger-pro-v2'){
@"
/* ledger-pro-v2 */
.filter-row{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}
.filter-row input,.filter-row select{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font:inherit}
.totals-row{margin:10px 0}
.monthly-box{margin:10px 0}
.monthly-table{width:100%;border-collapse:collapse;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow);border-radius:12px;overflow:hidden}
.monthly-table th,.monthly-table td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left}
.monthly-table th{background:var(--surface)}
.data-table td.actions{white-space:nowrap}
.badge strong{font-weight:700}
/* LEDGER_PRO_V3_START */
(function(){
  // If the 'Download Filtered CSV' button is missing, create it next to the XLSX buttons
  function ensureFilteredBtn(){
    var host = document.getElementById('exportEmailsCSV')?.parentElement || document.getElementById('ledgerFilters')?.nextElementSibling;
    if (!host) return;
    if (!document.getElementById('downloadLedgerFiltered')){
      var b=document.createElement('button');
      b.className='btn small'; b.id='downloadLedgerFiltered'; b.textContent='Download Filtered CSV';
      host.appendChild(b);
      b.addEventListener('click', function(){
        var rows = (window.filteredLedger && filteredLedger.length>0) ? filteredLedger : (window.ledgerRows||[]);
        if (!rows || rows.length===0){ alert('No data. Load ledger.csv first.'); return; }
        var csv = rows.map(r=>(r||[]).map(x=>{
          x = (x==null?'':String(x));
          return x.includes(',') ? '\"'+x.replace(/\"/g,'\"\"')+'\"' : x;
        }).join(',')).join('\r\n');
        var blob=new Blob([csv],{type:'text/csv'}); 
        var a=document.createElement('a'); a.href=URL.createObjectURL(blob); a.download='ledger_filtered.csv'; a.click();
      });
    }
  }

  // Utilities reused from earlier upgrade (create if missing)
  function parseDate(d){ if(!d) return null; var m=d.match(/^(\d{4})-(\d{2})-(\d{2})$/); if(!m) return null; return new Date(+m[1],+m[2]-1,+m[3]); }
  function formatMonth(d){ var y=d.getFullYear(), m=('0'+(d.getMonth()+1)).slice(-2); return y+'-'+m; }
  function toNum(v){ var n=parseFloat((v||'').toString().trim()); return isFinite(n)?n:0; }

  // Create sponsor-monthly table container if missing
  function ensureSponsorMonthly(){
    var sTable = document.getElementById('sTable');
    if (!sTable) return;
    if (!document.getElementById('sTotals')){
      var sbox=document.createElement('div'); sbox.id='sTotals'; sTable.parentElement.appendChild(sbox);
    }
    if (!document.getElementById('sMonthly')){
      var box=document.createElement('div'); box.className='monthly-box';
      box.innerHTML = "<h3 class='small' style='margin:.25rem 0'>Sponsors monthly totals (by Start date)</h3>"+
                      "<table class='monthly-table' id='sMonthly'><thead></thead><tbody></tbody></table>";
      sTable.parentElement.appendChild(box);
    }
  }

  // Monthly totals for sponsors (group by Start month)
  function sponsorMonthlyRows(rows){
    var idx={}, order=[];
    if (!Array.isArray(rows) || rows.length<2) return [];
    for (var i=1;i<rows.length;i++){
      var r=rows[i]||[];
      var dt=parseDate(r[4]||''); // Start in col 4
      if (!dt) continue;
      var key=formatMonth(dt);
      if (!idx[key]){ idx[key]=0; order.push(key); }
      idx[key]+=toNum(r[3]||0);   // Amount col 3
    }
    return order.map(k=>[k, idx[k].toFixed(2)]);
  }

  // Render sponsors with totals AND monthly table (reuses your existing renderer if present)
  window.renderSponsors = (function(prev){
    return function(){
      // If an earlier renderSponsors exists, call it first so table appears
      if (typeof prev==='function') prev();

      ensureSponsorMonthly();
      var tbl=document.getElementById('sTable'); if(!tbl) return;

      // total amount (already handled in previous version, but ensure in case)
      var tot=0, rows=(window.sponsorRows||[]);
      for (var i=1;i<rows.length;i++){ tot += toNum(rows[i][3]||0); }
      var sTot=document.getElementById('sTotals'); if (sTot){ sTot.innerHTML = "<span class='badge'><strong>Sponsors total: $"+tot.toFixed(2)+"</strong></span>"; }

      // monthly table
      var mRows = sponsorMonthlyRows(rows);
      var mt = document.getElementById('sMonthly'); if (!mt) return;
      var thead=mt.querySelector('thead'), tbody=mt.querySelector('tbody');
      thead.innerHTML="<tr><th>Month</th><th>Amount</th></tr>";
      tbody.innerHTML="";
      mRows.forEach(function(r){
        var tr=document.createElement('tr');
        var td1=document.createElement('td'); td1.textContent=r[0]; tr.appendChild(td1);
        var td2=document.createElement('td'); td2.textContent=r[1]; tr.appendChild(td2);
        tbody.appendChild(tr);
      });

      ensureFilteredBtn();
    };
  })(window.renderSponsors);

  // If ledger already loaded, show button now
  ensureFilteredBtn();
})();
 /* LEDGER_PRO_V3_END */
"

# Append JS just before </body>
if (<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 -match '(?is)</body>') {
  <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 = [regex]::Replace(<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


, '(?is)</body>', "<script></script>
</body>", 1)
} else {
  <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 += "
<script></script>
"
}

Set-Content ".\ledger.html" <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
  <title>Ledger — From Brokenness to Hope (private)</title>
  <link rel="icon" href="images/favicon.svg" type="image/svg+xml"/>
  <link rel="stylesheet" href="assets/css/styles.css?v=61"/><script defer src="assets/js/main.js?v=61"></script>
</head>
<body>
  <a class="skip-link" href="#main">Skip to content</a>
  <header class="site-header"><div class="container header-inner">
    <a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="36" height="36"/> <span>From Brokenness to Hope</span></a>
    <!-- intentionally no nav link for Ledger -->
  </div>
<div class='donate-top' aria-label='Donate or Sponsor'>
  <div class='wrap'>
    <span class='note'>We are a nonprofit ministry. If this helped you, please consider supporting the work.</span>
    <div class='control-row' style='margin:0'>
      <a class='btn small' href='contact.html#donate-section'>Donate</a>
      <a class='btn small ghost' href='sponsors.html'>Sponsor Us</a>
    </div>
  </div>
</div>
  <div class="title-banner" role="img" aria-label="Ledger"><span>LEDGER (PRIVATE)</span></div>

  <main id="main" class="container">
    <div class="data-wrap">
      <h1>Ledger</h1>
      <p class="small muted">Load your CSV, add entries, then <strong>Download CSV</strong> and replace <code>data\ledger.csv</code> on disk.</p>

      <div class="control-row">
        <input type="file" id="ledgerFile" accept=".csv">
        <button class="btn small" id="downloadLedger">Download CSV</button>
      </div>
      <table class="data-table" id="ledgerTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Entry</h2>
      <div class="control-row">
        <input id="ldDate" placeholder="YYYY-MM-DD">
        <select id="ldType"><option>Donation</option><option>Sale</option><option>Sponsorship</option></select>
        <input id="ldName" placeholder="Name/Email">
        <input id="ldAmount" placeholder="Amount">
        <input id="ldNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addLedger">Add</button>
      </div>
    </div>

    <div class="data-wrap" style="margin-top:24px">
      <h1>Sponsors</h1>
      <p class="small muted">Load your sponsor CSV, edit, then download and replace <code>data\sponsors.csv</code>.</p>

      <div class="control-row">
        <input type="file" id="sFile" accept=".csv">
        <button class="btn small" id="downloadSponsors">Download CSV</button>
      </div>
      <table class="data-table" id="sTable"><thead></thead><tbody></tbody></table>

      <h2 style="margin-top:18px">Add Sponsor</h2>
      <div class="control-row">
        <input id="spName" placeholder="Name">
        <input id="spEmail" placeholder="Email">
        <input id="spLevel" placeholder="Level">
        <input id="spAmount" placeholder="Amount">
        <input id="spStart" placeholder="Start YYYY-MM-DD">
        <input id="spEnd" placeholder="End YYYY-MM-DD">
        <input id="spNotes" placeholder="Notes" style="flex:1">
        <button class="btn small" id="addSponsor">Add</button>
      </div>
    </div>
  </main>

  <footer class="site-footer"><div class="container footer-grid">
    <div><a class="logo" href="index.html"><img src="images/logo.svg" alt="" width="24" height="24"/> <span>From Brokenness to Hope</span></a>
    <p class="muted">© <span id="year"></span> From Brokenness to Hope. All rights reserved.</p></div>
  </div></footer>

  <script>
    // CSV helpers
    function parseCSV(text){ return text.trim().split(/\r?\n/).map(r=>r.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)); }
    function toCSV(rows){ return rows.map(r=>r.map(x=>(""+x).includes(",")?`"${(""+x).replace(/"/g,'""')}"`:x).join(",")).join("\r\n"); }
    function fillTable(tableId, rows){
      const t = document.getElementById(tableId);
      const [thead,tbody] = [t.querySelector("thead"),t.querySelector("tbody")];
      thead.innerHTML = tbody.innerHTML = "";
      if(!rows.length) return;
      thead.innerHTML = "<tr>" + rows[0].map(h=>`<th>${h}</th>`).join("") + "</tr>";
      for(let i=1;i<rows.length;i++){
        const tr = document.createElement("tr");
        rows[i].forEach(cell=>{ const td=document.createElement("td"); td.textContent=cell; tr.appendChild(td); });
        tbody.appendChild(tr);
      }
    }

    // Ledger
    let ledgerRows = [];
    document.getElementById("ledgerFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ ledgerRows=parseCSV(r.result); fillTable("ledgerTable", ledgerRows); };
      r.readAsText(f);
    });
    document.getElementById("addLedger").addEventListener("click", ()=>{
      if(ledgerRows.length===0) ledgerRows=[["Date","Type","Name/Email","Amount","Notes"]];
      ledgerRows.push([
        document.getElementById("ldDate").value||"",
        document.getElementById("ldType").value||"",
        document.getElementById("ldName").value||"",
        document.getElementById("ldAmount").value||"",
        document.getElementById("ldNotes").value||""
      ]);
      fillTable("ledgerTable", ledgerRows);
    });
    document.getElementById("downloadLedger").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(ledgerRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="ledger.csv"; a.click();
    });

    // Sponsors
    let sponsorRows = [];
    document.getElementById("sFile").addEventListener("change", e=>{
      const f=e.target.files[0]; if(!f) return;
      const r=new FileReader();
      r.onload=()=>{ sponsorRows=parseCSV(r.result); fillTable("sTable", sponsorRows); };
      r.readAsText(f);
    });
    document.getElementById("addSponsor").addEventListener("click", ()=>{
      if(sponsorRows.length===0) sponsorRows=[["Name","Email","Level","Amount","Start","End","Notes"]];
      sponsorRows.push([
        document.getElementById("spName").value||"",
        document.getElementById("spEmail").value||"",
        document.getElementById("spLevel").value||"",
        document.getElementById("spAmount").value||"",
        document.getElementById("spStart").value||"",
        document.getElementById("spEnd").value||"",
        document.getElementById("spNotes").value||""
      ]);
      fillTable("sTable", sponsorRows);
    });
    document.getElementById("downloadSponsors").addEventListener("click", ()=>{
      const blob=new Blob([toCSV(sponsorRows)],{type:"text/csv"});
      const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="sponsors.csv"; a.click();
    });
  </script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
</body>
</html>


 -Encoding UTF8

# 6) Update site email to matt@broketohope.com (sponsors + contact)
 = "matt@broketohope.com"
# Sponsors page: replace mailto target, preserving subject
 = Get-Content ".\sponsors.html" -Raw
 =  -replace 'mailto:[^"''?]+(\?[^"''>]*)?', ('mailto:' +  + '')
Set-Content ".\sponsors.html"  -Encoding UTF8

# Contact page: replace any 'mailto:...' and visible placeholder text
 = Get-Content ".\contact.html" -Raw
 =  -replace 'mailto:[^"''>]+', ('mailto:' + )
 =  -replace '>(\s*)hello@example\.com(\s*)<', ('>' +  + '<')
Set-Content ".\contact.html"  -Encoding UTF8

# 7) Open ledger (cache-busted) — press Ctrl+F5 in Edge
638942133791059964=[DateTime]::Now.Ticks
Start-Process msedge ("file:///" + ((Resolve-Path .\ledger.html).Path).Replace('\','/') + "?cb=638942133791059964")

# Also open sponsors & contact so you can see the new email and bar link
Start-Process msedge ("file:///" + ((Resolve-Path .\sponsors.html).Path).Replace('\','/') + "?cb=638942133791059964")
Start-Process msedge ("file:///" + ((Resolve-Path .\contact.html).Path).Replace('\','/') + "?cb=638942133791059964")
# === Ledger PRO V4: Donations-only monthly totals + This-Month autofill + Duplicate row ===
C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE = "C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE"
Set-Location C:\Users\TERRY\OneDrive\Desktop\FBTH_SITE_LIVE

# 1) Backups
Copy-Item ".\ledger.html" ".\ledger.html.bak" -Force
Copy-Item ".\assets\css\styles.css" ".\assets\css\styles.css.bak" -Force

# 2) CSS – ensure styles for monthly tables and filters exist
.\assets\css\styles.css = ".\assets\css\styles.css"
:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 = Get-Content .\assets\css\styles.css -Raw
if (:root{--bg:#fff;--text:#111827;--muted:#6b7280;--brand:#d97706;--brand-600:#b45309;--border:#fde68a}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:Segoe UI,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:1080px;margin:auto;padding:24px}.small{font-size:.95rem}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;border-bottom:1px solid var(--border);background:#fff}
.header-inner{display:flex;gap:16px;align-items:center;justify-content:space-between}
.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:16px}
.logo{display:flex;gap:8px;align-items:center;font-weight:700}
.title-banner{
  width:100%;color:#fff;text-align:center;padding:28px 16px;border-bottom:1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(217,119,6,.25), rgba(180,83,9,.35)),
    url('../../images/banner.jpg');
  background-position:center,center; background-size:cover,cover; background-repeat:no-repeat,no-repeat;
}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:32px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr}}
/* Hide the title banner site-wide */
.title-banner{ display:none !important; height:0 !important; padding:0 !important; border:0 !important; background:none !important; }
/* === Overrides: smaller hero, badge stays tidy === */
.hero{
  grid-template-columns: 1fr .6fr;   /* narrower image column */
  align-items: start;
  padding-block: 18px;
}
.hero-art{
  display:flex; justify-content:center; align-items:center;
  max-width: 380px;                   /* keep the image area from getting too wide */
  justify-self: end;
}
.hero-art img{
  max-height: 24vh;                   /* ~24% of screen height — lower = smaller */
  max-width: 100%;
  width: auto;
  border-radius: 12px;
  object-fit: contain;                /* show whole image; use cover for tighter crop */
}
/* keep the overlay badge small (if present) */
.book-badge{ right:12px; bottom:12px; padding:6px 10px; }
.book-badge img{ height:36px; }
/* === BOOK SPOTLIGHT layout === */
.book-spotlight-grid{
  display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center;
}
.book-spotlight-cover img{
  display:block; max-width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
@media (max-width:900px){
  .book-spotlight-grid{ grid-template-columns:1fr; }
}

/* If a small overlay badge exists from earlier, hide it to avoid duplication */
.book-badge{ display:none !important; }
.store-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.store-links .btn{white-space:nowrap}
/* === BUY BOX (front page) === */
.book-buy{
  display:grid; grid-template-columns: 360px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
  border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow: var(--shadow); padding:16px;
}
.book-buy .cover img{
  display:block; width:100%; height:auto; border-radius:12px; box-shadow: var(--shadow);
}
.book-buy .copy h2{ margin:0 0 .5rem; }
.book-buy .price{ font-size:1.25rem; font-weight:700; margin:.25rem 0 .75rem; }
#buy-result{ display:none; margin-top:.75rem; color:#166534; font-weight:600; }
@media (max-width:900px){ .book-buy{ grid-template-columns:1fr; } }
/* front cleanup */ .book-badge{ display:none !important; }
/* Featured Book — slightly larger */
.card.card--book{ max-width: 440px !important; }            /* was ~360px */
.card--book .card-media{ max-height: 220px !important; }    /* was ~180px */
.card--book .card-media img{
  max-height: 200px !important;                             /* was ~160px */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Featured Book — larger v2 */
.card.card--book{ max-width: 560px !important; }          /* wider card (was 360/440) */
.card--book .card-media{ max-height: 280px !important; }  /* taller media box (was 180/220) */
.card--book .card-media img{
  max-height: 260px !important;                           /* bigger cover (was 160/200) */
  width: auto; object-fit: contain; margin: 12px auto;
}
/* Slightly larger title for emphasis */
.card--book h2{ font-size: 1.35rem !important; }
/* === ABOUT author card (match front-page book cover size) === */
.author-card{
  display:grid; grid-template-columns: 560px 1fr; gap:24px; align-items:center;
  margin: 18px 0 24px;
}
.author-card .photo{
  max-height: 280px; overflow:hidden; background:#fff7ed; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow); padding:12px; display:flex; justify-content:center; align-items:center;
}
.author-card .photo img{
  max-height: 260px;    /* match the front-page book cover image height */
  width:auto; object-fit:contain; border-radius:12px;
}
@media (max-width:900px){ .author-card{ grid-template-columns:1fr; } }
/* === PODCAST HERO layout === */
.pod-hero-grid{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px; }
.pod-hero-grid .shot, .pod-hero-grid .cover{
  border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow);
}
.pod-hero-grid img{ width:100%; height:auto; border-radius:12px; }
.episode-card{ border:1px solid var(--border); border-radius:16px; padding:16px; background:#fff; box-shadow:var(--shadow); }
.episode-meta{ color:var(--muted); margin:4px 0 10px; }
.yt-embed{ position:relative; width:100%; max-width:960px; aspect-ratio:16/9; border:1px solid var(--border); border-radius:16px; overflow:hidden; background:#000; box-shadow:var(--shadow); }
.yt-embed iframe{ width:100%; height:100%; border:0; }
@media (max-width:900px){ .pod-hero-grid{ grid-template-columns:1fr; } }
/* === past-episodes grid === */
.past-episodes{ margin-top:24px }
.past-episodes .ep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.past-episodes .ep{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.past-episodes .ep h3{ margin:.25rem 0 .25rem; font-size:1.05rem }
.past-episodes .meta{ color:var(--muted); margin:0 0 .5rem }
@media (max-width:900px){ .past-episodes .ep-grid{ grid-template-columns:1fr } }
/* === speaker-one layout === */
.speaker-one{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.speaker-one .photo{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow); }
.speaker-one .photo img{ width:100%; height:auto; border-radius:12px; }
@media (max-width:900px){ .speaker-one{ grid-template-columns:1fr; } }
/* === blog-list grid === */
.blog-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 24px }
.blog-card{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; box-shadow:var(--shadow) }
.blog-card img{ width:100%; height:auto; border-radius:12px; }
.blog-card h2{ margin:.5rem 0 .25rem; font-size:1.1rem }
.blog-card .meta{ color:var(--muted); margin:0 0 .5rem }
/* === single post === */
.post-hero{ display:grid; grid-template-columns: 420px 1fr; gap:24px; align-items:center; margin:18px 0 24px }
.post-hero .shot{ border:1px solid var(--border); border-radius:16px; padding:12px; background:#fff; box-shadow:var(--shadow) }
.post-hero img{ width:100%; height:auto; border-radius:12px }
.post-meta{ color:var(--muted); margin:.25rem 0 1rem }
.post-body{ max-width: 70ch }
@media (max-width:900px){ .blog-list{ grid-template-columns:1fr } .post-hero{ grid-template-columns:1fr } }
/* === Donate box === */
.donate-box{
  border:1px solid var(--border); border-radius:16px; background:#fff;
  box-shadow:var(--shadow); padding:16px; max-width:720px; margin:18px auto;
}
.donate-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:.25rem 0 1rem }
#donateAmount{ width:120px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font:inherit }
.donate-note{ color:var(--muted); margin:.5rem 0 0 }
/* donate "why" paragraph */
.donate-why{ margin:.25rem 0 .75rem; color:var(--muted); }
/* === donate bar (site-wide) === */
.donate-top{
  background: #fff7ed;
  border-bottom: 1px solid var(--border);
}
.donate-top .wrap{
  max-width:1080px; margin:0 auto; padding:8px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.donate-top .note{ color:var(--muted); font-size:.95rem }
 -notmatch 'ledger-pro-v2'){
@"
/* ledger-pro-v2 */
.filter-row{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}
.filter-row input,.filter-row select{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font:inherit}
.totals-row{margin:10px 0}
.monthly-box{margin:10px 0}
.monthly-table{width:100%;border-collapse:collapse;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow);border-radius:12px;overflow:hidden}
.monthly-table th,.monthly-table td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left}
.monthly-table th{background:var(--surface)}
.data-table td.actions{white-space:nowrap}
.badge strong{font-weight:700}
