<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="UTF-8"/>
  <meta name="theme-color" content="#FAFAFA"/>

  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  
  <!-- Google tag (gtag.js) - GA4 -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=G-81XMCY5KM9"></script>
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'G-81XMCY5KM9');
  </script>
  <title>12,000+ Inspirational Quotes That Land | Live Life Happy</title>
  <meta name="description" content="Whatever you are feeling right now, there is a quote here for it. 12,000+ real, verified quotes on love, healing, resilience and life. Curated since 2007."/>
  <link rel="canonical" href="https://livelifehappy.com/"/>

  <!-- Search engine verifications -->
  <meta name="google-site-verification" content="jFZZQeYxupV-1GVp_Zc686E9j65o8k1Qco6Y0AEE-bM" />
  <meta name="robots" content="index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1" />

  <!-- Open Graph -->
  <meta property="og:title" content="12,000+ Inspirational Quotes That Land | Live Life Happy"/>
  <meta property="og:description" content="Whatever you are feeling right now, there is a quote here for it. 12,000+ real, verified quotes on love, healing, resilience and life. Curated since 2007."/>
  <meta property="og:type" content="website"/>
  <meta property="og:url" content="https://livelifehappy.com/"/>
  <meta property="og:site_name" content="Live Life Happy"/>
  <meta property="og:locale" content="en_US"/>
  <meta property="og:image" content="https://livelifehappy.com/assets/quote-cards/default.png"/>
  <meta property="og:image:width" content="1080"/>
  <meta property="og:image:height" content="1080"/>

  <!-- Twitter -->
  <meta name="twitter:card" content="summary_large_image"/>
  <meta name="twitter:title" content="Inspirational Quotes About Life, Love &amp; Happiness | Live Life Happy"/>
  <meta name="twitter:description" content="Whatever you are feeling right now, there is a quote here for it. 12,000+ real, verified quotes on love, healing, resilience and life. Curated since 2007."/>
  <meta name="twitter:image" content="https://livelifehappy.com/assets/quote-cards/default.png"/>

  <!-- Schema.org — sitewide WebSite + Organization (on every page) -->
  <script type="application/ld+json">
  [
    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "@id": "https://livelifehappy.com/#website",
      "name": "Live Life Happy",
      "url": "https://livelifehappy.com",
      "description": "12,000+ inspirational quotes on happiness, self-love, resilience, mindfulness, and life. Curated since 2007.",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://livelifehappy.com/quotes/?q={search_term_string}",
        "query-input": "required name=search_term_string"
      }
    },
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "name": "Live Life Happy",
      "url": "https://livelifehappy.com",
      "founder": {
        "@type": "Person",
        "name": "Robert Tew"
      },
      "foundingDate": "2007",
      "sameAs": [
        "https://x.com/DeepLifeQuotes",
        "https://www.facebook.com/DeepLifeQuotes/",
        "https://www.instagram.com/deeplifequotes/",
        "https://www.pinterest.com/deeplifequotes/",
        "https://www.tumblr.com/deeplifequotes"
      ]
    }
  ]
  </script>

  <!-- Page-level schema: CollectionPage only.
       The ItemList was removed because the visible quotes are rotated daily by JS,
       which would create a schema-content mismatch (Google penalizes this).
       The featured quotes on the page each link to their own page where individual
       Quotation schema is emitted at /quotes/<slug>/. -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "CollectionPage",
    "name": "Live Life Happy — Daily Inspirational Quotes",
    "url": "https://livelifehappy.com/",
    "description": "A quote for whatever you are feeling — daily inspirational quotes on self-love, resilience, happiness, healing and life.",
    "isPartOf": { "@id": "https://livelifehappy.com/#website" },
    "about": [
      { "@type": "Thing", "name": "Inspirational quotes" },
      { "@type": "Thing", "name": "Self-improvement" },
      { "@type": "Thing", "name": "Mindfulness" }
    ]
  }
  </script>

  <!-- Resource hints -->
  <link rel="dns-prefetch" href="https://www.google-analytics.com"/>

  <!-- Preload the two fonts that appear above the fold first.
       crossorigin is required for font preloads even on same-origin. -->
  <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/fraunces-italic-latin.woff2" crossorigin/>
  <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/inter-latin.woff2" crossorigin/>

  <link rel="preload" as="style" href="/assets/css/main.min.css?v=38"/>
  <link rel="stylesheet" href="/assets/css/main.min.css?v=38"/>

  <link rel="manifest" href="/manifest.json"/>
  <link rel="alternate" type="application/rss+xml" title="Live Life Happy Stories" href="/rss.xml"/>
  <link rel="author" href="/humans.txt"/>
  <link rel="icon" type="image/svg+xml" href="/favicon.svg"/>
  <link rel="icon" type="image/x-icon" href="/favicon.ico"/>
  <link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16.png"/>
  <link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32.png"/>
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/>
  <script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What kind of quotes can I find on Live Life Happy?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Live Life Happy has over 10,000 curated inspirational quotes across 18 topics: life, self-love, happiness, healing, resilience, growth, wisdom, gratitude, mindfulness, faith, family, relationships, love, and success. The collection has been curated since 2007 by Robert Tew."
      }
    },
    {
      "@type": "Question",
      "name": "Who runs Live Life Happy?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Live Life Happy was founded in 2007 by Robert Tew, known online as DeepLifeQuotes. Robert has over 2 million followers across social media platforms and has been curating inspirational content for nearly two decades."
      }
    },
    {
      "@type": "Question",
      "name": "What are the most popular inspirational quotes?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Some of the most popular inspirational quotes on the site include quotes about self-love, resilience, and finding happiness. Favorites include: 'Your value does not decrease based on someone's inability to see your worth.' and 'The strongest people are not those who show strength in front of us but those who win battles we know nothing about.'"
      }
    },
    {
      "@type": "Question",
      "name": "Does Live Life Happy have short inspirational quotes?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. We have a dedicated collection of short inspirational quotes — one-liners and two-sentence quotes that are perfect for saving to your phone, using as a caption, or sending to someone who needs a lift. Visit our short inspirational quotes article for the 100 best ones."
      }
    }
  ]
}
</script>
  <!-- LLH critical CSS overrides to prevent CLS. Idempotent marker: llh-critical-css -->
  <!-- Collapse unfilled AdSense units so empty ad slots don't leave blank gaps (Google-documented method) -->
  <style>
    ins.adsbygoogle[data-ad-status="unfilled"]{display:none!important}
    .ad-slot:has(ins.adsbygoogle[data-ad-status="unfilled"]){display:none}
    /* also collapse slots Google never assigns a status to (blocked/no response) */
    .ad-slot.ad-empty{display:none!important}
    .google-auto-placed:has(> ins[data-ad-status="unfilled"]){display:none}
  </style>
  <!-- Homepage typography + rhythm v2 (2026-08-03): readable upright hero, consistent with section titles; more air between text sections. Marker: llh-home-type-v2 -->
  <style id="llh-home-type-v2">
    .home-h1{font-style:normal;font-weight:400;font-size:clamp(26px,3.6vw,40px);line-height:1.22;letter-spacing:-0.02em;margin:0 0 16px}
    .home-tagline{font-size:clamp(14px,1.5vw,16px);line-height:1.7;color:var(--ink2)}
    .home-intro{padding:72px 24px 48px}
    .horo-home{padding:48px 0 20px}
    .horo-home-sub{margin:0 auto 28px!important}
    .horo-home-inner .sec-title{margin:0 auto 14px!important}
    .mood-section{padding-top:72px}
    #free-tools{padding-top:72px}
    /* center the horoscope form input text to match its centered labels */
    [data-horoscope] .horo-input{text-align:center}
    [data-horoscope] .horo-input::placeholder{text-align:center}
    @media (max-width:600px){
      .home-intro{padding:44px 20px 32px}
      .home-h1{font-size:24px}
      .horo-home{padding:32px 0 16px}
      .mood-section,#free-tools{padding-top:52px}
    }
  </style>
  <!-- Google AdSense -->
  <link rel="preconnect" href="https://pagead2.googlesyndication.com" crossorigin/>
  <link rel="dns-prefetch" href="https://googleads.g.doubleclick.net"/>
  <link rel="dns-prefetch" href="https://tpc.googlesyndication.com"/>
  <script id="llh-ads-defer">
/* llh-ads-defer v1 — AdSense off the critical path. See _docs/generator/defer_ads.py */
(function(){var d=0;function go(){if(d)return;d=1;
var s=document.createElement('script');s.async=true;s.crossOrigin='anonymous';
s.src='https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4868281265926059';
document.head.appendChild(s);}
var o={passive:true,once:true};
['scroll','touchstart','pointerdown','keydown'].forEach(function(e){addEventListener(e,go,o);});
if(document.readyState==='complete')setTimeout(go,2500);
else addEventListener('load',function(){setTimeout(go,2500);},o);})();
</script>
</head>
<body>
  <a class="skip-link" href="#main-content">Skip to content</a>

  <header class="site-header" id="siteHeader">
  <div class="header-inner">
    <a href="/" class="logo" id="llhLogo">Live Life Happy</a>

    <nav class="desk-nav" aria-label="Main navigation">
      <a href="/horoscope/">Horoscope</a>
      <a href="/categories/">Categories</a>
      <a href="/quotes/topics/">Topics</a>
      <a href="/quotes/">All Quotes</a>
      <a href="/authors/">Authors</a>
      <a href="/articles/">Stories</a>
      <a href="/tools/quote-maker/">Quote Maker</a>
      <a href="/quiz/">Quiz</a>
    </nav>

    <div class="header-right">
      <button class="ib" aria-label="Search" onclick="openSearch()">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
      </button>
      <button class="ib ham" id="hamBtn" aria-label="Open menu" aria-expanded="false" onclick="toggleDrawer()">
        <span></span><span></span><span></span>
      </button>
    </div>
  </div>
</header>

<div class="drawer" id="drawer" aria-hidden="true">
  <a href="/horoscope/" onclick="toggleDrawer()">Daily Horoscope</a>
  <a href="/categories/" onclick="toggleDrawer()">Categories</a>
  <a href="/quotes/topics/" onclick="toggleDrawer()">Topics</a>
  <a href="/quotes/" onclick="toggleDrawer()">All Quotes</a>
  <a href="/authors/" onclick="toggleDrawer()">Authors</a>
  <a href="/articles/" onclick="toggleDrawer()">Stories</a>
  <a href="/tools/quote-maker/" onclick="toggleDrawer()">Quote Maker — Free</a>
  <a href="/quote-of-the-day/" onclick="toggleDrawer()">Quote of the Day</a>
  <a href="/quiz/" onclick="toggleDrawer()">Quote Quiz</a>
  <a href="/about/" onclick="toggleDrawer()">About</a>
</div>

  <main id="main-content">
    <!-- Right sidebar ad (desktop only, >=1400px) -->

<!-- ── V3 "STUDIO" HERO (2026-08-05): split hero + mood search + Start Somewhere index.
     Replaces: home-intro, quote-maker promo, horoscope home section, mood section header, featured-quote carousel.
     Marker: llh-home-v3 ── -->
<section class="v3-hero" aria-labelledby="heroTitle">
  <div class="v3-hero-l">
    <p class="v3-kicker">Curated since 2007</p>
    <h1 class="v3-h1" id="heroTitle">Words that <em>find you</em><br/>right on time.</h1>
    <p class="v3-sub">Heartbroken, hopeful, exhausted, in love, starting over. Whatever you&#8217;re carrying today, there are words here that get it. 12,000+ of them, every one real and verified. Search your feeling and see.</p>
    <div class="v3-search">
      <input
        type="text"
        id="moodInput"
        placeholder="How are you feeling? &nbsp;sad &middot; grateful &middot; lost&hellip;"
        autocomplete="off"
        aria-label="How are you feeling?"
        maxlength="60"
      />
      <button onclick="runMoodSearch()" aria-label="Search quotes by feeling">Search</button>
    </div>
    <div class="v3-chips" aria-label="Quick mood options">
      <button class="mood-chip" onclick="setMood(this,'sad')">Sad</button>
      <button class="mood-chip" onclick="setMood(this,'lonely')">Lonely</button>
      <button class="mood-chip" onclick="setMood(this,'anxious')">Anxious</button>
      <button class="mood-chip" onclick="setMood(this,'heartbroken')">Heartbroken</button>
      <button class="mood-chip" onclick="setMood(this,'lost')">Lost</button>
      <button class="mood-chip" onclick="setMood(this,'tired')">Tired</button>
      <button class="mood-chip" onclick="setMood(this,'struggling')">Struggling</button>
      <button class="mood-chip" onclick="setMood(this,'motivated')">Motivated</button>
      <button class="mood-chip" onclick="setMood(this,'grateful')">Grateful</button>
      <button class="mood-chip" onclick="setMood(this,'happy')">Happy</button>
      <button class="mood-chip" onclick="setMood(this,'peaceful')">Peaceful</button>
      <button class="mood-chip" onclick="setMood(this,'inspired')">Inspired</button>
    </div>
    <div class="v3-quick">
      <a href="/quote-of-the-day/">Today&#8217;s quote</a>
      <a href="/horoscope/">Your horoscope</a>
      <a href="/categories/">Browse categories</a>
    </div>
  </div>
  <div class="v3-hero-r">
    <span class="v3-cap">The Quote Maker</span>
    <div class="v3-poster" aria-hidden="true">
      <span class="v3-mk">&#8220;</span>
      <blockquote>Sometimes even to live is an act of courage.</blockquote>
      <p class="v3-pa">&mdash; Seneca</p>
      <p class="v3-pc">L I V E L I F E H A P P Y . C O M</p>
    </div>
    <span class="v3-poster2" aria-hidden="true">&#8220;Choose joy.&#8221;</span>
    <a class="v3-cta" href="/tools/quote-maker/">Make yours, free, no watermark &rarr;</a>
  </div>
</section>

<!-- mood search results (populated by runMoodSearch; kept ids for main JS) -->
<section class="mood-section v3-results" id="moodSection">
  <div class="wrap">
    <div id="moodResults" class="mood-results" aria-live="polite" hidden></div>
    <div id="moodEmpty" class="mood-empty" hidden>
      <p>No quotes found for that feeling. Try a different word, or <a href="/quotes/">browse all quotes</a>.</p>
    </div>
    <div id="moodLoading" class="mood-loading" hidden>
      <span>Finding the right words...</span>
    </div>
  </div>
</section>

<!-- ── START SOMEWHERE index ── -->
<section class="v3-index" aria-label="Start somewhere">
  <div class="v3-index-head"><h2>Start somewhere</h2><span id="v3Date"></span></div>
  <a class="v3-row" href="/quote-of-the-day/">
    <span class="v3-no">01</span>
    <span class="v3-tcell"><h3>Quote of the Day</h3></span>
    <p>One quote, picked for today, waiting when you open the page. Nothing to scroll, nothing asking for your attention afterwards. Some mornings that is the whole push you need.</p>
    <span class="v3-go">Read &rarr;</span>
  </a>
  <a class="v3-row v3-feature" href="/tools/quote-maker/">
    <span class="v3-no">02</span>
    <span class="v3-tcell"><span class="v3-kick">Free &middot; No sign-up</span><h3>Quote Maker</h3></span>
    <p>You already have the words. Making them look like something you would be happy to post is the part that stops you. Type, pick a style, download. 166 styles, 12 fonts, your own photo, no watermark and no account, ever.</p>
    <span class="v3-go">Make one &rarr;</span>
  </a>
  <a class="v3-row" href="/what-to-say/">
    <span class="v3-no">03</span>
    <span class="v3-tcell"><h3>What to Say</h3></span>
    <p>Someone you care about is grieving, ill, or has just lost their job, and you have rewritten the same message four times. Tell it what happened and you get words that sound like you, plus the lines that are kinder to leave out.</p>
    <span class="v3-go">Find the words &rarr;</span>
  </a>
  <a class="v3-row v3-feature" href="/tools/pixel-pal/" id="v3PalRow">
    <span class="v3-no">04</span>
    <span class="v3-tcell"><span class="v3-kick">Free &middot; Your streak cannot be lost</span><h3>Pixel Pal</h3></span>
    <p>Every habit tracker eventually punishes you for having a life. This one cannot. Miss a day and nothing resets, take a week off and just say so, and a small friend is still pleased to see you when you get back. Nothing you track ever leaves your phone.</p>
    <span class="v3-go">Pick your buddy &rarr;</span>
  </a>
  <a class="v3-row" href="/tools/affirmation-generator/">
    <span class="v3-no">05</span>
    <span class="v3-tcell"><h3>Daily Affirmation</h3></span>
    <p>Pick what you are actually carrying today, whether that is confidence, calm, healing or strength, and get a line written for it. New every morning, and yours to keep.</p>
    <span class="v3-go">Hear it &rarr;</span>
  </a>
  <a class="v3-row v3-feature" href="/pet/">
    <span class="v3-no">06</span>
    <span class="v3-tcell"><span class="v3-kick">Free &middot; Nothing to download</span><h3>Pixel Pets</h3></span>
    <p>Adopt one of 98 tiny pets and name it. Feed it, walk it, put silly glasses on it. It grows on the days you visit and never once mentions the days you don&#8217;t.</p>
    <span class="v3-go">Adopt one &rarr;</span>
  </a>
  <a class="v3-row" href="/horoscope/" id="v3HoroRow">
    <span class="v3-no">07</span>
    <span class="v3-tcell"><h3 id="v3HoroT">Daily Horoscope</h3></span>
    <p id="v3HoroP">An uplifting message written for your sign, new every day. Your birthday is all it asks of you. No account, and nothing gloomy.</p>
    <span class="v3-go">Reveal &rarr;</span>
  </a>
  <a class="v3-row" href="/quotes/topics/">
    <span class="v3-no">08</span>
    <span class="v3-tcell"><h3>The Collections</h3></span>
    <p>Twenty categories and 400+ collections, gathered by hand: self-love, letting go, good mornings, strength for the hard seasons. Somebody read every one of them first.</p>
    <span class="v3-go">Browse &rarr;</span>
  </a>
</section>

<!-- ── Pixel Pets band (marker: llh-pets-band) ─────────────────────
     The sprites come straight out of the existing /assets/img/pets.png,
     positioned with CSS. No new image, no JavaScript, nothing to download. -->
<style id="llh-pets-band-css">
  .pets-band{background:var(--surface2,#F2F2F2);border-top:1px solid var(--line,#E4E4E4);
    border-bottom:1px solid var(--line,#E4E4E4);padding:56px 20px 52px;overflow:hidden}
  .pets-band-in{max-width:760px;margin:0 auto;text-align:center}
  .pets-cap{display:block;font-family:var(--sans);font-size:10px;font-weight:600;
    letter-spacing:.24em;text-transform:uppercase;color:var(--ink3,#888);margin-bottom:20px}
  .pets-stage{position:relative;height:132px;margin:0 auto 6px;max-width:520px}
  .pets-floor{position:absolute;left:6%;right:6%;bottom:26px;height:1px;
    background:linear-gradient(90deg,transparent,var(--ink4,#BBB) 22%,var(--ink4,#BBB) 78%,transparent)}
  .pets-row{position:absolute;left:0;right:0;bottom:27px;display:flex;
    align-items:flex-end;justify-content:center;gap:clamp(10px,4vw,34px)}
  .llh-pet{width:96px;height:96px;flex:none;image-rendering:pixelated;
    image-rendering:crisp-edges;
    background-image:url(/assets/img/pets.png?v=6);
    background-size:2880px 9408px;background-repeat:no-repeat;
    background-position-x:-1440px;                 /* stage 2, happy frame */
    animation:petfloat 3.4s ease-in-out infinite}
  .llh-pet.p1{background-position-y:-192px;   animation-delay:0s}      /* Fox */
  .llh-pet.p2{background-position-y:-288px;   animation-delay:.55s}    /* Bunny */
  .llh-pet.p3{background-position-y:-2112px;  animation-delay:1.1s}    /* Penguin */
  .llh-pet.p4{background-position-y:-3072px;  animation-delay:1.65s}   /* Axolotl */
  .llh-pet.p5{background-position-y:-4416px;  animation-delay:2.2s;
    display:none}                                                      /* Dragon, wide only */
  @keyframes petfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
  .pets-band h2{font-family:var(--serif);font-weight:300;font-style:italic;
    font-size:clamp(24px,5vw,34px);line-height:1.24;color:var(--ink,#0D0D0D);margin:14px 0 12px}
  .pets-band p{font-family:var(--sans);font-size:15px;line-height:1.65;
    color:var(--ink2,#3A3A3A);margin:0 auto 10px;max-width:52ch}
  .pets-band .pets-quiet{font-size:13.5px;color:var(--ink3,#888);margin-bottom:22px}
  .pets-cta{display:inline-block;font-family:var(--sans);font-size:15px;font-weight:600;
    color:var(--ink,#0D0D0D);text-decoration:none;border-bottom:2px solid var(--ink,#0D0D0D);
    padding-bottom:3px;min-height:24px}
  .pets-cta:hover{opacity:.7}
  .pets-facts{display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:center;
    margin:24px 0 0;padding:0;list-style:none;
    font-family:var(--sans);font-size:12.5px;color:var(--ink3,#888)}
  @media(min-width:720px){.llh-pet.p5{display:block}}
  @media(max-width:420px){.llh-pet{width:72px;height:72px;background-size:2160px 7056px;
    background-position-x:-1080px}
    .llh-pet.p1{background-position-y:-144px}.llh-pet.p2{background-position-y:-216px}
    .llh-pet.p3{background-position-y:-1584px}.llh-pet.p4{background-position-y:-2304px}
    .pets-stage{height:104px}}
  @media(prefers-reduced-motion:reduce){.llh-pet{animation:none}}
</style>
<section class="pets-band" aria-labelledby="petsBandH">
  <div class="pets-band-in">
    <span class="pets-cap">Pixel Pets</span>
    <div class="pets-stage" aria-hidden="true">
      <span class="pets-floor"></span>
      <div class="pets-row">
        <i class="llh-pet p1"></i><i class="llh-pet p2"></i><i class="llh-pet p3"></i><i class="llh-pet p4"></i><i class="llh-pet p5"></i>
      </div>
    </div>
    <h2 id="petsBandH">Something small that is always glad you came back.</h2>
    <p>Adopt one of 98 pixel pets and give it a name. Feed it, take it out for a walk,
    put ridiculous glasses on it in the photo booth. It grows a little on the days you
    visit, and it never once mentions the days you didn&#8217;t.</p>
    <p class="pets-quiet">It cannot get sick and it cannot die. That part is deliberate.</p>
    <a class="pets-cta" href="/pet/">Adopt one, free, no sign-up &rarr;</a>
    <ul class="pets-facts">
      <li>98 pets</li><li>Up to 3 at once</li><li>Grows over 60 days</li><li>Works on any phone</li>
    </ul>
  </div>
</section>

<script defer src="/assets/js/qotd-widget.js"></script>
<script>
document.addEventListener('DOMContentLoaded',function(){
  var d=new Date(),el=document.getElementById('v3Date');
  if(el)el.textContent=d.toLocaleDateString('en-US',{weekday:'long',month:'long',day:'numeric'});
  var q=window.LLH_QOTD,p=document.getElementById('v3Qotd');
  if(q&&p)p.textContent='“'+q.t+'” — '+q.a+'. New every morning; take it with you.';
  /* personalize the horoscope row for returning readers (sign saved by the horoscope page) */
  try{
    var sg=localStorage.getItem('llh_horo_sign');
    if(sg&&/^[A-Za-z]+$/.test(sg)){
      var hr=document.getElementById('v3HoroRow'),ht=document.getElementById('v3HoroT'),hp=document.getElementById('v3HoroP');
      if(hr&&ht){ht.textContent='Your '+sg+' Horoscope';hr.href='/horoscope/'+sg.toLowerCase()+'/';
        if(hp)hp.textContent='Today’s '+sg+' message is ready. New every morning, with a quote chosen to match your sign.';}
    }
  }catch(e){}
  /* Ad-slot watchdog (marker: llh-ad-collapse): AdSense marks slots data-ad-status
     "filled"/"unfilled", but when the request is blocked or never answered no status
     is set and the empty box keeps its space. Collapse any slot still statusless or
     zero-height 9s after load; un-collapse if Google fills it late. */
  var _adWatch=function(){
    document.querySelectorAll('.ad-slot').forEach(function(slot){
      var ins=slot.querySelector('ins.adsbygoogle');
      if(!ins||ins.getAttribute('data-ad-status')==='filled')return;
      slot.classList.add('ad-empty');
      var mo=new MutationObserver(function(){
        if(ins.getAttribute('data-ad-status')==='filled'){slot.classList.remove('ad-empty');mo.disconnect();}
      });
      mo.observe(ins,{attributes:true,attributeFilter:['data-ad-status']});
    });
    /* Auto-ads containers Google injects outside our slots (e.g. below the footer):
       collapse them whenever they are not actually showing a filled ad. */
    document.querySelectorAll('body > ins.adsbygoogle, .google-auto-placed').forEach(function(el){
      if(el.closest('.ad-slot'))return;
      var ins=el.matches('ins.adsbygoogle')?el:el.querySelector('ins.adsbygoogle');
      var st=ins?ins.getAttribute('data-ad-status'):null;
      if(st!=='filled'){el.style.setProperty('display','none','important');}
    });
  };
  setTimeout(_adWatch,9000);
  setTimeout(_adWatch,20000);
  /* scroll-reveal for Start-somewhere rows (marker: llh-home-motion-v1) — JS-applied so no-JS visitors always see content */
  try{
    if(!matchMedia('(prefers-reduced-motion: reduce)').matches&&'IntersectionObserver' in window){
      var rows=document.querySelectorAll('.v3-row');
      var io=new IntersectionObserver(function(es){
        es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('reveal-in');io.unobserve(e.target);setTimeout(function(){e.target.style.transitionDelay='';},900);}});
      },{rootMargin:'0px 0px -8% 0px'});
      rows.forEach(function(r,i){
        r.classList.add('reveal-pending');
        r.style.transitionDelay=Math.min(i*70,280)+'ms';
        io.observe(r);
      });
    }
  }catch(e){}
  /* bring mood results into view after a search (hero is taller than before) */
  if(typeof window.runMoodSearch==='function'){
    var _rms=window.runMoodSearch;
    window.runMoodSearch=function(){
      _rms();
      var el=document.getElementById('moodSection');
      if(el)setTimeout(function(){el.scrollIntoView({behavior:'smooth',block:'start'});},200);
    };
  }
});
</script>
<style id="llh-home-v3">
  .v3-hero{display:grid;grid-template-columns:1.15fr 1fr;max-width:1360px;margin:0 auto;border-bottom:1px solid var(--line,#E6E6E6)}
  /* 2026-08-08 — a grid item's min-width defaults to auto (its min-content
     width), so the horizontally-scrolling topic strip inflated both hero
     columns to 416px inside a 390px phone. body{overflow-x:hidden} was hiding
     it rather than fixing it, which is why the sub-heading, the Search button
     and the topic pills sat flush against (and clipped by) the right edge.
     Same root cause as the quote-maker canvas bug fixed on 2026-08-06. */
  .v3-hero, .v3-hero > *, .v3-hero-l > *, .v3-hero-r > *{min-width:0}

  .v3-hero-l{padding:84px 64px 72px 48px;display:flex;flex-direction:column;justify-content:center}
  .v3-kicker{font-family:var(--sans,'Inter'),sans-serif;font-size:11px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--ink3,#8c8c8c);margin:0 0 22px}
  .v3-h1{font-family:var(--serif,'Fraunces'),Georgia,serif;font-weight:400;font-style:normal;font-size:clamp(34px,4.4vw,60px);line-height:1.1;letter-spacing:-.02em;margin:0 0 20px;color:var(--ink,#0D0D0D)}
  .v3-h1 em{font-style:italic;font-weight:300}
  .v3-sub{font-family:var(--sans,'Inter'),sans-serif;font-size:16px;line-height:1.65;color:var(--ink2,#4c4c4c);max-width:470px;margin:0 0 32px}
  .v3-search{display:flex;max-width:480px;border:1.5px solid var(--ink,#0D0D0D);border-radius:12px;overflow:hidden;background:var(--surface,#FFFFFF)}
  .v3-search input{flex:1;min-width:0;border:none;outline:none;padding:15px 18px;font-family:var(--sans,'Inter'),sans-serif;font-size:16px;color:var(--ink,#0D0D0D);background:none}
  .v3-search input::placeholder{color:var(--ink3,#6B6B6B)}
  .v3-search button{background:var(--ink,#0D0D0D);color:var(--surface,#FFFFFF);border:none;padding:0 24px;font-family:var(--sans,'Inter'),sans-serif;font-size:14px;font-weight:600;cursor:pointer}
  .v3-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;max-width:480px}
  .v3-quick{display:flex;gap:22px;margin-top:26px;flex-wrap:wrap}
  .v3-quick a{font-family:var(--sans,'Inter'),sans-serif;font-size:13.5px;color:var(--ink2,#4c4c4c);text-decoration:none;border-bottom:1px solid var(--line,#E6E6E6);padding-bottom:2px}
  .v3-quick a:hover{color:var(--ink,#0D0D0D);border-color:var(--ink,#0D0D0D)}
  .v3-hero-r{background:var(--tf4f1ec,#F4F1EC);border-left:1px solid var(--line,#E6E6E6);position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;min-height:520px}
  .v3-cap{position:absolute;top:30px;left:36px;font-family:var(--sans,'Inter'),sans-serif;font-size:11px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ink3,#6B6B6B)}
  .v3-poster{width:min(290px,60%);aspect-ratio:4/5;background:var(--chip,#0D0D0D);color:var(--on-chip,#FFFFFF);border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px;box-sizing:border-box;box-shadow:0 30px 70px rgba(0,0,0,.28);transform:rotate(-3deg)}
  .v3-mk{font-family:var(--serif,'Fraunces'),Georgia,serif;font-style:italic;font-size:42px;line-height:.4;opacity:.85;margin-bottom:16px}
  .v3-poster blockquote{font-family:var(--serif,'Fraunces'),Georgia,serif;font-style:italic;font-weight:300;font-size:22px;line-height:1.45;margin:0}
  .v3-pa{font-family:var(--sans,'Inter'),sans-serif;font-size:9.5px;letter-spacing:.22em;margin:18px 0 0;opacity:.65;text-transform:uppercase}
  .v3-pc{font-family:var(--sans,'Inter'),sans-serif;font-size:6.5px;letter-spacing:.3em;margin:24px 0 0;opacity:.4}
  .v3-poster2{position:absolute;width:180px;aspect-ratio:4/5;background:linear-gradient(135deg,var(--tfdefe4,#FDEFE4),var(--te8d9ee,#E8D9EE));border-radius:5px;right:44px;bottom:-28px;transform:rotate(6deg);box-shadow:0 18px 44px rgba(0,0,0,.16);display:flex;align-items:center;justify-content:center;font-family:var(--serif,'Fraunces'),Georgia,serif;font-style:italic;font-size:15px;color:var(--t3a2f3e,#3A2F3E)}
  .v3-cta{position:absolute;bottom:30px;left:36px;font-family:var(--sans,'Inter'),sans-serif;font-size:13.5px;font-weight:600;color:var(--ink,#0D0D0D);text-decoration:none;border-bottom:1.5px solid var(--ink,#0D0D0D);padding-bottom:2px}
  .v3-results{padding:0}
  .v3-results .wrap>[hidden]{display:none}
  #moodResults:not([hidden]),#moodEmpty:not([hidden]),#moodLoading:not([hidden]){margin:34px auto}
  .v3-index{max-width:1360px;margin:0 auto;padding:0 48px 40px}
  .v3-index-head{display:flex;justify-content:space-between;align-items:baseline;padding:56px 0 8px}
  .v3-index-head h2{font-family:var(--sans,'Inter'),sans-serif;font-size:11px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--ink3,#8c8c8c);margin:0}
  .v3-index-head span{font-family:var(--sans,'Inter'),sans-serif;font-size:12.5px;color:var(--ink3,#8c8c8c)}
  .v3-row{display:grid;grid-template-columns:72px 280px 1fr 130px;align-items:center;gap:28px;padding:34px 0;border-bottom:1px solid var(--line,#E6E6E6);text-decoration:none;color:var(--ink,#0D0D0D);transition:background .15s ease}
  .v3-row:hover{background:var(--paper,#FBFAF8)}
  .v3-no{font-family:var(--serif,'Fraunces'),Georgia,serif;font-size:15px;color:var(--ink3,#6B6B6B)}
  .v3-row h3{font-family:var(--serif,'Fraunces'),Georgia,serif;font-weight:400;font-size:25px;margin:0}
  .v3-row p{font-family:var(--sans,'Inter'),sans-serif;font-size:14px;line-height:1.6;color:var(--ink2,#4c4c4c);max-width:560px;margin:0}
  .v3-go{font-family:var(--sans,'Inter'),sans-serif;font-size:13px;font-weight:600;text-align:right;transition:transform .18s ease}
  .v3-row:hover .v3-go{transform:translateX(4px)}
  /* Featured row (Quote Maker) — same gradient accent + hover outline as the horoscope card in "You might also like" */
  .v3-row.v3-feature{position:relative;background:linear-gradient(135deg,rgba(180,160,255,.10),rgba(255,235,160,.10));border:1px solid var(--line,#E6E6E6);border-bottom:1px solid var(--line,#E6E6E6);border-radius:14px;padding:30px 26px;margin:12px 0;transition:transform .15s ease,border-color .15s ease}
  .v3-row.v3-feature::before{content:"";position:absolute;inset:-1px;border-radius:inherit;background:linear-gradient(135deg,rgba(180,160,255,.18),rgba(255,235,160,.18));opacity:0;transition:opacity .25s ease;pointer-events:none}
  .v3-row.v3-feature:hover{background:linear-gradient(135deg,rgba(180,160,255,.10),rgba(255,235,160,.10));border-color:var(--ink,#0D0D0D);transform:translateY(-2px)}
  .v3-row.v3-feature>*{position:relative}
  .v3-tcell{display:flex;flex-direction:column;gap:5px}
  .v3-kick{font-family:var(--sans,'Inter'),sans-serif;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink,#7E5DBC)}
  @media (max-width:960px){
    .v3-hero{grid-template-columns:1fr}
    .v3-hero-l{padding:52px 22px 44px;text-align:center;align-items:center}
    .v3-sub{margin-left:auto;margin-right:auto}
    .v3-search{width:100%}
    .v3-chips{justify-content:center}
    .v3-hero-r{border-left:none;border-top:1px solid var(--line,#E6E6E6);min-height:420px;padding:56px 0 64px}
    .v3-index{padding:0 22px}
    .v3-row{grid-template-columns:1fr;gap:8px;padding:26px 0}
    .v3-no{display:none}
    .v3-go{text-align:left}
    .v3-row.v3-feature{padding:22px 18px;margin:14px 0}
  }
  /* Gentle motion (marker: llh-home-motion-v1) — rows rise in as they enter view; hero posters drift. Off for reduced-motion. */
  @media (prefers-reduced-motion:no-preference){
    .v3-row.reveal-pending{opacity:0;transform:translateY(14px)}
    .v3-row.reveal-in{opacity:1;transform:none;transition:opacity .55s ease,transform .55s cubic-bezier(.2,.7,.2,1)}
    .v3-row.v3-feature.reveal-in{transition:opacity .55s ease,transform .55s cubic-bezier(.2,.7,.2,1),border-color .15s ease}
    .v3-poster{animation:llhFloatA 7s ease-in-out infinite alternate}
    .v3-poster2{animation:llhFloatB 8s ease-in-out infinite alternate}
    @keyframes llhFloatA{from{transform:rotate(-3deg) translateY(0)}to{transform:rotate(-2.4deg) translateY(-8px)}}
    @keyframes llhFloatB{from{transform:rotate(6deg) translateY(0)}to{transform:rotate(6.8deg) translateY(-6px)}}
  }
</style>

<!-- ── TOPIC BAR ── -->
<div class="topic-bar" id="topicBar">
  <div class="topic-scroll">
    <a href="/quotes/" class="topic-pill">All</a>
    
    <a href="/categories/relationships/" class="topic-pill">Relationships</a>
    
    <a href="/categories/wisdom/" class="topic-pill">Wisdom</a>
    
    <a href="/categories/self-love/" class="topic-pill">Self-Love</a>
    
    <a href="/categories/happiness/" class="topic-pill">Happiness</a>
    
    <a href="/categories/resilience/" class="topic-pill">Resilience</a>
    
    <a href="/categories/healing/" class="topic-pill">Healing</a>
    
    <a href="/categories/growth/" class="topic-pill">Growth</a>
    
    <a href="/categories/success/" class="topic-pill">Success</a>
    
    <a href="/categories/mindfulness/" class="topic-pill">Mindfulness</a>
    
    <a href="/categories/gratitude/" class="topic-pill">Gratitude</a>
    
    <a href="/categories/life/" class="topic-pill">Life</a>
    
    <a href="/categories/faith/" class="topic-pill">Faith</a>
    
    <a href="/categories/family/" class="topic-pill">Family</a>
    
  </div>
</div>

<!-- ── SAVED SECTION (shown only when items saved) ── -->
<section class="saved-section" id="savedSection" hidden>
  <div class="wrap">
    <div class="sec-header">
      <h2 class="sec-title">Saved Quotes</h2>
      <button class="see-all" onclick="clearSaved()">Clear all</button>
    </div>
    <div class="saved-chips" id="savedChips"></div>
  </div>
</section>
<!-- ── FEATURED QUOTES ── -->
<section class="section-alt" id="quotes">
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Today's Quotes</h2>
      <a href="/quotes/" class="see-all">All quotes →</a>
    </div>
    <div class="quote-list" id="quoteList">
      
      <div class="quote-row r">
        <span class="qr-num">01</span>
        <div class="qr-body">
          <p class="qr-text">"You become what you think about most of the time. You think about your goals most of the time."</p>
          <span class="qr-meta">
            <a href="/authors/brian-tracy/">Brian Tracy</a>
            · <a href="/categories/success/">Success</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="You become what you think about most of the time. You think about your goals most of the time." data-author="Brian Tracy" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="You become what you think about most of the time. You think about your goals most of the time." data-author="Brian Tracy" data-slug="you-become-what-you-think-about" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">02</span>
        <div class="qr-body">
          <p class="qr-text">"Vulnerability is not weakness; it&#39;s our greatest measure of courage."</p>
          <span class="qr-meta">
            <a href="/authors/brene-brown/">Brené Brown</a>
            · <a href="/categories/growth/">Growth</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="Vulnerability is not weakness; it&#39;s our greatest measure of courage." data-author="Brené Brown" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="Vulnerability is not weakness; it&#39;s our greatest measure of courage." data-author="Brené Brown" data-slug="vulnerability-is-courage" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">03</span>
        <div class="qr-body">
          <p class="qr-text">"Some people won&#39;t appreciate you, no matter how much you do for them. Let go. Go where you are appreciated and understood."</p>
          <span class="qr-meta">
            <a href="/authors/robert-tew/">Robert Tew</a>
            · <a href="/categories/relationships/">Relationships</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="Some people won&#39;t appreciate you, no matter how much you do for them. Let go. Go where you are appreciated and understood." data-author="Robert Tew" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="Some people won&#39;t appreciate you, no matter how much you do for them. Let go. Go where you are appreciated and understood." data-author="Robert Tew" data-slug="go-where-you-are-appreciated" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">04</span>
        <div class="qr-body">
          <p class="qr-text">"If you have the impulse to act on a goal, you must physically move within five seconds, or your brain will kill the idea."</p>
          <span class="qr-meta">
            <a href="/authors/mel-robbins/">Mel Robbins</a>
            · <a href="/categories/success/">Success</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="If you have the impulse to act on a goal, you must physically move within five seconds, or your brain will kill the idea." data-author="Mel Robbins" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="If you have the impulse to act on a goal, you must physically move within five seconds, or your brain will kill the idea." data-author="Mel Robbins" data-slug="five-second-rule" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">05</span>
        <div class="qr-body">
          <p class="qr-text">"You are the average of the five people you spend the most time with."</p>
          <span class="qr-meta">
            <a href="/authors/jim-rohn/">Jim Rohn</a>
            · <a href="/categories/growth/">Growth</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="You are the average of the five people you spend the most time with." data-author="Jim Rohn" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="You are the average of the five people you spend the most time with." data-author="Jim Rohn" data-slug="average-of-five-people" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">06</span>
        <div class="qr-body">
          <p class="qr-text">"The quality of your relationships determines the quality of your life."</p>
          <span class="qr-meta">
            <span >Esther Perel</span>
            · <a href="/categories/relationships/">Relationships</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="The quality of your relationships determines the quality of your life." data-author="Esther Perel" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="The quality of your relationships determines the quality of your life." data-author="Esther Perel" data-slug="quality-of-relationships" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">07</span>
        <div class="qr-body">
          <p class="qr-text">"Love is an action, never simply a feeling."</p>
          <span class="qr-meta">
            <a href="/authors/bell-hooks/">bell hooks</a>
            · <a href="/categories/relationships/">Relationships</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="Love is an action, never simply a feeling." data-author="bell hooks" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="Love is an action, never simply a feeling." data-author="bell hooks" data-slug="love-is-an-action" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">08</span>
        <div class="qr-body">
          <p class="qr-text">"People don&#39;t buy what you do; they buy why you do it."</p>
          <span class="qr-meta">
            <span >Simon Sinek</span>
            · <a href="/categories/success/">Success</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="People don&#39;t buy what you do; they buy why you do it." data-author="Simon Sinek" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="People don&#39;t buy what you do; they buy why you do it." data-author="Simon Sinek" data-slug="people-buy-why-you-do-it" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">09</span>
        <div class="qr-body">
          <p class="qr-text">"You do not rise to the level of your goals. You fall to the level of your systems."</p>
          <span class="qr-meta">
            <a href="/authors/james-clear/">James Clear</a>
            · <a href="/categories/growth/">Growth</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="You do not rise to the level of your goals. You fall to the level of your systems." data-author="James Clear" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="You do not rise to the level of your goals. You fall to the level of your systems." data-author="James Clear" data-slug="you-do-not-rise-to-the-level-of-your-goals-you-fall-to-the-level-of-your-systems" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">10</span>
        <div class="qr-body">
          <p class="qr-text">"The days are long, but the years are short."</p>
          <span class="qr-meta">
            <a href="/authors/gretchen-rubin/">Gretchen Rubin</a>
            · <a href="/categories/wisdom/">Wisdom</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="The days are long, but the years are short." data-author="Gretchen Rubin" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="The days are long, but the years are short." data-author="Gretchen Rubin" data-slug="days-are-long-years-are-short" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">11</span>
        <div class="qr-body">
          <p class="qr-text">"I can be changed by what happens to me. But I refuse to be reduced by it."</p>
          <span class="qr-meta">
            <a href="/authors/maya-angelou/">Maya Angelou</a>
            · <a href="/categories/resilience/">Resilience</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="I can be changed by what happens to me. But I refuse to be reduced by it." data-author="Maya Angelou" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="I can be changed by what happens to me. But I refuse to be reduced by it." data-author="Maya Angelou" data-slug="refuse-to-be-reduced" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
      <div class="quote-row r">
        <span class="qr-num">12</span>
        <div class="qr-body">
          <p class="qr-text">"It&#39;s not where you started in life, it&#39;s where you end up. Believe in yourself."</p>
          <span class="qr-meta">
            <a href="/authors/colin-powell/">Colin Powell</a>
            · <a href="/categories/self-love/">Self-Love</a>
          </span>
        </div>
        <div class="qr-actions">
          <button class="qrb" data-action="copy" data-text="It&#39;s not where you started in life, it&#39;s where you end up. Believe in yourself." data-author="Colin Powell" title="Copy">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
          </button>
          <button class="qrb heart-btn" data-action="save" data-text="It&#39;s not where you started in life, it&#39;s where you end up. Believe in yourself." data-author="Colin Powell" data-slug="where-you-end-up" title="Save">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
        </div>
      </div>
      
    </div>
    <div class="load-more-wrap">
      <a href="/quotes/" class="load-more-btn">Browse all quotes →</a>
    </div>
  </div>
</section>

<!-- AdSense in-article (1 of 3) — after Today's Quotes, before Categories. Dedicated unit "Home - After Todays Quotes" -->
<div class="ad-slot ad-slot-inline" aria-label="Advertisement">
  <span class="ad-label">Advertisement</span>
  <ins class="adsbygoogle" style="display:block; text-align:center;"
       data-ad-layout="in-article" data-ad-format="fluid"
       data-ad-client="ca-pub-4868281265926059" data-ad-slot="7362176730"></ins>
  <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
</div>

<!-- ── CATEGORIES ── -->
<section>
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Browse by Category</h2>
      <a href="/categories/" class="see-all">All categories →</a>
    </div>
    <div class="cat-grid">
      
      <a href="/categories/relationships/" class="cat-card r">
        <span class="cat-name">Relationships</span>
        <span class="cat-count">1,769 quotes</span>
      </a>

      <a href="/categories/wisdom/" class="cat-card r">
        <span class="cat-name">Wisdom</span>
        <span class="cat-count">1,719 quotes</span>
      </a>

      <a href="/categories/self-love/" class="cat-card r">
        <span class="cat-name">Self-Love</span>
        <span class="cat-count">1,130 quotes</span>
      </a>

      <a href="/categories/growth/" class="cat-card r">
        <span class="cat-name">Growth</span><span>1,193 quotes</span>
      </a>

      <a href="/categories/happiness/" class="cat-card r">
        <span class="cat-name">Happiness</span>
        <span class="cat-count">776 quotes</span>
      </a>

      <a href="/categories/resilience/" class="cat-card r">
        <span class="cat-name">Resilience</span>
        <span class="cat-count">767 quotes</span>
      </a>

      <a href="/categories/mindfulness/" class="cat-card r">
        <span class="cat-name">Mindfulness</span>
        <span class="cat-count">707 quotes</span>
      </a>

      <a href="/categories/success/" class="cat-card r">
        <span class="cat-name">Success</span>
        <span class="cat-count">648 quotes</span>
      </a>

      <a href="/categories/healing/" class="cat-card r">
        <span class="cat-name">Healing</span>
        <span class="cat-count">634 quotes</span>
      </a>

      <a href="/categories/gratitude/" class="cat-card r">
        <span class="cat-name">Gratitude</span>
        <span class="cat-count">645 quotes</span>
      </a>

      <a href="/categories/life/" class="cat-card r">
        <span class="cat-name">Life</span>
        <span class="cat-count">433 quotes</span>
      </a>

      <a href="/categories/faith/" class="cat-card r">
        <span class="cat-name">Faith</span>
        <span class="cat-count">370 quotes</span>
      </a>

      <a href="/categories/family/" class="cat-card r">
        <span class="cat-name">Family</span>
        <span class="cat-count">74 quotes</span>
      </a>

    </div>
  </div>
</section>

<!-- ── POPULAR COLLECTIONS (topic listicle pages) ── -->
<section>
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Popular Collections</h2>
      <a href="/quotes/topics/" class="see-all">All topics →</a>
    </div>
    <div class="cat-grid">
      <a href="/quotes/topics/love-quotes/" class="cat-card r"><span class="cat-name">Love Quotes</span><span class="cat-count">60 quotes</span></a>
      <a href="/quotes/topics/life-quotes/" class="cat-card r"><span class="cat-name">Life Quotes</span><span class="cat-count">70 quotes</span></a>
      <a href="/quotes/topics/motivational-quotes/" class="cat-card r"><span class="cat-name">Motivational Quotes</span><span class="cat-count">60 quotes</span></a>
      <a href="/quotes/topics/inspirational-quotes/" class="cat-card r"><span class="cat-name">Inspirational Quotes</span><span class="cat-count">80 quotes</span></a>
      <a href="/quotes/topics/positive-quotes/" class="cat-card r"><span class="cat-name">Positive Quotes</span><span class="cat-count">60 quotes</span></a>
      <a href="/quotes/topics/good-morning-quotes/" class="cat-card r"><span class="cat-name">Good Morning Quotes</span><span class="cat-count">45 quotes</span></a>
      <a href="/quotes/topics/short-quotes/" class="cat-card r"><span class="cat-name">Short Quotes</span><span class="cat-count">80 quotes</span></a>
      <a href="/quotes/topics/friendship-quotes/" class="cat-card r"><span class="cat-name">Friendship Quotes</span><span class="cat-count">40 quotes</span></a>
      <a href="/quotes/topics/best-quotes-for-breakups/" class="cat-card r"><span class="cat-name">Breakup Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/grief-and-losing-a-loved-one-quotes/" class="cat-card r"><span class="cat-name">Grief &amp; Loss Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/quotes-about-letting-go/" class="cat-card r"><span class="cat-name">Letting Go Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/self-worth-quotes/" class="cat-card r"><span class="cat-name">Self-Worth Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/motivational-success-quotes/" class="cat-card r"><span class="cat-name">Success Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/mental-health-awareness-quotes-for-anxiety/" class="cat-card r"><span class="cat-name">Anxiety &amp; Calm Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/stoic-quotes-on-control-and-anxiety/" class="cat-card r"><span class="cat-name">Stoic Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/gratitude-quotes/" class="cat-card r"><span class="cat-name">Gratitude Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/healing-quotes-after-a-breakup/" class="cat-card r"><span class="cat-name">Healing Quotes</span><span class="cat-count">30 quotes</span></a>
      <a href="/quotes/topics/self-love-quotes/" class="cat-card r"><span class="cat-name">Self-Love Quotes</span><span class="cat-count">30 quotes</span></a>
    </div>
  </div>
</section>

<!-- ── FREE QUOTE TOOLS (tool-led traffic engine) ── -->
<section id="free-tools">
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Free Quote Tools</h2>
      <a href="/tools/" class="see-all">All tools →</a>
    </div>
    <p style="font-family:var(--sans);font-size:15px;line-height:1.65;color:var(--ink2);max-width:620px;margin:0 0 18px">Turn any quote into a poster for Instagram, Pinterest, your phone or your wall. Free, no sign-up, no watermark, and built on the 12,000+ verified quotes we&#8217;ve gathered here.</p>
    <div class="cat-grid">
      <a href="/tools/quote-maker/" class="cat-card r"><span class="cat-name">Quote Maker</span><span class="cat-count">Make a free quote poster</span></a>
      <a href="/tools/affirmation-generator/" class="cat-card r"><span class="cat-name">Affirmation Generator</span><span class="cat-count">The words you need today</span></a>
      <!-- llh-pixel-pal --><a href="/tools/pixel-pal/" class="cat-card r"><span class="cat-name">Pixel Pal</span><span class="cat-count">Habits, fasting &amp; goals, free</span></a><a href="/tools/quote-maker/instagram/" class="cat-card r"><span class="cat-name">Instagram Quote Maker</span><span class="cat-count">Posts &amp; 4:5 portraits</span></a>
      <a href="/tools/quote-maker/pinterest/" class="cat-card r"><span class="cat-name">Pinterest Pin Maker</span><span class="cat-count">2:3 pins that get saved</span></a>
      <a href="/tools/quote-maker/wallpaper/" class="cat-card r"><span class="cat-name">Wallpaper Maker</span><span class="cat-count">Quotes for your lock screen</span></a>
      <a href="/quote-of-the-day/" class="cat-card r"><span class="cat-name">Quote of the Day</span><span class="cat-count">Fresh daily + free widget</span></a>
      <a href="/tools/random-quote-generator/" class="cat-card r"><span class="cat-name">Random Quote Generator</span><span class="cat-count">Shuffle 12,000+ quotes</span></a>
    </div>
  </div>
</section>

<!-- ── Pixel Pal band (marker: llh-pal-band) ────────────────────
     Six of the forty buddies, cut out of /assets/img/pals.png with CSS. Same
     construction as the pets band above: one small image, no JS. -->
<style id="llh-pal-band-css">
  .pal-band{background:var(--tf6f3ee,#F6F3EE);border-top:1px solid var(--line,#E4E4E4);
    border-bottom:1px solid var(--line,#E4E4E4);padding:56px 20px 52px;overflow:hidden}
  .pal-band-in{max-width:760px;margin:0 auto;text-align:center}
  .pal-cap{display:block;font-family:var(--sans);font-size:10px;font-weight:600;
    letter-spacing:.24em;text-transform:uppercase;color:var(--ink3,#888);margin-bottom:20px}
  .pal-stage{position:relative;height:140px;margin:0 auto 6px;max-width:720px}
  .pal-floor{position:absolute;left:6%;right:6%;bottom:26px;height:1px;
    background:linear-gradient(90deg,transparent,var(--ink4,#BBB) 22%,var(--ink4,#BBB) 78%,transparent)}
  .pal-row{position:absolute;left:0;right:0;bottom:27px;display:flex;
    align-items:flex-end;justify-content:center;gap:clamp(7px,3.2vw,26px)}
  .llh-pal{width:96px;height:104px;flex:none;image-rendering:pixelated;
    image-rendering:crisp-edges;
    background-image:url(/assets/img/pals.png?v=2);
    background-size:576px 104px;background-repeat:no-repeat;
    animation:palfloat 3.4s ease-in-out infinite}
  .llh-pal.a1{background-position:0 0;         animation-delay:0s}     /* Sorrel the Fox */
  .llh-pal.a2{background-position:-96px 0;     animation-delay:.5s}    /* Waddle the Penguin */
  .llh-pal.a3{background-position:-192px 0;    animation-delay:1s}     /* Ember the Dragon */
  .llh-pal.a4{background-position:-288px 0;    animation-delay:1.5s}   /* Sir Rowan */
  .llh-pal.a5{background-position:-384px 0;    animation-delay:2s;
    display:none}                                                      /* Cinder, 470px up */
  .llh-pal.a6{background-position:-480px 0;    animation-delay:2.5s;
    display:none}                                                      /* Sprocket, 760px up */
  @keyframes palfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
  .pal-band h2{font-family:var(--serif);font-weight:300;font-style:italic;
    font-size:clamp(24px,5vw,34px);line-height:1.24;color:var(--ink,#0D0D0D);margin:14px 0 12px}
  .pal-band p{font-family:var(--sans);font-size:15px;line-height:1.65;
    color:var(--ink2,#3A3A3A);margin:0 auto 10px;max-width:54ch}
  .pal-band .pal-quiet{font-size:13.5px;color:var(--ink3,#888);margin-bottom:22px}
  .pal-cta{display:inline-block;font-family:var(--sans);font-size:15px;font-weight:600;
    color:var(--ink,#0D0D0D);text-decoration:none;border-bottom:2px solid var(--ink,#0D0D0D);
    padding-bottom:3px;min-height:24px}
  .pal-cta:hover{opacity:.7}
  .pal-facts{display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:center;
    margin:24px 0 0;padding:0;list-style:none;
    font-family:var(--sans);font-size:12.5px;color:var(--ink3,#888)}
  /* How many fit, at what size. Six 96px sprites plus their gaps need 706px of
     row, so they arrive one at a time as the screen grows rather than being
     centred into an overflow and clipped at both ends. */
  @media(max-width:619px){.llh-pal{width:72px;height:78px;background-size:432px 78px}
    .llh-pal.a1{background-position:0 0}.llh-pal.a2{background-position:-72px 0}
    .llh-pal.a3{background-position:-144px 0}.llh-pal.a4{background-position:-216px 0}
    .llh-pal.a5{background-position:-288px 0}.llh-pal.a6{background-position:-360px 0}
    .pal-stage{height:112px}}
  @media(max-width:359px){.llh-pal{width:60px;height:65px;background-size:360px 65px}
    .llh-pal.a1{background-position:0 0}.llh-pal.a2{background-position:-60px 0}
    .llh-pal.a3{background-position:-120px 0}.llh-pal.a4{background-position:-180px 0}
    .pal-stage{height:98px}}
  @media(min-width:470px){.llh-pal.a5{display:block}}
  @media(min-width:760px){.llh-pal.a6{display:block}}
  @media(prefers-reduced-motion:reduce){.llh-pal{animation:none}}
</style>
<section class="pal-band" aria-labelledby="palBandH">
  <div class="pal-band-in">
    <span class="pal-cap">Pixel Pal</span>
    <div class="pal-stage" aria-hidden="true">
      <span class="pal-floor"></span>
      <div class="pal-row">
        <i class="llh-pal a1"></i><i class="llh-pal a2"></i><i class="llh-pal a3"></i><i class="llh-pal a4"></i><i class="llh-pal a5"></i><i class="llh-pal a6"></i>
      </div>
    </div>
    <h2 id="palBandH">Eighty-eight small friends, and not one of them will ever make you feel bad.</h2>
    <p>Choose one and give them a name. A fox, a capybara, a dragon, Hercules, a gnome,
    Medusa, a three-headed puppy, a cheerleader, a fish in a bowl who actually
    swims, or a small version of you that you build yourself. Then tell them what
    you&#8217;re working on, whether that&#8217;s a habit, a fasting window, or a goal with
    a date on it. They&#8217;ll be there every day, they&#8217;ll make a fuss when you manage
    it, and they will never once mention the days you don&#8217;t.</p>
    <p class="pal-quiet">If you disappear for a week, nothing resets and nothing is lost.
    You&#8217;ll find everything exactly where you left it, and the day you come back is the
    one your buddy is happiest about.</p>
    <a class="pal-cta" href="/tools/pixel-pal/">Meet your buddy, free, no sign-up &rarr;</a>
    <ul class="pal-facts">
      <li>88 buddies</li><li>24 new this month</li><li>Every chart free</li><li>Your streak cannot be lost</li>
    </ul>
  </div>
</section>

<!-- ── HAPPINESS QUOTES ── -->

<section class="section-alt">
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Happiness</h2>
      <a href="/categories/happiness/" class="see-all">776 quotes →</a>
    </div>
    <div class="quote-grid">

<article class="quote-card r">
  <a href="/quotes/time-spent-laughing-is-time-spent-with-the-gods/" class="quote-card-link">
    <span class="quote-card-tag">Happiness</span>
    <blockquote class="quote-card-text">Time spent laughing is time spent with the gods.</blockquote>
    <cite class="quote-card-author">— Japanese Proverb</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Time spent laughing is time spent with the gods." data-author="Japanese Proverb" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Time spent laughing is time spent with the gods." data-author="Japanese Proverb" data-slug="time-spent-laughing-is-time-spent-with-the-gods" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/every-person-has-the-power/" class="quote-card-link">
    <span class="quote-card-tag">Happiness</span>
    <blockquote class="quote-card-text">Every person has the power to make others happy. Some do it simply by entering a room... others by leaving the room.</blockquote>
    <cite class="quote-card-author">— William Arthur Ward</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Every person has the power to make others happy. Some do it simply by entering a room... others by leaving the room." data-author="William Arthur Ward" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Every person has the power to make others happy. Some do it simply by entering a room... others by leaving the room." data-author="William Arthur Ward" data-slug="every-person-has-the-power" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/how-can-a-woman/" class="quote-card-link">
    <span class="quote-card-tag">Happiness</span>
    <blockquote class="quote-card-text">How can a woman be expected to be happy with a man who insists on treating her as if she were a perfectly normal human being.</blockquote>
    <cite class="quote-card-author">— Oscar Wilde</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="How can a woman be expected to be happy with a man who insists on treating her as if she were a perfectly normal human being." data-author="Oscar Wilde" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="How can a woman be expected to be happy with a man who insists on treating her as if she were a perfectly normal human being." data-author="Oscar Wilde" data-slug="how-can-a-woman" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/look-at-the-trees-look-at-the-birds/" class="quote-card-link">
    <span class="quote-card-tag">Happiness</span>
    <blockquote class="quote-card-text">Look at the trees, look at the birds, look at the clouds, look at the stars... and if you have eyes you will be able to see that the whole existence is joyful. Everything is simply happy. Trees are happy for no reason; they are not going to become prime ministers or presidents and they are not going to become rich and they will never have any bank balance. Look at the flowers - for no reason. It is simply unbelievable how happy flowers are.</blockquote>
    <cite class="quote-card-author">— Osho</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Look at the trees, look at the birds, look at the clouds, look at the stars... and if you have eyes you will be able to see that the whole existence is joyful. Everything is simply happy. Trees are happy for no reason; they are not going to become prime ministers or presidents and they are not going to become rich and they will never have any bank balance. Look at the flowers - for no reason. It is simply unbelievable how happy flowers are." data-author="Osho" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Look at the trees, look at the birds, look at the clouds, look at the stars... and if you have eyes you will be able to see that the whole existence is joyful. Everything is simply happy. Trees are happy for no reason; they are not going to become prime ministers or presidents and they are not going to become rich and they will never have any bank balance. Look at the flowers - for no reason. It is simply unbelievable how happy flowers are." data-author="Osho" data-slug="look-at-the-trees-look-at-the-birds" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/we-do-not-smile-because-something-good-has-happened/" class="quote-card-link">
    <span class="quote-card-tag">Happiness</span>
    <blockquote class="quote-card-text">We do not smile because something good has happened; rather something good happens because we smile.</blockquote>
    <cite class="quote-card-author">— Japanese Proverb</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="We do not smile because something good has happened; rather something good happens because we smile." data-author="Japanese Proverb" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="We do not smile because something good has happened; rather something good happens because we smile." data-author="Japanese Proverb" data-slug="we-do-not-smile-because-something-good-has-happened" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/the-time-spent-on-hating-is-the-time-lost-for-living-a-peaceful-happy-life-it-is/" class="quote-card-link">
    <span class="quote-card-tag">Happiness</span>
    <blockquote class="quote-card-text">The time spent on hating is the time lost for living a peaceful, happy life. It is a habit that controls what you see, what you say, what you do and ultimately, what you become.</blockquote>
    <cite class="quote-card-author">— Mickey Reid</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="The time spent on hating is the time lost for living a peaceful, happy life. It is a habit that controls what you see, what you say, what you do and ultimately, what you become." data-author="Mickey Reid" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="The time spent on hating is the time lost for living a peaceful, happy life. It is a habit that controls what you see, what you say, what you do and ultimately, what you become." data-author="Mickey Reid" data-slug="the-time-spent-on-hating-is-the-time-lost-for-living-a-peaceful-happy-life-it-is" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

    </div>
  </div>
</section>

<!-- ── DARK STRIP ── -->
<div class="dark-strip">
  <span class="dark-label">Words to live by</span>
  <blockquote>"You don't have to have it all figured out to move forward. Just take the next step."</blockquote>
  <cite>— Live Life Happy</cite>
</div>

<!-- ── SELF-LOVE QUOTES ── -->

<section>
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Self-Love</h2>
      <a href="/categories/self-love/" class="see-all">1,130 quotes →</a>
    </div>
    <div class="quote-grid">

<article class="quote-card r">
  <a href="/quotes/knowing-others-is-intelligence-knowing-yourself-is-true-wisdom/" class="quote-card-link">
    <span class="quote-card-tag">Self-Love</span>
    <blockquote class="quote-card-text">Knowing others is intelligence; knowing yourself is true wisdom.</blockquote>
    <cite class="quote-card-author">— Lao Tzu</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Knowing others is intelligence; knowing yourself is true wisdom." data-author="Lao Tzu" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Knowing others is intelligence; knowing yourself is true wisdom." data-author="Lao Tzu" data-slug="knowing-others-is-intelligence-knowing-yourself-is-true-wisdom" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/sometimes-walking-away-is-strength/" class="quote-card-link">
    <span class="quote-card-tag">Self-Love</span>
    <blockquote class="quote-card-text">Sometimes walking away has nothing to do with weakness, and everything to do with strength. We walk away not because we want others to realize our worth and value, but because we finally realize our own.</blockquote>
    <cite class="quote-card-author">— Robert Tew</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Sometimes walking away has nothing to do with weakness, and everything to do with strength. We walk away not because we want others to realize our worth and value, but because we finally realize our own." data-author="Robert Tew" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Sometimes walking away has nothing to do with weakness, and everything to do with strength. We walk away not because we want others to realize our worth and value, but because we finally realize our own." data-author="Robert Tew" data-slug="sometimes-walking-away-is-strength" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/its-not-where-you-started/" class="quote-card-link">
    <span class="quote-card-tag">Self-Love</span>
    <blockquote class="quote-card-text">It&#39;s not where you started in life, it&#39;s where you end up. Believe in yourself.</blockquote>
    <cite class="quote-card-author">— Colin Powell</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="It&#39;s not where you started in life, it&#39;s where you end up. Believe in yourself." data-author="Colin Powell" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="It&#39;s not where you started in life, it&#39;s where you end up. Believe in yourself." data-author="Colin Powell" data-slug="its-not-where-you-started" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/you-can-never-rise-higher-than-your-expectations/" class="quote-card-link">
    <span class="quote-card-tag">Self-Love</span>
    <blockquote class="quote-card-text">You can never rise higher than your expectations of yourself. Expect the best!</blockquote>
    <cite class="quote-card-author">— Brian Tracy</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="You can never rise higher than your expectations of yourself. Expect the best!" data-author="Brian Tracy" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="You can never rise higher than your expectations of yourself. Expect the best!" data-author="Brian Tracy" data-slug="you-can-never-rise-higher-than-your-expectations" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/if-theres-just-one-piece-of-advice-i-can-give-its-this-when-theres-something-you/" class="quote-card-link">
    <span class="quote-card-tag">Self-Love</span>
    <blockquote class="quote-card-text">If there&#39;s just one piece of advice I can give, it&#39;s this: when there&#39;s something you really want - fight for it, don&#39;t give up no matter how hopeless it seems. And when you&#39;ve lost hope, ask yourself if ten years from now, you&#39;re gonna wish you gave it just one more shot...because the best things in life don&#39;t come free.</blockquote>
    <cite class="quote-card-author">— Ellen Pompeo</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="If there&#39;s just one piece of advice I can give, it&#39;s this: when there&#39;s something you really want - fight for it, don&#39;t give up no matter how hopeless it seems. And when you&#39;ve lost hope, ask yourself if ten years from now, you&#39;re gonna wish you gave it just one more shot...because the best things in life don&#39;t come free." data-author="Ellen Pompeo" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="If there&#39;s just one piece of advice I can give, it&#39;s this: when there&#39;s something you really want - fight for it, don&#39;t give up no matter how hopeless it seems. And when you&#39;ve lost hope, ask yourself if ten years from now, you&#39;re gonna wish you gave it just one more shot...because the best things in life don&#39;t come free." data-author="Ellen Pompeo" data-slug="if-theres-just-one-piece-of-advice-i-can-give-its-this-when-theres-something-you" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/ive-lived-long-enough-to-know-that-most-of-the-things-i-worried-about-never-happ/" class="quote-card-link">
    <span class="quote-card-tag">Self-Love</span>
    <blockquote class="quote-card-text">I’ve lived long enough to know that most of the things I worried about never happened, that most of the things I felt bad about turned out to be for the better, and that most of the things I hoped would stay the same couldn’t stay the same if they wanted to, because change is the Process of Life Itself.</blockquote>
    <cite class="quote-card-author">— Neale Donald Walsch</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="I’ve lived long enough to know that most of the things I worried about never happened, that most of the things I felt bad about turned out to be for the better, and that most of the things I hoped would stay the same couldn’t stay the same if they wanted to, because change is the Process of Life Itself." data-author="Neale Donald Walsch" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="I’ve lived long enough to know that most of the things I worried about never happened, that most of the things I felt bad about turned out to be for the better, and that most of the things I hoped would stay the same couldn’t stay the same if they wanted to, because change is the Process of Life Itself." data-author="Neale Donald Walsch" data-slug="ive-lived-long-enough-to-know-that-most-of-the-things-i-worried-about-never-happ" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

    </div>
  </div>
</section>

<!-- ── STORIES ── -->
<section class="section-alt" id="stories">
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Inspirational Stories</h2>
      <a href="/articles/" class="see-all">All stories →</a>
    </div>
    <div class="stories-grid">
      
      <a href="/articles/every-story-has-a-beginning/" class="story-card r">
        <div class="story-img"><span>"Before they were famous, your favorite celebrities were washing dishes, selling ..."</span></div>
        <div class="story-body">
          <span class="story-tag">Motivation</span>
          <h3 class="story-title">Every Successful Story Has a Painful Beginning</h3>
          <p class="story-excerpt">Before they were famous, your favorite celebrities were washing dishes, selling pens over the phone, and getting fired f...</p>
        </div>
      </a>
      
      <a href="/articles/17-rules-for-happiness/" class="story-card r">
        <div class="story-img"><span>"Karl Moore&#39;s 17 simple rules for being happier every day. From letting go of sel..."</span></div>
        <div class="story-body">
          <span class="story-tag">Happiness</span>
          <h3 class="story-title">17 Rules for Happiness (by Karl Moore)</h3>
          <p class="story-excerpt">Karl Moore&#39;s 17 simple rules for being happier every day. From letting go of self-pity to following your bliss, these ru...</p>
        </div>
      </a>
      
      <a href="/articles/ubuntu-running-together/" class="story-card r">
        <div class="story-img"><span>"An anthropologist fills a basket with fruit and tells a group of children whoeve..."</span></div>
        <div class="story-body">
          <span class="story-tag">Community</span>
          <h3 class="story-title">Ubuntu: Why Running Together Feels Better Than Winning Alone</h3>
          <p class="story-excerpt">An anthropologist fills a basket with fruit and tells a group of children whoever reaches it first wins everything. What...</p>
        </div>
      </a>
      
      <a href="/articles/30-days-of-carrying-my-wife/" class="story-card r">
        <div class="story-img"><span>"A husband asks for a divorce. His wife makes one quiet request before she agrees..."</span></div>
        <div class="story-body">
          <span class="story-tag">Love</span>
          <h3 class="story-title">30 Days of Carrying My Wife</h3>
          <p class="story-excerpt">A husband asks for a divorce. His wife makes one quiet request before she agrees. What happens over the next thirty days...</p>
        </div>
      </a>
      
      <a href="/articles/find-happiness-by-giving-it/" class="story-card r">
        <div class="story-img"><span>"Fifty people each write their name on a balloon. They can&#39;t find their own. But ..."</span></div>
        <div class="story-body">
          <span class="story-tag">Happiness</span>
          <h3 class="story-title">Find Happiness by Giving It Away</h3>
          <p class="story-excerpt">Fifty people each write their name on a balloon. They can&#39;t find their own. But then something surprising happens. This ...</p>
        </div>
      </a>
      
      <a href="/articles/building-your-house/" class="story-card r">
        <div class="story-img"><span>"An elderly carpenter is asked to build one final house before retiring. He does ..."</span></div>
        <div class="story-body">
          <span class="story-tag">Wisdom</span>
          <h3 class="story-title">Building Your House</h3>
          <p class="story-excerpt">An elderly carpenter is asked to build one final house before retiring. He does a careless job, wanting to get it done f...</p>
        </div>
      </a>
      
    </div>
  </div>
</section>

<!-- ── RESILIENCE QUOTES ── -->

<section>
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Resilience</h2>
      <a href="/categories/resilience/" class="see-all">767 quotes →</a>
    </div>
    <div class="quote-grid">

<article class="quote-card r">
  <a href="/quotes/fall-down-seven-times-stand-up-eight/" class="quote-card-link">
    <span class="quote-card-tag">Resilience</span>
    <blockquote class="quote-card-text">Fall down seven times, stand up eight.</blockquote>
    <cite class="quote-card-author">— Chinese Proverb</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Fall down seven times, stand up eight." data-author="Chinese Proverb" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Fall down seven times, stand up eight." data-author="Chinese Proverb" data-slug="fall-down-seven-times-stand-up-eight" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/getting-over-a-painful-experience/" class="quote-card-link">
    <span class="quote-card-tag">Resilience</span>
    <blockquote class="quote-card-text">Getting over a painful experience is much like crossing monkey bars. You have to let go at some point in order to move forward.</blockquote>
    <cite class="quote-card-author">— C.S. Lewis</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Getting over a painful experience is much like crossing monkey bars. You have to let go at some point in order to move forward." data-author="C.S. Lewis" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Getting over a painful experience is much like crossing monkey bars. You have to let go at some point in order to move forward." data-author="C.S. Lewis" data-slug="getting-over-a-painful-experience" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/the-more-we-struggle-to-resolve-a-negative-reaction-the-more-wrapped-up-in-it-we/" class="quote-card-link">
    <span class="quote-card-tag">Resilience</span>
    <blockquote class="quote-card-text">The more we struggle to resolve a negative reaction, the more wrapped up in it we become. Remember, we animate what we give our attention to.</blockquote>
    <cite class="quote-card-author">— Guy Finley</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="The more we struggle to resolve a negative reaction, the more wrapped up in it we become. Remember, we animate what we give our attention to." data-author="Guy Finley" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="The more we struggle to resolve a negative reaction, the more wrapped up in it we become. Remember, we animate what we give our attention to." data-author="Guy Finley" data-slug="the-more-we-struggle-to-resolve-a-negative-reaction-the-more-wrapped-up-in-it-we" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/anyone-can-be-taken-at-any-time/" class="quote-card-link">
    <span class="quote-card-tag">Resilience</span>
    <blockquote class="quote-card-text">Anyone can be taken, at any time in our lives, but we always wait until they&#39;re gone to say the things we never had the courage to before.</blockquote>
    <cite class="quote-card-author">— Melody Carlson</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Anyone can be taken, at any time in our lives, but we always wait until they&#39;re gone to say the things we never had the courage to before." data-author="Melody Carlson" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Anyone can be taken, at any time in our lives, but we always wait until they&#39;re gone to say the things we never had the courage to before." data-author="Melody Carlson" data-slug="anyone-can-be-taken-at-any-time" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/i-became-strong-when-you-set-me-free/" class="quote-card-link">
    <span class="quote-card-tag">Resilience</span>
    <blockquote class="quote-card-text">I became strong when you set me free and I became even stronger when I let you go.</blockquote>
    <cite class="quote-card-author">— Joe Marcial</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="I became strong when you set me free and I became even stronger when I let you go." data-author="Joe Marcial" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="I became strong when you set me free and I became even stronger when I let you go." data-author="Joe Marcial" data-slug="i-became-strong-when-you-set-me-free" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/the-struggle-youre-in-today/" class="quote-card-link">
    <span class="quote-card-tag">Resilience</span>
    <blockquote class="quote-card-text">The struggle you&#39;re in today is developing the strength you need for tomorrow. Don&#39;t give up.</blockquote>
    <cite class="quote-card-author">— Robert Tew</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="The struggle you&#39;re in today is developing the strength you need for tomorrow. Don&#39;t give up." data-author="Robert Tew" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="The struggle you&#39;re in today is developing the strength you need for tomorrow. Don&#39;t give up." data-author="Robert Tew" data-slug="the-struggle-youre-in-today" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

    </div>
  </div>
</section>

<!-- ── NEWSLETTER ── -->
<section class="newsletter-section" id="newsletter">
  <span class="nl-label">Free daily newsletter</span>
  <h2 class="nl-title">Start Every Morning with Intent</h2>
  <p class="nl-desc">One quote and one short thought, most mornings. Under a minute to read, and one tap to stop it if it ever stops helping.</p>
  <form class="nl-form" onsubmit="handleSubscribe(event)">
    <input class="nl-input" type="email" placeholder="Your email address" required aria-label="Email address"/>
    <button class="nl-submit" type="submit">Subscribe</button>
  </form>
  <p class="nl-note">Free forever · Unsubscribe anytime</p>
</section>

<!-- ── MINDFULNESS QUOTES ── -->

<section>
  <div class="wrap">
    <div class="sec-header r">
      <h2 class="sec-title">Mindfulness</h2>
      <a href="/categories/mindfulness/" class="see-all">707 quotes →</a>
    </div>
    <div class="quote-grid">

<article class="quote-card r">
  <a href="/quotes/the-soul-becomes-dyed-with-the-color-of-its-thoughts/" class="quote-card-link">
    <span class="quote-card-tag">Mindfulness</span>
    <blockquote class="quote-card-text">The soul becomes dyed with the color of its thoughts.</blockquote>
    <cite class="quote-card-author">— Marcus Aurelius</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="The soul becomes dyed with the color of its thoughts." data-author="Marcus Aurelius" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="The soul becomes dyed with the color of its thoughts." data-author="Marcus Aurelius" data-slug="the-soul-becomes-dyed-with-the-color-of-its-thoughts" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/every-single-thing-that-happened/" class="quote-card-link">
    <span class="quote-card-tag">Mindfulness</span>
    <blockquote class="quote-card-text">Every single thing that has ever happened in your life is preparing you for the moment that is to come.</blockquote>
    <cite class="quote-card-author">— Oprah Winfrey</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Every single thing that has ever happened in your life is preparing you for the moment that is to come." data-author="Oprah Winfrey" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Every single thing that has ever happened in your life is preparing you for the moment that is to come." data-author="Oprah Winfrey" data-slug="every-single-thing-that-happened" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/live-each-moment/" class="quote-card-link">
    <span class="quote-card-tag">Mindfulness</span>
    <blockquote class="quote-card-text">Live each moment from your own inspiration, not from your desire to look good in the eyes of others.</blockquote>
    <cite class="quote-card-author">— Ralph Marston</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Live each moment from your own inspiration, not from your desire to look good in the eyes of others." data-author="Ralph Marston" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Live each moment from your own inspiration, not from your desire to look good in the eyes of others." data-author="Ralph Marston" data-slug="live-each-moment" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/trust-yourself-youve-survived-a-lot/" class="quote-card-link">
    <span class="quote-card-tag">Self-Love</span>
    <blockquote class="quote-card-text">Trust yourself. You&#39;ve survived a lot, and you&#39;ll survive whatever is coming.</blockquote>
    <cite class="quote-card-author">— Robert Tew</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Trust yourself. You&#39;ve survived a lot, and you&#39;ll survive whatever is coming." data-author="Robert Tew" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Trust yourself. You&#39;ve survived a lot, and you&#39;ll survive whatever is coming." data-author="Robert Tew" data-slug="trust-yourself-youve-survived-a-lot" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/stress-is-resistance-to/" class="quote-card-link">
    <span class="quote-card-tag">Mindfulness</span>
    <blockquote class="quote-card-text">Stress is resistance to living in the moment.</blockquote>
    <cite class="quote-card-author">— Dr. Andy Baldwin</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="Stress is resistance to living in the moment." data-author="Dr. Andy Baldwin" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="Stress is resistance to living in the moment." data-author="Dr. Andy Baldwin" data-slug="stress-is-resistance-to" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

<article class="quote-card r">
  <a href="/quotes/what-we-fear-most/" class="quote-card-link">
    <span class="quote-card-tag">Growth</span>
    <blockquote class="quote-card-text">What we fear doing most is usually what we most need to do.</blockquote>
    <cite class="quote-card-author">— Tim Ferriss</cite>
  </a>
  <div class="quote-card-actions">
    <button class="qca" data-action="copy" data-text="What we fear doing most is usually what we most need to do." data-author="Tim Ferriss" title="Copy quote" aria-label="Copy quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
    </button>
    <button class="qca heart-btn" data-action="save" data-text="What we fear doing most is usually what we most need to do." data-author="Tim Ferriss" data-slug="what-we-fear-most" title="Save quote" aria-label="Save quote">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
    </button>
  </div>
</article>

    </div>
  </div>
</section>

<script>
// Hero carousel data (inlined — small, needed immediately)
window.HERO_QUOTES = [
  
  { text: "You become what you think about most of the time. You think about your goals most of the time.", author: "Brian Tracy", slug: "you-become-what-you-think-about" },
  
  { text: "Vulnerability is not weakness; it&#39;s our greatest measure of courage.", author: "Brené Brown", slug: "vulnerability-is-courage" },
  
  { text: "You have to build calluses on your brain just like how you build calluses on your hands.", author: "David Goggins", slug: "build-calluses-on-your-brain" },
  
  { text: "If you have the impulse to act on a goal, you must physically move within five seconds, or your brain will kill the idea.", author: "Mel Robbins", slug: "five-second-rule" },
  
  { text: "You are the average of the five people you spend the most time with.", author: "Jim Rohn", slug: "average-of-five-people" },
  
  { text: "The quality of your relationships determines the quality of your life.", author: "Esther Perel", slug: "quality-of-relationships" },
  
  { text: "Love is an action, never simply a feeling.", author: "bell hooks", slug: "love-is-an-action" }
  
];

// ── MOOD SEARCH ───────────────────────────────────────────────────────────────
var _quotesIndexLoaded = false;
var _quotesIndexLoading = false;
var _moodQueue = null;

function _loadQuotesIndex(cb) {
  if (_quotesIndexLoaded) { cb(); return; }
  if (_quotesIndexLoading) { _moodQueue = cb; return; }
  _quotesIndexLoading = true;
  var s = document.createElement('script');
  s.src = '/assets/js/quotes-index.js?v=4';
  s.onload = function() {
    _quotesIndexLoaded = true;
    _quotesIndexLoading = false;
    cb();
    if (_moodQueue) { _moodQueue(); _moodQueue = null; }
  };
  s.onerror = function() {
    _quotesIndexLoading = false;
    document.getElementById('moodLoading').hidden = true;
    document.getElementById('moodEmpty').hidden = false;
  };
  document.head.appendChild(s);
}

// Mood synonym map — expands user input to related terms
var MOOD_SYNONYMS = {
  'sad':         ['sad','sadness','grief','sorrow','hurt','pain','tears','crying','down','blue'],
  'happy':       ['happy','happiness','joy','joyful','delight','smile','grateful','glad','cheerful'],
  'anxious':     ['anxious','anxiety','stress','stressed','worry','worried','nervous','fear','scared'],
  'lonely':      ['lonely','loneliness','alone','isolated','empty','missing','disconnected'],
  'heartbroken': ['heartbroken','heartbreak','broken','love','lost','goodbye','letting go','moving on'],
  'motivated':   ['motivated','motivation','inspired','inspiration','driven','ambition','goal','purpose'],
  'grateful':    ['grateful','gratitude','thankful','appreciate','blessings','abundance','blessed'],
  'lost':        ['lost','confused','uncertain','searching','direction','path','purpose','clarity'],
  'tired':       ['tired','exhausted','burned out','weary','drained','overwhelmed','rest'],
  'struggling':  ['struggling','struggle','hard time','difficult','pain','strength','perseverance'],
  'peaceful':    ['peaceful','peace','calm','stillness','quiet','serenity','tranquil','content'],
  'inspired':    ['inspired','inspiration','motivated','growth','potential','becoming','change'],
  'broken':      ['broken','healing','heal','pain','hurt','scars','recovery','strength'],
  'insecure':    ['insecure','insecurity','self-worth','confidence','enough','value','worthy'],
  'grieving':    ['grief','loss','death','gone','missing','remember','letting go','healing'],
  'hopeful':     ['hope','hopeful','future','believe','better','possible','faith','trust']
};

function expandMoodTerms(input) {
  var terms = input.toLowerCase().trim().split(/[\s,]+/).filter(Boolean);
  var expanded = new Set(terms);
  terms.forEach(function(t) {
    // Direct match in synonym map
    if (MOOD_SYNONYMS[t]) {
      MOOD_SYNONYMS[t].forEach(function(s) { expanded.add(s); });
    }
    // Partial match — if any key starts with the term
    Object.keys(MOOD_SYNONYMS).forEach(function(k) {
      if (k.indexOf(t) === 0 || t.indexOf(k) === 0) {
        MOOD_SYNONYMS[k].forEach(function(s) { expanded.add(s); });
      }
    });
  });
  return Array.from(expanded);
}

function scoreMoodQuote(q, terms) {
  var score = 0;
  var textLow = q.text.toLowerCase();
  var moods = q.moods || [];
  terms.forEach(function(t) {
    if (moods.indexOf(t) !== -1) score += 3;         // direct mood match
    if (textLow.indexOf(t) !== -1) score += 1;       // text contains term
    if (q.categorySlug && q.categorySlug.indexOf(t) !== -1) score += 1;
  });
  return score;
}

function renderMoodResults(matches) {
  var container = document.getElementById('moodResults');
  var emptyEl   = document.getElementById('moodEmpty');
  document.getElementById('moodLoading').hidden = true;

  if (!matches || matches.length === 0) {
    container.hidden = true;
    emptyEl.hidden = false;
    return;
  }
  emptyEl.hidden = true;
  container.hidden = false;

  var html = matches.map(function(q) {
    return '<div class="mood-result-row">'
      + '<div class="mrr-body">'
      + '<p class="mrr-text">' + escHtml(q.text) + '</p>'
      + '<span class="mrr-author">— ' + escHtml(q.author) + '</span>'
      + '</div>'
      + '<div class="mrr-actions">'
      + '<a href="/quotes/' + escHtml(q.slug) + '/" class="mrr-link" aria-label="View full quote">View</a>'
      + '<button class="qrb" data-action="copy" data-text="' + escHtml(q.text) + '" data-author="' + escHtml(q.author) + '" title="Copy" aria-label="Copy quote">'
      + '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>'
      + '</button>'
      + '</div>'
      + '</div>';
  }).join('');
  container.innerHTML = html;

  // Trigger scroll-reveal
  container.querySelectorAll('.mood-result-row').forEach(function(el, i) {
    el.style.animationDelay = (i * 60) + 'ms';
  });
}

function escHtml(s) {
  return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');
}
function esc(s) {
  return String(s).replace(/\\/g,'\\\\').replace(/'/g,"\\'").replace(/"/g,'\\"');
}
function copyMoodQuote(text, author) {
  var full = '"' + text + '" — ' + author;
  if (navigator.clipboard) {
    navigator.clipboard.writeText(full).then(function() { showToast('Copied!'); });
  } else {
    var ta = document.createElement('textarea');
    ta.value = full; document.body.appendChild(ta); ta.select();
    try { document.execCommand('copy'); showToast('Copied!'); } catch(e) {}
    document.body.removeChild(ta);
  }
}

function runMoodSearch() {
  var input = document.getElementById('moodInput');
  var query = (input ? input.value : '').trim();
  if (!query) return;

  document.getElementById('moodLoading').hidden = false;
  document.getElementById('moodResults').hidden = true;
  document.getElementById('moodEmpty').hidden = true;

  _loadQuotesIndex(function() {
    var terms = expandMoodTerms(query);
    var scored = window.ALL_QUOTES
      .map(function(q) { return { q: q, s: scoreMoodQuote(q, terms) }; })
      .filter(function(x) { return x.s > 0; })
      .sort(function(a, b) { return b.s - a.s; });
    renderMoodResults(scored.slice(0, 8).map(function(x) { return x.q; }));
  });
}

function setMood(btn, mood) {
  var input = document.getElementById('moodInput');
  if (input) input.value = mood;
  document.querySelectorAll('.mood-chip').forEach(function(c) { c.classList.remove('active'); });
  btn.classList.add('active');
  runMoodSearch();
}

// Trigger search on Enter key
document.addEventListener('DOMContentLoaded', function() {
  var input = document.getElementById('moodInput');
  if (input) {
    input.addEventListener('keydown', function(e) {
      if (e.key === 'Enter') runMoodSearch();
    });
    // Pre-load quotes index when user starts typing (not on first keypress)
    var typed = false;
    input.addEventListener('input', function() {
      if (!typed && !_quotesIndexLoaded) {
        typed = true;
        _loadQuotesIndex(function() {}); // silent pre-load
      }
    });
  }
});
</script>

<!-- ── YOU MIGHT ALSO LIKE (real curated recommendations) ── -->
<section class="rec-section" aria-labelledby="recTitle">
  <div class="wrap">
    <div class="sec-header r"><h2 class="sec-title" id="recTitle">You might also like</h2></div>
    <div class="rec-grid">
      <a class="rec-card rec-feature" href="/horoscope/">
        <span class="rec-kicker">New &middot; Daily</span>
        <span class="rec-name">Your Daily Horoscope</span>
        <span class="rec-desc">A free, uplifting message made just for you. New every single day.</span>
      </a>
      <a class="rec-card" href="/quiz/"><span class="rec-name">Movie &amp; TV Quote Quiz</span><span class="rec-desc">Guess the film or show from 1,000 iconic lines.</span></a>
      <a class="rec-card" href="/articles/good-morning-inspirational-quotes/"><span class="rec-name">80 Good Morning Quotes</span><span class="rec-desc">Start your day on the right foot.</span></a>
      <a class="rec-card" href="/articles/17-rules-for-happiness/"><span class="rec-name">17 Rules for Happiness</span><span class="rec-desc">Simple habits for a happier life.</span></a>
      <a class="rec-card" href="/categories/faith/"><span class="rec-name">Faith Quotes</span><span class="rec-desc">For when you need something to hold onto.</span></a>
      <a class="rec-card" href="/categories/life/"><span class="rec-name">Life Quotes</span><span class="rec-desc">Honest words about living fully.</span></a>
      <a class="rec-card" href="/articles/positive-quotes-for-the-day/"><span class="rec-name">100 Positive Quotes</span><span class="rec-desc">A daily lift when you need it.</span></a>
      <a class="rec-card" href="/authors/"><span class="rec-name">Browse by Author</span><span class="rec-desc">Wisdom from the voices you love.</span></a>
    </div>
  </div>
</section>
<style>
.rec-section{padding:8px 0 20px}
.rec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.rec-card{display:flex;flex-direction:column;gap:5px;padding:18px 20px;border:1px solid var(--line,#e4e4e4);border-radius:12px;background:var(--surface,#fff);text-decoration:none;transition:transform .15s ease,border-color .15s ease}
.rec-card:hover{transform:translateY(-2px);border-color:var(--ink,#0d0d0d)}
.rec-card .rec-name{font-family:var(--serif,'Fraunces'),serif;font-size:18px;color:var(--ink,#0d0d0d)}
.rec-card .rec-desc{font-family:var(--sans,'Inter'),sans-serif;font-size:13px;line-height:1.55;color:var(--ink2,#3a3a3a)}
.rec-card .rec-kicker{font-family:var(--sans,'Inter'),sans-serif;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink,#7E5DBC)}
.rec-feature{grid-column:span 2;background:linear-gradient(135deg,rgba(180,160,255,.10),rgba(255,235,160,.10))}
@media (max-width:560px){.rec-feature{grid-column:span 1}}
</style>
<!-- ── Quiet closing band (marker: llh-quiet-band) ──────────────
     Sells nothing, asks for nothing. Text only, no image, no JS. -->
<style id="llh-quiet-band-css">
  .quiet-band{padding:58px 20px 64px;text-align:center}
  .quiet-in{max-width:600px;margin:0 auto}
  .quiet-rule{display:block;width:34px;height:1px;background:var(--ink4,#CFCFCF);margin:0 auto 26px}
  .quiet-band h2{font-family:var(--serif);font-weight:300;font-style:italic;
    font-size:clamp(21px,4.2vw,28px);line-height:1.35;color:var(--ink,#0D0D0D);margin:0 0 16px}
  .quiet-band p{font-family:var(--sans);font-size:15px;line-height:1.75;
    color:var(--ink2,#3A3A3A);margin:0 auto 12px;max-width:50ch}
  .quiet-band .quiet-soft{font-size:13.5px;color:var(--ink3,#888);margin-bottom:0}
</style>
<section class="quiet-band" aria-labelledby="quietH">
  <div class="quiet-in">
    <span class="quiet-rule" aria-hidden="true"></span>
    <h2 id="quietH">Stay as long as you like. Leave whenever you want.</h2>
    <p>There&#8217;s no account to make here, nothing to finish, and nobody keeping score
    of how long you stayed or how often you come back. This has been a quiet corner of the
    internet since 2007, and that is genuinely all it is trying to be.</p>
    <p>Take whatever helped and leave the rest. If today wasn&#8217;t the day for any of it,
    that&#8217;s alright too, and nothing here will think less of you for it.</p>
    <p class="quiet-soft">The door doesn&#8217;t lock behind you. We&#8217;ll be here.</p>
  </div>
</section>

</main>

  <footer class="site-footer">
  <div class="wrap">
    <div class="footer-grid">

      <div class="footer-brand">
        <a href="/" class="logo">Live Life Happy</a>
        <p>A quiet corner of the internet for words that matter. Sharing wisdom since 2007.</p>
      </div>

      <div class="footer-col">
        <h2>Explore</h2>
        <ul>
          <li><a href="/quotes/">All Quotes</a></li>
          <li><a href="/authors/">Famous Authors</a></li>
          <li><a href="/categories/">All Categories</a></li>
          <li><a href="/quotes/topics/">Quote Collections</a></li>
          <li><a href="/#stories">Inspirational Stories</a></li>
          <li><a href="/tools/quote-maker/">Free Quote Maker</a></li>
          <li><a href="/quote-of-the-day/">Quote of the Day</a></li>
        </ul>
      </div>

      <div class="footer-col">
        <h2>Popular Collections</h2>
        <ul>
          <li><a href="/quotes/topics/best-self-love-quotes/">Self-Love Quotes</a></li>
          <li><a href="/quotes/topics/best-quotes-for-breakups/">Breakup Quotes</a></li>
          <li><a href="/quotes/topics/short-inspirational-quotes/">Short Inspirational Quotes</a></li>
          <li><a href="/quotes/topics/positive-morning-quotes-to-start-your-day/">Morning Quotes</a></li>
          <li><a href="/quotes/topics/motivational-success-quotes/">Success Quotes</a></li>
        </ul>
      </div>

    </div>

    <div class="footer-bottom">
      <p>© 2026 Live Life Happy · Est. 2007</p>
      <div class="footer-links">
        <a href="/privacy/">Privacy</a>
        <a href="/terms/">Terms</a>
        <a href="/disclosure/">Disclosure</a>
        <a href="/copyright/">Copyright</a>
        <a href="/about/">About</a>
        <a href="/contact/">Contact</a>
        <a href="/support/">Support</a>
      </div>
    </div>
  </div>
</footer>

  <nav class="bottom-nav" aria-label="Mobile navigation">
  <a href="/" class="bn-item">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
    Home
  </a>
  <a href="/quotes/" class="bn-item">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z"/><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z"/></svg>
    Quotes
  </a>
  <button class="bn-item" onclick="openSearch()">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
    Search
  </button>
  <button class="bn-item" id="savedTab" onclick="showSaved()">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z"/></svg>
    Saved
  </button>
  <a href="/articles/" class="bn-item">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6z"/><polyline points="22,6 12,13 2,6"/></svg>
    Stories
  </a>
</nav>

  <div class="toast" id="toast" aria-live="polite"></div>

  <script defer src="/assets/js/main.min.js?v=17"></script>

  <!-- ── DAILY QUOTE ROTATION ──
       Picks 7 quotes for the hero "Quote of the Day" rotator and 12 for
       the "Today's Quotes" list. Selection is deterministic per calendar
       day, so all visitors see the same set on the same day, and a fresh
       set automatically every 24 hours. -->
  <script>
  (function() {
    'use strict';

    // ---- Helpers ----
    function escHtml(s) {
      return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
    }
    function escAttr(s) {
      return String(s).replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
    }
    function slugify(s) {
      return String(s||'').toLowerCase().replace(/[^\w\s-]/g,'').replace(/\s+/g,'-');
    }

    // Days since epoch — same for all visitors on the same calendar day.
    function daySeed() {
      var now = new Date();
      var utcMidnight = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
      return Math.floor(utcMidnight / 86400000);
    }

    // Mulberry32 PRNG — fast, simple, deterministic from a seed.
    function mulberry32(seed) {
      return function() {
        seed = (seed + 0x6D2B79F5) | 0;
        var t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
        t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
        return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
      };
    }

    // Pick N unique quotes from a pool using a date-based seed.
    function pickDaily(pool, n, seedOffset) {
      var rand = mulberry32(daySeed() + seedOffset);
      var used = {};
      var picked = [];
      var attempts = 0;
      while (picked.length < n && attempts < n * 50) {
        var idx = Math.floor(rand() * pool.length);
        if (!used[idx]) { used[idx] = true; picked.push(pool[idx]); }
        attempts++;
      }
      return picked;
    }

    function renderHeroSlides(quotes) {
      var track = document.getElementById('quoteTrack');
      if (!track) return;
      track.innerHTML = quotes.map(function(q, i) {
        return '<div class="quote-slide" role="group" aria-roledescription="slide" aria-label="Quote ' + (i+1) + ' of ' + quotes.length + '">' +
                 '<div class="q-open" aria-hidden="true">&quot;</div>' +
                 '<blockquote class="quote-text">' + escHtml(q.text) + '</blockquote>' +
                 '<cite class="quote-author">&mdash; ' + escHtml(q.author) + '</cite>' +
               '</div>';
      }).join('');

      // Update the HERO_QUOTES array so any carousel logic that reads it stays in sync.
      window.HERO_QUOTES = quotes.map(function(q) {
        return { text: q.text, author: q.author, slug: q.slug };
      });

      // Rebuild the dot indicators if the carousel created them
      var dots = document.getElementById('heroDots');
      if (dots) {
        dots.innerHTML = quotes.map(function(_, i) {
          return '<button class="dot' + (i === 0 ? ' active' : '') + '" role="tab" aria-label="Quote ' + (i+1) + '" data-idx="' + i + '"></button>';
        }).join('');
      }

      // Reset the carousel to the first slide
      track.style.transform = 'translateX(0)';
    }

    function renderTodaysQuotes(quotes) {
      var list = document.getElementById('quoteList');
      if (!list) return;
      list.innerHTML = quotes.map(function(q, i) {
        var num = (i+1).toString().padStart(2, '0');
        var text = escHtml(q.text);
        var author = escHtml(q.author);
        var authorSlug = q.authorSlug || slugify(q.author);
        var category = q.category ? escHtml(q.category) : '';
        var categorySlug = q.categorySlug || '';
        var aText = escAttr(q.text);
        var aAuthor = escAttr(q.author);
        var aSlug = escAttr(q.slug || slugify(q.text).slice(0, 60));

        var meta = '<a href="/authors/' + escAttr(authorSlug) + '/">' + author + '</a>';
        if (category && categorySlug) {
          meta += ' &middot; <a href="/categories/' + escAttr(categorySlug) + '/">' + category + '</a>';
        }

        return '<div class="quote-row r v">' +
                 '<span class="qr-num">' + num + '</span>' +
                 '<div class="qr-body">' +
                   '<p class="qr-text">&quot;' + text + '&quot;</p>' +
                   '<span class="qr-meta">' + meta + '</span>' +
                 '</div>' +
                 '<div class="qr-actions">' +
                   '<button class="qrb" data-action="copy" data-text="' + aText + '" data-author="' + aAuthor + '" title="Copy" aria-label="Copy quote">' +
                     '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>' +
                   '</button>' +
                   '<button class="qrb heart-btn" data-action="save" data-save="' + aSlug + '" data-text="' + aText + '" data-author="' + aAuthor + '" data-slug="' + aSlug + '" title="Save" aria-label="Save quote">' +
                     '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path class="heart-fill" d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>' +
                   '</button>' +
                 '</div>' +
               '</div>';
      }).join('');

      // Re-sync save buttons so any previously-saved hearts show as filled.
      if (typeof window.syncSaveButtons === 'function') {
        window.syncSaveButtons();
      } else if (typeof syncSaveButtons === 'function') {
        try { syncSaveButtons(); } catch (e) {}
      }
    }

    function rotateDaily() {
      var all = window.HOME_QUOTES || window.ALL_QUOTES;
      if (!Array.isArray(all) || all.length === 0) return;

      // Filter to readable, well-attributed quotes (skip extremely long or unattributed)
      var pool = all.filter(function(q) {
        return q && q.text && q.text.length >= 20 && q.text.length <= 240 && q.author;
      });
      if (pool.length < 30) pool = all;

      var heroPicks = pickDaily(pool, 7, 0);
      var todayPicks = pickDaily(pool, 12, 1000);

      renderHeroSlides(heroPicks);
      renderTodaysQuotes(todayPicks);

      // Re-run the appearance observer so the new rows fade in.
      var rows = document.querySelectorAll('.quote-row.r:not(.v)');
      rows.forEach(function(r) { r.classList.add('v'); });
    }

    // Load a small curated pool (~180KB) for the daily rotation instead of the
    // full 3.8MB index. The full index still loads on-demand for mood search.
    function loadIndexAndRotate() {
      if (window.HOME_QUOTES || window.ALL_QUOTES) { rotateDaily(); return; }

      var s = document.createElement('script');
      s.src = '/assets/js/home-quotes.js?v=1';
      s.onload = rotateDaily;
      s.onerror = function() {
        // Fallback to the full index only if the small pool fails to load.
        if (typeof _loadQuotesIndex === 'function') { _loadQuotesIndex(rotateDaily); return; }
        var f = document.createElement('script');
        f.src = '/assets/js/quotes-index.js?v=4';
        f.onload = rotateDaily;
        document.head.appendChild(f);
      };
      document.head.appendChild(s);
    }

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', loadIndexAndRotate);
    } else {
      loadIndexAndRotate();
    }
  })();
  </script>

</body>
</html>
