{"id":247,"date":"2026-09-21T06:21:30","date_gmt":"2026-09-21T06:21:30","guid":{"rendered":"https:\/\/mybrubaker.com\/?page_id=247"},"modified":"2026-09-21T07:27:46","modified_gmt":"2026-09-21T07:27:46","slug":"7thbirthday","status":"publish","type":"page","link":"https:\/\/mybrubaker.com\/index.php\/flynn\/7thbirthday\/","title":{"rendered":"7th Birthday"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"247\" class=\"elementor elementor-247\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e98636d e-flex e-con-boxed e-con e-parent\" data-id=\"e98636d\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dd88efc elementor-widget elementor-widget-html\" data-id=\"dd88efc\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================\r\n     FLYNN'S 7TH BIRTHDAY POK\u00c9MON SURPRISE\r\n     Interactive Storybook + Moderated Birthday Guestbook\r\n     ========================================================= -->\r\n\r\n<div id=\"flynn-adventure\" class=\"fba-app\" data-post-id=\"\">\r\n\r\n  <div class=\"fba-shell\">\r\n\r\n    <main>\r\n\r\n      <!-- =====================================================\r\n           COVER\r\n           Not included in story page numbering\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene fba-cover is-active\"\r\n               data-scene=\"cover\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-cover-art\">\r\n          <div class=\"fba-art\">\r\n            COVER IMAGE PLACEHOLDER\r\n            <small>Flynn and Greninja \u2014 full storybook cover illustration<\/small>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"fba-cover-copy\">\r\n\r\n          <p class=\"fba-cover-eyebrow\">\r\n            An Interactive Birthday Adventure\r\n          <\/p>\r\n\r\n          <h1>\r\n            Flynn's 7th Birthday<br>\r\n            Pok\u00e9mon Surprise\r\n          <\/h1>\r\n\r\n          <p class=\"fba-cover-byline\">\r\n            Featuring Flynn &amp; Greninja\r\n          <\/p>\r\n\r\n          <button class=\"fba-primary fba-open-book\"\r\n                  data-open-book>\r\n            Open the Book\r\n          <\/button>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 1\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"1\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 1 IMAGE PLACEHOLDER\r\n          <small>Flynn arriving at school with his backpack<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">A birthday surprise<\/p>\r\n\r\n          <h2>One Very Unusual School Day<\/h2>\r\n\r\n          <p>\r\n            Flynn's seventh birthday is coming up on September 26,\r\n            and he has been thinking <span class=\"fba-word\">about<\/span>\r\n            Pok\u00e9mon all week. He heads to\r\n            <span class=\"fba-word\">school<\/span>\r\n            like any other morning... except there is one very unusual thing\r\n            <span class=\"fba-word\">with<\/span> him.\r\n          <\/p>\r\n\r\n          <p>\r\n            Hidden inside his backpack is a Pok\u00e9 Ball.\r\n            Inside that Pok\u00e9 Ball is Greninja.\r\n            Flynn knows bringing a\r\n            <span class=\"fba-word\">real<\/span>\r\n            Pok\u00e9mon to first grade is probably not part of the normal school rules,\r\n            but Greninja promised to stay inside until they get\r\n            <span class=\"fba-word\">home<\/span>.\r\n          <\/p>\r\n\r\n          <p>\r\n            At least, that is the plan.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 2\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"2\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 2 IMAGE PLACEHOLDER\r\n          <small>Flynn hanging his backpack in the long gray school cubbies<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">School begins<\/p>\r\n\r\n          <h2>One Secret Backpack<\/h2>\r\n\r\n          <p>\r\n            Flynn hangs his backpack in one of the gray cubbies outside his classroom.\r\n            He checks the zipper, gives the bag one last look,\r\n            and walks inside before anyone can\r\n            <span class=\"fba-word\">ask<\/span>\r\n            why he is acting strange.\r\n          <\/p>\r\n\r\n          <p>\r\n            The Pok\u00e9 Ball is tucked safely inside.\r\n            Greninja is quiet.\r\n            Everything seems perfect.\r\n          <\/p>\r\n\r\n          <p>\r\n            A few minutes later, Flynn sits down for math with Ms. Kelly\r\n            and almost forgets the backpack is there.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 3\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"3\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 3 IMAGE PLACEHOLDER\r\n          <small>Flynn in Ms. Kelly's math class; Greninja peeking through the window<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Math with Ms. Kelly<\/p>\r\n\r\n          <h2>Something at the Window<\/h2>\r\n\r\n          <p>\r\n            Math begins normally.\r\n            Flynn gets out his pencil and starts working\r\n            <span class=\"fba-word\">with<\/span>\r\n            the rest of the class.\r\n            Ms. Kelly is talking about adding tens and ones\r\n            when Flynn notices something\r\n            <span class=\"fba-word\">move<\/span>\r\n            outside.\r\n          <\/p>\r\n\r\n          <p>\r\n            He looks <span class=\"fba-word\">over<\/span> his shoulder.\r\n          <\/p>\r\n\r\n          <p>\r\n            Two enormous eyes are staring through the window.\r\n            Then a blue hand rises slowly into view and gives Flynn a tiny wave.\r\n          <\/p>\r\n\r\n          <p>\r\n            Flynn knows exactly who it is.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 4 \u2014 MATH\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"4\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 4 IMAGE PLACEHOLDER\r\n          <small>Greninja outside the math-room window while everyone else works<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Uh-oh!<\/p>\r\n\r\n          <h2>Greninja Is Out!<\/h2>\r\n\r\n          <p>\r\n            \u201cGreninja?\u201d Flynn whispers.\r\n          <\/p>\r\n\r\n          <p>\r\n            Greninja is standing\r\n            <span class=\"fba-word\">beside<\/span>\r\n            the classroom window looking extremely pleased with himself.\r\n            Flynn has no idea how he escaped from the Pok\u00e9 Ball,\r\n            but he definitely cannot shout,\r\n            \u201cGet back in my backpack!\u201d\r\n            while Ms. Kelly is teaching.\r\n          <\/p>\r\n\r\n          <p>\r\n            Then Flynn sees the math problem on his paper.\r\n            Maybe the answer can become a secret\r\n            <span class=\"fba-word\">sign<\/span>\r\n            telling Greninja where to go.\r\n          <\/p>\r\n\r\n          <div class=\"fba-challenge\">\r\n\r\n            <p class=\"fba-question\">\r\n              Flynn needs the secret number.<br>\r\n              <strong>24 + 10 = ?<\/strong>\r\n            <\/p>\r\n\r\n            <div class=\"fba-choices\"\r\n                 data-answer=\"34\"\r\n                 data-success=\"Correct! Flynn quietly shows Greninja 34. Greninja nods and sneaks back toward the cubbies.\">\r\n\r\n              <button data-value=\"25\"\r\n                      data-wrong=\"25 isn't the secret number. Try another one.\">\r\n                25\r\n              <\/button>\r\n\r\n              <button data-value=\"34\">\r\n                34\r\n              <\/button>\r\n\r\n              <button data-value=\"44\"\r\n                      data-wrong=\"44 is too high. Try again.\">\r\n                44\r\n              <\/button>\r\n\r\n            <\/div>\r\n\r\n            <p class=\"fba-feedback\"><\/p>\r\n\r\n          <\/div>\r\n\r\n          <p>\r\n            Now Flynn just has to hope Greninja actually listens.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 5\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"5\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 5 IMAGE PLACEHOLDER\r\n          <small>Flynn at the cubbies getting Greninja back into the Pok\u00e9 Ball<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Between classes<\/p>\r\n\r\n          <h2>Back in the Pok\u00e9 Ball<\/h2>\r\n\r\n          <p>\r\n            As soon as math ends, Flynn hurries back to the cubbies.\r\n            Greninja is waiting near the backpack,\r\n            sitting calmly as if absolutely nothing unusual has happened.\r\n          <\/p>\r\n\r\n          <p>\r\n            \u201cYou cannot keep doing that,\u201d Flynn whispers.\r\n          <\/p>\r\n\r\n          <p>\r\n            Greninja gives him an innocent look.\r\n            Flynn would <span class=\"fba-word\">like<\/span>\r\n            to believe him, but he knows better.\r\n            He holds out the Pok\u00e9 Ball, Greninja returns inside,\r\n            and Flynn slips the ball into his pocket instead of the backpack.\r\n          <\/p>\r\n\r\n          <p>\r\n            This time, Flynn thinks, I can keep an eye on him.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 6\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"6\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 6 IMAGE PLACEHOLDER\r\n          <small>Flynn in Mrs. Harris's literacy class with the Pok\u00e9 Ball wiggling<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Literacy with Mrs. Harris<\/p>\r\n\r\n          <h2>Wiggle... Wiggle...<\/h2>\r\n\r\n          <p>\r\n            By the time literacy begins with Mrs. Harris,\r\n            Flynn has almost convinced himself the excitement is finished.\r\n            He opens his <span class=\"fba-word\">book<\/span>\r\n            and starts to <span class=\"fba-word\">read<\/span>\r\n            with the class.\r\n          <\/p>\r\n\r\n          <p>\r\n            Then something bumps against his leg.\r\n          <\/p>\r\n\r\n          <p>\r\n            <strong>Wiggle.<\/strong>\r\n          <\/p>\r\n\r\n          <p>\r\n            Flynn freezes.\r\n          <\/p>\r\n\r\n          <p>\r\n            A few seconds later:\r\n            <strong>wiggle, wiggle.<\/strong>\r\n          <\/p>\r\n\r\n          <p>\r\n            The Pok\u00e9 Ball in his pocket is moving.\r\n            Greninja is awake again.\r\n          <\/p>\r\n\r\n          <p>\r\n            Flynn keeps reading and hopes the sound of the story will calm him down.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 7 \u2014 LITERACY\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"7\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 7 IMAGE PLACEHOLDER\r\n          <small>Flynn reading while Greninja settles down inside the Pok\u00e9 Ball<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Literacy challenge<\/p>\r\n\r\n          <h2>A Sleepy Story<\/h2>\r\n\r\n          <p>\r\n            Flynn keeps reading.\r\n            The Pok\u00e9 Ball wiggles once more, then grows quieter.\r\n            Maybe Greninja really does\r\n            <span class=\"fba-word\">love<\/span>\r\n            stories.\r\n          <\/p>\r\n\r\n          <p>\r\n            Mrs. Harris puts a sentence on the board that needs fixing.\r\n            Flynn knows Greninja will probably fall asleep if the room stays calm\r\n            for just a little longer.\r\n          <\/p>\r\n\r\n          <div class=\"fba-challenge\">\r\n\r\n            <p class=\"fba-question\">\r\n              Which sentence is written correctly?\r\n            <\/p>\r\n\r\n            <div class=\"fba-choices fba-choices-stack\"\r\n                 data-answer=\"b\"\r\n                 data-success=\"That's it! The room stays quiet, and the Pok\u00e9 Ball finally stops moving. Greninja is asleep.\">\r\n\r\n              <button data-value=\"a\"\r\n                      data-wrong=\"Check the beginning of the sentence and the ending punctuation.\">\r\n                greninja is beside flynn\r\n              <\/button>\r\n\r\n              <button data-value=\"b\">\r\n                Greninja is beside Flynn.\r\n              <\/button>\r\n\r\n              <button data-value=\"c\"\r\n                      data-wrong=\"Not every word needs a capital letter. Try again.\">\r\n                Greninja Is Beside Flynn\r\n              <\/button>\r\n\r\n            <\/div>\r\n\r\n            <p class=\"fba-feedback\"><\/p>\r\n\r\n          <\/div>\r\n\r\n          <p>\r\n            For the rest of literacy, Greninja does not make another sound.\r\n            Flynn finally relaxes.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 8\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"8\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 8 IMAGE PLACEHOLDER\r\n          <small>Greninja bursting from the Pok\u00e9 Ball during recess<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Recess<\/p>\r\n\r\n          <h2>Pop!<\/h2>\r\n\r\n          <p>\r\n            When recess finally arrives,\r\n            Flynn takes the Pok\u00e9 Ball outside.\r\n            He figures Greninja might enjoy some fresh air\r\n            as long as he stays inside the ball.\r\n          <\/p>\r\n\r\n          <p>\r\n            That idea lasts about three seconds.\r\n          <\/p>\r\n\r\n          <p>\r\n            <strong>POP!<\/strong>\r\n          <\/p>\r\n\r\n          <p>\r\n            Greninja bursts out,\r\n            lands on the playground,\r\n            and starts <span class=\"fba-word\">running<\/span>.\r\n            Lucas, Katie, Zack, Manny, and Ali all see him.\r\n          <\/p>\r\n\r\n          <p>\r\n            \u201cIs that Greninja?!\u201d someone shouts.\r\n          <\/p>\r\n\r\n          <p>\r\n            Flynn takes off after him, and his friends follow.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 9 \u2014 PLAYGROUND SEARCH\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"9\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 9 IMAGE PLACEHOLDER\r\n          <small>Wide playground search scene with hiding places<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Playground search<\/p>\r\n\r\n          <h2>Where Did Greninja Go?<\/h2>\r\n\r\n          <p>\r\n            Greninja is fast.\r\n            One second he is racing across the playground,\r\n            and the next he is gone.\r\n          <\/p>\r\n\r\n          <p>\r\n            \u201cSpread out!\u201d Flynn says.\r\n          <\/p>\r\n\r\n          <p>\r\n            Lucas checks one direction.\r\n            Manny and Zack search another.\r\n            Katie and Ali help Flynn\r\n            <span class=\"fba-word\">find<\/span>\r\n            anything that might be a clue.\r\n          <\/p>\r\n\r\n          <p>\r\n            Then Flynn sees a tiny wet footprint\r\n            <span class=\"fba-word\">below<\/span>\r\n            the slide.\r\n          <\/p>\r\n\r\n          <div class=\"fba-challenge\">\r\n\r\n            <p class=\"fba-question\">\r\n              Where should Flynn look?\r\n            <\/p>\r\n\r\n            <div class=\"fba-choices\"\r\n                 data-answer=\"slide\"\r\n                 data-success=\"There he is! Something blue moves below the slide. Flynn spots Greninja just before he darts away again.\">\r\n\r\n              <button data-value=\"swings\"\r\n                      data-wrong=\"Nothing by the swings. Keep looking!\">\r\n                Swings\r\n              <\/button>\r\n\r\n              <button data-value=\"bench\"\r\n                      data-wrong=\"No Greninja, but there is another tiny wet footprint nearby.\">\r\n                Bench\r\n              <\/button>\r\n\r\n              <button data-value=\"slide\">\r\n                Slide\r\n              <\/button>\r\n\r\n            <\/div>\r\n\r\n            <p class=\"fba-feedback\"><\/p>\r\n\r\n          <\/div>\r\n\r\n          <p>\r\n            Flynn takes one step toward him\u2014\r\n            and the recess bell rings.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 10\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"10\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 10 IMAGE PLACEHOLDER\r\n          <small>Flynn in Mrs. Helen's Mandarin class looking outside<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Mandarin with Mrs. Helen<\/p>\r\n\r\n          <h2>Back to Class<\/h2>\r\n\r\n          <p>\r\n            \u201cNo, no, no,\u201d Flynn whispers as Greninja disappears behind the playground equipment.\r\n          <\/p>\r\n\r\n          <p>\r\n            The class has to go inside.\r\n            Flynn cannot stay behind,\r\n            so a few minutes later he is sitting in Mandarin with Mrs. Helen,\r\n            trying very hard to pay attention.\r\n          <\/p>\r\n\r\n          <p>\r\n            But his mind keeps drifting back outside.\r\n            What if Greninja wanders away from the playground?\r\n            What if a <span class=\"fba-word\">teacher<\/span> sees him?\r\n            What if Greninja decides school is more fun than going home?\r\n          <\/p>\r\n\r\n          <p>\r\n            Then Mrs. Helen begins the day's vocabulary,\r\n            and one word catches Flynn's attention.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 11 \u2014 MANDARIN\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"11\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 11 IMAGE PLACEHOLDER\r\n          <small>A blue butterfly outside the Mandarin classroom<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Mandarin clue<\/p>\r\n\r\n          <h2>The Butterfly Clue<\/h2>\r\n\r\n          <p>\r\n            Mrs. Helen says a word Flynn recognizes:\r\n            <strong>\u8774\u8776 \u2014 h\u00fa di\u00e9.<\/strong>\r\n          <\/p>\r\n\r\n          <p>\r\n            Butterfly.\r\n          <\/p>\r\n\r\n          <p>\r\n            Just then, a blue butterfly flutters past the classroom window.\r\n            Flynn watches it circle once,\r\n            then drift toward the playground.\r\n            For some reason, it reminds him exactly where he last saw Greninja.\r\n          <\/p>\r\n\r\n          <p>\r\n            Maybe it can <span class=\"fba-word\">guide<\/span>\r\n            him back to the right spot later.\r\n          <\/p>\r\n\r\n          <div class=\"fba-challenge\">\r\n\r\n            <p class=\"fba-question\">\r\n              Mrs. Helen says <strong>\u201ch\u00fa di\u00e9.\u201d<\/strong><br>\r\n              Which picture matches?\r\n            <\/p>\r\n\r\n            <div class=\"fba-choices fba-picture-choices\"\r\n                 data-answer=\"butterfly\"\r\n                 data-success=\"\u5bf9! Butterfly! Flynn remembers exactly where the butterfly was heading.\">\r\n\r\n              <button data-value=\"butterfly\">\r\n                <span class=\"fba-emoji\">\ud83e\udd8b<\/span>\r\n                Butterfly\r\n              <\/button>\r\n\r\n              <button data-value=\"flower\"\r\n                      data-wrong=\"That's a flower. Try another picture.\">\r\n                <span class=\"fba-emoji\">\ud83c\udf38<\/span>\r\n                Flower\r\n              <\/button>\r\n\r\n              <button data-value=\"honey\"\r\n                      data-wrong=\"Not this one. Listen again: h\u00fa di\u00e9.\">\r\n                <span class=\"fba-emoji\">\ud83c\udf6f<\/span>\r\n                Honey\r\n              <\/button>\r\n\r\n            <\/div>\r\n\r\n            <p class=\"fba-feedback\"><\/p>\r\n\r\n          <\/div>\r\n\r\n          <p>\r\n            Flynn cannot go outside yet,\r\n            but now he knows where he wants to look.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 12 \u2014 AFTER SCHOOL\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"12\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 12 IMAGE PLACEHOLDER\r\n          <small>After-school room looking toward playground; Greninja partly hidden<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">After school<\/p>\r\n\r\n          <h2>Someone Sees Him!<\/h2>\r\n\r\n          <p>\r\n            The rest of the school day passes without another Greninja sighting.\r\n            By the time Flynn reaches the after-school room,\r\n            he is beginning to wonder if Greninja has already left.\r\n          <\/p>\r\n\r\n          <p>\r\n            Then Katie suddenly points through the window.\r\n          <\/p>\r\n\r\n          <p>\r\n            \u201cThere!\u201d\r\n          <\/p>\r\n\r\n          <p>\r\n            Everyone turns.\r\n            Behind the playground equipment,\r\n            a familiar blue head appears for half a second.\r\n          <\/p>\r\n\r\n          <p>\r\n            Greninja is still here.\r\n            And from the look on his face,\r\n            he still thinks this is a game.\r\n          <\/p>\r\n\r\n          <div class=\"fba-challenge\">\r\n\r\n            <p class=\"fba-question\">\r\n              Where is Greninja hiding?\r\n            <\/p>\r\n\r\n            <div class=\"fba-choices\"\r\n                 data-answer=\"playground\"\r\n                 data-success=\"There! Greninja is peeking out near the playground.\">\r\n\r\n              <button data-value=\"door\"\r\n                      data-wrong=\"That's just the door. Keep looking.\">\r\n                By the door\r\n              <\/button>\r\n\r\n              <button data-value=\"window\"\r\n                      data-wrong=\"Nothing at the window. Try again.\">\r\n                At the window\r\n              <\/button>\r\n\r\n              <button data-value=\"playground\">\r\n                Playground\r\n              <\/button>\r\n\r\n            <\/div>\r\n\r\n            <p class=\"fba-feedback\"><\/p>\r\n\r\n          <\/div>\r\n\r\n          <p>\r\n            This time, the teachers see him too.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 13 \u2014 COOPERATION\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"13\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 13 IMAGE PLACEHOLDER\r\n          <small>Flynn, teachers, and friends calmly helping outside<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">Everyone helps<\/p>\r\n\r\n          <h2>Greninja Thinks It's a Game<\/h2>\r\n\r\n          <p>\r\n            Soon everyone is outside.\r\n            Greninja hops backward every time someone gets close,\r\n            clearly having the greatest afternoon of his life.\r\n          <\/p>\r\n\r\n          <p>\r\n            Flynn knows chasing him will only make things worse,\r\n            so the group makes a plan.\r\n          <\/p>\r\n\r\n          <p>\r\n            Lucas, Katie, Zack, Manny, and Ali spread out.\r\n            The teachers help\r\n            <span class=\"fba-word\">guide<\/span>\r\n            Greninja toward Flynn.\r\n            Flynn stays still and holds the Pok\u00e9 Ball where Greninja can see it.\r\n          <\/p>\r\n\r\n          <div class=\"fba-step-game\" data-step-game>\r\n\r\n            <p class=\"fba-question\">\r\n              Help everyone follow the plan.\r\n            <\/p>\r\n\r\n            <button class=\"fba-step-button\"\r\n                    data-step=\"1\">\r\n              1. Call Greninja\r\n            <\/button>\r\n\r\n            <button class=\"fba-step-button\"\r\n                    data-step=\"2\"\r\n                    disabled>\r\n              2. Hold out the Pok\u00e9 Ball\r\n            <\/button>\r\n\r\n            <button class=\"fba-step-button\"\r\n                    data-step=\"3\"\r\n                    disabled>\r\n              3. Everyone stays calm\r\n            <\/button>\r\n\r\n            <p class=\"fba-feedback\"><\/p>\r\n\r\n          <\/div>\r\n\r\n          <p>\r\n            At last, Greninja stops.\r\n            He looks at Flynn, then at the Pok\u00e9 Ball.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 14 \u2014 FINAL MATH\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"14\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 14 IMAGE PLACEHOLDER\r\n          <small>Flynn holding the glowing Pok\u00e9 Ball toward Greninja<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">One last problem<\/p>\r\n\r\n          <h2>The Pok\u00e9 Ball Won't Close!<\/h2>\r\n\r\n          <p>\r\n            Greninja finally walks toward Flynn.\r\n            Flynn raises the Pok\u00e9 Ball,\r\n            and a bright light pulls Greninja safely inside.\r\n          <\/p>\r\n\r\n          <p>\r\n            For one second, Flynn thinks it is finished.\r\n          <\/p>\r\n\r\n          <p>\r\n            Then the Pok\u00e9 Ball flashes.\r\n          <\/p>\r\n\r\n          <p>\r\n            It will not close.\r\n          <\/p>\r\n\r\n          <p>\r\n            \u201cSeriously?\u201d Flynn says.\r\n          <\/p>\r\n\r\n          <p>\r\n            One final problem appears.\r\n            Luckily, Flynn has been practicing making ten all week.\r\n          <\/p>\r\n\r\n          <div class=\"fba-challenge\">\r\n\r\n            <p class=\"fba-question\">\r\n              Greninja has <strong>6 water gems.<\/strong><br>\r\n              How many more does he need to make <strong>10<\/strong>?\r\n            <\/p>\r\n\r\n            <div class=\"fba-choices\"\r\n                 data-answer=\"4\"\r\n                 data-success=\"Correct! The Pok\u00e9 Ball glows brightly... CLICK! It closes at last.\">\r\n\r\n              <button data-value=\"3\"\r\n                      data-wrong=\"6 + 3 makes 9. He needs one more than that.\">\r\n                3\r\n              <\/button>\r\n\r\n              <button data-value=\"4\">\r\n                4\r\n              <\/button>\r\n\r\n              <button data-value=\"5\"\r\n                      data-wrong=\"6 + 5 is more than 10. Try again.\">\r\n                5\r\n              <\/button>\r\n\r\n            <\/div>\r\n\r\n            <p class=\"fba-feedback\"><\/p>\r\n\r\n          <\/div>\r\n\r\n          <p>\r\n            Flynn looks down at the quiet Pok\u00e9 Ball and smiles.\r\n            Finally.\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n\r\n      <!-- =====================================================\r\n           STORY PAGE 15 \u2014 END + GUESTBOOK\r\n           ===================================================== -->\r\n\r\n      <section class=\"fba-scene\"\r\n               data-scene=\"15\"\r\n               data-unlocked=\"true\">\r\n\r\n        <div class=\"fba-art\">\r\n          SCENE 15 IMAGE PLACEHOLDER\r\n          <small>Flynn celebrating with friends and teachers; Greninja safely inside the Pok\u00e9 Ball<\/small>\r\n        <\/div>\r\n\r\n        <div class=\"fba-story\">\r\n\r\n          <p class=\"fba-kicker\">The end<\/p>\r\n\r\n          <h2>Happy 7th Birthday, Flynn!<\/h2>\r\n\r\n          <p>\r\n            Greninja is safe at last.\r\n            Flynn looks around at Lucas, Katie, Zack, Manny, Ali,\r\n            and all the teachers who helped him.\r\n            Then he starts laughing.\r\n          <\/p>\r\n\r\n          <p>\r\n            This was definitely not how he expected an ordinary day at\r\n            <span class=\"fba-word\">school<\/span>\r\n            to go.\r\n          <\/p>\r\n\r\n          <p>\r\n            His seventh birthday is almost here,\r\n            and now Flynn has one incredible story to tell, \r\n            even if almost no one else is going to believe it.\r\n          <\/p>\r\n\r\n          <div class=\"fba-birthday-message\">\r\n            \ud83c\udf89 Happy 7th Birthday, Flynn! \ud83c\udf89\r\n          <\/div>\r\n\r\n          <div class=\"fba-final-buttons\">\r\n\r\n            <button id=\"fba-celebrate\"\r\n                    class=\"fba-primary\">\r\n              Celebrate Again!\r\n            <\/button>\r\n\r\n            <button class=\"fba-secondary\"\r\n                    data-restart>\r\n              Read Again\r\n            <\/button>\r\n\r\n          <\/div>\r\n\r\n\r\n          <!-- ===============================================\r\n               BIRTHDAY GUESTBOOK\r\n               =============================================== -->\r\n\r\n          <section class=\"fba-guestbook\">\r\n\r\n            <div class=\"fba-guestbook-heading\">\r\n\r\n              <p class=\"fba-kicker\">\r\n                Flynn's birthday guestbook\r\n              <\/p>\r\n\r\n              <h3>\r\n                Send Flynn a Birthday Message\r\n              <\/h3>\r\n\r\n              <p>\r\n                Want to leave Flynn a note for his seventh birthday?\r\n                You can add your first name, or leave the name box blank.\r\n              <\/p>\r\n\r\n            <\/div>\r\n\r\n\r\n            <form id=\"fba-message-form\"\r\n                  class=\"fba-message-form\">\r\n\r\n              <div class=\"fba-field\">\r\n\r\n                <label for=\"fba-name\">\r\n                  Your first name\r\n                  <span>(optional)<\/span>\r\n                <\/label>\r\n\r\n                <input id=\"fba-name\"\r\n                       name=\"name\"\r\n                       type=\"text\"\r\n                       maxlength=\"30\"\r\n                       autocomplete=\"given-name\"\r\n                       placeholder=\"You can leave this blank\">\r\n\r\n              <\/div>\r\n\r\n\r\n              <div class=\"fba-field\">\r\n\r\n                <label for=\"fba-message\">\r\n                  Your birthday message\r\n                <\/label>\r\n\r\n                <textarea id=\"fba-message\"\r\n                          name=\"message\"\r\n                          maxlength=\"400\"\r\n                          rows=\"5\"\r\n                          required\r\n                          placeholder=\"Happy birthday, Flynn!\"><\/textarea>\r\n\r\n                <div class=\"fba-character-count\">\r\n                  <span id=\"fba-character-number\">0<\/span> \/ 400\r\n                <\/div>\r\n\r\n              <\/div>\r\n\r\n\r\n              <!-- Bot trap. Real visitors never see this. -->\r\n\r\n              <div class=\"fba-honeypot\"\r\n                   aria-hidden=\"true\">\r\n\r\n                <label>\r\n                  Website\r\n                  <input type=\"text\"\r\n                         id=\"fba-website\"\r\n                         tabindex=\"-1\"\r\n                         autocomplete=\"off\">\r\n                <\/label>\r\n\r\n              <\/div>\r\n\r\n\r\n              <p class=\"fba-privacy-note\">\r\n                Please don't include your last name, phone number,\r\n                address, or other private information.\r\n              <\/p>\r\n\r\n\r\n              <button id=\"fba-send-message\"\r\n                      class=\"fba-primary\"\r\n                      type=\"submit\">\r\n                Send Flynn a Message\r\n              <\/button>\r\n\r\n\r\n              <p id=\"fba-form-status\"\r\n                 class=\"fba-form-status\"\r\n                 role=\"status\"\r\n                 aria-live=\"polite\"><\/p>\r\n\r\n            <\/form>\r\n\r\n\r\n            <div class=\"fba-moderation-note\">\r\n              Messages appear here after they're reviewed.\r\n            <\/div>\r\n\r\n\r\n            <div class=\"fba-public-messages\">\r\n\r\n              <h3>\r\n                Birthday Messages for Flynn\r\n              <\/h3>\r\n\r\n              <div id=\"fba-message-list\"\r\n                   class=\"fba-message-list\">\r\n\r\n                <p class=\"fba-message-loading\">\r\n                  Loading birthday messages...\r\n                <\/p>\r\n\r\n              <\/div>\r\n\r\n            <\/div>\r\n\r\n          <\/section>\r\n\r\n        <\/div>\r\n\r\n      <\/section>\r\n\r\n    <\/main>\r\n\r\n\r\n    <!-- =====================================================\r\n         STORY NAVIGATION\r\n         Hidden on cover\r\n         ===================================================== -->\r\n\r\n    <footer id=\"fba-nav\"\r\n            class=\"fba-nav is-hidden\">\r\n\r\n      <button id=\"fba-back\"\r\n              class=\"fba-nav-button\"\r\n              disabled>\r\n        \u2190 Back\r\n      <\/button>\r\n\r\n      <div id=\"fba-counter\"\r\n           class=\"fba-counter\">\r\n        1 of 15\r\n      <\/div>\r\n\r\n      <button id=\"fba-next\"\r\n              class=\"fba-nav-button\">\r\n        Next \u2192\r\n      <\/button>\r\n\r\n    <\/footer>\r\n\r\n\r\n    <div id=\"fba-confetti\"\r\n         aria-hidden=\"true\"><\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<style>\r\n\r\n  \/* =========================================================\r\n     BASE\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure,\r\n  #flynn-adventure * {\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  #flynn-adventure {\r\n\r\n    --navy:#1d2942;\r\n    --blue:#2e68d8;\r\n    --cyan:#69c5df;\r\n    --yellow:#ffd85c;\r\n\r\n    --paper:#fffdf6;\r\n    --ink:#2b2926;\r\n    --muted:#706d65;\r\n    --line:#ddd2b9;\r\n\r\n    width:100%;\r\n    min-height:100vh;\r\n\r\n    padding:clamp(12px,2vw,28px);\r\n\r\n    color:var(--ink);\r\n\r\n    background:\r\n      linear-gradient(\r\n        180deg,\r\n        #edf8ff 0%,\r\n        #fff9e8 100%\r\n      );\r\n\r\n    font-family:\r\n      system-ui,\r\n      -apple-system,\r\n      \"Segoe UI\",\r\n      sans-serif;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     SHELL\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-shell {\r\n\r\n    position:relative;\r\n\r\n    max-width:790px;\r\n    min-height:720px;\r\n\r\n    margin:auto;\r\n\r\n    overflow:hidden;\r\n\r\n    background:var(--paper);\r\n\r\n    border:1px solid #e5dbc5;\r\n    border-radius:22px;\r\n\r\n    box-shadow:\r\n      0 15px 40px rgba(30,40,60,.13);\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     MAIN\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure main {\r\n\r\n    padding:\r\n      clamp(18px,4vw,38px)\r\n      clamp(18px,5vw,48px)\r\n      24px;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     SCENES\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-scene {\r\n\r\n    display:none;\r\n\r\n    animation:\r\n      fba-page-in .28s ease;\r\n  }\r\n\r\n  #flynn-adventure .fba-scene.is-active {\r\n\r\n    display:block;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     COVER\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-cover {\r\n\r\n    text-align:center;\r\n  }\r\n\r\n  #flynn-adventure .fba-cover-copy {\r\n\r\n    max-width:650px;\r\n\r\n    margin:auto;\r\n\r\n    padding:\r\n      8px 0 25px;\r\n  }\r\n\r\n  #flynn-adventure .fba-cover h1 {\r\n\r\n    margin:\r\n      8px auto 16px;\r\n\r\n    color:var(--navy);\r\n\r\n    font-family:\r\n      Georgia,\r\n      \"Times New Roman\",\r\n      serif;\r\n\r\n    font-size:\r\n      clamp(2.4rem,7vw,4.3rem);\r\n\r\n    line-height:1.04;\r\n\r\n    text-align:center;\r\n  }\r\n\r\n  #flynn-adventure .fba-cover-eyebrow {\r\n\r\n    margin:\r\n      0 0 10px;\r\n\r\n    color:var(--blue);\r\n\r\n    font-size:.82rem;\r\n\r\n    font-weight:900;\r\n\r\n    letter-spacing:.13em;\r\n\r\n    text-transform:uppercase;\r\n  }\r\n\r\n  #flynn-adventure .fba-cover-byline {\r\n\r\n    margin:\r\n      0 auto 25px;\r\n\r\n    color:var(--muted);\r\n\r\n    font-family:\r\n      Georgia,\r\n      \"Times New Roman\",\r\n      serif;\r\n\r\n    font-size:1.08rem;\r\n  }\r\n\r\n  #flynn-adventure .fba-open-book {\r\n\r\n    min-width:190px;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     IMAGE PLACEHOLDERS\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-art {\r\n\r\n    display:grid;\r\n    place-content:center;\r\n\r\n    width:100%;\r\n    min-height:250px;\r\n\r\n    margin:\r\n      0 0 28px;\r\n\r\n    padding:24px;\r\n\r\n    border:\r\n      2px dashed #aeb9c8;\r\n\r\n    border-radius:16px;\r\n\r\n    color:#5d6a7d;\r\n\r\n    background:\r\n      repeating-linear-gradient(\r\n        135deg,\r\n        #f2f6f9,\r\n        #f2f6f9 14px,\r\n        #e9eef4 14px,\r\n        #e9eef4 28px\r\n      );\r\n\r\n    text-align:center;\r\n\r\n    font-size:.9rem;\r\n    font-weight:800;\r\n\r\n    letter-spacing:.03em;\r\n  }\r\n\r\n  #flynn-adventure .fba-cover .fba-art {\r\n\r\n    min-height:355px;\r\n  }\r\n\r\n  #flynn-adventure .fba-art small {\r\n\r\n    display:block;\r\n\r\n    max-width:520px;\r\n\r\n    margin:\r\n      8px auto 0;\r\n\r\n    font-weight:500;\r\n\r\n    letter-spacing:0;\r\n\r\n    line-height:1.45;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     STORY TEXT\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-story {\r\n\r\n    max-width:650px;\r\n\r\n    margin:auto;\r\n  }\r\n\r\n  #flynn-adventure .fba-story h2,\r\n  #flynn-adventure .fba-story h3 {\r\n\r\n    color:var(--navy);\r\n\r\n    font-family:\r\n      Georgia,\r\n      \"Times New Roman\",\r\n      serif;\r\n\r\n    line-height:1.12;\r\n\r\n    text-align:left;\r\n  }\r\n\r\n  #flynn-adventure .fba-story h2 {\r\n\r\n    margin:\r\n      5px 0 17px;\r\n\r\n    font-size:\r\n      clamp(1.7rem,5vw,2.6rem);\r\n  }\r\n\r\n  #flynn-adventure .fba-story h3 {\r\n\r\n    margin:\r\n      6px 0 15px;\r\n\r\n    font-size:\r\n      clamp(1.35rem,4vw,1.85rem);\r\n  }\r\n\r\n  #flynn-adventure .fba-story p {\r\n\r\n    margin:\r\n      0 0 18px;\r\n\r\n    color:var(--ink);\r\n\r\n    font-family:\r\n      Georgia,\r\n      \"Times New Roman\",\r\n      serif;\r\n\r\n    font-size:\r\n      clamp(1.08rem,2.5vw,1.24rem);\r\n\r\n    line-height:1.67;\r\n\r\n    text-align:left;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     SECTION LABEL\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-kicker {\r\n\r\n    margin-bottom:6px !important;\r\n\r\n    color:var(--blue) !important;\r\n\r\n    font-family:\r\n      system-ui,\r\n      -apple-system,\r\n      \"Segoe UI\",\r\n      sans-serif !important;\r\n\r\n    font-size:.77rem !important;\r\n\r\n    font-weight:900 !important;\r\n\r\n    letter-spacing:.12em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    text-align:left !important;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     FAMILIAR SCHOOL WORDS\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-word {\r\n\r\n    padding:\r\n      0 .07em;\r\n\r\n    background:\r\n      linear-gradient(\r\n        transparent 63%,\r\n        rgba(255,216,92,.38) 63%\r\n      );\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     QUESTIONS\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-question {\r\n\r\n    margin-top:26px !important;\r\n\r\n    color:var(--navy) !important;\r\n\r\n    font-family:\r\n      system-ui,\r\n      -apple-system,\r\n      \"Segoe UI\",\r\n      sans-serif !important;\r\n\r\n    font-size:\r\n      clamp(1.06rem,2.6vw,1.22rem) !important;\r\n\r\n    font-weight:850 !important;\r\n\r\n    line-height:1.5 !important;\r\n\r\n    text-align:center !important;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     BUTTONS\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure button {\r\n\r\n    min-height:52px;\r\n\r\n    padding:\r\n      13px 18px;\r\n\r\n    border:\r\n      2px solid var(--navy);\r\n\r\n    border-radius:12px;\r\n\r\n    font:inherit;\r\n    font-weight:850;\r\n\r\n    cursor:pointer;\r\n\r\n    transition:\r\n      transform .15s ease,\r\n      box-shadow .15s ease,\r\n      background .15s ease;\r\n  }\r\n\r\n  #flynn-adventure button:hover {\r\n\r\n    transform:\r\n      translateY(-1px);\r\n\r\n    box-shadow:\r\n      0 4px 0 rgba(21,35,60,.14);\r\n  }\r\n\r\n  #flynn-adventure button:disabled {\r\n\r\n    opacity:.35;\r\n\r\n    cursor:not-allowed;\r\n\r\n    transform:none;\r\n\r\n    box-shadow:none;\r\n  }\r\n\r\n  #flynn-adventure .fba-primary {\r\n\r\n    color:white !important;\r\n\r\n    -webkit-text-fill-color:white;\r\n\r\n    background:var(--blue);\r\n  }\r\n\r\n  #flynn-adventure .fba-secondary {\r\n\r\n    color:var(--navy) !important;\r\n\r\n    -webkit-text-fill-color:\r\n      var(--navy);\r\n\r\n    background:white;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     ANSWERS\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-choices {\r\n\r\n    display:grid;\r\n\r\n    grid-template-columns:\r\n      repeat(3,minmax(0,1fr));\r\n\r\n    gap:12px;\r\n\r\n    max-width:650px;\r\n\r\n    margin:\r\n      20px auto 12px;\r\n  }\r\n\r\n  #flynn-adventure .fba-choices-stack {\r\n\r\n    grid-template-columns:1fr;\r\n  }\r\n\r\n  #flynn-adventure .fba-choices button {\r\n\r\n    color:var(--navy) !important;\r\n\r\n    -webkit-text-fill-color:\r\n      var(--navy);\r\n\r\n    background:white;\r\n  }\r\n\r\n  #flynn-adventure .fba-picture-choices button {\r\n\r\n    display:grid;\r\n\r\n    place-items:center;\r\n\r\n    gap:6px;\r\n  }\r\n\r\n  #flynn-adventure .fba-emoji {\r\n\r\n    display:block;\r\n\r\n    font-size:2rem;\r\n  }\r\n\r\n  #flynn-adventure .fba-choices button.is-correct {\r\n\r\n    color:#173e26 !important;\r\n\r\n    -webkit-text-fill-color:#173e26;\r\n\r\n    border-color:#4b9a65;\r\n\r\n    background:#d7f1df;\r\n  }\r\n\r\n  #flynn-adventure .fba-choices button.is-wrong {\r\n\r\n    color:#7a292d !important;\r\n\r\n    -webkit-text-fill-color:#7a292d;\r\n\r\n    border-color:#d96268;\r\n\r\n    background:#ffe5e6;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     STEP GAME\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-step-game {\r\n\r\n    display:grid;\r\n\r\n    gap:10px;\r\n\r\n    max-width:620px;\r\n\r\n    margin:\r\n      24px auto 0;\r\n  }\r\n\r\n  #flynn-adventure .fba-step-button {\r\n\r\n    color:var(--navy) !important;\r\n\r\n    -webkit-text-fill-color:\r\n      var(--navy);\r\n\r\n    background:white;\r\n  }\r\n\r\n  #flynn-adventure .fba-step-button.is-done {\r\n\r\n    color:#173e26 !important;\r\n\r\n    -webkit-text-fill-color:#173e26;\r\n\r\n    border-color:#4b9a65;\r\n\r\n    background:#d7f1df;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     FEEDBACK\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-feedback {\r\n\r\n    min-height:34px;\r\n\r\n    margin-top:14px !important;\r\n\r\n    color:var(--navy) !important;\r\n\r\n    font-family:\r\n      system-ui,\r\n      -apple-system,\r\n      \"Segoe UI\",\r\n      sans-serif !important;\r\n\r\n    font-size:1rem !important;\r\n\r\n    font-weight:850 !important;\r\n\r\n    line-height:1.45 !important;\r\n\r\n    text-align:center !important;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     ENDING\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-birthday-message {\r\n\r\n    max-width:560px;\r\n\r\n    margin:\r\n      24px auto;\r\n\r\n    padding:\r\n      18px;\r\n\r\n    border-radius:14px;\r\n\r\n    color:var(--navy);\r\n\r\n    background:\r\n      linear-gradient(\r\n        135deg,\r\n        #fff0a7,\r\n        #dff6ff\r\n      );\r\n\r\n    font-size:\r\n      clamp(1.3rem,4vw,1.8rem);\r\n\r\n    font-weight:900;\r\n\r\n    text-align:center;\r\n  }\r\n\r\n  #flynn-adventure .fba-final-buttons {\r\n\r\n    display:flex;\r\n\r\n    justify-content:center;\r\n\r\n    flex-wrap:wrap;\r\n\r\n    gap:10px;\r\n\r\n    margin-bottom:42px;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     GUESTBOOK\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-guestbook {\r\n\r\n    margin-top:42px;\r\n\r\n    padding-top:34px;\r\n\r\n    border-top:\r\n      2px solid var(--line);\r\n  }\r\n\r\n  #flynn-adventure .fba-guestbook-heading {\r\n\r\n    margin-bottom:24px;\r\n  }\r\n\r\n  #flynn-adventure .fba-message-form {\r\n\r\n    padding:22px;\r\n\r\n    border:\r\n      1px solid #dfd5bf;\r\n\r\n    border-radius:16px;\r\n\r\n    background:#fffaf0;\r\n  }\r\n\r\n  #flynn-adventure .fba-field {\r\n\r\n    margin-bottom:19px;\r\n  }\r\n\r\n  #flynn-adventure .fba-field label {\r\n\r\n    display:block;\r\n\r\n    margin-bottom:7px;\r\n\r\n    color:var(--navy);\r\n\r\n    font-weight:850;\r\n  }\r\n\r\n  #flynn-adventure .fba-field label span {\r\n\r\n    color:var(--muted);\r\n\r\n    font-size:.9em;\r\n\r\n    font-weight:600;\r\n  }\r\n\r\n  #flynn-adventure .fba-field input,\r\n  #flynn-adventure .fba-field textarea {\r\n\r\n    width:100%;\r\n\r\n    padding:\r\n      13px 14px;\r\n\r\n    border:\r\n      2px solid #cfc5af;\r\n\r\n    border-radius:10px;\r\n\r\n    color:var(--ink);\r\n\r\n    background:white;\r\n\r\n    font:inherit;\r\n\r\n    font-size:1rem;\r\n  }\r\n\r\n  #flynn-adventure .fba-field textarea {\r\n\r\n    resize:vertical;\r\n\r\n    min-height:120px;\r\n  }\r\n\r\n  #flynn-adventure .fba-field input:focus,\r\n  #flynn-adventure .fba-field textarea:focus {\r\n\r\n    outline:\r\n      3px solid rgba(46,104,216,.2);\r\n\r\n    border-color:var(--blue);\r\n  }\r\n\r\n  #flynn-adventure .fba-character-count {\r\n\r\n    margin-top:5px;\r\n\r\n    color:var(--muted);\r\n\r\n    font-size:.82rem;\r\n\r\n    text-align:right;\r\n  }\r\n\r\n  #flynn-adventure .fba-privacy-note {\r\n\r\n    margin:\r\n      0 0 17px !important;\r\n\r\n    color:var(--muted) !important;\r\n\r\n    font-family:\r\n      system-ui,\r\n      -apple-system,\r\n      \"Segoe UI\",\r\n      sans-serif !important;\r\n\r\n    font-size:.88rem !important;\r\n\r\n    line-height:1.45 !important;\r\n  }\r\n\r\n  #flynn-adventure .fba-form-status {\r\n\r\n    margin:\r\n      16px 0 0 !important;\r\n\r\n    font-family:\r\n      system-ui,\r\n      -apple-system,\r\n      \"Segoe UI\",\r\n      sans-serif !important;\r\n\r\n    font-size:.95rem !important;\r\n\r\n    font-weight:800 !important;\r\n  }\r\n\r\n  #flynn-adventure .fba-form-status.is-success {\r\n\r\n    color:#23613b !important;\r\n  }\r\n\r\n  #flynn-adventure .fba-form-status.is-error {\r\n\r\n    color:#9a3036 !important;\r\n  }\r\n\r\n  #flynn-adventure .fba-moderation-note {\r\n\r\n    margin:\r\n      13px 0 34px;\r\n\r\n    color:var(--muted);\r\n\r\n    font-size:.88rem;\r\n\r\n    text-align:center;\r\n  }\r\n\r\n  #flynn-adventure .fba-public-messages {\r\n\r\n    margin-top:28px;\r\n  }\r\n\r\n  #flynn-adventure .fba-message-list {\r\n\r\n    display:grid;\r\n\r\n    gap:13px;\r\n  }\r\n\r\n  #flynn-adventure .fba-guest-message {\r\n\r\n    padding:\r\n      16px 18px;\r\n\r\n    border:\r\n      1px solid #e0d6c2;\r\n\r\n    border-radius:13px;\r\n\r\n    background:white;\r\n  }\r\n\r\n  #flynn-adventure .fba-guest-name {\r\n\r\n    margin-bottom:6px;\r\n\r\n    color:var(--blue);\r\n\r\n    font-size:.9rem;\r\n\r\n    font-weight:900;\r\n  }\r\n\r\n  #flynn-adventure .fba-guest-text {\r\n\r\n    color:var(--ink);\r\n\r\n    font-family:\r\n      Georgia,\r\n      \"Times New Roman\",\r\n      serif;\r\n\r\n    font-size:1.05rem;\r\n\r\n    line-height:1.55;\r\n\r\n    white-space:pre-wrap;\r\n  }\r\n\r\n  #flynn-adventure .fba-message-loading,\r\n  #flynn-adventure .fba-empty-messages {\r\n\r\n    color:var(--muted) !important;\r\n\r\n    font-style:italic;\r\n  }\r\n\r\n  #flynn-adventure .fba-honeypot {\r\n\r\n    position:absolute !important;\r\n\r\n    left:-99999px !important;\r\n\r\n    width:1px !important;\r\n\r\n    height:1px !important;\r\n\r\n    overflow:hidden !important;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     STORY NAV\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure .fba-nav {\r\n\r\n    display:grid;\r\n\r\n    grid-template-columns:\r\n      1fr auto 1fr;\r\n\r\n    align-items:center;\r\n\r\n    gap:12px;\r\n\r\n    padding:\r\n      14px\r\n      clamp(16px,4vw,34px)\r\n      18px;\r\n\r\n    border-top:\r\n      1px solid var(--line);\r\n\r\n    background:\r\n      rgba(255,253,246,.97);\r\n  }\r\n\r\n  #flynn-adventure .fba-nav.is-hidden {\r\n\r\n    display:none;\r\n  }\r\n\r\n  #flynn-adventure .fba-nav-button {\r\n\r\n    min-height:44px;\r\n\r\n    padding:\r\n      9px 12px;\r\n\r\n    border:none;\r\n\r\n    background:transparent;\r\n\r\n    color:var(--blue) !important;\r\n\r\n    -webkit-text-fill-color:\r\n      var(--blue);\r\n\r\n    font-weight:850;\r\n  }\r\n\r\n  #flynn-adventure .fba-nav-button:first-child {\r\n\r\n    justify-self:start;\r\n  }\r\n\r\n  #flynn-adventure .fba-nav-button:last-child {\r\n\r\n    justify-self:end;\r\n  }\r\n\r\n  #flynn-adventure .fba-counter {\r\n\r\n    min-width:84px;\r\n\r\n    color:var(--muted);\r\n\r\n    font-family:\r\n      Georgia,\r\n      \"Times New Roman\",\r\n      serif;\r\n\r\n    font-size:.97rem;\r\n\r\n    font-weight:700;\r\n\r\n    text-align:center;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     CONFETTI\r\n     ========================================================= *\/\r\n\r\n  #flynn-adventure #fba-confetti {\r\n\r\n    position:absolute;\r\n\r\n    inset:0;\r\n\r\n    pointer-events:none;\r\n\r\n    overflow:hidden;\r\n  }\r\n\r\n  #flynn-adventure .fba-confetti-piece {\r\n\r\n    position:absolute;\r\n\r\n    top:-20px;\r\n\r\n    width:10px;\r\n    height:18px;\r\n\r\n    animation:\r\n      fba-fall 2.8s linear forwards;\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     ANIMATION\r\n     ========================================================= *\/\r\n\r\n  @keyframes fba-page-in {\r\n\r\n    from {\r\n\r\n      opacity:0;\r\n\r\n      transform:\r\n        translateX(10px);\r\n    }\r\n\r\n    to {\r\n\r\n      opacity:1;\r\n\r\n      transform:none;\r\n    }\r\n  }\r\n\r\n  @keyframes fba-fall {\r\n\r\n    to {\r\n\r\n      transform:\r\n        translateY(1000px)\r\n        rotate(680deg);\r\n\r\n      opacity:.9;\r\n    }\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     MOBILE\r\n     ========================================================= *\/\r\n\r\n  @media (max-width:600px) {\r\n\r\n    #flynn-adventure {\r\n\r\n      padding:0;\r\n    }\r\n\r\n    #flynn-adventure .fba-shell {\r\n\r\n      min-height:100vh;\r\n\r\n      border-width:0;\r\n\r\n      border-radius:0;\r\n\r\n      box-shadow:none;\r\n    }\r\n\r\n    #flynn-adventure main {\r\n\r\n      padding:\r\n        15px 17px 10px;\r\n    }\r\n\r\n    #flynn-adventure .fba-art {\r\n\r\n      min-height:165px;\r\n\r\n      margin-bottom:22px;\r\n\r\n      padding:18px;\r\n    }\r\n\r\n    #flynn-adventure .fba-cover .fba-art {\r\n\r\n      min-height:300px;\r\n    }\r\n\r\n    #flynn-adventure .fba-cover h1 {\r\n\r\n      font-size:\r\n        clamp(2.25rem,11vw,3rem);\r\n    }\r\n\r\n    #flynn-adventure .fba-story h2 {\r\n\r\n      font-size:\r\n        clamp(1.7rem,8vw,2.2rem);\r\n    }\r\n\r\n    #flynn-adventure .fba-story p {\r\n\r\n      font-size:1.08rem;\r\n\r\n      line-height:1.64;\r\n    }\r\n\r\n    #flynn-adventure .fba-choices {\r\n\r\n      grid-template-columns:1fr;\r\n    }\r\n\r\n    #flynn-adventure .fba-message-form {\r\n\r\n      padding:17px;\r\n    }\r\n\r\n    #flynn-adventure .fba-nav {\r\n\r\n      position:sticky;\r\n\r\n      bottom:0;\r\n\r\n      z-index:10;\r\n\r\n      padding:\r\n        10px 12px 12px;\r\n\r\n      backdrop-filter:\r\n        blur(7px);\r\n\r\n      -webkit-backdrop-filter:\r\n        blur(7px);\r\n    }\r\n\r\n    #flynn-adventure .fba-nav-button {\r\n\r\n      font-size:.96rem;\r\n    }\r\n\r\n  }\r\n\r\n<\/style>\r\n\r\n\r\n<script>\r\n\r\n(function(){\r\n\r\n  const app =\r\n    document.getElementById(\r\n      'flynn-adventure'\r\n    );\r\n\r\n  if(\r\n    !app ||\r\n    app.dataset.ready === 'true'\r\n  ){\r\n    return;\r\n  }\r\n\r\n  app.dataset.ready =\r\n    'true';\r\n\r\n\r\n  const scenes =\r\n    [\r\n      ...app.querySelectorAll(\r\n        '.fba-scene'\r\n      )\r\n    ];\r\n\r\n\r\n  const nav =\r\n    app.querySelector(\r\n      '#fba-nav'\r\n    );\r\n\r\n\r\n  const counter =\r\n    app.querySelector(\r\n      '#fba-counter'\r\n    );\r\n\r\n\r\n  const back =\r\n    app.querySelector(\r\n      '#fba-back'\r\n    );\r\n\r\n\r\n  const next =\r\n    app.querySelector(\r\n      '#fba-next'\r\n    );\r\n\r\n\r\n  let current = 0;\r\n\r\n\r\n  \/* =========================================================\r\n     HELPERS\r\n     ========================================================= *\/\r\n\r\n  function currentScene(){\r\n\r\n    return scenes[current];\r\n\r\n  }\r\n\r\n\r\n  function isCover(){\r\n\r\n    return (\r\n      currentScene().dataset.scene ===\r\n      'cover'\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function isUnlocked(scene){\r\n\r\n    return (\r\n      scene.dataset.unlocked ===\r\n      'true'\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function unlockScene(scene){\r\n\r\n    scene.dataset.unlocked =\r\n      'true';\r\n\r\n    updateNav();\r\n\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     NAVIGATION\r\n     ========================================================= *\/\r\n\r\n  function updateNav(){\r\n\r\n    if(isCover()){\r\n\r\n      nav.classList.add(\r\n        'is-hidden'\r\n      );\r\n\r\n      return;\r\n    }\r\n\r\n\r\n    nav.classList.remove(\r\n      'is-hidden'\r\n    );\r\n\r\n\r\n    \/*\r\n       Scene array:\r\n       0 = cover\r\n       1 = story page 1\r\n       ...\r\n       15 = story page 15\r\n\r\n       So current is also the displayed\r\n       story page number.\r\n    *\/\r\n\r\n    counter.textContent =\r\n      current +\r\n      ' of 15';\r\n\r\n\r\n    back.disabled =\r\n      current === 1;\r\n\r\n\r\n    if(\r\n      current === 15\r\n    ){\r\n\r\n      next.disabled =\r\n        true;\r\n\r\n      next.textContent =\r\n        'The End';\r\n\r\n    }\r\n\r\n    else {\r\n\r\n      next.textContent =\r\n        'Next \u2192';\r\n\r\n      next.disabled =\r\n        !isUnlocked(\r\n          currentScene()\r\n        );\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  function show(index){\r\n\r\n    current =\r\n      Math.max(\r\n        0,\r\n        Math.min(\r\n          index,\r\n          scenes.length - 1\r\n        )\r\n      );\r\n\r\n\r\n    scenes.forEach(\r\n      (scene,i) => {\r\n\r\n        scene.classList.toggle(\r\n          'is-active',\r\n          i === current\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    updateNav();\r\n\r\n\r\n    const top =\r\n      app.getBoundingClientRect().top +\r\n      window.pageYOffset;\r\n\r\n\r\n    window.scrollTo({\r\n\r\n      top:top,\r\n\r\n      behavior:'smooth'\r\n\r\n    });\r\n\r\n\r\n    if(\r\n      current === 15\r\n    ){\r\n\r\n      celebrate();\r\n\r\n      loadGuestbook();\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* OPEN BOOK *\/\r\n\r\n  app.addEventListener(\r\n    'click',\r\n    function(event){\r\n\r\n      const open =\r\n        event.target.closest(\r\n          '[data-open-book]'\r\n        );\r\n\r\n      if(open){\r\n\r\n        show(1);\r\n\r\n      }\r\n\r\n    }\r\n  );\r\n\r\n\r\n  back.addEventListener(\r\n    'click',\r\n    () => {\r\n\r\n      show(\r\n        current - 1\r\n      );\r\n\r\n    }\r\n  );\r\n\r\n\r\n  next.addEventListener(\r\n    'click',\r\n    () => {\r\n\r\n      if(\r\n        !next.disabled\r\n      ){\r\n\r\n        show(\r\n          current + 1\r\n        );\r\n\r\n      }\r\n\r\n    }\r\n  );\r\n\r\n\r\n  \/* =========================================================\r\n     CONFETTI\r\n     ========================================================= *\/\r\n\r\n  function celebrate(){\r\n\r\n    const layer =\r\n      app.querySelector(\r\n        '#fba-confetti'\r\n      );\r\n\r\n\r\n    layer.innerHTML =\r\n      '';\r\n\r\n\r\n    const colors = [\r\n\r\n      '#2463eb',\r\n      '#4cc9f0',\r\n      '#ffd54a',\r\n      '#ef476f',\r\n      '#52b788'\r\n\r\n    ];\r\n\r\n\r\n    for(\r\n      let i = 0;\r\n      i < 70;\r\n      i++\r\n    ){\r\n\r\n      const piece =\r\n        document.createElement(\r\n          'i'\r\n        );\r\n\r\n\r\n      piece.className =\r\n        'fba-confetti-piece';\r\n\r\n\r\n      piece.style.left =\r\n        (\r\n          Math.random() *\r\n          100\r\n        ) + '%';\r\n\r\n\r\n      piece.style.background =\r\n        colors[\r\n          i %\r\n          colors.length\r\n        ];\r\n\r\n\r\n      piece.style.animationDelay =\r\n        (\r\n          Math.random() *\r\n          .9\r\n        ) + 's';\r\n\r\n\r\n      piece.style.transform =\r\n        'rotate(' +\r\n        (\r\n          Math.random() *\r\n          360\r\n        ) +\r\n        'deg)';\r\n\r\n\r\n      layer.appendChild(\r\n        piece\r\n      );\r\n\r\n    }\r\n\r\n\r\n    setTimeout(\r\n      () => {\r\n\r\n        layer.innerHTML =\r\n          '';\r\n\r\n      },\r\n      4000\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     QUIZZES + STORY INTERACTIONS\r\n     ========================================================= *\/\r\n\r\n  app.addEventListener(\r\n    'click',\r\n    function(event){\r\n\r\n\r\n      \/* READ AGAIN *\/\r\n\r\n      const restart =\r\n        event.target.closest(\r\n          '[data-restart]'\r\n        );\r\n\r\n\r\n      if(restart){\r\n\r\n        location.reload();\r\n\r\n        return;\r\n      }\r\n\r\n\r\n      \/* CONFETTI *\/\r\n\r\n      const celebrateButton =\r\n        event.target.closest(\r\n          '#fba-celebrate'\r\n        );\r\n\r\n\r\n      if(celebrateButton){\r\n\r\n        celebrate();\r\n\r\n        return;\r\n      }\r\n\r\n\r\n      \/* MULTIPLE CHOICE *\/\r\n\r\n      const choice =\r\n        event.target.closest(\r\n          '.fba-choices button'\r\n        );\r\n\r\n\r\n      if(choice){\r\n\r\n        const group =\r\n          choice.closest(\r\n            '.fba-choices'\r\n          );\r\n\r\n\r\n        const scene =\r\n          choice.closest(\r\n            '.fba-scene'\r\n          );\r\n\r\n\r\n        const feedback =\r\n          group.parentElement.querySelector(\r\n            '.fba-feedback'\r\n          );\r\n\r\n\r\n        const correct =\r\n          choice.dataset.value ===\r\n          group.dataset.answer;\r\n\r\n\r\n        \/*\r\n         Wrong highlighting moves with each\r\n         wrong selection.\r\n\r\n         Correct answer remains green forever\r\n         once discovered.\r\n\r\n         Nothing is disabled.\r\n        *\/\r\n\r\n        group\r\n          .querySelectorAll(\r\n            'button'\r\n          )\r\n          .forEach(\r\n            btn => {\r\n\r\n              btn.classList.remove(\r\n                'is-wrong'\r\n              );\r\n\r\n            }\r\n          );\r\n\r\n\r\n        if(correct){\r\n\r\n          choice.classList.add(\r\n            'is-correct'\r\n          );\r\n\r\n\r\n          group.dataset.completed =\r\n            'true';\r\n\r\n\r\n          feedback.textContent =\r\n            group.dataset.success ||\r\n            'Correct!';\r\n\r\n\r\n          unlockScene(\r\n            scene\r\n          );\r\n\r\n        }\r\n\r\n        else {\r\n\r\n          choice.classList.add(\r\n            'is-wrong'\r\n          );\r\n\r\n\r\n          if(\r\n            group.dataset.completed ===\r\n            'true'\r\n          ){\r\n\r\n            feedback.textContent =\r\n              choice.dataset.wrong ||\r\n              'That one is not correct. Your correct answer is still marked in green.';\r\n\r\n          }\r\n\r\n          else {\r\n\r\n            feedback.textContent =\r\n              choice.dataset.wrong ||\r\n              'Almost \u2014 try another answer!';\r\n\r\n          }\r\n\r\n        }\r\n\r\n\r\n        return;\r\n      }\r\n\r\n\r\n      \/* =====================================================\r\n         THREE-STEP ACTIVITY\r\n         ===================================================== *\/\r\n\r\n      const stepButton =\r\n        event.target.closest(\r\n          '.fba-step-button'\r\n        );\r\n\r\n\r\n      if(stepButton){\r\n\r\n        const game =\r\n          stepButton.closest(\r\n            '[data-step-game]'\r\n          );\r\n\r\n\r\n        const scene =\r\n          stepButton.closest(\r\n            '.fba-scene'\r\n          );\r\n\r\n\r\n        const feedback =\r\n          game.querySelector(\r\n            '.fba-feedback'\r\n          );\r\n\r\n\r\n        const step =\r\n          Number(\r\n            stepButton.dataset.step\r\n          );\r\n\r\n\r\n        stepButton.classList.add(\r\n          'is-done'\r\n        );\r\n\r\n\r\n        stepButton.disabled =\r\n          true;\r\n\r\n\r\n        const nextStep =\r\n          game.querySelector(\r\n            '[data-step=\"' +\r\n            (step + 1) +\r\n            '\"]'\r\n          );\r\n\r\n\r\n        if(nextStep){\r\n\r\n          nextStep.disabled =\r\n            false;\r\n\r\n\r\n          if(step === 1){\r\n\r\n            feedback.textContent =\r\n              'Greninja hears Flynn and looks toward him.';\r\n\r\n          }\r\n\r\n          else {\r\n\r\n            feedback.textContent =\r\n              'Greninja sees the Pok\u00e9 Ball and starts getting closer.';\r\n\r\n          }\r\n\r\n        }\r\n\r\n        else {\r\n\r\n          feedback.textContent =\r\n            'It worked! Greninja finally stops and walks toward Flynn.';\r\n\r\n\r\n          game.dataset.completed =\r\n            'true';\r\n\r\n\r\n          unlockScene(\r\n            scene\r\n          );\r\n\r\n        }\r\n\r\n\r\n        return;\r\n      }\r\n\r\n    }\r\n  );\r\n\r\n\r\n  \/* =========================================================\r\n     WORDPRESS GUESTBOOK\r\n     ========================================================= *\/\r\n\r\n  const guestbookForm =\r\n    app.querySelector(\r\n      '#fba-message-form'\r\n    );\r\n\r\n\r\n  const guestName =\r\n    app.querySelector(\r\n      '#fba-name'\r\n    );\r\n\r\n\r\n  const guestMessage =\r\n    app.querySelector(\r\n      '#fba-message'\r\n    );\r\n\r\n\r\n  const guestWebsite =\r\n    app.querySelector(\r\n      '#fba-website'\r\n    );\r\n\r\n\r\n  const guestStatus =\r\n    app.querySelector(\r\n      '#fba-form-status'\r\n    );\r\n\r\n\r\n  const messageList =\r\n    app.querySelector(\r\n      '#fba-message-list'\r\n    );\r\n\r\n\r\n  const characterNumber =\r\n    app.querySelector(\r\n      '#fba-character-number'\r\n    );\r\n\r\n\r\n  let guestbookLoaded =\r\n    false;\r\n\r\n\r\n  function getPostId(){\r\n\r\n    \/*\r\n       Option 1:\r\n       manually set data-post-id=\"123\"\r\n       on #flynn-adventure.\r\n\r\n       Option 2:\r\n       automatically detect WordPress body classes.\r\n    *\/\r\n\r\n    const manual =\r\n      app.dataset.postId;\r\n\r\n\r\n    if(\r\n      manual &&\r\n      \/^\\d+$\/.test(manual)\r\n    ){\r\n\r\n      return manual;\r\n\r\n    }\r\n\r\n\r\n    const classes =\r\n      document.body.className || '';\r\n\r\n\r\n    const patterns = [\r\n\r\n      \/page-id-(\\d+)\/,\r\n      \/postid-(\\d+)\/,\r\n      \/elementor-page-(\\d+)\/\r\n\r\n    ];\r\n\r\n\r\n    for(\r\n      const pattern of patterns\r\n    ){\r\n\r\n      const match =\r\n        classes.match(pattern);\r\n\r\n\r\n      if(match){\r\n\r\n        return match[1];\r\n\r\n      }\r\n\r\n    }\r\n\r\n\r\n    return null;\r\n\r\n  }\r\n\r\n\r\n  function getApiRoot(){\r\n\r\n    if(\r\n      window.wpApiSettings &&\r\n      window.wpApiSettings.root\r\n    ){\r\n\r\n      return window.wpApiSettings.root;\r\n\r\n    }\r\n\r\n\r\n    const apiLink =\r\n      document.querySelector(\r\n        'link[rel=\"https:\/\/api.w.org\/\"]'\r\n      );\r\n\r\n\r\n    if(\r\n      apiLink &&\r\n      apiLink.href\r\n    ){\r\n\r\n      return apiLink.href;\r\n\r\n    }\r\n\r\n\r\n    return (\r\n      window.location.origin +\r\n      '\/wp-json\/'\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function commentsEndpoint(){\r\n\r\n    return (\r\n      getApiRoot().replace(\/\\\/?$\/,'\/') +\r\n      'wp\/v2\/comments'\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function plainTextFromRendered(html){\r\n\r\n    const temp =\r\n      document.createElement(\r\n        'div'\r\n      );\r\n\r\n\r\n    temp.innerHTML =\r\n      html || '';\r\n\r\n\r\n    return (\r\n      temp.textContent ||\r\n      temp.innerText ||\r\n      ''\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function renderMessages(comments){\r\n\r\n    messageList.innerHTML =\r\n      '';\r\n\r\n\r\n    if(\r\n      !comments ||\r\n      comments.length === 0\r\n    ){\r\n\r\n      const empty =\r\n        document.createElement(\r\n          'p'\r\n        );\r\n\r\n\r\n      empty.className =\r\n        'fba-empty-messages';\r\n\r\n\r\n      empty.textContent =\r\n        'No approved messages yet. You could be one of the first!';\r\n\r\n\r\n      messageList.appendChild(\r\n        empty\r\n      );\r\n\r\n\r\n      return;\r\n    }\r\n\r\n\r\n    comments.forEach(\r\n      comment => {\r\n\r\n        const card =\r\n          document.createElement(\r\n            'article'\r\n          );\r\n\r\n\r\n        card.className =\r\n          'fba-guest-message';\r\n\r\n\r\n        const name =\r\n          document.createElement(\r\n            'div'\r\n          );\r\n\r\n\r\n        name.className =\r\n          'fba-guest-name';\r\n\r\n\r\n        name.textContent =\r\n          comment.author_name ||\r\n          'Anonymous';\r\n\r\n\r\n        const text =\r\n          document.createElement(\r\n            'div'\r\n          );\r\n\r\n\r\n        text.className =\r\n          'fba-guest-text';\r\n\r\n\r\n        text.textContent =\r\n          plainTextFromRendered(\r\n            comment.content &&\r\n            comment.content.rendered\r\n          );\r\n\r\n\r\n        card.appendChild(\r\n          name\r\n        );\r\n\r\n\r\n        card.appendChild(\r\n          text\r\n        );\r\n\r\n\r\n        messageList.appendChild(\r\n          card\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n\r\n  async function loadGuestbook(){\r\n\r\n    if(guestbookLoaded){\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    const postId =\r\n      getPostId();\r\n\r\n\r\n    if(!postId){\r\n\r\n      messageList.innerHTML =\r\n        '<p class=\"fba-empty-messages\">Birthday messages will appear here once the guestbook is connected.<\/p>';\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    guestbookLoaded =\r\n      true;\r\n\r\n\r\n    try{\r\n\r\n      const url =\r\n        commentsEndpoint() +\r\n        '?post=' +\r\n        encodeURIComponent(postId) +\r\n        '&per_page=50&orderby=date&order=desc';\r\n\r\n\r\n      const response =\r\n        await fetch(\r\n          url,\r\n          {\r\n            credentials:'same-origin'\r\n          }\r\n        );\r\n\r\n\r\n      if(!response.ok){\r\n\r\n        throw new Error(\r\n          'Could not load comments'\r\n        );\r\n\r\n      }\r\n\r\n\r\n      const comments =\r\n        await response.json();\r\n\r\n\r\n      renderMessages(\r\n        comments\r\n      );\r\n\r\n    }\r\n\r\n    catch(error){\r\n\r\n      guestbookLoaded =\r\n        false;\r\n\r\n\r\n      messageList.innerHTML =\r\n        '<p class=\"fba-empty-messages\">Birthday messages could not be loaded right now.<\/p>';\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* CHARACTER COUNTER *\/\r\n\r\n  if(guestMessage){\r\n\r\n    guestMessage.addEventListener(\r\n      'input',\r\n      function(){\r\n\r\n        characterNumber.textContent =\r\n          guestMessage.value.length;\r\n\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* SUBMIT MESSAGE *\/\r\n\r\n  if(guestbookForm){\r\n\r\n    guestbookForm.addEventListener(\r\n      'submit',\r\n      async function(event){\r\n\r\n        event.preventDefault();\r\n\r\n\r\n        guestStatus.className =\r\n          'fba-form-status';\r\n\r\n\r\n        guestStatus.textContent =\r\n          '';\r\n\r\n\r\n        const postId =\r\n          getPostId();\r\n\r\n\r\n        if(!postId){\r\n\r\n          guestStatus.classList.add(\r\n            'is-error'\r\n          );\r\n\r\n\r\n          guestStatus.textContent =\r\n            'The guestbook is not connected to this WordPress page yet.';\r\n\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        \/* BOT TRAP *\/\r\n\r\n        if(\r\n          guestWebsite &&\r\n          guestWebsite.value.trim() !== ''\r\n        ){\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        const message =\r\n          guestMessage.value.trim();\r\n\r\n\r\n        const name =\r\n          guestName.value.trim() ||\r\n          'Anonymous';\r\n\r\n\r\n        if(!message){\r\n\r\n          guestStatus.classList.add(\r\n            'is-error'\r\n          );\r\n\r\n\r\n          guestStatus.textContent =\r\n            'Please write a birthday message first.';\r\n\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         Lightweight browser-side cooldown.\r\n         Moderation is still the real protection.\r\n        *\/\r\n\r\n        const lastSend =\r\n          Number(\r\n            localStorage.getItem(\r\n              'flynnBirthdayLastMessage'\r\n            ) || 0\r\n          );\r\n\r\n\r\n        const now =\r\n          Date.now();\r\n\r\n\r\n        if(\r\n          now - lastSend <\r\n          30000\r\n        ){\r\n\r\n          guestStatus.classList.add(\r\n            'is-error'\r\n          );\r\n\r\n\r\n          guestStatus.textContent =\r\n            'Please wait a little before sending another message.';\r\n\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        const sendButton =\r\n          app.querySelector(\r\n            '#fba-send-message'\r\n          );\r\n\r\n\r\n        sendButton.disabled =\r\n          true;\r\n\r\n\r\n        sendButton.textContent =\r\n          'Sending...';\r\n\r\n\r\n        try{\r\n\r\n          const response =\r\n            await fetch(\r\n              commentsEndpoint(),\r\n              {\r\n\r\n                method:'POST',\r\n\r\n                credentials:'same-origin',\r\n\r\n                headers:{\r\n                  'Content-Type':\r\n                    'application\/json'\r\n                },\r\n\r\n                body:\r\n                  JSON.stringify({\r\n\r\n                    post:\r\n                      Number(postId),\r\n\r\n                    author_name:\r\n                      name,\r\n\r\n                    content:\r\n                      message\r\n\r\n                  })\r\n\r\n              }\r\n            );\r\n\r\n\r\n          const result =\r\n            await response.json();\r\n\r\n\r\n          if(!response.ok){\r\n\r\n            const errorMessage =\r\n              result &&\r\n              result.message\r\n                ? plainTextFromRendered(\r\n                    result.message\r\n                  )\r\n                : 'The message could not be sent.';\r\n\r\n\r\n            throw new Error(\r\n              errorMessage\r\n            );\r\n\r\n          }\r\n\r\n\r\n          localStorage.setItem(\r\n            'flynnBirthdayLastMessage',\r\n            String(now)\r\n          );\r\n\r\n\r\n          guestbookForm.reset();\r\n\r\n\r\n          characterNumber.textContent =\r\n            '0';\r\n\r\n\r\n          guestStatus.classList.add(\r\n            'is-success'\r\n          );\r\n\r\n\r\n          \/*\r\n            WordPress may return an approved comment\r\n            immediately if moderation isn't enabled.\r\n\r\n            Our intended setup requires moderation,\r\n            so we intentionally tell the child it\r\n            will appear after review.\r\n          *\/\r\n\r\n          guestStatus.textContent =\r\n            'Your message was sent to Flynn! It will appear here after it is reviewed.';\r\n\r\n\r\n        }\r\n\r\n        catch(error){\r\n\r\n          guestStatus.classList.add(\r\n            'is-error'\r\n          );\r\n\r\n\r\n          guestStatus.textContent =\r\n            error.message ||\r\n            'The message could not be sent. Please try again.';\r\n\r\n        }\r\n\r\n        finally{\r\n\r\n          sendButton.disabled =\r\n            false;\r\n\r\n\r\n          sendButton.textContent =\r\n            'Send Flynn a Message';\r\n\r\n        }\r\n\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* =========================================================\r\n     START\r\n     ========================================================= *\/\r\n\r\n  show(0);\r\n\r\n})();\r\n\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>COVER IMAGE PLACEHOLDER Flynn and Greninja \u2014 full storybook cover illustration An Interactive Birthday Adventure Flynn&#8217;s 7th Birthday Pok\u00e9mon Surprise Featuring Flynn &amp; Greninja Open the Book SCENE 1 IMAGE PLACEHOLDER Flynn arriving at school with his backpack A birthday surprise One Very Unusual School Day Flynn&#8217;s seventh birthday is coming up on September 26, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":118,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"zakra_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":true,"footnotes":""},"class_list":["post-247","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/pages\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":25,"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/pages\/247\/revisions"}],"predecessor-version":[{"id":276,"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/pages\/247\/revisions\/276"}],"up":[{"embeddable":true,"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/pages\/118"}],"wp:attachment":[{"href":"https:\/\/mybrubaker.com\/index.php\/wp-json\/wp\/v2\/media?parent=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}