(function() {
  'use strict';
  
  var SORO_BLOG_TITLE = 'happybirds.com';
  var SORO_ARTICLES = [{"id":"60cad894-e175-4140-bf81-0d5cf3a04862","title":"How to Plan Classroom Enrichment That Sticks","slug":"how-to-plan-classroom-enrichment","excerpt":"Learn how to plan classroom enrichment with clear goals, easy logistics, and interactive experiences that keep students curious, involved, and smiling.","content":null,"date":"October 10, 2026","isoDate":"2026-10-10T03:14:05.207+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/1ffcc7d2-6bfb-4459-b4fd-81305378df91.webp"},{"id":"cf3dbd61-d237-4d2e-8e3a-459d72e82801","title":"How to Engage Assembly Audiences and Hold Focus","slug":"how-to-engage-assembly-audiences","excerpt":"Learn how to engage assembly audiences with participatory moments, clear pacing, and memorable live experiences that keep students focused and excited all day.","content":null,"date":"October 8, 2026","isoDate":"2026-10-08T03:20:41.244+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/0ad42815-28e6-4199-be50-10115ba04b52.webp"},{"id":"9142242a-8d1d-4d24-89f0-0c28f03996c1","title":"Professional Party Performer Checklist for Events","slug":"professional-party-performer-checklist","excerpt":"Use this professional party performer checklist to choose reliable, engaging entertainment for birthdays, schools, and Bay Area events without extra stress.","content":null,"date":"October 6, 2026","isoDate":"2026-10-06T03:12:57.816+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/f3bf2bf9-deea-4905-9a50-3cde35020dd6.webp"},{"id":"f8ea6fa1-99d7-43e7-bfcf-c71c8c9bb9cb","title":"Kids Bird Show Activities Everyone Can Enjoy","slug":"kids-bird-show-activities","excerpt":"Plan kids bird show activities that spark curiosity, laughter, and hands-on learning at birthday parties, schools, and Bay Area celebrations for families.","content":null,"date":"October 4, 2026","isoDate":"2026-10-04T03:13:20.584+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/8ab87152-7708-48c5-b377-f19f79f1dd9c.webp"},{"id":"8a95dc6c-c1f8-4950-83d6-fd5fc79556a8","title":"Animal Show for Classrooms Students Remember","slug":"animal-show-for-classrooms","excerpt":"Plan an animal show for classrooms that brings curious students closer to trained parrots with fun, hands-on learning led by experienced professionals.","content":null,"date":"October 2, 2026","isoDate":"2026-10-02T03:20:52.68+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/d1b458f5-20a7-46d2-bbe7-06bee4b532ef.webp"},{"id":"120761ef-0ace-4039-a4ca-3fcf938b8f2e","title":"How to Accommodate Parrot Allergies at Events","slug":"how-to-accommodate-parrot-allergies","excerpt":"How to accommodate parrot allergies at parties, schools, and work events with practical planning that helps guests feel included and comfortable with care.","content":null,"date":"September 30, 2026","isoDate":"2026-09-30T03:14:07.618+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/f0211a4d-89f3-41ac-bebf-5db72913a95b.webp"},{"id":"848ef87e-879c-4b83-997b-a32c2c7597e3","title":"Talking Parrot Species That Delight Event Guests","slug":"talking-parrot-species","excerpt":"Learn which talking parrot species charm guests, what they can say, and why a professional live bird show makes events memorable for every age group.","content":null,"date":"September 28, 2026","isoDate":"2026-09-28T03:12:44.518+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/b2664b75-e518-4855-8ac2-9cb0c78753e8.webp"},{"id":"84d5faee-15ab-486d-b0c1-62e286665128","title":"Corporate Parrot Entertainment Review for Events","slug":"corporate-parrot-entertainment-review","excerpt":"Read this corporate parrot entertainment review to see what live bird shows bring to Bay Area office events, from interaction and learning to planning.","content":null,"date":"September 26, 2026","isoDate":"2026-09-26T03:14:41.749+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/5cb49fc8-3845-41cd-b1de-f33a0102f688.webp"},{"id":"8d8cb0ba-04af-4095-9d61-f6bb234f2d8f","title":"Animal Entertainer Versus Balloon Artist","slug":"animal-entertainer-versus-balloon-artist","excerpt":"Animal entertainer versus balloon artist: compare interaction, education, space, and event fit to choose memorable Bay Area fun for every guest today.","content":null,"date":"September 24, 2026","isoDate":"2026-09-24T03:20:27.666+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/30bde2f1-425c-4990-a218-b3672c3df551.webp"},{"id":"81176d06-88ed-4702-822c-ca8fb76c38bf","title":"Corporate Entertainment That Gets People Talking","slug":"corporate-entertainment-that-gets-people-talking","excerpt":"Corporate entertainment should feel fresh, polished, and easy to plan. See how an interactive parrot show can bring real energy to your next Bay Area event.","content":null,"date":"September 22, 2026","isoDate":"2026-09-22T03:13:36.675+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/d09bda91-c7b0-469a-a316-e6818e024529.webp"},{"id":"476bcf7d-075a-4f1f-827f-9c42051615b2","title":"How Long Should Party Entertainment Last?","slug":"how-long-should-party-entertainment-last","excerpt":"Wondering how long should party entertainment last? Plan a show length for birthdays, schools, and company events that keeps every guest engaged and happy.","content":null,"date":"September 20, 2026","isoDate":"2026-09-20T03:14:46.348+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/fcb54d63-dc24-4abb-813b-6d4dbee9fe50.webp"},{"id":"e531283f-09cd-4795-83ed-d348837ff642","title":"School Visitor Guide for Engaging Programs","slug":"school-visitor-guide-engaging-programs","excerpt":"Use this school visitor guide to plan a safe, engaging guest program that supports learning, respects class time, and gives students a memorable experience.","content":null,"date":"September 18, 2026","isoDate":"2026-09-18T03:23:39.077+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/ad4f4940-f58f-4106-83d9-5fa19c7fc697.webp"},{"id":"c4a0a8e8-5499-4656-9dc5-e425f0323038","title":"12 Parrot Activity Ideas for Parties and Schools","slug":"parrot-activity-ideas-parties-schools","excerpt":"Bring guests together with parrot activity ideas for Bay Area parties, schools, and workplace events that blend hands-on fun, learning, and safe care.","content":null,"date":"September 16, 2026","isoDate":"2026-09-16T03:25:04.802+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/d7307070-18a8-48cf-8fcc-a47452422695.webp"},{"id":"c3bb10ce-b1bb-44a2-a857-8773fcbb6193","title":"Parrot Event Pricing for Bay Area Celebrations","slug":"parrot-event-pricing-bay-area-celebrations","excerpt":"Parrot event pricing depends on show length, location, audience size, and event needs. Learn what shapes a quote for a Bay Area bird visit at your event.","content":null,"date":"September 14, 2026","isoDate":"2026-09-14T03:23:34.242+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/d42f1a83-36e9-4cbd-886b-60472413b834.webp"},{"id":"cfacf81e-0230-4fae-8e7e-fd10bd559c35","title":"Can Parrots Visit Office Events? Yes, With a Plan","slug":"can-parrots-visit-office-events","excerpt":"Can parrots visit office events? A professional parrot show can bring safe, memorable fun to your team when the venue, schedule, and guests are ready.","content":null,"date":"September 12, 2026","isoDate":"2026-09-12T02:37:43.746+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/00a2ea25-0b1b-41a5-ba20-d5cb10972d3e.webp"},{"id":"69f1795e-bb50-4bf5-99ce-8964331c1b97","title":"9 Corporate Parrot Entertainment Ideas That Fly","slug":"corporate-parrot-entertainment-ideas","excerpt":"Corporate parrot entertainment ideas for Bay Area events that spark conversation, bring teams together, and make company gatherings truly memorable!","content":null,"date":"September 10, 2026","isoDate":"2026-09-10T02:01:15.738+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/47dc57aa-8dd3-4245-804b-592e8c5cc6dc.webp"},{"id":"bd6451fa-6fe8-4ae9-9afa-1f3c295bff1b","title":"Birthday Party Entertainer Comparison: What Wins?","slug":"birthday-party-entertainer-comparison","excerpt":"Use this birthday party entertainer comparison to choose a fun, reliable Bay Area experience that keeps kids engaged and gives parents room to enjoy more.","content":null,"date":"September 8, 2026","isoDate":"2026-09-08T06:49:47.129+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/88885ea0-1cb0-4001-8283-1930b0fc5ee7.webp"},{"id":"872c5bb6-0826-42d8-a9aa-8540c4141067","title":"A Guide to Stress Free Party Entertainment","slug":"guide-to-stress-free-party-entertainment","excerpt":"Our guide to stress free party entertainment helps Bay Area hosts choose engaging, reliable fun that keeps guests happy and planning easy with less worry.","content":null,"date":"September 6, 2026","isoDate":"2026-09-06T07:24:57.358+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/c1a3b5e7-13e4-4532-89e6-50be00ec9da4.webp"},{"id":"ab151f99-93f4-4880-8f27-6078e32f8ea0","title":"12 Interactive Assembly Program Ideas That Work","slug":"interactive-assembly-program-ideas","excerpt":"Interactive assembly program ideas that keep students involved, support learning, and make school events easier to plan for every grade level smoothly.","content":null,"date":"September 4, 2026","isoDate":"2026-09-04T07:24:53.387+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/79168c4a-3551-4618-9931-b56584d1b0bd.webp"},{"id":"35b9c27f-16fe-4b55-891b-f424a153e2fb","title":"Parrot Show Versus Magician Party for Kids","slug":"parrot-show-versus-magician-party","excerpt":"Choosing a parrot show versus magician party? Compare guest interaction, learning, space, age fit, and planning needs for a standout celebration at home.","content":null,"date":"September 2, 2026","isoDate":"2026-09-02T07:21:53.796+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/f2f97a24-2d2f-4106-bb9b-de901ac80708.webp"},{"id":"2ec3f0b8-e197-4463-a276-97aa3fbaec5f","title":"A Guide to Corporate Event Acts Guests Love","slug":"guide-to-corporate-event-acts","excerpt":"This guide to corporate event acts helps Bay Area planners choose memorable entertainment that fits their audience, space, schedule, and goals with care.","content":null,"date":"August 31, 2026","isoDate":"2026-08-31T07:21:52.357+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/b15484fd-4d34-4f36-be4e-606101934218.webp"},{"id":"f5113525-9d3e-444c-99c3-03608f777c1c","title":"School Assembly Entertainment That Students Remember","slug":"school-assembly-entertainment","excerpt":"Plan school assembly entertainment that keeps students engaged, supports learning, and gives staff a smooth, memorable program from start to finish.","content":null,"date":"August 29, 2026","isoDate":"2026-08-29T07:18:43.434+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/534e6761-2bee-4081-b6f2-c2b4514e0c65.webp"},{"id":"dd44b7ad-1b8f-4928-a513-1dd9a34a8f48","title":"Best Corporate Entertainment for Daytime Events","slug":"best-corporate-entertainment-for-daytime-events","excerpt":"Find the best corporate entertainment for daytime events, with planner-friendly ideas that keep teams engaged, comfortable, and ready to connect easily.","content":null,"date":"August 27, 2026","isoDate":"2026-08-27T07:18:33.012+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/c83ecd18-fbc3-4334-bed2-7e1205b35ffc.webp"},{"id":"04809d60-167f-437a-a8df-2669f974e26f","title":"12 Office Party Entertainer Ideas That Work","slug":"office-party-entertainer-ideas","excerpt":"Looking for office party entertainer ideas? Find interactive, polished options that help Bay Area teams connect, celebrate, and remember the occasion.","content":null,"date":"August 25, 2026","isoDate":"2026-08-25T07:15:40.745+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/fdaf82aa-5b8c-48ed-b33c-9eebf340fbaf.webp"},{"id":"f12d7c91-dd68-42dc-859a-2f3fe777fe61","title":"Birthday Entertainer vs Petting Zoo for Kids","slug":"birthday-entertainer-vs-petting-zoo","excerpt":"Choosing a birthday entertainer vs petting zoo? Compare fun, space, cleanup, guest ages, and learning value for a party your child will remember fondly.","content":null,"date":"August 23, 2026","isoDate":"2026-08-23T07:09:30.094+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/workflows/c3daec5c-2189-400c-91c2-1c127f29a81e.webp"},{"id":"53525691-a17d-49cf-8e0f-4386d1e0bbb5","title":"Are Parrots Good for Assemblies in Schools?","slug":"are-parrots-good-for-assemblies","excerpt":"Are parrots good for assemblies? Learn how live parrot programs engage students, support learning goals, and bring joyful energy and fun to school events.","content":null,"date":"August 21, 2026","isoDate":"2026-08-21T07:10:03.558+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/53525691-a17d-49cf-8e0f-4386d1e0bbb5.webp"},{"id":"84f81205-2ee4-4517-972b-c8d9426935a8","title":"How to Host a Live Animal Assembly at School","slug":"host-a-live-animal-assembly-at-school","excerpt":"Learn how to host a live animal assembly that keeps students engaged, supports classroom learning, and runs smoothly for students, staff, and all guests.","content":null,"date":"August 19, 2026","isoDate":"2026-08-19T06:51:32.387+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/84f81205-2ee4-4517-972b-c8d9426935a8.webp"},{"id":"e75583c6-f064-44b1-8e18-65a14df08d4e","title":"Live Animal Show Benefits for Every Event","slug":"live-animal-show-benefits","excerpt":"See how live animal show benefits bring joy, learning, and real audience participation to Bay Area birthdays, schools, offices, and celebrations alike.","content":null,"date":"August 17, 2026","isoDate":"2026-08-17T07:06:27.257+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/e75583c6-f064-44b1-8e18-65a14df08d4e.webp"},{"id":"700beca2-0dab-4059-aacb-7c2ff7c06c1a","title":"Educational Entertainment for Schools That Soars","slug":"educational-entertainment-for-schools","excerpt":"Educational entertainment for schools brings science, wonder, and active participation to campus through live programs students remember long after class.","content":null,"date":"August 15, 2026","isoDate":"2026-08-15T05:19:08.266+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/700beca2-0dab-4059-aacb-7c2ff7c06c1a.webp"},{"id":"aaf8857e-5c0d-4aee-a6df-c75bbe142900","title":"Top Birthday Performers for Small Groups Near You","slug":"top-birthday-performers-for-small-groups","excerpt":"Find top birthday performers for small groups who bring big energy, easy planning, and memorable hands-on fun to home parties and private celebrations.","content":null,"date":"August 13, 2026","isoDate":"2026-08-13T04:48:36.105+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/aaf8857e-5c0d-4aee-a6df-c75bbe142900.webp"},{"id":"98713ea3-a84e-4711-9929-11b31a6a1afb","title":"Best Educational Party Entertainment for Kids","slug":"best-educational-party-entertainment","excerpt":"Find the best educational party entertainment for birthdays, schools, and events, with ideas that keep guests engaged, learning, and smiling together.","content":null,"date":"August 11, 2026","isoDate":"2026-08-11T05:27:34.031+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/98713ea3-a84e-4711-9929-11b31a6a1afb.webp"},{"id":"6ea08304-1a48-43ac-821b-04859b49d1b7","title":"What Happens During a Parrot Show at Events?","slug":"what-happens-during-a-parrot-show","excerpt":"Wondering what happens during a parrot show? See how live birds, audience participation, learning, and careful handling make events memorable for all.","content":null,"date":"August 9, 2026","isoDate":"2026-08-09T03:31:17.995+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/6ea08304-1a48-43ac-821b-04859b49d1b7.webp"},{"id":"81f6a941-e8b9-4cba-9ffa-dec135f22633","title":"Corporate Event Parrot Entertainment That Flies","slug":"corporate-event-parrot-entertainment","excerpt":"Corporate event parrot entertainment brings Bay Area teams together with interactive, professional fun that guests will remember long after the event ends.","content":null,"date":"August 7, 2026","isoDate":"2026-08-07T03:45:19.919+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/dbd4fd88-7071-408c-8ab4-e612724a8e6c/81f6a941-e8b9-4cba-9ffa-dec135f22633.webp"},{"id":"51c03ab4-98a3-4f44-883e-663f37c11562","title":"A Guide to Educational Birthday Entertainment","slug":"guide-to-educational-birthday-entertainment","excerpt":"This guide to educational birthday entertainment helps parents choose hands-on party fun that keeps kids curious, involved, and smiling for busy families.","content":null,"date":"August 5, 2026","isoDate":"2026-08-05T08:39:54.193+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/51c03ab4-98a3-4f44-883e-663f37c11562.webp"},{"id":"88742785-3348-4fe2-b6a1-36c9f2a36a50","title":"Bird Education Program for Children That Works","slug":"bird-education-program-for-children","excerpt":"A bird education program for children brings live learning, laughter, and memorable parrot encounters to schools, parties, and community events alike.","content":null,"date":"August 3, 2026","isoDate":"2026-08-03T08:36:45.852+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/88742785-3348-4fe2-b6a1-36c9f2a36a50.webp"},{"id":"3d0d38a6-8cd5-42e7-8bea-33f0eaa3bac8","title":"Mobile Event Entertainment That Gets Guests Involved","slug":"mobile-event-entertainment","excerpt":"Mobile event entertainment brings trained parrots, laughter, and hands-on learning to Bay Area parties, schools, and workplace celebrations of all sizes near you.","content":null,"date":"August 1, 2026","isoDate":"2026-08-01T08:39:20.044+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/3d0d38a6-8cd5-42e7-8bea-33f0eaa3bac8.webp"},{"id":"b53fa208-2ac5-4cf9-a054-1727ed17e664","title":"How to Choose Interactive Event Entertainment","slug":"choose-interactive-event-entertainment","excerpt":"Learn how to choose interactive event entertainment that delights guests, fits your venue and schedule, and gives every age a reason to join the fun, too.","content":null,"date":"July 30, 2026","isoDate":"2026-07-30T08:33:57.673+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/b53fa208-2ac5-4cf9-a054-1727ed17e664.webp"},{"id":"db6262aa-c992-4098-a206-086fc00174e9","title":"Animal Education Program Guide for Events","slug":"animal-education-program-guide-events","excerpt":"Use this animal education program guide to choose a safe, engaging live experience for Bay Area schools, parties, and workplace events of every size.","content":null,"date":"July 28, 2026","isoDate":"2026-07-28T08:21:19.247+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/db6262aa-c992-4098-a206-086fc00174e9.webp"},{"id":"8b4543dd-0e46-4b14-8891-db68c099644e","title":"Birthday Parrot Show Examples That Guests Love","slug":"birthday-parrot-show-examples","excerpt":"Birthday parrot show examples for kids, schools, and offices, with practical ideas for planning a lively, interactive Bay Area event guests will remember.","content":null,"date":"July 26, 2026","isoDate":"2026-07-26T08:03:37.384+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/8b4543dd-0e46-4b14-8891-db68c099644e.webp"},{"id":"06fd5437-8a3e-4fdd-9bf1-70ebd435b836","title":"How to Plan Office Entertainment That Gets Talked About","slug":"how-to-plan-office-entertainment","excerpt":"Learn how to plan office entertainment that brings coworkers together, fits your space and budget, and gives your Bay Area team a reason to smile all day.","content":null,"date":"July 24, 2026","isoDate":"2026-07-24T08:21:44.022+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/06fd5437-8a3e-4fdd-9bf1-70ebd435b836.webp"},{"id":"bce601e7-d53b-4c0f-a335-396a9e5d45a4","title":"Your Guide to School Enrichment Assemblies","slug":"guide-to-school-enrichment-assemblies","excerpt":"This guide to school enrichment assemblies helps Bay Area educators choose engaging programs, plan smoothly, and give students a meaningful experience.","content":null,"date":"July 22, 2026","isoDate":"2026-07-22T08:15:17.544+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/bce601e7-d53b-4c0f-a335-396a9e5d45a4.webp"},{"id":"5bbf3c26-9b26-4f6a-ab28-6858160304de","title":"Party Entertainment for Mixed Ages That Works","slug":"party-entertainment-for-mixed-ages","excerpt":"Find party entertainment for mixed ages that keeps kids, teens, parents, and grandparents involved with less planning stress and more shared fun together.","content":null,"date":"July 20, 2026","isoDate":"2026-07-20T08:18:12.677+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/5bbf3c26-9b26-4f6a-ab28-6858160304de.webp"},{"id":"8e65d921-3643-4fe9-a815-314a9c83554c","title":"Best Educational Animal Programs for Events","slug":"best-educational-animal-programs-events","excerpt":"Find the best educational animal programs for schools, parties, and office events, with tips for choosing a safe, engaging live experience for every age.","content":null,"date":"July 18, 2026","isoDate":"2026-07-18T08:03:42.227+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/8e65d921-3643-4fe9-a815-314a9c83554c.webp"},{"id":"3aa23a95-b57d-4216-ac69-cde04865f92b","title":"Parrot Entertainer for Classrooms That Kids Love","slug":"parrot-entertainer-for-classrooms","excerpt":"Bring a parrot entertainer for classrooms to your Bay Area school for a lively, hands-on program that builds curiosity, confidence, and joyful memories.","content":null,"date":"July 16, 2026","isoDate":"2026-07-16T08:00:07.309+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/3aa23a95-b57d-4216-ac69-cde04865f92b.webp"},{"id":"c98407f3-6b5c-428e-9875-1318fa5bf4c1","title":"How to Organize Office Party Entertainment","slug":"organize-office-party-entertainment","excerpt":"Learn how to organize office party entertainment that brings coworkers together, fits your space, and gives guests a fun, memorable shared experience.","content":null,"date":"July 14, 2026","isoDate":"2026-07-14T08:03:26.852+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/c98407f3-6b5c-428e-9875-1318fa5bf4c1.webp"},{"id":"d9940a9f-aba6-45c8-948b-7efcb7df0586","title":"How to Host Classroom Bird Programs That Soar","slug":"how-to-host-classroom-bird-programs","excerpt":"Learn how to host classroom bird programs with practical planning tips for a safe, interactive, memorable learning experience students will love today.","content":null,"date":"July 12, 2026","isoDate":"2026-07-12T08:09:24.78+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/d9940a9f-aba6-45c8-948b-7efcb7df0586.webp"},{"id":"b5d7b1b3-d276-4aee-804b-55c9b676ee90","title":"Bird Assembly Program Benefits for Schools","slug":"bird-assembly-program-benefits","excerpt":"Bird assembly program benefits include stronger student engagement, hands-on learning, and a memorable school event that feels fun and educational.","content":null,"date":"July 10, 2026","isoDate":"2026-07-10T07:48:17.76+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/b5d7b1b3-d276-4aee-804b-55c9b676ee90.webp"},{"id":"0d86ca0d-c1c0-41b5-a7e5-9c29c320d569","title":"Mobile Animal Shows for Memorable Events","slug":"mobile-animal-shows-memorable-events","excerpt":"Mobile animal shows bring live, interactive fun to parties, schools, and offices with engaging animals, easy setup, and memorable education.","content":null,"date":"July 8, 2026","isoDate":"2026-07-08T07:48:14.337+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/0d86ca0d-c1c0-41b5-a7e5-9c29c320d569.webp"},{"id":"30128e7c-9dba-42cd-928a-5e3b45c2d325","title":"Home Party Animal Entertainment That Wows","slug":"home-party-animal-entertainment","excerpt":"Home party animal entertainment brings live, interactive fun to birthdays, schools, and events with a memorable mix of excitement and learning.","content":null,"date":"July 6, 2026","isoDate":"2026-07-06T07:45:49.204+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/30128e7c-9dba-42cd-928a-5e3b45c2d325.webp"},{"id":"2b9b6e0d-35e2-4857-bd9e-6f41e1d06fe8","title":"How to Plan a Bird Themed Birthday","slug":"how-to-plan-a-bird-themed-birthday","excerpt":"Learn how to plan a bird themed birthday with fun decor, food, games, and live entertainment ideas that keep kids engaged and parents stress-free.","content":null,"date":"July 4, 2026","isoDate":"2026-07-04T07:48:55.485+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/2b9b6e0d-35e2-4857-bd9e-6f41e1d06fe8.webp"},{"id":"e44cea0d-9370-4bd5-b293-c6357216849d","title":"Traveling Parrot Show Packages for Events","slug":"traveling-parrot-show-packages-events","excerpt":"Traveling parrot show packages bring interactive, educational fun to birthdays, schools, and corporate events with professional mobile entertainment.","content":null,"date":"July 2, 2026","isoDate":"2026-07-02T07:42:37.002+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/e44cea0d-9370-4bd5-b293-c6357216849d.webp"},{"id":"4e02ac4f-1399-4452-b600-c4e62a6dd40a","title":"What Ages Enjoy Parrot Shows Most?","slug":"what-ages-enjoy-parrot-shows","excerpt":"Wondering what ages enjoy parrot shows? From toddlers to adults, see who loves interactive bird shows and how to plan the right event.","content":null,"date":"June 30, 2026","isoDate":"2026-06-30T07:33:52.271+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/4e02ac4f-1399-4452-b600-c4e62a6dd40a.webp"},{"id":"1fd9addd-7a12-41ae-a5b6-628c0e6a1f2f","title":"A Guide to Interactive Bird Shows","slug":"guide-to-interactive-bird-shows","excerpt":"This guide to interactive bird shows helps parents, schools, and event planners choose a fun, safe, hands-on experience guests will remember.","content":null,"date":"June 28, 2026","isoDate":"2026-06-28T07:33:21.408+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/1fd9addd-7a12-41ae-a5b6-628c0e6a1f2f.webp"},{"id":"20096632-1898-4185-8568-22d1435fea18","title":"10 Educational Birthday Party Ideas","slug":"educational-birthday-party-ideas","excerpt":"Discover educational birthday party ideas that keep kids engaged, parents relaxed, and guests talking long after the celebration ends.","content":null,"date":"June 26, 2026","isoDate":"2026-06-26T07:30:05.895+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/20096632-1898-4185-8568-22d1435fea18.webp"},{"id":"71c098c5-eef2-4d01-b46e-5d32acc96533","title":"How to Book Parrot Entertainment Right","slug":"how-to-book-parrot-entertainment-right","excerpt":"Learn how to book parrot entertainment for birthdays, schools, and events with the right questions, timing, and setup for a fun, smooth show.","content":null,"date":"June 24, 2026","isoDate":"2026-06-24T07:21:29.05+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/71c098c5-eef2-4d01-b46e-5d32acc96533.webp"},{"id":"114fe40e-31cd-4d17-928a-69d90ff6f190","title":"Best Live Entertainment for Classrooms","slug":"best-live-entertainment-for-classrooms","excerpt":"Find the best live entertainment for classrooms with ideas that engage students, support learning, and keep school events fun, safe, and easy.","content":null,"date":"June 22, 2026","isoDate":"2026-06-22T07:18:36.552+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/114fe40e-31cd-4d17-928a-69d90ff6f190.webp"},{"id":"4bb82367-26f2-4545-83e3-48ecbe1bc499","title":"How to Choose Event Entertainment That Works","slug":"how-to-choose-event-entertainment","excerpt":"Learn how to choose event entertainment that fits your crowd, venue, and budget, with smart tips for parties, schools, and corporate events.","content":null,"date":"June 20, 2026","isoDate":"2026-06-20T07:18:30.803+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/4bb82367-26f2-4545-83e3-48ecbe1bc499.webp"},{"id":"9cdd5f11-0618-4b0a-96fb-9f0da465ad94","title":"Interactive Birthday Entertainment That Stands Out","slug":"interactive-birthday-entertainment-that-stands-out","excerpt":"Interactive birthday entertainment keeps guests involved, smiling, and talking long after the party ends. Here’s how to choose the right fit.","content":null,"date":"June 18, 2026","isoDate":"2026-06-18T07:12:47.855+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/9cdd5f11-0618-4b0a-96fb-9f0da465ad94.webp"},{"id":"7df7931c-9c5d-4f8e-bd4d-ea14eae7f073","title":"How to Plan School Assemblies That Work","slug":"how-to-plan-school-assemblies","excerpt":"Learn how to plan school assemblies that stay organized, fit your goals, engage students, and make the day feel fun, smooth, and memorable.","content":null,"date":"June 16, 2026","isoDate":"2026-06-16T07:06:32.41+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/7df7931c-9c5d-4f8e-bd4d-ea14eae7f073.webp"},{"id":"8251c4f1-996b-4172-ac28-ccabcc8357c8","title":"12 Best Birthday Entertainment Ideas","slug":"best-birthday-entertainment-ideas","excerpt":"Looking for the best birthday entertainment ideas? Find fun, interactive options for kids, schools, and mixed-age parties that guests remember.","content":null,"date":"June 14, 2026","isoDate":"2026-06-14T06:57:31.417+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/8251c4f1-996b-4172-ac28-ccabcc8357c8.webp"},{"id":"db5635d8-ae44-4d39-b4b2-06cd4b43ff19","title":"Guide to Booking Animal Entertainers","slug":"guide-to-booking-animal-entertainers","excerpt":"Use this guide to booking animal entertainers to choose the right show, ask smart questions, and plan a fun, professional event guests remember.","content":null,"date":"June 12, 2026","isoDate":"2026-06-12T06:57:55.128+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/db5635d8-ae44-4d39-b4b2-06cd4b43ff19.webp"},{"id":"7ee93066-e56d-41d5-a89c-685fe833e7c7","title":"Book a Parrot Party Performer for Any Event","slug":"book-a-parrot-party-performer","excerpt":"Book a parrot party performer for birthdays, schools, and corporate events. Bring interactive, professional live bird entertainment to you.","content":null,"date":"June 10, 2026","isoDate":"2026-06-10T06:48:42.442+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/7ee93066-e56d-41d5-a89c-685fe833e7c7.webp"},{"id":"de699d45-a662-4cf5-a80f-129cf7cebe16","title":"How to Entertain Kids at a Birthday Party","slug":"how-to-entertain-kids-at-a-birthday-party","excerpt":"Learn how to entertain kids at a birthday party with simple ideas, age-smart planning, and memorable activities that keep guests happy.","content":null,"date":"June 8, 2026","isoDate":"2026-06-08T06:39:42.113+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/de699d45-a662-4cf5-a80f-129cf7cebe16.webp"},{"id":"d82ba36d-0907-4cfe-8214-c8ca59ecf1ba","title":"School Assembly Programs That Kids Remember","slug":"school-assembly-programs-that-kids-remember","excerpt":"School assembly programs work best when they engage, educate, and run smoothly. See what makes a program memorable for students and staff.","content":null,"date":"June 6, 2026","isoDate":"2026-06-06T06:30:07.254+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/d82ba36d-0907-4cfe-8214-c8ca59ecf1ba.webp"},{"id":"e313ba8c-1a36-4073-a07b-d94871f6960d","title":"Animal Encounter Party at Home Made Easy","slug":"animal-encounter-party-at-home","excerpt":"Plan an animal encounter party at home with less stress. Learn what works, what to expect, and how to create a fun, polished event.","content":null,"date":"June 4, 2026","isoDate":"2026-06-04T06:21:31.224+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/e313ba8c-1a36-4073-a07b-d94871f6960d.webp"},{"id":"25166ef0-8bb9-414b-947b-1bd460407ed2","title":"Are Parrots Safe Around Children?","slug":"are-parrots-safe-around-children","excerpt":"Are parrots safe around children? Learn what matters most for safe, fun interactions at parties, schools, and family events with trained birds.","content":null,"date":"June 2, 2026","isoDate":"2026-06-02T06:12:49.272+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/25166ef0-8bb9-414b-947b-1bd460407ed2.webp"},{"id":"954fe2fc-fa6b-4db4-a0ee-7ca59c5a45c5","title":"Parrot Birthday Entertainment That Wows","slug":"parrot-birthday-entertainment-that-wows","excerpt":"Parrot birthday entertainment brings live, interactive fun to parties with trained birds, hands-on moments, and a polished show guests remember.","content":null,"date":"May 31, 2026","isoDate":"2026-05-31T06:09:22.127+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/954fe2fc-fa6b-4db4-a0ee-7ca59c5a45c5.webp"},{"id":"371ed9b8-9ac0-4d19-a529-8f5e12d4c617","title":"10 Unique Birthday Entertainment for Kids Ideas","slug":"unique-birthday-entertainment-for-kids-ideas","excerpt":"Looking for unique birthday entertainment for kids? Here are 10 fun, memorable party ideas that keep children engaged and make planning easier.","content":null,"date":"May 29, 2026","isoDate":"2026-05-29T06:00:16.948+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/371ed9b8-9ac0-4d19-a529-8f5e12d4c617.webp"},{"id":"d754dbbc-9091-456f-9513-e94b50f644a9","title":"What Is the Best School Assembly Program?","slug":"what-is-the-best-school-assembly-program","excerpt":"What is the best school assembly program? Learn what makes an assembly engaging, educational, age-appropriate, and easy for schools to host.","content":null,"date":"May 27, 2026","isoDate":"2026-05-27T05:42:09.336+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/d754dbbc-9091-456f-9513-e94b50f644a9.webp"},{"id":"f380be54-a9cb-417f-bfaf-17fcbb83a599","title":"12 Kids Educational Entertainment Ideas","slug":"kids-educational-entertainment-ideas","excerpt":"Try these kids educational entertainment ideas for parties, schools, and family events that mix hands-on fun, learning, and memorable moments.","content":null,"date":"May 26, 2026","isoDate":"2026-05-26T05:33:55.288+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/f380be54-a9cb-417f-bfaf-17fcbb83a599.webp"},{"id":"49d9a951-8e4e-4cbc-b3f7-b9677b0f6958","title":"Live Parrot Show for Events That Guests Love","slug":"live-parrot-show-for-events","excerpt":"Book a live parrot show for events that brings fun, learning, and interaction to birthdays, schools, and corporate gatherings in the Bay Area.","content":null,"date":"May 25, 2026","isoDate":"2026-05-25T05:33:16.08+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/49d9a951-8e4e-4cbc-b3f7-b9677b0f6958.webp"},{"id":"f631ff22-3986-4e54-9a75-f2d03b5d1f0f","title":"Why Mobile Animal Party Entertainment Works","slug":"mobile-animal-party-entertainment","excerpt":"Mobile animal party entertainment brings live parrots and hands-on fun to birthdays, schools, and events with a polished, memorable experience.","content":null,"date":"May 24, 2026","isoDate":"2026-05-24T05:30:11.917+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/f631ff22-3986-4e54-9a75-f2d03b5d1f0f.webp"},{"id":"81af1956-11e6-43a0-a084-a3736b54e6da","title":"Family Friendly Event Entertainment That Works","slug":"family-friendly-event-entertainment-that-works","excerpt":"Find family friendly event entertainment that keeps kids engaged, adults included, and planning simple for schools, parties, and company events.","content":null,"date":"May 23, 2026","isoDate":"2026-05-23T05:24:05.193+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/81af1956-11e6-43a0-a084-a3736b54e6da.webp"},{"id":"7fb4e358-b179-47b9-b622-763008b43db8","title":"Interactive Entertainment for Company Events","slug":"interactive-entertainment-for-company-events","excerpt":"Interactive entertainment for company events keeps guests engaged, sparks conversation, and turns ordinary office gatherings into memorable experiences.","content":null,"date":"May 22, 2026","isoDate":"2026-05-22T05:18:08.737+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/7fb4e358-b179-47b9-b622-763008b43db8.webp"},{"id":"a0886d40-0dde-48f4-9e5b-9d6a4fc2ed10","title":"Corporate Event Animal Entertainment Ideas","slug":"corporate-event-animal-entertainment-ideas","excerpt":"Corporate event animal entertainment brings energy, interaction, and lasting memories to office parties, team events, and client gatherings.","content":null,"date":"May 21, 2026","isoDate":"2026-05-21T05:12:05.854+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/a0886d40-0dde-48f4-9e5b-9d6a4fc2ed10.webp"},{"id":"72fad076-1594-42b1-851b-477eb7b30857","title":"Why a Classroom Animal Education Program Works","slug":"why-a-classroom-animal-education-program-works","excerpt":"See how a classroom animal education program boosts focus, curiosity, and participation while giving schools a fun, structured learning experience.","content":null,"date":"May 20, 2026","isoDate":"2026-05-20T05:09:04.916+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/72fad076-1594-42b1-851b-477eb7b30857.webp"},{"id":"612d8999-cecc-4193-97fd-d624e0ae5baa","title":"Why a School Assembly Animal Show Works","slug":"school-assembly-animal-show","excerpt":"A school assembly animal show brings energy, learning, and audience interaction together in one memorable program for students, staff, and families.","content":null,"date":"May 19, 2026","isoDate":"2026-05-19T05:03:08.204+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/612d8999-cecc-4193-97fd-d624e0ae5baa.webp"},{"id":"77450b34-ee8b-4c1c-8470-ebedab589e13","title":"Educational Animal Show for Schools That Works","slug":"educational-animal-show-for-schools","excerpt":"An educational animal show for schools brings live learning, student interaction, and reliable fun to assemblies, classrooms, and special events.","content":null,"date":"May 18, 2026","isoDate":"2026-05-18T04:54:30.843+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/77450b34-ee8b-4c1c-8470-ebedab589e13.webp"},{"id":"ee9c7913-7ac4-4727-a118-0cded7700773","title":"Birthday Party Entertainment at Home That Works","slug":"birthday-party-entertainment-at-home","excerpt":"Planning birthday party entertainment at home? Here are fun, low-stress ideas that keep kids engaged and make your event feel truly special.","content":null,"date":"May 17, 2026","isoDate":"2026-05-17T04:54:31.185+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/ee9c7913-7ac4-4727-a118-0cded7700773.webp"},{"id":"e232d1e7-d6a0-4daf-9994-54de5bcd4897","title":"Animal Entertainer for Birthday Party Ideas","slug":"animal-entertainer-for-birthday-party","excerpt":"Looking for an animal entertainer for birthday party fun? Learn what to expect, what to ask, and how live parrots can make any event memorable.","content":null,"date":"May 16, 2026","isoDate":"2026-05-16T04:45:31.001+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/e232d1e7-d6a0-4daf-9994-54de5bcd4897.webp"},{"id":"9f559f74-a8ef-4774-bccf-cbef88a215eb","title":"Why a Parrot Show for Kids Party Works","slug":"why-a-parrot-show-for-kids-party-works","excerpt":"See why a parrot show for kids party brings fun, learning, and easy planning together for birthdays, schools, and family events across the Bay Area.","content":null,"date":"May 15, 2026","isoDate":"2026-05-15T04:48:30.991+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/9f559f74-a8ef-4774-bccf-cbef88a215eb.webp"},{"id":"541bdfab-e604-4ee1-bbf2-0e24cacf6ef3","title":"10 Interactive Animal Birthday Party Ideas","slug":"interactive-animal-birthday-party-ideas","excerpt":"Try 10 interactive animal birthday party ideas that keep kids engaged with hands-on fun, live encounters, and memorable moments for every age.","content":null,"date":"May 14, 2026","isoDate":"2026-05-14T15:05:18.401+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/df68d2d7-f691-4069-a356-e866c5b04d31/541bdfab-e604-4ee1-bbf2-0e24cacf6ef3.webp"}];
  var SORO_TOKEN = '17dcb96c-c42d-48fd-a583-20273eb18f87';
  var SORO_API_BASE = 'https://app.trysoro.com';
  var SORO_T = {"allArticles":"All Articles","backToAll":"Back to all articles","loading":"Loading article...","error":"Failed to load article. Please try again.","empty":"Published articles may take up to 60 minutes to appear here.","blogArticles":"Blog articles"};
  
  // Content cache (loaded on demand)
  var contentCache = {};
  
  // Pre-populate cache with any server-included content (for SEO deep links)
  SORO_ARTICLES.forEach(function(article) {
    if (article.content) {
      contentCache[article.id] = article.content;
    }
  });
  
  // Find the container
  var container = document.getElementById('soro-blog');
  if (!container) {
    console.error('Soro Blog: No element with id="soro-blog" found');
    return;
  }
  
  // Save the original page title so we can restore it
  var originalTitle = document.title;
  var originalDescription = '';
  var descMeta = document.querySelector('meta[name="description"]');
  if (descMeta) originalDescription = descMeta.getAttribute('content') || '';
  
  // Detect if running inside a srcdoc iframe (website builders like GoDaddy, Wix, etc.)
  var isSrcdocIframe = false;
  var parentBaseUrl = null;
  try {
    isSrcdocIframe = window.location.href === 'about:srcdoc' || 
                     window.location.pathname === '/srcdoc' ||
                     (window.self !== window.top && window.location.origin === 'null');
  } catch(e) {
    isSrcdocIframe = true; // cross-origin means we're in an iframe
  }
  
  // Try to get the parent page URL for building article links
  if (isSrcdocIframe) {
    try {
      var pUrl = new URL(window.parent.location.href);
      pUrl.searchParams.delete('post');
      parentBaseUrl = pUrl.origin + pUrl.pathname + pUrl.search;
    } catch(e) {
      parentBaseUrl = null;
    }
  }
  
  // Detect deep-linked article from URL query param: ?post=slug
  function getRequestedSlug() {
    try {
      if (isSrcdocIframe) {
        // In srcdoc iframe, check parent URL if accessible
        try {
          var params = new URLSearchParams(window.parent.location.search);
          return params.get('post') || null;
        } catch(e) {
          return null;
        }
      }
      var params = new URLSearchParams(window.location.search);
      return params.get('post') || null;
    } catch(e) {
      return null;
    }
  }
  
  // Build article URL with query param (preserves existing params)
  function getArticleUrl(slug) {
    try {
      if (isSrcdocIframe && parentBaseUrl) {
        // Build full parent page URL with ?post= param so new tab works
        var sep = parentBaseUrl.indexOf('?') !== -1 ? '&' : '?';
        return parentBaseUrl + sep + 'post=' + encodeURIComponent(slug);
      }
      if (isSrcdocIframe) {
        return '#post=' + encodeURIComponent(slug);
      }
      var url = new URL(window.location.href);
      url.searchParams.set('post', slug);
      return url.pathname + url.search;
    } catch(e) {
      return '#post=' + encodeURIComponent(slug);
    }
  }
  
  // Get the base list URL (current page without post param)
  function getListUrl() {
    try {
      if (isSrcdocIframe && parentBaseUrl) {
        return parentBaseUrl;
      }
      if (isSrcdocIframe) {
        return '#';
      }
      var url = new URL(window.location.href);
      url.searchParams.delete('post');
      var search = url.search;
      return url.pathname + (search ? search : '');
    } catch(e) {
      return window.location.pathname;
    }
  }
  
  // Safe pushState wrapper (fails silently in srcdoc iframes)
  function safePushState(state, title, url) {
    if (isSrcdocIframe) return;
    try {
      history.pushState(state, title, url);
    } catch(e) {
      // pushState not available (srcdoc iframe, cross-origin, etc.)
    }
  }
  
  // Update page meta tags for SEO (title, description, canonical, JSON-LD)
  // Skip in srcdoc iframes since we can't meaningfully update the parent page
  function updatePageMeta(article) {
    if (isSrcdocIframe) return;
    if (article) {
      // Article view: set article-specific meta
      document.title = article.title + ' | ' + SORO_BLOG_TITLE;
      
      var desc = document.querySelector('meta[name="description"]');
      if (!desc) {
        desc = document.createElement('meta');
        desc.setAttribute('name', 'description');
        document.head.appendChild(desc);
      }
      desc.setAttribute('content', article.excerpt);
      
      // Set canonical URL to the article deep link
      var canonical = document.querySelector('link[rel="canonical"][data-soro]');
      if (!canonical) {
        canonical = document.createElement('link');
        canonical.setAttribute('rel', 'canonical');
        canonical.setAttribute('data-soro', 'true');
        document.head.appendChild(canonical);
      }
      canonical.setAttribute('href', window.location.href);
      
      // JSON-LD: single BlogPosting
      injectJsonLd({
        '@context': 'https://schema.org',
        '@type': 'BlogPosting',
        'headline': article.title,
        'description': article.excerpt,
        'datePublished': article.isoDate,
        'image': article.image || undefined,
        'url': window.location.href
      });
    } else {
      // List view: restore original meta
      document.title = originalTitle;
      
      var desc = document.querySelector('meta[name="description"]');
      if (desc && originalDescription) {
        desc.setAttribute('content', originalDescription);
      }
      
      // Remove soro canonical
      var canonical = document.querySelector('link[rel="canonical"][data-soro]');
      if (canonical) canonical.remove();
      
      // JSON-LD: Blog with all articles
      var blogPosting = SORO_ARTICLES.map(function(a) {
        var item = {
          '@type': 'BlogPosting',
          'headline': a.title,
          'description': a.excerpt,
          'datePublished': a.isoDate,
          'url': window.location.origin + getArticleUrl(a.slug)
        };
        if (a.image) item.image = a.image;
        return item;
      });
      
      injectJsonLd({
        '@context': 'https://schema.org',
        '@type': 'Blog',
        'name': SORO_BLOG_TITLE,
        'blogPost': blogPosting
      });
    }
  }
  
  // Inject styles
  var styleId = 'soro-blog-styles-light';
  if (!document.getElementById(styleId)) {
    var style = document.createElement('style');
    style.id = styleId;
    style.textContent = `
      .soro-blog {
        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
        max-width: 800px;
        margin: 0 auto;
        color: #1a1a1a;
        background: transparent;
      }
      .soro-blog * {
        box-sizing: border-box;
      }
      .soro-blog a {
        text-decoration: none;
        color: inherit;
      }
      .soro-blog-header {
        display: none;
        align-items: center;
        margin-bottom: 16px;
      }
      .soro-blog-back {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        background: transparent;
        border: 1px solid #e5e5e5;
        color: #666;
        cursor: pointer;
        font-size: 14px;
        padding: 8px 16px;
        border-radius: 6px;
        transition: background 0.2s, border-color 0.2s;
        text-decoration: none;
      }
      .soro-blog-back:hover {
        background: #f5f5f5;
        border-color: #d0d0d0;
      }
      .soro-blog-list {
        display: flex;
        flex-direction: column;
        gap: 24px;
      }
      .soro-blog-card {
        display: flex;
        gap: 20px;
        padding: 20px;
        background: transparent;
        border: 1px solid #e5e5e5;
        border-radius: 12px;
        cursor: pointer;
        transition: box-shadow 0.2s, border-color 0.2s;
        text-decoration: none;
        color: inherit;
      }
      .soro-blog-card:hover {
        box-shadow: 0 4px 12px rgba(0,0,0,0.08);
        border-color: #d0d0d0;
      }
      .soro-blog-card-image {
        width: 140px;
        height: 100px;
        object-fit: cover;
        border-radius: 8px;
        flex-shrink: 0;
      }
      .soro-blog-card-content {
        flex: 1;
        min-width: 0;
      }
      .soro-blog-card-title {
        font-size: 18px;
        font-weight: 600;
        margin: 0 0 8px 0;
        line-height: 1.3;
        color: #1a1a1a;
      }
      h2.soro-blog-card-title {
        font-size: 18px;
      }
      .soro-blog-card-excerpt {
        font-size: 14px;
        color: #666;
        margin: 0 0 12px 0;
        line-height: 1.5;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
      }
      .soro-blog-card-date {
        font-size: 12px;
        color: #999;
      }
      .soro-blog-article {
        display: none;
      }
      .soro-blog-article.visible {
        display: block;
      }
      .soro-blog-article-title {
        font-size: 32px;
        font-weight: 700;
        margin: 0 0 12px 0;
        line-height: 1.2;
        color: #1a1a1a;
      }
      .soro-blog-article-date {
        font-size: 14px;
        color: #666;
        margin-bottom: 24px;
      }
      .soro-blog-article-image {
        width: 100%;
        max-height: 400px;
        object-fit: cover;
        border-radius: 12px;
        margin-bottom: 24px;
      }
      .soro-blog-article-content {
        font-size: 16px;
        line-height: 1.7;
        color: #1a1a1a;
      }
      .soro-blog-article-content h1,
      .soro-blog-article-content h2,
      .soro-blog-article-content h3 {
        margin-top: 32px;
        margin-bottom: 16px;
        line-height: 1.3;
        color: #1a1a1a;
      }
      .soro-blog-article-content h2 {
        font-size: 24px;
      }
      .soro-blog-article-content h3 {
        font-size: 20px;
      }
      .soro-blog-article-content p {
        margin: 0 0 16px 0;
      }
      .soro-blog-article-content ul,
      .soro-blog-article-content ol {
        margin: 0 0 16px 0;
        padding-left: 24px;
        padding-right: 0;
      }
      .soro-blog-article-content li {
        margin-bottom: 8px;
      }
      .soro-blog-article-content a {
        color: #0066cc;
      }
      .soro-blog-article-content img {
        max-width: 100%;
        height: auto;
        border-radius: 8px;
      }
      .soro-blog-empty {
        text-align: center;
        padding: 48px 24px;
        color: #666;
      }
      .soro-blog-loading {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 48px 24px;
        color: #666;
      }
      .soro-blog-spinner {
        width: 24px;
        height: 24px;
        border: 2px solid #e5e5e5;
        border-top-color: #1a1a1a;
        border-radius: 50%;
        animation: soro-spin 0.8s linear infinite;
        margin-right: 12px;
      }
      @keyframes soro-spin {
        to { transform: rotate(360deg); }
      }
      .soro-blog-error {
        text-align: center;
        padding: 48px 24px;
        color: #dc2626;
      }
      @media (max-width: 600px) {
        .soro-blog-card {
          flex-direction: column;
          gap: 12px;
        }
        .soro-blog-card-image {
          width: 100%;
          height: 180px;
        }
        .soro-blog-article-title {
          font-size: 24px;
        }
      }
    `;
    document.head.appendChild(style);
  }
  
  // Inject or update JSON-LD structured data
  function injectJsonLd(data) {
    var jsonLdId = 'soro-blog-jsonld';
    var existing = document.getElementById(jsonLdId);
    if (existing) existing.remove();
    
    var script = document.createElement('script');
    script.id = jsonLdId;
    script.type = 'application/ld+json';
    script.textContent = JSON.stringify(data);
    document.head.appendChild(script);
  }
  
  // State
  var currentView = 'list';
  var currentArticle = null;
  var isLoading = false;
  
  // Fetch article content on demand
  function fetchArticleContent(articleId, callback) {
    // Check cache first (includes server-pre-rendered content for deep links)
    if (contentCache[articleId]) {
      callback(null, contentCache[articleId]);
      return;
    }
    
    var url = SORO_API_BASE + '/api/embed/' + SORO_TOKEN + '/article/' + articleId;
    
    fetch(url)
      .then(function(response) {
        if (!response.ok) throw new Error('Failed to load article');
        return response.json();
      })
      .then(function(data) {
        contentCache[articleId] = data.content;
        callback(null, data.content);
      })
      .catch(function(error) {
        callback(error, null);
      });
  }
  
  // Render article list — cards are real <a> links for SEO crawlability
  function renderList() {
    if (SORO_ARTICLES.length === 0) {
      return '<div class="soro-blog-empty"><p>' + SORO_T.empty + '</p></div>';
    }
    
    var html = '<section class="soro-blog-list" role="feed" aria-label="' + SORO_T.blogArticles + '">';
    SORO_ARTICLES.forEach(function(article) {
      var articleUrl = getArticleUrl(article.slug);
      var targetAttr = isSrcdocIframe ? ' target="_blank" rel="noopener"' : '';
      html += '<a href="' + articleUrl + '"' + targetAttr + ' class="soro-blog-card" data-slug="' + escapeHtml(article.slug) + '" itemscope itemtype="https://schema.org/BlogPosting">';
      if (article.image) {
        html += '<img class="soro-blog-card-image" src="' + article.image + '" alt="' + escapeHtml(article.title) + '" loading="lazy" itemprop="image">';
      }
      html += '<div class="soro-blog-card-content">';
      html += '<h2 class="soro-blog-card-title" itemprop="headline">' + escapeHtml(article.title) + '</h2>';
      html += '<p class="soro-blog-card-excerpt" itemprop="description">' + escapeHtml(article.excerpt) + '</p>';
      html += '<time class="soro-blog-card-date" datetime="' + article.isoDate + '" itemprop="datePublished">' + article.date + '</time>';
      html += '</div></a>';
    });
    html += '</section>';
    return html;
  }
  
  function renderArticle(article, content) {
    var html = '<article class="soro-blog-article visible" itemscope itemtype="https://schema.org/BlogPosting">';
    html += '<header>';
    html += '<h1 class="soro-blog-article-title" itemprop="headline">' + escapeHtml(article.title) + '</h1>';
    html += '<time class="soro-blog-article-date" datetime="' + article.isoDate + '" itemprop="datePublished">' + article.date + '</time>';
    html += '</header>';
    if (article.image) {
      html += '<img class="soro-blog-article-image" src="' + article.image + '" alt="' + escapeHtml(article.title) + '" itemprop="image">';
    }
    html += '<div class="soro-blog-article-content" itemprop="articleBody">' + content + '</div>';
    html += '</article>';
    return html;
  }
  
  function renderLoading() {
    return '<div class="soro-blog-loading"><div class="soro-blog-spinner"></div>' + SORO_T.loading + '</div>';
  }
  
  function renderError() {
    return '<div class="soro-blog-error"><p>' + SORO_T.error + '</p></div>';
  }
  
  function escapeHtml(str) {
    var div = document.createElement('div');
    div.textContent = str;
    return div.innerHTML;
  }
  
  // Make all links inside article content open in a new tab
  // This is critical for embeds running on external sites or inside iframes
  function processContentLinks(parentEl) {
    var links = parentEl.querySelectorAll('.soro-blog-article-content a');
    for (var i = 0; i < links.length; i++) {
      links[i].setAttribute('target', '_blank');
      links[i].setAttribute('rel', 'noopener noreferrer');
    }
  }
  
  // Navigate to article view (updates URL without full reload)
  function showArticle(slug) {
    var article = null;
    for (var i = 0; i < SORO_ARTICLES.length; i++) {
      if (SORO_ARTICLES[i].slug === slug) {
        article = SORO_ARTICLES[i];
        break;
      }
    }
    if (!article) {
      // Unknown slug (deleted or unpublished article) — show the list instead of a blank widget
      showList();
      return;
    }

    currentArticle = article;
    currentView = 'article';
    
    // Update URL (pushState so back button works)
    var articleUrl = getArticleUrl(slug);
    if (!isSrcdocIframe && window.location.pathname + window.location.search !== articleUrl) {
      safePushState({ post: slug }, '', articleUrl);
    }
    
    // Update page meta for SEO
    updatePageMeta(article);
    
    var header = container.querySelector('.soro-blog-header');
    var content = container.querySelector('.soro-blog-content');
    header.style.display = 'flex';
    
    // Check if content is already available (pre-rendered or cached)
    if (contentCache[article.id]) {
      content.innerHTML = renderArticle(article, contentCache[article.id]);
      processContentLinks(content);
    } else {
      // Show loading, then fetch
      isLoading = true;
      content.innerHTML = renderLoading();
      
      fetchArticleContent(article.id, function(error, articleContent) {
        isLoading = false;
        if (error) {
          content.innerHTML = renderError();
        } else {
          content.innerHTML = renderArticle(article, articleContent);
          processContentLinks(content);
        }
      });
    }
    
    container.scrollIntoView({ behavior: 'smooth', block: 'start' });
  }
  
  // Navigate to list view
  function showList() {
    currentView = 'list';
    currentArticle = null;
    isLoading = false;
    
    // Update URL
    var listUrl = getListUrl();
    if (!isSrcdocIframe && window.location.pathname + window.location.search !== listUrl) {
      safePushState({ post: null }, '', listUrl);
    }
    
    // Restore page meta
    updatePageMeta(null);
    
    var header = container.querySelector('.soro-blog-header');
    var content = container.querySelector('.soro-blog-content');
    header.style.display = 'none';
    content.innerHTML = renderList();
    
    // Intercept card link clicks
    var cards = content.querySelectorAll('.soro-blog-card');
    cards.forEach(function(card) {
      card.addEventListener('click', function(e) {
        e.preventDefault();
        var slug = card.getAttribute('data-slug');
        if (isSrcdocIframe) {
          // In srcdoc iframe, open article in a new tab with real URL
          var url = getArticleUrl(slug);
          window.open(url, '_blank');
        } else {
          showArticle(slug);
        }
      });
    });
  }
  
  // Handle browser back/forward buttons (not applicable in srcdoc iframes)
  if (!isSrcdocIframe) {
    window.addEventListener('popstate', function(e) {
      var slug = getRequestedSlug();
      if (slug) {
        showArticle(slug);
      } else {
        showList();
      }
    });
  }
  
  // Initial render
  var backArrow = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 12H5M12 19l-7-7 7-7"/></svg>';
  container.innerHTML = '<div class="soro-blog">' +
    '<div class="soro-blog-header" style="display: none;">' +
      '<a href="' + getListUrl() + '" class="soro-blog-back" aria-label="' + SORO_T.backToAll + '">' +
        backArrow +
        SORO_T.allArticles +
      '</a>' +
    '</div>' +
    '<div class="soro-blog-content"></div>' +
  '</div>';
  
  // Add back button handler (intercept for SPA navigation)
  container.querySelector('.soro-blog-back').addEventListener('click', function(e) {
    e.preventDefault();
    showList();
  });
  
  // Check if URL has a deep-linked article on initial load
  var initialSlug = getRequestedSlug();
  if (initialSlug) {
    showArticle(initialSlug);
  } else {
    showList();
  }
})();