PageSourceSearch

https://dreamcrafttale.com/story-library/

html dreamcrafttale.com collected 2026-09-24 11:02:28 UTC 67,016 bytes, 270 lines download raw bytes

1<!DOCTYPE html><html lang="en" data-astro-cid-37fxchfa> <head><meta charset="UTF-8"><meta name="description" content="Browse hundreds of short stories for kids, bedtime stories, and fairy tales created by families. Get inspired and create your own personalized storybook with Dreamcraft Tale."><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" type="image/png" href="/favicon.png"><meta name="generator" content="Astro v5.13.7"><title>Story Library | Explore Bedtime Stories &amp; Fairy Tales for Kids</title><!-- Canonical URL --><link rel="canonical" href="https://dreamcrafttale.com/story-library/"><!-- Block indexing on non-production environments --><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://dreamcrafttale.com/story-library/"><meta property="og:title" content="Story Library | Explore Bedtime Stories &#38; Fairy Tales for Kids"><meta property="og:description" content="Browse hundreds of short stories for kids, bedtime stories, and fairy tales created by families. Get inspired and create your own personalized storybook with Dreamcraft Tale."><meta property="og:image" content="https://dreamcrafttale.com/assets/images/feature.webp"><meta property="og:image:alt" content="Dreamcraft Tale - Magical storytelling app for kids"><meta property="og:site_name" content="Dreamcraft Tale"><!-- Twitter --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:url" content="https://dreamcrafttale.com/story-library/"><meta name="twitter:title" content="Story Library | Explore Bedtime Stories &#38; Fairy Tales for Kids"><meta name="twitter:description" content="Browse hundreds of short stories for kids, bedtime stories, and fairy tales created by families. Get inspired and create your own personalized storybook with Dreamcraft Tale."><meta name="twitter:image" content="https://dreamcrafttale.com/assets/images/feature.webp"><meta name="twitter:image:alt" content="Dreamcraft Tale - Magical storytelling app for kids"><!-- Fonts - Non-blocking loading --><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><!-- Async CSS with preload --><link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" onload="this.onload=null;this.rel='stylesheet';this.removeAttribute('as')" as="style"><!-- No-JS fallback --><noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"></noscript><!-- External Resources --><link rel="preconnect" href="https://www.buzzsprout.com" crossorigin><link rel="preconnect" href="https://pixel-config.reddit.com" crossorigin><link rel="preconnect" href="https://alb.reddit.com" crossorigin><!-- Global Styles imported above --><!-- Styles --><!-- Google Tag Manager -->
1<script>
vendor: 338 bytes, lines 1-6
1
2		(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
3		new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
4		j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
5		'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
6		})(window,document,'script','dataLayer','
6GTM-PBDXXGC2
vendor: 6 bytes, lines 6-7
6');
7		
7</script>
7<!-- End Google Tag Manager --><link rel="stylesheet" href="/_astro/about-acceptance.DCom7teV.css">
8<style>.line-clamp-2[data-astro-cid-ndhobcjl]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3[data-astro-cid-ndhobcjl]{display:-webkit-box!important;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.aspect-square[data-astro-cid-ndhobcjl]{aspect-ratio:1 / 1}
9</style></head> <body data-astro-cid-37fxchfa> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PBDXXGC2" height="0" width="0" style="display:none;visibility:hidden" data-astro-cid-37fxchfa></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <header class="bg-white shadow-sm border-b border-gray-200" data-astro-cid-3ef6ksr2> <div class="container mx-auto px-4 py-4" data-astro-cid-3ef6ksr2> <div class="flex items-center justify-between" data-astro-cid-3ef6ksr2> <!-- Logo --> <a href="/" class="flex items-center space-x-2" data-astro-cid-3ef6ksr2> <img src="/assets/images/icon_small.webp" alt="Dreamcraft Tale" class="w-8 h-8 rounded-lg" data-astro-cid-3ef6ksr2> <span class="text-xl font-bold text-gray-900" data-astro-cid-3ef6ksr2>Dreamcraft Tale</span> </a> <!-- Navigation --> <nav class="hidden xl:flex items-center space-x-8" data-astro-cid-3ef6ksr2> <a href="/" class="text-gray-600 hover:text-indigo-600 transition-colors" data-astro-cid-3ef6ksr2>Home</a> <a href="/story-library" class="text-gray-600 hover:text-indigo-600 transition-colors" data-astro-cid-3ef6ksr2>Story Library</a> <a href="/our-story" class="text-gray-600 hover:text-indigo-600 transition-colors" data-astro-cid-3ef6ksr2>Our Story</a> <a href="/quality-and-safety" class="text-gray-600 hover:text-indigo-600 transition-colors" data-astro-cid-3ef6ksr2>Safety</a> <a href="/for-educators" class="text-gray-600 hover:text-indigo-600 transition-colors" data-astro-cid-3ef6ksr2>For Educators</a> <a href="/blog" class="text-gray-600 hover:text-indigo-600 transition-colors" data-astro-cid-3ef6ksr2>Blog</a> <a href="/contact" class="text-gray-600 hover:text-indigo-600 transition-colors" data-astro-cid-3ef6ksr2>Contact</a> </nav> <!-- CTA Buttons --> <div class="flex items-center space-x-3" data-astro-cid-3ef6ksr2> <a href="https://apps.apple.com/app/id6752249916?utm_source=website&utm_medium=header&utm_campaign=story-library" target="_blank" rel="noopener noreferrer" class="btn-primary text-sm px-4 py-2 hidden xl:inline-block" data-download-cta data-platform="app_store" data-medium="header" data-campaign="story-library" data-ios-url="https://apps.apple.com/app/id6752249916?utm_source=website&utm_medium=header&utm_campaign=story-library" data-android-url="https://play.google.com/store/apps/details?id=com.piimobile.ai.story&utm_source=website&utm_medium=header&utm_campaign=story-library" data-astro-cid-3ef6ksr2>
10Download App
11</a> <!-- Mobile menu button --> <button id="mobile-menu-button" class="xl:hidden p-2 rounded-md text-gray-600 hover:text-gray-900 hover:bg-gray-100" data-astro-cid-3ef6ksr2> <svg id="menu-open-icon" class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-3ef6ksr2> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" data-astro-cid-3ef6ksr2></path> </svg> <svg id="menu-close-icon" class="w-6 h-6 hidden" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-3ef6ksr2> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-astro-cid-3ef6ksr2></path> </svg> </button> </div> </div> <!-- Mobile menu --> <div id="mobile-menu" class="hidden xl:hidden mt-4 pb-4" data-astro-cid-3ef6ksr2> <nav class="flex flex-col space-y-4" data-astro-cid-3ef6ksr2> <a href="/" class="text-gray-600 hover:text-indigo-600 transition-colors px-4 py-2 hover:bg-gray-50 rounded-md" data-astro-cid-3ef6ksr2>Home</a> <a href="/story-library" class="text-gray-600 hover:text-indigo-600 transition-colors px-4 py-2 hover:bg-gray-50 rounded-md" data-astro-cid-3ef6ksr2>Story Library</a> <a href="/our-story" class="text-gray-600 hover:text-indigo-600 transition-colors px-4 py-2 hover:bg-gray-50 rounded-md" data-astro-cid-3ef6ksr2>Our Story</a> <a href="/quality-and-safety" class="text-gray-600 hover:text-indigo-600 transition-colors px-4 py-2 hover:bg-gray-50 rounded-md" data-astro-cid-3ef6ksr2>Safety</a> <a href="/for-educators" class="text-gray-600 hover:text-indigo-600 transition-colors px-4 py-2 hover:bg-gray-50 rounded-md" data-astro-cid-3ef6ksr2>For Educators</a> <a href="/blog" class="text-gray-600 hover:text-indigo-600 transition-colors px-4 py-2 hover:bg-gray-50 rounded-md" data-astro-cid-3ef6ksr2>Blog</a> <a href="/contact" class="text-gray-600 hover:text-indigo-600 transition-colors px-4 py-2 hover:bg-gray-50 rounded-md" data-astro-cid-3ef6ksr2>Contact</a> <div class="border-t border-gray-200 pt-4 mt-2 flex gap-3 px-4" data-astro-cid-3ef6ksr2> <a href="https://apps.apple.com/app/id6752249916?utm_source=website&utm_medium=header&utm_campaign=story-library" target="_blank" rel="noopener noreferrer" data-download-cta data-platform="app_store" data-medium="mobile_menu" data-campaign="story-library" data-astro-cid-3ef6ksr2> <img src="/assets/images/app_store_dark.svg" alt="Download on the App Store" class="h-11 w-auto" data-astro-cid-3ef6ksr2> </a> <a href="https://play.google.com/store/apps/details?id=com.piimobile.ai.story&utm_source=website&utm_medium=header&utm_campaign=story-library" target="_blank" rel="noopener noreferrer" data-download-cta data-platform="google_play" data-medium="mobile_menu" data-campaign="story-library" data-astro-cid-3ef6ksr2> <img src="/assets/images/google_play_dark.svg" alt="Get it on Google Play" class="h-11 w-auto" data-astro-cid-3ef6ksr2> </a> </div> </nav> </div> </div> </header> 
11<script type="module">const i=document.getElementById("mobile-menu-button"),e=document.getElementById("mobile-menu"),n=document.getElementById("menu-open-icon"),d=document.getElementById("menu-close-icon");i&&e&&n&&d&&(i.addEventListener("click",()=>{e.classList.contains("hidden")?(e.classList.remove("hidden"),n.classList.add("hidden"),d.classList.remove("hidden")):(e.classList.add("hidden"),n.classList.remove("hidden"),d.classList.add("hidden"))}),e.querySelectorAll("a").forEach(s=>{s.addEventListener("click",()=>{e.classList.add("hidden"),n.classList.remove("hidden"),d.classList.add("hidden")})}));</script>
11  <main data-astro-cid-37fxchfa>    <section class="bg-gradient-to-br from-indigo-50 via-white to-purple-50 py-16" data-astro-cid-ndhobcjl> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8" data-astro-cid-ndhobcjl> <div class="text-center mb-8" data-astro-cid-ndhobcjl> <h1 class="text-4xl md:text-5xl font-bold text-gray-900 mb-6" data-astro-cid-ndhobcjl>
12Explore a Universe of Stories
13</h1> <p class="text-xl text-gray-600 max-w-3xl mx-auto" data-astro-cid-ndhobcjl>
14Discover magical bedtime stories, fairy tales, and short stories for kids created by families just like yours. 
15					Get inspired and then create your own personalized storybook!
16</p> </div> </div> </section>  <section class="py-12 bg-white border-b" data-astro-cid-ndhobcjl> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8" data-astro-cid-ndhobcjl> <h2 class="text-2xl font-bold text-gray-900 mb-6" data-astro-cid-ndhobcjl>Browse by Category</h2> <div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-4 mb-8" data-astro-cid-ndhobcjl> <a href="/bedtime-stories/learning-adventures" class="flex flex-col items-center p-4 bg-gradient-to-br from-indigo-50 to-purple-50 rounded-xl hover:shadow-md transition-all duration-200 hover:-translate-y-0.5" data-astro-cid-ndhobcjl> <span class="text-3xl mb-2" data-astro-cid-ndhobcjl>🎓</span> <span class="font-semibold text-gray-900 text-sm text-center" data-astro-cid-ndhobcjl>Learning Adventures</span> <span class="text-xs text-gray-500" data-astro-cid-ndhobcjl>368 stories</span> </a><a href="/bedtime-stories/animal-friends" class="flex flex-col items-center p-4 bg-gradient-to-br from-indigo-50 to-purple-50 rounded-xl hover:shadow-md transition-all duration-200 hover:-translate-y-0.5" data-astro-cid-ndhobcjl> <span class="text-3xl mb-2" data-astro-cid-ndhobcjl>🐾</span> <span class="font-semibold text-gray-900 text-sm text-center" data-astro-cid-ndhobcjl>Animal Friends</span> <span class="text-xs text-gray-500" data-astro-cid-ndhobcjl>319 stories</span> </a><a href="/bedtime-stories/magical-worlds" class="flex flex-col items-center p-4 bg-gradient-to-br from-indigo-50 to-purple-50 rounded-xl hover:shadow-md transition-all duration-200 hover:-translate-y-0.5" data-astro-cid-ndhobcjl> <span class="text-3xl mb-2" data-astro-cid-ndhobcjl>✨</span> <span class="font-semibold text-gray-900 text-sm text-center" data-astro-cid-ndhobcjl>Magical Worlds</span> <span class="text-xs text-gray-500" data-astro-cid-ndhobcjl>249 stories</span> </a><a href="/bedtime-stories/everyday-heroes" class="flex flex-col items-center p-4 bg-gradient-to-br from-indigo-50 to-purple-50 rounded-xl hover:shadow-md transition-all duration-200 hover:-translate-y-0.5" data-astro-cid-ndhobcjl> <span class="text-3xl mb-2" data-astro-cid-ndhobcjl>🦸</span> <span class="font-semibold text-gray-900 text-sm text-center" data-astro-cid-ndhobcjl>Everyday Heroes</span> <span class="text-xs text-gray-500" data-astro-cid-ndhobcjl>149 stories</span> </a><a href="/bedtime-stories/silly-fun" class="flex flex-col items-center p-4 bg-gradient-to-br from-indigo-50 to-purple-50 rounded-xl hover:shadow-md transition-all duration-200 hover:-translate-y-0.5" data-astro-cid-ndhobcjl> <span class="text-3xl mb-2" data-astro-cid-ndhobcjl>😂</span> <span class="font-semibold text-gray-900 text-sm text-center" data-astro-cid-ndhobcjl>Silly &amp; Fun</span> <span class="text-xs text-gray-500" data-astro-cid-ndhobcjl>113 stories</span> </a><a href="/bedtime-stories/bedtime-stories" class="flex flex-col items-center p-4 bg-gradient-to-br from-indigo-50 to-purple-50 rounded-xl hover:shadow-md transition-all duration-200 hover:-translate-y-0.5" data-astro-cid-ndhobcjl> <span class="text-3xl mb-2" data-astro-cid-ndhobcjl>🌙</span> <span class="font-semibold text-gray-900 text-sm text-center" data-astro-cid-ndhobcjl>Bedtime Stories</span> <span class="text-xs text-gray-500" data-astro-cid-ndhobcjl>72 stories</span> </a> </div> <h3 class="text-lg font-semibold text-gray-900 mb-3" data-astro-cid-ndhobcjl>By Age Group</h3> <div class="flex flex-wrap gap-2 mb-6" data-astro-cid-ndhobcjl> <a href="/bedtime-stories/for-toddlers-age-2-3" class="px-4 py-2 bg-white border border-gray-200 rounded-full text-sm text-gray-700 hover:bg-indigo-50 hover:border-indigo-300 transition" data-astro-cid-ndhobcjl> Toddlers (2-3) </a><a href="/bedtime-stories/for-preschool-age-3-4" class="px-4 py-2 bg-white border border-gray-200 rounded-full text-sm text-gray-700 hover:bg-indigo-50 hover:border-indigo-300 transition" data-astro-cid-ndhobcjl> Preschool (3-4) </a><a href="/bedtime-stories/for-pre-k-age-4-5" class="px-4 py-2 bg-white border border-gray-200 rounded-full text-sm text-gray-700 hover:bg-indigo-50 hover:border-indigo-300 transition" data-astro-cid-ndhobcjl>
16 Pre-K (4-5) </a><a href="/bedtime-stories/for-kindergarten-age-5-6" class="px-4 py-2 bg-white border border-gray-200 rounded-full text-sm text-gray-700 hover:bg-indigo-50 hover:border-indigo-300 transition" data-astro-cid-ndhobcjl> Kindergarten (5-6) </a><a href="/bedtime-stories/for-grade-1-age-6-7" class="px-4 py-2 bg-white border border-gray-200 rounded-full text-sm text-gray-700 hover:bg-indigo-50 hover:border-indigo-300 transition" data-astro-cid-ndhobcjl> Grade 1 (6-7) </a><a href="/bedtime-stories/for-grade-2-age-7-8" class="px-4 py-2 bg-white border border-gray-200 rounded-full text-sm text-gray-700 hover:bg-indigo-50 hover:border-indigo-300 transition" data-astro-cid-ndhobcjl> Grade 2 (7-8) </a><a href="/bedtime-stories/for-grade-3-age-8-9" class="px-4 py-2 bg-white border border-gray-200 rounded-full text-sm text-gray-700 hover:bg-indigo-50 hover:border-indigo-300 transition" data-astro-cid-ndhobcjl> Grade 3 (8-9) </a> </div> <h3 class="text-lg font-semibold text-gray-900 mb-3" data-astro-cid-ndhobcjl>Popular Themes</h3> <div class="flex flex-wrap gap-2" data-astro-cid-ndhobcjl> <a href="/bedtime-stories/about-friendship" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> friendship </a><a href="/bedtime-stories/about-adventure" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> adventure </a><a href="/bedtime-stories/about-magic" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> magic </a><a href="/bedtime-stories/about-nature" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> nature </a><a href="/bedtime-stories/about-kindness" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> kindness </a><a href="/bedtime-stories/about-family" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> family </a><a href="/bedtime-stories/about-courage" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> courage </a><a href="/bedtime-stories/about-animals" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> animals </a><a href="/bedtime-stories/about-imagination" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> imagination </a><a href="/bedtime-stories/about-teamwork" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> teamwork </a><a href="/bedtime-stories/about-dragons" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> dragons </a><a href="/bedtime-stories/about-ocean" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> ocean </a><a href="/bedtime-stories/about-space" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> space </a><a href="/bedtime-stories/about-dinosaurs" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> dinosaurs </a><a href="/bedtime-stories/about-music" class="px-3 py-1.5 bg-indigo-50 text-indigo-700 rounded-full text-sm hover:bg-indigo-100 transition" data-astro-cid-ndhobcjl> music </a> </div> </div> </section>  <section class="py-12 bg-white" data-astro-cid-ndhobcjl> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8" data-astro-cid-ndhobcjl> <!-- Stories Grid - Server-rendered initial stories for SEO --> <h2 class="text-2xl font-bold text-gray-900 mb-6" data-astro-cid-ndhobcjl>All Stories</h2> <div id="stories-grid" class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6" data-astro-cid-ndhobcjl> <a href="/stories/penelopes-sky-dream" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/01904a2a-4ea4-4279-84a7-c3c2008f6744/cover.webp" alt="Penelope's Sky Dream" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Penelope&#39;s Sky Dream </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A determined ladybug named Penelope, unsatisfied with the ordinary, defies expectations and constructs her own wings to soar beyond the garden, proving that with perseverance, even the smallest dreams can reach the highest skies. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
17Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 roun
17ded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
18Read Story
19</span> </div> </a><a href="/stories/the-mouse-and-the-mechanical-mutt" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/64f3536d-0660-41b4-99b3-9f747cebe437/cover.webp" alt="The Mouse and the Mechanical Mutt" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Mouse and the Mechanical Mutt </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A tiny, adventurous mouse living in a clock tower discovers a hidden room and accidentally awakens a playful robot dog, leading to a thrilling chase that ultimately blossoms into an unexpected friendship. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
20Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
21Read Story
22</span> </div> </a><a href="/stories/barnabys-sweet-song" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/0c4cdade-3c87-49ef-a278-9b4a6987e991/cover.webp" alt="Barnaby's Sweet Song" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Barnaby&#39;s Sweet Song </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A shy badger named Barnaby, who loves playing his flute in secret, must overcome his stage fright with the help of his friends to share his beautiful music at the Woodland Talent Show. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
23Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
24Read Story
25</span> </div> </a><a href="/stories/the-crystal-planet-adventure" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/0d163e77-3586-4d32-b328-b4f3d6560655/cover.webp" alt="The Crystal Planet Adventure" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Crystal Planet Adventure </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A brilliant scientist and her helpful robot discover a breathtaking crystal planet, only to accidentally shatter its radiant core, forcing them to use science and teamwork to restore its vibrant light. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
26Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 roun
26ded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
27Read Story
28</span> </div> </a><a href="/stories/the-case-of-the-sixty-seven-things" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/a5661af4-ea5a-4a08-b281-c1044b423285/cover.webp" alt="The Case of the Sixty-Seven 'Things'" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Case of the Sixty-Seven &#39;Things&#39; </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A meticulous girl and her boisterous friend embark on a comical quest to collect &quot;67 things&quot; for an eccentric inventor, leading to a series of hilarious misunderstandings before a simple revelation clears up the confusion. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
29Created by ABIGAIL </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
30Read Story
31</span> </div> </a><a href="/stories/the-sparkle-in-the-dark" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/67613f96-4b99-4981-8ddc-e9ec4bdffec1/cover.webp" alt="The Sparkle in the Dark" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Sparkle in the Dark </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> Barnaby Badger and Penelope Porcupine embark on a thrilling adventure into a mysterious, gem-filled cave, only to discover that the true treasure isn&#39;t what they expected, but the joy of exploration and their unwavering friendship. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
32Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
33Read Story
34</span> </div> </a><a href="/stories/the-sparkle-trail-of-mandila" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/7c573303-8ba3-4445-b91f-df710263ba7a/cover.webp" alt="The Sparkle Trail of Mandila" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Sparkle Trail of Mandila </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> When Charlie and her adventurous friends visit the enchanting Magical Fields of Mandila, a 
34whimsical search for their daydreaming friend Chansey leads them on a sparkling trail of discovery and unexpected joy. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
35Created by Elsie Mockliy </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
36Read Story
37</span> </div> </a><a href="/stories/the-whisperwind-secret" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/3f47b060-b63e-464a-bed9-1f2b90107ab4/cover.webp" alt="The Whisperwind Secret" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Whisperwind Secret </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> An imaginative girl and her logical older brother uncover a captivating family mystery hidden within their grandmother&#39;s old Victorian house, leading them to a precious legacy that strengthens their bond and connects them to their ancestors. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
38Created by Ashley Cadaon </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
39Read Story
40</span> </div> </a><a href="/stories/pigs-great-garden-adventure" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/43a68c52-8129-493f-8501-b72203770d18/cover.webp" alt="Pig's Great Garden Adventure" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Pig&#39;s Great Garden Adventure </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A curious piglet embarks on a delicious adventure in his family&#39;s garden, discovering the surprising and tasty parts of plants that grow both above and below the ground. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
41Created by Eleonor Jamig </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
42Read Story
43</span> </div> </a><a href="/stories/oliver-and-the-nights-sparkle" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/f7ff6a1b-bb3c-4839-bcd8-a70bd43464a6/cover.webp" alt="Oliver and the Night's Sparkle" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Oliver and the Night&#39;s Sparkle </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A timid owl named Oliver, who fears the dark, discovers the hidden magic and sparkling beauty of the night forest with the help of a brave and glowing firefly named Flicker. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
44Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 roun
44ded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
45Read Story
46</span> </div> </a><a href="/stories/rosies-chester-adventure" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/5f9b9814-31fa-4ca2-9267-c8b89755c59c/cover.webp" alt="Rosie's Chester Adventure" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Rosie&#39;s Chester Adventure </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A beloved ragdoll named Rosie, seeing her owner&#39;s sadness over a lost drawing, bravely ventures into the world with the help of a friendly robin to retrieve the missing treasure and restore her friend&#39;s happiness. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
47Created by ruby diamond </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
48Read Story
49</span> </div> </a><a href="/stories/lili-and-the-starfish-song" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/12e76c32-ced6-473f-91dc-d8daaf304bff/cover.webp" alt="Lili and the Starfish Song" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Lili and the Starfish Song </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A gentle young girl named Lili embarks on a quest to find the Starfish Singer, Stella, whose fading song has quieted her vibrant underwater home, ultimately restoring joy and music to Coral Cove. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
50Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
51Read Story
52</span> </div> </a><a href="/stories/leos-flight-discovery" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/876915f8-8593-4ee5-8904-1062f451e494/cover.webp" alt="Leo's Flight Discovery" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Leo&#39;s Flight Discovery </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A curious young boy named Leo embarks on his first airplane journey, where a kind pilot helps him unravel the scientific wonders of flight, transforming his initial awe into a deeper understanding of how planes soar. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
53Created by Mitch </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 roun
53ded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
54Read Story
55</span> </div> </a><a href="/stories/the-sunpetal-bloom-sisters" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/eb00dbab-8473-483f-aa13-f355b2dcd796/cover.webp" alt="The Sunpetal Bloom Sisters" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Sunpetal Bloom Sisters </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> Two pampered royal sisters, obsessed with material possessions, are forced on a perilous quest into the Whispering Wilds to find the legendary Sunpetal Bloom, a journey that transforms their hearts and teaches them the true meaning of kindness and gratitude. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
56Created by rea </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
57Read Story
58</span> </div> </a><a href="/stories/the-star-in-sophies-heart" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/409b9135-ebab-4255-8252-0cc333e55ba1/cover.webp" alt="The Star in Sophie's Heart" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> The Star in Sophie&#39;s Heart </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A little girl named Sophie, who dreams of grand adventures, follows a magical stardust path to a celestial kingdom, overcoming challenges to discover that her true star is the brave, curious spirit within her own heart. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
59Created by Evelyn </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
60Read Story
61</span> </div> </a><a href="/stories/evas-dancing-hands" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/b6c6891c-b6cf-43de-9dab-100ccbb30e17/cover.webp" alt="Eva's Dancing Hands" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Eva&#39;s Dancing Hands </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> When a new girl who communicates with her hands struggles to connect in a new school, a curious classmate learns her silent language, inspiring the entire class to embrace a beautiful new way to be friends. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
62Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 roun
62ded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
63Read Story
64</span> </div> </a><a href="/stories/iggy-and-the-islands-secret-journal" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/ab7ab618-f94e-423f-bcb0-29066f0fce51/cover.webp" alt="Iggy and the Island's Secret Journal" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Iggy and the Island&#39;s Secret Journal </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> A curious young iguana named Iggy discovers an ancient journal filled with drawings of rare island wonders, leading him on an adventurous quest to find and understand them, ultimately realizing his role as their quiet guardian. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
65Created by Little Dreamer </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
66Read Story
67</span> </div> </a><a href="/stories/pips-great-quest-for-a-forever-home" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/9214fe3f-bd67-4d7c-8497-7021b8dcc89d/cover.webp" alt="Pip's Great Quest for a Forever Home" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Pip&#39;s Great Quest for a Forever Home </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> When three pig siblings set out to build their new homes, the smallest and most determined, Pip, must convince her brothers of the importance of strength and foresight to protect them all from the lurking Big Bad Wolf. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
68Created by Eleonor Jamig </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
69Read Story
70</span> </div> </a><a href="/stories/isabella-and-the-silent-song" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/bc9e6db4-e92f-43d7-a5dd-68acb6f8aa78/cover.webp" alt="Isabella and the Silent Song" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> Isabella and the Silent Song </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> When a reclusive witch steals the music from her vibrant village, a young woman with an enchanting voice embarks on a journey not to fight, but to understand the witch&#39;s hidden sorrow and restore harmony. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
71Created by Lady mel </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 roun
71ded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
72Read Story
73</span> </div> </a><a href="/stories/ones-grand-beginning" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group" data-astro-cid-ndhobcjl> <!-- Cover Image --> <div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden" data-astro-cid-ndhobcjl> <img src="https://storyai-content-prod.s3.amazonaws.com/stories/69135f75-a47c-4b85-82a6-dadada9928b8/cover.webp" alt="One's Grand Beginning" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" onerror="this.src='/assets/images/icon_medium.webp'" data-astro-cid-ndhobcjl> </div> <!-- Content --> <div class="p-4 flex-1 flex flex-col" data-astro-cid-ndhobcjl> <!-- Title --> <h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]" data-astro-cid-ndhobcjl> One&#39;s Grand Beginning </h3> <!-- Description --> <div class="text-gray-600 text-sm mb-4 flex-1" data-astro-cid-ndhobcjl> <p class="line-clamp-3" data-astro-cid-ndhobcjl> In a pristine, empty world, a lone red block awakens as &#39;One&#39;, embarking on a journey of discovery that reveals her unique identity and inspires her to become the beginning of something much greater. </p> </div> <!-- Author --> <p class="text-xs text-gray-500 mb-3" data-astro-cid-ndhobcjl>
74Created by Beatrice Kessie </p> <!-- Read Story Button --> <span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm" data-astro-cid-ndhobcjl>
75Read Story
76</span> </div> </a> </div> <!-- Loading Indicator --> <div id="loading-indicator" class="hidden text-center py-8" data-astro-cid-ndhobcjl> <div class="inline-block animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-indigo-600" data-astro-cid-ndhobcjl></div> <p class="text-gray-600 mt-4" data-astro-cid-ndhobcjl>Loading more stories...</p> </div> <!-- End of Stories Message --> <div id="end-message" class="hidden text-center py-8" data-astro-cid-ndhobcjl> <p class="text-gray-600 text-lg" data-astro-cid-ndhobcjl>Loading more stories...</p> </div> </div> </section>  <section class="py-16 bg-gradient-to-r from-indigo-600 to-purple-600" data-astro-cid-ndhobcjl> <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center text-white" data-astro-cid-ndhobcjl> <h2 class="text-3xl md:text-4xl font-bold mb-6" data-astro-cid-ndhobcjl>
77Explore Thousands More Stories
78</h2> <p class="text-xl text-indigo-100 mb-8" data-astro-cid-ndhobcjl>
79Download the app to discover unlimited personalized bedtime stories, fairy tales, and create your own magical adventures!
80</p> <div class="flex flex-col sm:flex-row gap-4 justify-center" data-astro-cid-ndhobcjl> <a href="https://apps.apple.com/app/id6752249916?utm_source=website&utm_medium=cta&utm_campaign=story_library" target="_blank" rel="noopener noreferrer" class="transition-all duration-200 hover:opacity-80 transform hover:-translate-y-0.5" onclick="window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'event': 'download_app', 'platform': 'app_store', 'source': 'website', 'medium': 'cta', 'campaign': 'story_library' });" data-astro-cid-ndhobcjl> <img src="/assets/images/app_store_dark.svg" alt="Download on the App Store" class="h-14 w-auto" data-astro-cid-ndhobcjl> </a> <a href="https://play.google.com/store/apps/details?id=com.piimobile.ai.story&utm_source=website&utm_medium=cta&utm_campaign=story_library" target="_blank" rel="noopener noreferrer" class="transition-all duration-200 hover:opacity-80 transform hover:-translate-y-0.5" onclick="window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'event': 'download_app', 'platform': 'google_play', 'source': 'website', 'medium': 'cta', 'campaign': 'story_library' });" data-astro-cid-ndhobcjl> <img src="/assets/images/google_play_dark.svg" alt="Get it on Google Play" class="h-14 w-auto" data-astro-cid-ndhobcjl> </a> </div> </div> </section>   </main> <footer class="bg-gray-50 border-t border-gray-200"> <div class="container mx-auto px-4 py-12"> <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> <!-- Company Info --> <div class="col-span-1 md:col-span-2"> <div class="flex items-center space-x-2 mb-4"> <img src="/assets/images/icon_small.webp" alt="Dreamcraft Tale" class="w-8 h-8 rounded-lg"> <span class="text-xl font-bold text-gray-900">Dreamcraft Tale</span> </div> <p class="text-gray-600 mb-4 max-w-md">
81The magical app that turns your child's ideas into beautifully illustrated stories. Join our community, create unforgettable adventures, and explore thousands of stories shared by families worldwide.
82</p> <div class="flex space-x-4"> <a href="https://www.youtube.com/@dreamcrafttale" target="_blank" rel="noopener noreferrer" class="text-gray-400 hover:text-indigo-600 transition-colors" aria-label="YouTube"> <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"></path> </svg> </a> <a href="#" class="text-gray-400 hover:text-indigo-600 transition-colors" aria-label="TikTok"> <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5 20.1a6.34 
826.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1-.1z"></path> </svg> </a> </div> </div> <!-- Quick Links --> <div> <h3 class="text-sm font-semibold text-gray-900 uppercase tracking-wider mb-4">Product</h3> <ul class="space-y-2"> <li><a href="/#features" class="text-gray-600 hover:text-indigo-600 transition-colors">Features</a></li> <li><a href="/#how-it-works" class="text-gray-600 hover:text-indigo-600 transition-colors">How It Works</a></li> <li><a href="/our-story" class="text-gray-600 hover:text-indigo-600 transition-colors">Our Story</a></li> <li><a href="/quality-and-safety" class="text-gray-600 hover:text-indigo-600 transition-colors">Quality & Safety</a></li> <li><a href="/for-educators" class="text-gray-600 hover:text-indigo-600 transition-colors">For Educators</a></li> <li><a href="/blog" class="text-gray-600 hover:text-indigo-600 transition-colors">Blog</a></li> <li><a href="/download" class="text-gray-600 hover:text-indigo-600 transition-colors">Download</a></li> </ul> </div> <!-- Legal & Support --> <div> <h3 class="text-sm font-semibold text-gray-900 uppercase tracking-wider mb-4">Support</h3> <ul class="space-y-2"> <li><a href="/contact" class="text-gray-600 hover:text-indigo-600 transition-colors">Contact Us</a></li> <li><a href="/privacy-policy" class="text-gray-600 hover:text-indigo-600 transition-colors">Privacy Policy</a></li> <li><a href="/terms-of-service" class="text-gray-600 hover:text-indigo-600 transition-colors">Terms of Service</a></li> </ul> </div> </div> <!-- Bottom Bar --> <div class="border-t border-gray-200 mt-8 pt-8"> <div class="flex flex-col md:flex-row justify-between items-center"> <p class="text-gray-600 text-sm">
83© 2025 Dreamcraft Tale team (Pii Mobile Limited). All rights reserved.
84</p> <div class="flex space-x-6 mt-4 md:mt-0"> <a href="/privacy-policy" class="text-gray-600 hover:text-indigo-600 text-sm transition-colors">Privacy</a> <a href="/terms-of-service" class="text-gray-600 hover:text-indigo-600 text-sm transition-colors">Terms</a> <a href="/contact" class="text-gray-600 hover:text-indigo-600 text-sm transition-colors">Contact</a> </div> </div> </div> </div> </footer> <div id="sticky-download-bar" class="fixed bottom-0 left-0 right-0 z-40 md:hidden hidden bg-white border-t border-gray-200 shadow-[0_-2px_12px_rgba(0,0,0,0.08)]"><div class="flex items-center gap-3 px-4 py-3"><img src="/assets/images/icon_small.webp" alt="" class="w-10 h-10 rounded-lg flex-shrink-0"><div class="min-w-0 flex-1"><p class="text-sm font-semibold text-gray-900 leading-tight truncate">Read the full story</p><p class="text-xs text-gray-500 leading-tight truncate">Illustrations &amp; narration</p></div><a href="https://apps.apple.com/app/id6752249916?utm_source=website&utm_medium=sticky_bar&utm_campaign=story-library" target="_blank" rel="noopener noreferrer" class="flex-shrink-0 rounded-lg px-3 py-2 text-sm font-semibold text-white whitespace-nowrap" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);" data-download-cta data-platform="app_store" data-medium="sticky_bar" data-campaign="story-library" data-ios-url="https://apps.apple.com/app/id6752249916?utm_source=website&utm_medium=sticky_bar&utm_campaign=story-library" data-android-url="https://play.google.com/store/apps/details?id=com.piimobile.ai.story&utm_source=website&utm_medium=sticky_bar&utm_campaign=story-library">
85Get the App
86</a><button id="sticky-download-dismiss" type="button" aria-label="Dismiss" class="flex-shrink-0 p-1 -mr-1 text-gray-400 hover:text-gray-600"><svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></button></div></div>
86<script type="module">const s=document.getElementById("sticky-download-bar"),t=document.getElementById("sticky-download-dismiss"),d="dc_sticky_download_dismissed";s&&sessionStorage.getItem(d)!=="1"&&(s.classList.remove("hidden"),document.body.classList.add("has-sticky-download-bar"));t?.addEventListener("click",()=>{s?.classList.add("hidden"),document.body.classList.remove("has-sticky-download-bar");try{sessionStorage.setItem(d,"1")}catch{}});</script>
86 
86<script>
87			// One handler for every store link on the site. Elements opt in with
88			// data-download-cta and describe themselves with data-* attributes, so a
89			// CTA can never silently ship without tracking.
90			(function () {
91				function isIOS() {
92					var ua = navigator.userAgent || '';
93					// iPadOS 13+ reports as Macintosh, so check for touch too.
94					return /iPad|iPhone|iPod/.test(ua) || (/Macintosh/.test(ua) && navigator.maxTouchPoints > 1);
95				}
96
97				// Point device-aware buttons at the store the visitor can actually use.
98				document.querySelectorAll('[data-download-cta][data-ios-url][data-android-url]').forEach(function (el) {
99					var ios = isIOS();
100					el.setAttribute('href', ios ? el.dataset.iosUrl : el.dataset.androidUrl);
101					el.dataset.platform = ios ? 'app_store' : 'google_play';
102				});
103
104				document.addEventListener('click', function (event) {
105					var el = event.target.closest && event.target.closest('[data-download-cta]');
106					if (!el) return;
107					window.dataLayer = window.dataLayer || [];
108					window.dataLayer.push({
109						event: 'download_app',
110						platform: el.dataset.platform || 'unknown',
111						source: 'website',
112						medium: el.dataset.medium || 'unknown',
113						campaign: el.dataset.campaign || 'unknown',
114					});
115				});
116			})();
117		</script>
117 </body> </html> 
117<script>(function(){const serverNextToken = null;
118
119	// API Configuration
120	const API_BASE_URL = 'https://storyai.piimobile.com';
121	const API_ENDPOINT = '/story/preview';
122
123	// State - Initialize with server-provided nextToken
124	let nextToken = serverNextToken;
125	let isLoading = false;
126	let hasMoreStories = nextToken !== null && nextToken !== '';
127
128	// DOM Elements
129	const storiesGrid = document.getElementById('stories-grid');
130	const loadingIndicator = document.getElementById('loading-indicator');
131	const endMessage = document.getElementById('end-message');
132
133	// Slugify function (must match server-side logic in seo-cli.py)
134	function slugify(text) {
135		return text.toLowerCase().trim()
136			.replace(/[^\w\s-]/g, '')
137			.replace(/[\s_]+/g, '-')
138			.replace(/-+/g, '-')
139			.replace(/^-|-$/g, '')
140			.slice(0, 80);
141	}
142
143	// Create a story card HTML
144	function createStoryCard(story) {
145		const storySlug = slugify(story.title);
146		return `
147			<a href="/stories/${storySlug}" class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow duration-200 flex flex-col group">
148				<!-- Cover Image -->
149				<div class="aspect-square bg-gradient-to-br from-indigo-100 to-purple-100 relative overflow-hidden">
150					<img
151						src="${story.coverImageUrl}"
152						alt="${story.title}"
153						class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
154						loading="lazy"
155						onerror="this.src='/assets/images/icon_medium.webp'"
156					/>
157				</div>
158				
159				<!-- Content -->
160				<div class="p-4 flex-1 flex flex-col">
161					<!-- Title -->
162					<h3 class="text-lg font-bold text-gray-900 mb-2 line-clamp-2 min-h-[3.5rem]">
163						${story.title}
164					</h3>
165					
166					<!-- Description -->
167					<div class="text-gray-600 text-sm mb-4 flex-1">
168						<p class="line-clamp-3">
169							${story.shortDescription}
170						</p>
171					</div>
172					
173					<!-- Author -->
174					${story.authorName ? `
175						<p class="text-xs text-gray-500 mb-3">
176							Created by ${story.authorName}
177						</p>
178					` : ''}
179					
180					<!-- Read Story Button -->
181					<span class="block w-full text-center bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-2 px-4 rounded-lg font-semibold group-hover:from-indigo-700 group-hover:to-purple-700 transition-all duration-200 text-sm">
182						Read Story
183					</span>
184				</div>
185			</a>
186		`;
187	}
188
189	// Fetch stories from API
190	async function fetchStories(token = null) {
191		if (isLoading || !hasMoreStories) return;
192
193		isLoading = true;
194		loadingIndicator.classList.remove('hidden');
195
196		try {
197			const url = new URL(API_ENDPOINT, API_BASE_URL);
198			if (token) {
199				url.searchParams.append('nextToken', token);
200			}
201
202			const response = await fetch(url.toString());
203			
204			if (!response.ok) {
205				throw new Error('Failed to fetch stories');
206			}
207
208			const data = await response.json();
209
210			// Add stories to grid
211			if (data.items && data.items.length > 0) {
212				data.items.forEach(story => {
213					const cardHTML = createStoryCard(story);
214					storiesGrid.insertAdjacentHTML('beforeend', cardHTML);
215				});
216
217				// Update pagination token
218				nextToken = data.nextToken || null;
219				hasMoreStories = nextToken !== null;
220			} else {
221				hasMoreStories = false;
222			}
223
224			// Hide end message when done loading
225			if (!hasMoreStories) {
226				endMessage.classList.add('hidden');
227			}
228
229		} catch (error) {
230			console.error('Error fetching stories:', error);
231			// Show error message to user
232			storiesGrid.insertAdjacentHTML('beforeend', `
233				<div class="col-span-full text-center py-8">
234					<p class="text-red-600">Failed to load stories. Please try again later.</p>
235				</div>
236			`);
237			hasMoreStories = false;
238		} finally {
239			isLoading = false;
240			loadingIndicator.classList.add('hidden');
241		}
242	}
243
244	// Infinite scroll implementation
245	function setupInfiniteScroll() {
246		const observer = new IntersectionObserver(
247			(entries) => {
248				entries.forEach(entry => {
249					if (entry.isIntersecting && hasMoreStories && !isLoading) {
250						fetchStories(nextToken);
251					}
252				});
253			},
254			{
255				root: null,
256				rootMargin: '200px', // Start loading 200px before reaching the bottom
257				threshold: 0
258			}
259		);
260
261		observer.observe(loadingIndicator);
262	}
263
264	// Initialize on page load
265	document.addEventListener('DOMContentLoaded', () => {
266		if (hasMoreStories && nextToken) {
267			setupInfiniteScroll();
268		}
269	});
270})();</script>
270 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.