Every post you write is a little invitation to come closer and stay a while.

Place the below code in your header script area this delete this block.

<script>/* Word-by-word reading fade */
(function () {
  var START = 0.85;  // fading begins when the block's top hits 85% down the screen
  var END = 0.35;    // ...and wraps up around 35% down the screen
  var MIN = 0.18;    // starting opacity of each word
  var SPREAD = 3;    // how many words are mid-fade at once (higher = softer)

  var blocks = [];
  var ticking = false;
  var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

  // Wrap every word in a span while keeping bold, links, highlights, etc.
  function splitWords(el) {
    var walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null);
    var textNodes = [];
    while (walker.nextNode()) textNodes.push(walker.currentNode);

    textNodes.forEach(function (node) {
      if (!node.nodeValue.trim()) return;
      var frag = document.createDocumentFragment();
      node.nodeValue.split(/(\s+)/).forEach(function (part) {
        if (!part) return;
        if (/^\s+$/.test(part)) {
          frag.appendChild(document.createTextNode(part));
        } else {
          var span = document.createElement('span');
          span.className = 'cc-word';
          span.textContent = part;
          frag.appendChild(span);
        }
      });
      node.parentNode.replaceChild(frag, node);
    });

    return Array.prototype.slice.call(el.querySelectorAll('.cc-word'));
  }

  function updateBlock(b) {
    var rect = b.el.getBoundingClientRect();
    var vh = window.innerHeight;
    var startPx = vh * START;
    var range = vh * (START - END) + rect.height * 0.5; // taller text = longer fade
    var p = Math.min(1, Math.max(0, (startPx - rect.top) / range));

    if (p === b.lastP) return;
    b.lastP = p;

    var n = b.words.length;
    b.words.forEach(function (w, i) {
      var t = Math.min(1, Math.max(0, (p * (n + SPREAD) - i) / SPREAD));
      var o = (MIN + (1 - MIN) * t).toFixed(3);
      if (w._o !== o) {
        w.style.opacity = o;
        w._o = o;
      }
    });
  }

  function updateAll() {
    blocks.forEach(updateBlock);
    ticking = false;
  }

  function onScroll() {
    if (!ticking) {
      ticking = true;
      requestAnimationFrame(updateAll);
    }
  }

  function init() {
    if (reduce) return; // leave the text fully visible
    document.querySelectorAll('.cc-word-fade').forEach(function (el) {
      blocks.push({ el: el, words: splitWords(el), lastP: null });
    });
    if (!blocks.length) return;
    updateAll(); // set the correct state right away on load
    window.addEventListener('scroll', onScroll, { passive: true });
    window.addEventListener('resize', onScroll);
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }
})();</script>
Search
BPB – Checkboxes
  • BLOG POST BUILDERS (226)
    • – Highlighted Notes (33)
    • – Styled Lists (28)
    • – Call to Action (23)
    • – Blog Post Sections (17)
    • – Featured Products – Manual (14)
    • – Affiliate Product Promotions (13)
    • – Email Optins (13)
    • – Featured Blog Posts – Kadence Free (13)
    • – Testimonials/Reviews (11)
    • – Podcast Callouts (10)
    • – FAQs (9)
    • – Borders (7)
    • – Gallery (7)
    • – LTK Ready (6)
    • – Quotes (6)
    • – Tips (6)
    • – Author Box (5)
    • – Featured Blog Posts – Kadence Pro (5)
    • – Table of Contents (5)
    • – Youtube/Video (5)
    • – Image Captions (4)
    • – Sharing (4)
    • – Featured Products – WooCommerce (2)
    • – Pros and Cons (2)
    • – Tables (2)
    • – Search (1)
  • WEBSITE BUILDERS (111)
    • – Featured Sections (21)
    • – Movement (18)
    • – 3 Columns (11)
    • – Membership (10)
    • – About Section (9)
    • – Timelines (5)
    • – Marquee (4)
    • – Reviews (4)
    • – 4 columns (3)
    • – 6 Columns (3)
    • – Pricing Tables (3)
    • – Tabbed Blocks (3)
    • – Instagram Pages (2)
    • – Navigation (2)
  • PROBUILDER BLOCKS (96)
    • – Elements (51)
      • – – Sidebar Elements (15)
      • – – Archive Elements (10)
      • – – Footer Elements (8)
      • – – Archive Loop Item Elements (5)
      • – – Post Title Elements (5)
      • – – Mega Menu Elements (3)
      • – – 404 Page Elements (2)
      • – – Mobile Menu Elements (1)
      • – – Promo Elements (1)
    • – Pro Blocks (45)
      • – – Featured Posts (34)
      • – Hero Sections (23)
      • – – Image Overlay (5)
      • – – Modal Blocks (4)
      • – – Slider Blocks (3)
  • FULL POSTS (23)
    • – Roundup Posts (7)
    • – Listicle Posts (4)
    • – For Podcasters (3)
    • – For Faith Based Bloggers (2)
    • – For Food Bloggers (2)
    • – For Photographers (2)
    • – Interview Posts (1)
    • – Q and A Posts (1)
  • **NEW** (9)